@objectstack/spec 9.4.0 → 9.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1695) hide show
  1. package/dist/cloud/index.d.mts +5 -5
  2. package/dist/cloud/index.d.ts +5 -5
  3. package/dist/cloud/index.js +29 -22
  4. package/dist/cloud/index.js.map +1 -1
  5. package/dist/cloud/index.mjs +29 -22
  6. package/dist/cloud/index.mjs.map +1 -1
  7. package/dist/index.d.mts +10 -10
  8. package/dist/index.d.ts +10 -10
  9. package/dist/index.js +29 -22
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +29 -22
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/kernel/index.js +29 -22
  14. package/dist/kernel/index.js.map +1 -1
  15. package/dist/kernel/index.mjs +29 -22
  16. package/dist/kernel/index.mjs.map +1 -1
  17. package/dist/system/index.d.mts +16 -1
  18. package/dist/system/index.d.ts +16 -1
  19. package/dist/system/index.js +89 -28
  20. package/dist/system/index.js.map +1 -1
  21. package/dist/system/index.mjs +89 -29
  22. package/dist/system/index.mjs.map +1 -1
  23. package/dist/ui/index.d.mts +14 -10
  24. package/dist/ui/index.d.ts +14 -10
  25. package/dist/ui/index.js +58 -26
  26. package/dist/ui/index.js.map +1 -1
  27. package/dist/ui/index.mjs +58 -26
  28. package/dist/ui/index.mjs.map +1 -1
  29. package/json-schema/ai/AIKnowledge.json +2 -2
  30. package/json-schema/ai/AIModelConfig.json +2 -2
  31. package/json-schema/ai/AITool.json +2 -2
  32. package/json-schema/ai/AIUsageRecord.json +2 -2
  33. package/json-schema/ai/Agent.json +2 -2
  34. package/json-schema/ai/BlueprintApp.json +2 -2
  35. package/json-schema/ai/BlueprintDashboard.json +2 -2
  36. package/json-schema/ai/BlueprintField.json +2 -2
  37. package/json-schema/ai/BlueprintNavItem.json +2 -2
  38. package/json-schema/ai/BlueprintObject.json +2 -2
  39. package/json-schema/ai/BlueprintSeed.json +2 -2
  40. package/json-schema/ai/BlueprintView.json +2 -2
  41. package/json-schema/ai/CodeContent.json +2 -2
  42. package/json-schema/ai/ConversationAnalytics.json +2 -2
  43. package/json-schema/ai/ConversationContext.json +2 -2
  44. package/json-schema/ai/ConversationMessage.json +2 -2
  45. package/json-schema/ai/ConversationSession.json +2 -2
  46. package/json-schema/ai/ConversationSummary.json +2 -2
  47. package/json-schema/ai/EmbeddingModel.json +2 -2
  48. package/json-schema/ai/FileContent.json +2 -2
  49. package/json-schema/ai/FileKnowledgeSource.json +2 -2
  50. package/json-schema/ai/FunctionCall.json +2 -2
  51. package/json-schema/ai/HttpKnowledgeSource.json +2 -2
  52. package/json-schema/ai/ImageContent.json +2 -2
  53. package/json-schema/ai/KnowledgeChunk.json +2 -2
  54. package/json-schema/ai/KnowledgeDocument.json +2 -2
  55. package/json-schema/ai/KnowledgeHit.json +2 -2
  56. package/json-schema/ai/KnowledgeRefreshPolicy.json +2 -2
  57. package/json-schema/ai/KnowledgeSource.json +2 -2
  58. package/json-schema/ai/KnowledgeSourceKind.json +2 -2
  59. package/json-schema/ai/MCPApprovalPolicy.json +2 -2
  60. package/json-schema/ai/MCPServerRef.json +2 -2
  61. package/json-schema/ai/MCPToolBinding.json +2 -2
  62. package/json-schema/ai/MCPTransport.json +2 -2
  63. package/json-schema/ai/MessageContent.json +2 -2
  64. package/json-schema/ai/MessageContentType.json +2 -2
  65. package/json-schema/ai/MessagePruningEvent.json +2 -2
  66. package/json-schema/ai/MessageRole.json +2 -2
  67. package/json-schema/ai/ModelCapability.json +2 -2
  68. package/json-schema/ai/ModelConfig.json +2 -2
  69. package/json-schema/ai/ModelLimits.json +2 -2
  70. package/json-schema/ai/ModelPricing.json +2 -2
  71. package/json-schema/ai/ModelProvider.json +2 -2
  72. package/json-schema/ai/ModelRegistryEntry.json +2 -2
  73. package/json-schema/ai/ModelSelectionCriteria.json +2 -2
  74. package/json-schema/ai/ObjectKnowledgeSource.json +2 -2
  75. package/json-schema/ai/PromptVariable.json +2 -2
  76. package/json-schema/ai/Skill.json +2 -2
  77. package/json-schema/ai/SkillTriggerCondition.json +2 -2
  78. package/json-schema/ai/SolutionBlueprint.json +2 -2
  79. package/json-schema/ai/SolutionBlueprintStrict.json +2 -2
  80. package/json-schema/ai/StructuredOutputConfig.json +2 -2
  81. package/json-schema/ai/StructuredOutputFormat.json +2 -2
  82. package/json-schema/ai/TextContent.json +2 -2
  83. package/json-schema/ai/TokenBudgetConfig.json +2 -2
  84. package/json-schema/ai/TokenBudgetStrategy.json +2 -2
  85. package/json-schema/ai/TokenUsage.json +2 -2
  86. package/json-schema/ai/TokenUsageStats.json +2 -2
  87. package/json-schema/ai/Tool.json +2 -2
  88. package/json-schema/ai/ToolCall.json +2 -2
  89. package/json-schema/ai/ToolCategory.json +2 -2
  90. package/json-schema/ai/TransformPipelineStep.json +2 -2
  91. package/json-schema/ai/VectorStore.json +2 -2
  92. package/json-schema/ai/VectorStoreProvider.json +2 -2
  93. package/json-schema/api/AckMessage.json +2 -2
  94. package/json-schema/api/AddReactionRequest.json +2 -2
  95. package/json-schema/api/AddReactionResponse.json +2 -2
  96. package/json-schema/api/AiInsightsRequest.json +2 -2
  97. package/json-schema/api/AiInsightsResponse.json +2 -2
  98. package/json-schema/api/AiNlqRequest.json +2 -2
  99. package/json-schema/api/AiNlqResponse.json +2 -2
  100. package/json-schema/api/AiSuggestRequest.json +2 -2
  101. package/json-schema/api/AiSuggestResponse.json +2 -2
  102. package/json-schema/api/AnalyticsEndpoint.json +2 -2
  103. package/json-schema/api/AnalyticsMetadataResponse.json +2 -2
  104. package/json-schema/api/AnalyticsQueryRequest.json +2 -2
  105. package/json-schema/api/AnalyticsResultResponse.json +2 -2
  106. package/json-schema/api/AnalyticsSqlResponse.json +2 -2
  107. package/json-schema/api/ApiChangelogEntry.json +2 -2
  108. package/json-schema/api/ApiDiscoveryQuery.json +2 -2
  109. package/json-schema/api/ApiDiscoveryResponse.json +2 -2
  110. package/json-schema/api/ApiDocumentationConfig.json +2 -2
  111. package/json-schema/api/ApiEndpoint.json +2 -2
  112. package/json-schema/api/ApiEndpointRegistration.json +2 -2
  113. package/json-schema/api/ApiError.json +2 -2
  114. package/json-schema/api/ApiMapping.json +2 -2
  115. package/json-schema/api/ApiMetadata.json +2 -2
  116. package/json-schema/api/ApiParameter.json +2 -2
  117. package/json-schema/api/ApiProtocolType.json +2 -2
  118. package/json-schema/api/ApiRegistry.json +2 -2
  119. package/json-schema/api/ApiRegistryEntry.json +2 -2
  120. package/json-schema/api/ApiResponse.json +2 -2
  121. package/json-schema/api/ApiRoutes.json +2 -2
  122. package/json-schema/api/ApiTestCollection.json +2 -2
  123. package/json-schema/api/ApiTestRequest.json +2 -2
  124. package/json-schema/api/ApiTestingUiConfig.json +2 -2
  125. package/json-schema/api/ApiTestingUiType.json +2 -2
  126. package/json-schema/api/AuthEndpoint.json +2 -2
  127. package/json-schema/api/AuthFeaturesConfig.json +2 -2
  128. package/json-schema/api/AuthProvider.json +2 -2
  129. package/json-schema/api/AuthProviderInfo.json +2 -2
  130. package/json-schema/api/AutomationActionsResponse.json +2 -2
  131. package/json-schema/api/AutomationApiErrorCode.json +2 -2
  132. package/json-schema/api/AutomationFlowPathParams.json +2 -2
  133. package/json-schema/api/AutomationRunPathParams.json +2 -2
  134. package/json-schema/api/AutomationTriggerRequest.json +2 -2
  135. package/json-schema/api/AutomationTriggerResponse.json +2 -2
  136. package/json-schema/api/BasePresence.json +2 -2
  137. package/json-schema/api/BaseResponse.json +2 -2
  138. package/json-schema/api/BatchConfig.json +2 -2
  139. package/json-schema/api/BatchDataRequest.json +2 -2
  140. package/json-schema/api/BatchDataResponse.json +2 -2
  141. package/json-schema/api/BatchEndpointsConfig.json +2 -2
  142. package/json-schema/api/BatchLoadingStrategy.json +2 -2
  143. package/json-schema/api/BatchOperationResult.json +2 -2
  144. package/json-schema/api/BatchOperationType.json +2 -2
  145. package/json-schema/api/BatchOptions.json +2 -2
  146. package/json-schema/api/BatchRecord.json +2 -2
  147. package/json-schema/api/BatchUpdateRequest.json +2 -2
  148. package/json-schema/api/BatchUpdateResponse.json +2 -2
  149. package/json-schema/api/BulkRequest.json +2 -2
  150. package/json-schema/api/BulkResponse.json +2 -2
  151. package/json-schema/api/CacheControl.json +2 -2
  152. package/json-schema/api/CacheDirective.json +2 -2
  153. package/json-schema/api/CacheInvalidationRequest.json +2 -2
  154. package/json-schema/api/CacheInvalidationResponse.json +2 -2
  155. package/json-schema/api/CacheInvalidationTarget.json +2 -2
  156. package/json-schema/api/Callback.json +2 -2
  157. package/json-schema/api/ChangelogEntry.json +2 -2
  158. package/json-schema/api/CheckPermissionRequest.json +2 -2
  159. package/json-schema/api/CheckPermissionResponse.json +2 -2
  160. package/json-schema/api/CodeGenerationTemplate.json +2 -2
  161. package/json-schema/api/CompleteChunkedUploadRequest.json +2 -2
  162. package/json-schema/api/CompleteChunkedUploadResponse.json +2 -2
  163. package/json-schema/api/CompleteUploadRequest.json +2 -2
  164. package/json-schema/api/ConceptListResponse.json +2 -2
  165. package/json-schema/api/ConflictResolutionStrategy.json +2 -2
  166. package/json-schema/api/CreateDataRequest.json +2 -2
  167. package/json-schema/api/CreateDataResponse.json +2 -2
  168. package/json-schema/api/CreateExportJobRequest.json +2 -2
  169. package/json-schema/api/CreateExportJobResponse.json +2 -2
  170. package/json-schema/api/CreateFeedItemRequest.json +2 -2
  171. package/json-schema/api/CreateFeedItemResponse.json +2 -2
  172. package/json-schema/api/CreateManyDataRequest.json +2 -2
  173. package/json-schema/api/CreateManyDataResponse.json +2 -2
  174. package/json-schema/api/CreateRequest.json +2 -2
  175. package/json-schema/api/CrudEndpointPattern.json +2 -2
  176. package/json-schema/api/CrudEndpointsConfig.json +2 -2
  177. package/json-schema/api/CrudOperation.json +2 -2
  178. package/json-schema/api/CursorMessage.json +2 -2
  179. package/json-schema/api/CursorPosition.json +2 -2
  180. package/json-schema/api/DataEvent.json +2 -2
  181. package/json-schema/api/DataEventType.json +2 -2
  182. package/json-schema/api/DataLoaderConfig.json +2 -2
  183. package/json-schema/api/DeduplicationStrategy.json +2 -2
  184. package/json-schema/api/DeleteDataRequest.json +2 -2
  185. package/json-schema/api/DeleteDataResponse.json +2 -2
  186. package/json-schema/api/DeleteFeedItemRequest.json +2 -2
  187. package/json-schema/api/DeleteFeedItemResponse.json +2 -2
  188. package/json-schema/api/DeleteFlowRequest.json +2 -2
  189. package/json-schema/api/DeleteFlowResponse.json +2 -2
  190. package/json-schema/api/DeleteManyDataRequest.json +2 -2
  191. package/json-schema/api/DeleteManyDataResponse.json +2 -2
  192. package/json-schema/api/DeleteManyRequest.json +2 -2
  193. package/json-schema/api/DeleteMetaItemRequest.json +2 -2
  194. package/json-schema/api/DeleteMetaItemResponse.json +2 -2
  195. package/json-schema/api/DeleteResponse.json +2 -2
  196. package/json-schema/api/DeleteViewRequest.json +2 -2
  197. package/json-schema/api/DeleteViewResponse.json +2 -2
  198. package/json-schema/api/DeviceRequestResponse.json +2 -2
  199. package/json-schema/api/DeviceTokenResponse.json +2 -2
  200. package/json-schema/api/DisablePackageRequest.json +2 -2
  201. package/json-schema/api/Discovery.json +2 -2
  202. package/json-schema/api/DispatcherConfig.json +2 -2
  203. package/json-schema/api/DispatcherErrorCode.json +2 -2
  204. package/json-schema/api/DispatcherErrorResponse.json +2 -2
  205. package/json-schema/api/DispatcherRoute.json +2 -2
  206. package/json-schema/api/DocumentState.json +2 -2
  207. package/json-schema/api/ETag.json +2 -2
  208. package/json-schema/api/EditMessage.json +2 -2
  209. package/json-schema/api/EditOperation.json +2 -2
  210. package/json-schema/api/EditOperationType.json +2 -2
  211. package/json-schema/api/EmailPasswordConfigPublic.json +2 -2
  212. package/json-schema/api/EnablePackageRequest.json +2 -2
  213. package/json-schema/api/EndpointRegistry.json +2 -2
  214. package/json-schema/api/EnhancedApiError.json +2 -2
  215. package/json-schema/api/ErrorCategory.json +2 -2
  216. package/json-schema/api/ErrorHandlingConfig.json +2 -2
  217. package/json-schema/api/ErrorMessage.json +2 -2
  218. package/json-schema/api/ErrorResponse.json +2 -2
  219. package/json-schema/api/EventFilter.json +2 -2
  220. package/json-schema/api/EventFilterCondition.json +2 -2
  221. package/json-schema/api/EventMessage.json +2 -2
  222. package/json-schema/api/EventPattern.json +2 -2
  223. package/json-schema/api/EventSubscription.json +2 -2
  224. package/json-schema/api/ExportFormat.json +2 -2
  225. package/json-schema/api/ExportImportTemplate.json +2 -2
  226. package/json-schema/api/ExportJobProgress.json +2 -2
  227. package/json-schema/api/ExportJobStatus.json +2 -2
  228. package/json-schema/api/ExportJobSummary.json +2 -2
  229. package/json-schema/api/ExportRequest.json +2 -2
  230. package/json-schema/api/FederationEntity.json +2 -2
  231. package/json-schema/api/FederationEntityKey.json +2 -2
  232. package/json-schema/api/FederationExternalField.json +2 -2
  233. package/json-schema/api/FederationGateway.json +2 -2
  234. package/json-schema/api/FederationProvides.json +2 -2
  235. package/json-schema/api/FederationRequires.json +2 -2
  236. package/json-schema/api/FeedApiErrorCode.json +2 -2
  237. package/json-schema/api/FeedItemPathParams.json +2 -2
  238. package/json-schema/api/FeedListFilterType.json +2 -2
  239. package/json-schema/api/FeedPathParams.json +2 -2
  240. package/json-schema/api/FeedUnsubscribeRequest.json +2 -2
  241. package/json-schema/api/FieldError.json +2 -2
  242. package/json-schema/api/FieldMappingEntry.json +2 -2
  243. package/json-schema/api/FileTypeValidation.json +2 -2
  244. package/json-schema/api/FileUploadResponse.json +2 -2
  245. package/json-schema/api/FilterOperator.json +2 -2
  246. package/json-schema/api/FindDataRequest.json +2 -2
  247. package/json-schema/api/FindDataResponse.json +2 -2
  248. package/json-schema/api/FlowSummary.json +2 -2
  249. package/json-schema/api/GeneratedApiDocumentation.json +2 -2
  250. package/json-schema/api/GeneratedEndpoint.json +2 -2
  251. package/json-schema/api/GetAnalyticsMetaRequest.json +2 -2
  252. package/json-schema/api/GetAuthConfigResponse.json +2 -2
  253. package/json-schema/api/GetChangelogRequest.json +2 -2
  254. package/json-schema/api/GetChangelogResponse.json +2 -2
  255. package/json-schema/api/GetDataRequest.json +2 -2
  256. package/json-schema/api/GetDataResponse.json +2 -2
  257. package/json-schema/api/GetDiscoveryRequest.json +2 -2
  258. package/json-schema/api/GetDiscoveryResponse.json +2 -2
  259. package/json-schema/api/GetEffectivePermissionsRequest.json +2 -2
  260. package/json-schema/api/GetEffectivePermissionsResponse.json +2 -2
  261. package/json-schema/api/GetExportJobDownloadRequest.json +2 -2
  262. package/json-schema/api/GetExportJobDownloadResponse.json +2 -2
  263. package/json-schema/api/GetFeedRequest.json +2 -2
  264. package/json-schema/api/GetFeedResponse.json +2 -2
  265. package/json-schema/api/GetFieldLabelsRequest.json +2 -2
  266. package/json-schema/api/GetFieldLabelsResponse.json +2 -2
  267. package/json-schema/api/GetFlowRequest.json +2 -2
  268. package/json-schema/api/GetInstalledPackageRequest.json +2 -2
  269. package/json-schema/api/GetLocalesRequest.json +2 -2
  270. package/json-schema/api/GetLocalesResponse.json +2 -2
  271. package/json-schema/api/GetMetaItemCachedRequest.json +2 -2
  272. package/json-schema/api/GetMetaItemCachedResponse.json +2 -2
  273. package/json-schema/api/GetMetaItemRequest.json +2 -2
  274. package/json-schema/api/GetMetaItemResponse.json +2 -2
  275. package/json-schema/api/GetMetaItemsRequest.json +2 -2
  276. package/json-schema/api/GetMetaItemsResponse.json +2 -2
  277. package/json-schema/api/GetMetaTypesRequest.json +2 -2
  278. package/json-schema/api/GetMetaTypesResponse.json +2 -2
  279. package/json-schema/api/GetNotificationPreferencesRequest.json +2 -2
  280. package/json-schema/api/GetNotificationPreferencesResponse.json +2 -2
  281. package/json-schema/api/GetObjectPermissionsRequest.json +2 -2
  282. package/json-schema/api/GetObjectPermissionsResponse.json +2 -2
  283. package/json-schema/api/GetPackageRequest.json +2 -2
  284. package/json-schema/api/GetPresenceRequest.json +2 -2
  285. package/json-schema/api/GetPresenceResponse.json +2 -2
  286. package/json-schema/api/GetPresignedUrlRequest.json +2 -2
  287. package/json-schema/api/GetRunRequest.json +2 -2
  288. package/json-schema/api/GetRunResponse.json +2 -2
  289. package/json-schema/api/GetTranslationsRequest.json +2 -2
  290. package/json-schema/api/GetTranslationsResponse.json +2 -2
  291. package/json-schema/api/GetUiViewRequest.json +2 -2
  292. package/json-schema/api/GetViewRequest.json +2 -2
  293. package/json-schema/api/GetWorkflowConfigRequest.json +2 -2
  294. package/json-schema/api/GetWorkflowConfigResponse.json +2 -2
  295. package/json-schema/api/GetWorkflowStateRequest.json +2 -2
  296. package/json-schema/api/GetWorkflowStateResponse.json +2 -2
  297. package/json-schema/api/GraphQLDataLoaderConfig.json +2 -2
  298. package/json-schema/api/GraphQLDirectiveConfig.json +2 -2
  299. package/json-schema/api/GraphQLDirectiveLocation.json +2 -2
  300. package/json-schema/api/GraphQLMutationConfig.json +2 -2
  301. package/json-schema/api/GraphQLPersistedQuery.json +2 -2
  302. package/json-schema/api/GraphQLQueryAdapter.json +2 -2
  303. package/json-schema/api/GraphQLQueryComplexity.json +2 -2
  304. package/json-schema/api/GraphQLQueryDepthLimit.json +2 -2
  305. package/json-schema/api/GraphQLRateLimit.json +2 -2
  306. package/json-schema/api/GraphQLScalarType.json +2 -2
  307. package/json-schema/api/GraphQLSubscriptionConfig.json +2 -2
  308. package/json-schema/api/GraphQLTypeConfig.json +2 -2
  309. package/json-schema/api/HandlerStatus.json +2 -2
  310. package/json-schema/api/HttpFindQueryParams.json +2 -2
  311. package/json-schema/api/HttpMethod.json +2 -2
  312. package/json-schema/api/HttpStatusCode.json +2 -2
  313. package/json-schema/api/IdRequest.json +2 -2
  314. package/json-schema/api/ImportValidationConfig.json +2 -2
  315. package/json-schema/api/ImportValidationMode.json +2 -2
  316. package/json-schema/api/ImportValidationResult.json +2 -2
  317. package/json-schema/api/InitiateChunkedUploadRequest.json +2 -2
  318. package/json-schema/api/InitiateChunkedUploadResponse.json +2 -2
  319. package/json-schema/api/ListExportJobsRequest.json +2 -2
  320. package/json-schema/api/ListExportJobsResponse.json +2 -2
  321. package/json-schema/api/ListFlowsRequest.json +2 -2
  322. package/json-schema/api/ListFlowsResponse.json +2 -2
  323. package/json-schema/api/ListInstalledPackagesRequest.json +2 -2
  324. package/json-schema/api/ListNotificationsRequest.json +2 -2
  325. package/json-schema/api/ListNotificationsResponse.json +2 -2
  326. package/json-schema/api/ListPackagesRequest.json +2 -2
  327. package/json-schema/api/ListRecordResponse.json +2 -2
  328. package/json-schema/api/ListRunsRequest.json +2 -2
  329. package/json-schema/api/ListRunsResponse.json +2 -2
  330. package/json-schema/api/ListViewsRequest.json +2 -2
  331. package/json-schema/api/LoginRequest.json +2 -2
  332. package/json-schema/api/LoginType.json +2 -2
  333. package/json-schema/api/MarkAllNotificationsReadRequest.json +2 -2
  334. package/json-schema/api/MarkAllNotificationsReadResponse.json +2 -2
  335. package/json-schema/api/MarkNotificationsReadRequest.json +2 -2
  336. package/json-schema/api/MarkNotificationsReadResponse.json +2 -2
  337. package/json-schema/api/MetadataBulkRegisterRequest.json +2 -2
  338. package/json-schema/api/MetadataBulkResponse.json +2 -2
  339. package/json-schema/api/MetadataBulkUnregisterRequest.json +2 -2
  340. package/json-schema/api/MetadataCacheRequest.json +2 -2
  341. package/json-schema/api/MetadataCacheResponse.json +2 -2
  342. package/json-schema/api/MetadataDeleteResponse.json +2 -2
  343. package/json-schema/api/MetadataDependenciesResponse.json +2 -2
  344. package/json-schema/api/MetadataDependentsResponse.json +2 -2
  345. package/json-schema/api/MetadataEffectiveResponse.json +2 -2
  346. package/json-schema/api/MetadataEndpointsConfig.json +2 -2
  347. package/json-schema/api/MetadataEvent.json +2 -2
  348. package/json-schema/api/MetadataEventType.json +2 -2
  349. package/json-schema/api/MetadataExistsResponse.json +2 -2
  350. package/json-schema/api/MetadataExportRequest.json +2 -2
  351. package/json-schema/api/MetadataExportResponse.json +2 -2
  352. package/json-schema/api/MetadataImportRequest.json +2 -2
  353. package/json-schema/api/MetadataImportResponse.json +2 -2
  354. package/json-schema/api/MetadataItemResponse.json +2 -2
  355. package/json-schema/api/MetadataListResponse.json +2 -2
  356. package/json-schema/api/MetadataNamesResponse.json +2 -2
  357. package/json-schema/api/MetadataOverlayResponse.json +2 -2
  358. package/json-schema/api/MetadataOverlaySaveRequest.json +2 -2
  359. package/json-schema/api/MetadataQueryRequest.json +2 -2
  360. package/json-schema/api/MetadataQueryResponse.json +2 -2
  361. package/json-schema/api/MetadataRegisterRequest.json +2 -2
  362. package/json-schema/api/MetadataTypesResponse.json +2 -2
  363. package/json-schema/api/MetadataValidateRequest.json +2 -2
  364. package/json-schema/api/MetadataValidateResponse.json +2 -2
  365. package/json-schema/api/ModificationResult.json +2 -2
  366. package/json-schema/api/Notification.json +2 -2
  367. package/json-schema/api/NotificationPreferences.json +2 -2
  368. package/json-schema/api/ODataConfig.json +2 -2
  369. package/json-schema/api/ODataError.json +2 -2
  370. package/json-schema/api/ODataFilterFunction.json +2 -2
  371. package/json-schema/api/ODataFilterOperator.json +2 -2
  372. package/json-schema/api/ODataMetadata.json +2 -2
  373. package/json-schema/api/ODataQuery.json +2 -2
  374. package/json-schema/api/ODataQueryAdapter.json +2 -2
  375. package/json-schema/api/ODataResponse.json +2 -2
  376. package/json-schema/api/ObjectQLReference.json +2 -2
  377. package/json-schema/api/OpenApi31Extensions.json +2 -2
  378. package/json-schema/api/OpenApiGenerationConfig.json +2 -2
  379. package/json-schema/api/OpenApiSecurityScheme.json +2 -2
  380. package/json-schema/api/OpenApiServer.json +2 -2
  381. package/json-schema/api/OpenApiSpec.json +2 -2
  382. package/json-schema/api/OperatorMapping.json +2 -2
  383. package/json-schema/api/PackageApiErrorCode.json +2 -2
  384. package/json-schema/api/PackagePathParams.json +2 -2
  385. package/json-schema/api/PackageRollbackRequest.json +2 -2
  386. package/json-schema/api/PackageRollbackResponse.json +2 -2
  387. package/json-schema/api/PackageUpgradeResponse.json +2 -2
  388. package/json-schema/api/PinFeedItemRequest.json +2 -2
  389. package/json-schema/api/PinFeedItemResponse.json +2 -2
  390. package/json-schema/api/PingMessage.json +2 -2
  391. package/json-schema/api/PongMessage.json +2 -2
  392. package/json-schema/api/PresenceMessage.json +2 -2
  393. package/json-schema/api/PresenceState.json +2 -2
  394. package/json-schema/api/PresenceStatus.json +2 -2
  395. package/json-schema/api/PresenceUpdate.json +2 -2
  396. package/json-schema/api/PresignedUrlResponse.json +2 -2
  397. package/json-schema/api/QueryAdapterConfig.json +2 -2
  398. package/json-schema/api/QueryAdapterTarget.json +2 -2
  399. package/json-schema/api/QueryOptimizationConfig.json +2 -2
  400. package/json-schema/api/RealtimeConfig.json +2 -2
  401. package/json-schema/api/RealtimeConnectRequest.json +2 -2
  402. package/json-schema/api/RealtimeConnectResponse.json +2 -2
  403. package/json-schema/api/RealtimeDisconnectRequest.json +2 -2
  404. package/json-schema/api/RealtimeDisconnectResponse.json +2 -2
  405. package/json-schema/api/RealtimeEvent.json +2 -2
  406. package/json-schema/api/RealtimeEventType.json +2 -2
  407. package/json-schema/api/RealtimePresence.json +2 -2
  408. package/json-schema/api/RealtimeRecordAction.json +2 -2
  409. package/json-schema/api/RealtimeSubscribeRequest.json +2 -2
  410. package/json-schema/api/RealtimeSubscribeResponse.json +2 -2
  411. package/json-schema/api/RealtimeUnsubscribeRequest.json +2 -2
  412. package/json-schema/api/RealtimeUnsubscribeResponse.json +2 -2
  413. package/json-schema/api/RecordData.json +2 -2
  414. package/json-schema/api/RefreshTokenRequest.json +2 -2
  415. package/json-schema/api/RegisterDeviceRequest.json +2 -2
  416. package/json-schema/api/RegisterDeviceResponse.json +2 -2
  417. package/json-schema/api/RegisterRequest.json +2 -2
  418. package/json-schema/api/RemoveReactionRequest.json +2 -2
  419. package/json-schema/api/RemoveReactionResponse.json +2 -2
  420. package/json-schema/api/RequestValidationConfig.json +2 -2
  421. package/json-schema/api/ResolveDependenciesResponse.json +2 -2
  422. package/json-schema/api/ResponseEnvelopeConfig.json +2 -2
  423. package/json-schema/api/RestApiConfig.json +2 -2
  424. package/json-schema/api/RestApiEndpoint.json +2 -2
  425. package/json-schema/api/RestApiPluginConfig.json +2 -2
  426. package/json-schema/api/RestApiRouteCategory.json +2 -2
  427. package/json-schema/api/RestApiRouteRegistration.json +2 -2
  428. package/json-schema/api/RestQueryAdapter.json +2 -2
  429. package/json-schema/api/RestServerConfig.json +2 -2
  430. package/json-schema/api/RetryStrategy.json +2 -2
  431. package/json-schema/api/RouteCategory.json +2 -2
  432. package/json-schema/api/RouteCoverageEntry.json +2 -2
  433. package/json-schema/api/RouteCoverageReport.json +2 -2
  434. package/json-schema/api/RouteDefinition.json +2 -2
  435. package/json-schema/api/RouteGenerationConfig.json +2 -2
  436. package/json-schema/api/RouteHealthEntry.json +2 -2
  437. package/json-schema/api/RouteHealthReport.json +2 -2
  438. package/json-schema/api/RouterConfig.json +2 -2
  439. package/json-schema/api/SaveMetaItemRequest.json +2 -2
  440. package/json-schema/api/SaveMetaItemResponse.json +2 -2
  441. package/json-schema/api/ScheduleExportResponse.json +2 -2
  442. package/json-schema/api/SchemaDefinition.json +2 -2
  443. package/json-schema/api/SearchFeedRequest.json +2 -2
  444. package/json-schema/api/SearchFeedResponse.json +2 -2
  445. package/json-schema/api/ServiceInfo.json +2 -2
  446. package/json-schema/api/ServiceStatus.json +2 -2
  447. package/json-schema/api/Session.json +2 -2
  448. package/json-schema/api/SessionResponse.json +2 -2
  449. package/json-schema/api/SessionUser.json +2 -2
  450. package/json-schema/api/SetPresenceRequest.json +2 -2
  451. package/json-schema/api/SetPresenceResponse.json +2 -2
  452. package/json-schema/api/SimpleCursorPosition.json +2 -2
  453. package/json-schema/api/SimplePresenceState.json +2 -2
  454. package/json-schema/api/SingleRecordResponse.json +2 -2
  455. package/json-schema/api/StandardErrorCode.json +2 -2
  456. package/json-schema/api/StarFeedItemRequest.json +2 -2
  457. package/json-schema/api/StarFeedItemResponse.json +2 -2
  458. package/json-schema/api/SubgraphConfig.json +2 -2
  459. package/json-schema/api/SubscribeMessage.json +2 -2
  460. package/json-schema/api/SubscribeRequest.json +2 -2
  461. package/json-schema/api/SubscribeResponse.json +2 -2
  462. package/json-schema/api/Subscription.json +2 -2
  463. package/json-schema/api/SubscriptionEvent.json +2 -2
  464. package/json-schema/api/ToggleFlowRequest.json +2 -2
  465. package/json-schema/api/ToggleFlowResponse.json +2 -2
  466. package/json-schema/api/TransportProtocol.json +2 -2
  467. package/json-schema/api/TriggerFlowRequest.json +2 -2
  468. package/json-schema/api/TriggerFlowResponse.json +2 -2
  469. package/json-schema/api/UninstallPackageApiRequest.json +2 -2
  470. package/json-schema/api/UninstallPackageApiResponse.json +2 -2
  471. package/json-schema/api/UninstallPackageRequest.json +2 -2
  472. package/json-schema/api/UninstallPackageResponse.json +2 -2
  473. package/json-schema/api/UnpinFeedItemRequest.json +2 -2
  474. package/json-schema/api/UnpinFeedItemResponse.json +2 -2
  475. package/json-schema/api/UnregisterDeviceRequest.json +2 -2
  476. package/json-schema/api/UnregisterDeviceResponse.json +2 -2
  477. package/json-schema/api/UnstarFeedItemRequest.json +2 -2
  478. package/json-schema/api/UnstarFeedItemResponse.json +2 -2
  479. package/json-schema/api/UnsubscribeMessage.json +2 -2
  480. package/json-schema/api/UnsubscribeRequest.json +2 -2
  481. package/json-schema/api/UnsubscribeResponse.json +2 -2
  482. package/json-schema/api/UpdateDataRequest.json +2 -2
  483. package/json-schema/api/UpdateDataResponse.json +2 -2
  484. package/json-schema/api/UpdateFeedItemRequest.json +2 -2
  485. package/json-schema/api/UpdateFeedItemResponse.json +2 -2
  486. package/json-schema/api/UpdateManyDataRequest.json +2 -2
  487. package/json-schema/api/UpdateManyDataResponse.json +2 -2
  488. package/json-schema/api/UpdateManyRequest.json +2 -2
  489. package/json-schema/api/UpdateNotificationPreferencesRequest.json +2 -2
  490. package/json-schema/api/UpdateNotificationPreferencesResponse.json +2 -2
  491. package/json-schema/api/UpdateRequest.json +2 -2
  492. package/json-schema/api/UploadArtifactRequest.json +2 -2
  493. package/json-schema/api/UploadArtifactResponse.json +2 -2
  494. package/json-schema/api/UploadChunkRequest.json +2 -2
  495. package/json-schema/api/UploadChunkResponse.json +2 -2
  496. package/json-schema/api/UploadProgress.json +2 -2
  497. package/json-schema/api/UserProfileResponse.json +2 -2
  498. package/json-schema/api/ValidationMode.json +2 -2
  499. package/json-schema/api/VersionDefinition.json +2 -2
  500. package/json-schema/api/VersionNegotiationResponse.json +2 -2
  501. package/json-schema/api/VersionStatus.json +2 -2
  502. package/json-schema/api/VersioningConfig.json +2 -2
  503. package/json-schema/api/VersioningStrategy.json +2 -2
  504. package/json-schema/api/WebSocketConfig.json +2 -2
  505. package/json-schema/api/WebSocketEvent.json +2 -2
  506. package/json-schema/api/WebSocketMessage.json +2 -2
  507. package/json-schema/api/WebSocketMessageType.json +2 -2
  508. package/json-schema/api/WebSocketPresenceStatus.json +2 -2
  509. package/json-schema/api/WebSocketServerConfig.json +2 -2
  510. package/json-schema/api/WebhookConfig.json +2 -2
  511. package/json-schema/api/WebhookEvent.json +2 -2
  512. package/json-schema/api/WellKnownCapabilities.json +2 -2
  513. package/json-schema/api/WorkflowState.json +2 -2
  514. package/json-schema/api/WorkflowTransitionRequest.json +2 -2
  515. package/json-schema/api/WorkflowTransitionResponse.json +2 -2
  516. package/json-schema/automation/ActionCategory.json +2 -2
  517. package/json-schema/automation/ActionDescriptor.json +2 -2
  518. package/json-schema/automation/ActionParadigm.json +2 -2
  519. package/json-schema/automation/ActionRef.json +2 -2
  520. package/json-schema/automation/ApprovalDecision.json +2 -2
  521. package/json-schema/automation/ApprovalEscalation.json +2 -2
  522. package/json-schema/automation/ApprovalNodeApprover.json +2 -2
  523. package/json-schema/automation/ApprovalNodeConfig.json +2 -2
  524. package/json-schema/automation/ApproverType.json +2 -2
  525. package/json-schema/automation/AuthField.json +2 -2
  526. package/json-schema/automation/Authentication.json +2 -2
  527. package/json-schema/automation/AuthenticationType.json +2 -2
  528. package/json-schema/automation/BpmnDiagnostic.json +2 -2
  529. package/json-schema/automation/BpmnElementMapping.json +2 -2
  530. package/json-schema/automation/BpmnExportOptions.json +2 -2
  531. package/json-schema/automation/BpmnImportOptions.json +2 -2
  532. package/json-schema/automation/BpmnInteropResult.json +2 -2
  533. package/json-schema/automation/BpmnUnmappedStrategy.json +2 -2
  534. package/json-schema/automation/BpmnVersion.json +2 -2
  535. package/json-schema/automation/Checkpoint.json +2 -2
  536. package/json-schema/automation/ConcurrencyPolicy.json +2 -2
  537. package/json-schema/automation/ConflictResolution.json +2 -2
  538. package/json-schema/automation/Connector.json +2 -2
  539. package/json-schema/automation/ConnectorCategory.json +2 -2
  540. package/json-schema/automation/ConnectorInstance.json +2 -2
  541. package/json-schema/automation/ConnectorOperation.json +2 -2
  542. package/json-schema/automation/ConnectorTrigger.json +2 -2
  543. package/json-schema/automation/DataSourceConfig.json +2 -2
  544. package/json-schema/automation/ETLDestination.json +2 -2
  545. package/json-schema/automation/ETLEndpointType.json +2 -2
  546. package/json-schema/automation/ETLPipelineRun.json +2 -2
  547. package/json-schema/automation/ETLRunStatus.json +2 -2
  548. package/json-schema/automation/ETLSource.json +2 -2
  549. package/json-schema/automation/ETLSyncMode.json +2 -2
  550. package/json-schema/automation/ETLTransformation.json +2 -2
  551. package/json-schema/automation/ETLTransformationType.json +2 -2
  552. package/json-schema/automation/Event.json +2 -2
  553. package/json-schema/automation/ExecutionError.json +2 -2
  554. package/json-schema/automation/ExecutionErrorSeverity.json +2 -2
  555. package/json-schema/automation/ExecutionLog.json +2 -2
  556. package/json-schema/automation/ExecutionStatus.json +2 -2
  557. package/json-schema/automation/ExecutionStepLog.json +2 -2
  558. package/json-schema/automation/FlowNode.json +2 -2
  559. package/json-schema/automation/FlowNodeAction.json +2 -2
  560. package/json-schema/automation/FlowVariable.json +2 -2
  561. package/json-schema/automation/GuardRef.json +2 -2
  562. package/json-schema/automation/NodeExecutorDescriptor.json +2 -2
  563. package/json-schema/automation/OAuth2Config.json +2 -2
  564. package/json-schema/automation/OperationParameter.json +2 -2
  565. package/json-schema/automation/OperationType.json +2 -2
  566. package/json-schema/automation/RetryPolicy.json +2 -2
  567. package/json-schema/automation/StateMachine.json +2 -2
  568. package/json-schema/automation/StateNode.json +2 -2
  569. package/json-schema/automation/SyncDirection.json +2 -2
  570. package/json-schema/automation/SyncExecutionResult.json +2 -2
  571. package/json-schema/automation/SyncExecutionStatus.json +2 -2
  572. package/json-schema/automation/SyncMode.json +2 -2
  573. package/json-schema/automation/Transition.json +2 -2
  574. package/json-schema/automation/WaitEventType.json +2 -2
  575. package/json-schema/automation/WaitExecutorConfig.json +2 -2
  576. package/json-schema/automation/WaitResumePayload.json +2 -2
  577. package/json-schema/automation/WaitTimeoutBehavior.json +2 -2
  578. package/json-schema/automation/Webhook.json +2 -2
  579. package/json-schema/automation/WebhookReceiver.json +2 -2
  580. package/json-schema/automation/WebhookTriggerType.json +2 -2
  581. package/json-schema/cloud/AnalyticsTimeRange.json +2 -2
  582. package/json-schema/cloud/AppDiscoveryRequest.json +2 -2
  583. package/json-schema/cloud/AppDiscoveryResponse.json +2 -2
  584. package/json-schema/cloud/AppSubscription.json +2 -2
  585. package/json-schema/cloud/ArtifactDownloadResponse.json +2 -2
  586. package/json-schema/cloud/ArtifactReference.json +2 -2
  587. package/json-schema/cloud/CreateListingRequest.json +2 -2
  588. package/json-schema/cloud/CreatePackageRequest.json +2 -2
  589. package/json-schema/cloud/CreatePackageVersionRequest.json +2 -2
  590. package/json-schema/cloud/CuratedCollection.json +2 -2
  591. package/json-schema/cloud/Environment.json +2 -2
  592. package/json-schema/cloud/EnvironmentCredential.json +2 -2
  593. package/json-schema/cloud/EnvironmentCredentialStatus.json +2 -2
  594. package/json-schema/cloud/EnvironmentDriver.json +2 -2
  595. package/json-schema/cloud/EnvironmentMember.json +2 -2
  596. package/json-schema/cloud/EnvironmentPackageInstallation.json +2 -2
  597. package/json-schema/cloud/EnvironmentPackageStatus.json +2 -2
  598. package/json-schema/cloud/EnvironmentRole.json +2 -2
  599. package/json-schema/cloud/EnvironmentStatus.json +2 -2
  600. package/json-schema/cloud/EnvironmentType.json +2 -2
  601. package/json-schema/cloud/EnvironmentVisibility.json +2 -2
  602. package/json-schema/cloud/FeaturedListing.json +2 -2
  603. package/json-schema/cloud/InstallPackageToEnvironmentRequest.json +2 -2
  604. package/json-schema/cloud/InstalledAppSummary.json +2 -2
  605. package/json-schema/cloud/ListEnvironmentPackagesResponse.json +2 -2
  606. package/json-schema/cloud/ListInstalledAppsRequest.json +2 -2
  607. package/json-schema/cloud/ListInstalledAppsResponse.json +2 -2
  608. package/json-schema/cloud/ListReviewsRequest.json +2 -2
  609. package/json-schema/cloud/ListReviewsResponse.json +2 -2
  610. package/json-schema/cloud/ListingActionRequest.json +2 -2
  611. package/json-schema/cloud/ListingStatus.json +2 -2
  612. package/json-schema/cloud/MarketplaceCategory.json +2 -2
  613. package/json-schema/cloud/MarketplaceHealthMetrics.json +2 -2
  614. package/json-schema/cloud/MarketplaceInstallRequest.json +2 -2
  615. package/json-schema/cloud/MarketplaceInstallResponse.json +2 -2
  616. package/json-schema/cloud/MarketplaceListing.json +2 -2
  617. package/json-schema/cloud/MarketplaceSearchRequest.json +2 -2
  618. package/json-schema/cloud/MarketplaceSearchResponse.json +2 -2
  619. package/json-schema/cloud/Package.json +2 -2
  620. package/json-schema/cloud/PackageCategory.json +2 -2
  621. package/json-schema/cloud/PackageDependency.json +2 -2
  622. package/json-schema/cloud/PackageInstallation.json +2 -2
  623. package/json-schema/cloud/PackageInstallationStatus.json +2 -2
  624. package/json-schema/cloud/PackageLocale.json +2 -2
  625. package/json-schema/cloud/PackageManifest.json +2 -2
  626. package/json-schema/cloud/PackagePublisher.json +2 -2
  627. package/json-schema/cloud/PackageSubmission.json +2 -2
  628. package/json-schema/cloud/PackageTranslation.json +2 -2
  629. package/json-schema/cloud/PackageTranslations.json +2 -2
  630. package/json-schema/cloud/PackageVersion.json +2 -2
  631. package/json-schema/cloud/PackageVersionStatus.json +2 -2
  632. package/json-schema/cloud/PackageVisibility.json +2 -2
  633. package/json-schema/cloud/PolicyAction.json +2 -2
  634. package/json-schema/cloud/PolicyViolationType.json +2 -2
  635. package/json-schema/cloud/PricingModel.json +2 -2
  636. package/json-schema/cloud/ProvisionEnvironmentRequest.json +2 -2
  637. package/json-schema/cloud/ProvisionEnvironmentResponse.json +2 -2
  638. package/json-schema/cloud/ProvisionOrganizationRequest.json +2 -2
  639. package/json-schema/cloud/ProvisionOrganizationResponse.json +2 -2
  640. package/json-schema/cloud/ProvisionTenantRequest.json +2 -2
  641. package/json-schema/cloud/ProvisionTenantResponse.json +2 -2
  642. package/json-schema/cloud/PublishPackageVersionRequest.json +2 -2
  643. package/json-schema/cloud/Publisher.json +2 -2
  644. package/json-schema/cloud/PublisherProfile.json +2 -2
  645. package/json-schema/cloud/PublisherVerification.json +2 -2
  646. package/json-schema/cloud/PublishingAnalyticsRequest.json +2 -2
  647. package/json-schema/cloud/PublishingAnalyticsResponse.json +2 -2
  648. package/json-schema/cloud/RecommendationReason.json +2 -2
  649. package/json-schema/cloud/RecommendedApp.json +2 -2
  650. package/json-schema/cloud/RejectionReason.json +2 -2
  651. package/json-schema/cloud/ReleaseChannel.json +2 -2
  652. package/json-schema/cloud/ReviewCriterion.json +2 -2
  653. package/json-schema/cloud/ReviewDecision.json +2 -2
  654. package/json-schema/cloud/ReviewModerationStatus.json +2 -2
  655. package/json-schema/cloud/RollbackEnvironmentPackageRequest.json +2 -2
  656. package/json-schema/cloud/Sha256Digest.json +2 -2
  657. package/json-schema/cloud/SubmissionReview.json +2 -2
  658. package/json-schema/cloud/SubmitReviewRequest.json +2 -2
  659. package/json-schema/cloud/SubscriptionStatus.json +2 -2
  660. package/json-schema/cloud/TemplateManifest.json +2 -2
  661. package/json-schema/cloud/TenantContext.json +2 -2
  662. package/json-schema/cloud/TenantDatabase.json +2 -2
  663. package/json-schema/cloud/TenantDatabaseStatus.json +2 -2
  664. package/json-schema/cloud/TenantIdentificationSource.json +2 -2
  665. package/json-schema/cloud/TenantPlan.json +2 -2
  666. package/json-schema/cloud/TenantRoutingConfig.json +2 -2
  667. package/json-schema/cloud/TimeSeriesPoint.json +2 -2
  668. package/json-schema/cloud/TrendingListing.json +2 -2
  669. package/json-schema/cloud/UpdateListingRequest.json +2 -2
  670. package/json-schema/cloud/UpdatePackageRequest.json +2 -2
  671. package/json-schema/cloud/UpdatePackageVersionRequest.json +2 -2
  672. package/json-schema/cloud/UpgradeEnvironmentPackageRequest.json +2 -2
  673. package/json-schema/cloud/UserReview.json +2 -2
  674. package/json-schema/cloud/VersionRelease.json +2 -2
  675. package/json-schema/data/Address.json +2 -2
  676. package/json-schema/data/AggregationFunction.json +2 -2
  677. package/json-schema/data/AggregationMetricType.json +2 -2
  678. package/json-schema/data/AggregationNode.json +2 -2
  679. package/json-schema/data/AggregationPipeline.json +2 -2
  680. package/json-schema/data/AggregationStage.json +2 -2
  681. package/json-schema/data/AnalyticsQuery.json +2 -2
  682. package/json-schema/data/ApiMethod.json +2 -2
  683. package/json-schema/data/BaseEngineOptions.json +2 -2
  684. package/json-schema/data/CDCConfig.json +2 -2
  685. package/json-schema/data/ComputedFieldCache.json +2 -2
  686. package/json-schema/data/ConsistencyLevel.json +2 -2
  687. package/json-schema/data/Cube.json +2 -2
  688. package/json-schema/data/CubeJoin.json +2 -2
  689. package/json-schema/data/CurrencyConfig.json +2 -2
  690. package/json-schema/data/CurrencyValue.json +2 -2
  691. package/json-schema/data/DataEngineAggregateOptions.json +2 -2
  692. package/json-schema/data/DataEngineAggregateRequest.json +2 -2
  693. package/json-schema/data/DataEngineBatchRequest.json +2 -2
  694. package/json-schema/data/DataEngineCountOptions.json +2 -2
  695. package/json-schema/data/DataEngineCountRequest.json +2 -2
  696. package/json-schema/data/DataEngineDeleteOptions.json +2 -2
  697. package/json-schema/data/DataEngineDeleteRequest.json +2 -2
  698. package/json-schema/data/DataEngineExecuteRequest.json +2 -2
  699. package/json-schema/data/DataEngineFilter.json +2 -2
  700. package/json-schema/data/DataEngineFindOneRequest.json +2 -2
  701. package/json-schema/data/DataEngineFindRequest.json +2 -2
  702. package/json-schema/data/DataEngineInsertOptions.json +2 -2
  703. package/json-schema/data/DataEngineInsertRequest.json +2 -2
  704. package/json-schema/data/DataEngineQueryOptions.json +2 -2
  705. package/json-schema/data/DataEngineRequest.json +2 -2
  706. package/json-schema/data/DataEngineSort.json +2 -2
  707. package/json-schema/data/DataEngineUpdateOptions.json +2 -2
  708. package/json-schema/data/DataEngineUpdateRequest.json +2 -2
  709. package/json-schema/data/DataEngineVectorFindRequest.json +2 -2
  710. package/json-schema/data/DataQualityRules.json +2 -2
  711. package/json-schema/data/DataTypeMapping.json +2 -2
  712. package/json-schema/data/Datasource.json +2 -2
  713. package/json-schema/data/DatasourceCapabilities.json +2 -2
  714. package/json-schema/data/DateGranularity.json +2 -2
  715. package/json-schema/data/DateMacroPlaceholder.json +2 -2
  716. package/json-schema/data/DateMacroToken.json +2 -2
  717. package/json-schema/data/Dimension.json +2 -2
  718. package/json-schema/data/DimensionType.json +2 -2
  719. package/json-schema/data/Document.json +2 -2
  720. package/json-schema/data/DocumentTemplate.json +2 -2
  721. package/json-schema/data/DocumentValidationSchema.json +2 -2
  722. package/json-schema/data/DocumentVersion.json +2 -2
  723. package/json-schema/data/DriverCapabilities.json +2 -2
  724. package/json-schema/data/DriverConfig.json +2 -2
  725. package/json-schema/data/DriverDefinition.json +2 -2
  726. package/json-schema/data/DriverOptions.json +2 -2
  727. package/json-schema/data/DriverType.json +2 -2
  728. package/json-schema/data/ESignatureConfig.json +2 -2
  729. package/json-schema/data/EngineAggregateOptions.json +2 -2
  730. package/json-schema/data/EngineCountOptions.json +2 -2
  731. package/json-schema/data/EngineDeleteOptions.json +2 -2
  732. package/json-schema/data/EngineQueryOptions.json +2 -2
  733. package/json-schema/data/EngineUpdateOptions.json +2 -2
  734. package/json-schema/data/EqualityOperator.json +2 -2
  735. package/json-schema/data/ExpressionBody.json +2 -2
  736. package/json-schema/data/ExternalCatalog.json +2 -2
  737. package/json-schema/data/ExternalColumn.json +2 -2
  738. package/json-schema/data/ExternalDataSource.json +2 -2
  739. package/json-schema/data/ExternalDatasourceSettings.json +2 -2
  740. package/json-schema/data/ExternalTable.json +2 -2
  741. package/json-schema/data/FeedActor.json +2 -2
  742. package/json-schema/data/FeedFilterMode.json +2 -2
  743. package/json-schema/data/FeedItem.json +2 -2
  744. package/json-schema/data/FeedItemType.json +2 -2
  745. package/json-schema/data/FeedVisibility.json +2 -2
  746. package/json-schema/data/FieldChangeEntry.json +2 -2
  747. package/json-schema/data/FieldMapping.json +2 -2
  748. package/json-schema/data/FieldNode.json +2 -2
  749. package/json-schema/data/FieldReference.json +2 -2
  750. package/json-schema/data/FieldType.json +2 -2
  751. package/json-schema/data/FileAttachmentConfig.json +2 -2
  752. package/json-schema/data/FilterCondition.json +2 -2
  753. package/json-schema/data/FormatValidation.json +2 -2
  754. package/json-schema/data/FullTextSearch.json +2 -2
  755. package/json-schema/data/GroupByNode.json +2 -2
  756. package/json-schema/data/HookBody.json +2 -2
  757. package/json-schema/data/HookBodyCapability.json +2 -2
  758. package/json-schema/data/HookContext.json +2 -2
  759. package/json-schema/data/HookEvent.json +2 -2
  760. package/json-schema/data/Index.json +2 -2
  761. package/json-schema/data/JSONValidation.json +2 -2
  762. package/json-schema/data/JoinNode.json +2 -2
  763. package/json-schema/data/JoinStrategy.json +2 -2
  764. package/json-schema/data/JoinType.json +2 -2
  765. package/json-schema/data/LocationCoordinates.json +2 -2
  766. package/json-schema/data/Mapping.json +2 -2
  767. package/json-schema/data/Mention.json +2 -2
  768. package/json-schema/data/Metric.json +2 -2
  769. package/json-schema/data/ModeSchema.json +2 -2
  770. package/json-schema/data/NoSQLDataTypeMapping.json +2 -2
  771. package/json-schema/data/NoSQLDatabaseType.json +2 -2
  772. package/json-schema/data/NoSQLDriverConfig.json +2 -2
  773. package/json-schema/data/NoSQLIndex.json +2 -2
  774. package/json-schema/data/NoSQLIndexType.json +2 -2
  775. package/json-schema/data/NoSQLOperationType.json +2 -2
  776. package/json-schema/data/NoSQLQueryOptions.json +2 -2
  777. package/json-schema/data/NoSQLTransactionOptions.json +2 -2
  778. package/json-schema/data/NotificationChannel.json +2 -2
  779. package/json-schema/data/ObjectCapabilities.json +2 -2
  780. package/json-schema/data/ObjectDependencyGraph.json +2 -2
  781. package/json-schema/data/ObjectDependencyNode.json +2 -2
  782. package/json-schema/data/ObjectExternalBinding.json +2 -2
  783. package/json-schema/data/ObjectOwnershipEnum.json +2 -2
  784. package/json-schema/data/PartitioningConfig.json +2 -2
  785. package/json-schema/data/PoolConfig.json +2 -2
  786. package/json-schema/data/Query.json +2 -2
  787. package/json-schema/data/QueryFilter.json +2 -2
  788. package/json-schema/data/Reaction.json +2 -2
  789. package/json-schema/data/RecordSubscription.json +2 -2
  790. package/json-schema/data/ReferenceResolution.json +2 -2
  791. package/json-schema/data/ReferenceResolutionError.json +2 -2
  792. package/json-schema/data/ReplicationConfig.json +2 -2
  793. package/json-schema/data/SQLDialect.json +2 -2
  794. package/json-schema/data/SQLDriverConfig.json +2 -2
  795. package/json-schema/data/SSLConfig.json +2 -2
  796. package/json-schema/data/ScriptBody.json +2 -2
  797. package/json-schema/data/SearchConfig.json +2 -2
  798. package/json-schema/data/Seed.json +2 -2
  799. package/json-schema/data/SeedIdentity.json +2 -2
  800. package/json-schema/data/SeedLoadResult.json +2 -2
  801. package/json-schema/data/SeedLoaderConfig.json +2 -2
  802. package/json-schema/data/SeedLoaderRequest.json +2 -2
  803. package/json-schema/data/SeedLoaderResult.json +2 -2
  804. package/json-schema/data/SeedMode.json +2 -2
  805. package/json-schema/data/SelectOption.json +2 -2
  806. package/json-schema/data/SetOperator.json +2 -2
  807. package/json-schema/data/ShardingConfig.json +2 -2
  808. package/json-schema/data/SoftDeleteConfig.json +2 -2
  809. package/json-schema/data/SortNode.json +2 -2
  810. package/json-schema/data/SpecialOperator.json +2 -2
  811. package/json-schema/data/StateMachineValidation.json +2 -2
  812. package/json-schema/data/StringOperator.json +2 -2
  813. package/json-schema/data/SubscriptionEventType.json +2 -2
  814. package/json-schema/data/TenancyConfig.json +2 -2
  815. package/json-schema/data/TimeUpdateInterval.json +2 -2
  816. package/json-schema/data/TransformType.json +2 -2
  817. package/json-schema/data/VectorConfig.json +2 -2
  818. package/json-schema/data/VersioningConfig.json +2 -2
  819. package/json-schema/data/WindowFunction.json +2 -2
  820. package/json-schema/data/WindowFunctionNode.json +2 -2
  821. package/json-schema/data/WindowSpec.json +2 -2
  822. package/json-schema/identity/Account.json +2 -2
  823. package/json-schema/identity/ApiKey.json +2 -2
  824. package/json-schema/identity/Invitation.json +2 -2
  825. package/json-schema/identity/InvitationStatus.json +2 -2
  826. package/json-schema/identity/Member.json +2 -2
  827. package/json-schema/identity/Organization.json +2 -2
  828. package/json-schema/identity/Role.json +2 -2
  829. package/json-schema/identity/SCIMAddress.json +2 -2
  830. package/json-schema/identity/SCIMBulkOperation.json +2 -2
  831. package/json-schema/identity/SCIMBulkRequest.json +2 -2
  832. package/json-schema/identity/SCIMBulkResponse.json +2 -2
  833. package/json-schema/identity/SCIMBulkResponseOperation.json +2 -2
  834. package/json-schema/identity/SCIMEmail.json +2 -2
  835. package/json-schema/identity/SCIMEnterpriseUser.json +2 -2
  836. package/json-schema/identity/SCIMError.json +2 -2
  837. package/json-schema/identity/SCIMGroup.json +2 -2
  838. package/json-schema/identity/SCIMGroupReference.json +2 -2
  839. package/json-schema/identity/SCIMListResponse.json +2 -2
  840. package/json-schema/identity/SCIMMemberReference.json +2 -2
  841. package/json-schema/identity/SCIMMeta.json +2 -2
  842. package/json-schema/identity/SCIMName.json +2 -2
  843. package/json-schema/identity/SCIMPatchOperation.json +2 -2
  844. package/json-schema/identity/SCIMPatchRequest.json +2 -2
  845. package/json-schema/identity/SCIMPhoneNumber.json +2 -2
  846. package/json-schema/identity/SCIMUser.json +2 -2
  847. package/json-schema/identity/Session.json +2 -2
  848. package/json-schema/identity/User.json +2 -2
  849. package/json-schema/identity/VerificationToken.json +2 -2
  850. package/json-schema/integration/AckMode.json +2 -2
  851. package/json-schema/integration/ApiVersionConfig.json +2 -2
  852. package/json-schema/integration/BuildConfig.json +2 -2
  853. package/json-schema/integration/CdcConfig.json +2 -2
  854. package/json-schema/integration/CircuitBreakerConfig.json +2 -2
  855. package/json-schema/integration/ConflictResolution.json +2 -2
  856. package/json-schema/integration/ConnectorAction.json +2 -2
  857. package/json-schema/integration/ConnectorHealth.json +2 -2
  858. package/json-schema/integration/ConnectorStatus.json +2 -2
  859. package/json-schema/integration/ConnectorTrigger.json +2 -2
  860. package/json-schema/integration/ConnectorType.json +2 -2
  861. package/json-schema/integration/ConsumerConfig.json +2 -2
  862. package/json-schema/integration/DatabasePoolConfig.json +2 -2
  863. package/json-schema/integration/DatabaseProvider.json +2 -2
  864. package/json-schema/integration/DeliveryGuarantee.json +2 -2
  865. package/json-schema/integration/DeploymentConfig.json +2 -2
  866. package/json-schema/integration/DlqConfig.json +2 -2
  867. package/json-schema/integration/DomainConfig.json +2 -2
  868. package/json-schema/integration/EdgeFunctionConfig.json +2 -2
  869. package/json-schema/integration/EnvironmentVariables.json +2 -2
  870. package/json-schema/integration/ErrorCategory.json +2 -2
  871. package/json-schema/integration/ErrorMappingConfig.json +2 -2
  872. package/json-schema/integration/ErrorMappingRule.json +2 -2
  873. package/json-schema/integration/FileAccessPattern.json +2 -2
  874. package/json-schema/integration/FileFilterConfig.json +2 -2
  875. package/json-schema/integration/FileMetadataConfig.json +2 -2
  876. package/json-schema/integration/FileStorageProvider.json +2 -2
  877. package/json-schema/integration/FileVersioningConfig.json +2 -2
  878. package/json-schema/integration/GitHubActionsWorkflow.json +2 -2
  879. package/json-schema/integration/GitHubCommitConfig.json +2 -2
  880. package/json-schema/integration/GitHubIssueTracking.json +2 -2
  881. package/json-schema/integration/GitHubProvider.json +2 -2
  882. package/json-schema/integration/GitHubReleaseConfig.json +2 -2
  883. package/json-schema/integration/GitHubRepository.json +2 -2
  884. package/json-schema/integration/GitRepositoryConfig.json +2 -2
  885. package/json-schema/integration/HealthCheckConfig.json +2 -2
  886. package/json-schema/integration/MessageFormat.json +2 -2
  887. package/json-schema/integration/MessageQueueProvider.json +2 -2
  888. package/json-schema/integration/MultipartUploadConfig.json +2 -2
  889. package/json-schema/integration/ProducerConfig.json +2 -2
  890. package/json-schema/integration/RateLimitConfig.json +2 -2
  891. package/json-schema/integration/RateLimitStrategy.json +2 -2
  892. package/json-schema/integration/RetryConfig.json +2 -2
  893. package/json-schema/integration/RetryStrategy.json +2 -2
  894. package/json-schema/integration/SaasProvider.json +2 -2
  895. package/json-schema/integration/SslConfig.json +2 -2
  896. package/json-schema/integration/StorageBucket.json +2 -2
  897. package/json-schema/integration/SyncStrategy.json +2 -2
  898. package/json-schema/integration/TopicQueue.json +2 -2
  899. package/json-schema/integration/VercelFramework.json +2 -2
  900. package/json-schema/integration/VercelMonitoring.json +2 -2
  901. package/json-schema/integration/VercelProject.json +2 -2
  902. package/json-schema/integration/VercelProvider.json +2 -2
  903. package/json-schema/integration/VercelTeam.json +2 -2
  904. package/json-schema/integration/WebhookConfig.json +2 -2
  905. package/json-schema/integration/WebhookEvent.json +2 -2
  906. package/json-schema/integration/WebhookSignatureAlgorithm.json +2 -2
  907. package/json-schema/kernel/ActivationEvent.json +2 -2
  908. package/json-schema/kernel/AdvancedPluginLifecycleConfig.json +2 -2
  909. package/json-schema/kernel/ArtifactChecksum.json +2 -2
  910. package/json-schema/kernel/ArtifactFileEntry.json +2 -2
  911. package/json-schema/kernel/ArtifactSignature.json +2 -2
  912. package/json-schema/kernel/BreakingChange.json +2 -2
  913. package/json-schema/kernel/CLICommandContribution.json +2 -2
  914. package/json-schema/kernel/CapabilityConformanceLevel.json +2 -2
  915. package/json-schema/kernel/ClusterCapabilityConfig.json +2 -2
  916. package/json-schema/kernel/ClusterDriver.json +2 -2
  917. package/json-schema/kernel/ClusterTenantIsolation.json +2 -2
  918. package/json-schema/kernel/CompatibilityLevel.json +2 -2
  919. package/json-schema/kernel/CompatibilityMatrixEntry.json +2 -2
  920. package/json-schema/kernel/CustomizationOrigin.json +2 -2
  921. package/json-schema/kernel/CustomizationPolicy.json +2 -2
  922. package/json-schema/kernel/DeadLetterQueueEntry.json +2 -2
  923. package/json-schema/kernel/DependencyConflict.json +2 -2
  924. package/json-schema/kernel/DependencyGraph.json +2 -2
  925. package/json-schema/kernel/DependencyGraphNode.json +2 -2
  926. package/json-schema/kernel/DependencyResolutionResult.json +2 -2
  927. package/json-schema/kernel/DependencyStatusEnum.json +2 -2
  928. package/json-schema/kernel/DeprecationNotice.json +2 -2
  929. package/json-schema/kernel/DevFixtureConfig.json +2 -2
  930. package/json-schema/kernel/DevPluginConfig.json +2 -2
  931. package/json-schema/kernel/DevPluginPreset.json +2 -2
  932. package/json-schema/kernel/DevServiceOverride.json +2 -2
  933. package/json-schema/kernel/DevToolsConfig.json +2 -2
  934. package/json-schema/kernel/DisablePackageRequest.json +2 -2
  935. package/json-schema/kernel/DistributedStateConfig.json +2 -2
  936. package/json-schema/kernel/DynamicLoadRequest.json +2 -2
  937. package/json-schema/kernel/DynamicLoadingConfig.json +2 -2
  938. package/json-schema/kernel/DynamicPluginOperation.json +2 -2
  939. package/json-schema/kernel/DynamicPluginResult.json +2 -2
  940. package/json-schema/kernel/DynamicUnloadRequest.json +2 -2
  941. package/json-schema/kernel/EnablePackageRequest.json +2 -2
  942. package/json-schema/kernel/Event.json +2 -2
  943. package/json-schema/kernel/EventBusConfig.json +2 -2
  944. package/json-schema/kernel/EventClusterOptions.json +2 -2
  945. package/json-schema/kernel/EventDeliverySemantics.json +2 -2
  946. package/json-schema/kernel/EventHandler.json +2 -2
  947. package/json-schema/kernel/EventLogEntry.json +2 -2
  948. package/json-schema/kernel/EventMessageQueueConfig.json +2 -2
  949. package/json-schema/kernel/EventMetadata.json +2 -2
  950. package/json-schema/kernel/EventPersistence.json +2 -2
  951. package/json-schema/kernel/EventPhase.json +2 -2
  952. package/json-schema/kernel/EventPriority.json +2 -2
  953. package/json-schema/kernel/EventQueueConfig.json +2 -2
  954. package/json-schema/kernel/EventReplayConfig.json +2 -2
  955. package/json-schema/kernel/EventRoute.json +2 -2
  956. package/json-schema/kernel/EventScope.json +2 -2
  957. package/json-schema/kernel/EventSourcingConfig.json +2 -2
  958. package/json-schema/kernel/EventTypeDefinition.json +2 -2
  959. package/json-schema/kernel/EventWebhookConfig.json +2 -2
  960. package/json-schema/kernel/ExecutionContext.json +2 -2
  961. package/json-schema/kernel/ExtensionPoint.json +2 -2
  962. package/json-schema/kernel/FeatureStrategy.json +2 -2
  963. package/json-schema/kernel/FieldChange.json +2 -2
  964. package/json-schema/kernel/GetPackageRequest.json +2 -2
  965. package/json-schema/kernel/GracefulDegradation.json +2 -2
  966. package/json-schema/kernel/HealthStatus.json +2 -2
  967. package/json-schema/kernel/HookRegisteredEvent.json +2 -2
  968. package/json-schema/kernel/HookTriggeredEvent.json +2 -2
  969. package/json-schema/kernel/HotReloadConfig.json +2 -2
  970. package/json-schema/kernel/KernelContext.json +2 -2
  971. package/json-schema/kernel/KernelEventBase.json +2 -2
  972. package/json-schema/kernel/KernelReadyEvent.json +2 -2
  973. package/json-schema/kernel/KernelSecurityPolicy.json +2 -2
  974. package/json-schema/kernel/KernelSecurityScanResult.json +2 -2
  975. package/json-schema/kernel/KernelSecurityVulnerability.json +2 -2
  976. package/json-schema/kernel/KernelShutdownEvent.json +2 -2
  977. package/json-schema/kernel/ListPackagesRequest.json +2 -2
  978. package/json-schema/kernel/ManifestPermissions.json +2 -2
  979. package/json-schema/kernel/MergeConflict.json +2 -2
  980. package/json-schema/kernel/MergeResult.json +2 -2
  981. package/json-schema/kernel/MergeStrategyConfig.json +2 -2
  982. package/json-schema/kernel/MetadataBulkRegisterRequest.json +2 -2
  983. package/json-schema/kernel/MetadataBulkResult.json +2 -2
  984. package/json-schema/kernel/MetadataCategoryEnum.json +2 -2
  985. package/json-schema/kernel/MetadataChangeOperation.json +2 -2
  986. package/json-schema/kernel/MetadataChangeType.json +2 -2
  987. package/json-schema/kernel/MetadataCollectionInfo.json +2 -2
  988. package/json-schema/kernel/MetadataDependency.json +2 -2
  989. package/json-schema/kernel/MetadataDiffItem.json +2 -2
  990. package/json-schema/kernel/MetadataEvent.json +2 -2
  991. package/json-schema/kernel/MetadataFallbackStrategy.json +2 -2
  992. package/json-schema/kernel/MetadataFormat.json +2 -2
  993. package/json-schema/kernel/MetadataImportOptions.json +2 -2
  994. package/json-schema/kernel/MetadataLoadResult.json +2 -2
  995. package/json-schema/kernel/MetadataLoaderContract.json +2 -2
  996. package/json-schema/kernel/MetadataLock.json +2 -2
  997. package/json-schema/kernel/MetadataLockSource.json +2 -2
  998. package/json-schema/kernel/MetadataManagerConfig.json +2 -2
  999. package/json-schema/kernel/MetadataOverlay.json +2 -2
  1000. package/json-schema/kernel/MetadataProvenance.json +2 -2
  1001. package/json-schema/kernel/MetadataQuery.json +2 -2
  1002. package/json-schema/kernel/MetadataQueryResult.json +2 -2
  1003. package/json-schema/kernel/MetadataSaveOptions.json +2 -2
  1004. package/json-schema/kernel/MetadataSaveResult.json +2 -2
  1005. package/json-schema/kernel/MetadataStats.json +2 -2
  1006. package/json-schema/kernel/MetadataType.json +2 -2
  1007. package/json-schema/kernel/MetadataValidationResult.json +2 -2
  1008. package/json-schema/kernel/MetadataWatchEvent.json +2 -2
  1009. package/json-schema/kernel/NamespaceConflictError.json +2 -2
  1010. package/json-schema/kernel/NamespaceRegistryEntry.json +2 -2
  1011. package/json-schema/kernel/OclifPluginConfig.json +2 -2
  1012. package/json-schema/kernel/OpsDomainModule.json +2 -2
  1013. package/json-schema/kernel/OpsFilePath.json +2 -2
  1014. package/json-schema/kernel/OpsPluginStructure.json +2 -2
  1015. package/json-schema/kernel/PackageArtifact.json +2 -2
  1016. package/json-schema/kernel/PackageDependency.json +2 -2
  1017. package/json-schema/kernel/PackageDependencyConflict.json +2 -2
  1018. package/json-schema/kernel/PackageDependencyResolutionResult.json +2 -2
  1019. package/json-schema/kernel/PackageStatusEnum.json +2 -2
  1020. package/json-schema/kernel/PermissionAction.json +2 -2
  1021. package/json-schema/kernel/PermissionScope.json +2 -2
  1022. package/json-schema/kernel/PluginCaching.json +2 -2
  1023. package/json-schema/kernel/PluginCapability.json +2 -2
  1024. package/json-schema/kernel/PluginCapabilityManifest.json +2 -2
  1025. package/json-schema/kernel/PluginCodeSplitting.json +2 -2
  1026. package/json-schema/kernel/PluginCompatibilityMatrix.json +2 -2
  1027. package/json-schema/kernel/PluginDependency.json +2 -2
  1028. package/json-schema/kernel/PluginDependencyResolution.json +2 -2
  1029. package/json-schema/kernel/PluginDependencyResolutionResult.json +2 -2
  1030. package/json-schema/kernel/PluginDiscoveryConfig.json +2 -2
  1031. package/json-schema/kernel/PluginDiscoverySource.json +2 -2
  1032. package/json-schema/kernel/PluginDynamicImport.json +2 -2
  1033. package/json-schema/kernel/PluginEngines.json +2 -2
  1034. package/json-schema/kernel/PluginErrorEvent.json +2 -2
  1035. package/json-schema/kernel/PluginEventBase.json +2 -2
  1036. package/json-schema/kernel/PluginHealthCheck.json +2 -2
  1037. package/json-schema/kernel/PluginHealthReport.json +2 -2
  1038. package/json-schema/kernel/PluginHealthStatus.json +2 -2
  1039. package/json-schema/kernel/PluginHotReload.json +2 -2
  1040. package/json-schema/kernel/PluginInitialization.json +2 -2
  1041. package/json-schema/kernel/PluginInstallConfig.json +2 -2
  1042. package/json-schema/kernel/PluginIntegrity.json +2 -2
  1043. package/json-schema/kernel/PluginInterface.json +2 -2
  1044. package/json-schema/kernel/PluginLifecycleEventType.json +2 -2
  1045. package/json-schema/kernel/PluginLifecyclePhaseEvent.json +2 -2
  1046. package/json-schema/kernel/PluginLoadingConfig.json +2 -2
  1047. package/json-schema/kernel/PluginLoadingEvent.json +2 -2
  1048. package/json-schema/kernel/PluginLoadingState.json +2 -2
  1049. package/json-schema/kernel/PluginLoadingStrategy.json +2 -2
  1050. package/json-schema/kernel/PluginMetadata.json +2 -2
  1051. package/json-schema/kernel/PluginPackaging.json +2 -2
  1052. package/json-schema/kernel/PluginPerformanceMonitoring.json +2 -2
  1053. package/json-schema/kernel/PluginPermissions.json +2 -2
  1054. package/json-schema/kernel/PluginPreloadConfig.json +2 -2
  1055. package/json-schema/kernel/PluginProvenance.json +2 -2
  1056. package/json-schema/kernel/PluginQualityMetrics.json +2 -2
  1057. package/json-schema/kernel/PluginRegisteredEvent.json +2 -2
  1058. package/json-schema/kernel/PluginRegistryEntry.json +2 -2
  1059. package/json-schema/kernel/PluginRuntime.json +2 -2
  1060. package/json-schema/kernel/PluginSandboxing.json +2 -2
  1061. package/json-schema/kernel/PluginSearchFilters.json +2 -2
  1062. package/json-schema/kernel/PluginSource.json +2 -2
  1063. package/json-schema/kernel/PluginStartupResult.json +2 -2
  1064. package/json-schema/kernel/PluginStateSnapshot.json +2 -2
  1065. package/json-schema/kernel/PluginStatistics.json +2 -2
  1066. package/json-schema/kernel/PluginTrustLevel.json +2 -2
  1067. package/json-schema/kernel/PluginTrustScore.json +2 -2
  1068. package/json-schema/kernel/PluginUpdateStrategy.json +2 -2
  1069. package/json-schema/kernel/PluginVendor.json +2 -2
  1070. package/json-schema/kernel/PluginVersionMetadata.json +2 -2
  1071. package/json-schema/kernel/PreviewModeConfig.json +2 -2
  1072. package/json-schema/kernel/ProtocolFeature.json +2 -2
  1073. package/json-schema/kernel/ProtocolReference.json +2 -2
  1074. package/json-schema/kernel/ProtocolVersion.json +2 -2
  1075. package/json-schema/kernel/RealTimeNotificationConfig.json +2 -2
  1076. package/json-schema/kernel/RequiredAction.json +2 -2
  1077. package/json-schema/kernel/ResolvedDependency.json +2 -2
  1078. package/json-schema/kernel/ResourceType.json +2 -2
  1079. package/json-schema/kernel/RollbackPackageRequest.json +2 -2
  1080. package/json-schema/kernel/RollbackPackageResponse.json +2 -2
  1081. package/json-schema/kernel/RuntimeConfig.json +2 -2
  1082. package/json-schema/kernel/RuntimeMode.json +2 -2
  1083. package/json-schema/kernel/SBOM.json +2 -2
  1084. package/json-schema/kernel/SBOMEntry.json +2 -2
  1085. package/json-schema/kernel/SandboxConfig.json +2 -2
  1086. package/json-schema/kernel/ScopeConfig.json +2 -2
  1087. package/json-schema/kernel/ScopeInfo.json +2 -2
  1088. package/json-schema/kernel/SecurityPolicy.json +2 -2
  1089. package/json-schema/kernel/SecurityScanResult.json +2 -2
  1090. package/json-schema/kernel/SecurityVulnerability.json +2 -2
  1091. package/json-schema/kernel/SemanticVersion.json +2 -2
  1092. package/json-schema/kernel/ServiceClusterAnnotations.json +2 -2
  1093. package/json-schema/kernel/ServiceClusterScope.json +2 -2
  1094. package/json-schema/kernel/ServiceFactoryRegistration.json +2 -2
  1095. package/json-schema/kernel/ServiceLeaderStrategy.json +2 -2
  1096. package/json-schema/kernel/ServiceMetadata.json +2 -2
  1097. package/json-schema/kernel/ServiceRegisteredEvent.json +2 -2
  1098. package/json-schema/kernel/ServiceRegistryConfig.json +2 -2
  1099. package/json-schema/kernel/ServiceScopeType.json +2 -2
  1100. package/json-schema/kernel/ServiceUnregisteredEvent.json +2 -2
  1101. package/json-schema/kernel/StartupOptions.json +2 -2
  1102. package/json-schema/kernel/StartupOrchestrationResult.json +2 -2
  1103. package/json-schema/kernel/TenantRuntimeContext.json +2 -2
  1104. package/json-schema/kernel/UninstallPackageRequest.json +2 -2
  1105. package/json-schema/kernel/UninstallPackageResponse.json +2 -2
  1106. package/json-schema/kernel/UpgradeContext.json +2 -2
  1107. package/json-schema/kernel/UpgradeImpactLevel.json +2 -2
  1108. package/json-schema/kernel/UpgradePackageResponse.json +2 -2
  1109. package/json-schema/kernel/UpgradePhase.json +2 -2
  1110. package/json-schema/kernel/UpgradePlan.json +2 -2
  1111. package/json-schema/kernel/ValidationError.json +2 -2
  1112. package/json-schema/kernel/ValidationResult.json +2 -2
  1113. package/json-schema/kernel/ValidationWarning.json +2 -2
  1114. package/json-schema/kernel/VersionConstraint.json +2 -2
  1115. package/json-schema/kernel/VulnerabilitySeverity.json +2 -2
  1116. package/json-schema/objectstack.json +3354 -3334
  1117. package/json-schema/openapi.json +1 -1
  1118. package/json-schema/qa/TestAction.json +2 -2
  1119. package/json-schema/qa/TestActionType.json +2 -2
  1120. package/json-schema/qa/TestAssertion.json +2 -2
  1121. package/json-schema/qa/TestAssertionType.json +2 -2
  1122. package/json-schema/qa/TestContext.json +2 -2
  1123. package/json-schema/qa/TestScenario.json +2 -2
  1124. package/json-schema/qa/TestStep.json +2 -2
  1125. package/json-schema/qa/TestSuite.json +2 -2
  1126. package/json-schema/security/AuditPolicy.json +2 -2
  1127. package/json-schema/security/FieldPermission.json +2 -2
  1128. package/json-schema/security/NetworkPolicy.json +2 -2
  1129. package/json-schema/security/OWDModel.json +2 -2
  1130. package/json-schema/security/ObjectPermission.json +2 -2
  1131. package/json-schema/security/OwnerSharingRule.json +2 -2
  1132. package/json-schema/security/PasswordPolicy.json +2 -2
  1133. package/json-schema/security/PermissionSet.json +2 -2
  1134. package/json-schema/security/Policy.json +2 -2
  1135. package/json-schema/security/RLSAuditConfig.json +2 -2
  1136. package/json-schema/security/RLSAuditEvent.json +2 -2
  1137. package/json-schema/security/RLSConfig.json +2 -2
  1138. package/json-schema/security/RLSEvaluationResult.json +2 -2
  1139. package/json-schema/security/RLSOperation.json +2 -2
  1140. package/json-schema/security/RLSUserContext.json +2 -2
  1141. package/json-schema/security/RowLevelSecurityPolicy.json +2 -2
  1142. package/json-schema/security/SessionPolicy.json +2 -2
  1143. package/json-schema/security/ShareRecipientType.json +2 -2
  1144. package/json-schema/security/SharingLevel.json +2 -2
  1145. package/json-schema/security/SharingRuleType.json +2 -2
  1146. package/json-schema/security/Territory.json +2 -2
  1147. package/json-schema/security/TerritoryModel.json +2 -2
  1148. package/json-schema/security/TerritoryType.json +2 -2
  1149. package/json-schema/shared/AggregationFunctionEnum.json +2 -2
  1150. package/json-schema/shared/AppName.json +2 -2
  1151. package/json-schema/shared/BaseMetadataRecord.json +2 -2
  1152. package/json-schema/shared/CacheStrategyEnum.json +2 -2
  1153. package/json-schema/shared/CorsConfig.json +2 -2
  1154. package/json-schema/shared/EventName.json +2 -2
  1155. package/json-schema/shared/Expression.json +2 -2
  1156. package/json-schema/shared/ExpressionDialect.json +2 -2
  1157. package/json-schema/shared/ExpressionMeta.json +2 -2
  1158. package/json-schema/shared/FieldName.json +2 -2
  1159. package/json-schema/shared/FlowName.json +2 -2
  1160. package/json-schema/shared/HttpMethod.json +2 -2
  1161. package/json-schema/shared/HttpRequest.json +2 -2
  1162. package/json-schema/shared/IsolationLevelEnum.json +2 -2
  1163. package/json-schema/shared/MetadataFormat.json +2 -2
  1164. package/json-schema/shared/MutationEventEnum.json +2 -2
  1165. package/json-schema/shared/ObjectName.json +2 -2
  1166. package/json-schema/shared/Predicate.json +2 -2
  1167. package/json-schema/shared/Protection.json +2 -2
  1168. package/json-schema/shared/RateLimitConfig.json +2 -2
  1169. package/json-schema/shared/RoleName.json +2 -2
  1170. package/json-schema/shared/SnakeCaseIdentifier.json +2 -2
  1171. package/json-schema/shared/SortDirectionEnum.json +2 -2
  1172. package/json-schema/shared/SortItem.json +2 -2
  1173. package/json-schema/shared/StaticMount.json +2 -2
  1174. package/json-schema/shared/SystemIdentifier.json +2 -2
  1175. package/json-schema/shared/ViewName.json +2 -2
  1176. package/json-schema/studio/ActionContribution.json +2 -2
  1177. package/json-schema/studio/ActionLocation.json +2 -2
  1178. package/json-schema/studio/ActivationEvent.json +2 -2
  1179. package/json-schema/studio/CanvasSnapSettings.json +2 -2
  1180. package/json-schema/studio/CanvasZoomSettings.json +2 -2
  1181. package/json-schema/studio/CommandContribution.json +2 -2
  1182. package/json-schema/studio/ERDiagramConfig.json +2 -2
  1183. package/json-schema/studio/ERLayoutAlgorithm.json +2 -2
  1184. package/json-schema/studio/ERNodeDisplay.json +2 -2
  1185. package/json-schema/studio/ElementPaletteItem.json +2 -2
  1186. package/json-schema/studio/FieldEditorConfig.json +2 -2
  1187. package/json-schema/studio/FieldGroup.json +2 -2
  1188. package/json-schema/studio/FieldPropertySection.json +2 -2
  1189. package/json-schema/studio/FlowBuilderConfig.json +2 -2
  1190. package/json-schema/studio/FlowCanvasEdge.json +2 -2
  1191. package/json-schema/studio/FlowCanvasEdgeStyle.json +2 -2
  1192. package/json-schema/studio/FlowCanvasNode.json +2 -2
  1193. package/json-schema/studio/FlowLayoutAlgorithm.json +2 -2
  1194. package/json-schema/studio/FlowLayoutDirection.json +2 -2
  1195. package/json-schema/studio/FlowNodeRenderDescriptor.json +2 -2
  1196. package/json-schema/studio/FlowNodeShape.json +2 -2
  1197. package/json-schema/studio/InterfaceBuilderConfig.json +2 -2
  1198. package/json-schema/studio/MetadataIconContribution.json +2 -2
  1199. package/json-schema/studio/MetadataViewerContribution.json +2 -2
  1200. package/json-schema/studio/ObjectDesignerConfig.json +2 -2
  1201. package/json-schema/studio/ObjectDesignerDefaultView.json +2 -2
  1202. package/json-schema/studio/ObjectFilter.json +2 -2
  1203. package/json-schema/studio/ObjectListDisplayMode.json +2 -2
  1204. package/json-schema/studio/ObjectManagerConfig.json +2 -2
  1205. package/json-schema/studio/ObjectPreviewConfig.json +2 -2
  1206. package/json-schema/studio/ObjectPreviewTab.json +2 -2
  1207. package/json-schema/studio/ObjectSortField.json +2 -2
  1208. package/json-schema/studio/PageBuilderConfig.json +2 -2
  1209. package/json-schema/studio/PanelContribution.json +2 -2
  1210. package/json-schema/studio/PanelLocation.json +2 -2
  1211. package/json-schema/studio/RelationshipDisplay.json +2 -2
  1212. package/json-schema/studio/RelationshipMapperConfig.json +2 -2
  1213. package/json-schema/studio/SidebarGroupContribution.json +2 -2
  1214. package/json-schema/studio/StudioPluginContributions.json +2 -2
  1215. package/json-schema/studio/StudioPluginManifest.json +2 -2
  1216. package/json-schema/studio/ViewMode.json +2 -2
  1217. package/json-schema/system/AccessControlConfig.json +2 -2
  1218. package/json-schema/system/AdvancedAuthConfig.json +2 -2
  1219. package/json-schema/system/AnalyzerConfig.json +2 -2
  1220. package/json-schema/system/AppCompatibilityCheck.json +2 -2
  1221. package/json-schema/system/AppInstallRequest.json +2 -2
  1222. package/json-schema/system/AppInstallResult.json +2 -2
  1223. package/json-schema/system/AppManifest.json +2 -2
  1224. package/json-schema/system/AppTranslationBundle.json +2 -2
  1225. package/json-schema/system/AuditEvent.json +2 -2
  1226. package/json-schema/system/AuditEventActor.json +2 -2
  1227. package/json-schema/system/AuditEventChange.json +2 -2
  1228. package/json-schema/system/AuditEventFilter.json +2 -2
  1229. package/json-schema/system/AuditEventSeverity.json +2 -2
  1230. package/json-schema/system/AuditEventTarget.json +2 -2
  1231. package/json-schema/system/AuditEventType.json +2 -2
  1232. package/json-schema/system/AuditFinding.json +2 -2
  1233. package/json-schema/system/AuditFindingSeverity.json +2 -2
  1234. package/json-schema/system/AuditFindingStatus.json +2 -2
  1235. package/json-schema/system/AuditLogConfig.json +2 -2
  1236. package/json-schema/system/AuditRetentionPolicy.json +2 -2
  1237. package/json-schema/system/AuditSchedule.json +2 -2
  1238. package/json-schema/system/AuditStorageConfig.json +2 -2
  1239. package/json-schema/system/AuthConfig.json +2 -2
  1240. package/json-schema/system/AuthPluginConfig.json +2 -2
  1241. package/json-schema/system/AuthProviderConfig.json +2 -2
  1242. package/json-schema/system/AwarenessEvent.json +2 -2
  1243. package/json-schema/system/AwarenessSession.json +2 -2
  1244. package/json-schema/system/AwarenessUpdate.json +2 -2
  1245. package/json-schema/system/AwarenessUserState.json +2 -2
  1246. package/json-schema/system/BackupRetention.json +2 -2
  1247. package/json-schema/system/BackupStrategy.json +2 -2
  1248. package/json-schema/system/BatchProgress.json +2 -2
  1249. package/json-schema/system/BucketConfig.json +2 -2
  1250. package/json-schema/system/CRDTMergeResult.json +2 -2
  1251. package/json-schema/system/CRDTState.json +2 -2
  1252. package/json-schema/system/CRDTType.json +2 -2
  1253. package/json-schema/system/CacheAvalanchePrevention.json +2 -2
  1254. package/json-schema/system/CacheConfig.json +2 -2
  1255. package/json-schema/system/CacheConsistency.json +2 -2
  1256. package/json-schema/system/CacheInvalidation.json +2 -2
  1257. package/json-schema/system/CacheStrategy.json +2 -2
  1258. package/json-schema/system/CacheTier.json +2 -2
  1259. package/json-schema/system/ChangeImpact.json +2 -2
  1260. package/json-schema/system/ChangePriority.json +2 -2
  1261. package/json-schema/system/ChangeRequest.json +2 -2
  1262. package/json-schema/system/ChangeSchema.json +2 -2
  1263. package/json-schema/system/ChangeStatus.json +2 -2
  1264. package/json-schema/system/ChangeType.json +2 -2
  1265. package/json-schema/system/CollaborationMode.json +2 -2
  1266. package/json-schema/system/CollaborationSession.json +2 -2
  1267. package/json-schema/system/CollaborationSessionConfig.json +2 -2
  1268. package/json-schema/system/CollaborativeCursor.json +2 -2
  1269. package/json-schema/system/ComplianceAuditRequirement.json +2 -2
  1270. package/json-schema/system/ComplianceConfig.json +2 -2
  1271. package/json-schema/system/ComplianceEncryptionRequirement.json +2 -2
  1272. package/json-schema/system/ComplianceFramework.json +2 -2
  1273. package/json-schema/system/ConsoleDestinationConfig.json +2 -2
  1274. package/json-schema/system/ConsumerConfig.json +2 -2
  1275. package/json-schema/system/CoreServiceName.json +2 -2
  1276. package/json-schema/system/CounterOperation.json +2 -2
  1277. package/json-schema/system/CoverageBreakdownEntry.json +2 -2
  1278. package/json-schema/system/CursorColorPreset.json +2 -2
  1279. package/json-schema/system/CursorSelection.json +2 -2
  1280. package/json-schema/system/CursorStyle.json +2 -2
  1281. package/json-schema/system/CursorUpdate.json +2 -2
  1282. package/json-schema/system/DataClassification.json +2 -2
  1283. package/json-schema/system/DataClassificationPolicy.json +2 -2
  1284. package/json-schema/system/DatabaseLevelIsolationStrategy.json +2 -2
  1285. package/json-schema/system/DatabaseProvider.json +2 -2
  1286. package/json-schema/system/DeadLetterQueue.json +2 -2
  1287. package/json-schema/system/DeleteObjectOperation.json +2 -2
  1288. package/json-schema/system/DeployBundle.json +2 -2
  1289. package/json-schema/system/DeployDiff.json +2 -2
  1290. package/json-schema/system/DeployManifest.json +2 -2
  1291. package/json-schema/system/DeployStatusEnum.json +2 -2
  1292. package/json-schema/system/DeployValidationIssue.json +2 -2
  1293. package/json-schema/system/DeployValidationResult.json +2 -2
  1294. package/json-schema/system/Doc.json +27 -2
  1295. package/json-schema/system/EmailAddressConfig.json +2 -2
  1296. package/json-schema/system/EmailAndPasswordConfig.json +2 -2
  1297. package/json-schema/system/EmailProvider.json +2 -2
  1298. package/json-schema/system/EmailServiceConfig.json +2 -2
  1299. package/json-schema/system/EmailTemplateDefinition.json +2 -2
  1300. package/json-schema/system/EmailTemplateDefinitionCategory.json +2 -2
  1301. package/json-schema/system/EmailTemplateDefinitionVariable.json +2 -2
  1302. package/json-schema/system/EmailVerificationConfig.json +2 -2
  1303. package/json-schema/system/EncryptionAlgorithm.json +2 -2
  1304. package/json-schema/system/EncryptionConfig.json +2 -2
  1305. package/json-schema/system/EnvironmentArtifact.json +2 -2
  1306. package/json-schema/system/EnvironmentArtifactChecksum.json +2 -2
  1307. package/json-schema/system/EnvironmentArtifactFunction.json +2 -2
  1308. package/json-schema/system/EnvironmentArtifactFunctionLanguageEnum.json +2 -2
  1309. package/json-schema/system/EnvironmentArtifactHashAlgorithmEnum.json +2 -2
  1310. package/json-schema/system/EnvironmentArtifactManifest.json +2 -2
  1311. package/json-schema/system/EnvironmentArtifactMetadata.json +2 -2
  1312. package/json-schema/system/EnvironmentArtifactPayloadRef.json +2 -2
  1313. package/json-schema/system/EnvironmentArtifactRequirement.json +2 -2
  1314. package/json-schema/system/ExecuteSqlOperation.json +2 -2
  1315. package/json-schema/system/ExtendedLogLevel.json +2 -2
  1316. package/json-schema/system/ExternalServiceDestinationConfig.json +2 -2
  1317. package/json-schema/system/FacetConfig.json +2 -2
  1318. package/json-schema/system/FailoverConfig.json +2 -2
  1319. package/json-schema/system/FailoverMode.json +2 -2
  1320. package/json-schema/system/Feature.json +2 -2
  1321. package/json-schema/system/FieldEncryption.json +2 -2
  1322. package/json-schema/system/FieldTranslation.json +2 -2
  1323. package/json-schema/system/FileDestinationConfig.json +2 -2
  1324. package/json-schema/system/FileMetadata.json +2 -2
  1325. package/json-schema/system/GCounter.json +2 -2
  1326. package/json-schema/system/GDPRConfig.json +2 -2
  1327. package/json-schema/system/HIPAAConfig.json +2 -2
  1328. package/json-schema/system/HistogramBucketConfig.json +2 -2
  1329. package/json-schema/system/HttpDestinationConfig.json +2 -2
  1330. package/json-schema/system/HttpServerConfig.json +2 -2
  1331. package/json-schema/system/Incident.json +2 -2
  1332. package/json-schema/system/IncidentCategory.json +2 -2
  1333. package/json-schema/system/IncidentNotificationMatrix.json +2 -2
  1334. package/json-schema/system/IncidentNotificationRule.json +2 -2
  1335. package/json-schema/system/IncidentResponsePhase.json +2 -2
  1336. package/json-schema/system/IncidentResponsePolicy.json +2 -2
  1337. package/json-schema/system/IncidentSeverity.json +2 -2
  1338. package/json-schema/system/IncidentStatus.json +2 -2
  1339. package/json-schema/system/IntervalSchedule.json +2 -2
  1340. package/json-schema/system/JobExecution.json +2 -2
  1341. package/json-schema/system/JobExecutionStatus.json +2 -2
  1342. package/json-schema/system/KernelServiceMap.json +2 -2
  1343. package/json-schema/system/KeyManagementProvider.json +2 -2
  1344. package/json-schema/system/KeyRotationPolicy.json +2 -2
  1345. package/json-schema/system/LWWRegister.json +2 -2
  1346. package/json-schema/system/LevelIsolationStrategySchema.json +2 -2
  1347. package/json-schema/system/License.json +2 -2
  1348. package/json-schema/system/LicenseMetricType.json +2 -2
  1349. package/json-schema/system/LifecycleAction.json +2 -2
  1350. package/json-schema/system/LifecyclePolicyConfig.json +2 -2
  1351. package/json-schema/system/LifecyclePolicyRule.json +2 -2
  1352. package/json-schema/system/Locale.json +2 -2
  1353. package/json-schema/system/LogDestination.json +2 -2
  1354. package/json-schema/system/LogDestinationType.json +2 -2
  1355. package/json-schema/system/LogEnrichmentConfig.json +2 -2
  1356. package/json-schema/system/LogEntry.json +2 -2
  1357. package/json-schema/system/LogFormat.json +2 -2
  1358. package/json-schema/system/LogLevel.json +2 -2
  1359. package/json-schema/system/LoggerConfig.json +2 -2
  1360. package/json-schema/system/LoggingConfig.json +2 -2
  1361. package/json-schema/system/MaskingConfig.json +2 -2
  1362. package/json-schema/system/MaskingRule.json +2 -2
  1363. package/json-schema/system/MaskingStrategy.json +2 -2
  1364. package/json-schema/system/MaskingVisibilityRule.json +2 -2
  1365. package/json-schema/system/MessageFormat.json +2 -2
  1366. package/json-schema/system/MessageQueueConfig.json +2 -2
  1367. package/json-schema/system/MessageQueueProvider.json +2 -2
  1368. package/json-schema/system/MetadataCollectionInfo.json +2 -2
  1369. package/json-schema/system/MetadataDiffResult.json +2 -2
  1370. package/json-schema/system/MetadataExportOptions.json +2 -2
  1371. package/json-schema/system/MetadataFallbackStrategy.json +2 -2
  1372. package/json-schema/system/MetadataFormat.json +2 -2
  1373. package/json-schema/system/MetadataHistoryQueryOptions.json +2 -2
  1374. package/json-schema/system/MetadataHistoryQueryResult.json +2 -2
  1375. package/json-schema/system/MetadataHistoryRecord.json +2 -2
  1376. package/json-schema/system/MetadataHistoryRetentionPolicy.json +2 -2
  1377. package/json-schema/system/MetadataImportOptions.json +2 -2
  1378. package/json-schema/system/MetadataLoadOptions.json +2 -2
  1379. package/json-schema/system/MetadataLoadResult.json +2 -2
  1380. package/json-schema/system/MetadataLoaderContract.json +2 -2
  1381. package/json-schema/system/MetadataManagerConfig.json +2 -2
  1382. package/json-schema/system/MetadataRecord.json +2 -2
  1383. package/json-schema/system/MetadataSaveOptions.json +2 -2
  1384. package/json-schema/system/MetadataSaveResult.json +2 -2
  1385. package/json-schema/system/MetadataScope.json +2 -2
  1386. package/json-schema/system/MetadataSource.json +2 -2
  1387. package/json-schema/system/MetadataState.json +2 -2
  1388. package/json-schema/system/MetadataStats.json +2 -2
  1389. package/json-schema/system/MetadataWatchEvent.json +2 -2
  1390. package/json-schema/system/MetricAggregationConfig.json +2 -2
  1391. package/json-schema/system/MetricAggregationType.json +2 -2
  1392. package/json-schema/system/MetricDataPoint.json +2 -2
  1393. package/json-schema/system/MetricDefinition.json +2 -2
  1394. package/json-schema/system/MetricExportConfig.json +2 -2
  1395. package/json-schema/system/MetricLabels.json +2 -2
  1396. package/json-schema/system/MetricType.json +2 -2
  1397. package/json-schema/system/MetricUnit.json +2 -2
  1398. package/json-schema/system/MiddlewareConfig.json +2 -2
  1399. package/json-schema/system/MiddlewareType.json +2 -2
  1400. package/json-schema/system/MigrationDependency.json +2 -2
  1401. package/json-schema/system/MigrationPlan.json +2 -2
  1402. package/json-schema/system/MigrationStatement.json +2 -2
  1403. package/json-schema/system/ModifyFieldOperation.json +2 -2
  1404. package/json-schema/system/MultipartUploadConfig.json +2 -2
  1405. package/json-schema/system/MutualTLSConfig.json +2 -2
  1406. package/json-schema/system/NotificationChannel.json +2 -2
  1407. package/json-schema/system/ORSet.json +2 -2
  1408. package/json-schema/system/ORSetElement.json +2 -2
  1409. package/json-schema/system/OTComponent.json +2 -2
  1410. package/json-schema/system/OTOperation.json +2 -2
  1411. package/json-schema/system/OTOperationType.json +2 -2
  1412. package/json-schema/system/OTTransformResult.json +2 -2
  1413. package/json-schema/system/ObjectMetadata.json +2 -2
  1414. package/json-schema/system/ObjectStorageConfig.json +2 -2
  1415. package/json-schema/system/ObjectTranslationData.json +2 -2
  1416. package/json-schema/system/ObjectTranslationNode.json +2 -2
  1417. package/json-schema/system/OidcProviderConfig.json +2 -2
  1418. package/json-schema/system/OidcProvidersConfig.json +2 -2
  1419. package/json-schema/system/OnceSchedule.json +2 -2
  1420. package/json-schema/system/OpenTelemetryCompatibility.json +2 -2
  1421. package/json-schema/system/OtelExporterType.json +2 -2
  1422. package/json-schema/system/PCIDSSConfig.json +2 -2
  1423. package/json-schema/system/PNCounter.json +2 -2
  1424. package/json-schema/system/PackagePublishResult.json +2 -2
  1425. package/json-schema/system/Plan.json +2 -2
  1426. package/json-schema/system/PresignedUrlConfig.json +2 -2
  1427. package/json-schema/system/ProvisioningStep.json +2 -2
  1428. package/json-schema/system/QueueConfig.json +2 -2
  1429. package/json-schema/system/QuotaEnforcementResult.json +2 -2
  1430. package/json-schema/system/RPO.json +2 -2
  1431. package/json-schema/system/RTO.json +2 -2
  1432. package/json-schema/system/RegistryConfig.json +2 -2
  1433. package/json-schema/system/RegistrySyncPolicy.json +2 -2
  1434. package/json-schema/system/RegistryUpstream.json +2 -2
  1435. package/json-schema/system/RemoveFieldOperation.json +2 -2
  1436. package/json-schema/system/RenameObjectOperation.json +2 -2
  1437. package/json-schema/system/ResolvedSettingValue.json +2 -2
  1438. package/json-schema/system/RetryPolicy.json +2 -2
  1439. package/json-schema/system/RollbackPlan.json +2 -2
  1440. package/json-schema/system/RouteHandlerMetadata.json +2 -2
  1441. package/json-schema/system/RowLevelIsolationStrategy.json +2 -2
  1442. package/json-schema/system/SamplingDecision.json +2 -2
  1443. package/json-schema/system/SamplingStrategyType.json +2 -2
  1444. package/json-schema/system/SearchConfig.json +2 -2
  1445. package/json-schema/system/SearchIndexConfig.json +2 -2
  1446. package/json-schema/system/SearchProvider.json +2 -2
  1447. package/json-schema/system/SecurityContextConfig.json +2 -2
  1448. package/json-schema/system/SecurityEventCorrelation.json +2 -2
  1449. package/json-schema/system/ServerCapabilities.json +2 -2
  1450. package/json-schema/system/ServerEvent.json +2 -2
  1451. package/json-schema/system/ServerEventType.json +2 -2
  1452. package/json-schema/system/ServerStatus.json +2 -2
  1453. package/json-schema/system/ServiceConfig.json +2 -2
  1454. package/json-schema/system/ServiceCriticality.json +2 -2
  1455. package/json-schema/system/ServiceLevelObjective.json +2 -2
  1456. package/json-schema/system/ServiceStatus.json +2 -2
  1457. package/json-schema/system/SettingsActionResult.json +2 -2
  1458. package/json-schema/system/SettingsChangeEvent.json +2 -2
  1459. package/json-schema/system/SocialProviderConfig.json +2 -2
  1460. package/json-schema/system/Span.json +2 -2
  1461. package/json-schema/system/SpanAttributeValue.json +2 -2
  1462. package/json-schema/system/SpanAttributes.json +2 -2
  1463. package/json-schema/system/SpanEvent.json +2 -2
  1464. package/json-schema/system/SpanKind.json +2 -2
  1465. package/json-schema/system/SpanLink.json +2 -2
  1466. package/json-schema/system/SpanStatus.json +2 -2
  1467. package/json-schema/system/SpecifierHandler.json +2 -2
  1468. package/json-schema/system/SpecifierOption.json +2 -2
  1469. package/json-schema/system/SpecifierScope.json +2 -2
  1470. package/json-schema/system/SpecifierType.json +2 -2
  1471. package/json-schema/system/StorageAcl.json +2 -2
  1472. package/json-schema/system/StorageClass.json +2 -2
  1473. package/json-schema/system/StorageConnection.json +2 -2
  1474. package/json-schema/system/StorageProvider.json +2 -2
  1475. package/json-schema/system/StorageScope.json +2 -2
  1476. package/json-schema/system/StructuredLogEntry.json +2 -2
  1477. package/json-schema/system/SupplierAssessmentStatus.json +2 -2
  1478. package/json-schema/system/SupplierRiskLevel.json +2 -2
  1479. package/json-schema/system/SupplierSecurityAssessment.json +2 -2
  1480. package/json-schema/system/SupplierSecurityPolicy.json +2 -2
  1481. package/json-schema/system/SupplierSecurityRequirement.json +2 -2
  1482. package/json-schema/system/Task.json +2 -2
  1483. package/json-schema/system/TaskExecutionResult.json +2 -2
  1484. package/json-schema/system/TaskPriority.json +2 -2
  1485. package/json-schema/system/TaskRetryPolicy.json +2 -2
  1486. package/json-schema/system/TaskStatus.json +2 -2
  1487. package/json-schema/system/Tenant.json +2 -2
  1488. package/json-schema/system/TenantConnectionConfig.json +2 -2
  1489. package/json-schema/system/TenantIsolationConfig.json +2 -2
  1490. package/json-schema/system/TenantIsolationLevel.json +2 -2
  1491. package/json-schema/system/TenantPlan.json +2 -2
  1492. package/json-schema/system/TenantProvisioningRequest.json +2 -2
  1493. package/json-schema/system/TenantProvisioningResult.json +2 -2
  1494. package/json-schema/system/TenantProvisioningStatusEnum.json +2 -2
  1495. package/json-schema/system/TenantQuota.json +2 -2
  1496. package/json-schema/system/TenantRegion.json +2 -2
  1497. package/json-schema/system/TenantSecurityPolicy.json +2 -2
  1498. package/json-schema/system/TenantUsage.json +2 -2
  1499. package/json-schema/system/TextCRDTOperation.json +2 -2
  1500. package/json-schema/system/TextCRDTState.json +2 -2
  1501. package/json-schema/system/TimeSeries.json +2 -2
  1502. package/json-schema/system/TimeSeriesDataPoint.json +2 -2
  1503. package/json-schema/system/TopicConfig.json +2 -2
  1504. package/json-schema/system/TraceContext.json +2 -2
  1505. package/json-schema/system/TraceContextPropagation.json +2 -2
  1506. package/json-schema/system/TraceFlags.json +2 -2
  1507. package/json-schema/system/TracePropagationFormat.json +2 -2
  1508. package/json-schema/system/TraceState.json +2 -2
  1509. package/json-schema/system/TrainingCategory.json +2 -2
  1510. package/json-schema/system/TrainingCompletionStatus.json +2 -2
  1511. package/json-schema/system/TrainingCourse.json +2 -2
  1512. package/json-schema/system/TrainingPlan.json +2 -2
  1513. package/json-schema/system/TrainingRecord.json +2 -2
  1514. package/json-schema/system/TranslationBundle.json +2 -2
  1515. package/json-schema/system/TranslationConfig.json +2 -2
  1516. package/json-schema/system/TranslationCoverageResult.json +2 -2
  1517. package/json-schema/system/TranslationData.json +2 -2
  1518. package/json-schema/system/TranslationDiffItem.json +2 -2
  1519. package/json-schema/system/TranslationDiffStatus.json +2 -2
  1520. package/json-schema/system/TranslationFileOrganization.json +2 -2
  1521. package/json-schema/system/UserActivityStatus.json +2 -2
  1522. package/json-schema/system/VectorClock.json +2 -2
  1523. package/json-schema/system/WorkerStats.json +2 -2
  1524. package/json-schema/ui/AIChatWindowProps.json +2 -2
  1525. package/json-schema/ui/ActionAi.json +2 -2
  1526. package/json-schema/ui/ActionLocation.json +2 -2
  1527. package/json-schema/ui/ActionParam.json +2 -2
  1528. package/json-schema/ui/ActionType.json +2 -2
  1529. package/json-schema/ui/AddRecordConfig.json +2 -2
  1530. package/json-schema/ui/Animation.json +2 -2
  1531. package/json-schema/ui/AnimationTrigger.json +2 -2
  1532. package/json-schema/ui/AppBranding.json +2 -2
  1533. package/json-schema/ui/AppContextSelector.json +2 -2
  1534. package/json-schema/ui/AppearanceConfig.json +2 -2
  1535. package/json-schema/ui/AriaProps.json +2 -2
  1536. package/json-schema/ui/BlankPageLayout.json +2 -2
  1537. package/json-schema/ui/BlankPageLayoutItem.json +2 -2
  1538. package/json-schema/ui/BorderRadius.json +2 -2
  1539. package/json-schema/ui/BreakpointColumnMap.json +2 -2
  1540. package/json-schema/ui/BreakpointName.json +2 -2
  1541. package/json-schema/ui/BreakpointOrderMap.json +2 -2
  1542. package/json-schema/ui/Breakpoints.json +2 -2
  1543. package/json-schema/ui/CalendarConfig.json +2 -2
  1544. package/json-schema/ui/ChartAnnotation.json +2 -2
  1545. package/json-schema/ui/ChartAxis.json +2 -2
  1546. package/json-schema/ui/ChartConfig.json +2 -2
  1547. package/json-schema/ui/ChartInteraction.json +2 -2
  1548. package/json-schema/ui/ChartSeries.json +2 -2
  1549. package/json-schema/ui/ChartType.json +2 -2
  1550. package/json-schema/ui/ColorPalette.json +2 -2
  1551. package/json-schema/ui/ColumnSummary.json +2 -2
  1552. package/json-schema/ui/ComponentAnimation.json +2 -2
  1553. package/json-schema/ui/ConflictResolution.json +2 -2
  1554. package/json-schema/ui/Dashboard.json +2 -2
  1555. package/json-schema/ui/DashboardHeader.json +2 -2
  1556. package/json-schema/ui/DashboardHeaderAction.json +2 -2
  1557. package/json-schema/ui/DashboardWidget.json +2 -2
  1558. package/json-schema/ui/Dataset.json +2 -2
  1559. package/json-schema/ui/DatasetDimension.json +2 -2
  1560. package/json-schema/ui/DatasetMeasure.json +2 -2
  1561. package/json-schema/ui/DateFormat.json +2 -2
  1562. package/json-schema/ui/DensityMode.json +2 -2
  1563. package/json-schema/ui/DerivedMeasureOp.json +2 -2
  1564. package/json-schema/ui/DndConfig.json +2 -2
  1565. package/json-schema/ui/DragConstraint.json +2 -2
  1566. package/json-schema/ui/DragHandle.json +2 -2
  1567. package/json-schema/ui/DragItem.json +2 -2
  1568. package/json-schema/ui/DropEffect.json +2 -2
  1569. package/json-schema/ui/DropZone.json +2 -2
  1570. package/json-schema/ui/EasingFunction.json +2 -2
  1571. package/json-schema/ui/ElementButtonProps.json +2 -2
  1572. package/json-schema/ui/ElementDataSource.json +2 -2
  1573. package/json-schema/ui/ElementFilterProps.json +2 -2
  1574. package/json-schema/ui/ElementImageProps.json +2 -2
  1575. package/json-schema/ui/ElementNumberProps.json +2 -2
  1576. package/json-schema/ui/ElementRecordPickerProps.json +2 -2
  1577. package/json-schema/ui/ElementTextProps.json +2 -2
  1578. package/json-schema/ui/EmbedConfig.json +2 -2
  1579. package/json-schema/ui/EvictionPolicy.json +2 -2
  1580. package/json-schema/ui/FocusManagement.json +2 -2
  1581. package/json-schema/ui/FocusTrapConfig.json +2 -2
  1582. package/json-schema/ui/GalleryConfig.json +2 -2
  1583. package/json-schema/ui/GanttConfig.json +2 -2
  1584. package/json-schema/ui/GestureConfig.json +2 -2
  1585. package/json-schema/ui/GestureType.json +2 -2
  1586. package/json-schema/ui/GlobalFilter.json +2 -2
  1587. package/json-schema/ui/GlobalFilterOptionsFrom.json +2 -2
  1588. package/json-schema/ui/GroupingConfig.json +2 -2
  1589. package/json-schema/ui/GroupingField.json +2 -2
  1590. package/json-schema/ui/HttpMethod.json +2 -2
  1591. package/json-schema/ui/HttpRequest.json +2 -2
  1592. package/json-schema/ui/I18nLabel.json +2 -2
  1593. package/json-schema/ui/I18nObject.json +2 -2
  1594. package/json-schema/ui/InterfacePageConfig.json +2 -2
  1595. package/json-schema/ui/JoinedReportBlock.json +2 -2
  1596. package/json-schema/ui/KanbanConfig.json +2 -2
  1597. package/json-schema/ui/KeyboardNavigationConfig.json +2 -2
  1598. package/json-schema/ui/KeyboardShortcut.json +2 -2
  1599. package/json-schema/ui/ListChartConfig.json +2 -2
  1600. package/json-schema/ui/ListColumn.json +2 -2
  1601. package/json-schema/ui/LocaleConfig.json +2 -2
  1602. package/json-schema/ui/LongPressGestureConfig.json +2 -2
  1603. package/json-schema/ui/MotionConfig.json +2 -2
  1604. package/json-schema/ui/NavigationConfig.json +2 -2
  1605. package/json-schema/ui/NavigationMode.json +2 -2
  1606. package/json-schema/ui/Notification.json +2 -2
  1607. package/json-schema/ui/NotificationAction.json +2 -2
  1608. package/json-schema/ui/NotificationConfig.json +2 -2
  1609. package/json-schema/ui/NotificationPosition.json +2 -2
  1610. package/json-schema/ui/NotificationSeverity.json +2 -2
  1611. package/json-schema/ui/NotificationType.json +2 -2
  1612. package/json-schema/ui/NumberFormat.json +2 -2
  1613. package/json-schema/ui/OfflineCacheConfig.json +2 -2
  1614. package/json-schema/ui/OfflineConfig.json +2 -2
  1615. package/json-schema/ui/OfflineStrategy.json +2 -2
  1616. package/json-schema/ui/PageAccordionProps.json +2 -2
  1617. package/json-schema/ui/PageCardProps.json +2 -2
  1618. package/json-schema/ui/PageComponentType.json +2 -2
  1619. package/json-schema/ui/PageHeaderProps.json +2 -2
  1620. package/json-schema/ui/PageTabsProps.json +2 -2
  1621. package/json-schema/ui/PageTransition.json +2 -2
  1622. package/json-schema/ui/PageType.json +4 -9
  1623. package/json-schema/ui/PageVariable.json +2 -2
  1624. package/json-schema/ui/PaginationConfig.json +2 -2
  1625. package/json-schema/ui/PerformanceConfig.json +2 -2
  1626. package/json-schema/ui/PersistStorage.json +2 -2
  1627. package/json-schema/ui/PinchGestureConfig.json +2 -2
  1628. package/json-schema/ui/PluralRule.json +2 -2
  1629. package/json-schema/ui/Portal.json +2 -2
  1630. package/json-schema/ui/PortalActionNavItem.json +2 -2
  1631. package/json-schema/ui/PortalAnonymousEntry.json +2 -2
  1632. package/json-schema/ui/PortalAnonymousRoute.json +2 -2
  1633. package/json-schema/ui/PortalAuthMode.json +2 -2
  1634. package/json-schema/ui/PortalDashboardNavItem.json +2 -2
  1635. package/json-schema/ui/PortalLayout.json +2 -2
  1636. package/json-schema/ui/PortalNavItem.json +2 -2
  1637. package/json-schema/ui/PortalRateLimit.json +2 -2
  1638. package/json-schema/ui/PortalSeo.json +2 -2
  1639. package/json-schema/ui/PortalTheme.json +2 -2
  1640. package/json-schema/ui/PortalUrlNavItem.json +2 -2
  1641. package/json-schema/ui/PortalViewNavItem.json +2 -2
  1642. package/json-schema/ui/RecordActivityProps.json +2 -2
  1643. package/json-schema/ui/RecordChatterProps.json +2 -2
  1644. package/json-schema/ui/RecordDetailsProps.json +2 -2
  1645. package/json-schema/ui/RecordHighlightsField.json +2 -2
  1646. package/json-schema/ui/RecordHighlightsProps.json +2 -2
  1647. package/json-schema/ui/RecordPathProps.json +2 -2
  1648. package/json-schema/ui/RecordRelatedListProps.json +2 -2
  1649. package/json-schema/ui/RecordReviewConfig.json +2 -2
  1650. package/json-schema/ui/Report.json +2 -2
  1651. package/json-schema/ui/ReportChart.json +2 -2
  1652. package/json-schema/ui/ReportColumn.json +2 -2
  1653. package/json-schema/ui/ReportGrouping.json +2 -2
  1654. package/json-schema/ui/ReportType.json +2 -2
  1655. package/json-schema/ui/ResponsiveConfig.json +2 -2
  1656. package/json-schema/ui/RowColorConfig.json +2 -2
  1657. package/json-schema/ui/RowHeight.json +2 -2
  1658. package/json-schema/ui/SelectionConfig.json +2 -2
  1659. package/json-schema/ui/Shadow.json +2 -2
  1660. package/json-schema/ui/SharingConfig.json +2 -2
  1661. package/json-schema/ui/Spacing.json +2 -2
  1662. package/json-schema/ui/SwipeDirection.json +2 -2
  1663. package/json-schema/ui/SwipeGestureConfig.json +2 -2
  1664. package/json-schema/ui/SyncConfig.json +2 -2
  1665. package/json-schema/ui/Theme.json +2 -2
  1666. package/json-schema/ui/ThemeMode.json +2 -2
  1667. package/json-schema/ui/TimelineConfig.json +2 -2
  1668. package/json-schema/ui/TouchInteraction.json +2 -2
  1669. package/json-schema/ui/TouchTargetConfig.json +2 -2
  1670. package/json-schema/ui/TransitionConfig.json +2 -2
  1671. package/json-schema/ui/TransitionPreset.json +2 -2
  1672. package/json-schema/ui/Typography.json +2 -2
  1673. package/json-schema/ui/UserActionsConfig.json +2 -2
  1674. package/json-schema/ui/UserFilterField.json +2 -2
  1675. package/json-schema/ui/UserFilters.json +2 -2
  1676. package/json-schema/ui/ViewData.json +2 -2
  1677. package/json-schema/ui/ViewFilterRule.json +2 -2
  1678. package/json-schema/ui/ViewItemName.json +2 -2
  1679. package/json-schema/ui/ViewKind.json +2 -2
  1680. package/json-schema/ui/ViewScope.json +2 -2
  1681. package/json-schema/ui/ViewSharing.json +2 -2
  1682. package/json-schema/ui/ViewTab.json +2 -2
  1683. package/json-schema/ui/VisualizationType.json +2 -2
  1684. package/json-schema/ui/WcagContrastLevel.json +2 -2
  1685. package/json-schema/ui/WidgetActionType.json +2 -2
  1686. package/json-schema/ui/WidgetColorVariant.json +2 -2
  1687. package/json-schema/ui/WidgetEvent.json +2 -2
  1688. package/json-schema/ui/WidgetLifecycle.json +2 -2
  1689. package/json-schema/ui/WidgetManifest.json +2 -2
  1690. package/json-schema/ui/WidgetProperty.json +2 -2
  1691. package/json-schema/ui/WidgetSource.json +2 -2
  1692. package/json-schema/ui/ZIndex.json +2 -2
  1693. package/package.json +3 -1
  1694. package/src/system/doc.zod.ts +42 -0
  1695. package/src/ui/page.zod.ts +26 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shared/lazy-schema.ts","../../src/ui/i18n.zod.ts","../../src/ui/chart.zod.ts","../../src/ui/responsive.zod.ts","../../src/shared/identifiers.zod.ts","../../src/shared/expression.zod.ts","../../src/ui/sharing.zod.ts","../../src/kernel/metadata-protection.zod.ts","../../src/shared/protection.zod.ts","../../src/ui/app.zod.ts","../../src/system/encryption.zod.ts","../../src/system/masking.zod.ts","../../src/data/field.zod.ts","../../src/shared/http.zod.ts","../../src/ui/view.zod.ts","../../src/data/filter.zod.ts","../../src/ui/dashboard.zod.ts","../../src/ui/report.zod.ts","../../src/data/query.zod.ts","../../src/ui/dataset.zod.ts","../../src/ui/report.form.ts","../../src/ui/view.form.ts","../../src/ui/app.form.ts","../../src/ui/dashboard.form.ts","../../src/ui/action.form.ts","../../src/ui/page.form.ts","../../src/data/hook-body.zod.ts","../../src/ui/action.zod.ts","../../src/shared/enums.zod.ts","../../src/ui/page.zod.ts","../../src/ui/widget.zod.ts","../../src/data/feed.zod.ts","../../src/ui/component.zod.ts","../../src/ui/touch.zod.ts","../../src/ui/keyboard.zod.ts","../../src/ui/theme.zod.ts","../../src/ui/offline.zod.ts","../../src/ui/animation.zod.ts","../../src/ui/notification.zod.ts","../../src/ui/dnd.zod.ts","../../src/ui/portal.zod.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { z } from 'zod';\n\n/**\n * Wrap a Zod schema constructor so its body is only evaluated on first use.\n *\n * Why: building Zod schemas at module-load creates millions of closures that\n * dominate dev-server RSS even though most schemas are never parsed in a\n * given session. Wrapping the constructor in a Proxy defers allocation until\n * the first property access (`.parse`, `.shape`, `._def`, etc.) and reuses\n * a single cached instance thereafter.\n *\n * Type system: the returned Proxy is structurally indistinguishable from the\n * underlying ZodType, so `z.infer<typeof X>` and `.parse()` callers do not\n * need to change.\n *\n * Emergency rollback: set `OS_EAGER_SCHEMAS=1` to evaluate the\n * factory immediately and bypass the Proxy entirely.\n */\nexport function lazySchema<T extends z.ZodTypeAny>(factory: () => T): T {\n if (typeof process !== 'undefined' && process.env?.OS_EAGER_SCHEMAS === '1') {\n return factory();\n }\n\n let cached: T | undefined;\n const resolve = (): T => {\n if (cached === undefined) cached = factory();\n return cached;\n };\n\n const target = function lazyZod() {} as unknown as T;\n\n const proxy = new Proxy(target as object, {\n get(_t, prop) {\n const real = resolve() as unknown as Record<PropertyKey, unknown>;\n const value = real[prop];\n if (typeof value === 'function') {\n return (value as (...a: unknown[]) => unknown).bind(real);\n }\n return value;\n },\n set(_t, prop, value) {\n const real = resolve() as unknown as Record<PropertyKey, unknown>;\n real[prop] = value;\n return true;\n },\n has(_t, prop) {\n return prop in (resolve() as object);\n },\n ownKeys() {\n return Reflect.ownKeys(resolve() as object);\n },\n getOwnPropertyDescriptor(_t, prop) {\n return Reflect.getOwnPropertyDescriptor(resolve() as object, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(resolve() as object);\n },\n });\n\n return proxy as T;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * I18n Object Schema\n * Structured internationalization label with translation key and parameters.\n * \n * @example\n * ```typescript\n * const label: I18nObject = {\n * key: 'views.task_list.label',\n * defaultValue: 'Task List',\n * params: { count: 5 },\n * };\n * ```\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const I18nObjectSchema = lazySchema(() => z.object({\n /** Translation key (e.g., \"views.task_list.label\", \"apps.crm.description\") */\n key: z.string().describe('Translation key (e.g., \"views.task_list.label\")'),\n\n /** Default value when translation is not available */\n defaultValue: z.string().optional().describe('Fallback value when translation key is not found'),\n\n /** Interpolation parameters for dynamic translations */\n params: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional().describe('Interpolation parameters (e.g., { count: 5 })'),\n}));\n\nexport type I18nObject = z.infer<typeof I18nObjectSchema>;\n\n/**\n * I18n Label Schema\n * \n * A plain string label for display purposes.\n * i18n translation keys are auto-generated by the framework at registration time\n * based on a standardized naming convention (e.g., `apps.<packageId>.<name>.label`).\n * Developers only need to provide the default-language string; translations are\n * managed through translation files, not inline i18n objects.\n * \n * @example\n * ```typescript\n * const label: I18nLabel = \"All Active\";\n * ```\n */\nexport const I18nLabelSchema = lazySchema(() => z.string().describe('Display label (plain string; i18n keys are auto-generated by the framework)'));\n\nexport type I18nLabel = z.infer<typeof I18nLabelSchema>;\n\n/**\n * ARIA Accessibility Properties Schema\n * \n * Common ARIA attributes for UI components to support screen readers\n * and assistive technologies.\n * \n * Aligned with WAI-ARIA 1.2 specification.\n * \n * @see https://www.w3.org/TR/wai-aria-1.2/\n * \n * @example\n * ```typescript\n * const aria: AriaProps = {\n * ariaLabel: 'Close dialog',\n * ariaDescribedBy: 'dialog-description',\n * role: 'dialog',\n * };\n * ```\n */\nexport const AriaPropsSchema = lazySchema(() => z.object({\n /** Accessible label for screen readers */\n ariaLabel: I18nLabelSchema.optional().describe('Accessible label for screen readers (WAI-ARIA aria-label)'),\n\n /** ID of element that describes this component */\n ariaDescribedBy: z.string().optional().describe('ID of element providing additional description (WAI-ARIA aria-describedby)'),\n\n /** WAI-ARIA role override */\n role: z.string().optional().describe('WAI-ARIA role attribute (e.g., \"dialog\", \"navigation\", \"alert\")'),\n}).describe('ARIA accessibility attributes'));\n\nexport type AriaProps = z.infer<typeof AriaPropsSchema>;\n\n/**\n * Plural Rule Schema\n *\n * Defines plural forms for a translation key, following ICU MessageFormat / i18next conventions.\n * Supports zero, one, two, few, many, other forms per CLDR plural rules.\n *\n * @see https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules\n *\n * @example\n * ```typescript\n * const plural: PluralRule = {\n * key: 'items.count',\n * zero: 'No items',\n * one: '{count} item',\n * other: '{count} items',\n * };\n * ```\n */\nexport const PluralRuleSchema = lazySchema(() => z.object({\n /** Translation key for the plural form */\n key: z.string().describe('Translation key'),\n /** Form for zero quantity */\n zero: z.string().optional().describe('Zero form (e.g., \"No items\")'),\n /** Form for singular (1) */\n one: z.string().optional().describe('Singular form (e.g., \"{count} item\")'),\n /** Form for dual (2) — used in Arabic, Welsh, etc. */\n two: z.string().optional().describe('Dual form (e.g., \"{count} items\" for exactly 2)'),\n /** Form for few (2-4 in Slavic languages) */\n few: z.string().optional().describe('Few form (e.g., for 2-4 in some languages)'),\n /** Form for many (5+ in Slavic languages) */\n many: z.string().optional().describe('Many form (e.g., for 5+ in some languages)'),\n /** Default/fallback form */\n other: z.string().describe('Default plural form (e.g., \"{count} items\")'),\n}).describe('ICU plural rules for a translation key'));\n\nexport type PluralRule = z.infer<typeof PluralRuleSchema>;\n\n/**\n * Number Format Schema\n *\n * Defines number formatting rules for localization.\n *\n * @example\n * ```typescript\n * const format: NumberFormat = {\n * style: 'currency',\n * currency: 'USD',\n * minimumFractionDigits: 2,\n * };\n * ```\n */\nexport const NumberFormatSchema = lazySchema(() => z.object({\n style: z.enum(['decimal', 'currency', 'percent', 'unit']).default('decimal')\n .describe('Number formatting style'),\n currency: z.string().optional().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n unit: z.string().optional().describe('Unit for unit formatting (e.g., \"kilometer\", \"liter\")'),\n minimumFractionDigits: z.number().optional().describe('Minimum number of fraction digits'),\n maximumFractionDigits: z.number().optional().describe('Maximum number of fraction digits'),\n useGrouping: z.boolean().optional().describe('Whether to use grouping separators (e.g., 1,000)'),\n}).describe('Number formatting rules'));\n\nexport type NumberFormat = z.infer<typeof NumberFormatSchema>;\n\n/**\n * Date Format Schema\n *\n * Defines date/time formatting rules for localization.\n *\n * @example\n * ```typescript\n * const format: DateFormat = {\n * dateStyle: 'medium',\n * timeStyle: 'short',\n * timeZone: 'America/New_York',\n * };\n * ```\n */\nexport const DateFormatSchema = lazySchema(() => z.object({\n dateStyle: z.enum(['full', 'long', 'medium', 'short']).optional()\n .describe('Date display style'),\n timeStyle: z.enum(['full', 'long', 'medium', 'short']).optional()\n .describe('Time display style'),\n timeZone: z.string().optional().describe('IANA time zone (e.g., \"America/New_York\")'),\n hour12: z.boolean().optional().describe('Use 12-hour format'),\n}).describe('Date/time formatting rules'));\n\nexport type DateFormat = z.infer<typeof DateFormatSchema>;\n\n/**\n * Locale Configuration Schema\n *\n * Defines a complete locale configuration including language code,\n * fallback chain, and formatting preferences.\n *\n * @example\n * ```typescript\n * const locale: LocaleConfig = {\n * code: 'zh-CN',\n * fallbackChain: ['zh-TW', 'en'],\n * direction: 'ltr',\n * numberFormat: { style: 'decimal', useGrouping: true },\n * dateFormat: { dateStyle: 'medium', timeStyle: 'short' },\n * };\n * ```\n */\nexport const LocaleConfigSchema = lazySchema(() => z.object({\n /** BCP 47 language code (e.g., \"en-US\", \"zh-CN\", \"ar-SA\") */\n code: z.string().describe('BCP 47 language code (e.g., \"en-US\", \"zh-CN\")'),\n\n /** Ordered fallback chain for missing translations */\n fallbackChain: z.array(z.string()).optional()\n .describe('Fallback language codes in priority order (e.g., [\"zh-TW\", \"en\"])'),\n\n /** Text direction */\n direction: z.enum(['ltr', 'rtl']).default('ltr')\n .describe('Text direction: left-to-right or right-to-left'),\n\n /** Default number formatting */\n numberFormat: NumberFormatSchema.optional().describe('Default number formatting rules'),\n\n /** Default date formatting */\n dateFormat: DateFormatSchema.optional().describe('Default date/time formatting rules'),\n}).describe('Locale configuration'));\n\nexport type LocaleConfig = z.infer<typeof LocaleConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Unified Chart Type Taxonomy\n * \n * Shared by Dashboard and Report widgets.\n * Provides a comprehensive set of chart types for data visualization.\n */\n\n/**\n * Chart Type Enum\n * Categorized by visualization purpose\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ChartTypeSchema = lazySchema(() => z.enum([\n // Comparison\n 'bar',\n 'horizontal-bar',\n 'column',\n\n // Trend\n 'line',\n 'area',\n\n // Distribution\n 'pie',\n 'donut',\n 'funnel',\n\n // Relationship\n 'scatter',\n\n // Composition\n 'treemap',\n 'sankey',\n\n // Performance (single value — metric/kpi render a number; gauge/solid-gauge/\n // bullet are honest single-value variants pending a real dial/target renderer)\n 'gauge',\n 'solid-gauge',\n 'metric',\n 'kpi',\n 'bullet',\n\n // Advanced\n 'radar',\n\n // Tabular\n 'table',\n 'pivot',\n]));\n\n// NOTE: the taxonomy lists only chart families the default Recharts renderer\n// draws DISTINCTLY. Two groups are intentionally absent:\n//\n// 1. Families requiring data/dependencies the platform does not model — OHLC\n// (candlestick/stock), per-record distributions (box-plot/violin), geo\n// (choropleth/bubble-map/gl-map), or extra renderers (sunburst, heatmap,\n// word-cloud, waterfall).\n// 2. VARIANTS that only render as their base chart, so advertising them lies\n// about the output: grouped-bar / stacked-bar / bi-polar-bar (→ bar, no\n// multi-series grouping/stacking), stacked-area (→ area), step-line / spline\n// (→ line), pyramid (→ funnel), bubble (→ scatter, no size encoding).\n//\n// Both can return via an opt-in renderer once there is a real renderer and a\n// data model to back them. (`metric`/`kpi` are kept as honest single-value\n// synonyms; `gauge`/`solid-gauge`/`bullet` render a value today and gain a dial\n// when a gauge renderer lands.)\n\nexport type ChartType = z.infer<typeof ChartTypeSchema>;\n\n/**\n * Chart Axis Schema\n * Definition for X and Y axes\n */\nexport const ChartAxisSchema = lazySchema(() => z.object({\n /** Data field to map to this axis */\n field: z.string().describe('Data field key'),\n \n /** Axis title */\n title: I18nLabelSchema.optional().describe('Axis display title'),\n\n /** Value formatting (d3-format or similar) */\n format: z.string().optional().describe('Value format string (e.g., \"$0,0.00\")'),\n \n /** Axis scale settings */\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n stepSize: z.number().optional().describe('Step size for ticks'),\n \n /** Appearance */\n showGridLines: z.boolean().default(true),\n position: z.enum(['left', 'right', 'top', 'bottom']).optional().describe('Axis position'),\n \n /** Logarithmic scale */\n logarithmic: z.boolean().default(false),\n}));\n\n/**\n * Chart Series Schema\n * Defines a single data series in the chart\n */\nexport const ChartSeriesSchema = lazySchema(() => z.object({\n /** Field name for values */\n name: z.string().describe('Field name or series identifier'),\n \n /** Display label */\n label: I18nLabelSchema.optional().describe('Series display label'),\n \n /** Series type override (combo charts) */\n type: ChartTypeSchema.optional().describe('Override chart type for this series'),\n \n /** Specific color */\n color: z.string().optional().describe('Series color (hex/rgb/token)'),\n \n /** Stacking group */\n stack: z.string().optional().describe('Stack identifier to group series'),\n \n /** Axis binding */\n yAxis: z.enum(['left', 'right']).default('left').describe('Bind to specific Y-Axis'),\n\n /**\n * Series role.\n *\n * - `'primary'` (default) — normal styling using the chart palette.\n * - `'comparison'` — secondary period-over-period overlay; renderers\n * render it muted (lower opacity, dashed stroke for line/area,\n * lighter fill for bars) so it visually backgrounds against the\n * primary series. Pair with `DashboardWidget.compareTo` on data-\n * bound charts; for hand-authored series, set it directly.\n */\n variant: z.enum(['primary', 'comparison']).default('primary').optional().describe('Series visual role'),\n\n /** Override stroke dash pattern (e.g. \"4 4\" for dashed lines). */\n dashArray: z.string().optional().describe('SVG stroke-dasharray override'),\n\n /** Override series opacity (0–1). */\n opacity: z.number().min(0).max(1).optional().describe('Series opacity override'),\n}));\n\n/**\n * Chart Annotation Schema\n * Static lines or regions to highlight data\n */\nexport const ChartAnnotationSchema = lazySchema(() => z.object({\n type: z.enum(['line', 'region']).default('line'),\n axis: z.enum(['x', 'y']).default('y'),\n value: z.union([z.number(), z.string()]).describe('Start value'),\n endValue: z.union([z.number(), z.string()]).optional().describe('End value for regions'),\n color: z.string().optional(),\n label: I18nLabelSchema.optional(),\n style: z.enum(['solid', 'dashed', 'dotted']).default('dashed'),\n}));\n\n/**\n * Chart Interaction Schema\n */\nexport const ChartInteractionSchema = lazySchema(() => z.object({\n tooltips: z.boolean().default(true),\n zoom: z.boolean().default(false),\n brush: z.boolean().default(false),\n clickAction: z.string().optional().describe('Action ID to trigger on click'),\n}));\n\n/**\n * Chart Configuration Base\n * Common configuration for all chart types\n */\nexport const ChartConfigSchema = lazySchema(() => z.object({\n /** Chart Type */\n type: ChartTypeSchema,\n \n /** Titles */\n title: I18nLabelSchema.optional().describe('Chart title'),\n subtitle: I18nLabelSchema.optional().describe('Chart subtitle'),\n description: I18nLabelSchema.optional().describe('Accessibility description'),\n \n /** Axes Mapping */\n xAxis: ChartAxisSchema.optional().describe('X-Axis configuration'),\n yAxis: z.array(ChartAxisSchema).optional().describe('Y-Axis configuration (support dual axis)'),\n \n /** Series Configuration */\n series: z.array(ChartSeriesSchema).optional().describe('Defined series configuration'),\n \n /** Appearance */\n colors: z.array(z.string()).optional().describe('Color palette'),\n height: z.number().optional().describe('Fixed height in pixels'),\n \n /** Components */\n showLegend: z.boolean().default(true).describe('Display legend'),\n showDataLabels: z.boolean().default(false).describe('Display data labels'),\n \n /** Annotations & Reference Lines */\n annotations: z.array(ChartAnnotationSchema).optional(),\n \n /** Interactions */\n interaction: ChartInteractionSchema.optional(),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport type ChartConfig = z.infer<typeof ChartConfigSchema>;\nexport type ChartAxis = z.infer<typeof ChartAxisSchema>;\nexport type ChartSeries = z.infer<typeof ChartSeriesSchema>;\nexport type ChartAnnotation = z.infer<typeof ChartAnnotationSchema>;\nexport type ChartInteraction = z.infer<typeof ChartInteractionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Breakpoint Name Enum\n * Matches the breakpoint names defined in theme.zod.ts BreakpointsSchema.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const BreakpointName = z.enum(['xs', 'sm', 'md', 'lg', 'xl', '2xl']);\n\nexport type BreakpointName = z.infer<typeof BreakpointName>;\n\n/**\n * Responsive Configuration Schema\n *\n * Provides responsive layout configuration for UI components.\n * Maps breakpoint names to layout behavior (columns, visibility, order).\n *\n * Aligned with theme.zod.ts BreakpointsSchema for a unified responsive system.\n *\n * @example\n * ```typescript\n * const config: ResponsiveConfig = {\n * columns: { xs: 12, sm: 6, lg: 4 },\n * hiddenOn: ['xs'],\n * order: { xs: 2, lg: 1 },\n * };\n * ```\n */\n/**\n * Breakpoint Column Map Schema\n * Maps breakpoint names to grid column counts (1-12).\n * All entries are optional — only specified breakpoints are configured.\n */\nexport const BreakpointColumnMapSchema = lazySchema(() => z.object({\n xs: z.number().min(1).max(12).optional(),\n sm: z.number().min(1).max(12).optional(),\n md: z.number().min(1).max(12).optional(),\n lg: z.number().min(1).max(12).optional(),\n xl: z.number().min(1).max(12).optional(),\n '2xl': z.number().min(1).max(12).optional(),\n}).describe('Grid columns per breakpoint (1-12)'));\n\n/**\n * Breakpoint Order Map Schema\n * Maps breakpoint names to display order numbers.\n * All entries are optional — only specified breakpoints are configured.\n */\nexport const BreakpointOrderMapSchema = lazySchema(() => z.object({\n xs: z.number().optional(),\n sm: z.number().optional(),\n md: z.number().optional(),\n lg: z.number().optional(),\n xl: z.number().optional(),\n '2xl': z.number().optional(),\n}).describe('Display order per breakpoint'));\n\nexport const ResponsiveConfigSchema = lazySchema(() => z.object({\n /** Minimum breakpoint for visibility */\n breakpoint: BreakpointName.optional()\n .describe('Minimum breakpoint for visibility'),\n\n /** Hide on specific breakpoints */\n hiddenOn: z.array(BreakpointName).optional()\n .describe('Hide on these breakpoints'),\n\n /** Grid columns per breakpoint (1-12 column grid) */\n columns: BreakpointColumnMapSchema.optional().describe('Grid columns per breakpoint'),\n\n /** Display order per breakpoint */\n order: BreakpointOrderMapSchema.optional().describe('Display order per breakpoint'),\n}).describe('Responsive layout configuration'));\n\nexport type ResponsiveConfig = z.infer<typeof ResponsiveConfigSchema>;\n\n/**\n * Performance Configuration Schema\n *\n * Defines performance optimization settings for UI components\n * such as lazy loading, virtual scrolling, and caching.\n *\n * @example\n * ```typescript\n * const perf: PerformanceConfig = {\n * lazyLoad: true,\n * virtualScroll: { enabled: true, itemHeight: 40, overscan: 5 },\n * cacheStrategy: 'stale-while-revalidate',\n * prefetch: true,\n * };\n * ```\n */\nexport const PerformanceConfigSchema = lazySchema(() => z.object({\n /** Enable lazy loading for this component */\n lazyLoad: z.boolean().optional()\n .describe('Enable lazy loading (defer rendering until visible)'),\n\n /** Virtual scrolling configuration for large datasets */\n virtualScroll: z.object({\n enabled: z.boolean().default(false).describe('Enable virtual scrolling'),\n itemHeight: z.number().optional().describe('Fixed item height in pixels (for estimation)'),\n overscan: z.number().optional().describe('Number of extra items to render outside viewport'),\n }).optional().describe('Virtual scrolling configuration'),\n\n /** Client-side caching strategy */\n cacheStrategy: z.enum([\n 'none',\n 'cache-first',\n 'network-first',\n 'stale-while-revalidate',\n ]).optional().describe('Client-side data caching strategy'),\n\n /** Enable data prefetching */\n prefetch: z.boolean().optional()\n .describe('Prefetch data before component is visible'),\n\n /** Maximum number of items to render before pagination */\n pageSize: z.number().optional()\n .describe('Number of items per page for pagination'),\n\n /** Debounce interval for user interactions (ms) */\n debounceMs: z.number().optional()\n .describe('Debounce interval for user interactions in milliseconds'),\n}).describe('Performance optimization configuration'));\n\nexport type PerformanceConfig = z.infer<typeof PerformanceConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * System Identifier Schema\n * \n * Universal naming convention for all machine identifiers (API Names) in ObjectStack.\n * Enforces lowercase with underscores or dots to ensure:\n * - Cross-platform compatibility (case-insensitive filesystems)\n * - URL-friendliness (no encoding needed)\n * - Database consistency (no collation issues)\n * - Security (no case-sensitivity bugs in permission checks)\n * \n * **Applies to all metadata that acts as a machine identifier:**\n * - Object names (tables/collections)\n * - Field names\n * - Role names\n * - Permission set names\n * - Action/trigger names\n * - Event keys\n * - App IDs\n * - Menu/page IDs\n * - Select option values\n * - Workflow names\n * - Webhook names\n * \n * **Naming Convention Summary:**\n * | Type | Pattern | Example |\n * |------|---------|---------|\n * | Machine ID | snake_case | `crm_account`, `btn_submit`, `role_admin` |\n * | Event keys | dot.notation | `user.login`, `order.created` |\n * | Labels | Any case | `Client Account`, `Submit Form` |\n * \n * @example Valid identifiers\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * - 'order.created' (for events)\n * - 'api_v2_endpoint'\n * \n * @example Invalid identifiers (will be rejected)\n * - 'Account' (uppercase)\n * - 'CrmAccount' (camelCase)\n * - 'crm-account' (kebab-case - use underscore instead)\n * - 'user profile' (spaces)\n */\nimport { lazySchema } from './lazy-schema';\nexport const SystemIdentifierSchema = lazySchema(() => z\n .string()\n .min(2, { message: 'System identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'System identifier must be lowercase, starting with a letter, and may contain letters, numbers, underscores, or dots (e.g., \"user_profile\" or \"order.created\")',\n })\n .describe('System identifier (lowercase with underscores or dots)'));\n\n/**\n * Strict Snake Case Identifier\n * \n * More restrictive than SystemIdentifierSchema - only allows underscores (no dots).\n * Use this for identifiers that should NOT contain dots (e.g., database table/column names).\n * \n * @example Valid\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * \n * @example Invalid\n * - 'user.profile' (dots not allowed)\n * - 'UserProfile' (uppercase)\n */\nexport const SnakeCaseIdentifierSchema = lazySchema(() => z\n .string()\n .min(2, { message: 'Identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_]*$/, {\n message:\n 'Identifier must be lowercase snake_case, starting with a letter, and may contain only letters, numbers, and underscores (e.g., \"user_profile\")',\n })\n .describe('Snake case identifier (lowercase with underscores only)'));\n\n/**\n * Event Name Identifier\n * \n * Specialized identifier for event names that encourages dot notation.\n * Used in event-driven systems, message queues, and webhooks.\n * \n * Pattern: `namespace.action` or `entity.event_type`\n * \n * @example Valid\n * - 'user.created'\n * - 'order.paid'\n * - 'user.login_success'\n * - 'alarm.high_cpu'\n * \n * @example Invalid\n * - 'UserCreated' (camelCase)\n * - 'user_created' (should use dots for namespacing)\n */\nexport const EventNameSchema = lazySchema(() => z\n .string()\n .min(3, { message: 'Event name must be at least 3 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'Event name must be lowercase with dots for namespacing (e.g., \"user.created\", \"order.paid\")',\n })\n .describe('Event name (lowercase with dot notation for namespacing)'));\n\n/**\n * Type Exports\n */\nexport type SystemIdentifier = z.infer<typeof SystemIdentifierSchema>;\nexport type SnakeCaseIdentifier = z.infer<typeof SnakeCaseIdentifierSchema>;\nexport type EventName = z.infer<typeof EventNameSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Expression Protocol\n *\n * Canonical wire format for all \"expression\"-shaped metadata across ObjectStack\n * (formula fields, predicates, conditions, criteria, visibility rules, seed\n * dynamic values, …).\n *\n * The persisted form is `{ dialect, source }` (and, after `objectstack\n * compile` normalization, `{ dialect, ast }`). String-only shorthand is\n * accepted at *input* time for developer ergonomics; build emits the canonical\n * envelope.\n *\n * ## Dialects\n *\n * | dialect | engine | use |\n * |:---|:---|:---|\n * | `cel` | `@objectstack/formula` (cel-js + ObjectStack stdlib) | formulas, predicates, seed dynamic values |\n * | `js` | sandboxed L2 hook bodies (`isolated-vm` / `quickjs`) | mapping, hook bodies |\n * | `cron` | `cron-parser` | job schedules |\n *\n * SQL fragments (analytics joins, partial indexes) are intentionally **not**\n * routed through this schema — they stay driver-native because their security\n * posture and portability story differ.\n *\n * @see content/docs/concepts/north-star.mdx §8 \"No private expression DSL\"\n */\n\n/** Supported expression dialects. */\nexport const ExpressionDialect = z.enum(['cel', 'js', 'cron', 'template']);\nexport type ExpressionDialect = z.infer<typeof ExpressionDialect>;\n\n/**\n * Authorship metadata for an expression. Optional but encouraged for AI-\n * generated artifacts so audit/explanation tooling has something to render.\n */\nexport const ExpressionMetaSchema = z.object({\n /** Human-readable rationale (often AI-emitted). */\n rationale: z.string().optional(),\n /** Identifier of the agent / tool that produced this expression. */\n generatedBy: z.string().optional(),\n});\nexport type ExpressionMeta = z.infer<typeof ExpressionMetaSchema>;\n\n/**\n * Canonical Expression envelope.\n *\n * Phase 1 (M9.1): `source` is the canonical persisted form. `ast` is reserved\n * and accepted as opaque structured value — `objectstack compile` will fill it\n * in M9.2 with the engine's parsed AST so the artifact carries an AST-only\n * representation.\n *\n * Phase 2 (M9.2+): `ast` becomes required in build output; `source` is kept\n * only for round-trip / debug.\n */\nexport const ExpressionSchema = z.object({\n /** Which engine evaluates `source` / `ast`. */\n dialect: ExpressionDialect,\n /** Surface syntax. Required while `ast` is not yet populated. */\n source: z.string().min(1).optional(),\n /**\n * Engine-native AST. Opaque at the spec layer; each engine validates its own\n * shape. For `dialect: 'cel'` this is the cel-js parsed AST node.\n */\n ast: z.unknown().optional(),\n /** Optional authorship metadata. */\n meta: ExpressionMetaSchema.optional(),\n}).refine(e => e.source !== undefined || e.ast !== undefined, {\n message: 'Expression requires at least one of `source` or `ast`',\n});\nexport type Expression = z.infer<typeof ExpressionSchema>;\n\n/**\n * Author-time input shape: a bare string is shorthand for `{ dialect: 'cel',\n * source }`. Engines that need other dialects must use the full envelope.\n *\n * Build (`objectstack compile`) normalizes this union to `Expression` so the\n * persisted artifact never contains the bare-string form.\n */\nexport const ExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'cel', source })),\n ExpressionSchema,\n]);\nexport type ExpressionInput = z.input<typeof ExpressionInputSchema>;\n\n/**\n * Cron-typed input shape: a bare string is shorthand for `{ dialect: 'cron',\n * source }` (not `cel`). Use this for `schedule` / `cronExpression` fields so\n * authors can write `'0 9 * * 1-5'` without manually wrapping.\n */\nexport const CronExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'cron', source })),\n ExpressionSchema,\n]);\nexport type CronExpressionInput = z.input<typeof CronExpressionInputSchema>;\n\n/**\n * Template-typed input shape: a bare string is shorthand for\n * `{ dialect: 'template', source }`. Use this for notification subjects/bodies,\n * titleFormat, prompt templates — anything with `{{var}}` interpolation.\n */\nexport const TemplateExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'template', source })),\n ExpressionSchema,\n]);\nexport type TemplateExpressionInput = z.input<typeof TemplateExpressionInputSchema>;\n\n/**\n * Predicate — an Expression whose evaluation is expected to be boolean.\n * Spec layer cannot enforce return type at parse time; this alias exists for\n * intent documentation and future runtime type-check wiring.\n */\nexport const PredicateSchema = ExpressionSchema;\nexport type Predicate = z.infer<typeof PredicateSchema>;\n\nexport const PredicateInputSchema = ExpressionInputSchema;\nexport type PredicateInput = z.input<typeof PredicateInputSchema>;\n\n/**\n * Construct an Expression literal from a CEL source string. Used by DX\n * shorthand (`cel\\`...\\``) and by codegen tools.\n */\nexport function expression(source: string, dialect: ExpressionDialect = 'cel', meta?: ExpressionMeta): Expression {\n return { dialect, source, ...(meta ? { meta } : {}) };\n}\n\n/**\n * Tagged-template helpers for inline expression authoring.\n *\n * ```ts\n * import { cel, F, P } from '@objectstack/spec';\n *\n * const f = { formula: F`record.amount * 0.1` };\n * const v = { visible: P`record.status == \"open\"` };\n * const d = { close_date: cel`now() + duration(\"P30D\")` };\n * ```\n *\n * Each helper produces an {@link Expression} envelope with `dialect: 'cel'`\n * and the rendered template string as `source`. The CLI `objectstack compile`\n * step (M9.2) parses these into ASTs at build time so the persisted artifact\n * is dialect-AST only.\n */\nfunction renderTemplate(strings: TemplateStringsArray, values: readonly unknown[]): string {\n if (values.length === 0) return strings[0] ?? '';\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n // Inline literal substitution. Strings get JSON-escaped so `${name}` for\n // `name = 'O\\'Brien'` produces a valid CEL string literal. Numbers and\n // booleans render as their toString. Anything exotic should be passed via\n // the variable scope (record/input) rather than interpolated.\n if (typeof v === 'string') out += JSON.stringify(v);\n else if (typeof v === 'number' || typeof v === 'boolean') out += String(v);\n else if (v === null || v === undefined) out += 'null';\n else out += JSON.stringify(v);\n out += strings[i + 1] ?? '';\n }\n return out;\n}\n\n/** Tagged template — produces a CEL Expression envelope. */\nexport function cel(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n return { dialect: 'cel', source: renderTemplate(strings, values) };\n}\n\n/** Formula alias of {@link cel} — semantic shorthand for computed-field formulas. */\nexport const F = cel;\n\n/** Predicate alias of {@link cel} — semantic shorthand for boolean conditions. */\nexport const P = cel;\n\n/**\n * Tagged template — produces a Mustache-template Expression envelope. Use for\n * notification subjects, prompt bodies, titleFormat strings, etc. Variable\n * scope is the same as CEL (`{{record.x}}`, `{{os.user.id}}`).\n */\nexport function tmpl(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n // Templates do not get JSON.stringify on substitution — interpolation happens\n // at evaluate time via `{{path}}` markers, so we keep raw substitutions here.\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n out += String(values[i]);\n out += strings[i + 1] ?? '';\n }\n return { dialect: 'template', source: out };\n}\n\n/** Tagged template — produces a cron Expression envelope. */\nexport function cron(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n out += String(values[i]);\n out += strings[i + 1] ?? '';\n }\n return { dialect: 'cron', source: out };\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * @module ui/sharing\n *\n * Sharing & Embedding Protocol\n *\n * Defines schemas for public link sharing, embed configuration,\n * domain restrictions, and password protection for apps, pages, and forms.\n */\n\nimport { z } from 'zod';\n\n/**\n * Sharing Config Schema\n * Configuration for public sharing of an app, page, or form.\n * Supports public links, password protection, domain restrictions, and expiration.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SharingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable public sharing'),\n publicLink: z.string().optional().describe('Generated public share URL'),\n password: z.string().optional().describe('Password required to access shared link'),\n allowedDomains: z.array(z.string()).optional()\n .describe('Restrict access to specific email domains (e.g. [\"example.com\"])'),\n expiresAt: z.string().optional()\n .describe('Expiration date/time in ISO 8601 format'),\n allowAnonymous: z.boolean().optional().default(false)\n .describe('Allow access without authentication'),\n}));\n\n/**\n * Embed Config Schema\n * Configuration for iframe embedding of an app, page, or form.\n * Supports origin restrictions, display options, and responsive sizing.\n */\nexport const EmbedConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable iframe embedding'),\n allowedOrigins: z.array(z.string()).optional()\n .describe('Allowed iframe parent origins (e.g. [\"https://example.com\"])'),\n width: z.string().optional().default('100%').describe('Embed width (CSS value)'),\n height: z.string().optional().default('600px').describe('Embed height (CSS value)'),\n showHeader: z.boolean().optional().default(true).describe('Show interface header in embed'),\n showNavigation: z.boolean().optional().default(false).describe('Show navigation in embed'),\n responsive: z.boolean().optional().default(true).describe('Enable responsive resizing'),\n}));\n\n// Type Exports\nexport type SharingConfig = z.infer<typeof SharingConfigSchema>;\nexport type EmbedConfig = z.infer<typeof EmbedConfigSchema>;\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Metadata Protection Model — Phase 1 (ADR-0010)\n *\n * Phase 1 introduces the **item-level lock** (`_lock`) and the\n * provenance / package tags that drive it. Later phases extend this\n * file with the path-level (`_frozenPaths`) and package-level\n * (`metadataDefaults`) layers; the wire shapes here are forward-\n * compatible with those additions.\n *\n * Wire / runtime contract:\n * - `_lock` — 4-state enum, controls overlay / delete actions.\n * - `_lockReason` — short, user-visible explanation surfaced in\n * `403 item_locked` errors and on Studio tooltips.\n * - `_lockSource` — which layer set the lock (Phase 1 only emits\n * `'artifact'`; `'package'` and `'env-forced'`\n * are reserved for Phase 3/2 respectively).\n * - `_provenance` — `'package'` for loader-introduced items,\n * `'org'` for tenant-authored, `'env-forced'`\n * reserved for emergency overrides.\n * - `_packageId` / `_packageVersion` — denormalised from the\n * registry tag so consumers don't need a second\n * round-trip to inspect provenance.\n *\n * See `docs/adr/0010-metadata-protection-model.md` for the full\n * design (industry references, 4-layer model, audit trail).\n */\n\n// ─────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────\n\n/**\n * 4-state lock enum.\n *\n * | Value | Save (PUT / publish / rollback) | Delete |\n * |---------------|---------------------------------|--------|\n * | `none` | allow | allow |\n * | `no-overlay` | **deny** (403 item_locked) | allow |\n * | `no-delete` | allow | **deny** |\n * | `full` | **deny** | **deny** |\n *\n * `allowRuntimeCreate` for **brand-new** items is governed by the\n * type-level L1 registry flag and is never affected by `_lock`\n * (which describes an existing item). See ADR-0010 §3.3.\n */\nexport const MetadataLockSchema = z.enum(['none', 'no-overlay', 'no-delete', 'full']);\nexport type MetadataLock = z.infer<typeof MetadataLockSchema>;\n\n/** Where the `_lock` declaration came from. Reserved enum for forward compatibility. */\nexport const MetadataLockSourceSchema = z.enum(['artifact', 'package', 'env-forced']);\nexport type MetadataLockSource = z.infer<typeof MetadataLockSourceSchema>;\n\n/** Where the metadata item originated. */\nexport const MetadataProvenanceSchema = z.enum(['package', 'org', 'env-forced']);\nexport type MetadataProvenance = z.infer<typeof MetadataProvenanceSchema>;\n\n// ─────────────────────────────────────────────────────────────────────\n// Mixin — raw shape that schemas spread into themselves\n// ─────────────────────────────────────────────────────────────────────\n\n/**\n * Raw shape spliced into each metadata Zod schema that wants to expose\n * the optional protection envelope to its TS authors. Implemented as a\n * Zod raw shape (not a wrapping schema) so it composes with the\n * existing `z.object({ ... })` patterns without needing to introduce\n * a refinement layer.\n *\n * Usage:\n * ```ts\n * const AppSchema = z.object({\n * name: z.string(),\n * // …\n * ...MetadataProtectionFields,\n * });\n * ```\n */\nexport const MetadataProtectionFields = {\n /**\n * Per-item lock declaration. Defaults to `'none'` when omitted.\n * Enforced by the runtime protocol on save / publish / rollback /\n * delete. See ADR-0010 §3.3.\n */\n _lock: MetadataLockSchema.optional().describe(\n 'Item-level lock — controls overlay & delete (ADR-0010).',\n ),\n\n /**\n * Short, user-visible explanation surfaced in `403 item_locked`\n * error envelopes and Studio tooltips. Keep < 200 chars.\n */\n _lockReason: z.string().max(500).optional().describe(\n 'Human-readable reason shown when a write is refused by _lock.',\n ),\n\n /**\n * Which layer asserted the lock — Phase 1 only emits `'artifact'`.\n * Reserved for Phase 2/3 (`'package'`, `'env-forced'`).\n */\n _lockSource: MetadataLockSourceSchema.optional().describe(\n 'Layer that set _lock (artifact | package | env-forced).',\n ),\n\n /**\n * `'package'` — introduced by a loader from npm-package source.\n * `'org'` — authored by a tenant via the metadata API.\n * `'env-forced'` — emergency overrides via the unlock list.\n */\n _provenance: MetadataProvenanceSchema.optional().describe(\n 'Origin of the item (package | org | env-forced).',\n ),\n\n /** Owning package machine id (e.g. `com.objectstack.setup`). */\n _packageId: z.string().optional().describe('Owning package machine id.'),\n\n /** Owning package semver. */\n _packageVersion: z.string().optional().describe('Owning package version.'),\n\n /**\n * Optional URL the Studio lock banner links to for more context.\n * Populated by the loader from the author-facing\n * `protection.docsUrl` field — see `shared/protection.zod.ts`.\n */\n _lockDocsUrl: z.string().optional().describe(\n 'Optional documentation link surfaced next to _lockReason.',\n ),\n} as const;\n\n// ─────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────\n\n/**\n * Read the protection envelope off any candidate item. Safe to call\n * on `undefined`, primitives, or items that have no protection fields\n * at all — returns a fully-defaulted record.\n */\nexport function extractProtection(item: unknown): {\n lock: MetadataLock;\n lockReason: string | undefined;\n lockSource: MetadataLockSource | undefined;\n lockDocsUrl: string | undefined;\n provenance: MetadataProvenance | undefined;\n packageId: string | undefined;\n packageVersion: string | undefined;\n} {\n const empty = {\n lock: 'none' as MetadataLock,\n lockReason: undefined,\n lockSource: undefined,\n lockDocsUrl: undefined,\n provenance: undefined,\n packageId: undefined,\n packageVersion: undefined,\n };\n if (!item || typeof item !== 'object') return empty;\n const rec = item as Record<string, unknown>;\n const lockRaw = rec['_lock'];\n const lock = typeof lockRaw === 'string' && MetadataLockSchema.options.includes(lockRaw as MetadataLock)\n ? (lockRaw as MetadataLock)\n : 'none';\n const lockReason = typeof rec['_lockReason'] === 'string' ? (rec['_lockReason'] as string) : undefined;\n const lockSource = typeof rec['_lockSource'] === 'string'\n && MetadataLockSourceSchema.options.includes(rec['_lockSource'] as MetadataLockSource)\n ? (rec['_lockSource'] as MetadataLockSource)\n : undefined;\n const lockDocsUrl = typeof rec['_lockDocsUrl'] === 'string' ? (rec['_lockDocsUrl'] as string) : undefined;\n const provenance = typeof rec['_provenance'] === 'string'\n && MetadataProvenanceSchema.options.includes(rec['_provenance'] as MetadataProvenance)\n ? (rec['_provenance'] as MetadataProvenance)\n : undefined;\n const packageId = typeof rec['_packageId'] === 'string' ? (rec['_packageId'] as string) : undefined;\n const packageVersion = typeof rec['_packageVersion'] === 'string' ? (rec['_packageVersion'] as string) : undefined;\n return { lock, lockReason, lockSource, lockDocsUrl, provenance, packageId, packageVersion };\n}\n\n/**\n * Decide whether a write-style operation (PUT / publish / rollback)\n * is allowed under the given lock state.\n *\n * Returns `null` on allow. Returns a structured refusal envelope when\n * the lock blocks the operation; the protocol layer turns that into a\n * `403 item_locked` HTTP error.\n */\nexport function evaluateLockForWrite(lock: MetadataLock): { code: 'item_locked'; reason: string } | null {\n if (lock === 'no-overlay' || lock === 'full') {\n return { code: 'item_locked', reason: `Write refused — _lock=${lock}` };\n }\n return null;\n}\n\n/** Counterpart of {@link evaluateLockForWrite} for delete operations. */\nexport function evaluateLockForDelete(lock: MetadataLock): { code: 'item_locked'; reason: string } | null {\n if (lock === 'no-delete' || lock === 'full') {\n return { code: 'item_locked', reason: `Delete refused — _lock=${lock}` };\n }\n return null;\n}\n\n/**\n * Derive the read-side flags Studio needs to render the UI. The\n * `editable` / `deletable` / `resettable` triple is what the\n * `GET /meta/:type/:name` response carries in Phase 1. See ADR-0010 §5.\n */\nexport function resolveLockState(item: unknown, artifactBacked: boolean): {\n lock: MetadataLock;\n lockReason: string | undefined;\n lockSource: MetadataLockSource | undefined;\n lockDocsUrl: string | undefined;\n provenance: MetadataProvenance | undefined;\n packageId: string | undefined;\n packageVersion: string | undefined;\n editable: boolean;\n deletable: boolean;\n resettable: boolean;\n} {\n const p = extractProtection(item);\n const editable = p.lock !== 'no-overlay' && p.lock !== 'full';\n const deletable = p.lock !== 'no-delete' && p.lock !== 'full';\n // Reset only makes sense when there is something to reset *to* —\n // i.e. the artifact is package-backed and an overlay can be peeled\n // off. Phase 3 will surface this through a dedicated endpoint; for\n // Phase 1 we publish the boolean so Studio can pre-disable the\n // button when artifactBacked is false.\n const resettable = artifactBacked;\n return { ...p, editable, deletable, resettable };\n}\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * # Package-level metadata protection (ADR-0010 §3.7 — Phase 4.3)\n *\n * Public, type-safe author surface for package authors to declare\n * how much of one of their metadata items the runtime (and the\n * tenant's Studio) is allowed to mutate. Internally this is what\n * gets translated into the `_lock` / `_lockReason` / `_lockDocsUrl`\n * private envelope (`kernel/metadata-protection.zod.ts`) that the\n * protocol layer enforces.\n *\n * Why two layers?\n * - **`protection`** is the *author DX* surface — typed, validated,\n * and discoverable via IntelliSense on every `*.app.ts` /\n * `*.object.ts` / `*.view.ts` etc.\n * - **`_lock` envelope** is the *runtime* surface — strips off the\n * protection block on load and stamps the private fields so the\n * persistence and overlay layers don't drag the author-facing\n * block through every `sys_metadata` overlay diff.\n *\n * Example:\n * ```ts\n * export const SETUP_APP: App = {\n * name: 'setup',\n * label: 'Setup',\n * protection: {\n * lock: 'full',\n * reason: 'Core admin UI shipped by @objectstack/platform-objects.',\n * docsUrl: 'https://docs.objectstack.ai/adr/0010-metadata-protection',\n * },\n * // ...\n * };\n * ```\n *\n * The loader (`metadata/plugin.ts` + `objectql/registry.ts`) calls\n * {@link applyProtection} to translate this block into the private\n * `_lock` envelope at registration time. Authors should NEVER set\n * the underscored fields directly — they are an implementation\n * detail.\n *\n * See also:\n * - ADR-0010 §3.7 — Future work → now implemented.\n * - `kernel/metadata-protection.zod.ts` — the runtime envelope.\n */\n\nimport { z } from 'zod';\nimport {\n MetadataLockSchema,\n type MetadataLock,\n} from '../kernel/metadata-protection.zod';\n\n/**\n * Public protection block authored by package developers. Optional on\n * every lockable metadata type — omit to leave the item fully\n * overlay-editable and overlay-deletable (default behaviour).\n *\n * The shape is intentionally *small*: only the fields that have a\n * meaningful UX impact in Studio are exposed. Internal bookkeeping\n * (provenance, packageId, packageVersion) is auto-populated by the\n * loader and must not be supplied here.\n */\nexport const ProtectionSchema = z.object({\n /**\n * Lock policy for this item. See {@link MetadataLockSchema} for\n * the full semantics table.\n *\n * | Value | Save | Delete |\n * |---------------|------|--------|\n * | `none` | ✅ | ✅ |\n * | `no-overlay` | ❌ | ✅ |\n * | `no-delete` | ✅ | ❌ |\n * | `full` | ❌ | ❌ |\n *\n * `no-overlay` is recommended for \"structural\" items that should\n * stay authoritative but allow side-by-side extension (e.g. core\n * objects whose fields can be extended via `objectExtensions`).\n * `full` is for items that have no safe extension point at all\n * (e.g. the platform Setup app whose nav tree is wired directly\n * into framework code).\n */\n lock: MetadataLockSchema.describe(\n 'Lock policy — none | no-overlay | no-delete | full.',\n ),\n\n /**\n * Short user-visible explanation surfaced in `403 item_locked`\n * errors and the Studio lock banner. Aim for one sentence; the\n * banner truncates long values.\n */\n reason: z.string().min(1).max(500).describe(\n 'User-visible reason shown when the lock blocks an action.',\n ),\n\n /**\n * Optional documentation link rendered next to the reason in\n * the Studio lock banner. Use it to point operators at the\n * package's protection policy or to a \"how to customise this\"\n * guide. Must be a fully-qualified URL.\n */\n docsUrl: z.string().url().optional().describe(\n 'Optional URL the Studio banner links to for more context.',\n ),\n}).strict();\n\nexport type Protection = z.infer<typeof ProtectionSchema>;\n\n// ─────────────────────────────────────────────────────────────────────\n// Loader-side translation\n// ─────────────────────────────────────────────────────────────────────\n\n/** Loader context handed in by the registration pipeline. */\nexport interface ApplyProtectionContext {\n /** Owning package id (e.g. `com.objectstack.platform-objects`). */\n packageId?: string;\n /** Owning package semver. */\n packageVersion?: string;\n /**\n * `'package'` for items introduced by a package loader (default).\n * Pass `'env-forced'` when the runtime is materialising an\n * emergency override.\n */\n provenance?: 'package' | 'env-forced';\n}\n\n/**\n * Translate the author-facing `protection` block on `item` into the\n * private `_lock` envelope and strip the public block so it never\n * leaks into the overlay row.\n *\n * Safe to call on any object: items without `protection` are returned\n * unchanged (other than the standard `_packageId` / `_packageVersion`\n * stamping that always runs when the context supplies those fields).\n *\n * Always **mutates** `item` and returns it for chaining.\n */\nexport function applyProtection<T extends Record<string, unknown>>(\n item: T,\n ctx: ApplyProtectionContext = {},\n): T {\n if (!item || typeof item !== 'object') return item;\n\n // Stamp provenance / package coords first so they apply even when\n // there is no `protection` block. The loader pipeline used to do\n // _packageId stamping itself; centralising it here keeps the two\n // load paths (artifact loader + registry.registerItem) consistent.\n if (ctx.packageId && (item as any)._packageId === undefined) {\n (item as any)._packageId = ctx.packageId;\n }\n if (ctx.packageVersion && (item as any)._packageVersion === undefined) {\n (item as any)._packageVersion = ctx.packageVersion;\n }\n // Only stamp provenance when we actually have package coords or an\n // author-facing protection block; otherwise leave the item alone so\n // that DB-only / test fixtures don't acquire an unexpected\n // `_provenance` field. The loader passes packageId for genuine\n // package items; bare `registerItem(type, item)` calls without a\n // package context still produce a clean item.\n const hasProtectionBlock =\n (item as any).protection\n && typeof (item as any).protection === 'object';\n if (\n (ctx.packageId || hasProtectionBlock)\n && (item as any)._provenance === undefined\n ) {\n (item as any)._provenance = ctx.provenance ?? 'package';\n }\n\n const block = (item as any).protection;\n if (!block || typeof block !== 'object') return item;\n\n // Author-facing block exists — translate to the private envelope.\n // We accept partial values (lock alone, reason alone) and let the\n // protocol layer fall back to defaults; full Zod validation runs\n // upstream when the schemas were composed with ProtectionSchema.\n const lock = block.lock as MetadataLock | undefined;\n const reason = typeof block.reason === 'string' ? block.reason : undefined;\n const docsUrl = typeof block.docsUrl === 'string' ? block.docsUrl : undefined;\n\n if (lock !== undefined) {\n (item as any)._lock = lock;\n }\n if (reason !== undefined) {\n (item as any)._lockReason = reason;\n }\n if (docsUrl !== undefined) {\n (item as any)._lockDocsUrl = docsUrl;\n }\n // Lock source is 'package' for anything that came through this\n // helper. Artifact-only items (no packageId) fall back to\n // 'artifact' to preserve the Phase-1 contract.\n if ((item as any)._lockSource === undefined) {\n (item as any)._lockSource = ctx.packageId ? 'package' : 'artifact';\n }\n\n // Strip the public block — it lives only on the author-side\n // module, never on the persisted overlay row.\n delete (item as any).protection;\n\n return item;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { SharingConfigSchema, EmbedConfigSchema } from './sharing.zod';\n\n/**\n * Base Navigation Item Schema\n * Shared properties for all navigation types.\n * \n * **NAMING CONVENTION:**\n * Navigation item IDs are used in URLs and configuration and must be lowercase snake_case.\n * \n * @example Good IDs\n * - 'menu_accounts'\n * - 'page_dashboard'\n * - 'nav_settings'\n * \n * @example Bad IDs (will be rejected)\n * - 'MenuAccounts' (PascalCase)\n * - 'Page Dashboard' (spaces)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { ProtectionSchema } from '../shared/protection.zod';\nconst BaseNavItemSchema = z.object({\n /** Unique identifier for the item */\n id: SnakeCaseIdentifierSchema.describe('Unique identifier for this navigation item (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Display proper label'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** Sort order within the same level (lower numbers appear first) */\n order: z.number().optional().describe('Sort order within the same level (lower = first)'),\n\n /** Badge text or count displayed on the navigation item (e.g. \"3\", \"New\") */\n badge: z.union([z.string(), z.number()]).optional().describe('Badge text or count displayed on the item'),\n\n /** \n * Visibility condition. \n * Formula expression returning boolean. \n * e.g. \"user.is_admin || user.department == 'sales'\"\n */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL). e.g. P`os.user.role == \"admin\"`'),\n\n /** Permissions required to see/access this navigation item */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this item'),\n\n /**\n * Capability gate — registered object name.\n *\n * When set, the frontend MUST hide (or render disabled) this navigation\n * entry if the named object is not registered in the runtime's\n * SchemaRegistry. Useful for cloud-only objects (e.g. `sys_app`,\n * `sys_package`, `sys_package_installation`) that don't exist in\n * single-environment runtimes — declaring the dependency here avoids\n * 404-when-clicked traps without hard-coding environment checks in the\n * UI.\n *\n * Independent of `visible` (CEL) and `requiredPermissions` (RBAC) —\n * this gates on runtime *capability*, not user authorization.\n */\n requiresObject: z.string().optional().describe('Hide/disable this entry unless the named object is registered in the runtime'),\n\n /**\n * Capability gate — registered service name.\n *\n * Same idea as `requiresObject` but keyed on a kernel service\n * (e.g. `'ai'`, `'tenant'`, `'realtime'`). Hide the entry when the\n * service isn't installed.\n */\n requiresService: z.string().optional().describe('Hide/disable this entry unless the named kernel service is registered'),\n});\n\n/**\n * 1. Object Navigation Item\n *\n * Navigates to an object's list view by default. When `recordId` is set,\n * navigates directly to that record's detail page instead — useful for\n * \"My Profile\", \"My Settings\", or any other always-one-row entry where\n * dropping the user on a list view first would be wrong UX.\n *\n * `recordId` supports a small set of template variables resolved at render\n * time by the shell (see Console's `AppSidebar` / `AppContent`):\n * - `{current_user_id}` — the signed-in user's id\n * - `{current_org_id}` — the active organization id\n * These mirror the variables already understood by the view-layer\n * filter resolver (see e.g. `sys_user.me` listView), so authors only\n * have to learn one vocabulary.\n *\n * @example List view (existing behaviour)\n * ```ts\n * { id: 'nav_users', type: 'object', label: 'Users',\n * objectName: 'sys_user', viewName: 'all_users' }\n * ```\n *\n * @example Direct-to-record (new)\n * ```ts\n * { id: 'nav_profile', type: 'object', label: 'My Profile',\n * objectName: 'sys_user', recordId: '{current_user_id}' }\n * ```\n */\nexport const ObjectNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('object'),\n objectName: z.string().describe('Target object name'),\n viewName: z.string().optional().describe('Default list view to open. Defaults to \"all\". Ignored when `recordId` is set.'),\n /**\n * When set, navigate straight to the detail page of this specific\n * record instead of the object's list view. Supports template\n * variables `{current_user_id}` and `{current_org_id}` resolved by\n * the shell at render time. Mutually exclusive with `viewName`\n * (viewName is ignored if both are set).\n */\n recordId: z.string().optional().describe(\n 'Navigate directly to this record id instead of the list view. Supports template vars: {current_user_id}, {current_org_id}.',\n ),\n /**\n * Open the record in view (default) or edit mode. Only meaningful\n * when `recordId` is set.\n */\n recordMode: z.enum(['view', 'edit']).optional().describe(\n 'Open the record in view (default) or edit mode. Only meaningful when `recordId` is set.',\n ),\n}));\n\n/**\n * 2. Dashboard Navigation Item\n * Navigates to a specific dashboard.\n */\nexport const DashboardNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('dashboard'),\n dashboardName: z.string().describe('Target dashboard name'),\n}));\n\n/**\n * 3. Page Navigation Item\n * Navigates to a custom UI page/component.\n */\nexport const PageNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('page'),\n pageName: z.string().describe('Target custom page component name'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the page context'),\n}));\n\n/**\n * 4. URL Navigation Item\n * Navigates to an external or absolute URL.\n */\nexport const UrlNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('url'),\n url: z.string().describe('Target external URL'),\n target: z.enum(['_self', '_blank']).default('_self').describe('Link target window'),\n}));\n\n/**\n * 5. Report Navigation Item\n * Navigates to a specific report.\n */\nexport const ReportNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('report'),\n reportName: z.string().describe('Target report name'),\n}));\n\n/**\n * 6. Action Navigation Item\n * Triggers an action (e.g. opening a flow, running a script, or launching a screen action).\n */\nexport const ActionNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('action'),\n actionDef: z.object({\n actionName: z.string().describe('Action machine name to execute'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the action'),\n }).describe('Action definition to execute when clicked'),\n}));\n\n/**\n * 7. Component Navigation Item\n * Navigates to a built-in front-end component registered in the runtime's\n * `ComponentRegistry` (e.g. `metadata:directory`, `metadata:resource`,\n * `setup:permission_matrix`). Unlike `page` (which resolves a user-defined\n * Page metadata record) and `url` (external link), `component` targets\n * a first-party UI shipped with the platform — typically admin/setup\n * surfaces that have no row in any data store.\n *\n * `params` are passed verbatim to the component as React props, so the\n * same component (e.g. `metadata:resource`) can be reused across many\n * nav entries with different `type` parameters.\n *\n * @example\n * ```ts\n * { id: 'nav_objects', type: 'component', label: 'Objects',\n * componentRef: 'metadata:resource', params: { type: 'object' } }\n * ```\n */\nexport const ComponentNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('component'),\n componentRef: z.string().describe('Component registry key (e.g. \"metadata:directory\")'),\n params: z.record(z.string(), z.unknown()).optional().describe('Props passed to the component'),\n}));\n\n/**\n * 8. Group Navigation Item\n * A container for child navigation items (Sub-menu).\n * Does not perform navigation itself.\n */\nexport const GroupNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('group'),\n expanded: z.boolean().default(false).describe('Default expansion state in sidebar'),\n // children property is added in the recursive definition below\n}));\n\n/**\n * Recursive Union of all navigation item types.\n * Allows constructing an unlimited-depth navigation tree.\n */\nexport const NavigationItemSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n ObjectNavItemSchema.extend({\n children: z.array(NavigationItemSchema).optional().describe('Child navigation items (e.g. specific views)'),\n }),\n DashboardNavItemSchema,\n PageNavItemSchema,\n UrlNavItemSchema,\n ReportNavItemSchema,\n ActionNavItemSchema,\n ComponentNavItemSchema,\n GroupNavItemSchema.extend({\n children: z.array(NavigationItemSchema).describe('Child navigation items'),\n })\n ])\n);\n\n/**\n * Navigation Contribution (ADR-0029 D7)\n *\n * Lets a package inject navigation items into an app it does **not** own —\n * the UI-layer analog of object `objectExtensions`. A capability plugin\n * contributes its menu entries into a shared admin app (e.g. `setup`) so the\n * app can be a thin \"shell + group anchors\" while each plugin ships the menu\n * for the objects it owns.\n *\n * The runtime merges all contributions into the owning app's `navigation`\n * tree by **target group id + priority** (lower priority applied first,\n * mirroring object extender ordering). When `group` is omitted the items are\n * appended at the app's top level. Contributed items keep the normal nav\n * gating fields (`requiresObject` / `requiredPermissions` / `visible`), so an\n * uninstalled capability simply contributes nothing and its slot stays empty.\n *\n * @example\n * {\n * app: 'setup',\n * group: 'group_integrations',\n * priority: 100,\n * items: [\n * { id: 'nav_webhooks', type: 'object', label: 'Webhooks', objectName: 'sys_webhook', requiresObject: 'sys_webhook' },\n * ],\n * }\n */\nexport const NavigationContributionSchema = lazySchema(() => z.object({\n app: SnakeCaseIdentifierSchema.describe('Target app name to contribute navigation into (e.g. \"setup\")'),\n group: SnakeCaseIdentifierSchema.optional().describe('Target group nav-item id to append into (e.g. \"group_integrations\"); omit to append at the app top level'),\n priority: z.number().int().min(0).default(200).describe('Merge priority within the target group — lower applied first (matches object extender priority)'),\n items: z.array(NavigationItemSchema).describe('Navigation items contributed into the target app/group'),\n}).describe('A navigation contribution: a package injecting nav items into an app it does not own (ADR-0029 D7)'));\nexport type NavigationContribution = z.infer<typeof NavigationContributionSchema>;\n\n/**\n * App Branding Configuration\n * Allows configuring the look and feel of the specific app.\n */\nexport const AppBrandingSchema = lazySchema(() => z.object({\n primaryColor: z.string().optional().describe('Primary theme color hex code'),\n logo: z.string().optional().describe('Custom logo URL for this app'),\n favicon: z.string().optional().describe('Custom favicon URL for this app'),\n}));\n\n/**\n * Navigation Area Schema\n * \n * A logical grouping (zone/section) of navigation items, similar to Salesforce \"App Areas\"\n * or Dynamics 365 \"Site Map Areas\". Each area represents a business domain (e.g. Sales, Service, Settings)\n * and contains its own independent navigation tree.\n * \n * Areas allow large applications to partition navigation by business function while\n * keeping a single AppSchema definition. The runtime may render areas as top-level tabs,\n * sidebar sections, or a switchable navigation context.\n * \n * @example\n * ```ts\n * const salesArea: NavigationArea = {\n * id: 'area_sales',\n * label: 'Sales',\n * icon: 'briefcase',\n * order: 1,\n * navigation: [\n * { id: 'nav_leads', type: 'object', label: 'Leads', objectName: 'lead' },\n * { id: 'nav_opportunities', type: 'object', label: 'Opportunities', objectName: 'opportunity' },\n * ],\n * };\n * ```\n */\nexport const NavigationAreaSchema = lazySchema(() => z.object({\n /** Unique area identifier */\n id: SnakeCaseIdentifierSchema.describe('Unique area identifier (lowercase snake_case)'),\n\n /** Display label */\n label: I18nLabelSchema.describe('Area display label'),\n\n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Area icon name'),\n\n /** Sort order among areas (lower = first) */\n order: z.number().optional().describe('Sort order among areas (lower = first)'),\n\n /** Area description */\n description: I18nLabelSchema.optional().describe('Area description'),\n\n /** \n * Visibility condition.\n * Formula expression returning boolean.\n */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL) for this area.'),\n\n /** Permissions required to access this area */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this area'),\n\n /** Navigation items within this area */\n navigation: z.array(NavigationItemSchema).describe('Navigation items within this area'),\n}));\n\n/**\n * App Context Selector Schema\n *\n * Declares a sidebar-level \"scope\" dropdown (e.g. a Package filter, an\n * Environment switcher, a Locale picker) whose **current value is exposed\n * as a navigation template variable** named after `id`.\n *\n * This is the metadata-driven way to add a control at the top of the\n * navigation that transparently scopes every child navigation item —\n * without wiring the value into each item by hand. The shell:\n * 1. Renders the dropdown (options pulled from `optionsSource.endpoint`).\n * 2. Holds the selected value (persisted per `persist`).\n * 3. Substitutes `{<id>}` into any nav item's `params` / `recordId`\n * exactly like the built-in `{current_user_id}` / `{current_org_id}`\n * variables (see `ObjectNavItem.recordId`).\n *\n * @example Package filter for the Studio workbench\n * ```ts\n * contextSelectors: [{\n * id: 'active_package',\n * label: 'Package',\n * icon: 'package',\n * optionsSource: {\n * endpoint: '/api/v1/packages',\n * valueKey: 'manifest.id',\n * labelKey: 'manifest.name',\n * // Only offer third-party / custom (project-scoped) packages;\n * // hide the platform's own system/cloud kernel packages.\n * filter: [{ key: 'manifest.scope', op: 'nin', value: ['system', 'cloud'] }],\n * },\n * }]\n * // …then in nav items:\n * { id: 'nav_objects', type: 'component', componentRef: 'metadata:resource',\n * params: { type: 'object', package: '{active_package}' } }\n * ```\n */\nexport const AppContextSelectorSchema = lazySchema(() => z.object({\n /**\n * Identifier — also the template-variable name the selected value is\n * exposed under. Reference it in nav items as `{<id>}`\n * (e.g. `id: 'active_package'` → `{active_package}`).\n */\n id: SnakeCaseIdentifierSchema.describe('Selector id; selected value is exposed as the nav template var {<id>}'),\n\n /** Display label for the dropdown. */\n label: I18nLabelSchema.describe('Dropdown label'),\n\n /** Icon name (Lucide). */\n icon: z.string().optional().describe('Icon name'),\n\n /**\n * Where the dropdown options come from. The shell fetches `endpoint`\n * and maps each row to `{ value: row[valueKey], label: row[labelKey] }`.\n * Re-uses existing REST surfaces (e.g. `/api/v1/packages`) so no\n * bespoke option API is required.\n */\n optionsSource: z.object({\n endpoint: z.string().describe('REST endpoint returning the option rows (e.g. /api/v1/packages)'),\n valueKey: z.string().default('id').describe('Row property used as the option value (dotted path allowed, e.g. \"manifest.id\")'),\n labelKey: z.string().default('name').describe('Row property used as the option label (dotted path allowed, e.g. \"manifest.name\")'),\n /**\n * Optional predicates applied to each fetched row before it becomes\n * an option. All predicates must pass (logical AND). Keys are dotted\n * paths so nested fields (e.g. `manifest.scope`) can be reached.\n *\n * This keeps shared REST surfaces (e.g. `/api/v1/packages`) generic\n * while letting an individual selector narrow the list. For example,\n * the Studio package scope hides platform/kernel packages so only\n * `project`-scoped (third-party / custom) packages are selectable —\n * the scope dropdown is a developer affordance, not a place to\n * surface the platform's own internal `system`/`cloud` packages:\n *\n * ```ts\n * filter: [{ key: 'manifest.scope', op: 'nin', value: ['system', 'cloud'] }]\n * ```\n */\n filter: z.array(z.object({\n key: z.string().describe('Dotted path on each row to compare (e.g. \"manifest.scope\")'),\n op: z.enum(['eq', 'ne', 'in', 'nin']).default('eq')\n .describe('Comparison operator: eq | ne | in | nin'),\n value: z.union([z.string(), z.array(z.string())])\n .describe('Comparison value (string for eq/ne, string[] for in/nin)'),\n })).optional().describe('Predicates (AND) each option row must satisfy'),\n }).describe('Option data source'),\n\n /** Whether to prepend an \"All\" option that clears the scope. */\n includeAll: z.boolean().default(true).describe('Prepend an \"All\" option that clears the scope'),\n\n /** Value emitted when \"All\" is selected (empty string = no filter). */\n allValue: z.string().default('').describe('Template value when \"All\" is selected (empty = no filter)'),\n\n /** How the selection is persisted across navigation. */\n persist: z.enum(['query', 'session', 'none']).default('query')\n .describe('Persist selection via URL query, sessionStorage, or not at all'),\n\n /** Where the dropdown is rendered. */\n placement: z.enum(['sidebar_header', 'topbar']).default('sidebar_header')\n .describe('Render location in the app chrome'),\n}));\n\nexport type AppContextSelector = z.infer<typeof AppContextSelectorSchema>;\n\n/**\n * Schema for Applications (Apps).\n * A logical container for business functionality (e.g., \"Sales CRM\", \"HR Portal\").\n * \n * **NAMING CONVENTION:**\n * App names are used in URLs and routing and must be lowercase snake_case.\n * Prefix with 'app_' is recommended for clarity.\n * \n * @example Good app names\n * - 'app_crm'\n * - 'app_finance'\n * - 'app_portal'\n * - 'sales_app'\n * \n * @example Bad app names (will be rejected)\n * - 'CRM' (uppercase)\n * - 'FinanceApp' (mixed case)\n * - 'Sales App' (spaces)\n */\n/**\n * App Configuration Schema\n * Defines a business application container, including its navigation, branding, and permissions.\n * \n * The App is the top-level navigation shell. The `navigation[]` field holds the complete\n * sidebar tree with unlimited nesting depth via `type: 'group'` items. Pages are referenced\n * by name via `type: 'page'` items and defined independently.\n * \n * @example CRM App with nested navigation tree\n * {\n * name: \"crm\",\n * label: \"Sales CRM\",\n * icon: \"briefcase\",\n * navigation: [\n * { type: \"group\", id: \"grp_sales\", label: \"Sales Cloud\", expanded: true, children: [\n * { type: \"page\", id: \"nav_pipeline\", label: \"Pipeline\", pageName: \"page_pipeline\" },\n * { type: \"page\", id: \"nav_accounts\", label: \"Accounts\", pageName: \"page_accounts\" },\n * ]},\n * { type: \"page\", id: \"nav_settings\", label: \"Settings\", pageName: \"admin_settings\" },\n * ]\n * }\n */\nexport const AppSchema = lazySchema(() => z.object({\n /** Machine name (id) */\n name: SnakeCaseIdentifierSchema.describe('App unique machine name (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('App display label'),\n\n /** App version */\n version: z.string().optional().describe('App version'),\n \n /** Description */\n description: I18nLabelSchema.optional().describe('App description'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('App icon used in the App Launcher'),\n \n /** Branding/Theming Configuration */\n branding: AppBrandingSchema.optional().describe('App-specific branding'),\n \n /** Application status */\n active: z.boolean().optional().default(true).describe('Whether the app is enabled'),\n\n /** Is this the default app for new users? */\n isDefault: z.boolean().optional().default(false).describe('Is default app'),\n\n /**\n * Hide this app from the top-level App Switcher.\n *\n * Hidden apps stay fully routable and permission-checked — they just\n * don't appear in the apps dropdown. The shell is expected to surface\n * them through the avatar / user dropdown instead, so this is the\n * right knob for personal-settings-style apps (\"Account\") that would\n * feel out of place next to business apps (CRM, HR, Setup).\n *\n * Mirrors GitHub Settings / Google account chip / Salesforce\n * \"Personal Settings\" — visible to every user, but reached from the\n * avatar rather than the app launcher.\n */\n hidden: z.boolean().optional()\n .describe('Hide from the App Switcher; the shell surfaces hidden apps via the avatar menu instead'),\n \n /** \n * Full Navigation Tree — supports unlimited nesting depth.\n * Pages are referenced by name via `type: 'page'` items.\n * Groups can contain other groups for arbitrary sidebar depth.\n * \n * For simple apps, use `navigation` directly.\n * For enterprise apps with multiple business domains, use `areas` instead.\n */\n navigation: z.array(NavigationItemSchema).optional()\n .describe('Full navigation tree for the app sidebar'),\n\n /**\n * Navigation Areas — partitions navigation by business domain.\n * Each area defines an independent navigation tree (e.g. Sales, Service, Settings).\n * When areas are defined, they take precedence over the top-level `navigation` array.\n * \n * @example\n * ```ts\n * areas: [\n * { id: 'area_sales', label: 'Sales', icon: 'briefcase', order: 1, navigation: [...] },\n * { id: 'area_service', label: 'Service', icon: 'headset', order: 2, navigation: [...] },\n * ]\n * ```\n */\n areas: z.array(NavigationAreaSchema).optional()\n .describe('Navigation areas for partitioning navigation by business domain'),\n\n /**\n * App-level context selectors — sidebar/topbar \"scope\" dropdowns whose\n * selected value is injected into navigation items as a template\n * variable (`{<id>}`). Use to add a Package / Environment / Locale\n * filter that transparently scopes every child nav item. See\n * {@link AppContextSelectorSchema}.\n */\n contextSelectors: z.array(AppContextSelectorSchema).optional()\n .describe('App-level scope dropdowns whose value is injected into nav items as {<id>} template vars'),\n \n /** \n * App-level Home Page Override\n * ID of the navigation item to act as the landing page.\n * If not set, usually defaults to the first navigation item.\n */\n homePageId: z.string().optional().describe('ID of the navigation item to serve as landing page'),\n\n /** \n * Access Control\n * List of permissions required to access this app.\n * Modern replacement for role/profile based assignment.\n * Example: [\"app.access.crm\"]\n */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this app'),\n \n /** \n * Package Components (For config file convenience)\n * In a real monorepo these might be auto-discovered, but here we allow explicit registration.\n */\n objects: z.array(z.unknown()).optional().describe('Objects belonging to this app'),\n apis: z.array(z.unknown()).optional().describe('Custom APIs belonging to this app'),\n\n /** Sharing configuration for public access */\n sharing: SharingConfigSchema.optional().describe('Public sharing configuration'),\n\n /** Embed configuration for iframe embedding */\n embed: EmbedConfigSchema.optional().describe('Iframe embedding configuration'),\n\n /** Mobile navigation mode */\n mobileNavigation: z.object({\n mode: z.enum(['drawer', 'bottom_nav', 'hamburger']).default('drawer')\n .describe('Mobile navigation mode: drawer sidebar, bottom navigation bar, or hamburger menu'),\n bottomNavItems: z.array(z.string()).optional()\n .describe('Navigation item IDs to show in bottom nav (max 5)'),\n }).optional().describe('Mobile-specific navigation configuration'),\n\n /**\n * Default AI Copilot for this app.\n *\n * When set, the ambient chat endpoint (`POST /api/v1/ai/chat` with\n * `context.appName`) auto-resolves to this agent without the user\n * having to pick from a list. The agent's `skills[]` are loaded\n * from the SkillRegistry and exposed to the LLM.\n *\n * Mirrors the Salesforce Agentforce / ServiceNow Now Assist pattern\n * where each application surface has one ambient copilot.\n *\n * @example\n * ```ts\n * defineApp({ name: 'crm', defaultAgent: 'sales_copilot', ... })\n * ```\n */\n defaultAgent: SnakeCaseIdentifierSchema.optional()\n .describe('Name of the default AI agent for this app (used by the ambient chat endpoint)'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the application'),\n\n /**\n * ADR-0010 §3.7 — Package-level protection envelope. Package\n * authors declare lock policy here; the loader translates it\n * into the private `_lock` envelope at registration time and\n * strips this block before persistence. See\n * `shared/protection.zod.ts`.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this app.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n}));\n\n/**\n * App Factory Helper\n */\nexport const App = {\n create: (config: z.input<typeof AppSchema>): App => AppSchema.parse(config),\n} as const;\n\n/**\n * Type-safe factory for creating application definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example CRM App with nested navigation tree\n * ```ts\n * const crmApp = defineApp({\n * name: 'crm',\n * label: 'Sales CRM',\n * navigation: [\n * { id: 'grp_sales', type: 'group', label: 'Sales Cloud', expanded: true, children: [\n * { id: 'nav_pipeline', type: 'page', label: 'Pipeline', pageName: 'page_pipeline' },\n * { id: 'nav_accounts', type: 'page', label: 'Accounts', pageName: 'page_accounts' },\n * ]},\n * { id: 'nav_settings', type: 'page', label: 'Settings', pageName: 'admin_settings' },\n * ],\n * });\n * ```\n */\nexport function defineApp(config: z.input<typeof AppSchema>): App {\n return AppSchema.parse(config);\n}\n\n// Main Types\nexport type App = z.infer<typeof AppSchema>;\nexport type AppInput = z.input<typeof AppSchema>;\nexport type AppBranding = z.infer<typeof AppBrandingSchema>;\nexport type NavigationItem = z.infer<typeof NavigationItemSchema>;\nexport type NavigationArea = z.infer<typeof NavigationAreaSchema>;\n\n// Discriminated Item Types (Helper exports)\nexport type ObjectNavItem = z.infer<typeof ObjectNavItemSchema>;\nexport type DashboardNavItem = z.infer<typeof DashboardNavItemSchema>;\nexport type PageNavItem = z.infer<typeof PageNavItemSchema>;\nexport type UrlNavItem = z.infer<typeof UrlNavItemSchema>;\nexport type ReportNavItem = z.infer<typeof ReportNavItemSchema>;\nexport type ActionNavItem = z.infer<typeof ActionNavItemSchema>;\nexport type ComponentNavItem = z.infer<typeof ComponentNavItemSchema>;\nexport type GroupNavItem = z.infer<typeof GroupNavItemSchema> & { children: NavigationItem[] };\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Field-level encryption protocol\n * GDPR/HIPAA/PCI-DSS compliant\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const EncryptionAlgorithmSchema = lazySchema(() => z.enum([\n 'aes-256-gcm',\n 'aes-256-cbc',\n 'chacha20-poly1305',\n]).describe('Supported encryption algorithm'));\n\nexport type EncryptionAlgorithm = z.infer<typeof EncryptionAlgorithmSchema>;\n\nexport const KeyManagementProviderSchema = lazySchema(() => z.enum([\n 'local',\n 'aws-kms',\n 'azure-key-vault',\n 'gcp-kms',\n 'hashicorp-vault',\n]).describe('Key management service provider'));\n\nexport type KeyManagementProvider = z.infer<typeof KeyManagementProviderSchema>;\n\nexport const KeyRotationPolicySchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable automatic key rotation'),\n frequencyDays: z.number().min(1).default(90).describe('Rotation frequency in days'),\n retainOldVersions: z.number().default(3).describe('Number of old key versions to retain'),\n autoRotate: z.boolean().default(true).describe('Automatically rotate without manual approval'),\n}).describe('Policy for automatic encryption key rotation'));\n\nexport type KeyRotationPolicy = z.infer<typeof KeyRotationPolicySchema>;\nexport type KeyRotationPolicyInput = z.input<typeof KeyRotationPolicySchema>;\n\nexport const EncryptionConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable field-level encryption'),\n algorithm: EncryptionAlgorithmSchema.default('aes-256-gcm').describe('Encryption algorithm'),\n keyManagement: z.object({\n provider: KeyManagementProviderSchema.describe('Key management service provider'),\n keyId: z.string().optional().describe('Key identifier in the provider'),\n rotationPolicy: KeyRotationPolicySchema.optional().describe('Key rotation policy'),\n }).describe('Key management configuration'),\n scope: z.enum(['field', 'record', 'table', 'database']).describe('Encryption scope level'),\n deterministicEncryption: z.boolean().default(false).describe('Allows equality queries on encrypted data'),\n searchableEncryption: z.boolean().default(false).describe('Allows search on encrypted data'),\n}).describe('Field-level encryption configuration'));\n\nexport type EncryptionConfig = z.infer<typeof EncryptionConfigSchema>;\nexport type EncryptionConfigInput = z.input<typeof EncryptionConfigSchema>;\n\nexport const FieldEncryptionSchema = lazySchema(() => z.object({\n fieldName: z.string().describe('Name of the field to encrypt'),\n encryptionConfig: EncryptionConfigSchema.describe('Encryption settings for this field'),\n indexable: z.boolean().default(false).describe('Allow indexing on encrypted field'),\n}).describe('Per-field encryption assignment'));\n\nexport type FieldEncryption = z.infer<typeof FieldEncryptionSchema>;\nexport type FieldEncryptionInput = z.input<typeof FieldEncryptionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Data masking protocol for PII protection\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const MaskingStrategySchema = lazySchema(() => z.enum([\n 'redact', // Complete redaction: ****\n 'partial', // Partial masking: 138****5678\n 'hash', // Hash value: sha256(value)\n 'tokenize', // Tokenization: token-12345\n 'randomize', // Randomize: generate random value\n 'nullify', // Null value: null\n 'substitute', // Substitute with dummy data\n]).describe('Data masking strategy for PII protection'));\n\nexport type MaskingStrategy = z.infer<typeof MaskingStrategySchema>;\n\nexport const MaskingRuleSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to apply masking to'),\n strategy: MaskingStrategySchema.describe('Masking strategy to use'),\n pattern: z.string().optional().describe('Regex pattern for partial masking'),\n preserveFormat: z.boolean().default(true).describe('Keep the original data format after masking'),\n preserveLength: z.boolean().default(true).describe('Keep the original data length after masking'),\n roles: z.array(z.string()).optional().describe('Roles that see masked data'),\n exemptRoles: z.array(z.string()).optional().describe('Roles that see unmasked data'),\n}).describe('Masking rule for a single field'));\n\nexport type MaskingRule = z.infer<typeof MaskingRuleSchema>;\nexport type MaskingRuleInput = z.input<typeof MaskingRuleSchema>;\n\nexport const MaskingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable data masking'),\n rules: z.array(MaskingRuleSchema).describe('List of field-level masking rules'),\n auditUnmasking: z.boolean().default(true).describe('Log when masked data is accessed unmasked'),\n}).describe('Top-level data masking configuration for PII protection'));\n\nexport type MaskingConfig = z.infer<typeof MaskingConfigSchema>;\nexport type MaskingConfigInput = z.input<typeof MaskingConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SystemIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { EncryptionConfigSchema } from '../system/encryption.zod';\nimport { MaskingRuleSchema } from '../system/masking.zod';\n\n/**\n * Field Type Enum\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldType = z.enum([\n // Core Text\n 'text', 'textarea', 'email', 'url', 'phone', 'password',\n // Secret — reversible, encrypted-at-rest value (DB password, API key, token).\n // UNLIKE 'password' (a one-way hash owned by the auth subsystem), a 'secret'\n // is round-tripped: the engine encrypts it on write via the registered\n // ICryptoProvider, stores the ciphertext handle in `sys_secret`, persists only\n // an opaque ref on the row, and masks it on read. Fail-closed: no provider ⇒\n // writes throw rather than persist cleartext. See ADR (secret field channel).\n 'secret',\n // Rich Content\n 'markdown', 'html', 'richtext',\n // Numbers\n 'number', 'currency', 'percent', \n // Date & Time\n 'date', 'datetime', 'time',\n // Logic\n 'boolean', 'toggle', // Toggle is a distinct UI from checkbox\n // Selection\n 'select', // Single select dropdown\n 'multiselect', // Multi select (often tags)\n 'radio', // Radio group\n 'checkboxes', // Checkbox group\n // Relational\n 'lookup', 'master_detail', // Dynamic reference\n 'tree', // Hierarchical reference\n // Media\n 'image', 'file', 'avatar', 'video', 'audio',\n // Calculated / System\n 'formula', 'summary', 'autonumber',\n // Embedded structured values (stored as JSON on the parent row — no separate table / FK)\n 'composite', // Single embedded sub-object with declared sub-fields (≈ Strapi component / ACF group)\n 'repeater', // Repeating embedded sub-object array with declared sub-fields (≈ Strapi repeatable component / ACF repeater)\n 'record', // Name-keyed map of embedded sub-objects (Record<string, SubObject>). Insertion order = display order. Used for collections where each item has a stable machine name (e.g. object.fields). See ADR-0007.\n // Enhanced Types\n 'location', // GPS coordinates\n 'address', // Structured address\n 'code', // Code editor (JSON/SQL/JS)\n 'json', // Structured JSON data (untyped escape hatch)\n 'color', // Color picker\n 'rating', // Star rating\n 'slider', // Numeric slider\n 'signature', // Digital signature\n 'qrcode', // QR code / Barcode\n 'progress', // Progress bar\n 'tags', // Simple tag list\n // AI/ML Types\n 'vector', // Vector embeddings for AI/ML (semantic search, RAG)\n]);\n\nexport type FieldType = z.infer<typeof FieldType>;\n\n/**\n * Select Option Schema\n * \n * Defines option values for select/picklist fields.\n * \n * **CRITICAL RULE**: The `value` field is a machine identifier that gets stored in the database.\n * It MUST be lowercase to avoid case-sensitivity issues in queries and comparisons.\n * \n * @example Good\n * { label: 'New', value: 'new' }\n * { label: 'In Progress', value: 'in_progress' }\n * { label: 'Closed Won', value: 'closed_won' }\n * \n * @example Bad (will be rejected)\n * { label: 'New', value: 'New' } // uppercase\n * { label: 'In Progress', value: 'In Progress' } // spaces and uppercase\n * { label: 'Closed Won', value: 'Closed_Won' } // mixed case\n */\nexport const SelectOptionSchema = lazySchema(() => z.object({\n label: z.string().describe('Display label (human-readable, any case allowed)'),\n value: SystemIdentifierSchema.describe('Stored value (lowercase machine identifier)'),\n color: z.string().optional().describe('Color code for badges/charts'),\n default: z.boolean().optional().describe('Is default option'),\n}));\n\n/**\n * Location Coordinates Schema\n * GPS coordinates for location field type\n */\nexport const LocationCoordinatesSchema = lazySchema(() => z.object({\n latitude: z.number().min(-90).max(90).describe('Latitude coordinate'),\n longitude: z.number().min(-180).max(180).describe('Longitude coordinate'),\n altitude: z.number().optional().describe('Altitude in meters'),\n accuracy: z.number().optional().describe('Accuracy in meters'),\n}));\n\n/**\n * Currency Configuration Schema\n * Configuration for currency field type supporting multi-currency\n * \n * Note: Currency codes are validated by length only (3 characters) to support:\n * - Standard ISO 4217 codes (USD, EUR, CNY, etc.)\n * - Cryptocurrency codes (BTC, ETH, etc.)\n * - Custom business-specific codes\n * Stricter validation can be implemented at the application layer based on business requirements.\n */\nexport const CurrencyConfigSchema = lazySchema(() => z.object({\n precision: z.number().int().min(0).max(10).default(2).describe('Decimal precision (default: 2)'),\n currencyMode: z.enum(['dynamic', 'fixed']).default('dynamic').describe('Currency mode: dynamic (user selectable) or fixed (single currency)'),\n defaultCurrency: z.string().length(3).default('CNY').describe('Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)'),\n}));\n\n/**\n * Currency Value Schema\n * Runtime value structure for currency fields\n * \n * Note: Currency codes are validated by length only (3 characters) to support flexibility.\n * See CurrencyConfigSchema for details on currency code validation strategy.\n */\nexport const CurrencyValueSchema = lazySchema(() => z.object({\n value: z.number().describe('Monetary amount'),\n currency: z.string().length(3).describe('Currency code (ISO 4217)'),\n}));\n\n/**\n * Address Schema\n * Structured address for address field type\n */\nexport const AddressSchema = lazySchema(() => z.object({\n street: z.string().optional().describe('Street address'),\n city: z.string().optional().describe('City name'),\n state: z.string().optional().describe('State/Province'),\n postalCode: z.string().optional().describe('Postal/ZIP code'),\n country: z.string().optional().describe('Country name or code'),\n countryCode: z.string().optional().describe('ISO country code (e.g., US, GB)'),\n formatted: z.string().optional().describe('Formatted address string'),\n}));\n\n/**\n * Vector Configuration Schema\n * Configuration for vector field type supporting AI/ML embeddings\n * \n * Vector fields store numerical embeddings for semantic search, similarity matching,\n * and Retrieval-Augmented Generation (RAG) workflows.\n * \n * @example\n * // Text embeddings for semantic search\n * {\n * dimensions: 1536, // OpenAI text-embedding-ada-002\n * distanceMetric: 'cosine',\n * indexed: true\n * }\n * \n * @example\n * // Image embeddings with normalization\n * {\n * dimensions: 512, // ResNet-50\n * distanceMetric: 'euclidean',\n * normalized: true,\n * indexed: true\n * }\n */\nexport const VectorConfigSchema = lazySchema(() => z.object({\n dimensions: z.number().int().min(1).max(10000).describe('Vector dimensionality (e.g., 1536 for OpenAI embeddings)'),\n distanceMetric: z.enum(['cosine', 'euclidean', 'dotProduct', 'manhattan']).default('cosine').describe('Distance/similarity metric for vector search'),\n normalized: z.boolean().default(false).describe('Whether vectors are normalized (unit length)'),\n indexed: z.boolean().default(true).describe('Whether to create a vector index for fast similarity search'),\n indexType: z.enum(['hnsw', 'ivfflat', 'flat']).optional().describe('Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)'),\n}));\n\n/**\n * File Attachment Configuration Schema\n * Configuration for file and attachment field types\n * \n * Provides comprehensive file upload capabilities with:\n * - File type restrictions (allowed/blocked)\n * - File size limits (min/max)\n * - Virus scanning integration\n * - Storage provider integration\n * - Image-specific features (dimensions, thumbnails)\n * \n * @example Basic file upload with size limit\n * {\n * maxSize: 10485760, // 10MB\n * allowedTypes: ['.pdf', '.docx', '.xlsx'],\n * virusScan: true\n * }\n * \n * @example Image upload with validation\n * {\n * maxSize: 5242880, // 5MB\n * allowedTypes: ['.jpg', '.jpeg', '.png', '.webp'],\n * imageValidation: {\n * maxWidth: 4096,\n * maxHeight: 4096,\n * generateThumbnails: true\n * }\n * }\n */\nexport const FileAttachmentConfigSchema = lazySchema(() => z.object({\n /** File Size Limits */\n minSize: z.number().min(0).optional().describe('Minimum file size in bytes'),\n maxSize: z.number().min(1).optional().describe('Maximum file size in bytes (e.g., 10485760 = 10MB)'),\n \n /** File Type Restrictions */\n allowedTypes: z.array(z.string()).optional().describe('Allowed file extensions (e.g., [\".pdf\", \".docx\", \".jpg\"])'),\n blockedTypes: z.array(z.string()).optional().describe('Blocked file extensions (e.g., [\".exe\", \".bat\", \".sh\"])'),\n allowedMimeTypes: z.array(z.string()).optional().describe('Allowed MIME types (e.g., [\"image/jpeg\", \"application/pdf\"])'),\n blockedMimeTypes: z.array(z.string()).optional().describe('Blocked MIME types'),\n \n /** Virus Scanning */\n virusScan: z.boolean().default(false).describe('Enable virus scanning for uploaded files'),\n virusScanProvider: z.enum(['clamav', 'virustotal', 'metadefender', 'custom']).optional().describe('Virus scanning service provider'),\n virusScanOnUpload: z.boolean().default(true).describe('Scan files immediately on upload'),\n quarantineOnThreat: z.boolean().default(true).describe('Quarantine files if threat detected'),\n \n /** Storage Configuration */\n storageProvider: z.string().optional().describe('Object storage provider name (references ObjectStorageConfig)'),\n storageBucket: z.string().optional().describe('Target bucket name'),\n storagePrefix: z.string().optional().describe('Storage path prefix (e.g., \"uploads/documents/\")'),\n \n /** Image-Specific Validation */\n imageValidation: z.object({\n minWidth: z.number().min(1).optional().describe('Minimum image width in pixels'),\n maxWidth: z.number().min(1).optional().describe('Maximum image width in pixels'),\n minHeight: z.number().min(1).optional().describe('Minimum image height in pixels'),\n maxHeight: z.number().min(1).optional().describe('Maximum image height in pixels'),\n aspectRatio: z.string().optional().describe('Required aspect ratio (e.g., \"16:9\", \"1:1\")'),\n generateThumbnails: z.boolean().default(false).describe('Auto-generate thumbnails'),\n thumbnailSizes: z.array(z.object({\n name: z.string().describe('Thumbnail variant name (e.g., \"small\", \"medium\", \"large\")'),\n width: z.number().min(1).describe('Thumbnail width in pixels'),\n height: z.number().min(1).describe('Thumbnail height in pixels'),\n crop: z.boolean().default(false).describe('Crop to exact dimensions'),\n })).optional().describe('Thumbnail size configurations'),\n preserveMetadata: z.boolean().default(false).describe('Preserve EXIF metadata'),\n autoRotate: z.boolean().default(true).describe('Auto-rotate based on EXIF orientation'),\n }).optional().describe('Image-specific validation rules'),\n \n /** Upload Behavior */\n allowMultiple: z.boolean().default(false).describe('Allow multiple file uploads (overrides field.multiple)'),\n allowReplace: z.boolean().default(true).describe('Allow replacing existing files'),\n allowDelete: z.boolean().default(true).describe('Allow deleting uploaded files'),\n requireUpload: z.boolean().default(false).describe('Require at least one file when field is required'),\n \n /** Metadata Extraction */\n extractMetadata: z.boolean().default(true).describe('Extract file metadata (name, size, type, etc.)'),\n extractText: z.boolean().default(false).describe('Extract text content from documents (OCR/parsing)'),\n \n /** Versioning */\n versioningEnabled: z.boolean().default(false).describe('Keep previous versions of replaced files'),\n maxVersions: z.number().min(1).optional().describe('Maximum number of versions to retain'),\n \n /** Access Control */\n publicRead: z.boolean().default(false).describe('Allow public read access to uploaded files'),\n presignedUrlExpiry: z.number().min(60).max(604800).default(3600).describe('Presigned URL expiration in seconds (default: 1 hour)'),\n}).refine((data) => {\n // Validate minSize is less than or equal to maxSize\n if (data.minSize !== undefined && data.maxSize !== undefined && data.minSize > data.maxSize) {\n return false;\n }\n return true;\n}, {\n message: 'minSize must be less than or equal to maxSize',\n}).refine((data) => {\n // Validate virusScanProvider requires virusScan to be enabled\n if (data.virusScanProvider !== undefined && data.virusScan !== true) {\n return false;\n }\n return true;\n}, {\n message: 'virusScanProvider requires virusScan to be enabled',\n}));\n\n/**\n * Data Quality Rules Schema\n * Defines data quality validation and monitoring for fields\n * \n * @example Unique SSN field with completeness requirement\n * {\n * uniqueness: true,\n * completeness: 0.95, // 95% of records must have this field\n * accuracy: {\n * source: 'government_db',\n * threshold: 0.98\n * }\n * }\n */\nexport const DataQualityRulesSchema = lazySchema(() => z.object({\n /** Enforce uniqueness constraint */\n uniqueness: z.boolean().default(false).describe('Enforce unique values across all records'),\n \n /** Completeness ratio (0-1) indicating minimum percentage of non-null values */\n completeness: z.number().min(0).max(1).default(0).describe('Minimum ratio of non-null values (0-1, default: 0 = no requirement)'),\n \n /** Accuracy validation against authoritative source */\n accuracy: z.object({\n source: z.string().describe('Reference data source for validation (e.g., \"api.verify.com\", \"master_data\")'),\n threshold: z.number().min(0).max(1).describe('Minimum accuracy threshold (0-1, e.g., 0.95 = 95% match required)'),\n }).optional().describe('Accuracy validation configuration'),\n}));\n\n/**\n * Computed Field Caching Schema\n * Configuration for caching computed/formula field results\n * \n * @example Cache product price with 1-hour TTL, invalidate on inventory changes\n * {\n * enabled: true,\n * ttl: 3600,\n * invalidateOn: ['inventory.quantity', 'pricing.discount']\n * }\n */\nexport const ComputedFieldCacheSchema = lazySchema(() => z.object({\n /** Enable caching for this computed field */\n enabled: z.boolean().describe('Enable caching for computed field results'),\n \n /** Time-to-live in seconds */\n ttl: z.number().min(0).describe('Cache TTL in seconds (0 = no expiration)'),\n \n /** Array of field paths that trigger cache invalidation when changed */\n invalidateOn: z.array(z.string()).describe('Field paths that invalidate cache (e.g., [\"inventory.quantity\", \"pricing.base_price\"])'),\n}));\n\n/**\n * Field Schema - Best Practice Enterprise Pattern\n */\n/**\n * Field Definition Schema\n * Defines the properties, type, and behavior of a single field (column) on an object.\n * \n * @example Lookup Field\n * {\n * name: \"account_id\",\n * label: \"Account\",\n * type: \"lookup\",\n * reference: \"accounts\",\n * required: true\n * }\n * \n * @example Select Field\n * {\n * name: \"status\",\n * label: \"Status\",\n * type: \"select\",\n * options: [\n * { label: \"Open\", value: \"open\" },\n * { label: \"Closed\", value: \"closed\" }\n * ],\n * defaultValue: \"open\"\n * }\n */\nexport const FieldSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine name (snake_case)').optional(),\n label: z.string().optional().describe('Human readable label'),\n type: FieldType.describe('Field Data Type'),\n description: z.string().optional().describe('Tooltip/Help text'),\n format: z.string().optional().describe('Format string (e.g. email, phone)'),\n\n /** Storage Layer Mapping */\n columnName: z.string().optional().describe('Physical column name in the target datasource. Defaults to the field key when not set.'),\n\n /** Database Constraints */\n required: z.boolean().default(false).describe('Is required'),\n searchable: z.boolean().default(false).describe('Is searchable'),\n multiple: z.boolean().default(false).describe('Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image.'),\n unique: z.boolean().default(false).describe('Is unique constraint'),\n defaultValue: z.unknown().optional().describe('Default value'),\n \n /** Text/String Constraints */\n maxLength: z.number().optional().describe('Max character length'),\n minLength: z.number().optional().describe('Min character length'),\n \n /** Number Constraints */\n precision: z.number().optional().describe('Total digits'),\n scale: z.number().optional().describe('Decimal places'),\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n\n /** Selection Options */\n options: z.array(SelectOptionSchema).optional().describe('Static options for select/multiselect'),\n\n /**\n * Relationship Config\n * \n * Used by `lookup` and `master_detail` field types to define cross-object references.\n * The `reference` property is **required** for these types — it identifies the target\n * object whose records this field links to. The engine uses `reference` during $expand\n * post-processing to resolve foreign key IDs into full related objects via batch queries.\n * \n * For `master_detail` fields, the parent record controls the lifecycle of child records\n * (e.g., cascade delete). For `lookup` fields, the reference is a soft link.\n */\n reference: z.string().optional().describe(\n 'Target object name (snake_case) for lookup/master_detail fields. '\n + 'Required for relationship types. Used by $expand to resolve foreign key IDs into full objects.'\n ),\n referenceFilters: z.array(z.string()).optional().describe('Filters applied to lookup dialogs (e.g. \"active = true\")'),\n writeRequiresMasterRead: z.boolean().optional().describe('If true, user needs read access to master record to edit this field'),\n deleteBehavior: z.enum(['set_null', 'cascade', 'restrict']).optional().default('set_null').describe('What happens if referenced record is deleted'),\n /**\n * Master-detail INLINE EDITING. On a child's `master_detail`/`lookup` field\n * (whose `reference` is the parent object), declare that \"this child is\n * entered/edited inline within the parent's form\". The parent's standard\n * create/edit form then renders the children and saves parent + children in\n * ONE atomic transaction — no form view config and no bespoke page. The intent\n * lives here in the data model; forms derive the UI.\n *\n * The value also selects the EDITING FORM FACTOR:\n * - `true` → auto: the UI picks `grid` or `form` from the child's shape\n * (rich types / many fields → `form`, else `grid`).\n * - `'grid'` → an editable line-item grid (fast bulk entry; thin children\n * like invoice lines / order items).\n * - `'form'` → a compact read-only list; \"Add\" / per-row edit opens the\n * child's FULL form (fat children with rich types, e.g. long\n * text, attachments, many fields).\n * Use for true line-item/composition children; leave off for associations\n * (comments, attachments) — surface those as detail-page related lists.\n */\n inlineEdit: z.union([z.boolean(), z.enum(['grid', 'form'])]).optional().describe('Edit these child records inline within the parent\\'s form (atomic master-detail). true = auto-pick grid/form by child shape; \\'grid\\' = editable line-item grid; \\'form\\' = list + per-row full form.'),\n /** Optional section title for the inline grid (defaults to the child object label). */\n inlineTitle: z.string().optional().describe('Title for the inline master-detail grid'),\n /** Optional explicit grid columns for the inline editor (derived from the child object when omitted). */\n inlineColumns: z.array(z.any()).optional().describe('Explicit columns for the inline grid (derived from the child object when omitted)'),\n /** Optional numeric child field summed for the inline grid running total. */\n inlineAmountField: z.string().optional().describe('Numeric child field summed for the inline grid total'),\n\n /**\n * Detail-page RELATED LIST — the read-side mirror of `inlineEdit`. On a\n * child's `master_detail`/`lookup` field (whose `reference` is the parent),\n * this governs whether/how the child collection appears as a related list on\n * the parent's record DETAIL page. Owned children (`master_detail`) and\n * `lookup` children are shown by default (derived from the relationship);\n * set `relatedList: false` to suppress a child from the detail page (e.g.\n * noisy audit/association links you don't want surfaced). Where `inlineEdit`\n * pulls a child INTO the parent's entry form (write side), `relatedList`\n * controls its appearance on the parent's detail page (read side). The intent\n * lives here in the data model; the detail page derives the UI.\n */\n relatedList: z.boolean().optional().describe('Show this child collection as a related list on the parent\\'s detail page (read-side mirror of inlineEdit). Defaults to shown for master_detail/lookup; set false to suppress.'),\n /** Optional section title for the detail-page related list (defaults to the child object label). */\n relatedListTitle: z.string().optional().describe('Title for the detail-page related list'),\n /** Optional explicit columns for the detail-page related list (derived from the child object when omitted). */\n relatedListColumns: z.array(z.any()).optional().describe('Explicit columns for the detail-page related list (derived from the child object when omitted)'),\n\n /** Calculation — CEL formula. Plain string accepted for back-compat; build emits canonical envelope. */\n expression: ExpressionInputSchema.optional().describe('Formula expression (CEL). e.g. F`record.amount * 0.1`'),\n summaryOperations: z.object({\n object: z.string().describe('Source child object name for roll-up'),\n field: z.string().describe('Field on child object to aggregate (ignored for count)'),\n function: z.enum(['count', 'sum', 'min', 'max', 'avg']).describe('Aggregation function to apply'),\n relationshipField: z.string().optional().describe('FK field on the child pointing back to this parent. Auto-detected from the child\\'s lookup/master_detail field referencing this object when omitted; set explicitly only when the child has more than one such reference.'),\n }).optional().describe('Roll-up summary definition. The engine recomputes the value when child records are inserted/updated/deleted.'),\n\n /** Enhanced Field Type Configurations */\n // Code field config\n language: z.string().optional().describe('Programming language for syntax highlighting (e.g., javascript, python, sql)'),\n theme: z.string().optional().describe('Code editor theme (e.g., dark, light, monokai)'),\n lineNumbers: z.boolean().optional().describe('Show line numbers in code editor'),\n \n // Rating field config\n maxRating: z.number().optional().describe('Maximum rating value (default: 5)'),\n allowHalf: z.boolean().optional().describe('Allow half-star ratings'),\n \n // Location field config\n displayMap: z.boolean().optional().describe('Display map widget for location field'),\n allowGeocoding: z.boolean().optional().describe('Allow address-to-coordinate conversion'),\n \n // Address field config\n addressFormat: z.enum(['us', 'uk', 'international']).optional().describe('Address format template'),\n \n // Color field config\n colorFormat: z.enum(['hex', 'rgb', 'rgba', 'hsl']).optional().describe('Color value format'),\n allowAlpha: z.boolean().optional().describe('Allow transparency/alpha channel'),\n presetColors: z.array(z.string()).optional().describe('Preset color options'),\n \n // Slider field config\n step: z.number().optional().describe('Step increment for slider (default: 1)'),\n showValue: z.boolean().optional().describe('Display current value on slider'),\n marks: z.record(z.string(), z.string()).optional().describe('Custom marks/labels at specific values (e.g., {0: \"Low\", 50: \"Medium\", 100: \"High\"})'),\n \n // QR Code / Barcode field config\n // Note: qrErrorCorrection is only applicable when barcodeFormat='qr'\n // Runtime validation should enforce this constraint\n barcodeFormat: z.enum(['qr', 'ean13', 'ean8', 'code128', 'code39', 'upca', 'upce']).optional().describe('Barcode format type'),\n qrErrorCorrection: z.enum(['L', 'M', 'Q', 'H']).optional().describe('QR code error correction level (L=7%, M=15%, Q=25%, H=30%). Only applicable when barcodeFormat is \"qr\"'),\n displayValue: z.boolean().optional().describe('Display human-readable value below barcode/QR code'),\n allowScanning: z.boolean().optional().describe('Enable camera scanning for barcode/QR code input'),\n\n // Currency field config\n currencyConfig: CurrencyConfigSchema.optional().describe('Configuration for currency field type'),\n\n // Vector field config\n vectorConfig: VectorConfigSchema.optional().describe('Configuration for vector field type (AI/ML embeddings)'),\n\n // File attachment field config\n fileAttachmentConfig: FileAttachmentConfigSchema.optional().describe('Configuration for file and attachment field types'),\n\n /** Enhanced Security & Compliance */\n // Encryption configuration\n encryptionConfig: EncryptionConfigSchema.optional().describe('Field-level encryption configuration for sensitive data (GDPR/HIPAA/PCI-DSS)'),\n \n // Data masking rules\n maskingRule: MaskingRuleSchema.optional().describe('Data masking rules for PII protection'),\n \n // Audit trail\n auditTrail: z.boolean().default(false).describe('Enable detailed audit trail for this field (tracks all changes with user and timestamp)'),\n \n /** Field Dependencies & Relationships */\n // Field dependencies\n dependencies: z.array(z.string()).optional().describe('Array of field names that this field depends on (for formulas, visibility rules, etc.)'),\n \n /** Computed Field Optimization */\n // Computed field caching\n cached: ComputedFieldCacheSchema.optional().describe('Caching configuration for computed/formula fields'),\n \n /** Data Quality & Governance */\n // Data quality rules\n dataQuality: DataQualityRulesSchema.optional().describe('Data quality validation and monitoring rules'),\n\n /** Layout & Grouping */\n group: z.string().optional().describe('Field group name for organizing fields in forms and layouts (e.g., \"contact_info\", \"billing\", \"system\")'),\n\n /**\n * Conditional field rules (CEL predicates over `record`). Evaluated on BOTH\n * sides: the client form toggles the field's visibility / read-only / required\n * state live as the record changes (UX), and the server enforces\n * `requiredWhen` and ignores writes to a field whose `readonlyWhen` is TRUE\n * (so the rule can't be bypassed). e.g. `P\\`record.status == 'paid'\\``.\n */\n visibleWhen: ExpressionInputSchema.optional().describe(\"Predicate (CEL) — field is shown only when TRUE (else hidden). e.g. P`record.type == 'invoice'`\"),\n readonlyWhen: ExpressionInputSchema.optional().describe(\"Predicate (CEL) — field is read-only when TRUE. e.g. P`record.status == 'paid'`\"),\n requiredWhen: ExpressionInputSchema.optional().describe(\"Predicate (CEL) — field is required when TRUE. Canonical name for `conditionalRequired`.\"),\n\n /** Conditional Requirements\n * @deprecated Alias of `requiredWhen` — kept for back-compat. */\n conditionalRequired: ExpressionInputSchema.optional().describe('Predicate (CEL) — field is required when TRUE. Alias of `requiredWhen`.'),\n\n /** Security & Visibility */\n hidden: z.boolean().default(false).describe('Hidden from default UI'),\n readonly: z.boolean().default(false).describe('Read-only in UI'),\n system: z.boolean().optional().describe('Auto-injected system/audit field (e.g. created_at, updated_by, organization_id). Tools that surface system fields separately from author-declared business fields should branch on this flag.'),\n sortable: z.boolean().optional().default(true).describe('Whether field is sortable in list views'),\n inlineHelpText: z.string().optional().describe('Help text displayed below the field in forms'),\n trackFeedHistory: z.boolean().optional().describe('Track field changes in Chatter/activity feed (Salesforce pattern)'),\n caseSensitive: z.boolean().optional().describe('Whether text comparisons are case-sensitive'),\n autonumberFormat: z.string().optional().describe('Auto-number display format pattern (e.g., \"CASE-{0000}\")'),\n /** Indexing */\n index: z.boolean().default(false).describe('Create standard database index'),\n externalId: z.boolean().default(false).describe('Is external ID for upsert operations'),\n}));\n\nexport type Field = z.infer<typeof FieldSchema>;\nexport type SelectOption = z.infer<typeof SelectOptionSchema>;\nexport type LocationCoordinates = z.infer<typeof LocationCoordinatesSchema>;\nexport type Address = z.infer<typeof AddressSchema>;\nexport type CurrencyConfig = z.infer<typeof CurrencyConfigSchema>;\nexport type CurrencyConfigInput = z.input<typeof CurrencyConfigSchema>;\nexport type CurrencyValue = z.infer<typeof CurrencyValueSchema>;\nexport type VectorConfig = z.infer<typeof VectorConfigSchema>;\nexport type VectorConfigInput = z.input<typeof VectorConfigSchema>;\nexport type FileAttachmentConfig = z.infer<typeof FileAttachmentConfigSchema>;\nexport type FileAttachmentConfigInput = z.input<typeof FileAttachmentConfigSchema>;\nexport type DataQualityRules = z.infer<typeof DataQualityRulesSchema>;\nexport type DataQualityRulesInput = z.input<typeof DataQualityRulesSchema>;\nexport type ComputedFieldCache = z.infer<typeof ComputedFieldCacheSchema>;\n\n/**\n * Field Factory Helper\n */\nexport type FieldInput = Omit<Partial<Field>, 'type'>;\n\nexport const Field = {\n text: (config: FieldInput = {}) => ({ type: 'text', ...config } as const),\n textarea: (config: FieldInput = {}) => ({ type: 'textarea', ...config } as const),\n number: (config: FieldInput = {}) => ({ type: 'number', ...config } as const),\n boolean: (config: FieldInput = {}) => ({ type: 'boolean', ...config } as const),\n date: (config: FieldInput = {}) => ({ type: 'date', ...config } as const),\n datetime: (config: FieldInput = {}) => ({ type: 'datetime', ...config } as const),\n currency: (config: FieldInput = {}) => ({ type: 'currency', ...config } as const),\n percent: (config: FieldInput = {}) => ({ type: 'percent', ...config } as const),\n url: (config: FieldInput = {}) => ({ type: 'url', ...config } as const),\n email: (config: FieldInput = {}) => ({ type: 'email', ...config } as const),\n phone: (config: FieldInput = {}) => ({ type: 'phone', ...config } as const),\n image: (config: FieldInput = {}) => ({ type: 'image', ...config } as const),\n file: (config: FieldInput = {}) => ({ type: 'file', ...config } as const),\n avatar: (config: FieldInput = {}) => ({ type: 'avatar', ...config } as const),\n formula: (config: FieldInput = {}) => ({ type: 'formula', ...config } as const),\n summary: (config: FieldInput = {}) => ({ type: 'summary', ...config } as const),\n autonumber: (config: FieldInput = {}) => ({ type: 'autonumber', ...config } as const),\n markdown: (config: FieldInput = {}) => ({ type: 'markdown', ...config } as const),\n html: (config: FieldInput = {}) => ({ type: 'html', ...config } as const),\n password: (config: FieldInput = {}) => ({ type: 'password', ...config } as const),\n /**\n * Secret field — reversible encrypted-at-rest value (DB password, API key,\n * token). Encrypted on write to `sys_secret` via the registered\n * ICryptoProvider; only an opaque ref is persisted on the row; masked on\n * read. Distinct from `password` (one-way hash, owned by the auth subsystem).\n */\n secret: (config: FieldInput = {}) => ({ type: 'secret', ...config } as const),\n \n /**\n * Select field helper with backward-compatible API\n * \n * Automatically converts option values to lowercase to enforce naming conventions.\n * \n * @example Old API (array first) - auto-converts to lowercase\n * Field.select(['High', 'Low'], { label: 'Priority' })\n * // Results in: [{ label: 'High', value: 'high' }, { label: 'Low', value: 'low' }]\n * \n * @example New API (config object) - enforces lowercase\n * Field.select({ options: [{label: 'High', value: 'high'}], label: 'Priority' })\n * \n * @example Multi-word values - converts to snake_case\n * Field.select(['In Progress', 'Closed Won'], { label: 'Status' })\n * // Results in: [{ label: 'In Progress', value: 'in_progress' }, { label: 'Closed Won', value: 'closed_won' }]\n */\n select: (optionsOrConfig: SelectOption[] | string[] | FieldInput & { options: SelectOption[] | string[] }, config?: FieldInput) => {\n // Helper function to convert string to lowercase snake_case\n const toSnakeCase = (str: string): string => {\n return str\n .toLowerCase()\n .replace(/\\s+/g, '_') // Replace spaces with underscores\n .replace(/[^a-z0-9_]/g, ''); // Remove invalid characters (keeping underscores only)\n };\n\n // Support both old and new signatures:\n // Old: Field.select(['a', 'b'], { label: 'X' })\n // New: Field.select({ options: [{label: 'A', value: 'a'}], label: 'X' })\n let options: SelectOption[];\n let finalConfig: FieldInput;\n \n if (Array.isArray(optionsOrConfig)) {\n // Old signature: array as first param\n options = optionsOrConfig.map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n finalConfig = config || {};\n } else {\n // New signature: config object with options\n options = (optionsOrConfig.options || []).map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n // Remove options from config to avoid confusion\n const { options: _, ...restConfig } = optionsOrConfig;\n finalConfig = restConfig;\n }\n \n return { type: 'select', options, ...finalConfig } as const;\n },\n\n \n lookup: (reference: string, config: FieldInput = {}) => ({ \n type: 'lookup', \n reference, \n ...config \n } as const),\n \n masterDetail: (reference: string, config: FieldInput = {}) => ({\n type: 'master_detail',\n reference,\n ...config\n } as const),\n\n // Enhanced Field Type Helpers\n location: (config: FieldInput = {}) => ({ \n type: 'location', \n ...config \n } as const),\n \n address: (config: FieldInput = {}) => ({ \n type: 'address', \n ...config \n } as const),\n \n richtext: (config: FieldInput = {}) => ({ \n type: 'richtext', \n ...config \n } as const),\n \n code: (language?: string, config: FieldInput = {}) => ({ \n type: 'code', \n language,\n ...config \n } as const),\n \n color: (config: FieldInput = {}) => ({ \n type: 'color', \n ...config \n } as const),\n \n rating: (maxRating: number = 5, config: FieldInput = {}) => ({ \n type: 'rating', \n maxRating,\n ...config \n } as const),\n \n signature: (config: FieldInput = {}) => ({ \n type: 'signature', \n ...config \n } as const),\n \n slider: (config: FieldInput = {}) => ({ \n type: 'slider', \n ...config \n } as const),\n \n qrcode: (config: FieldInput = {}) => ({ \n type: 'qrcode', \n ...config \n } as const),\n \n json: (config: FieldInput = {}) => ({ \n type: 'json', \n ...config \n } as const),\n \n vector: (dimensions: number, config: FieldInput = {}) => ({ \n type: 'vector', \n vectorConfig: {\n dimensions,\n distanceMetric: 'cosine' as const,\n normalized: false,\n indexed: true,\n ...config.vectorConfig\n },\n ...config \n } as const),\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Shared HTTP Schemas\n * \n * Common HTTP-related schemas used across API and System protocols.\n * These schemas ensure consistency across different parts of the stack.\n */\n\n// ==========================================\n// Basic HTTP Types\n// ==========================================\n\n/**\n * HTTP Method Enum\n */\nimport { lazySchema } from './lazy-schema';\nexport const HttpMethod = z.enum([\n 'GET', \n 'POST', \n 'PUT', \n 'DELETE', \n 'PATCH', \n 'HEAD', \n 'OPTIONS'\n]);\n\nexport type HttpMethod = z.infer<typeof HttpMethod>;\n\n/**\n * HTTP Method Schema (subset for UI/View data sources)\n * Common HTTP methods used in view data source configurations.\n * Migrated from ui/view.zod.ts to shared for reuse across modules.\n */\nexport const HttpMethodSchema = lazySchema(() => z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']));\n\nexport type HttpMethodType = z.infer<typeof HttpMethodSchema>;\n\n/**\n * HTTP Request Configuration Schema\n * Defines a complete HTTP request configuration used by API data providers.\n * Migrated from ui/view.zod.ts to shared for reuse across modules.\n */\nexport const HttpRequestSchema = lazySchema(() => z.object({\n url: z.string().describe('API endpoint URL'),\n method: HttpMethodSchema.optional().default('GET').describe('HTTP method'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),\n params: z.record(z.string(), z.unknown()).optional().describe('Query parameters'),\n body: z.unknown().optional().describe('Request body for POST/PUT/PATCH'),\n}));\n\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\n\n// ==========================================\n// CORS Configuration\n// ==========================================\n\n/**\n * CORS Configuration Schema\n * Cross-Origin Resource Sharing configuration\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"origins\": [\"http://localhost:3000\", \"https://app.example.com\"],\n * \"methods\": [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n * \"credentials\": true,\n * \"maxAge\": 86400\n * }\n */\nexport const CorsConfigSchema = lazySchema(() => z.object({\n /**\n * Enable CORS\n */\n enabled: z.boolean().default(true).describe('Enable CORS'),\n \n /**\n * Allowed origins (* for all)\n */\n origins: z.union([\n z.string(),\n z.array(z.string())\n ]).default('*').describe('Allowed origins (* for all)'),\n \n /**\n * Allowed HTTP methods\n */\n methods: z.array(HttpMethod).optional().describe('Allowed HTTP methods'),\n \n /**\n * Allow credentials (cookies, authorization headers)\n */\n credentials: z.boolean().default(false).describe('Allow credentials (cookies, authorization headers)'),\n \n /**\n * Preflight cache duration in seconds\n */\n maxAge: z.number().int().optional().describe('Preflight cache duration in seconds'),\n}));\n\nexport type CorsConfig = z.infer<typeof CorsConfigSchema>;\n\n// ==========================================\n// Rate Limiting\n// ==========================================\n\n/**\n * Rate Limit Configuration Schema\n * \n * Used by:\n * - api/endpoint.zod.ts (ApiEndpointSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"windowMs\": 60000,\n * \"maxRequests\": 100\n * }\n */\nexport const RateLimitConfigSchema = lazySchema(() => z.object({\n /**\n * Enable rate limiting\n */\n enabled: z.boolean().default(false).describe('Enable rate limiting'),\n \n /**\n * Time window in milliseconds\n */\n windowMs: z.number().int().default(60000).describe('Time window in milliseconds'),\n \n /**\n * Max requests per window\n */\n maxRequests: z.number().int().default(100).describe('Max requests per window'),\n}));\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\n\n// ==========================================\n// Static File Serving\n// ==========================================\n\n/**\n * Static Mount Configuration Schema\n * Configuration for serving static files\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"path\": \"/static\",\n * \"directory\": \"./public\",\n * \"cacheControl\": \"public, max-age=31536000\"\n * }\n */\nexport const StaticMountSchema = lazySchema(() => z.object({\n /**\n * URL path to serve from\n */\n path: z.string().describe('URL path to serve from'),\n \n /**\n * Physical directory to serve\n */\n directory: z.string().describe('Physical directory to serve'),\n \n /**\n * Cache-Control header value\n */\n cacheControl: z.string().optional().describe('Cache-Control header value'),\n}));\n\nexport type StaticMount = z.infer<typeof StaticMountSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ProtectionSchema } from '../shared/protection.zod';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { SharingConfigSchema } from './sharing.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\nimport { FieldType, SelectOptionSchema } from '../data/field.zod';\n\n/**\n * HTTP Method Enum & HTTP Request Schema\n * Migrated to shared/http.zod.ts. Re-exported here for backward compatibility.\n */\nimport { HttpMethodSchema, HttpRequestSchema } from '../shared/http.zod';\nimport { lazySchema } from '../shared/lazy-schema';\nexport { HttpMethodSchema, HttpRequestSchema };\n\n/**\n * View Data Source Configuration\n * Supports three modes:\n * 1. 'object': Standard Protocol - Auto-connects to ObjectStack Metadata and Data APIs\n * 2. 'api': Custom API - Explicitly provided API URLs\n * 3. 'value': Static Data - Hardcoded data array\n */\nexport const ViewDataSchema = lazySchema(() => z.discriminatedUnion('provider', [\n z.object({\n provider: z.literal('object'),\n object: z.string().describe('Target object name'),\n }),\n z.object({\n provider: z.literal('api'),\n read: HttpRequestSchema.optional().describe('Configuration for fetching data'),\n write: HttpRequestSchema.optional().describe('Configuration for submitting data (for forms/editable tables)'),\n }),\n z.object({\n provider: z.literal('value'),\n items: z.array(z.unknown()).describe('Static data array'),\n }),\n /**\n * Schema-bound data source — used by standalone forms whose data is\n * shaped by a JSON Schema (or Zod-derived schema) rather than by an\n * ObjectQL object. Powers the metadata editor, action input dialogs,\n * and any Form that is not bound to a CRUD object.\n */\n z.object({\n provider: z.literal('schema'),\n /** Schema identifier (e.g. metadata type name \"report\"). Resolved at runtime against /meta entries. */\n schemaId: z.string().describe('Schema identifier — typically the metadata type name'),\n /** Optional inline JSON Schema; when omitted the runtime resolves schemaId from the server. */\n schema: z.record(z.string(), z.unknown()).optional().describe('Inline JSON Schema (Draft 2020-12). Optional when schemaId is resolvable.'),\n }),\n]));\n\n/**\n * View Filter Rule Schema\n * Standardized filter condition used in list views, tabs, and page-level filters.\n * Uses a declarative array-of-objects format: [{ field, operator, value }].\n *\n * @example\n * ```ts\n * filter: [\n * { field: 'status', operator: 'equals', value: 'active' },\n * { field: 'close_date', operator: 'this_quarter' },\n * ]\n * ```\n */\nexport const ViewFilterRuleSchema = lazySchema(() => z.object({\n /** Field name to filter on */\n field: z.string().describe('Field name to filter on'),\n /** Filter operator */\n operator: z.string().describe('Filter operator (e.g. equals, not_equals, contains, this_quarter)'),\n /** Filter value (optional for unary operators like is_null, this_quarter) */\n value: z.union([z.string(), z.number(), z.boolean(), z.null(), z.array(z.union([z.string(), z.number()]))])\n .optional().describe('Filter value'),\n}).describe('View filter rule'));\n\nexport type ViewFilterRule = z.infer<typeof ViewFilterRuleSchema>;\n\n/**\n * Column Summary Function Schema\n * Aggregation function for column footer (Airtable-style column summaries)\n */\nexport const ColumnSummarySchema = lazySchema(() => z.enum([\n 'none',\n 'count',\n 'count_empty',\n 'count_filled',\n 'count_unique',\n 'percent_empty',\n 'percent_filled',\n 'sum',\n 'avg',\n 'min',\n 'max',\n]).describe('Aggregation function for column footer summary'));\n\n/**\n * List Column Configuration Schema\n * Detailed configuration for individual list view columns\n */\nexport const ListColumnSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label override'),\n width: z.number().positive().optional().describe('Column width in pixels'),\n align: z.enum(['left', 'center', 'right']).optional().describe('Text alignment'),\n hidden: z.boolean().optional().describe('Hide column by default'),\n sortable: z.boolean().optional().describe('Allow sorting by this column'),\n resizable: z.boolean().optional().describe('Allow resizing this column'),\n wrap: z.boolean().optional().describe('Allow text wrapping'),\n type: z.string().optional().describe('Renderer type override (e.g., \"currency\", \"date\")'),\n\n /** Pinning (Airtable-style frozen columns) */\n pinned: z.enum(['left', 'right']).optional().describe('Pin/freeze column to left or right side'),\n\n /** Column Footer Summary (Airtable-style aggregation) */\n summary: ColumnSummarySchema.optional().describe('Footer aggregation function for this column'),\n\n /** Interaction */\n link: z.boolean().optional().describe('Functions as the primary navigation link (triggers View navigation)'),\n action: z.string().optional().describe('Registered Action ID to execute when clicked'),\n}));\n\n/**\n * List View Selection Configuration\n */\nexport const SelectionConfigSchema = lazySchema(() => z.object({\n type: z.enum(['none', 'single', 'multiple']).default('none').describe('Selection mode'),\n}));\n\n/**\n * List View Pagination Configuration\n */\nexport const PaginationConfigSchema = lazySchema(() => z.object({\n pageSize: z.number().int().positive().default(25).describe('Number of records per page'),\n pageSizeOptions: z.array(z.number().int().positive()).optional().describe('Available page size options'),\n}));\n\n/**\n * Row Height / Density Schema (Airtable-style)\n * Controls the visual density of rows in a list view.\n */\nexport const RowHeightSchema = lazySchema(() => z.enum([\n 'compact', // Minimal padding, single line\n 'short', // Reduced padding\n 'medium', // Default padding\n 'tall', // Extra padding, multi-line preview\n 'extra_tall', // Maximum padding, rich content preview\n]).describe('Row height / density setting for list view'));\n\n/**\n * Grouping Field Configuration\n * Defines a single grouping level for record grouping.\n */\nexport const GroupingFieldSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to group by'),\n order: z.enum(['asc', 'desc']).default('asc').describe('Group sort order'),\n collapsed: z.boolean().default(false).describe('Collapse groups by default'),\n}));\n\n/**\n * Grouping Configuration Schema (Airtable-style)\n * Supports multi-level grouping for grid/gallery views.\n */\nexport const GroupingConfigSchema = lazySchema(() => z.object({\n fields: z.array(GroupingFieldSchema).min(1).describe('Fields to group by (supports up to 3 levels)'),\n}).describe('Record grouping configuration'));\n\n/**\n * Gallery View Configuration (Airtable-style)\n * Configures card layout for gallery/card views.\n */\nexport const GalleryConfigSchema = lazySchema(() => z.object({\n coverField: z.string().optional().describe('Attachment/image field to display as card cover'),\n coverFit: z.enum(['cover', 'contain']).default('cover').describe('Image fit mode for card cover'),\n cardSize: z.enum(['small', 'medium', 'large']).default('medium').describe('Card size in gallery view'),\n titleField: z.string().optional().describe('Field to display as card title'),\n visibleFields: z.array(z.string()).optional().describe('Fields to display on card body'),\n}).describe('Gallery/card view configuration'));\n\n/**\n * Timeline View Configuration (Airtable-style)\n * Configures timeline/chronological views.\n */\nexport const TimelineConfigSchema = lazySchema(() => z.object({\n startDateField: z.string().describe('Field for timeline item start date'),\n endDateField: z.string().optional().describe('Field for timeline item end date'),\n titleField: z.string().describe('Field to display as timeline item title'),\n groupByField: z.string().optional().describe('Field to group timeline rows'),\n colorField: z.string().optional().describe('Field to determine item color'),\n scale: z.enum(['hour', 'day', 'week', 'month', 'quarter', 'year']).default('week').describe('Default timeline scale'),\n}).describe('Timeline view configuration'));\n\n/**\n * View Sharing Configuration (Airtable-style)\n * Defines who can see and modify a view.\n */\nexport const ViewSharingSchema = lazySchema(() => z.object({\n type: z.enum(['personal', 'collaborative']).default('collaborative').describe('View ownership type'),\n lockedBy: z.string().optional().describe('User who locked the view configuration'),\n}).describe('View sharing and access configuration'));\n\n/**\n * Row Color Configuration (Airtable-style)\n * Defines how rows are colored based on field values.\n */\nexport const RowColorConfigSchema = lazySchema(() => z.object({\n field: z.string().describe('Field to derive color from (typically a select/status field)'),\n colors: z.record(z.string(), z.string()).optional().describe('Map of field value to color (hex/token)'),\n}).describe('Row color configuration based on field values'));\n\n/**\n * Visualization Type Schema\n * Whitelist of visualization types the user can switch between.\n * Maps to Airtable's \"Visualizations\" setting in Appearance panel.\n */\nexport const VisualizationTypeSchema = lazySchema(() => z.enum([\n 'grid',\n 'kanban',\n 'gallery',\n 'calendar',\n 'timeline',\n 'gantt',\n 'map',\n 'chart',\n]).describe('Visualization type that users can switch to'));\n\n/**\n * User Actions Configuration Schema (Airtable Interface parity)\n * Controls which interactive actions are available to users in the view toolbar.\n * Each boolean toggles the corresponding toolbar element on/off.\n *\n * @see Airtable Interface → \"User actions\" panel\n */\nexport const UserActionsConfigSchema = lazySchema(() => z.object({\n sort: z.boolean().default(true).describe('Allow users to sort records'),\n search: z.boolean().default(true).describe('Allow users to search records'),\n filter: z.boolean().default(true).describe('Allow users to filter records'),\n rowHeight: z.boolean().default(true).describe('Allow users to toggle row height/density'),\n addRecordForm: z.boolean().default(false).describe('Add records through a form instead of inline'),\n buttons: z.array(z.string()).optional().describe('Custom action button IDs to show in the toolbar'),\n}).describe('User action toggles for the view toolbar'));\n\n/**\n * Appearance Configuration Schema (Airtable Interface parity)\n * Controls visual presentation options for the view.\n *\n * @see Airtable Interface → \"Appearance\" panel\n */\nexport const AppearanceConfigSchema = lazySchema(() => z.object({\n showDescription: z.boolean().default(true).describe('Show the view description text'),\n allowedVisualizations: z.array(VisualizationTypeSchema).optional()\n .describe('Whitelist of visualization types users can switch between (e.g. [\"grid\", \"gallery\", \"kanban\"])'),\n}).describe('Appearance and visualization configuration'));\n\n/**\n * View Tab Schema (Airtable Interface parity)\n * Defines a tab in a multi-tab view interface.\n * Each tab references a named list view and can be ordered, pinned, or set as default.\n *\n * @see Airtable Interface → \"Tabs\" panel\n */\nexport const ViewTabSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Tab identifier (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label'),\n icon: z.string().optional().describe('Tab icon name'),\n view: z.string().optional().describe('Referenced list view name from listViews'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Tab-specific filter criteria'),\n order: z.number().int().min(0).optional().describe('Tab display order'),\n pinned: z.boolean().default(false).describe('Pin tab (cannot be removed by users)'),\n isDefault: z.boolean().default(false).describe('Set as the default active tab'),\n visible: z.boolean().default(true).describe('Tab visibility'),\n}).describe('Tab configuration for multi-tab view interface'));\n\n/**\n * User Filter Field Schema (ADR-0047)\n * One field exposed as a quick-filter control in the end-user filter bar.\n * Rendering details (widget, options) default to inference from the field\n * definition on the source object — authors only override when needed.\n *\n * @see Airtable Interface → \"User filters\" panel (Dropdowns element)\n */\nexport const UserFilterFieldSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name on the source object (must exist — checked by reference diagnostics)'),\n label: I18nLabelSchema.optional().describe('Display label override (defaults to the field label)'),\n type: z.enum(['select', 'multi-select', 'boolean', 'date-range', 'text']).optional()\n .describe('Filter control type. Omit to infer from the field definition'),\n options: z.array(z.object({\n value: z.union([z.string(), z.number(), z.boolean()]).describe('Option value'),\n label: I18nLabelSchema.describe('Option label'),\n color: z.string().optional().describe('Option color token/hex'),\n })).optional().describe('Static options. Omit to derive from the field definition (select options / lookup records)'),\n showCount: z.boolean().optional().describe('Show per-option record counts'),\n defaultValues: z.array(z.union([z.string(), z.number(), z.boolean()])).optional()\n .describe('Pre-selected values when the view loads'),\n}).describe('Quick-filter field configuration'));\n\n/**\n * User Filters Schema (ADR-0047, Airtable Interface parity)\n * The end-user-facing quick-filter surface above a list. The author picks the\n * element style and which fields/presets are exposed; end users combine them\n * at runtime (session-scoped — selections never persist as metadata).\n *\n * Distinct from `ListView.filter` (the always-on base criteria) and from the\n * advanced filter builder (`userActions.filter` toggle).\n *\n * @see Airtable Interface → \"User filters\" panel (Elements: tabs / dropdowns)\n */\nexport const UserFiltersSchema = lazySchema(() => z.object({\n // `toggle` is DEPRECATED (ADR-0047 §3.4a): it overlaps `tabs` (presets) and\n // `dropdown` (per-field values) without adding expressive power, needs\n // per-field defaultValues to be useful, and authoring tooling no longer\n // offers it (None / Tabs / Dropdown only). Kept in the enum so existing\n // configs keep rendering; do not author new `toggle` filters.\n element: z.enum(['dropdown', 'tabs', 'toggle']).default('dropdown')\n .describe('Filter control style: \"dropdown\" (per-field value selectors) or \"tabs\" (named presets). \"toggle\" is deprecated.'),\n fields: z.array(UserFilterFieldSchema).optional()\n .describe('Fields exposed as quick filters (dropdown/toggle elements)'),\n tabs: z.array(ViewTabSchema).optional()\n .describe('Named filter presets rendered as tabs (tabs element). Reuses ViewTabSchema'),\n showAllRecords: z.boolean().optional()\n .describe('Show an \"All records\" tab before the presets (tabs element)'),\n}).describe('End-user quick-filter configuration (Airtable \"User filters\" parity)'));\n\n/**\n * Add Record Configuration Schema (Airtable Interface parity)\n * Configures the \"Add Record\" entry point for a list view.\n *\n * @see Airtable Interface → \"+ Add record\" button\n */\nexport const AddRecordConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(true).describe('Show the add record entry point'),\n position: z.enum(['top', 'bottom', 'both']).default('bottom').describe('Position of the add record button'),\n mode: z.enum(['inline', 'form', 'modal']).default('inline').describe('How to add a new record'),\n formView: z.string().optional().describe('Named form view to use when mode is \"form\" or \"modal\"'),\n}).describe('Add record entry point configuration'));\n\n/**\n * Kanban Settings\n */\nexport const KanbanConfigSchema = lazySchema(() => z.object({\n groupByField: z.string().describe('Field to group columns by (usually status/select)'),\n summarizeField: z.string().optional().describe('Field to sum at top of column (e.g. amount)'),\n columns: z.array(z.string()).describe('Fields to show on cards'),\n}));\n\n/**\n * List Chart View Configuration (Airtable-style)\n * Configures aggregate chart visualizations (bar/line/pie/area/scatter)\n * when used as a `type: 'chart'` ListView. Distinct from the full-featured\n * `ChartConfigSchema` in `chart.zod.ts` (which is for embedded reports).\n */\nexport const ListChartConfigSchema = lazySchema(() => z.object({\n chartType: z.enum(['bar', 'line', 'pie', 'area', 'scatter']).default('bar').describe('Chart visualisation type'),\n /**\n * ADR-0021 — the semantic-layer `dataset` this chart binds to. Selects\n * dimensions/measures BY NAME so the chart's numbers stay consistent with\n * every other surface using the same dataset. This is the single author-facing\n * shape (the legacy inline `xAxisField` + `yAxisFields` + `aggregation` query\n * was removed in the cutover).\n */\n dataset: SnakeCaseIdentifierSchema.describe('Dataset name to bind (ADR-0021)'),\n /** Dimension names (from the dataset) for X / group / split. */\n dimensions: z.array(z.string()).optional().describe('Dimension names — X/group/split'),\n /** Measure names (from the dataset) for the value axis. */\n values: z.array(z.string()).min(1).describe('Measure names — Y (at least one)'),\n}).describe('List chart view configuration'));\n\n/**\n * Calendar Settings\n */\nexport const CalendarConfigSchema = lazySchema(() => z.object({\n startDateField: z.string(),\n endDateField: z.string().optional(),\n titleField: z.string(),\n colorField: z.string().optional(),\n}));\n\n/**\n * Gantt Settings\n */\nexport const GanttConfigSchema = lazySchema(() => z.object({\n startDateField: z.string(),\n endDateField: z.string(),\n titleField: z.string(),\n progressField: z.string().optional(),\n dependenciesField: z.string().optional(),\n}));\n\n/**\n * Navigation Mode Enum\n * Defines how to navigate to the detail view from a list item.\n */\nexport const NavigationModeSchema = lazySchema(() => z.enum([\n 'page', // Navigate to a new route (default)\n 'drawer', // Open details in a side drawer/panel\n 'modal', // Open details in a modal dialog\n 'split', // Show details side-by-side with the list (master-detail)\n 'popover', // Show details in a popover (lightweight)\n 'new_window', // Open in new browser tab/window\n 'none' // No navigation (read-only list)\n]));\n\n/**\n * Navigation Configuration Schema\n */\nexport const NavigationConfigSchema = lazySchema(() => z.object({\n mode: NavigationModeSchema.default('page'),\n \n /** Target View Config */\n view: z.string().optional().describe('Name of the form view to use for details (e.g. \"summary_view\", \"edit_form\")'),\n \n /** Interaction Triggers */\n preventNavigation: z.boolean().default(false).describe('Disable standard navigation entirely'),\n openNewTab: z.boolean().default(false).describe('Force open in new tab (applies to page mode)'),\n \n /** Dimensions (for modal/drawer) */\n width: z.union([z.string(), z.number()]).optional().describe('Width of the drawer/modal (e.g. \"600px\", \"50%\")'),\n}));\n\n/**\n * List View Schema (Expanded)\n * Defines how a collection of records is displayed to the user.\n * \n * **NAMING CONVENTION:**\n * View names (when provided) are machine identifiers and must be lowercase snake_case.\n * \n * @example Standard Grid\n * {\n * name: \"all_active\",\n * label: \"All Active\",\n * type: \"grid\",\n * columns: [\"name\", \"status\", \"created_at\"],\n * filter: [[\"status\", \"=\", \"active\"]]\n * }\n * \n * @example Kanban Board\n * {\n * type: \"kanban\",\n * columns: [\"name\", \"amount\"],\n * kanban: {\n * groupByField: \"stage\",\n * summarizeField: \"amount\",\n * columns: [\"name\", \"close_date\"]\n * }\n * }\n */\nexport const ListViewSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.optional().describe('Internal view name (lowercase snake_case)'),\n label: I18nLabelSchema.optional(), // Display label override (supports i18n)\n type: z.enum([\n 'grid', // Standard Data Table\n 'kanban', // Board / Columns\n 'gallery', // Card Deck / Masonry\n 'calendar', // Monthly/Weekly/Daily\n 'timeline', // Chronological Stream (Feed)\n 'gantt', // Project Timeline\n 'map', // Geospatial\n 'chart' // Aggregate visualisation\n ]).default('grid'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n /** Shared Query Config */\n columns: z.union([\n z.array(z.string()), // Legacy: simple field names\n z.array(ListColumnSchema), // Enhanced: detailed column config\n ]).describe('Fields to display as columns'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Filter criteria (JSON Rules)'),\n sort: z.union([\n z.string(), //Legacy \"field desc\"\n z.array(z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc'])\n }))\n ]).optional(),\n \n /** Search & Filter */\n searchableFields: z.array(z.string()).optional().describe('Fields enabled for search'),\n filterableFields: z.array(z.string()).optional().describe('Legacy shorthand for userFilters.fields — bare field names enabled for end-user filtering. Prefer userFilters'),\n\n /** User Filters (ADR-0047, Airtable Interface parity) */\n userFilters: UserFiltersSchema.optional()\n .describe('End-user quick-filter bar: dropdown/toggle fields or tab presets. Omit to let the renderer derive filters from select/boolean fields'),\n\n /** Grid Features */\n resizable: z.boolean().optional().describe('Enable column resizing'),\n striped: z.boolean().optional().describe('Striped row styling'),\n bordered: z.boolean().optional().describe('Show borders'),\n compactToolbar: z.boolean().optional().describe('Collapse Group/Color/Density/Hide-fields into a single View settings popover'),\n\n /** Selection */\n selection: SelectionConfigSchema.optional().describe('Row selection configuration'),\n\n /** Navigation / Interaction */\n navigation: NavigationConfigSchema.optional().describe('Configuration for item click navigation (page, drawer, modal, etc.)'),\n\n /** Pagination */\n pagination: PaginationConfigSchema.optional().describe('Pagination configuration'),\n\n /** Type Specific Config */\n kanban: KanbanConfigSchema.optional(),\n calendar: CalendarConfigSchema.optional(),\n gantt: GanttConfigSchema.optional(),\n gallery: GalleryConfigSchema.optional(),\n timeline: TimelineConfigSchema.optional(),\n chart: ListChartConfigSchema.optional(),\n\n /** View Metadata (Airtable-style view management) */\n description: I18nLabelSchema.optional().describe('View description for documentation/tooltips'),\n sharing: ViewSharingSchema.optional().describe('View sharing and access configuration'),\n\n /** Row Height / Density (Airtable-style) */\n rowHeight: RowHeightSchema.optional().describe('Row height / density setting'),\n\n /** Record Grouping (Airtable-style) */\n grouping: GroupingConfigSchema.optional().describe('Group records by one or more fields'),\n\n /** Row Color (Airtable-style) */\n rowColor: RowColorConfigSchema.optional().describe('Color rows based on field value'),\n\n /** Field Visibility & Ordering per View (Airtable-style) */\n hiddenFields: z.array(z.string()).optional().describe('Fields to hide in this specific view'),\n fieldOrder: z.array(z.string()).optional().describe('Explicit field display order for this view'),\n\n /** Row & Bulk Actions */\n rowActions: z.array(z.string()).optional().describe('Actions available for individual row items'),\n bulkActions: z.array(z.string()).optional().describe('Actions available when multiple rows are selected'),\n bulkActionDefs: z.array(z.record(z.string(), z.any())).optional().describe('Rich bulk action definitions (schema-driven, executed via BulkActionDialog)'),\n\n /** Performance */\n virtualScroll: z.boolean().optional().describe('Enable virtual scrolling for large datasets'),\n\n /** Conditional Formatting */\n conditionalFormatting: z.array(z.object({\n condition: ExpressionInputSchema.describe('Predicate (CEL) to evaluate.'),\n style: z.record(z.string(), z.string()).describe('CSS styles to apply when condition is true'),\n })).optional().describe('Conditional formatting rules for list rows'),\n\n /** Inline Edit */\n inlineEdit: z.boolean().optional().describe('Allow inline editing of records directly in the list view'),\n\n /** Export */\n exportOptions: z.array(z.enum(['csv', 'xlsx', 'pdf', 'json'])).optional().describe('Available export format options'),\n\n /** User Actions (Airtable Interface parity) */\n userActions: UserActionsConfigSchema.optional().describe('User action toggles for the view toolbar'),\n\n /** Appearance (Airtable Interface parity) */\n appearance: AppearanceConfigSchema.optional().describe('Appearance and visualization configuration'),\n\n /** Tabs (Airtable Interface parity) */\n tabs: z.array(ViewTabSchema).optional().describe('Tab definitions for multi-tab view interface'),\n\n /** Add Record (Airtable Interface parity) */\n addRecord: AddRecordConfigSchema.optional().describe('Add record entry point configuration'),\n\n /** Record Count Display (Airtable Interface parity) */\n showRecordCount: z.boolean().optional().describe('Show record count at the bottom of the list'),\n\n /** Advanced: Allow Printing (Airtable Interface parity) */\n allowPrinting: z.boolean().optional().describe('Allow users to print the view'),\n\n /** Empty State */\n emptyState: z.object({\n title: I18nLabelSchema.optional(),\n message: I18nLabelSchema.optional(),\n icon: z.string().optional(),\n }).optional().describe('Empty state configuration when no records found'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the list view'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n}));\n\n/**\n * Form Field Configuration Schema\n * Detailed configuration for individual form fields.\n * \n * Reuses Data.FieldType and related constraints from the Data protocol to avoid duplication.\n * The `type` field auto-infers widget rendering; explicit `widget` overrides are only needed\n * for custom components.\n * \n * @example Auto-inferred select widget\n * { field: 'status', type: 'select', options: [{ label: 'Open', value: 'open' }] }\n * \n * @example Lookup field with reference\n * { field: 'account_id', type: 'lookup', reference: 'account', label: 'Account' }\n * \n * @example Custom widget override\n * { field: 'filter', widget: 'filter-builder' }\n */\nexport const FormFieldSchema: z.ZodType<any> = lazySchema(() => z.object({\n /** Field name (snake_case) */\n field: z.string().describe('Field name (snake_case)'),\n \n /** Field type — reuses Data.FieldType. When set, widget is auto-inferred (can be overridden). */\n type: FieldType.optional().describe('Field type (auto-infers widget if omitted)'),\n \n /** Select/multiselect options — only needed when type=select/multiselect/radio/checkboxes */\n options: z.array(SelectOptionSchema).optional().describe('Options for select/multiselect/radio/checkboxes fields'),\n \n /** Reference object for lookup/master_detail fields */\n reference: z.string().optional().describe('Target object name for lookup/master_detail fields'),\n \n /** Text constraints */\n maxLength: z.number().optional().describe('Maximum character length (for text/textarea/email/url/phone)'),\n minLength: z.number().optional().describe('Minimum character length'),\n \n /** Number constraints */\n min: z.number().optional().describe('Minimum value (for number/currency/percent/slider)'),\n max: z.number().optional().describe('Maximum value'),\n precision: z.number().optional().describe('Total digits (for number/currency)'),\n scale: z.number().optional().describe('Decimal places'),\n \n /** Multi-value flag */\n multiple: z.boolean().optional().describe('Allow multiple values (for select/lookup/file/image)'),\n \n /** UI overrides */\n label: I18nLabelSchema.optional().describe('Display label override'),\n placeholder: I18nLabelSchema.optional().describe('Placeholder text'),\n helpText: I18nLabelSchema.optional().describe('Help/hint text'),\n readonly: z.boolean().optional().describe('Read-only override'),\n immutable: z.boolean().optional().describe('Editable on create, locked once the record exists (e.g. machine names).'),\n required: z.boolean().optional().describe('Required override'),\n hidden: z.boolean().optional().describe('Hidden override'),\n colSpan: z.number().int().min(1).max(4).optional().describe('Column span in grid layout (1-4)'),\n \n /** Custom widget override — only needed when auto-inference is insufficient */\n widget: z.string().optional().describe('Custom widget/component name (overrides type-based inference)'),\n\n /** For `code` fields: source language (e.g. 'javascript', 'sql', 'json', 'typescript', 'expression', 'cel'). Drives syntax highlighting. */\n language: z.string().optional().describe('Code editor language (for type=code)'),\n\n /**\n * Sub-fields for `composite` / `repeater` / `record` types — declares\n * the inner shape of an embedded sub-object (composite), each row of\n * an embedded sub-object array (repeater), or each entry of a name-keyed\n * map (record). Recursive: any of the three can nest.\n *\n * Use `lookup` / `master_detail` instead when the children are independent\n * records with their own IDs in a separate object/table.\n */\n fields: z.array(z.lazy(() => FormFieldSchema)).optional()\n .describe('Sub-fields for composite/repeater/record types'),\n\n /**\n * For `record`-typed fields only. Declares how the map key is sourced,\n * displayed, and validated when an admin creates a new entry.\n *\n * The same identifier is also stored as `name` on the inner value (so\n * `record.fields[k].name === k`). Most callers can omit this and accept\n * the defaults: `{ field: 'name', label: 'Name', regex: /^[a-z_][a-z0-9_]*$/, immutable: true }`.\n *\n * See ADR-0007 (record form field type).\n */\n keyField: z.object({\n field: z.string().default('name').describe('Property name that holds the key inside each item (defaults to \"name\")'),\n label: I18nLabelSchema.optional().describe('Display label for the key column'),\n placeholder: I18nLabelSchema.optional().describe('Placeholder when entering a new key'),\n helpText: I18nLabelSchema.optional().describe('Help text under the key input'),\n /** Validation pattern serialised as a regex source string (no flags). */\n regex: z.string().optional().describe('JS regex source string the key must match (no flags)'),\n /** Renamable after creation? Defaults to false — keys are usually identifiers. */\n immutable: z.boolean().default(true).describe('If true, the key is read-only after creation'),\n }).optional().describe('Key column config for record-typed fields'),\n\n dependsOn: z.string().optional().describe('Parent field name for cascading'),\n visibleOn: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n}));\n\n/**\n * Form Layout Section\n */\nexport const FormSectionSchema = lazySchema(() => z.object({\n /**\n * Stable identifier for translation lookup. snake_case convention.\n * When provided, translation bundles can target this section's `label`\n * and `description` via `metadataForms.<type>.sections.<name>`.\n * Optional for backward-compat with sections that only have a `label`.\n */\n name: z.string().optional().describe('Stable section identifier for i18n lookup (snake_case)'),\n label: I18nLabelSchema.optional(),\n description: z.string().optional().describe('Optional description rendered under the section header.'),\n collapsible: z.boolean().default(false),\n collapsed: z.boolean().default(false),\n visibleOn: ExpressionInputSchema.optional().describe('Visibility predicate (CEL). Hides the whole section when false.'),\n columns: z.union([\n z.enum(['1', '2', '3', '4']),\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n ]).default(1).transform(val => (typeof val === 'string' ? parseInt(val) : val) as 1 | 2 | 3 | 4),\n fields: z.array(z.union([\n z.string(), // Legacy: simple field name\n FormFieldSchema, // Enhanced: detailed field config\n ])),\n}));\n\n/**\n * Form View Schema\n * Defines the layout for creating or editing a single record.\n * \n * @example Simple Sectioned Form\n * {\n * type: \"simple\",\n * sections: [\n * {\n * label: \"General Info\",\n * columns: 2,\n * fields: [\"name\", \"status\"]\n * },\n * {\n * label: \"Details\",\n * fields: [\"description\", { field: \"priority\", widget: \"rating\" }]\n * }\n * ]\n * }\n */\nexport const FormViewSchema = lazySchema(() => z.object({\n type: z.enum([\n 'simple', // Single column or sections\n 'tabbed', // Tabs\n 'wizard', // Step by step\n 'split', // Master-Detail split\n 'drawer', // Side panel\n 'modal' // Dialog\n ]).default('simple'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n sections: z.array(FormSectionSchema).optional(), // For simple layout\n groups: z.array(FormSectionSchema).optional(), // Legacy support -> alias to sections\n\n /**\n * Inline child collections (master-detail). When present, the standard\n * create/edit form for this object renders as a master-detail form — the\n * object's own fields on top, an editable grid per child collection below,\n * persisted together in ONE atomic transaction — with no bespoke page. Each\n * entry needs only `childObject`; the relationship FK and grid columns are\n * derived from the child object's metadata (override via\n * `relationshipField` / `columns`).\n */\n subforms: z.array(z.object({\n childObject: z.string().describe('Child object whose records are entered inline'),\n relationshipField: z.string().optional().describe('FK on the child pointing back to the parent (auto-detected when omitted)'),\n columns: z.array(z.any()).optional().describe('Editable grid columns (derived from the child object when omitted)'),\n amountField: z.string().optional().describe('Numeric child column summed for the running total'),\n totalField: z.string().optional().describe('Parent field to receive the rolled-up sum'),\n title: z.string().optional().describe('Section title'),\n addLabel: z.string().optional().describe('Add-row button label'),\n minRows: z.number().optional(),\n maxRows: z.number().optional(),\n })).optional().describe('Inline master-detail child collections'),\n\n /** Default Sort for Related Lists (e.g., sort child records by date) */\n defaultSort: z.array(z.object({\n field: z.string().describe('Field name to sort by'),\n order: z.enum(['asc', 'desc']).default('desc').describe('Sort direction'),\n })).optional().describe('Default sort order for related list views within this form'),\n\n /** Public form sharing configuration */\n sharing: SharingConfigSchema.optional().describe('Public sharing configuration for this form'),\n\n /**\n * What happens after a successful submit.\n *\n * - `thank-you` (default) — show a confirmation panel\n * - `redirect` — send the browser to a URL\n * - `continue` — reset the form so another response can be entered\n * - `next-record` — advance to the next record (internal queues only)\n */\n submitBehavior: z.union([\n z.object({\n kind: z.literal('thank-you'),\n title: z.string().optional(),\n message: z.string().optional(),\n }),\n z.object({\n kind: z.literal('redirect'),\n url: z.string(),\n delayMs: z.number().int().min(0).optional(),\n }),\n z.object({ kind: z.literal('continue') }),\n z.object({ kind: z.literal('next-record') }),\n ]).optional().describe('Post-submit behavior'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the form view'),\n}));\n\n/**\n * Master View Schema\n * Can define multiple named views.\n */\n/**\n * View Container Schema\n * Aggregates all view definitions for a specific object or context.\n * \n * @example\n * {\n * list: { type: \"grid\", columns: [\"name\"] },\n * form: { type: \"simple\", fields: [\"name\"] },\n * listViews: {\n * \"all\": { label: \"All\", filter: [] },\n * \"my\": { label: \"Mine\", filter: [[\"owner\", \"=\", \"{user_id}\"]] }\n * }\n * }\n */\nexport const ViewSchema = lazySchema(() => z.object({\n list: ListViewSchema.optional(), // Default list view\n form: FormViewSchema.optional(), // Default form view\n listViews: z.record(z.string(), ListViewSchema).optional().describe('Additional named list views'),\n formViews: z.record(z.string(), FormViewSchema).optional().describe('Additional named form views'),\n /**\n * ADR-0010 §3.7 — Package-level protection envelope. Package\n * authors declare lock policy here; the loader translates it\n * into the private `_lock` envelope at registration time and\n * strips this block before persistence. See\n * `shared/protection.zod.ts`.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this view.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n\n}));\n\n/**\n * Type-safe factory for creating view definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const taskViews = defineView({\n * list: {\n * type: 'grid',\n * data: { provider: 'object', object: 'task' },\n * columns: ['subject', 'status', 'priority', 'due_date'],\n * },\n * form: {\n * type: 'simple',\n * sections: [{ label: 'Details', fields: [{ field: 'subject' }] }],\n * },\n * });\n * ```\n */\nexport function defineView(config: z.input<typeof ViewSchema>): View {\n return ViewSchema.parse(config);\n}\n\n// ───────────────────────────────────────────────────────────────────────────\n// Independent View Item model (Object has-many View)\n// ───────────────────────────────────────────────────────────────────────────\n//\n// The {@link ViewSchema} *container* above aggregates every view of an object\n// into one document. That model cannot express runtime-authored views (a user\n// adding \"My high-value leads\" at runtime cannot append to a developer's source\n// file), and it forces multiple distinct views into a single designer.\n//\n// {@link ViewItemSchema} promotes each named view to a first-class, independently\n// addressable entity bound to its object by a foreign key. The object↔view\n// switcher is then a *query* (`getViewsByObject`) rather than embedded storage —\n// mirroring Airtable / Salesforce / Notion, where a table/object has-many views.\n//\n// `defineView` is retained as authoring sugar: the backend loader expands an\n// aggregated document into N ViewItems at registration time, so existing\n// `*.view.ts` files and the published spec keep working unchanged.\n\n/**\n * Qualified view-item identity: `<object>.<viewKey>` — dotted snake_case\n * segments, e.g. `crm_lead.pipeline`. Globally unique, and the object can be\n * recovered from the prefix, so the registry key never collides across objects.\n */\nexport const ViewItemNameSchema = z\n .string()\n .regex(\n /^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$/,\n 'View item name must be a dotted snake_case qualified name, e.g. \"crm_lead.pipeline\".',\n )\n .describe('Globally-unique view id, `<object>.<viewKey>`.');\n\n/**\n * Identity layer for a view item — its visibility scope and ownership.\n *\n * - `package` — shipped from `*.view.ts` source / an installed package.\n * Not deletable (reinstall restores it); customisable via an\n * override layer; hideable from the switcher.\n * - `shared` — authored at runtime, visible org-wide. Creating one is gated\n * by the `view.manageShared` capability.\n * - `personal` — authored at runtime, scoped to `owner`. Any user with read\n * access to the object may create one.\n *\n * Named `scope` (not `provenance`) to avoid colliding with the loader-set\n * `_provenance` envelope field, which tracks a different axis\n * (package | org | env-forced).\n */\nexport const ViewScopeSchema = z\n .enum(['package', 'shared', 'personal'])\n .describe('View identity layer: package | shared | personal.');\n\n/** Discriminator for the kind of view a {@link ViewItemSchema} carries. */\nexport const ViewKindSchema = z\n .enum(['list', 'form'])\n .describe('Whether `config` is a ListView (list family) or a FormView.');\n\n/**\n * Fields shared by every independent view item, regardless of kind. Returned\n * as a raw Zod shape so it composes into each discriminated-union member\n * without forcing eager schema construction.\n */\nfunction viewItemBaseShape() {\n return {\n name: ViewItemNameSchema,\n object: z\n .string()\n .describe('Bound object name — the foreign key used to aggregate views.'),\n label: I18nLabelSchema.optional().describe('Display label (supports i18n).'),\n isDefault: z\n .boolean()\n .optional()\n .describe(\"Whether this is the object's default view in the switcher.\"),\n order: z\n .number()\n .int()\n .optional()\n .describe(\"Sort order within the object's view switcher / left rail.\"),\n scope: ViewScopeSchema.optional().describe(\n 'Identity layer (defaults to `package` for source-loaded views).',\n ),\n owner: z\n .string()\n .optional()\n .describe('Owner user id — set when `scope` is `personal`.'),\n hidden: z\n .boolean()\n .optional()\n .describe('Hidden from the switcher (per-user / per-org declutter).'),\n /**\n * Package author protection block — same envelope as {@link ViewSchema};\n * the loader translates it into the private `_lock` envelope.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this view.',\n ),\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n };\n}\n\n/**\n * Independent View Item — a single named view bound to one object.\n *\n * Discriminated on `viewKind`: a `list` item carries a {@link ListViewSchema}\n * config (grid / kanban / calendar / …), a `form` item carries a\n * {@link FormViewSchema} config.\n *\n * @example\n * ```ts\n * const pipeline = defineViewItem({\n * name: 'crm_lead.pipeline',\n * object: 'crm_lead',\n * viewKind: 'list',\n * label: 'Pipeline',\n * config: {\n * type: 'kanban',\n * data: { provider: 'object', object: 'crm_lead' },\n * columns: ['name', 'stage', 'amount'],\n * },\n * });\n * ```\n */\nexport const ViewItemSchema = lazySchema(() =>\n z.discriminatedUnion('viewKind', [\n z.object({\n viewKind: z.literal('list'),\n config: ListViewSchema.describe('List-family view configuration.'),\n ...viewItemBaseShape(),\n }),\n z.object({\n viewKind: z.literal('form'),\n config: FormViewSchema.describe('Form view configuration.'),\n ...viewItemBaseShape(),\n }),\n ]),\n);\n\n/**\n * Type-safe factory for an independent {@link ViewItem}.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const allLeads = defineViewItem({\n * name: 'crm_lead.all',\n * object: 'crm_lead',\n * viewKind: 'list',\n * isDefault: true,\n * config: { type: 'grid', data: { provider: 'object', object: 'crm_lead' }, columns: ['name'] },\n * });\n * ```\n */\nexport function defineViewItem(config: z.input<typeof ViewItemSchema>): ViewItem {\n return ViewItemSchema.parse(config);\n}\n\n// ───────────────────────────────────────────────────────────────────────────\n// defineView container → ViewItem expansion (shared by every loader)\n//\n// `defineView({ list, form, listViews, formViews })` aggregates an object's\n// views into one document. Each registration path that ingests such a\n// container (the ObjectQL engine boot loop AND the metadata HMR plugin) must\n// expand it into N independent ViewItems registered under `<object>.<viewKey>`,\n// so each view is individually addressable and `getViewsByObject()` can rebuild\n// the switcher. The original container is ALSO kept under the bare `<object>`\n// key for backward-compatible reads. This logic lives in `@objectstack/spec`\n// (depended on by both objectql and metadata) so the two loaders cannot drift.\n\n/** A ViewItem materialised from an aggregated container (always `package`). */\nexport interface ExpandedViewItem {\n name: string;\n object: string;\n viewKind: 'list' | 'form';\n label?: unknown;\n config: any;\n isDefault?: boolean;\n order: number;\n scope: 'package';\n}\n\n/** True when a raw view artifact still uses the aggregated container shape\n * (and is not already an independent ViewItem, which carries `viewKind`). */\nexport function isAggregatedViewContainer(item: any): boolean {\n if (!item || typeof item !== 'object') return false;\n if (item.viewKind) return false; // already an independent ViewItem\n return Boolean(item.list || item.form || item.listViews || item.formViews);\n}\n\n/** Structural signature used to collapse a container's default `list`/`form`\n * with a redundant `listViews`/`formViews` restatement of the same view (the\n * common \"default == listViews.all\" authoring pattern). */\nfunction viewSignature(v: any): string {\n if (!v || typeof v !== 'object') return '';\n try {\n return JSON.stringify({ type: v.type ?? null, label: v.label ?? null, columns: v.columns ?? null });\n } catch {\n return '';\n }\n}\n\n/** Allocate a collision-free `<object>.<key>` name within one expansion. */\nfunction uniqueViewName(base: string, used: Set<string>): string {\n let name = base;\n let i = 2;\n while (used.has(name)) name = `${base}_${i++}`;\n used.add(name);\n return name;\n}\n\nfunction cloneViewConfig(v: any): any {\n try {\n return structuredClone(v);\n } catch {\n return JSON.parse(JSON.stringify(v));\n }\n}\n\n/**\n * Expand an aggregated view container into independent ViewItems.\n *\n * List family: `listViews` entries first (keys taken from the author), then the\n * default `list` — deduped by structural signature so a `listViews.all` that\n * merely restates `list` collapses into one item. The view matching the\n * declared default is flagged `isDefault`.\n *\n * Form family: `formViews` entries, then the default `form`.\n */\nexport function expandViewContainer(object: string, container: any): ExpandedViewItem[] {\n const out: ExpandedViewItem[] = [];\n const used = new Set<string>();\n let order = 0;\n\n // ---- list family ----\n const listSigToName = new Map<string, string>();\n const listViews =\n container.listViews && typeof container.listViews === 'object' ? container.listViews : {};\n for (const [k, v] of Object.entries<any>(listViews)) {\n if (!v || typeof v !== 'object') continue;\n const name = uniqueViewName(`${object}.${k}`, used);\n listSigToName.set(viewSignature(v), name);\n out.push({ name, object, viewKind: 'list', label: v.label, config: cloneViewConfig(v), order: order++, scope: 'package' });\n }\n const defaultList = container.list;\n let defaultListName: string | undefined;\n if (defaultList && typeof defaultList === 'object') {\n const dup = listSigToName.get(viewSignature(defaultList));\n if (dup) {\n defaultListName = dup; // already represented by a named listViews entry\n } else {\n const key = typeof defaultList.name === 'string' && defaultList.name ? defaultList.name : 'default';\n const name = uniqueViewName(`${object}.${key}`, used);\n out.push({ name, object, viewKind: 'list', label: defaultList.label, config: cloneViewConfig(defaultList), order: order++, scope: 'package' });\n defaultListName = name;\n }\n }\n if (!defaultListName && out.length) defaultListName = out[0].name;\n for (const item of out) {\n if (item.viewKind === 'list' && item.name === defaultListName) item.isDefault = true;\n }\n\n // ---- form family ----\n const formStart = out.length;\n const formSigSeen = new Set<string>();\n const formViews =\n container.formViews && typeof container.formViews === 'object' ? container.formViews : {};\n for (const [k, v] of Object.entries<any>(formViews)) {\n if (!v || typeof v !== 'object') continue;\n const name = uniqueViewName(`${object}.${k}`, used);\n formSigSeen.add(viewSignature(v));\n out.push({ name, object, viewKind: 'form', label: v.label, config: cloneViewConfig(v), order: order++, scope: 'package' });\n }\n const defaultForm = container.form;\n let defaultFormName: string | undefined;\n if (defaultForm && typeof defaultForm === 'object' && !formSigSeen.has(viewSignature(defaultForm))) {\n const key = typeof defaultForm.name === 'string' && defaultForm.name ? defaultForm.name : 'form';\n const name = uniqueViewName(`${object}.${key}`, used);\n out.push({ name, object, viewKind: 'form', label: defaultForm.label, config: cloneViewConfig(defaultForm), order: order++, scope: 'package' });\n defaultFormName = name;\n }\n if (!defaultFormName && out.length > formStart) defaultFormName = out[formStart].name;\n for (let i = formStart; i < out.length; i++) {\n if (out[i].name === defaultFormName) out[i].isDefault = true;\n }\n\n return out;\n}\n\n/**\n * Type-safe factory for a standalone {@link FormView} bound to a JSON Schema\n * rather than to an ObjectQL object.\n *\n * Use this for forms that edit **metadata** (e.g. `report.form.ts`,\n * `dashboard.form.ts`), **action inputs**, or **flow screens** — anywhere the\n * data shape is described by a Zod-derived JSON Schema instead of an Object\n * field set.\n *\n * The returned FormView is validated at definition time; the runtime form\n * renderer (`@object-ui/plugin-form`) inspects `data.provider === 'schema'`\n * and pulls field metadata from the resolved JSON Schema instead of from\n * ObjectQL.\n *\n * @example\n * ```ts\n * export const reportForm = defineForm({\n * schemaId: 'report',\n * type: 'tabbed',\n * sections: [\n * { label: 'Basics', columns: 2, fields: [\n * { field: 'name' },\n * { field: 'label' },\n * { field: 'objectName', widget: 'ref:object' },\n * { field: 'type' },\n * ]},\n * { label: 'Columns', fields: [{ field: 'columns', widget: 'master-detail' }] },\n * { label: 'Advanced', collapsible: true, collapsed: true, fields: [\n * { field: 'filter', widget: 'filter-builder' },\n * { field: 'chart', widget: 'chart-config' },\n * ]},\n * ],\n * });\n * ```\n */\nexport function defineForm(\n config: Omit<z.input<typeof FormViewSchema>, 'data'> & { schemaId: string },\n): FormView {\n const { schemaId, ...rest } = config;\n return FormViewSchema.parse({\n ...rest,\n data: { provider: 'schema', schemaId },\n });\n}\n\nexport type View = z.infer<typeof ViewSchema>;\nexport type ViewItem = z.infer<typeof ViewItemSchema>;\nexport type ViewScope = z.infer<typeof ViewScopeSchema>;\nexport type ViewKind = z.infer<typeof ViewKindSchema>;\nexport type ListView = z.infer<typeof ListViewSchema>;\nexport type FormView = z.infer<typeof FormViewSchema>;\nexport type FormSection = z.infer<typeof FormSectionSchema>;\nexport type ListColumn = z.infer<typeof ListColumnSchema>;\nexport type FormField = z.infer<typeof FormFieldSchema>;\nexport type SelectionConfig = z.infer<typeof SelectionConfigSchema>;\nexport type NavigationConfig = z.infer<typeof NavigationConfigSchema>;\nexport type PaginationConfig = z.infer<typeof PaginationConfigSchema>;\nexport type ViewData = z.infer<typeof ViewDataSchema>;\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\nexport type HttpMethod = z.infer<typeof HttpMethodSchema>;\nexport type ColumnSummary = z.infer<typeof ColumnSummarySchema>;\nexport type RowHeight = z.infer<typeof RowHeightSchema>;\nexport type GroupingConfig = z.infer<typeof GroupingConfigSchema>;\nexport type GalleryConfig = z.infer<typeof GalleryConfigSchema>;\nexport type TimelineConfig = z.infer<typeof TimelineConfigSchema>;\nexport type ListChartConfig = z.infer<typeof ListChartConfigSchema>;\nexport type ViewSharing = z.infer<typeof ViewSharingSchema>;\nexport type RowColorConfig = z.infer<typeof RowColorConfigSchema>;\nexport type VisualizationType = z.infer<typeof VisualizationTypeSchema>;\nexport type UserActionsConfig = z.infer<typeof UserActionsConfigSchema>;\nexport type AppearanceConfig = z.infer<typeof AppearanceConfigSchema>;\nexport type ViewTab = z.infer<typeof ViewTabSchema>;\nexport type UserFilterField = z.infer<typeof UserFilterFieldSchema>;\nexport type UserFilters = z.infer<typeof UserFiltersSchema>;\nexport type AddRecordConfig = z.infer<typeof AddRecordConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Unified Query DSL Specification\n * \n * Based on industry best practices from:\n * - Prisma ORM\n * - Strapi CMS\n * - TypeORM\n * - LoopBack Framework\n * \n * Version: 1.0.0\n * Status: Draft\n * \n * Objective: Define a JSON-based, database-agnostic query syntax standard\n * for data filtering interactions between frontend and backend APIs.\n * \n * Design Principles:\n * 1. Declarative: Frontend describes \"what data to get\", not \"how to query\"\n * 2. Database Agnostic: Syntax contains no database-specific directives\n * 3. Type Safe: Structure can be statically inferred by TypeScript\n * 4. Convention over Configuration: Implicit syntax for common queries\n */\n\n/**\n * Field Reference\n * Represents a reference to another field/column instead of a literal value.\n * Used for joins (ON clause) and cross-field comparisons.\n * \n * @example\n * // user.id = order.owner_id\n * { \"$eq\": { \"$field\": \"order.owner_id\" } }\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldReferenceSchema = lazySchema(() => z.object({\n $field: z.string().describe('Field Reference/Column Name')\n}));\n\nexport type FieldReference = z.infer<typeof FieldReferenceSchema>;\n\n// ============================================================================\n// 3.1 Comparison Operators\n// ============================================================================\n\n/**\n * Comparison operators for equality and inequality checks.\n * Supported data types: Any\n */\nexport const EqualityOperatorSchema = lazySchema(() => z.object({\n /** Equal to (default) - SQL: = | MongoDB: $eq */\n $eq: z.any().optional(),\n \n /** Not equal to - SQL: <> or != | MongoDB: $ne */\n $ne: z.any().optional(),\n}));\n\n/**\n * Comparison operators for numeric and date comparisons.\n * Supported data types: Number, Date\n */\nexport const ComparisonOperatorSchema = lazySchema(() => z.object({\n /** Greater than - SQL: > | MongoDB: $gt */\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Greater than or equal to - SQL: >= | MongoDB: $gte */\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than - SQL: < | MongoDB: $lt */\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than or equal to - SQL: <= | MongoDB: $lte */\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n}));\n\n// ============================================================================\n// 3.2 Set & Range Operators\n// ============================================================================\n\n/**\n * Set operators for membership checks.\n */\nexport const SetOperatorSchema = lazySchema(() => z.object({\n /** In list - SQL: IN (?, ?, ?) | MongoDB: $in */\n $in: z.array(z.any()).optional(),\n \n /** Not in list - SQL: NOT IN (...) | MongoDB: $nin */\n $nin: z.array(z.any()).optional(),\n}));\n\n/**\n * Range operator for interval checks (closed interval).\n * SQL: BETWEEN ? AND ? | MongoDB: $gte AND $lte\n */\nexport const RangeOperatorSchema = lazySchema(() => z.object({\n /** Between (inclusive) - takes [min, max] array */\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n}));\n\n// ============================================================================\n// 3.3 String-Specific Operators\n// ============================================================================\n\n/**\n * String pattern matching operators.\n * Note: Case sensitivity should be handled at backend level.\n */\nexport const StringOperatorSchema = lazySchema(() => z.object({\n /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */\n $contains: z.string().optional(),\n \n /** Does not contain substring - SQL: NOT LIKE %?% | MongoDB: $not: $regex */\n $notContains: z.string().optional(),\n \n /** Starts with prefix - SQL: LIKE ?% | MongoDB: $regex */\n $startsWith: z.string().optional(),\n \n /** Ends with suffix - SQL: LIKE %? | MongoDB: $regex */\n $endsWith: z.string().optional(),\n}));\n\n// ============================================================================\n// 3.5 Special Operators\n// ============================================================================\n\n/**\n * Special check operators for null and existence.\n */\nexport const SpecialOperatorSchema = lazySchema(() => z.object({\n /** Is null check - SQL: IS NULL (true) / IS NOT NULL (false) | MongoDB: field: null */\n $null: z.boolean().optional(),\n \n /** Field exists check (primarily for NoSQL) - MongoDB: $exists */\n $exists: z.boolean().optional(),\n}));\n\n// ============================================================================\n// Combined Field Operators\n// ============================================================================\n\n/**\n * All field-level operators combined.\n * These can be applied to individual fields in a filter.\n */\nexport const FieldOperatorsSchema = lazySchema(() => z.object({\n // Equality\n $eq: z.any().optional(),\n $ne: z.any().optional(),\n \n // Comparison (numeric/date)\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n // Set & Range\n $in: z.array(z.any()).optional(),\n $nin: z.array(z.any()).optional(),\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n \n // String-specific\n $contains: z.string().optional(),\n $notContains: z.string().optional(),\n $startsWith: z.string().optional(),\n $endsWith: z.string().optional(),\n \n // Special\n $null: z.boolean().optional(),\n $exists: z.boolean().optional(),\n}));\n\n// ============================================================================\n// 3.4 Logical Operators & Recursive Filter Structure\n// ============================================================================\n\n/**\n * Recursive filter type that supports:\n * 1. Implicit equality: { field: value }\n * 2. Explicit operators: { field: { $op: value } }\n * 3. Logical combinations: { $and: [...], $or: [...], $not: {...} }\n * 4. Nested relations: { relation: { field: value } }\n */\nexport type FilterCondition = {\n [key: string]: \n | any // Implicit equality: key: value\n | z.infer<typeof FieldOperatorsSchema> // Explicit operators: key: { $op: value }\n | FilterCondition; // Nested relation: key: { nested: ... }\n} & {\n /** Logical AND - combines all conditions that must be true */\n $and?: FilterCondition[];\n \n /** Logical OR - at least one condition must be true */\n $or?: FilterCondition[];\n \n /** Logical NOT - negates the condition */\n $not?: FilterCondition;\n};\n\n/**\n * Zod schema for recursive filter validation.\n * Uses z.lazy() to handle recursive structure.\n */\nexport const FilterConditionSchema: z.ZodType<FilterCondition> = z.lazy(() =>\n z.record(z.string(), z.unknown()).and(\n z.object({\n $and: z.array(FilterConditionSchema).optional(),\n $or: z.array(FilterConditionSchema).optional(),\n $not: FilterConditionSchema.optional(),\n })\n )\n);\n\n// ============================================================================\n// Query Filter Wrapper\n// ============================================================================\n\n/**\n * Top-level query filter wrapper.\n * This is typically used as the \"where\" clause in a query.\n * \n * @example\n * ```typescript\n * const filter: QueryFilter = {\n * where: {\n * status: \"active\", // Implicit equality\n * age: { $gte: 18 }, // Explicit operator\n * $or: [ // Logical combination\n * { role: \"admin\" },\n * { email: { $contains: \"@company.com\" } }\n * ],\n * profile: { // Nested relation\n * verified: true\n * }\n * }\n * }\n * ```\n */\nexport const QueryFilterSchema = lazySchema(() => z.object({\n where: FilterConditionSchema.optional(),\n}));\n\n// ============================================================================\n// TypeScript Type Exports\n// ============================================================================\n\n/**\n * Type-safe filter operators for use in TypeScript.\n * \n * @example\n * ```typescript\n * type UserFilter = Filter<User>;\n * \n * const filter: UserFilter = {\n * age: { $gte: 18 },\n * email: { $contains: \"@example.com\" }\n * };\n * ```\n */\nexport type Filter<T = any> = {\n [K in keyof T]?: \n | T[K] // Implicit equality\n | {\n $eq?: T[K];\n $ne?: T[K];\n $gt?: T[K] extends number | Date ? T[K] : never;\n $gte?: T[K] extends number | Date ? T[K] : never;\n $lt?: T[K] extends number | Date ? T[K] : never;\n $lte?: T[K] extends number | Date ? T[K] : never;\n $in?: T[K][];\n $nin?: T[K][];\n $between?: T[K] extends number | Date ? [T[K], T[K]] : never;\n $contains?: T[K] extends string ? string : never;\n $notContains?: T[K] extends string ? string : never;\n $startsWith?: T[K] extends string ? string : never;\n $endsWith?: T[K] extends string ? string : never;\n $null?: boolean;\n $exists?: boolean;\n }\n | (T[K] extends object ? Filter<T[K]> : never); // Nested relation\n} & {\n $and?: Filter<T>[];\n $or?: Filter<T>[];\n $not?: Filter<T>;\n};\n\n/**\n * Scalar types supported by the filter system.\n */\nexport type Scalar = string | number | boolean | Date | null;\n\n// Export inferred types\nexport type FieldOperators = z.infer<typeof FieldOperatorsSchema>;\nexport type QueryFilter = z.infer<typeof QueryFilterSchema>;\n\n// ============================================================================\n// Normalization Utilities (Internal Representation)\n// ============================================================================\n\n/**\n * Normalized filter AST structure.\n * This is the internal representation after converting all syntactic sugar\n * to explicit operators.\n * \n * Stage 1: Normalization Pass\n * Input: { age: 18, role: \"admin\" }\n * Output: { $and: [{ age: { $eq: 18 } }, { role: { $eq: \"admin\" } }] }\n * \n * This simplifies adapter implementation by providing a consistent structure.\n */\nexport const NormalizedFilterSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n $and: z.array(\n z.union([\n // Field condition: { field: { $op: value } }\n z.record(z.string(), FieldOperatorsSchema),\n // Nested logical group\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $or: z.array(\n z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $not: z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ]).optional(),\n })\n);\n\nexport type NormalizedFilter = z.infer<typeof NormalizedFilterSchema>;\n\n// ============================================================================\n// AST Array Format Detection & Validation\n// ============================================================================\n\n/**\n * Set of valid AST comparison operators (case-insensitive).\n * Used by `isFilterAST()` to validate AST structure beyond `Array.isArray`.\n */\nexport const VALID_AST_OPERATORS = new Set([\n '=', '==', '!=', '<>', '>', '>=', '<', '<=',\n 'in', 'nin', 'not_in',\n 'contains', 'notcontains', 'not_contains', 'like',\n 'startswith', 'starts_with',\n 'endswith', 'ends_with',\n 'between',\n 'is_null', 'is_not_null',\n]);\n\n/**\n * Detect whether a value is a valid Filter AST array structure.\n *\n * A valid AST is one of:\n * - Comparison node: `[field: string, operator: string, value: unknown]` where operator is a known operator\n * - Logical node: `[\"and\" | \"or\", ...children]` where children are valid AST nodes\n * - Legacy flat array: `[[cond], [cond], ...]` where all elements are sub-arrays (each a valid AST node)\n *\n * This replaces the naïve `Array.isArray(filter)` check, preventing accidental\n * misidentification of arbitrary arrays as filter ASTs.\n *\n * @example\n * isFilterAST([\"status\", \"=\", \"active\"]) // true\n * isFilterAST([\"and\", [\"a\", \"=\", 1], [\"b\", \">\", 2]]) // true\n * isFilterAST([[\"a\", \"=\", 1], [\"b\", \"=\", 2]]) // true (legacy)\n * isFilterAST([1, 2, 3]) // false\n * isFilterAST(\"not an array\") // false\n * isFilterAST({ status: \"active\" }) // false\n */\nexport function isFilterAST(filter: unknown): boolean {\n if (!Array.isArray(filter) || filter.length === 0) return false;\n\n const first = filter[0];\n\n // Logical node: [\"and\", ...] or [\"or\", ...]\n if (typeof first === 'string') {\n const lower = first.toLowerCase();\n if (lower === 'and' || lower === 'or') {\n return filter.length >= 2 && filter.slice(1).every((child: unknown) => isFilterAST(child));\n }\n\n // Comparison node: [field, operator, value]\n if (filter.length >= 2 && typeof filter[1] === 'string') {\n return VALID_AST_OPERATORS.has(filter[1].toLowerCase());\n }\n }\n\n // Legacy flat array: [[cond], [cond], ...]\n if (filter.every((item: unknown) => isFilterAST(item))) {\n return filter.length > 0;\n }\n\n return false;\n}\n\n// ============================================================================\n// AST Array → FilterCondition Conversion\n// ============================================================================\n\n/**\n * Operator mapping from AST infix operators to FilterCondition `$`-prefixed operators.\n */\nconst AST_OPERATOR_MAP: Record<string, string> = {\n '=': '$eq',\n '==': '$eq',\n '!=': '$ne',\n '<>': '$ne',\n '>': '$gt',\n '>=': '$gte',\n '<': '$lt',\n '<=': '$lte',\n 'in': '$in',\n 'nin': '$nin',\n 'not_in': '$nin',\n 'contains': '$contains',\n 'notcontains': '$notContains',\n 'not_contains': '$notContains',\n 'like': '$contains',\n 'startswith': '$startsWith',\n 'starts_with': '$startsWith',\n 'endswith': '$endsWith',\n 'ends_with': '$endsWith',\n 'between': '$between',\n 'is_null': '$null',\n 'is_not_null': '$null',\n};\n\n/**\n * Convert a single AST comparison node `[field, operator, value]` to a FilterCondition object.\n */\nfunction convertComparison(node: [string, string, unknown]): FilterCondition {\n const [field, operator, value] = node;\n const op = operator.toLowerCase();\n\n // Special case: equality shorthand\n if (op === '=' || op === '==') {\n return { [field]: value } as FilterCondition;\n }\n\n // Null check operators\n if (op === 'is_null') {\n return { [field]: { $null: true } } as FilterCondition;\n }\n if (op === 'is_not_null') {\n return { [field]: { $null: false } } as FilterCondition;\n }\n\n const mapped = AST_OPERATOR_MAP[op];\n if (mapped) {\n return { [field]: { [mapped]: value } } as FilterCondition;\n }\n\n // Fallback: use the operator as-is with $ prefix\n return { [field]: { [`$${op}`]: value } } as FilterCondition;\n}\n\n/**\n * Parse a filter from AST array format to FilterCondition object format.\n *\n * The AST array format is used by the ObjectUI client and the `FilterBuilder`:\n * - Comparison: `[field, operator, value]` → `{ field: value }` or `{ field: { $op: value } }`\n * - Logical AND: `[\"and\", cond1, cond2, ...]` → `{ $and: [...] }`\n * - Logical OR: `[\"or\", cond1, cond2, ...]` → `{ $or: [...] }`\n *\n * If the input is already a FilterCondition object (not an array), it is returned as-is.\n * If the input is `null` or `undefined`, it is returned as-is.\n *\n * @example\n * // Simple condition\n * parseFilterAST([\"status\", \"=\", \"active\"])\n * // → { status: \"active\" }\n *\n * @example\n * // Compound AND\n * parseFilterAST([\"and\", [\"priority\", \"=\", \"high\"], [\"status\", \"=\", \"active\"]])\n * // → { $and: [{ priority: \"high\" }, { status: \"active\" }] }\n *\n * @example\n * // Object passthrough\n * parseFilterAST({ status: \"active\" })\n * // → { status: \"active\" }\n */\nexport function parseFilterAST(filter: unknown): FilterCondition | undefined {\n if (filter == null) return undefined;\n if (!Array.isArray(filter)) return filter as FilterCondition;\n if (filter.length === 0) return undefined;\n\n const first = filter[0];\n\n // Logical node: [\"and\", cond1, cond2, ...] or [\"or\", cond1, cond2, ...]\n if (typeof first === 'string' && (first.toLowerCase() === 'and' || first.toLowerCase() === 'or')) {\n const logicOp = `$${first.toLowerCase()}` as '$and' | '$or';\n const children = filter.slice(1).map((child: unknown) => parseFilterAST(child)).filter(Boolean) as FilterCondition[];\n if (children.length === 0) return undefined;\n if (children.length === 1) return children[0];\n return { [logicOp]: children } as FilterCondition;\n }\n\n // Comparison node: [field, operator, value]\n if (filter.length >= 2 && typeof first === 'string') {\n return convertComparison(filter as [string, string, unknown]);\n }\n\n // Legacy flat array: [[field, op, val], [field, op, val], ...]\n // All elements are sub-arrays → treat as implicit AND\n if (filter.every((item: unknown) => Array.isArray(item))) {\n const children = filter.map((child: unknown) => parseFilterAST(child)).filter(Boolean) as FilterCondition[];\n if (children.length === 0) return undefined;\n if (children.length === 1) return children[0];\n return { $and: children } as FilterCondition;\n }\n\n return undefined;\n}\n\n// ============================================================================\n// Constants & Metadata\n// ============================================================================\n\n/**\n * All supported operator keys.\n * Useful for validation and parsing.\n */\nexport const FILTER_OPERATORS = [\n // Equality\n '$eq', '$ne',\n // Comparison\n '$gt', '$gte', '$lt', '$lte',\n // Set & Range\n '$in', '$nin', '$between',\n // String\n '$contains', '$notContains', '$startsWith', '$endsWith',\n // Special\n '$null', '$exists',\n] as const;\n\n/**\n * Logical operator keys.\n */\nexport const LOGICAL_OPERATORS = ['$and', '$or', '$not'] as const;\n\n/**\n * All operator keys (field + logical).\n */\nexport const ALL_OPERATORS = [...FILTER_OPERATORS, ...LOGICAL_OPERATORS] as const;\n\nexport type FilterOperatorKey = typeof FILTER_OPERATORS[number];\nexport type LogicalOperatorKey = typeof LOGICAL_OPERATORS[number];\nexport type OperatorKey = typeof ALL_OPERATORS[number];\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ProtectionSchema } from '../shared/protection.zod';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ChartTypeSchema, ChartConfigSchema } from './chart.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Color variant for dashboard widgets (e.g., KPI cards).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WidgetColorVariantSchema = lazySchema(() => z.enum([\n 'default',\n 'blue',\n 'teal',\n 'orange',\n 'purple',\n 'success',\n 'warning',\n 'danger',\n]).describe('Widget color variant'));\n\n/**\n * Action type for widget action buttons.\n */\nexport const WidgetActionTypeSchema = lazySchema(() => z.enum([\n 'script',\n 'url',\n 'modal',\n 'flow',\n 'api',\n]).describe('Widget action type'));\n\n/**\n * Dashboard Header Action Schema\n * An action button displayed in the dashboard header area.\n */\nexport const DashboardHeaderActionSchema = lazySchema(() => z.object({\n /** Action label */\n label: I18nLabelSchema.describe('Action button label'),\n\n /** Action URL or target */\n actionUrl: z.string().describe('URL or target for the action'),\n\n /** Action type */\n actionType: WidgetActionTypeSchema.optional().describe('Type of action'),\n\n /** Icon identifier */\n icon: z.string().optional().describe('Icon identifier for the action button'),\n}).describe('Dashboard header action'));\n\n/**\n * Dashboard Header Schema\n * Structured header configuration for the dashboard.\n */\nexport const DashboardHeaderSchema = lazySchema(() => z.object({\n /** Whether to show the dashboard title in the header */\n showTitle: z.boolean().default(true).describe('Show dashboard title in header'),\n\n /** Whether to show the dashboard description in the header */\n showDescription: z.boolean().default(true).describe('Show dashboard description in header'),\n\n /** Action buttons displayed in the header */\n actions: z.array(DashboardHeaderActionSchema).optional().describe('Header action buttons'),\n}).describe('Dashboard header configuration'));\n\n/**\n * Dashboard Widget Schema\n * A single component on the dashboard grid.\n */\nexport const DashboardWidgetSchema = lazySchema(() => z.object({\n /** Unique widget identifier (snake_case, used for targetWidgets references) */\n id: SnakeCaseIdentifierSchema.describe('Unique widget identifier (snake_case)'),\n\n /** Widget Title */\n title: I18nLabelSchema.optional().describe('Widget title'),\n\n /** Widget Description (displayed below the title) */\n description: I18nLabelSchema.optional().describe('Widget description text below the header'),\n \n /** Visualization Type */\n type: ChartTypeSchema.default('metric').describe('Visualization type'),\n \n /** Chart Configuration */\n chartConfig: ChartConfigSchema.optional().describe('Chart visualization configuration'),\n\n /** Color variant for the widget (e.g., KPI card accent color) */\n colorVariant: WidgetColorVariantSchema.optional().describe('Widget color variant for theming'),\n\n /**\n * Runtime capability gate — widget is hidden when the named object is\n * not registered in the runtime's SchemaRegistry. Mirrors\n * `NavigationItem.requiresObject` so cloud-only widgets (e.g. those\n * keyed on `sys_app` / `sys_package_installation`) silently disappear\n * in single-environment runtimes instead of rendering a 404 error.\n * Set explicitly to the dataset's base object when the widget should be\n * gated on that object's availability.\n */\n requiresObject: z.string().optional().describe('Hide the widget unless the named object is registered'),\n\n /**\n * Runtime capability gate — widget is hidden when the named kernel\n * service is not registered. Mirrors `NavigationItem.requiresService`.\n */\n requiresService: z.string().optional().describe('Hide the widget unless the named kernel service is registered'),\n\n /** Action URL for the widget header action button */\n actionUrl: z.string().optional().describe('URL or target for the widget action button'),\n\n /** Action type for the widget header action button */\n actionType: WidgetActionTypeSchema.optional().describe('Type of action for the widget action button'),\n\n /** Icon for the widget header action button */\n actionIcon: z.string().optional().describe('Icon identifier for the widget action button'),\n \n /** Presentation-scope filter (MongoDB-style), ANDed into the dataset query as `runtimeFilter`. */\n filter: FilterConditionSchema.optional().describe('Presentation-scope filter (runtimeFilter)'),\n\n /**\n * Period-over-period comparison primitive.\n *\n * When set, the renderer runs a second query against a shifted time\n * window and surfaces the delta (metric widgets show a secondary\n * value + arrow; chart widgets render a muted/dashed overlay series).\n *\n * - `'previousPeriod'` — auto-detect the comparison window from the\n * widget's `filter` date macros (e.g. `{current_month_start}` →\n * `{last_month_start}`). Falls back to no comparison when the\n * filter contains no resolvable date range.\n * - `'previousYear'` — shift the resolved filter window back by one\n * calendar year.\n * - `{ offset: '7d' | '1M' | '1y' }` — shift by an explicit\n * ISO-8601-like duration. Units: `d` (days), `w` (weeks),\n * `M` (months), `y` (years).\n */\n compareTo: z.union([\n z.literal('previousPeriod'),\n z.literal('previousYear'),\n z.object({\n offset: z.string().regex(/^\\d+[dwMy]$/, 'Offset must match <N>(d|w|M|y), e.g. \"7d\", \"1M\", \"1y\"'),\n }),\n ]).optional().describe('Period-over-period comparison window'),\n\n /**\n * ADR-0021 — the semantic-layer `dataset` this widget binds to. The widget\n * selects the dataset's dimensions/measures BY NAME; the dataset owns the base\n * object, allowed joins, intrinsic filter, dimensions, and certified measures,\n * so numbers stay consistent across every surface. This is the single\n * author-facing analytics shape (the legacy inline `object` + `categoryField`\n * + `valueField` + `aggregate` query was removed in the single-form cutover).\n */\n dataset: SnakeCaseIdentifierSchema.describe('Dataset name to bind (ADR-0021)'),\n /** Dimension names (from the dataset) for X / group / split. */\n dimensions: z.array(z.string()).optional().describe('Dimension names — X/group/split'),\n /** Measure names (from the dataset) for the value axis. */\n values: z.array(z.string()).min(1).describe('Measure names — Y (at least one)'),\n\n /**\n * Layout Position (React-Grid-Layout style)\n * x: column (0-11)\n * y: row\n * w: width (1-12)\n * h: height\n */\n layout: z.object({\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n }).describe('Grid layout position'),\n \n /** Widget specific options (colors, legend, etc.) */\n options: z.unknown().optional().describe('Widget specific configuration'),\n\n /**\n * Rule ids of build diagnostics intentionally suppressed on this widget\n * (e.g. `'table-count-only'` when a single-row summary table is deliberate).\n * Consumed by `objectstack build` / `objectstack lint`; no runtime effect.\n */\n suppressWarnings: z.array(z.string()).optional().describe('Build diagnostic rule ids suppressed on this widget'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n // ADR-0021 single-form: every widget binds a `dataset` and selects `values`\n // (both required above) — there is no inline-query shape to disambiguate.\n}));\n\n/**\n * Dynamic options binding for global filters.\n * Allows dropdown options to be fetched from an object at runtime.\n */\nexport const GlobalFilterOptionsFromSchema = lazySchema(() => z.object({\n /** Source object name to fetch options from */\n object: z.string().describe('Source object name'),\n\n /** Field to use as option value */\n valueField: z.string().describe('Field to use as option value'),\n\n /** Field to use as option label */\n labelField: z.string().describe('Field to use as option label'),\n\n /** Optional filter to apply when fetching options */\n filter: FilterConditionSchema.optional().describe('Filter to apply to source object'),\n}).describe('Dynamic filter options from object'));\n\n/**\n * Global Filter Schema\n * Defines a single global filter control for the dashboard filter bar.\n */\nexport const GlobalFilterSchema = lazySchema(() => z.object({\n /** Field name to filter on */\n field: z.string().describe('Field name to filter on'),\n\n /** Display label for the filter */\n label: I18nLabelSchema.optional().describe('Display label for the filter'),\n\n /** Filter input type */\n type: z.enum(['text', 'select', 'date', 'number', 'lookup']).optional().describe('Filter input type'),\n\n /** Static options for select/lookup filters */\n options: z.array(z.object({\n value: z.union([z.string(), z.number(), z.boolean()]).describe('Option value'),\n label: I18nLabelSchema,\n })).optional().describe('Static filter options'),\n\n /** Dynamic data binding for filter options */\n optionsFrom: GlobalFilterOptionsFromSchema.optional().describe('Dynamic filter options from object'),\n\n /** Default filter value */\n defaultValue: z.union([z.string(), z.number(), z.boolean()]).optional().describe('Default filter value'),\n\n /** Filter application scope */\n scope: z.enum(['dashboard', 'widget']).default('dashboard').describe('Filter application scope'),\n\n /** Widget IDs to apply this filter to (when scope is widget) */\n targetWidgets: z.array(z.string()).optional().describe('Widget IDs to apply this filter to'),\n}));\n\n/**\n * Dashboard Schema\n * Represents a page containing multiple visualizations.\n * \n * @example Sales Executive Dashboard\n * {\n * name: \"sales_overview\",\n * label: \"Sales Executive Overview\",\n * widgets: [\n * {\n * title: \"Total Pipe\",\n * type: \"metric\",\n * object: \"opportunity\",\n * valueField: \"amount\",\n * aggregate: \"sum\",\n * layout: { x: 0, y: 0, w: 3, h: 2 }\n * },\n * {\n * title: \"Revenue by Region\",\n * type: \"bar\",\n * object: \"order\",\n * categoryField: \"region\",\n * valueField: \"total\",\n * aggregate: \"sum\",\n * layout: { x: 3, y: 0, w: 6, h: 4 }\n * }\n * ]\n * }\n */\nexport const DashboardSchema = lazySchema(() => z.object({\n /** Machine name */\n name: SnakeCaseIdentifierSchema.describe('Dashboard unique name'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Dashboard label'),\n \n /** Description */\n description: I18nLabelSchema.optional().describe('Dashboard description'),\n\n /** Structured header configuration */\n header: DashboardHeaderSchema.optional().describe('Dashboard header configuration'),\n \n /** Collection of widgets */\n widgets: z.array(DashboardWidgetSchema).describe('Widgets to display'),\n\n /** Grid column count — defaults to 12 for a standard 12-column grid */\n columns: z.number().int().min(1).max(24).optional().describe('Number of grid columns (default 12)'),\n\n /** Grid gap in Tailwind spacing units (e.g. 4 = 1rem) */\n gap: z.number().int().min(0).optional().describe('Grid gap in Tailwind spacing units'),\n\n /** Auto-refresh */\n refreshInterval: z.number().optional().describe('Auto-refresh interval in seconds'),\n\n /** Dashboard Date Range (Global time filter) */\n dateRange: z.object({\n field: z.string().optional().describe('Default date field name for time-based filtering'),\n defaultRange: z.enum(['today', 'yesterday', 'this_week', 'last_week', 'this_month', 'last_month', 'this_quarter', 'last_quarter', 'this_year', 'last_year', 'last_7_days', 'last_30_days', 'last_90_days', 'custom']).default('this_month').describe('Default date range preset'),\n allowCustomRange: z.boolean().default(true).describe('Allow users to pick a custom date range'),\n }).optional().describe('Global dashboard date range filter configuration'),\n\n /** Global Filters */\n globalFilters: z.array(GlobalFilterSchema).optional().describe('Global filters that apply to all widgets in the dashboard'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n /**\n * ADR-0010 §3.7 — Package-level protection envelope. Package\n * authors declare lock policy here; the loader translates it\n * into the private `_lock` envelope at registration time and\n * strips this block before persistence. See\n * `shared/protection.zod.ts`.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this dashboard.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n\n}));\n\nexport type Dashboard = z.infer<typeof DashboardSchema>;\nexport type DashboardInput = z.input<typeof DashboardSchema>;\nexport type DashboardWidget = z.infer<typeof DashboardWidgetSchema>;\nexport type DashboardHeader = z.infer<typeof DashboardHeaderSchema>;\nexport type DashboardHeaderAction = z.infer<typeof DashboardHeaderActionSchema>;\nexport type WidgetColorVariant = z.infer<typeof WidgetColorVariantSchema>;\nexport type WidgetActionType = z.infer<typeof WidgetActionTypeSchema>;\nexport type GlobalFilter = z.infer<typeof GlobalFilterSchema>;\nexport type GlobalFilterOptionsFrom = z.infer<typeof GlobalFilterOptionsFromSchema>;\n\n/**\n * Dashboard Factory Helper\n */\nexport const Dashboard = {\n create: (config: z.input<typeof DashboardSchema>): Dashboard => DashboardSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ProtectionSchema } from '../shared/protection.zod';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ChartConfigSchema } from './chart.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Report Type Enum\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ReportType = z.enum([\n 'tabular', // Simple list\n 'summary', // Grouped by row\n 'matrix', // Grouped by row and column\n 'joined' // Joined multiple blocks\n]);\n\n/**\n * Report Column Schema\n */\nexport const ReportColumnSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name'),\n label: I18nLabelSchema.optional().describe('Override label'),\n aggregate: z.enum(['sum', 'avg', 'max', 'min', 'count', 'unique']).optional().describe('Aggregation function'),\n /** Responsive visibility/priority per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive visibility for this column'),\n}));\n\n/**\n * Report Grouping Schema\n */\nexport const ReportGroupingSchema = lazySchema(() => z.object({\n field: z.string().describe('Field to group by'),\n sortOrder: z.enum(['asc', 'desc']).default('asc'),\n dateGranularity: z.enum(['day', 'week', 'month', 'quarter', 'year']).optional().describe('For date fields'),\n}));\n\n/**\n * Report Chart Schema\n * Embedded visualization configuration using unified chart taxonomy.\n */\nexport const ReportChartSchema = lazySchema(() => ChartConfigSchema.extend({\n /** Report-specific chart configuration */\n xAxis: z.string().describe('Grouping field for X-Axis'),\n yAxis: z.string().describe('Summary field for Y-Axis'),\n groupBy: z.string().optional().describe('Additional grouping field'),\n}));\n\n/**\n * Joined Report Block Schema\n *\n * Represents a single sub-report inside a `type: 'joined'` report. Each block\n * is a self-contained, independently-queried report stacked vertically (or\n * arranged in a grid) inside the joined container. Blocks are used for\n * comparative dashboards where each panel is a different slice of the same\n * domain — e.g. \"new customers / churned / silent\" in a customer-churn\n * report, or \"new / qualified / closed\" in a lead-funnel report.\n *\n * Blocks may declare their own filter (combined with the container filter\n * via `$and` at render time) and their own grouping / aggregation.\n *\n * Notes for implementers:\n * - `type` defaults to `tabular` — leave a block's type implicit if the\n * sub-report is just a list. Set explicitly to `summary` or `matrix` for\n * aggregated blocks.\n * - The schema is intentionally permissive about the column shape: blocks\n * are not allowed to be themselves `joined` (no recursion).\n */\nexport const JoinedReportBlockSchema: z.ZodTypeAny = lazySchema(() => z.object({\n /** Stable id for the block (used as react key, telemetry, deeplinks). */\n name: SnakeCaseIdentifierSchema,\n /** Human label shown above the block. Falls back to `name`. */\n label: I18nLabelSchema.optional(),\n /** Optional description rendered below the label. */\n description: I18nLabelSchema.optional(),\n /** Block report type — `joined` is intentionally excluded (no recursion). */\n type: z.enum(['tabular', 'summary', 'matrix']).default('tabular'),\n /** Optional inline chart configuration. */\n chart: ReportChartSchema.optional(),\n\n /**\n * ADR-0021 — the dataset this block binds to (single-form). The block selects\n * the dataset's measures by name; the legacy inline `objectName` + `columns` +\n * `groupings` query was removed in the cutover.\n */\n dataset: SnakeCaseIdentifierSchema.optional().describe('Dataset name to bind (ADR-0021)'),\n /** Dimension names (from the dataset) to group rows by. Dataset-bound only. */\n rows: z.array(z.string()).optional().describe('Dimension names down (dataset-bound)'),\n /** Dimension names across — matrix blocks pivot rows × columns (ADR-0021 D2). */\n columns: z.array(z.string()).optional().describe('Dimension names across (matrix, dataset-bound)'),\n /** Measure names (from the dataset) to display. Dataset-bound only. */\n values: z.array(z.string()).optional().describe('Measure names to show (dataset-bound)'),\n /** Render-time scope filter, ANDed at query time. Dataset-bound only. */\n runtimeFilter: FilterConditionSchema.optional().describe('Render-time scope filter (dataset-bound)'),\n}));\n\n/**\n * Report Schema\n * Deep data analysis definition.\n */\nexport const ReportSchema = lazySchema(() => z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Report unique name'),\n label: I18nLabelSchema.describe('Report label'),\n description: I18nLabelSchema.optional(),\n\n /** Report Configuration */\n type: ReportType.default('tabular').describe('Report format type'),\n\n /**\n * ADR-0021 — the semantic-layer `dataset` this report binds to. The report\n * renders the dataset's named measures grouped by the chosen `rows`\n * dimensions — numbers stay consistent with every other surface using the\n * same dataset. This is the single author-facing analytics shape (the legacy\n * inline `objectName` + `columns` + `groupings` query was removed in the\n * single-form cutover). For a `joined` report, the data lives on `blocks`.\n */\n dataset: SnakeCaseIdentifierSchema.optional().describe('Dataset name to bind (ADR-0021)'),\n /** Dimension names (from the dataset) to group rows by (down axis). */\n rows: z.array(z.string()).optional().describe('Dimension names down'),\n /**\n * Dimension names across (ADR-0021 D2) — a `matrix` report pivots\n * `rows` × `columns` with `values` in the cells. Ignored for other types.\n */\n columns: z.array(z.string()).optional().describe('Dimension names across (matrix)'),\n /** Measure names (from the dataset) to display. */\n values: z.array(z.string()).optional().describe('Measure names to show'),\n /** Render-time scope filter, ANDed at query time. */\n runtimeFilter: FilterConditionSchema.optional().describe('Render-time scope filter'),\n /**\n * ADR-0021 D2 — click an aggregated row/cell to open the underlying\n * records (dataset-backed; the host resolves the dataset's object and\n * dimension→field mapping). Default on; set `false` to disable.\n */\n drilldown: z.boolean().default(true).describe('Click-through to underlying records'),\n\n /** Visualization */\n chart: ReportChartSchema.optional().describe('Embedded chart configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n\n /**\n * Joined report blocks — only meaningful when `type: 'joined'`.\n *\n * A joined report renders multiple independent sub-reports stacked\n * vertically in the same view. Each block declares its own object,\n * columns, groupings and filter. The container-level `filter` is ANDed\n * into every block at query time so a top-level scope (e.g. \"this\n * quarter\") flows down without per-block duplication.\n *\n * Renderers must ignore `blocks` when `type !== 'joined'`.\n */\n blocks: z.array(JoinedReportBlockSchema).optional().describe('Sub-reports for type=joined'),\n /**\n * ADR-0010 §3.7 — Package-level protection envelope. Package\n * authors declare lock policy here; the loader translates it\n * into the private `_lock` envelope at registration time and\n * strips this block before persistence. See\n * `shared/protection.zod.ts`.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this report.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n\n}).superRefine((r, ctx) => {\n // ADR-0021 single-form: a report is dataset-bound. A `joined` report carries\n // its data on `blocks` (each block dataset-bound); every other type needs a\n // top-level `dataset` + `values`.\n if (r.type === 'joined') {\n if (!r.blocks || r.blocks.length === 0) {\n ctx.addIssue({ code: 'custom', message: 'a `joined` report needs `blocks`.', path: ['blocks'] });\n }\n } else if (!r.dataset || !r.values || r.values.length === 0) {\n ctx.addIssue({\n code: 'custom',\n message: 'a report needs `dataset` + `values` (measure names).',\n path: ['dataset'],\n });\n }\n}));\n\nexport type JoinedReportBlock = z.infer<typeof JoinedReportBlockSchema>;\nexport type JoinedReportBlockInput = z.input<typeof JoinedReportBlockSchema>;\n\n/**\n * Report Types\n * \n * Note: For configuration/definition contexts, use the Input types (e.g., ReportInput)\n * which allow optional fields with defaults to be omitted.\n */\nexport type Report = z.infer<typeof ReportSchema>;\nexport type ReportColumn = z.infer<typeof ReportColumnSchema>;\nexport type ReportGrouping = z.infer<typeof ReportGroupingSchema>;\nexport type ReportChart = z.infer<typeof ReportChartSchema>;\n\n/**\n * Input Types for Report Configuration\n * Use these when defining reports in configuration files.\n */\nexport type ReportInput = z.input<typeof ReportSchema>;\nexport type ReportColumnInput = z.input<typeof ReportColumnSchema>;\nexport type ReportGroupingInput = z.input<typeof ReportGroupingSchema>;\nexport type ReportChartInput = z.input<typeof ReportChartSchema>;\n\n/**\n * Report Factory Helper\n */\nexport const Report = {\n create: (config: ReportInput): Report => ReportSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from './filter.zod';\n\n/**\n * Sort Node\n * Represents \"Order By\".\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SortNodeSchema = lazySchema(() => z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc']).default('asc')\n}));\n\n/**\n * Aggregation Function Enum\n * Standard aggregation functions for data analysis.\n * \n * Supported Functions:\n * - **count**: Count rows (SQL: COUNT(*) or COUNT(field))\n * - **sum**: Sum numeric values (SQL: SUM(field))\n * - **avg**: Average numeric values (SQL: AVG(field))\n * - **min**: Minimum value (SQL: MIN(field))\n * - **max**: Maximum value (SQL: MAX(field))\n * - **count_distinct**: Count unique values (SQL: COUNT(DISTINCT field))\n * - **array_agg**: Aggregate values into array (SQL: ARRAY_AGG(field))\n * - **string_agg**: Concatenate values (SQL: STRING_AGG(field, delimiter))\n * \n * Performance Considerations:\n * - COUNT(*) is typically faster than COUNT(field) as it doesn't check for nulls\n * - COUNT DISTINCT may require additional memory for tracking unique values\n * - Window aggregates (with OVER clause) can be more efficient than subqueries\n * - Large GROUP BY operations benefit from proper indexing on grouped fields\n * \n * @example\n * // SQL: SELECT region, SUM(amount) FROM sales GROUP BY region\n * {\n * object: 'sales',\n * fields: ['region'],\n * aggregations: [\n * { function: 'sum', field: 'amount', alias: 'total_sales' }\n * ],\n * groupBy: ['region']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT COUNT(Id) FROM Account\n * {\n * object: 'account',\n * aggregations: [\n * { function: 'count', alias: 'total_accounts' }\n * ]\n * }\n */\nexport const AggregationFunction = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'array_agg', 'string_agg'\n]);\n\n/**\n * Date Granularity Enum\n * Used to bucket date/timestamp fields into uniform periods during GROUP BY.\n *\n * Backends MAY emit `DATE_TRUNC` (PostgreSQL), `DATE_FORMAT` (MySQL),\n * `$dateTrunc` (MongoDB), or any other equivalent. When a driver does not\n * support server-side truncation the engine falls back to an in-memory bucket\n * using ISO-8601 conventions (weeks start Monday).\n */\nexport const DateGranularity = z.enum(['day', 'week', 'month', 'quarter', 'year']);\n\n/**\n * GroupBy Node\n *\n * A grouping target — either a bare field name (string) for plain grouping,\n * or a structured object that adds `dateGranularity` for time-bucketed\n * grouping. The string form remains the canonical short-hand:\n *\n * ```ts\n * groupBy: ['region', { field: 'closed_at', dateGranularity: 'quarter' }]\n * ```\n *\n * This is backward-compatible: every existing `groupBy: ['region']` payload\n * continues to validate.\n */\nexport const GroupByNodeSchema = lazySchema(() => z.union([\n z.string(),\n z.object({\n field: z.string().describe('Field to group by'),\n dateGranularity: DateGranularity.optional().describe('Bucket date values into uniform periods (day/week/month/quarter/year)'),\n /** Optional alias for the projected group value (defaults to `field`). */\n alias: z.string().optional().describe('Alias for the projected group value'),\n }),\n]));\n\n/**\n * Aggregation Node\n * Represents an aggregated field with function.\n * \n * Aggregations summarize data across groups of rows (GROUP BY).\n * Used with `groupBy` to create analytical queries.\n * \n * @example\n * // SQL: SELECT customer_id, COUNT(*), SUM(amount) FROM orders GROUP BY customer_id\n * {\n * object: 'order',\n * fields: ['customer_id'],\n * aggregations: [\n * { function: 'count', alias: 'order_count' },\n * { function: 'sum', field: 'amount', alias: 'total_amount' }\n * ],\n * groupBy: ['customer_id']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT LeadSource, COUNT(Id) FROM Lead GROUP BY LeadSource\n * {\n * object: 'lead',\n * fields: ['lead_source'],\n * aggregations: [\n * { function: 'count', alias: 'lead_count' }\n * ],\n * groupBy: ['lead_source']\n * }\n */\nexport const AggregationNodeSchema = lazySchema(() => z.object({\n function: AggregationFunction.describe('Aggregation function'),\n field: z.string().optional().describe('Field to aggregate (optional for COUNT(*))'),\n alias: z.string().describe('Result column alias'),\n distinct: z.boolean().optional().describe('Apply DISTINCT before aggregation'),\n filter: FilterConditionSchema.optional().describe('Filter/Condition to apply to the aggregation (FILTER WHERE clause)'),\n}));\n\n/**\n * Join Type Enum\n * Standard SQL join types for combining tables.\n * \n * Join Types:\n * - **inner**: Returns only matching rows from both tables (SQL: INNER JOIN)\n * - **left**: Returns all rows from left table, matching rows from right (SQL: LEFT JOIN)\n * - **right**: Returns all rows from right table, matching rows from left (SQL: RIGHT JOIN)\n * - **full**: Returns all rows from both tables (SQL: FULL OUTER JOIN)\n * \n * @example\n * // SQL: SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * on: ['order.customer_id', '=', 'customer.id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL-style: Find all customers and their orders (if any)\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * on: ['customer.id', '=', 'order.customer_id']\n * }\n * ]\n * }\n */\nexport const JoinType = z.enum(['inner', 'left', 'right', 'full']);\n\n/**\n * Join Execution Strategy\n * Hints to the query engine on how to execute the join.\n * \n * Strategies:\n * - **auto**: Engine decides best strategy (Default).\n * - **database**: Push down join to the database (Requires same datasource).\n * - **hash**: Load both sets into memory and hash join (Cross-datasource, memory intensive).\n * - **loop**: Nested loop lookup (N+1 safe version). (Good for small right-side lookups).\n */\nexport const JoinStrategy = z.enum(['auto', 'database', 'hash', 'loop']);\n\n/**\n * Join Node\n * Represents table joins for combining data from multiple objects.\n * \n * Joins connect related data across multiple tables using ON conditions.\n * Supports both direct object joins and subquery joins.\n * \n * @example\n * // SQL: SELECT o.*, c.name FROM orders o INNER JOIN customers c ON o.customer_id = c.id\n * {\n * object: 'order',\n * fields: ['id', 'amount'],\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Multi-table join\n * // SELECT * FROM orders o\n * // INNER JOIN customers c ON o.customer_id = c.id\n * // LEFT JOIN shipments s ON o.id = s.order_id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * },\n * {\n * type: 'left',\n * object: 'shipment',\n * alias: 's',\n * on: ['order.id', '=', 's.order_id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT Name, (SELECT LastName FROM Contacts) FROM Account\n * {\n * object: 'account',\n * fields: ['name'],\n * joins: [\n * {\n * type: 'left',\n * object: 'contact',\n * on: ['account.id', '=', 'contact.account_id']\n * }\n * ]\n * }\n * \n * @example\n * // Subquery Join: Join with a filtered/aggregated dataset\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * alias: 'high_value_orders',\n * on: ['customer.id', '=', 'high_value_orders.customer_id'],\n * subquery: {\n * object: 'order',\n * fields: ['customer_id', 'total'],\n * filters: ['total', '>', 1000]\n * }\n * }\n * ]\n * }\n */\nexport const JoinNodeSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n type: JoinType.describe('Join type'),\n strategy: JoinStrategy.optional().describe('Execution strategy hint'),\n object: z.string().describe('Object/table to join'),\n alias: z.string().optional().describe('Table alias'),\n on: FilterConditionSchema.describe('Join condition'),\n subquery: z.lazy(() => QuerySchema).optional().describe('Subquery instead of object'),\n })\n);\n\n/**\n * Window Function Enum\n * Advanced analytical functions for row-based calculations.\n * \n * Window Functions:\n * - **row_number**: Sequential number within partition (SQL: ROW_NUMBER() OVER (...))\n * - **rank**: Rank with gaps for ties (SQL: RANK() OVER (...))\n * - **dense_rank**: Rank without gaps (SQL: DENSE_RANK() OVER (...))\n * - **percent_rank**: Relative rank as percentage (SQL: PERCENT_RANK() OVER (...))\n * - **lag**: Access previous row value (SQL: LAG(field) OVER (...))\n * - **lead**: Access next row value (SQL: LEAD(field) OVER (...))\n * - **first_value**: First value in window (SQL: FIRST_VALUE(field) OVER (...))\n * - **last_value**: Last value in window (SQL: LAST_VALUE(field) OVER (...))\n * - **sum/avg/count/min/max**: Aggregates over window (SQL: SUM(field) OVER (...))\n * \n * @example\n * // SQL: SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY amount DESC) as rank\n * // FROM orders\n * {\n * object: 'order',\n * fields: ['id', 'customer_id', 'amount'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'rank',\n * over: {\n * partitionBy: ['customer_id'],\n * orderBy: [{ field: 'amount', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Running total with SUM() OVER (...)\n * {\n * object: 'transaction',\n * fields: ['date', 'amount'],\n * windowFunctions: [\n * {\n * function: 'sum',\n * field: 'amount',\n * alias: 'running_total',\n * over: {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: 'UNBOUNDED PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunction = z.enum([\n 'row_number', 'rank', 'dense_rank', 'percent_rank',\n 'lag', 'lead', 'first_value', 'last_value',\n 'sum', 'avg', 'count', 'min', 'max'\n]);\n\n/**\n * Window Specification\n * Defines PARTITION BY and ORDER BY for window functions.\n * \n * Window specifications control how window functions compute values:\n * - **partitionBy**: Divide rows into groups (like GROUP BY but without collapsing rows)\n * - **orderBy**: Define order for ranking and offset functions\n * - **frame**: Specify which rows to include in aggregate calculations\n * \n * @example\n * // Partition by department, order by salary\n * {\n * partitionBy: ['department'],\n * orderBy: [{ field: 'salary', order: 'desc' }]\n * }\n * \n * @example\n * // Moving average with frame specification\n * {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: '6 PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n */\nexport const WindowSpecSchema = lazySchema(() => z.object({\n partitionBy: z.array(z.string()).optional().describe('PARTITION BY fields'),\n orderBy: z.array(SortNodeSchema).optional().describe('ORDER BY specification'),\n frame: z.object({\n type: z.enum(['rows', 'range']).optional(),\n start: z.string().optional().describe('Frame start (e.g., \"UNBOUNDED PRECEDING\", \"1 PRECEDING\")'),\n end: z.string().optional().describe('Frame end (e.g., \"CURRENT ROW\", \"1 FOLLOWING\")'),\n }).optional().describe('Window frame specification'),\n}));\n\n/**\n * Window Function Node\n * Represents window function with OVER clause.\n * \n * Window functions perform calculations across a set of rows related to the current row,\n * without collapsing the result set (unlike GROUP BY aggregations).\n * \n * @example\n * // SQL: Top 3 products per category\n * // SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY sales DESC) as rank\n * // FROM products\n * {\n * object: 'product',\n * fields: ['name', 'category', 'sales'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'category_rank',\n * over: {\n * partitionBy: ['category'],\n * orderBy: [{ field: 'sales', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Year-over-year comparison with LAG\n * {\n * object: 'monthly_sales',\n * fields: ['month', 'revenue'],\n * windowFunctions: [\n * {\n * function: 'lag',\n * field: 'revenue',\n * alias: 'prev_year_revenue',\n * over: {\n * orderBy: [{ field: 'month', order: 'asc' }]\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunctionNodeSchema = lazySchema(() => z.object({\n function: WindowFunction.describe('Window function name'),\n field: z.string().optional().describe('Field to operate on (for aggregate window functions)'),\n alias: z.string().describe('Result column alias'),\n over: WindowSpecSchema.describe('Window specification (OVER clause)'),\n}));\n\n/**\n * Field Selection Node\n * Represents \"Select\" attributes, including joins.\n */\nexport const FieldNodeSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n z.string(), // Primitive field: \"name\"\n z.object({\n field: z.string(), // Relationship field: \"owner\"\n fields: z.array(FieldNodeSchema).optional(), // Nested select: [\"name\", \"email\"]\n alias: z.string().optional()\n })\n ])\n);\n\n/**\n * Full-Text Search Configuration\n * Defines full-text search parameters for text queries.\n * \n * Supports:\n * - Multi-field search\n * - Relevance scoring\n * - Fuzzy matching\n * - Language-specific analyzers\n * \n * @example\n * {\n * query: \"John Smith\",\n * fields: [\"name\", \"email\", \"description\"],\n * fuzzy: true,\n * boost: { \"name\": 2.0, \"email\": 1.5 }\n * }\n */\nexport const FullTextSearchSchema = lazySchema(() => z.object({\n query: z.string().describe('Search query text'),\n fields: z.array(z.string()).optional().describe('Fields to search in (if not specified, searches all text fields)'),\n fuzzy: z.boolean().optional().default(false).describe('Enable fuzzy matching (tolerates typos)'),\n operator: z.enum(['and', 'or']).optional().default('or').describe('Logical operator between terms'),\n boost: z.record(z.string(), z.number()).optional().describe('Field-specific relevance boosting (field name -> boost factor)'),\n minScore: z.number().optional().describe('Minimum relevance score threshold'),\n language: z.string().optional().describe('Language for text analysis (e.g., \"en\", \"zh\", \"es\")'),\n highlight: z.boolean().optional().default(false).describe('Enable search result highlighting'),\n}));\n\nexport type FullTextSearch = z.infer<typeof FullTextSearchSchema>;\n\n/**\n * Query AST Schema\n * The universal data retrieval contract defined in `ast-structure.mdx`.\n * \n * This schema represents ObjectQL - a universal query language that abstracts\n * SQL, NoSQL, and SaaS APIs into a single unified interface.\n * \n * Updates (v2):\n * - Aligned with modern ORM standards (Prisma/TypeORM)\n * - Added `cursor` based pagination support\n * - Renamed `top`/`skip` to `limit`/`offset`\n * - Unified filtering syntax with `FilterConditionSchema`\n * \n * Updates (v3):\n * - Added `search` parameter for full-text search (P2 requirement)\n * \n * @example\n * // Simple query: SELECT name, email FROM account WHERE status = 'active'\n * {\n * object: 'account',\n * fields: ['name', 'email'],\n * where: { status: 'active' }\n * }\n * \n * @example\n * // Pagination with Limit/Offset\n * {\n * object: 'post',\n * where: { published: true },\n * orderBy: [{ field: 'created_at', order: 'desc' }],\n * limit: 20,\n * offset: 40\n * }\n * \n * @example\n * // Full-text search\n * {\n * object: 'article',\n * search: {\n * query: \"machine learning\",\n * fields: [\"title\", \"content\"],\n * fuzzy: true,\n * boost: { \"title\": 2.0 }\n * },\n * limit: 10\n * }\n */\nconst BaseQuerySchema = z.object({\n /** Target Entity */\n object: z.string().describe('Object name (e.g. account)'),\n \n /** Select Clause */\n fields: z.array(FieldNodeSchema).optional().describe('Fields to retrieve'),\n \n /** Where Clause (Filtering) */\n where: FilterConditionSchema.optional().describe('Filtering criteria (WHERE)'),\n \n /** Full-Text Search */\n search: FullTextSearchSchema.optional().describe('Full-text search configuration ($search parameter)'),\n \n /** Order By Clause (Sorting) */\n orderBy: z.array(SortNodeSchema).optional().describe('Sorting instructions (ORDER BY)'),\n \n /** Pagination */\n limit: z.number().optional().describe('Max records to return (LIMIT)'),\n offset: z.number().optional().describe('Records to skip (OFFSET)'),\n top: z.number().optional().describe('Alias for limit (OData compatibility)'),\n cursor: z.record(z.string(), z.unknown()).optional().describe('Cursor for keyset pagination'),\n \n /** Joins */\n joins: z.array(JoinNodeSchema).optional().describe('Explicit Table Joins'),\n \n /** Aggregations */\n aggregations: z.array(AggregationNodeSchema).optional().describe('Aggregation functions'),\n \n /** Group By Clause */\n groupBy: z.array(GroupByNodeSchema).optional().describe('GROUP BY targets (strings or `{field, dateGranularity?}` objects for date bucketing)'),\n \n /** Having Clause */\n having: FilterConditionSchema.optional().describe('HAVING clause for aggregation filtering'),\n \n /** Window Functions */\n windowFunctions: z.array(WindowFunctionNodeSchema).optional().describe('Window functions with OVER clause'),\n \n /** Subquery flag */\n distinct: z.boolean().optional().describe('SELECT DISTINCT flag'),\n});\n\n/**\n * QueryAST — Abstract Syntax Tree for data queries.\n *\n * The `expand` property enables recursive loading of related records through\n * lookup and master_detail fields. Each key is a relationship field name; the\n * value is a nested QueryAST that can further filter, select, sort, and expand\n * the related records (up to a default max depth of 3).\n *\n * @example\n * ```ts\n * const ast: QueryAST = {\n * object: 'task',\n * fields: ['title', 'assignee'],\n * expand: {\n * assignee: { object: 'user', fields: ['name', 'email'] },\n * project: {\n * object: 'project',\n * expand: { org: { object: 'org' } } // nested expand\n * }\n * }\n * };\n * ```\n */\nexport type QueryAST = z.infer<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryAST>;\n};\n\nexport type QueryInput = z.input<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryInput>;\n};\n\nexport const QuerySchema: z.ZodType<QueryAST> = lazySchema(() => BaseQuerySchema.extend({\n expand: z.lazy(() => z.record(z.string(), QuerySchema)).optional().describe(\n 'Recursive relation loading map. Keys are lookup/master_detail field names; '\n + 'values are nested QueryAST objects that control select, filter, sort, and '\n + 'further expansion on the related object. The engine resolves expand via '\n + 'batch $in queries (driver-agnostic) with a default max depth of 3.'\n ),\n}));\n\nexport type SortNode = z.infer<typeof SortNodeSchema>;\nexport type AggregationNode = z.infer<typeof AggregationNodeSchema>;\nexport type GroupByNode = z.infer<typeof GroupByNodeSchema>;\nexport type DateGranularityValue = z.infer<typeof DateGranularity>;\nexport type JoinNode = z.infer<typeof JoinNodeSchema>;\nexport type WindowFunctionNode = z.infer<typeof WindowFunctionNodeSchema>;\nexport type WindowSpec = z.infer<typeof WindowSpecSchema>;\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { lazySchema } from '../shared/lazy-schema';\nimport { ProtectionSchema } from '../shared/protection.zod';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema } from './i18n.zod';\nimport { AggregationFunction, DateGranularity } from '../data/query.zod';\n\n/**\n * Analytics Dataset — the one semantic layer (ADR-0021).\n *\n * A `dataset` is a named, reusable analytical definition: a base object, the\n * relationships to include (joins are *derived* from the object graph — the\n * author never writes an `ON` clause), and the declared **dimensions**\n * (groupable axes) and **measures** (aggregatable values). It is deliberately\n * SMALLER than `QuerySchema`: no raw SQL, no hand-authored join predicates,\n * no window/having grammar in the author surface.\n *\n * Presentations (`report` / `dashboard`) bind to a dataset by reference and\n * pick dimensions/measures *by name*. The dataset compiles to the existing\n * Cube analytics runtime (ADR-0021 D-A=(c)); RLS / tenant scoping is enforced\n * by the runtime per joined object (D-C), never declared here.\n *\n * Naming: this module owns the high-prior `dataset` / `dimension` / `measure`\n * vocabulary (LookML / dbt / Cube / PowerBI). The Zod export identifiers are\n * `Dataset`-prefixed (`DatasetDimensionSchema`, `DatasetMeasureSchema`) so they\n * do not clash with the Cube layer's `DimensionSchema` / `MetricSchema` in\n * `data/analytics.zod.ts` while the two layers coexist (Phase 1). The Cube\n * layer is absorbed/retired in a later phase (D-A).\n */\n\n/**\n * Dimension — a groupable axis (e.g. \"region\", \"close_date by quarter\").\n */\nexport const DatasetDimensionSchema = lazySchema(() => z.object({\n /** Referenced by presentations (report rows/columns, widget dimensions). */\n name: SnakeCaseIdentifierSchema.describe('Dimension name — referenced by presentations'),\n label: I18nLabelSchema.optional(),\n /**\n * A field on the base object, OR a `relationship.field` path (e.g.\n * `account.region`). The join is DERIVED from the declared relationship in\n * `Dataset.include` — the author never writes a predicate.\n */\n field: z.string().describe('Base field or `relationship.field` path'),\n type: z.enum(['string', 'number', 'date', 'boolean', 'lookup']).optional(),\n /** Default bucketing for date dimensions (day/week/month/quarter/year). */\n dateGranularity: DateGranularity.optional(),\n}));\n\n/**\n * Derived-measure operator (ADR-0021 Q1).\n * A derived measure references OTHER measures BY NAME only — no raw fields,\n * no raw SQL — keeping it enumerable and reviewable.\n */\nexport const DerivedMeasureOp = z.enum(['ratio', 'sum', 'difference', 'product']);\n\n/**\n * Measure — an aggregatable value (e.g. \"revenue = sum(amount)\"). Defined ONCE\n * here; every presentation references it by name.\n */\nexport const DatasetMeasureSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Measure name — e.g. \"revenue\"; defined once'),\n label: I18nLabelSchema.optional(),\n /** Aggregation function — reuses the canonical query.zod enum. */\n aggregate: AggregationFunction.describe('Aggregation (sum/avg/count/...)'),\n /** Base or `relationship.field`. Optional for `count` (count(*)). */\n field: z.string().optional().describe('Aggregated field; optional for count(*)'),\n /** Measure-scoped filter (e.g. only won deals for \"won_amount\"). */\n filter: FilterConditionSchema.optional(),\n /** Display format, e.g. \"$0,0.00\", \"0.0%\". */\n format: z.string().optional(),\n /** Governance: a human-blessed metric — the review checkpoint. */\n certified: z.boolean().default(false).describe('Blessed metric (governance checkpoint)'),\n /**\n * Derived measure — computed from OTHER measures in this dataset by name\n * only. e.g. `{ op: 'ratio', of: ['won_amount', 'total_amount'] }`.\n * Mutually exclusive with `field`/`aggregate` semantics: when `derived` is\n * set, `aggregate` is ignored at compile time.\n */\n derived: z.object({\n op: DerivedMeasureOp,\n /** Names of other measures in this dataset (2+ for ratio/difference). */\n of: z.array(SnakeCaseIdentifierSchema).min(1),\n }).optional(),\n}));\n\n/**\n * Dataset — the single analytical source of truth (ADR-0021 D1).\n */\nexport const DatasetSchema = lazySchema(() => z.object({\n /** Identity. */\n name: SnakeCaseIdentifierSchema.describe('Dataset unique name'),\n label: I18nLabelSchema.describe('Dataset label'),\n description: I18nLabelSchema.optional(),\n\n /** Base object — the FROM. */\n object: z.string().describe('Base object name'),\n\n /**\n * Relationships to include, BY NAME (lookup / master_detail field names on\n * the object graph). Joins are COMPILED from these — the author writes no ON\n * clause. v1 (D-C): only declared relationships are joinable; no arbitrary\n * predicates.\n */\n include: z.array(z.string()).optional().describe('Relationship names to join (derived from object graph)'),\n\n /** Definition-level filter (the dataset's intrinsic scope, e.g. non-deleted). */\n filter: FilterConditionSchema.optional().describe('Intrinsic dataset scope filter'),\n\n /** The semantic contract presentations bind to. */\n dimensions: z.array(DatasetDimensionSchema).describe('Groupable axes'),\n measures: z.array(DatasetMeasureSchema).describe('Aggregatable values'),\n\n /**\n * ADR-0010 — package-author protection envelope; the loader translates this\n * into the private `_lock` envelope at registration and strips it before\n * persistence.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this dataset.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n}).superRefine((ds, ctx) => {\n // Measure names must be unique (presentations reference them by name).\n const measureNames = new Set<string>();\n for (const m of ds.measures) {\n if (measureNames.has(m.name)) {\n ctx.addIssue({ code: 'custom', message: `duplicate measure name \"${m.name}\"`, path: ['measures'] });\n }\n measureNames.add(m.name);\n }\n // Dimension names must be unique.\n const dimNames = new Set<string>();\n for (const d of ds.dimensions) {\n if (dimNames.has(d.name)) {\n ctx.addIssue({ code: 'custom', message: `duplicate dimension name \"${d.name}\"`, path: ['dimensions'] });\n }\n dimNames.add(d.name);\n }\n // Derived measures may only reference OTHER measures declared in this dataset.\n for (const m of ds.measures) {\n if (!m.derived) {\n // A non-derived measure needs a field unless it is a plain count.\n if (!m.field && m.aggregate !== 'count') {\n ctx.addIssue({\n code: 'custom',\n message: `measure \"${m.name}\" requires \\`field\\` (only \\`count\\` may omit it)`,\n path: ['measures'],\n });\n }\n continue;\n }\n for (const ref of m.derived.of) {\n if (ref === m.name) {\n ctx.addIssue({ code: 'custom', message: `derived measure \"${m.name}\" cannot reference itself`, path: ['measures'] });\n } else if (!measureNames.has(ref)) {\n ctx.addIssue({\n code: 'custom',\n message: `derived measure \"${m.name}\" references unknown measure \"${ref}\"`,\n path: ['measures'],\n });\n }\n }\n }\n}));\n\n/**\n * Authoring helper — identity function that gives editors full type-checking\n * and inference when defining a dataset in a `*.dataset.ts` file.\n *\n * @example\n * ```ts\n * export default defineDataset({\n * name: 'sales',\n * label: 'Sales',\n * object: 'opportunity',\n * include: ['account'],\n * dimensions: [{ name: 'region', field: 'account.region' }],\n * measures: [{ name: 'revenue', aggregate: 'sum', field: 'amount', certified: true }],\n * });\n * ```\n */\nexport function defineDataset(dataset: DatasetInput): DatasetInput {\n return dataset;\n}\n\nexport type DatasetDimension = z.infer<typeof DatasetDimensionSchema>;\nexport type DatasetMeasure = z.infer<typeof DatasetMeasureSchema>;\nexport type DerivedMeasureOpValue = z.infer<typeof DerivedMeasureOp>;\nexport type Dataset = z.infer<typeof DatasetSchema>;\n\n/** Input types for authoring (optional fields with defaults may be omitted). */\nexport type DatasetDimensionInput = z.input<typeof DatasetDimensionSchema>;\nexport type DatasetMeasureInput = z.input<typeof DatasetMeasureSchema>;\nexport type DatasetInput = z.input<typeof DatasetSchema>;\n","/**\n * Form layout for the Report metadata editor.\n *\n * Bound to {@link ReportSchema} via `data.provider = 'schema'`. The\n * `@object-ui/plugin-form` renderer resolves field metadata from the\n * Zod-derived JSON Schema served by `/api/v1/meta` and applies the\n * widget/visibility hints declared here.\n *\n * ADR-0021 single-form: a report is dataset-bound — it binds a semantic-layer\n * `dataset` and selects its `values` (measure names) grouped by `rows`\n * (dimension names). The legacy inline `objectName` + `columns` + `groupings`\n * query form was removed from {@link ReportSchema} in the 9.0 cutover, so this\n * form no longer declares those fields.\n */\n\nimport { defineForm } from './view.zod';\n\nexport const reportForm = defineForm({\n schemaId: 'report',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'Identity and report type.',\n columns: 2,\n fields: [\n { field: 'name', type: 'text', colSpan: 1, required: true, helpText: 'snake_case unique identifier' },\n { field: 'label', type: 'text', colSpan: 1, required: true },\n { field: 'description', type: 'textarea', colSpan: 2 },\n { field: 'type', colSpan: 2, helpText: 'Report type: tabular/summary/matrix/joined' },\n ],\n },\n {\n label: 'Dataset binding',\n description: 'The semantic-layer dataset this report renders. Values are the dataset’s measures; rows are its dimensions.',\n // A `joined` report carries its data on `blocks` instead.\n visibleOn: \"data.type != 'joined'\",\n fields: [\n { field: 'dataset', widget: 'ref:dataset', helpText: 'Dataset to bind (measures/dimensions come from its semantic layer)' },\n { field: 'values', widget: 'string-tags', helpText: 'Measure names (from the dataset) to display' },\n { field: 'rows', widget: 'string-tags', helpText: 'Dimension names (from the dataset) to group rows by' },\n // CEL visibility — only Matrix reports pivot across a second dimension.\n { field: 'columns', widget: 'string-tags', visibleOn: \"data.type == 'matrix'\", helpText: 'Dimension names across (matrix only)' },\n { field: 'drilldown', helpText: 'Click an aggregated row/cell to open the underlying records' },\n ],\n },\n {\n label: 'Joined blocks',\n description: 'Additional dataset-bound blocks stacked into a single report (joined reports only).',\n visibleOn: \"data.type == 'joined'\",\n fields: [\n { field: 'blocks', type: 'repeater', helpText: 'Dataset-bound sub-reports (joined report only)' },\n ],\n },\n {\n label: 'Filter & chart',\n description: 'Render-time scope filter and chart presentation.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'runtimeFilter', widget: 'json', helpText: 'Render-time scope filter, ANDed at query time' },\n { field: 'chart', type: 'composite', helpText: 'Chart config (type, legend, colors)' },\n ],\n },\n {\n label: 'Advanced',\n description: 'Accessibility and performance tuning.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'aria', type: 'composite', helpText: 'Accessibility labels' },\n { field: 'performance', type: 'composite', helpText: 'Caching and optimization' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * View — canonical FormView layout.\n *\n * Views power most data surfaces (grid / kanban / calendar / gantt /\n * gallery / timeline / chart) and each surface has its own block of\n * options. We group fields by surface so the editor doesn't dump 30+\n * irrelevant knobs on the user.\n *\n * Visibility predicates use the `type` discriminator to reveal only\n * the surface-specific block.\n */\n\nimport { defineForm } from './view.zod';\n\nexport const viewForm = defineForm({\n schemaId: 'view',\n type: 'simple',\n sections: [\n {\n name: 'basics',\n label: 'Basics',\n description: 'Identity and primary surface.',\n columns: 2,\n fields: [\n { field: 'name', type: 'text', required: true, colSpan: 1, helpText: 'snake_case, unique per environment' },\n { field: 'label', type: 'text', required: true, colSpan: 1 },\n { field: 'description', type: 'textarea', colSpan: 2 },\n { field: 'type', required: true, colSpan: 1, helpText: 'Primary view surface' },\n { field: 'data', widget: 'json', colSpan: 2, helpText: 'Data source — e.g. {\"provider\":\"object\",\"object\":\"task\"}' },\n ],\n },\n {\n name: 'columns_filters',\n label: 'Columns & filters',\n description: 'What rows show and how users filter them.',\n fields: [\n { field: 'columns', type: 'repeater', required: true, helpText: 'Columns to display (field names from selected object)' },\n { field: 'filter', type: 'repeater', helpText: 'Filter conditions' },\n { field: 'sort', type: 'repeater', helpText: 'Default sort order' },\n { field: 'searchableFields', widget: 'string-tags', helpText: 'Field names available for quick search' },\n { field: 'filterableFields', widget: 'string-tags', helpText: 'Field names available for filtering' },\n ],\n },\n {\n name: 'table_options',\n label: 'Table options',\n description: 'Grid-only display options.',\n visibleOn: \"data.type == 'grid' || data.type == null\",\n collapsible: true,\n collapsed: true,\n columns: 2,\n fields: [\n { field: 'resizable', colSpan: 1 },\n { field: 'striped', colSpan: 1 },\n { field: 'bordered', colSpan: 1 },\n { field: 'compactToolbar', colSpan: 1 },\n { field: 'rowHeight', colSpan: 1 },\n { field: 'selection', type: 'composite', colSpan: 2 },\n { field: 'pagination', type: 'composite', colSpan: 2 },\n ],\n },\n {\n name: 'kanban',\n label: 'Kanban',\n description: 'Kanban-specific board configuration.',\n visibleOn: \"data.type == 'kanban'\",\n fields: [{ field: 'kanban', type: 'composite' }],\n },\n {\n name: 'calendar',\n label: 'Calendar',\n description: 'Calendar-specific configuration.',\n visibleOn: \"data.type == 'calendar'\",\n fields: [{ field: 'calendar', type: 'composite' }],\n },\n {\n name: 'gantt',\n label: 'Gantt',\n description: 'Gantt-specific configuration.',\n visibleOn: \"data.type == 'gantt'\",\n fields: [{ field: 'gantt', type: 'composite' }],\n },\n {\n name: 'gallery',\n label: 'Gallery',\n description: 'Gallery-specific configuration.',\n visibleOn: \"data.type == 'gallery'\",\n fields: [{ field: 'gallery', type: 'composite' }],\n },\n {\n name: 'timeline',\n label: 'Timeline',\n description: 'Timeline-specific configuration.',\n visibleOn: \"data.type == 'timeline'\",\n fields: [{ field: 'timeline', type: 'composite' }],\n },\n {\n name: 'chart',\n label: 'Chart',\n description: 'Chart-specific configuration.',\n visibleOn: \"data.type == 'chart'\",\n fields: [{ field: 'chart', type: 'composite' }],\n },\n {\n name: 'end_user_controls',\n label: 'End-user controls',\n description: 'What end users can do on this view — quick filters, filter tabs, visualization switching (ADR-0047, Airtable Interface parity).',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'userFilters', type: 'composite', helpText: 'Quick-filter bar: element style (dropdown / tabs / toggle) + exposed fields or tab presets' },\n { field: 'tabs', type: 'repeater', helpText: 'In-view filter tabs — each tab applies its own filter rules' },\n { field: 'appearance', type: 'composite', helpText: 'allowedVisualizations: which renderers users may switch between' },\n { field: 'userActions', type: 'composite', helpText: 'Toolbar toggles: sort / search / filter / row height' },\n { field: 'addRecord', type: 'composite' },\n { field: 'showRecordCount' },\n ],\n },\n {\n name: 'navigation_sharing',\n label: 'Navigation & sharing',\n description: 'Where this view appears and who can see it.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'navigation', type: 'composite' },\n { field: 'sharing', type: 'composite' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { defineForm } from './view.zod';\n\nexport const appForm = defineForm({\n schemaId: 'app',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'App identity and activation.',\n columns: 2,\n fields: [\n { field: 'name', type: 'text', required: true, colSpan: 1, helpText: 'snake_case, unique' },\n { field: 'label', type: 'text', required: true, colSpan: 1 },\n { field: 'description', type: 'textarea', colSpan: 2 },\n { field: 'version', type: 'text', colSpan: 1 },\n { field: 'icon', type: 'text', colSpan: 1, helpText: 'Lucide icon name (e.g. \"users\", \"briefcase\")' },\n { field: 'active', type: 'boolean', colSpan: 1 },\n { field: 'isDefault', type: 'boolean', colSpan: 1, helpText: 'Make this the default app for new users' },\n ],\n },\n {\n label: 'Navigation',\n description: 'Sidebar items and area grouping.',\n fields: [\n { field: 'navigation', type: 'composite', helpText: 'Nav tree — recursive structure' },\n { field: 'areas', type: 'repeater', helpText: 'Group items into collapsible areas' },\n { field: 'homePageId', type: 'text', helpText: 'Landing page when app opens' },\n { field: 'mobileNavigation', type: 'composite', helpText: 'Bottom tab bar config for mobile' },\n ],\n },\n {\n label: 'Content',\n description: 'Objects and APIs this app uses.',\n fields: [\n { field: 'objects', widget: 'object-selector', multiple: true, helpText: 'Object names this app exposes' },\n { field: 'apis', type: 'composite', helpText: 'API endpoint definitions' },\n { field: 'defaultAgent', type: 'text', helpText: 'AI agent for the ambient assistant button' },\n ],\n },\n {\n label: 'Branding',\n description: 'Theme colors and logo.',\n collapsible: true,\n collapsed: true,\n fields: [{ field: 'branding', type: 'composite', helpText: 'Primary/secondary colors, logo, theme' }],\n },\n {\n label: 'Access & sharing',\n description: 'Who can access this app and how it can be embedded.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'requiredPermissions', widget: 'string-tags', helpText: 'Permissions needed to access this app' },\n { field: 'sharing', type: 'composite', helpText: 'Public/internal/restricted access control' },\n { field: 'embed', type: 'composite', helpText: 'iFrame embed configuration' },\n { field: 'aria', type: 'composite', helpText: 'Accessibility labels' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { defineForm } from './view.zod';\n\nexport const dashboardForm = defineForm({\n schemaId: 'dashboard',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'Dashboard identity and description.',\n columns: 2,\n fields: [\n { field: 'name', type: 'text', required: true, colSpan: 1, helpText: 'snake_case unique identifier' },\n { field: 'label', type: 'text', required: true, colSpan: 1, helpText: 'Display name' },\n { field: 'description', type: 'textarea', colSpan: 2 },\n ],\n },\n {\n label: 'Layout',\n description: 'Grid sizing and refresh cadence.',\n columns: 3,\n fields: [\n { field: 'columns', type: 'number', colSpan: 1, helpText: 'Grid columns (default 12)' },\n { field: 'gap', type: 'number', colSpan: 1, helpText: 'Grid gap (Tailwind units)' },\n { field: 'refreshInterval', type: 'number', colSpan: 1, helpText: 'Auto-refresh (seconds)' },\n { field: 'header', type: 'composite', colSpan: 3, helpText: 'Dashboard header config (title, subtitle, actions)' },\n ],\n },\n {\n label: 'Widgets',\n description: 'Cards and charts placed on the grid.',\n fields: [\n { field: 'widgets', type: 'repeater', required: true, helpText: 'Dashboard widgets with position and sizing' },\n ],\n },\n {\n label: 'Filters',\n description: 'Default and global filters applied across widgets.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'dateRange', type: 'composite', helpText: 'Default date range selector' },\n { field: 'globalFilters', type: 'repeater', helpText: 'Filters applied to all widgets' },\n ],\n },\n {\n label: 'Advanced',\n description: 'Accessibility and performance tuning.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'aria', type: 'composite', helpText: 'Accessibility labels' },\n { field: 'performance', type: 'composite', helpText: 'Caching and optimization config' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { defineForm } from './view.zod';\n\n/**\n * Action Metadata Form\n * \n * Form layout for creating/editing action metadata definitions.\n */\nexport const actionForm = defineForm({\n schemaId: 'action',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'Action identity and presentation.',\n columns: 2,\n fields: [\n { field: 'name', required: true, colSpan: 1, helpText: 'Unique identifier (snake_case)' },\n { field: 'label', required: true, colSpan: 1, helpText: 'Button text shown to users' },\n { field: 'objectName', widget: 'ref:object', colSpan: 1, helpText: 'Object this action belongs to (optional)' },\n { field: 'icon', colSpan: 1, helpText: 'Lucide icon name (e.g., \"check\", \"x-circle\")' },\n { field: 'type', required: true, colSpan: 1, helpText: 'What happens when clicked' },\n { field: 'variant', colSpan: 1, helpText: 'Button style (primary=blue, danger=red, ghost=transparent)' },\n ],\n },\n {\n label: 'Behavior',\n description: 'Configure what happens when the action is triggered.',\n fields: [\n { field: 'target', visibleOn: \"data.type != 'script'\", helpText: 'URL, flow name, or API endpoint to call' },\n { field: 'method', visibleOn: \"data.type == 'api'\", helpText: 'HTTP method (GET, POST, PUT, DELETE)' },\n { field: 'body', widget: 'code', visibleOn: \"data.type == 'script'\", helpText: 'JavaScript code to execute' },\n { field: 'params', type: 'repeater', helpText: 'User input parameters (show form before executing)' },\n { field: 'confirmText', helpText: 'Confirmation message (e.g., \"Are you sure?\")' },\n { field: 'successMessage', helpText: 'Success message after completion' },\n { field: 'refreshAfter', helpText: 'Refresh the list/page after action completes' },\n ],\n },\n {\n label: 'Placement',\n description: 'Where and when the action button appears.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'locations', type: 'repeater', helpText: 'Where to show this action (toolbar, row menu, etc.)' },\n { field: 'component', helpText: 'How to render (button, icon, menu item)' },\n { field: 'visible', widget: 'textarea', helpText: 'CEL expression: show only when condition is true' },\n { field: 'disabled', widget: 'textarea', helpText: 'CEL expression: disable when condition is true' },\n { field: 'shortcut', helpText: 'Keyboard shortcut (e.g., \"Ctrl+S\", \"Cmd+Enter\")' },\n ],\n },\n {\n label: 'Advanced',\n description: 'Bulk operations, AI exposure, and API request shape.',\n collapsible: true,\n collapsed: true,\n columns: 2,\n fields: [\n { field: 'bulkEnabled', colSpan: 1, helpText: 'Allow applying to multiple selected records' },\n { field: 'ai', colSpan: 2, helpText: 'AI exposure (opt-in): set ai.exposed=true and write ai.description (≥40 chars) to make this callable by agents.' },\n { field: 'recordIdParam', visibleOn: \"data.type == 'api'\", colSpan: 1, helpText: 'Body parameter name for record ID' },\n { field: 'recordIdField', visibleOn: \"data.type == 'api' && data.recordIdParam\", colSpan: 1, helpText: 'Field to use as record ID (default: \"id\")' },\n { field: 'bodyShape', visibleOn: \"data.type == 'api'\", colSpan: 2, helpText: 'Request body structure (flat or nested)' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { defineForm } from './view.zod';\n\n/**\n * Page Metadata Form\n * \n * Form layout for creating/editing page metadata definitions.\n */\nexport const pageForm = defineForm({\n schemaId: 'page',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'Page identity and template.',\n columns: 2,\n fields: [\n { field: 'name', required: true, colSpan: 1, helpText: 'Unique identifier (snake_case)' },\n { field: 'label', required: true, colSpan: 1, helpText: 'Page title shown to users' },\n { field: 'icon', colSpan: 1, helpText: 'Icon for navigation menu' },\n { field: 'type', colSpan: 1, helpText: 'Page type — \"list\" for an interface/list page; also record, home, app, dashboard, etc.' },\n { field: 'template', colSpan: 2, helpText: 'Layout template (e.g., \"header-sidebar-main\")' },\n { field: 'description', widget: 'textarea', colSpan: 2, helpText: 'Page description for navigation' },\n ],\n },\n {\n label: 'Data Context',\n description: 'Record binding and page-local state.',\n // Interface/list pages bind their data via the Interface section\n // (source/sourceView), not a page-level object — hide this to keep\n // the panel lean (the region/record machinery doesn't apply).\n visibleOn: \"data.type != 'list'\",\n fields: [\n { field: 'object', widget: 'ref:object', helpText: 'Bound object (for Record pages)' },\n { field: 'variables', type: 'repeater', helpText: 'Local page state variables' },\n ],\n },\n {\n label: 'Layout',\n description: 'Page regions and components placed within them.',\n // List pages render a curated list surface, not free-form regions —\n // the region designer is irrelevant here, so hide it for list pages.\n visibleOn: \"data.type != 'list'\",\n fields: [\n { field: 'regions', type: 'repeater', required: true, helpText: 'Layout regions (header, main, sidebar, footer) with components' },\n ],\n },\n {\n name: 'interface',\n label: 'Interface (list pages)',\n description: 'ADR-0047 interface mode: bind a source view and curate the end-user surface — quick filters, locked visualizations, toolbar actions (Airtable Interfaces parity).',\n collapsible: true,\n // Primary content for a list page — open by default (still collapsible).\n collapsed: false,\n visibleOn: \"data.type == 'list'\",\n fields: [\n {\n field: 'interfaceConfig',\n type: 'composite',\n helpText:\n 'source/sourceView bind the object view (columns, base filter and sort are inherited — the iron rule); appearance.allowedVisualizations whitelists renderers (one entry = locked); userActions toggles the toolbar.',\n // Order: common authoring controls first, rarely-used ones last.\n // Explicit sub-fields so `userFilters` can use the dedicated\n // filter-mode selector (None / Tabs / Dropdown, ADR-0047 §3.4a).\n // None maps to ABSENCE of userFilters — the protocol stores\n // \"no filter bar\" as omission, not a literal element: 'none'.\n // (`element: 'toggle'` stays valid but deprecated — not offered.)\n // Keep this list in sync with InterfacePageConfigSchema.\n fields: [\n { field: 'source', widget: 'ref:object', helpText: 'Object this list reads from' },\n { field: 'sourceView', helpText: 'Named list view to inherit columns/filter/sort from (blank = object default)' },\n { field: 'appearance', type: 'composite', helpText: 'Allowed visualizations (Grid / Kanban / Calendar / …) and description visibility' },\n {\n field: 'userFilters',\n widget: 'filter-mode',\n helpText: 'End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config.',\n },\n { field: 'userActions', type: 'composite', helpText: 'Toolbar toggles (search, sort, filter, row height)' },\n { field: 'addRecord', type: 'composite', helpText: 'Add-record entry point' },\n { field: 'showRecordCount', helpText: 'Show the record count bar' },\n // Less-common — kept last.\n { field: 'filterBy', type: 'repeater', helpText: 'Always-on page filter (in addition to the source view)' },\n { field: 'levels', helpText: 'Hierarchy levels to display (tree-like sources)' },\n { field: 'allowPrinting', helpText: 'Allow users to print this page' },\n ],\n },\n ],\n },\n {\n label: 'Advanced',\n description: 'Activation, audience, and accessibility.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'isDefault', helpText: 'Set as default page for this page type' },\n { field: 'kind', helpText: 'Page override mode: full or slotted (for record pages)' },\n { field: 'assignedProfiles', widget: 'string-tags', helpText: 'Profiles that can access this page' },\n { field: 'aria', type: 'composite', helpText: 'Accessibility attributes (ARIA labels, roles)' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Capability tokens a script body may request.\n *\n * The runtime sandbox enforces these — if a body uses a `ctx` API that requires\n * a capability it did not declare, the call throws at invocation time.\n *\n * - `api.read` — `ctx.api.object(...).find / findOne / count / aggregate`\n * - `api.write` — `ctx.api.object(...).insert / update / delete`\n * - `crypto.uuid` — `ctx.crypto.randomUUID()`\n * - `crypto.hash` — `ctx.crypto.hash(algo, data)`\n * - `log` — `ctx.log.info / warn / error`\n *\n * `http.fetch` is intentionally absent — outbound calls go through Connector\n * recipes (separate spec) so they remain auditable and replayable.\n */\nexport const HookBodyCapability = z.enum([\n 'api.read',\n 'api.write',\n 'crypto.uuid',\n 'crypto.hash',\n 'log',\n]);\nexport type HookBodyCapability = z.infer<typeof HookBodyCapability>;\n\n/**\n * L1 — Pure expression body.\n *\n * Evaluated by the formula engine. No IO, no mutation. Used for predicates\n * (`condition`-style) and simple computed values.\n *\n * @example\n * ```json\n * { \"language\": \"expression\", \"source\": \"input.amount > 1000 && input.status == 'open'\" }\n * ```\n */\nexport const ExpressionBodySchema = z.object({\n language: z.literal('expression'),\n /** Formula-engine expression. Pure, side-effect-free. */\n source: z.string().min(1).describe('Formula expression source'),\n}).describe('L1 expression body — pure formula, no IO');\nexport type ExpressionBody = z.infer<typeof ExpressionBodySchema>;\n\n/**\n * L2 — Sandboxed JavaScript source.\n *\n * The `source` is the **function body only** (not a full module). The runtime\n * wraps it in `new AsyncFunction('ctx', source)` for hooks, or\n * `new AsyncFunction('input', 'ctx', source)` for actions, then executes\n * inside an isolated VM.\n *\n * Forbidden inside `source` (CLI build will reject):\n * - `import` / `require` / dynamic `import()`\n * - `process`, `globalThis`, `eval`, `new Function`\n * - any identifier resolved from a value-only top-level import\n *\n * @example\n * ```json\n * {\n * \"language\": \"js\",\n * \"source\": \"if (ctx.input.email) ctx.input.email = ctx.input.email.toLowerCase();\",\n * \"capabilities\": [],\n * \"timeoutMs\": 250\n * }\n * ```\n */\nexport const ScriptBodySchema = z.object({\n language: z.literal('js'),\n /** Function body source (NOT a full module — no top-level imports). */\n source: z.string().min(1).describe('Function body source'),\n /**\n * Capability tokens the body is allowed to use. Default: `[]`.\n * The sandbox throws if the body calls a `ctx` API not covered by these.\n */\n capabilities: z.array(HookBodyCapability).default([]).describe('Granted capability tokens'),\n /**\n * Per-invocation hard timeout in milliseconds.\n * Sandbox kills the script if it exceeds this; smaller of this and the\n * enclosing hook/action `timeout` wins.\n */\n timeoutMs: z.number().int().positive().max(30_000).optional().describe('Per-invocation timeout (ms)'),\n /**\n * Per-invocation memory cap in MB.\n * Subject to engine support (isolated-vm enforces, quickjs approximates).\n */\n memoryMb: z.number().int().positive().max(256).optional().describe('Per-invocation memory cap (MB)'),\n}).describe('L2 sandboxed JS body — runs inside an isolated VM with declared capabilities');\nexport type ScriptBody = z.infer<typeof ScriptBodySchema>;\n\n/**\n * Hook / Action body — discriminated by `language`.\n *\n * Two and only two forms are accepted:\n * - `expression` — L1, pure formula evaluated by the formula engine.\n * - `js` — L2, sandboxed JavaScript source string.\n *\n * The compiled-module path (`.mjs` envelope) is intentionally **not** part of\n * this union. All bodies are pure metadata and travel inside the project\n * artifact JSON — no separate runtime module is required.\n *\n * @see content/docs/concepts/north-star.mdx — \"Metadata-only runtime\"\n */\nexport const HookBodySchema = z.discriminatedUnion('language', [\n ExpressionBodySchema,\n ScriptBodySchema,\n]).describe('Hook/Action body — expression (L1) or sandboxed JS (L2)');\nexport type HookBody = z.infer<typeof HookBodySchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldType } from '../data/field.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { HookBodySchema } from '../data/hook-body.zod';\n\n/**\n * Action Parameter Schema\n *\n * Defines inputs required before executing an action.\n *\n * Two declaration modes:\n *\n * 1. **Field-backed** (preferred) — reference an existing object field; the\n * runtime resolves the field's label (i18n), type, validation rules,\n * options, placeholder, help text, and widget mapping from object\n * metadata. Cross-object references use `objectOverride`.\n *\n * ```ts\n * params: [\n * { field: 'email' }, // same object\n * { field: 'role', objectOverride: 'sys_member' }, // different object\n * ]\n * ```\n *\n * 2. **Inline** (legacy / bespoke) — declare `name`, `label`, `type` etc.\n * inline when no matching object field exists. Inline values may also be\n * used alongside `field` to override individual properties.\n *\n * `name` is required unless `field` is provided (in which case it defaults\n * to the field name and is used as the request-body key).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ActionParamSchema = lazySchema(() => z.object({\n /** Request-body key. Defaults to `field` when `field` is set. */\n name: z.string().optional(),\n /** Reference an existing object field for label/type/validation/options. */\n field: SnakeCaseIdentifierSchema.optional(),\n /** Object that owns the referenced field (defaults to the action's parent object). */\n objectOverride: SnakeCaseIdentifierSchema.optional(),\n /** Overrides the resolved field label (or sets it for inline params). */\n label: I18nLabelSchema.optional(),\n /** Overrides the resolved field type (or sets it for inline params). */\n type: FieldType.optional(),\n /**\n * Required override; when omitted defaults to `false`. Consumers that wish\n * to inherit the underlying field's `required` flag should leave this\n * undefined in the source schema and resolve at runtime (the dialog\n * renderers check truthiness, so `false === undefined` for UI purposes).\n */\n required: z.boolean().optional().default(false),\n /** Select/picklist options override. */\n options: z.array(z.object({ label: I18nLabelSchema, value: z.string() })).optional(),\n /** Placeholder override. */\n placeholder: z.string().optional(),\n /** Help/description override. */\n helpText: z.string().optional(),\n /** Default value for the dialog input. */\n defaultValue: z.unknown().optional(),\n /**\n * When true, the param's default value is pulled from the current row record\n * (key = the resolved field name) when the action runs from a list_item\n * context. Useful for edit dialogs that pre-fill from the selected row.\n */\n defaultFromRow: z.boolean().optional(),\n}).refine(\n (p) => Boolean(p.name) || Boolean(p.field),\n { message: 'ActionParam requires either \"name\" or \"field\"' },\n));\n\n/**\n * Action type enum values.\n */\nexport const ActionType = z.enum(['script', 'url', 'modal', 'flow', 'api', 'form']);\n\n/**\n * Action types that require a `target` field.\n * Derived from ActionType, excluding 'script' which allows inline handlers.\n * These types reference an external resource (URL, flow, modal, or API endpoint)\n * and cannot function without a target binding.\n */\nconst TARGET_REQUIRED_TYPES: ReadonlySet<string> = new Set(\n ActionType.options.filter((t) => t !== 'script'),\n);\n\n/**\n * Action Schema\n * \n * **NAMING CONVENTION:**\n * Action names are machine identifiers used in code and must be lowercase snake_case.\n * \n * **TARGET BINDING:**\n * The `target` field is the canonical way to bind an action to its handler.\n * - `type: 'script'` — `target` is recommended (references a script/function name).\n * - `type: 'url'` — `target` is **required** (the URL to navigate to).\n * - `type: 'flow'` — `target` is **required** (the flow name to invoke).\n * - `type: 'modal'` — `target` is **required** (the modal/page name to open).\n * - `type: 'api'` — `target` is **required** (the API endpoint to call).\n * - `type: 'form'` — `target` is **required** (the FormView name to open, routed to `/console/forms/:name`).\n * \n * The `execute` field is **deprecated** and will be removed in a future version.\n * If `execute` is provided without `target`, it is automatically migrated to `target`.\n * \n * @example Good action names\n * - 'on_close_deal'\n * - 'send_welcome_email'\n * - 'approve_contract'\n * - 'export_report'\n * \n * @example Bad action names (will be rejected)\n * - 'OnCloseDeal' (PascalCase)\n * - 'sendEmail' (camelCase)\n * - 'Send Email' (spaces)\n * \n * Note: The action name is the configuration ID. JavaScript function names can use camelCase,\n * but the metadata ID must be lowercase snake_case.\n */\n/**\n * Action Location — where an action is allowed to surface in the UI.\n *\n * Canonical list (single source of truth for the whole platform). Renderers,\n * the ActionEngine, the Studio designer dropdowns, and `objectui` consumers\n * MUST import from this constant rather than re-declaring their own enum —\n * adding a new location should require touching this one file only.\n *\n * Semantics:\n * - `list_toolbar` — header/toolbar of a list view (bulk actions, \"New\", export).\n * - `list_item` — per-row action on a list/grid row (Salesforce row-level menu).\n * - `record_header` — primary actions in the record-detail title bar.\n * - `record_more` — overflow menu under the \"More\" / ⋯ button on a record.\n * - `record_related` — actions on a related list section inside a record.\n * - `record_section` — actions surfaced inside a body section/tab of a record\n * (e.g. a Security tab grouping change-password, 2FA, etc.).\n * - `global_nav` — global navigation/command-palette level actions.\n */\nexport const ACTION_LOCATIONS = [\n 'list_toolbar',\n 'list_item',\n 'record_header',\n 'record_more',\n 'record_related',\n 'record_section',\n 'global_nav',\n] as const;\n\nexport const ActionLocationSchema = z.enum(ACTION_LOCATIONS);\nexport type ActionLocation = z.infer<typeof ActionLocationSchema>;\n\n/**\n * Tool category values for {@link ActionAiSchema.category}.\n *\n * Mirrors `ToolCategorySchema` in `../ai/tool.zod`. Kept **inline** rather\n * than imported to avoid a `ui → ai` import cycle (`ai/*.form.ts` already\n * imports `defineForm` from `ui/view.zod`). If you change the canonical\n * tool categories, update both sides.\n */\nconst ActionAiCategorySchema = z.enum([\n 'data',\n 'action',\n 'flow',\n 'integration',\n 'vector_search',\n 'analytics',\n 'utility',\n]);\n\n/**\n * AI exposure block (ADR-0011 \"Actions as AI Tools\").\n *\n * **Opt-in, default off.** An action becomes an AI-callable tool only when\n * `exposed: true`. This is a deliberate governance gate: in an AI-authoring\n * world the platform's value is that a human can govern exactly which\n * capabilities the agent fleet is allowed to invoke — a half-finished or\n * unreviewed action must never be silently armed.\n *\n * When exposed, `description` is **required** — it is the LLM-facing contract\n * (when/why to call), authored explicitly rather than derived from the\n * UI `label`. The bridge in `@objectstack/service-ai` translates this block\n * into an `AIToolDefinition`.\n */\nexport const ActionAiSchema = z.object({\n /**\n * Expose this action to AI agents as a callable tool. Default `false`.\n * Setting `true` REQUIRES `description`.\n */\n exposed: z.boolean().default(false).describe('Expose this action to AI agents. Requires `description` when true.'),\n\n /**\n * LLM-facing description: tells the model when and why to call this action.\n * Distinct from the UI `label`. Plain English, ≥ 40 chars for useful tool\n * selection. Required whenever `exposed` is true.\n */\n description: z.string().min(40).optional().describe('LLM-facing description (≥40 chars). Required when exposed.'),\n\n /**\n * Override the derived tool category. Defaults to `action` (side-effect).\n * Use `data` for read-only actions, `analytics` for aggregations, etc.\n */\n category: ActionAiCategorySchema.optional().describe('Tool category override (defaults to \"action\").'),\n\n /**\n * Per-parameter AI hints, keyed by param name (or the injected `recordId`).\n * Tightens the JSON Schema the LLM sees (e.g. add `enum`, override\n * `description`, supply `examples`) WITHOUT changing the UI-facing field\n * metadata. Keys must match a declared `params[].name` (or `recordId`).\n */\n paramHints: z.record(z.string(), z.object({\n description: z.string().optional(),\n enum: z.array(z.union([z.string(), z.number()])).optional(),\n examples: z.array(z.unknown()).optional(),\n })).optional().describe('Per-parameter AI hints keyed by param name.'),\n\n /**\n * Output JSON Schema for the action's return value. Enables structured\n * downstream tool chaining (one action's output feeds another's input) and\n * is summarised into the tool description so the model knows what it gets\n * back. Optional — when omitted the return value is treated as freeform.\n */\n outputSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for the action return value.'),\n\n /**\n * Override confirmation for AI calls. When unset, the bridge defaults to\n * `true` for actions that look destructive (`confirmText` set, `mode:'delete'`,\n * or `variant:'danger'`). Set explicitly to `false` to assert a destructive-\n * looking action is safe to run without human approval, or `true` to force a\n * human-in-the-loop gate on an otherwise-safe action.\n */\n requiresConfirmation: z.boolean().optional().describe('Override HITL confirmation for AI invocations.'),\n});\n\nexport type ActionAi = z.infer<typeof ActionAiSchema>;\n\nexport const ActionSchema = lazySchema(() => z.object({\n /** Machine name of the action */\n name: SnakeCaseIdentifierSchema.describe('Machine name (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Display label'),\n\n /** Target object this action belongs to (optional, snake_case) */\n objectName: z.string().regex(/^[a-z_][a-z0-9_]*$/).optional().describe('Target object this action belongs to. When set, the action is auto-merged into the object\\'s actions array by defineStack().'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** Where does this action appear? */\n locations: z.array(ActionLocationSchema).optional().describe('Locations where this action is visible'),\n\n /** \n * Visual Component Type\n * Defaults to 'button' or 'menu_item' based on location,\n * but can be overridden.\n */\n component: z.enum([\n 'action:button', // Standard Button\n 'action:icon', // Icon only\n 'action:menu', // Dropdown menu\n 'action:group' // Button Group\n ]).optional().describe('Visual component override'),\n \n /** What type of interaction? */\n type: ActionType.default('script').describe('Action functionality type'),\n \n /** \n * Payload / Target — the canonical binding for the action handler.\n * Required for url, flow, modal, and api types.\n * For `script` type: prefer `body` over `target`. `target` is kept only for\n * legacy bundle.functions[name] references.\n *\n * **Interpolation** (renderer responsibility, all action types):\n * `target` MAY contain `${param.X}` and `${ctx.X}` tokens. Renderers\n * resolve them just before invocation:\n * - `${param.X}` — value collected from the action's params dialog.\n * - `${ctx.X}` — values from the action context: `ctx.origin`\n * (window.origin), `ctx.recordId`, `ctx.user.id`, `ctx.org.id`, etc.\n * Used by redirect-style actions like `link_social`, where the target is\n * e.g. `/api/v1/auth/sign-in/social?provider=${param.provider}&callbackURL=${ctx.origin}/_console/apps/account/sys_account`.\n * Renderers MUST `encodeURIComponent` interpolated values before\n * substituting them into URL query positions.\n */\n target: z.string().optional().describe('URL, Script Name, Flow ID, or API Endpoint. Supports ${param.X} and ${ctx.X} interpolation.'),\n\n /**\n * Action Body (L1 expression or L2 sandboxed JS).\n *\n * Only meaningful when `type === 'script'`. When set, the runtime invokes\n * the body inside the sandbox as `(input, ctx) => Promise<output>` and\n * ignores `target`.\n *\n * - `{ language: 'expression', source: '...' }` — pure formula (L1).\n * - `{ language: 'js', source: '...', capabilities: [...] }` — sandboxed JS (L2).\n *\n * Compiled-module bodies are not supported. Outbound IO (HTTP, etc.) goes\n * through Connector recipes (separate spec).\n */\n body: HookBodySchema.optional().describe('Action body — expression (L1) or sandboxed JS (L2). Only used when type is `script`.'),\n\n /** \n * @deprecated Use `target` instead. This field is auto-migrated to `target` during parsing.\n */\n execute: z.string().optional().describe('@deprecated — Use target instead. Auto-migrated to target during parsing.'),\n \n /** User Input Requirements */\n params: z.array(ActionParamSchema).optional().describe('Input parameters required from user'),\n \n /** Visual Style */\n variant: z.enum(['primary', 'secondary', 'danger', 'ghost', 'link']).optional().describe('Button visual variant for styling (primary = highlighted, danger = destructive, ghost = transparent)'),\n\n /** UX Behavior */\n confirmText: I18nLabelSchema.optional().describe('Confirmation message before execution'),\n successMessage: I18nLabelSchema.optional().describe('Success message to show after execution'),\n refreshAfter: z.boolean().default(false).describe('Refresh view after execution'),\n\n /**\n * Result Dialog — describe how to render the API response on success.\n *\n * When set and the action returns successfully, the renderer SHOULD open a\n * dialog showing the selected fields from `result.data` instead of the\n * `successMessage` toast. The dialog has an acknowledge button only — the\n * user must explicitly close it. Used for **one-shot reveals** of values\n * the user must copy now because they cannot be retrieved later:\n *\n * - TOTP enrollment URI + secret (`enable_two_factor`)\n * - Backup recovery codes (`regenerate_backup_codes`)\n * - Freshly minted OAuth `client_secret` (`rotate_client_secret`,\n * `create_oauth_application`)\n *\n * `fields` selects what to render and how. Each entry's `path` is a dot\n * path into `result.data` (e.g. `'totpURI'`, `'backupCodes'`,\n * `'client.client_secret'`). When `fields` is omitted, the renderer falls\n * back to JSON-printing the whole response under a single block.\n *\n * `format` (dialog-level) is a default for fields that don't carry their\n * own `format`; the per-field `format` always wins.\n *\n * Renderer contract (objectui):\n * - `qrcode` — render the value as a QR code; also render the raw string\n * underneath with a copy button (so the user can paste into apps that\n * don't scan).\n * - `code-list` — value must be an array of strings; render each in a\n * monospace row with per-row copy and a \"Copy all\" affordance.\n * - `secret` — render a single string masked by default with a reveal\n * toggle and copy button.\n * - `text` — plain text with copy.\n * - `json` — pretty-printed JSON in a monospace block.\n *\n * The dialog SHOULD set `refreshAfter` to true on close (separate from\n * the existing `refreshAfter` flag, which fires immediately on success).\n */\n resultDialog: z.object({\n title: I18nLabelSchema.optional(),\n description: I18nLabelSchema.optional(),\n acknowledge: I18nLabelSchema.optional().describe('Acknowledge button label, e.g. \"I have saved this\"'),\n format: z.enum(['qrcode', 'code-list', 'secret', 'text', 'json']).optional().describe('Default format for fields without their own format. Defaults to json when omitted.'),\n fields: z.array(z.object({\n path: z.string().describe('Dot path into result.data (e.g. \"totpURI\", \"client.client_secret\").'),\n label: I18nLabelSchema.optional(),\n format: z.enum(['qrcode', 'code-list', 'secret', 'text', 'json']).optional().describe('Per-field format override.'),\n })).optional().describe('Which fields from result.data to render. Omit to dump full JSON.'),\n }).optional().describe('Render API response in a one-shot reveal dialog (suppresses successMessage when set).'),\n \n /** Access */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n disabled: z.union([z.boolean(), ExpressionInputSchema]).optional().describe('Boolean or predicate (CEL) — action is disabled when TRUE.'),\n\n /** Keyboard Shortcut */\n shortcut: z.string().optional().describe('Keyboard shortcut to trigger this action (e.g., \"Ctrl+S\")'),\n\n /** Bulk Operations */\n bulkEnabled: z.boolean().optional().describe('Whether this action can be applied to multiple selected records'),\n\n /**\n * AI exposure block (ADR-0011). Opt-in, default off: an action is exposed\n * to AI agents only when `ai.exposed === true`, in which case `ai.description`\n * is required. See {@link ActionAiSchema}.\n */\n ai: ActionAiSchema.optional().describe('AI exposure (opt-in). Set ai.exposed=true + ai.description to make this callable by agents.'),\n\n /**\n * Row-context: when the action runs from a list_item location, this body key\n * receives the row's id (or the field named by `recordIdField`). Defaults to\n * `id` when omitted but `recordIdField` is set; otherwise no injection.\n */\n recordIdParam: z.string().optional().describe('Body key to inject the row id into when running from a list_item context.'),\n /**\n * Row field whose value seeds `recordIdParam`. Defaults to `'id'` when\n * `recordIdParam` is set. Use this when the body key expects a non-id value\n * (e.g. `token` for `revoke-session`).\n */\n recordIdField: z.string().optional().describe('Row field whose value seeds recordIdParam. Defaults to \"id\".'),\n /**\n * Request-body shape. `'flat'` (default) sends collected params at the top\n * level. `{ wrap: 'data' }` nests the user-collected params under that key\n * (used by better-auth `organization/update`), while `recordIdParam` and\n * other top-level keys stay flat.\n */\n bodyShape: z.union([\n z.literal('flat'),\n z.object({ wrap: z.string() }),\n ]).optional().describe('Body wrapping: flat (default) or { wrap: key } to nest user-collected params under a key.'),\n /**\n * HTTP method to use when `type: 'api'`. Defaults to `POST`. Use `PATCH` to\n * call data-API update endpoints (e.g. `/api/v1/sys_api_key/{id}` with\n * `bodyExtra: { revoked: true }`).\n */\n method: z.enum(['POST', 'PATCH', 'PUT', 'DELETE']).optional().describe('HTTP method for type:\"api\" actions. Defaults to POST.'),\n /**\n * Static body fragment merged into the outgoing request body for `type:'api'`\n * actions. Useful for constants the user shouldn't (or can't) edit, e.g.\n * `bodyExtra: { resend: true }` on a resend-invitation action that reuses\n * better-auth's `invite-member` endpoint. Applied after user-collected\n * params and `recordIdParam` so constants always win.\n */\n bodyExtra: z.record(z.string(), z.unknown()).optional().describe('Constant body fields merged into the API request (applied last; overrides user params).'),\n /**\n * Semantic mode hint — UI / runtime can use this to pick confirm copy,\n * default variants, success messaging. Pure metadata; no runtime branching.\n */\n mode: z.enum(['create', 'edit', 'delete', 'custom']).optional().describe('Semantic mode of the action.'),\n\n /**\n * Open the action's result in a NEW TAB. The renderer pre-opens the tab\n * synchronously on click (preserving the user gesture so popup blockers\n * don't fire), paints a progress page, then drives the tab to the\n * handler's returned `redirectUrl` — or, when `newTabUrl` is set, straight\n * to that URL with no server round trip.\n */\n opensInNewTab: z.boolean().optional().describe('Open the action result in a new tab. The renderer pre-opens the tab synchronously on click (popup-blocker-safe) and navigates it to the handler\\'s redirectUrl.'),\n\n /**\n * Zero-roundtrip new-tab target. A path template the renderer navigates\n * the pre-opened tab to IMMEDIATELY on click, skipping the action POST\n * entirely. Only valid together with `opensInNewTab`. The target endpoint\n * MUST perform all auth/authz itself (e.g. the cloud `/sso-open` endpoint,\n * which re-runs every check the POST half would have done). Supports the\n * `{recordId}` placeholder, URL-encoded on substitution.\n */\n newTabUrl: z.string().optional().describe('Direct new-tab URL template ({recordId} placeholder). When set with opensInNewTab, the renderer navigates the pre-opened tab here immediately — no action POST. The endpoint must enforce auth itself.'),\n\n /** Execution */\n timeout: z.number().optional().describe('Maximum execution time in milliseconds for the action'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}).transform((data) => {\n // Auto-migrate deprecated `execute` → `target` for backward compatibility\n if (data.execute && !data.target) {\n return { ...data, target: data.execute };\n }\n return data;\n}).refine((data) => {\n // Require `target` for types that reference an external resource\n if (TARGET_REQUIRED_TYPES.has(data.type) && !data.target) {\n return false;\n }\n return true;\n}, {\n message: \"Action 'target' is required when type is 'url', 'flow', 'modal', 'api', or 'form'.\",\n path: ['target'],\n}).refine((data) => {\n // ADR-0011: an exposed action must carry an LLM-facing description.\n if (data.ai?.exposed === true && !data.ai.description) {\n return false;\n }\n return true;\n}, {\n message: 'ai.description is required (≥40 chars) when ai.exposed is true.',\n path: ['ai', 'description'],\n}).refine((data) => {\n // ADR-0011: paramHints keys must reference a declared param (or the\n // auto-injected `recordId`), so a typo can't silently no-op.\n const hints = data.ai?.paramHints;\n if (!hints) return true;\n const known = new Set<string>(['recordId']);\n for (const p of data.params ?? []) {\n const key = p.name ?? p.field;\n if (key) known.add(key);\n }\n return Object.keys(hints).every((k) => known.has(k));\n}, {\n message: 'ai.paramHints keys must match a declared param name (or \"recordId\").',\n path: ['ai', 'paramHints'],\n}));\n\nexport type Action = z.infer<typeof ActionSchema>;\nexport type ActionParam = z.infer<typeof ActionParamSchema>;\nexport type ActionInput = z.input<typeof ActionSchema>;\n\n/**\n * Action Factory Helper\n */\nexport const Action = {\n create: (config: z.input<typeof ActionSchema>): Action => ActionSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Shared Enumerations\n// ============================================================================\n\n/** Aggregation functions used across query, data-engine, analytics, field */\nimport { lazySchema } from './lazy-schema';\nexport const AggregationFunctionEnum = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'percentile', 'median', 'stddev', 'variance',\n]).describe('Standard aggregation functions');\nexport type AggregationFunction = z.infer<typeof AggregationFunctionEnum>;\n\n/** Sort direction used across query, data-engine, analytics */\nexport const SortDirectionEnum = z.enum(['asc', 'desc'])\n .describe('Sort order direction');\nexport type SortDirection = z.infer<typeof SortDirectionEnum>;\n\n/** Reusable sort item — field + direction pair used across views, data sources, filters */\nexport const SortItemSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to sort by'),\n order: SortDirectionEnum.describe('Sort direction'),\n}).describe('Sort field and direction pair'));\nexport type SortItem = z.infer<typeof SortItemSchema>;\n\n/** CRUD mutation events used across hook, validation, object CDC */\nexport const MutationEventEnum = z.enum([\n 'insert', 'update', 'delete', 'upsert',\n]).describe('Data mutation event types');\nexport type MutationEvent = z.infer<typeof MutationEventEnum>;\n\n/** Database isolation levels — unified format */\nexport const IsolationLevelEnum = z.enum([\n 'read_uncommitted', 'read_committed', 'repeatable_read', 'serializable', 'snapshot',\n]).describe('Transaction isolation levels (snake_case standard)');\nexport type IsolationLevel = z.infer<typeof IsolationLevelEnum>;\n\n/** Cache eviction strategies */\nexport const CacheStrategyEnum = z.enum(['lru', 'lfu', 'ttl', 'fifo'])\n .describe('Cache eviction strategy');\nexport type CacheStrategy = z.infer<typeof CacheStrategyEnum>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { SortItemSchema } from '../shared/enums.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema } from './responsive.zod';\nimport {\n UserActionsConfigSchema,\n AppearanceConfigSchema,\n UserFiltersSchema,\n ViewFilterRuleSchema,\n AddRecordConfigSchema,\n} from './view.zod';\n\n/**\n * Page Region Schema\n * A named region in the template where components are dropped.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PageRegionSchema = lazySchema(() => z.object({\n name: z.string().describe('Region name (e.g. \"sidebar\", \"main\", \"header\")'),\n width: z.enum(['small', 'medium', 'large', 'full']).optional(),\n components: z.array(z.lazy(() => PageComponentSchema)).describe('Components in this region')\n}));\n\n/**\n * Standard Page Component Types\n */\nexport const PageComponentType = z.enum([\n // Structure\n 'page:header', 'page:footer', 'page:sidebar', 'page:tabs', 'page:accordion', 'page:card', 'page:section',\n // Record Context\n 'record:details', 'record:highlights', 'record:related_list', 'record:activity', 'record:chatter', 'record:path', 'record:alert', 'record:quick_actions', 'record:reference_rail', 'record:history',\n // Navigation\n 'app:launcher', 'nav:menu', 'nav:breadcrumb',\n // Utility\n 'global:search', 'global:notifications', 'user:profile',\n // AI\n 'ai:chat_window', 'ai:suggestion',\n // Content Elements (Airtable Interface parity)\n 'element:text', 'element:number', 'element:image', 'element:divider',\n // Interactive Elements (Phase B — Element Library)\n 'element:button', 'element:filter', 'element:form', 'element:record_picker'\n]);\n\n/**\n * Element Data Source Schema\n * Per-element data binding for multi-object pages.\n * Overrides page-level object context so each element can query a different object.\n */\nexport const ElementDataSourceSchema = lazySchema(() => z.object({\n object: z.string().describe('Object to query'),\n view: z.string().optional().describe('Named view to apply'),\n filter: FilterConditionSchema.optional().describe('Additional filter criteria'),\n sort: z.array(SortItemSchema).optional().describe('Sort order'),\n limit: z.number().int().positive().optional().describe('Max records to display'),\n}));\n\n/**\n * Page Component Schema\n * A configured instance of a UI component.\n */\nexport const PageComponentSchema = lazySchema(() => z.object({\n /** Definition */\n type: z.union([\n PageComponentType,\n z.string()\n ]).describe('Component Type (Standard enum or custom string)'),\n id: z.string().optional().describe('Unique instance ID'),\n \n /** Configuration */\n label: I18nLabelSchema.optional(),\n properties: z.record(z.string(), z.unknown()).describe('Component props passed to the widget. See component.zod.ts for schemas.'),\n \n /** \n * Event Handlers \n * Map event names to Action expressions.\n * \"onClick\": \"set_variable('userId', $event.id)\"\n * \"onRowSelect\": \"navigate_to('page_detail', { id: $event.id })\"\n */\n events: z.record(z.string(), z.string()).optional().describe('Event handlers map'),\n\n /** Appearance */\n style: z.record(z.string(), z.string()).optional().describe('Inline styles or utility classes'),\n className: z.string().optional().describe('CSS class names'),\n\n /** Visibility Rule */\n visibility: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n\n /** Per-element data binding, overrides page-level object context */\n dataSource: ElementDataSourceSchema.optional().describe('Per-element data binding for multi-object pages'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * Page Variable Schema\n * Defines local state for the page.\n * Variables can be bound to interactive elements (e.g. element:record_picker, element:filter).\n */\nexport const PageVariableSchema = lazySchema(() => z.object({\n name: z.string().describe('Variable name'),\n type: z.enum(['string', 'number', 'boolean', 'object', 'array', 'record_id']).default('string'),\n defaultValue: z.unknown().optional(),\n /** Source element binding (e.g. element:record_picker writes to this variable) */\n source: z.string().optional().describe('Component ID that writes to this variable'),\n}));\n\n/**\n * Blank Page Layout Item Schema\n * Positions a component on a free-form grid canvas.\n */\nexport const BlankPageLayoutItemSchema = lazySchema(() => z.object({\n componentId: z.string().describe('Reference to a PageComponent.id in the page'),\n x: z.number().int().min(0).describe('Grid column position (0-based)'),\n y: z.number().int().min(0).describe('Grid row position (0-based)'),\n width: z.number().int().min(1).describe('Width in grid columns'),\n height: z.number().int().min(1).describe('Height in grid rows'),\n}));\n\n/**\n * Blank Page Layout Schema\n * Free-form canvas composition with grid-based positioning.\n * Used when page type is 'blank' to enable drag-and-drop element placement.\n */\nexport const BlankPageLayoutSchema = lazySchema(() => z.object({\n columns: z.number().int().min(1).default(12).describe('Number of grid columns'),\n rowHeight: z.number().int().min(1).default(40).describe('Height of each grid row in pixels'),\n gap: z.number().int().min(0).default(8).describe('Gap between grid items in pixels'),\n items: z.array(BlankPageLayoutItemSchema).describe('Positioned components on the canvas'),\n}));\n\n/**\n * Page Type Schema\n * Unified page type enum covering both platform pages (Salesforce FlexiPage style)\n * and Airtable-inspired interface page types.\n *\n * **Disambiguation of similar types:**\n * - `record` vs `record_detail`: `record` is a component-based layout page (FlexiPage style with regions),\n * `record_detail` is a field-display page showing all fields of a single record (Airtable style).\n * Use `record` for custom record pages with regions/components, `record_detail` for auto-generated detail views.\n * - `home` vs `overview`: `home` is the platform-level landing page (tab landing),\n * `overview` is an interface-level navigation hub with links/instructions.\n * Use `home` for app-level landing, `overview` for in-interface navigation hubs.\n * - `app` vs `utility` vs `blank`: `app` is an app-level page with navigation context,\n * `utility` is a floating utility panel (e.g. notes, phone), `blank` is a free-form canvas\n * for custom composition. They serve distinct layout purposes.\n */\nexport const PageTypeSchema = lazySchema(() => z.enum([\n // Platform page types (Salesforce FlexiPage style)\n 'record', // Component-based record layout page with regions\n 'home', // Platform-level home/landing page\n 'app', // App-level page with navigation context\n 'utility', // Floating utility panel (e.g. notes, phone dialer)\n // Interface page types (Airtable Interface parity)\n 'dashboard', // KPI summary with charts/metrics\n 'grid', // Spreadsheet-like data table\n 'list', // Record list with quick actions\n 'gallery', // Card-based visual browsing\n 'kanban', // Status-based board\n 'calendar', // Date-based scheduling\n 'timeline', // Gantt-like project timeline\n 'form', // Data entry form\n 'record_detail', // Auto-generated single record field display\n 'record_review', // Sequential record review/approval\n 'overview', // Interface-level navigation/landing hub\n 'blank', // Free-form canvas for custom composition\n]).describe('Page type — platform or interface page types'));\n\n/**\n * Record Review Config Schema\n * Configuration for a sequential record review/approval page.\n * Users navigate through records one-by-one, taking actions (approve/reject/skip).\n * Only applicable when page type is 'record_review'.\n */\nexport const RecordReviewConfigSchema = lazySchema(() => z.object({\n object: z.string().describe('Target object for review'),\n filter: FilterConditionSchema.optional().describe('Filter criteria for review queue'),\n sort: z.array(SortItemSchema).optional().describe('Sort order for review queue'),\n displayFields: z.array(z.string()).optional()\n .describe('Fields to display on the review page'),\n actions: z.array(z.object({\n label: z.string().describe('Action button label'),\n type: z.enum(['approve', 'reject', 'skip', 'custom'])\n .describe('Action type'),\n field: z.string().optional()\n .describe('Field to update on action'),\n value: z.union([z.string(), z.number(), z.boolean()]).optional()\n .describe('Value to set on action'),\n nextRecord: z.boolean().optional().default(true)\n .describe('Auto-advance to next record after action'),\n })).describe('Review actions'),\n navigation: z.enum(['sequential', 'random', 'filtered'])\n .optional().default('sequential')\n .describe('Record navigation mode'),\n showProgress: z.boolean().optional().default(true)\n .describe('Show review progress indicator'),\n}));\n\n/**\n * Interface Page Configuration Schema (Airtable Interface parity)\n * Page-level declarative configuration for Airtable-style interface pages.\n * Covers title/data binding, levels, filter by, appearance, user actions,\n * tabs, record count, add record, and advanced options (printing).\n *\n * @see Airtable Interface → right panel (Page / Data / Appearance / User filters / User actions / Advanced)\n */\nexport const InterfacePageConfigSchema = lazySchema(() => z.object({\n /** Data binding (ADR-0047: pages REFERENCE views, never restate them) */\n source: z.string().optional().describe('Source object name for the page'),\n sourceView: z.string().optional()\n .describe('Named list view on the source object to inherit columns/filter/sort from (ADR-0047 iron rule: the page adds presentation policy only). Omit to use the object default view'),\n levels: z.number().int().min(1).optional().describe('Number of hierarchy levels to display'),\n filterBy: z.array(ViewFilterRuleSchema).optional().describe('Page-level filter criteria'),\n\n /** Appearance — `appearance.allowedVisualizations` is the runtime visualization whitelist */\n appearance: AppearanceConfigSchema.optional().describe('Appearance and visualization configuration'),\n\n /** User filters (ADR-0047) */\n userFilters: UserFiltersSchema.optional()\n .describe('End-user quick-filter bar for this page (overrides the source view\\'s userFilters)'),\n\n /** User actions */\n userActions: UserActionsConfigSchema.optional().describe('User action toggles'),\n\n /** Add record */\n addRecord: AddRecordConfigSchema.optional().describe('Add record entry point configuration'),\n\n /** Record count */\n showRecordCount: z.boolean().optional().describe('Show record count at page bottom'),\n\n /** Advanced */\n allowPrinting: z.boolean().optional().describe('Allow users to print the page'),\n}).describe('Interface-level page configuration (Airtable parity)'));\n\n/**\n * Page Schema\n * Defines a composition of components for a specific context.\n * Supports both platform pages (Salesforce FlexiPage style: record, home, app, utility)\n * and interface pages (Airtable Interface style: dashboard, grid, kanban, record_review, etc.).\n * \n * **NAMING CONVENTION:**\n * Page names are used in routing and must be lowercase snake_case.\n * Prefix with 'page_' is recommended for clarity.\n * \n * @example Good page names\n * - 'page_dashboard'\n * - 'page_settings'\n * - 'home_page'\n * - 'record_detail'\n * \n * @example Bad page names (will be rejected)\n * - 'PageDashboard' (PascalCase)\n * - 'Settings Page' (spaces)\n */\nexport const PageSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Page unique name (lowercase snake_case)'),\n label: I18nLabelSchema,\n description: I18nLabelSchema.optional(),\n\n /** Icon (used in interface navigation) */\n icon: z.string().optional().describe('Page icon name'),\n \n /** Page Type */\n type: PageTypeSchema.default('record').describe('Page type'),\n \n /** Page State Definitions */\n variables: z.array(PageVariableSchema).optional().describe('Local page state variables'),\n\n /** Context */\n object: z.string().optional().describe('Bound object (for Record pages)'),\n\n /** Record Review Configuration (only for record_review pages) */\n recordReview: RecordReviewConfigSchema.optional()\n .describe('Record review configuration (required when type is \"record_review\")'),\n\n /** Blank Page Layout (only for blank pages) */\n blankLayout: BlankPageLayoutSchema.optional()\n .describe('Free-form grid layout for blank pages (used when type is \"blank\")'),\n \n /** Layout Template */\n template: z.string().default('default').describe('Layout template name (e.g. \"header-sidebar-main\")'),\n \n /** Regions & Content */\n regions: z.array(PageRegionSchema).describe('Defined regions with components'),\n \n /** Activation */\n isDefault: z.boolean().default(false),\n assignedProfiles: z.array(z.string()).optional(),\n\n /** Interface Page Configuration (Airtable Interface parity) */\n interfaceConfig: InterfacePageConfigSchema.optional()\n .describe('Interface-level page configuration (for Airtable-style interface pages)'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /**\n * Override semantics for record pages.\n *\n * - `\"full\"` (default): the schema fully describes the page.\n * - `\"slotted\"`: the schema only provides overrides for one or more\n * named slots (see `slots`). The default-page synthesizer fills\n * in every slot the author did NOT override. Useful when you want\n * to customize just the header / actions / one tab without\n * re-authoring the rest of the page.\n *\n * Only meaningful when `type === 'record'`. Ignored otherwise.\n */\n kind: z.enum(['full', 'slotted']).default('full')\n .describe('Page override mode: full (default) or slotted (partial overrides)'),\n\n /**\n * Slot override map for slotted record pages.\n *\n * Each slot accepts a single PageComponent or an array. Slots not\n * provided fall through to the synthesized default.\n *\n * Slot menu (v1): header | actions | alerts | highlights | details |\n * tabs | discussion. Each slot is a full replacement at the slot\n * boundary — no deep merge, no patch operations. To compose default +\n * custom, call the corresponding `buildDefault*` sub-builder from the\n * renderer runtime (e.g. @object-ui/plugin-detail).\n *\n * Only honored when `kind === 'slotted'`.\n */\n slots: z.object({\n header: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n actions: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n alerts: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n highlights: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n details: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n tabs: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n discussion: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n }).optional().describe('Slot override map for slotted pages'),\n}).superRefine((data, ctx) => {\n if (data.type === 'record_review' && !data.recordReview) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['recordReview'],\n message: 'recordReview is required when type is \"record_review\"',\n });\n }\n if (data.type === 'blank' && !data.blankLayout) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['blankLayout'],\n message: 'blankLayout is required when type is \"blank\"',\n });\n }\n if (data.kind === 'slotted' && !data.slots) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['slots'],\n message: 'slots is required when kind is \"slotted\"',\n });\n }\n}));\n\nexport type Page = z.infer<typeof PageSchema>;\nexport type PageType = z.infer<typeof PageTypeSchema>;\nexport type PageComponent = z.infer<typeof PageComponentSchema>;\nexport type PageRegion = z.infer<typeof PageRegionSchema>;\nexport type PageVariable = z.infer<typeof PageVariableSchema>;\nexport type ElementDataSource = z.infer<typeof ElementDataSourceSchema>;\nexport type RecordReviewConfig = z.infer<typeof RecordReviewConfigSchema>;\nexport type BlankPageLayoutItem = z.infer<typeof BlankPageLayoutItemSchema>;\nexport type BlankPageLayout = z.infer<typeof BlankPageLayoutSchema>;\nexport type InterfacePageConfig = z.infer<typeof InterfacePageConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldSchema } from '../data/field.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Widget Lifecycle Hooks Schema\n * \n * Defines lifecycle callbacks for custom widgets inspired by Web Components and React.\n * These hooks allow widgets to perform initialization, cleanup, and respond to changes.\n * \n * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components\n * @see https://react.dev/reference/react/Component#component-lifecycle\n * \n * @example\n * ```typescript\n * const widget = {\n * lifecycle: {\n * onMount: \"console.log('Widget mounted')\",\n * onUpdate: \"if (prevProps.value !== props.value) { updateUI() }\",\n * onUnmount: \"cleanup()\",\n * onValidate: \"return value.length > 0 ? null : 'Required field'\"\n * }\n * }\n * ```\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WidgetLifecycleSchema = lazySchema(() => z.object({\n /**\n * Called when widget is mounted/rendered for the first time\n * Use for initialization, setting up event listeners, loading data, etc.\n * \n * @example \"initializeDatePicker(); loadOptions();\"\n */\n onMount: z.string().optional().describe('Initialization code when widget mounts'),\n\n /**\n * Called when widget props change\n * Receives previous props for comparison\n * \n * @example \"if (prevProps.value !== props.value) { updateDisplay() }\"\n */\n onUpdate: z.string().optional().describe('Code to run when props change'),\n\n /**\n * Called when widget is about to be removed from DOM\n * Use for cleanup, removing event listeners, canceling timers, etc.\n * \n * @example \"destroyDatePicker(); cancelPendingRequests();\"\n */\n onUnmount: z.string().optional().describe('Cleanup code when widget unmounts'),\n\n /**\n * Custom validation logic for this widget\n * Should return error message string if invalid, null/undefined if valid\n * \n * @example \"return value && value.length >= 10 ? null : 'Minimum 10 characters'\"\n */\n onValidate: z.string().optional().describe('Custom validation logic'),\n\n /**\n * Called when widget receives focus\n * \n * @example \"highlightField(); logFocusEvent();\"\n */\n onFocus: z.string().optional().describe('Code to run on focus'),\n\n /**\n * Called when widget loses focus\n * \n * @example \"validateField(); saveFieldState();\"\n */\n onBlur: z.string().optional().describe('Code to run on blur'),\n\n /**\n * Called on any error in the widget\n * \n * @example \"logError(error); showErrorNotification();\"\n */\n onError: z.string().optional().describe('Error handling code'),\n}));\n\nexport type WidgetLifecycle = z.infer<typeof WidgetLifecycleSchema>;\n\n/**\n * Widget Event Schema\n * \n * Defines custom events that widgets can emit, inspired by DOM Events and Lightning Web Components.\n * \n * @see https://developer.mozilla.org/en-US/docs/Web/Events/Creating_and_triggering_events\n * @see https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.events\n * \n * @example\n * ```typescript\n * const searchEvent = {\n * name: 'search',\n * bubbles: true,\n * cancelable: false,\n * payload: {\n * query: 'string',\n * filters: 'object'\n * }\n * }\n * ```\n */\nexport const WidgetEventSchema = lazySchema(() => z.object({\n /**\n * Event name\n * Should be lowercase, dash-separated for consistency\n * \n * @example \"value-change\", \"item-selected\", \"search-complete\"\n */\n name: z.string().describe('Event name'),\n\n /**\n * Event label for documentation\n */\n label: I18nLabelSchema.optional().describe('Human-readable event label'),\n\n /**\n * Event description\n */\n description: I18nLabelSchema.optional().describe('Event description and usage'),\n\n /**\n * Whether event bubbles up through the DOM hierarchy\n * \n * @default false\n */\n bubbles: z.boolean().default(false).describe('Whether event bubbles'),\n\n /**\n * Whether event can be cancelled\n * \n * @default false\n */\n cancelable: z.boolean().default(false).describe('Whether event is cancelable'),\n\n /**\n * Event payload schema\n * Defines the data structure sent with the event\n * \n * @example { userId: 'string', timestamp: 'number' }\n */\n payload: z.record(z.string(), z.unknown()).optional().describe('Event payload schema'),\n}));\n\nexport type WidgetEvent = z.infer<typeof WidgetEventSchema>;\n\n/**\n * Widget Property Definition Schema\n * \n * Defines the contract for widget configuration properties.\n * Inspired by React PropTypes and Web Component attributes.\n * \n * @see https://react.dev/reference/react/Component#static-proptypes\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements\n * \n * @example\n * ```typescript\n * const widgetProps = {\n * maxLength: {\n * type: 'number',\n * required: false,\n * default: 100,\n * description: 'Maximum input length'\n * }\n * }\n * ```\n */\nexport const WidgetPropertySchema = lazySchema(() => z.object({\n /**\n * Property name\n * Should be camelCase following ObjectStack conventions\n */\n name: z.string().describe('Property name (camelCase)'),\n\n /**\n * Property label for UI\n */\n label: I18nLabelSchema.optional().describe('Human-readable label'),\n\n /**\n * Property data type\n * \n * @example \"string\", \"number\", \"boolean\", \"array\", \"object\", \"function\"\n */\n type: z.enum(['string', 'number', 'boolean', 'array', 'object', 'function', 'any'])\n .describe('TypeScript type'),\n\n /**\n * Whether property is required\n * \n * @default false\n */\n required: z.boolean().default(false).describe('Whether property is required'),\n\n /**\n * Default value for the property\n */\n default: z.unknown().optional().describe('Default value'),\n\n /**\n * Property description\n */\n description: I18nLabelSchema.optional().describe('Property description'),\n\n /**\n * Property validation schema\n * Can include min/max, regex, enum values, etc.\n */\n validation: z.record(z.string(), z.unknown()).optional().describe('Validation rules'),\n\n /**\n * Property category for grouping in UI\n */\n category: z.string().optional().describe('Property category'),\n}));\n\nexport type WidgetProperty = z.infer<typeof WidgetPropertySchema>;\n\n/**\n * Widget Manifest Schema\n * \n * Complete definition for a custom widget including metadata, lifecycle, events, and props.\n * This is used for widget registration and discovery.\n * \n * @example\n * ```typescript\n * const customWidget = {\n * name: 'custom_date_picker',\n * label: 'Custom Date Picker',\n * version: '1.0.0',\n * author: 'Company Name',\n * fieldTypes: ['date', 'datetime'],\n * lifecycle: { ... },\n * events: [ ... ],\n * properties: [ ... ]\n * }\n * ```\n */\n/**\n * Widget Source Schema\n * Defines how the widget code is loaded.\n */\nexport const WidgetSourceSchema = lazySchema(() => z.discriminatedUnion('type', [\n // NPM Registry (standard)\n z.object({\n type: z.literal('npm'),\n packageName: z.string().describe('NPM package name'),\n version: z.string().default('latest'),\n exportName: z.string().optional().describe('Named export (default: default)'),\n }),\n // Module Federation (Remote)\n z.object({\n type: z.literal('remote'),\n url: z.string().url().describe('Remote entry URL (.js)'),\n moduleName: z.string().describe('Exposed module name'),\n scope: z.string().describe('Remote scope name'),\n }),\n // Inline Code (Simple scripts)\n z.object({\n type: z.literal('inline'),\n code: z.string().describe('JavaScript code body'),\n }),\n]));\n\nexport type WidgetSource = z.infer<typeof WidgetSourceSchema>;\n\nexport const WidgetManifestSchema = lazySchema(() => z.object({\n /**\n * Widget identifier (snake_case)\n */\n name: SnakeCaseIdentifierSchema\n .describe('Widget identifier (snake_case)'),\n\n /**\n * Human-readable widget name\n */\n label: I18nLabelSchema.describe('Widget display name'),\n\n /**\n * Widget description\n */\n description: I18nLabelSchema.optional().describe('Widget description'),\n\n /**\n * Widget version (semver)\n */\n version: z.string().optional().describe('Widget version (semver)'),\n\n /**\n * Widget author/organization\n */\n author: z.string().optional().describe('Widget author'),\n\n /**\n * Icon name or URL\n */\n icon: z.string().optional().describe('Widget icon'),\n\n /**\n * Field types this widget supports\n * \n * @example [\"text\", \"email\", \"url\"]\n */\n fieldTypes: z.array(z.string()).optional().describe('Supported field types'),\n\n /**\n * Widget category for organization\n */\n category: z.enum(['input', 'display', 'picker', 'editor', 'custom'])\n .default('custom')\n .describe('Widget category'),\n\n /**\n * Widget lifecycle hooks\n */\n lifecycle: WidgetLifecycleSchema.optional().describe('Lifecycle hooks'),\n\n /**\n * Custom events this widget emits\n */\n events: z.array(WidgetEventSchema).optional().describe('Custom events'),\n\n /**\n * Widget configuration properties\n */\n properties: z.array(WidgetPropertySchema).optional().describe('Configuration properties'),\n\n /**\n * Widget implementation\n * Defines how to load the widget code\n */\n implementation: WidgetSourceSchema.optional().describe('Widget implementation source'),\n\n /**\n * Widget dependencies\n * External libraries or scripts needed\n */\n dependencies: z.array(z.object({\n name: z.string(),\n version: z.string().optional(),\n url: z.string().url().optional(),\n })).optional().describe('Widget dependencies'),\n\n /**\n * Widget screenshots for showcase\n */\n screenshots: z.array(z.string().url()).optional().describe('Screenshot URLs'),\n\n /**\n * Widget documentation URL\n */\n documentation: z.string().url().optional().describe('Documentation URL'),\n\n /**\n * License information\n */\n license: z.string().optional().describe('License (SPDX identifier)'),\n\n /**\n * Tags for discovery\n */\n tags: z.array(z.string()).optional().describe('Tags for categorization'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n}));\n\nexport type WidgetManifest = z.infer<typeof WidgetManifestSchema>;\n\n/**\n * Field Widget Props Schema\n * \n * This defines the contract for custom field components and plugin UI extensions.\n * Third-party developers use this interface to build custom field widgets that integrate\n * seamlessly with the ObjectStack UI system.\n * \n * @example\n * // Custom widget implementation\n * function CustomDatePicker(props: FieldWidgetProps) {\n * const { value, onChange, readonly, required, error, field, record, options } = props;\n * // Widget implementation...\n * }\n */\nexport const FieldWidgetPropsSchema = lazySchema(() => z.object({\n /**\n * Current field value.\n * Type depends on the field type (string, number, boolean, array, object, etc.)\n */\n value: z.unknown().describe('Current field value'),\n\n /**\n * Callback function to update the field value.\n * Should be called when user interaction changes the value.\n * \n * @param newValue - The new value to set\n */\n onChange: z.function()\n .input(z.tuple([z.unknown()]))\n .output(z.void())\n .describe('Callback to update field value'),\n\n /**\n * Whether the field is in read-only mode.\n * When true, the widget should display the value but not allow editing.\n */\n readonly: z.boolean().default(false).describe('Read-only mode flag'),\n\n /**\n * Whether the field is required.\n * Widget should indicate required state visually and validate accordingly.\n */\n required: z.boolean().default(false).describe('Required field flag'),\n\n /**\n * Validation error message to display.\n * When present, widget should display the error in its UI.\n */\n error: z.string().optional().describe('Validation error message'),\n\n /**\n * Complete field definition from the schema.\n * Contains metadata like type, constraints, options, etc.\n */\n field: FieldSchema.describe('Field schema definition'),\n\n /**\n * The complete record/document being edited.\n * Useful for conditional logic and cross-field dependencies.\n */\n record: z.record(z.string(), z.unknown()).optional().describe('Complete record data'),\n\n /**\n * Custom options passed to the widget.\n * Can contain widget-specific configuration like themes, behaviors, etc.\n */\n options: z.record(z.string(), z.unknown()).optional().describe('Custom widget options'),\n}));\n\n/**\n * TypeScript type for Field Widget Props\n */\nexport type FieldWidgetProps = z.infer<typeof FieldWidgetPropsSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Feed Item Type\n * Unified activity types for the record timeline.\n * Covers comments, field changes, tasks, events, and system activities.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FeedItemType = z.enum([\n 'comment',\n 'field_change',\n 'task',\n 'event',\n 'email',\n 'call',\n 'note',\n 'file',\n 'record_create',\n 'record_delete',\n 'approval',\n 'sharing',\n 'system',\n]);\nexport type FeedItemType = z.infer<typeof FeedItemType>;\n\n/**\n * Mention Schema\n * Represents an @mention within comment body text.\n */\nexport const MentionSchema = lazySchema(() => z.object({\n type: z.enum(['user', 'team', 'record']).describe('Mention target type'),\n id: z.string().describe('Target ID'),\n name: z.string().describe('Display name for rendering'),\n offset: z.number().int().min(0).describe('Character offset in body text'),\n length: z.number().int().min(1).describe('Length of mention token in body text'),\n}));\nexport type Mention = z.infer<typeof MentionSchema>;\n\n/**\n * Field Change Entry Schema\n * Represents a single field-level change within a field_change feed item.\n */\nexport const FieldChangeEntrySchema = lazySchema(() => z.object({\n field: z.string().describe('Field machine name'),\n fieldLabel: z.string().optional().describe('Field display label'),\n oldValue: z.unknown().optional().describe('Previous value'),\n newValue: z.unknown().optional().describe('New value'),\n oldDisplayValue: z.string().optional().describe('Human-readable old value'),\n newDisplayValue: z.string().optional().describe('Human-readable new value'),\n}));\nexport type FieldChangeEntry = z.infer<typeof FieldChangeEntrySchema>;\n\n/**\n * Reaction Schema\n * Represents an emoji reaction on a feed item.\n */\nexport const ReactionSchema = lazySchema(() => z.object({\n emoji: z.string().describe('Emoji character or shortcode (e.g., \"👍\", \":thumbsup:\")'),\n userIds: z.array(z.string()).describe('Users who reacted'),\n count: z.number().int().min(1).describe('Total reaction count'),\n}));\nexport type Reaction = z.infer<typeof ReactionSchema>;\n\n/**\n * Feed Actor Schema\n * Represents the actor who performed the action.\n */\nexport const FeedActorSchema = lazySchema(() => z.object({\n type: z.enum(['user', 'system', 'service', 'automation']).describe('Actor type'),\n id: z.string().describe('Actor ID'),\n name: z.string().optional().describe('Actor display name'),\n avatarUrl: z.string().url().optional().describe('Actor avatar URL'),\n source: z.string().optional().describe('Source application (e.g., \"Omni\", \"API\", \"Studio\")'),\n}));\nexport type FeedActor = z.infer<typeof FeedActorSchema>;\n\n/**\n * Feed Item Visibility\n */\nexport const FeedVisibility = z.enum(['public', 'internal', 'private']);\nexport type FeedVisibility = z.infer<typeof FeedVisibility>;\n\n/**\n * Feed Item Schema\n * A single entry in the unified activity timeline.\n *\n * @example Comment\n * {\n * id: 'feed_001',\n * type: 'comment',\n * object: 'account',\n * recordId: 'rec_123',\n * body: 'Great progress! @jane.doe can you follow up?',\n * mentions: [{ type: 'user', id: 'user_123', name: 'Jane Doe', offset: 17, length: 9 }],\n * actor: { type: 'user', id: 'user_456', name: 'John Smith' },\n * createdAt: '2026-01-15T10:30:00Z',\n * }\n *\n * @example Field Change\n * {\n * id: 'feed_002',\n * type: 'field_change',\n * object: 'account',\n * recordId: 'rec_123',\n * changes: [\n * { field: 'status', oldDisplayValue: 'New', newDisplayValue: 'Active' },\n * { field: 'region', oldDisplayValue: '', newDisplayValue: 'Asia-Pacific' },\n * ],\n * actor: { type: 'user', id: 'user_456', name: 'John Smith' },\n * createdAt: '2026-01-15T10:25:00Z',\n * }\n */\nexport const FeedItemSchema = lazySchema(() => z.object({\n /** Unique identifier */\n id: z.string().describe('Feed item ID'),\n\n /** Feed item type */\n type: FeedItemType.describe('Activity type'),\n\n /** Target record reference */\n object: z.string().describe('Object name (e.g., \"account\")'),\n recordId: z.string().describe('Record ID this feed item belongs to'),\n\n /** Actor (who performed the action) */\n actor: FeedActorSchema.describe('Who performed this action'),\n\n /** Content (for comments/notes) */\n body: z.string().optional().describe('Rich text body (Markdown supported)'),\n\n /** @Mentions */\n mentions: z.array(MentionSchema).optional().describe('Mentioned users/teams/records'),\n\n /** Field changes (for field_change type) */\n changes: z.array(FieldChangeEntrySchema).optional().describe('Field-level changes'),\n\n /** Reactions */\n reactions: z.array(ReactionSchema).optional().describe('Emoji reactions on this item'),\n\n /** Reply threading */\n parentId: z.string().optional().describe('Parent feed item ID for threaded replies'),\n replyCount: z.number().int().min(0).default(0).describe('Number of replies'),\n\n /** Pin / Star */\n pinned: z.boolean().default(false).describe('Whether the feed item is pinned to the top of the timeline'),\n pinnedAt: z.string().datetime().optional().describe('Timestamp when the item was pinned'),\n pinnedBy: z.string().optional().describe('User ID who pinned the item'),\n starred: z.boolean().default(false).describe('Whether the feed item is starred/bookmarked by the current user'),\n starredAt: z.string().datetime().optional().describe('Timestamp when the item was starred'),\n\n /** Visibility */\n visibility: FeedVisibility.default('public')\n .describe('Visibility: public (all users), internal (team only), private (author + mentioned)'),\n\n /** Timestamps */\n createdAt: z.string().datetime().describe('Creation timestamp'),\n updatedAt: z.string().datetime().optional().describe('Last update timestamp'),\n editedAt: z.string().datetime().optional().describe('When comment was last edited'),\n isEdited: z.boolean().default(false).describe('Whether comment has been edited'),\n}));\nexport type FeedItem = z.infer<typeof FeedItemSchema>;\n\n/**\n * Feed Filter Mode\n * Controls which feed item types to display in the timeline.\n */\nexport const FeedFilterMode = z.enum([\n 'all',\n 'comments_only',\n 'changes_only',\n 'tasks_only',\n]);\nexport type FeedFilterMode = z.infer<typeof FeedFilterMode>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ViewFilterRuleSchema } from './view.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { FeedItemType, FeedFilterMode } from '../data/feed.zod';\n\n/**\n * Empty Properties Schema\n */\nimport { lazySchema } from '../shared/lazy-schema';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nconst EmptyProps = z.object({});\n\n/**\n * ----------------------------------------------------------------------\n * 1. Structure Components\n * ----------------------------------------------------------------------\n */\n\nexport const PageHeaderProps = z.object({\n title: I18nLabelSchema.describe('Page title'),\n subtitle: I18nLabelSchema.optional().describe('Page subtitle'),\n icon: z.string().optional().describe('Icon name'),\n breadcrumb: z.boolean().default(true).describe('Show breadcrumb'),\n actions: z.array(z.string()).optional().describe('Action IDs to show in header'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const PageTabsProps = z.object({\n type: z.enum(['line', 'card', 'pill']).default('line'),\n position: z.enum(['top', 'left']).default('top'),\n items: z.array(z.object({\n label: I18nLabelSchema,\n icon: z.string().optional(),\n children: z.array(z.unknown()).describe('Child components')\n })),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const PageCardProps = z.object({\n title: I18nLabelSchema.optional(),\n bordered: z.boolean().default(true),\n actions: z.array(z.string()).optional(),\n /** Slot for nested content in the Card body */\n body: z.array(z.unknown()).optional().describe('Card content components (slot)'),\n /** Slot for footer content */\n footer: z.array(z.unknown()).optional().describe('Card footer components (slot)'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\n/**\n * ----------------------------------------------------------------------\n * 2. Record Context Components\n * ----------------------------------------------------------------------\n */\n\nexport const RecordDetailsProps = z.object({\n columns: z.enum(['1', '2', '3', '4']).default('2').describe('Number of columns for field layout (1-4)'),\n layout: z.enum(['auto', 'custom']).default('auto').describe('Layout mode: auto uses object compactLayout, custom uses explicit sections'),\n sections: z.array(z.string()).optional().describe('Section IDs to show (required when layout is \"custom\")'),\n fields: z.array(z.string()).optional().describe('Explicit field list to display (optional, overrides compactLayout)'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordRelatedListProps = z.object({\n objectName: z.string().describe('Related object name (e.g., \"task\", \"opportunity\")'),\n relationshipField: z.string().describe('Field on related object that points to this record (e.g., \"account_id\")'),\n columns: z.array(z.string()).describe('Fields to display in the related list'),\n sort: z.union([\n z.string(),\n z.array(z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc'])\n }))\n ]).optional().describe('Sort order for related records'),\n limit: z.number().int().positive().default(5).describe('Number of records to display initially'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Additional filter criteria for related records'),\n title: I18nLabelSchema.optional().describe('Custom title for the related list'),\n showViewAll: z.boolean().default(true).describe('Show \"View All\" link to see all related records'),\n actions: z.array(z.string()).optional().describe('Action IDs available for related records'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordHighlightsField = z.union([\n z.string(),\n z.object({\n name: z.string().describe('Field name on the record'),\n label: z.string().optional().describe('Display label (overrides schema label)'),\n icon: z.string().optional().describe('Icon name (lucide icon key)'),\n type: z.string().optional().describe('Override cell renderer type (rare)'),\n }),\n]).describe('Highlight field: bare name, or {name,label?,icon?,type?}');\n\nexport const RecordHighlightsProps = z.object({\n fields: z.array(RecordHighlightsField).min(1).max(7).describe('Key fields to highlight (1-7 fields max, typically displayed as prominent cards). Each item may be a bare field name or {name, label?, icon?, type?} for inline overrides.'),\n layout: z.enum(['horizontal', 'vertical']).default('horizontal').describe('Layout orientation for highlight fields'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordActivityProps = z.object({\n /** Activity types to display (unified enum including comment, field_change, etc.) */\n types: z.array(FeedItemType).optional().describe('Feed item types to show (default: all)'),\n /** Default filter mode (Airtable-style dropdown) */\n filterMode: FeedFilterMode.default('all').describe('Default activity filter'),\n /** Allow user to switch filter modes */\n showFilterToggle: z.boolean().default(true).describe('Show filter dropdown in panel header'),\n /** Pagination */\n limit: z.number().int().positive().default(20).describe('Number of items to load per page'),\n /** Show completed activities */\n showCompleted: z.boolean().default(false).describe('Include completed activities'),\n /** Merge field_change + comment in a unified timeline */\n unifiedTimeline: z.boolean().default(true).describe('Mix field changes and comments in one timeline (Airtable style)'),\n /** Show the comment input box at the bottom */\n showCommentInput: z.boolean().default(true).describe('Show \"Leave a comment\" input at the bottom'),\n /** Enable @mentions in comments */\n enableMentions: z.boolean().default(true).describe('Enable @mentions in comments'),\n /** Enable emoji reactions */\n enableReactions: z.boolean().default(false).describe('Enable emoji reactions on feed items'),\n /** Enable threaded replies */\n enableThreading: z.boolean().default(false).describe('Enable threaded replies on comments'),\n /** Show notification subscription toggle (bell icon) */\n showSubscriptionToggle: z.boolean().default(true).describe('Show bell icon for record-level notification subscription'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordChatterProps = z.object({\n /** Panel position */\n position: z.enum(['sidebar', 'inline', 'drawer']).default('sidebar').describe('Where to render the chatter panel'),\n /** Panel width (for sidebar/drawer) */\n width: z.union([z.string(), z.number()]).optional().describe('Panel width (e.g., \"350px\", \"30%\")'),\n /** Collapsible */\n collapsible: z.boolean().default(true).describe('Whether the panel can be collapsed'),\n /** Default collapsed state */\n defaultCollapsed: z.boolean().default(false).describe('Whether the panel starts collapsed'),\n /** Feed configuration (delegates to RecordActivityProps) */\n feed: RecordActivityProps.optional().describe('Embedded activity feed configuration'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordPathProps = z.object({\n statusField: z.string().describe('Field name representing the current status/stage'),\n stages: z.array(z.object({\n value: z.string(),\n label: I18nLabelSchema,\n })).optional().describe('Explicit stage definitions (if not using field metadata)'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const PageAccordionProps = z.object({\n items: z.array(z.object({\n label: I18nLabelSchema,\n icon: z.string().optional(),\n collapsed: z.boolean().default(false),\n children: z.array(z.unknown()).describe('Child components'),\n })),\n allowMultiple: z.boolean().default(false).describe('Allow multiple panels to be expanded simultaneously'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const AIChatWindowProps = z.object({\n mode: z.enum(['float', 'sidebar', 'inline']).default('float').describe('Display mode for the chat window'),\n agentId: z.string().optional().describe('Specific AI agent to use'),\n context: z.record(z.string(), z.unknown()).optional().describe('Contextual data to pass to the AI'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\n/**\n * ----------------------------------------------------------------------\n * 3. Content Element Components (Airtable Interface Parity)\n * ----------------------------------------------------------------------\n */\n\nexport const ElementTextPropsSchema = lazySchema(() => z.object({\n content: z.string().describe('Text or Markdown content'),\n variant: z.enum(['heading', 'subheading', 'body', 'caption'])\n .optional().default('body').describe('Text style variant'),\n align: z.enum(['left', 'center', 'right'])\n .optional().default('left').describe('Text alignment'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementNumberPropsSchema = lazySchema(() => z.object({\n object: z.string().describe('Source object'),\n field: z.string().optional().describe('Field to aggregate'),\n aggregate: z.enum(['count', 'sum', 'avg', 'min', 'max'])\n .describe('Aggregation function'),\n filter: FilterConditionSchema.optional().describe('Filter criteria'),\n format: z.enum(['number', 'currency', 'percent']).optional().describe('Number display format'),\n prefix: z.string().optional().describe('Prefix text (e.g. \"$\")'),\n suffix: z.string().optional().describe('Suffix text (e.g. \"%\")'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementImagePropsSchema = lazySchema(() => z.object({\n src: z.string().describe('Image URL or attachment field'),\n alt: z.string().optional().describe('Alt text for accessibility'),\n fit: z.enum(['cover', 'contain', 'fill'])\n .optional().default('cover').describe('Image object-fit mode'),\n height: z.number().optional().describe('Fixed height in pixels'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * ----------------------------------------------------------------------\n * 4. Interactive Element Components (Phase B — Element Library)\n * ----------------------------------------------------------------------\n */\n\nexport const ElementButtonPropsSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.describe('Button display label'),\n variant: z.enum(['primary', 'secondary', 'danger', 'ghost', 'link'])\n .optional().default('primary').describe('Button visual variant'),\n size: z.enum(['small', 'medium', 'large'])\n .optional().default('medium').describe('Button size'),\n icon: z.string().optional().describe('Icon name (Lucide icon)'),\n iconPosition: z.enum(['left', 'right'])\n .optional().default('left').describe('Icon position relative to label'),\n disabled: z.boolean().optional().default(false).describe('Disable the button'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementFilterPropsSchema = lazySchema(() => z.object({\n object: z.string().describe('Object to filter'),\n fields: z.array(z.string()).describe('Filterable field names'),\n targetVariable: z.string().optional().describe('Page variable to store filter state'),\n layout: z.enum(['inline', 'dropdown', 'sidebar'])\n .optional().default('inline').describe('Filter display layout'),\n showSearch: z.boolean().optional().default(true).describe('Show search input'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementFormPropsSchema = lazySchema(() => z.object({\n object: z.string().describe('Object for the form'),\n fields: z.array(z.string()).optional().describe('Fields to display (defaults to all editable fields)'),\n mode: z.enum(['create', 'edit']).optional().default('create').describe('Form mode'),\n submitLabel: I18nLabelSchema.optional().describe('Submit button label'),\n onSubmit: ExpressionInputSchema.optional().describe('Action expression on form submit (CEL)'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementRecordPickerPropsSchema = lazySchema(() => z.object({\n object: z.string().describe('Object to pick records from'),\n displayField: z.string().describe('Field to display as the record label'),\n searchFields: z.array(z.string()).optional().describe('Fields to search against'),\n filter: FilterConditionSchema.optional().describe('Filter criteria for available records'),\n multiple: z.boolean().optional().default(false).describe('Allow multiple record selection'),\n targetVariable: z.string().optional().describe('Page variable to bind selected record ID(s)'),\n placeholder: I18nLabelSchema.optional().describe('Placeholder text'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * ----------------------------------------------------------------------\n * Component Props Map\n * Maps Component Type to its Property Schema\n * ----------------------------------------------------------------------\n */\nexport const ComponentPropsMap = {\n // Structure\n 'page:header': PageHeaderProps,\n 'page:tabs': PageTabsProps,\n 'page:card': PageCardProps,\n 'page:footer': EmptyProps,\n 'page:sidebar': EmptyProps,\n 'page:accordion': PageAccordionProps,\n 'page:section': EmptyProps,\n\n // Record\n 'record:details': RecordDetailsProps,\n 'record:related_list': RecordRelatedListProps,\n 'record:highlights': RecordHighlightsProps,\n 'record:activity': RecordActivityProps,\n 'record:chatter': RecordChatterProps,\n 'record:path': RecordPathProps,\n\n // Navigation\n 'app:launcher': EmptyProps,\n 'nav:menu': EmptyProps,\n 'nav:breadcrumb': EmptyProps,\n\n // Utility\n 'global:search': EmptyProps,\n 'global:notifications': EmptyProps,\n 'user:profile': EmptyProps,\n \n // AI\n 'ai:chat_window': AIChatWindowProps,\n 'ai:suggestion': z.object({ context: z.string().optional() }),\n\n // Content Elements\n 'element:text': ElementTextPropsSchema,\n 'element:number': ElementNumberPropsSchema,\n 'element:image': ElementImagePropsSchema,\n 'element:divider': EmptyProps,\n\n // Interactive Elements\n 'element:button': ElementButtonPropsSchema,\n 'element:filter': ElementFilterPropsSchema,\n 'element:form': ElementFormPropsSchema,\n 'element:record_picker': ElementRecordPickerPropsSchema,\n} as const;\n\n/**\n * Type Helper to extract props from map\n */\nexport type ComponentProps<T extends keyof typeof ComponentPropsMap> = z.infer<typeof ComponentPropsMap[T]>;\nexport type ComponentPropsInput<T extends keyof typeof ComponentPropsMap> = z.input<typeof ComponentPropsMap[T]>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Touch Target Configuration Schema\n * Ensures touch targets meet WCAG 2.5.5 minimum size requirements (44x44px).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const TouchTargetConfigSchema = lazySchema(() => z.object({\n minWidth: z.number().default(44).describe('Minimum touch target width in pixels (WCAG 2.5.5: 44px)'),\n minHeight: z.number().default(44).describe('Minimum touch target height in pixels (WCAG 2.5.5: 44px)'),\n padding: z.number().optional().describe('Additional padding around touch target in pixels'),\n hitSlop: z.object({\n top: z.number().optional().describe('Extra hit area above the element'),\n right: z.number().optional().describe('Extra hit area to the right of the element'),\n bottom: z.number().optional().describe('Extra hit area below the element'),\n left: z.number().optional().describe('Extra hit area to the left of the element'),\n }).optional().describe('Invisible hit area extension beyond the visible bounds'),\n}).describe('Touch target sizing configuration (WCAG accessible)'));\n\nexport type TouchTargetConfig = z.infer<typeof TouchTargetConfigSchema>;\n\n/**\n * Gesture Type Enum\n * Supported touch gesture types.\n */\nexport const GestureTypeSchema = lazySchema(() => z.enum([\n 'swipe',\n 'pinch',\n 'long_press',\n 'double_tap',\n 'drag',\n 'rotate',\n 'pan',\n]).describe('Touch gesture type'));\n\nexport type GestureType = z.infer<typeof GestureTypeSchema>;\n\n/**\n * Swipe Direction Enum\n */\nexport const SwipeDirectionSchema = lazySchema(() => z.enum(['up', 'down', 'left', 'right']));\n\nexport type SwipeDirection = z.infer<typeof SwipeDirectionSchema>;\n\n/**\n * Swipe Gesture Configuration Schema\n */\nexport const SwipeGestureConfigSchema = lazySchema(() => z.object({\n direction: z.array(SwipeDirectionSchema).describe('Allowed swipe directions'),\n threshold: z.number().optional().describe('Minimum distance in pixels to recognize swipe'),\n velocity: z.number().optional().describe('Minimum velocity (px/ms) to trigger swipe'),\n}).describe('Swipe gesture recognition settings'));\n\nexport type SwipeGestureConfig = z.infer<typeof SwipeGestureConfigSchema>;\n\n/**\n * Pinch Gesture Configuration Schema\n */\nexport const PinchGestureConfigSchema = lazySchema(() => z.object({\n minScale: z.number().optional().describe('Minimum scale factor (e.g., 0.5 for 50%)'),\n maxScale: z.number().optional().describe('Maximum scale factor (e.g., 3.0 for 300%)'),\n}).describe('Pinch/zoom gesture recognition settings'));\n\nexport type PinchGestureConfig = z.infer<typeof PinchGestureConfigSchema>;\n\n/**\n * Long Press Gesture Configuration Schema\n */\nexport const LongPressGestureConfigSchema = lazySchema(() => z.object({\n duration: z.number().default(500).describe('Hold duration in milliseconds to trigger long press'),\n moveTolerance: z.number().optional().describe('Max movement in pixels allowed during press'),\n}).describe('Long press gesture recognition settings'));\n\nexport type LongPressGestureConfig = z.infer<typeof LongPressGestureConfigSchema>;\n\n/**\n * Gesture Configuration Schema\n * Unified configuration for all supported gesture types.\n */\nexport const GestureConfigSchema = lazySchema(() => z.object({\n type: GestureTypeSchema.describe('Gesture type to configure'),\n label: I18nLabelSchema.optional().describe('Descriptive label for the gesture action'),\n enabled: z.boolean().default(true).describe('Whether this gesture is active'),\n swipe: SwipeGestureConfigSchema.optional().describe('Swipe gesture settings (when type is swipe)'),\n pinch: PinchGestureConfigSchema.optional().describe('Pinch gesture settings (when type is pinch)'),\n longPress: LongPressGestureConfigSchema.optional().describe('Long press settings (when type is long_press)'),\n}).describe('Per-gesture configuration'));\n\nexport type GestureConfig = z.infer<typeof GestureConfigSchema>;\n\n/**\n * Touch Interaction Schema\n * Top-level touch and gesture interaction configuration for a component.\n */\nexport const TouchInteractionSchema = lazySchema(() => z.object({\n gestures: z.array(GestureConfigSchema).optional().describe('Configured gesture recognizers'),\n touchTarget: TouchTargetConfigSchema.optional().describe('Touch target sizing and hit area'),\n hapticFeedback: z.boolean().optional().describe('Enable haptic feedback on touch interactions'),\n}).merge(AriaPropsSchema.partial()).describe('Touch and gesture interaction configuration'));\n\nexport type TouchInteraction = z.infer<typeof TouchInteractionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Focus Trap Configuration Schema\n * Constrains keyboard focus within a specific container (e.g., modals, dialogs).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FocusTrapConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable focus trapping within this container'),\n initialFocus: z.string().optional().describe('CSS selector for the element to focus on activation'),\n returnFocus: z.boolean().default(true).describe('Return focus to trigger element on deactivation'),\n escapeDeactivates: z.boolean().default(true).describe('Allow Escape key to deactivate the focus trap'),\n}).describe('Focus trap configuration for modal-like containers'));\n\nexport type FocusTrapConfig = z.infer<typeof FocusTrapConfigSchema>;\n\n/**\n * Keyboard Shortcut Schema\n * Defines a single keyboard shortcut binding.\n */\nexport const KeyboardShortcutSchema = lazySchema(() => z.object({\n key: z.string().describe('Key combination (e.g., \"Ctrl+S\", \"Alt+N\", \"Escape\")'),\n action: z.string().describe('Action identifier to invoke when shortcut is triggered'),\n description: I18nLabelSchema.optional().describe('Human-readable description of what the shortcut does'),\n scope: z.enum(['global', 'view', 'form', 'modal', 'list']).default('global')\n .describe('Scope in which this shortcut is active'),\n}).describe('Keyboard shortcut binding'));\n\nexport type KeyboardShortcut = z.infer<typeof KeyboardShortcutSchema>;\n\n/**\n * Focus Management Schema\n * Controls tab order, focus visibility, and navigation behavior.\n */\nexport const FocusManagementSchema = lazySchema(() => z.object({\n tabOrder: z.enum(['auto', 'manual']).default('auto')\n .describe('Tab order strategy: auto (DOM order) or manual (explicit tabIndex)'),\n skipLinks: z.boolean().default(false).describe('Provide skip-to-content navigation links'),\n focusVisible: z.boolean().default(true).describe('Show visible focus indicators for keyboard users'),\n focusTrap: FocusTrapConfigSchema.optional().describe('Focus trap settings'),\n arrowNavigation: z.boolean().default(false)\n .describe('Enable arrow key navigation between focusable items'),\n}).describe('Focus and tab navigation management'));\n\nexport type FocusManagement = z.infer<typeof FocusManagementSchema>;\n\n/**\n * Keyboard Navigation Configuration Schema\n * Top-level keyboard navigation and shortcut configuration.\n */\nexport const KeyboardNavigationConfigSchema = lazySchema(() => z.object({\n shortcuts: z.array(KeyboardShortcutSchema).optional().describe('Registered keyboard shortcuts'),\n focusManagement: FocusManagementSchema.optional().describe('Focus and tab order management'),\n rovingTabindex: z.boolean().default(false)\n .describe('Enable roving tabindex pattern for composite widgets'),\n}).merge(AriaPropsSchema.partial()).describe('Keyboard navigation and shortcut configuration'));\n\nexport type KeyboardNavigationConfig = z.infer<typeof KeyboardNavigationConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { TouchTargetConfigSchema } from './touch.zod';\nimport { FocusManagementSchema } from './keyboard.zod';\n\n/**\n * Color Palette Schema\n * Defines brand colors and their variants.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ColorPaletteSchema = lazySchema(() => z.object({\n primary: z.string().describe('Primary brand color (hex, rgb, or hsl)'),\n secondary: z.string().optional().describe('Secondary brand color'),\n accent: z.string().optional().describe('Accent color for highlights'),\n success: z.string().optional().describe('Success state color (default: green)'),\n warning: z.string().optional().describe('Warning state color (default: yellow)'),\n error: z.string().optional().describe('Error state color (default: red)'),\n info: z.string().optional().describe('Info state color (default: blue)'),\n \n // Neutral colors\n background: z.string().optional().describe('Background color'),\n surface: z.string().optional().describe('Surface/card background color'),\n text: z.string().optional().describe('Primary text color'),\n textSecondary: z.string().optional().describe('Secondary text color'),\n border: z.string().optional().describe('Border color'),\n disabled: z.string().optional().describe('Disabled state color'),\n \n // Color variants (shades)\n primaryLight: z.string().optional().describe('Lighter shade of primary'),\n primaryDark: z.string().optional().describe('Darker shade of primary'),\n secondaryLight: z.string().optional().describe('Lighter shade of secondary'),\n secondaryDark: z.string().optional().describe('Darker shade of secondary'),\n}));\n\n/**\n * Typography Settings Schema\n * Font families, sizes, weights, and line heights.\n */\nexport const TypographySchema = lazySchema(() => z.object({\n fontFamily: z.object({\n base: z.string().optional().describe('Base font family (default: system fonts)'),\n heading: z.string().optional().describe('Heading font family'),\n mono: z.string().optional().describe('Monospace font family for code'),\n }).optional(),\n \n fontSize: z.object({\n xs: z.string().optional().describe('Extra small font size (e.g., 0.75rem)'),\n sm: z.string().optional().describe('Small font size (e.g., 0.875rem)'),\n base: z.string().optional().describe('Base font size (e.g., 1rem)'),\n lg: z.string().optional().describe('Large font size (e.g., 1.125rem)'),\n xl: z.string().optional().describe('Extra large font size (e.g., 1.25rem)'),\n '2xl': z.string().optional().describe('2X large font size (e.g., 1.5rem)'),\n '3xl': z.string().optional().describe('3X large font size (e.g., 1.875rem)'),\n '4xl': z.string().optional().describe('4X large font size (e.g., 2.25rem)'),\n }).optional(),\n \n fontWeight: z.object({\n light: z.number().optional().describe('Light weight (default: 300)'),\n normal: z.number().optional().describe('Normal weight (default: 400)'),\n medium: z.number().optional().describe('Medium weight (default: 500)'),\n semibold: z.number().optional().describe('Semibold weight (default: 600)'),\n bold: z.number().optional().describe('Bold weight (default: 700)'),\n }).optional(),\n \n lineHeight: z.object({\n tight: z.string().optional().describe('Tight line height (e.g., 1.25)'),\n normal: z.string().optional().describe('Normal line height (e.g., 1.5)'),\n relaxed: z.string().optional().describe('Relaxed line height (e.g., 1.75)'),\n loose: z.string().optional().describe('Loose line height (e.g., 2)'),\n }).optional(),\n \n letterSpacing: z.object({\n tighter: z.string().optional().describe('Tighter letter spacing (e.g., -0.05em)'),\n tight: z.string().optional().describe('Tight letter spacing (e.g., -0.025em)'),\n normal: z.string().optional().describe('Normal letter spacing (e.g., 0)'),\n wide: z.string().optional().describe('Wide letter spacing (e.g., 0.025em)'),\n wider: z.string().optional().describe('Wider letter spacing (e.g., 0.05em)'),\n }).optional(),\n}));\n\n/**\n * Spacing Units Schema\n * Defines spacing scale for margins, padding, gaps.\n */\nexport const SpacingSchema = lazySchema(() => z.object({\n '0': z.string().optional().describe('0 spacing (0)'),\n '1': z.string().optional().describe('Spacing unit 1 (e.g., 0.25rem)'),\n '2': z.string().optional().describe('Spacing unit 2 (e.g., 0.5rem)'),\n '3': z.string().optional().describe('Spacing unit 3 (e.g., 0.75rem)'),\n '4': z.string().optional().describe('Spacing unit 4 (e.g., 1rem)'),\n '5': z.string().optional().describe('Spacing unit 5 (e.g., 1.25rem)'),\n '6': z.string().optional().describe('Spacing unit 6 (e.g., 1.5rem)'),\n '8': z.string().optional().describe('Spacing unit 8 (e.g., 2rem)'),\n '10': z.string().optional().describe('Spacing unit 10 (e.g., 2.5rem)'),\n '12': z.string().optional().describe('Spacing unit 12 (e.g., 3rem)'),\n '16': z.string().optional().describe('Spacing unit 16 (e.g., 4rem)'),\n '20': z.string().optional().describe('Spacing unit 20 (e.g., 5rem)'),\n '24': z.string().optional().describe('Spacing unit 24 (e.g., 6rem)'),\n}));\n\n/**\n * Border Radius Schema\n * Rounded corners configuration.\n */\nexport const BorderRadiusSchema = lazySchema(() => z.object({\n none: z.string().optional().describe('No border radius (0)'),\n sm: z.string().optional().describe('Small border radius (e.g., 0.125rem)'),\n base: z.string().optional().describe('Base border radius (e.g., 0.25rem)'),\n md: z.string().optional().describe('Medium border radius (e.g., 0.375rem)'),\n lg: z.string().optional().describe('Large border radius (e.g., 0.5rem)'),\n xl: z.string().optional().describe('Extra large border radius (e.g., 0.75rem)'),\n '2xl': z.string().optional().describe('2X large border radius (e.g., 1rem)'),\n full: z.string().optional().describe('Full border radius (50%)'),\n}));\n\n/**\n * Shadow Schema\n * Box shadow effects.\n */\nexport const ShadowSchema = lazySchema(() => z.object({\n none: z.string().optional().describe('No shadow'),\n sm: z.string().optional().describe('Small shadow'),\n base: z.string().optional().describe('Base shadow'),\n md: z.string().optional().describe('Medium shadow'),\n lg: z.string().optional().describe('Large shadow'),\n xl: z.string().optional().describe('Extra large shadow'),\n '2xl': z.string().optional().describe('2X large shadow'),\n inner: z.string().optional().describe('Inner shadow (inset)'),\n}));\n\n/**\n * Breakpoints Schema\n * Responsive design breakpoints.\n */\nexport const BreakpointsSchema = lazySchema(() => z.object({\n xs: z.string().optional().describe('Extra small breakpoint (e.g., 480px)'),\n sm: z.string().optional().describe('Small breakpoint (e.g., 640px)'),\n md: z.string().optional().describe('Medium breakpoint (e.g., 768px)'),\n lg: z.string().optional().describe('Large breakpoint (e.g., 1024px)'),\n xl: z.string().optional().describe('Extra large breakpoint (e.g., 1280px)'),\n '2xl': z.string().optional().describe('2X large breakpoint (e.g., 1536px)'),\n}));\n\n/**\n * Animation Schema\n * Animation timing and duration settings.\n */\nexport const AnimationSchema = lazySchema(() => z.object({\n duration: z.object({\n fast: z.string().optional().describe('Fast animation (e.g., 150ms)'),\n base: z.string().optional().describe('Base animation (e.g., 300ms)'),\n slow: z.string().optional().describe('Slow animation (e.g., 500ms)'),\n }).optional(),\n \n timing: z.object({\n linear: z.string().optional().describe('Linear timing function'),\n ease: z.string().optional().describe('Ease timing function'),\n ease_in: z.string().optional().describe('Ease-in timing function'),\n ease_out: z.string().optional().describe('Ease-out timing function'),\n ease_in_out: z.string().optional().describe('Ease-in-out timing function'),\n }).optional(),\n}));\n\n/**\n * Z-Index Scale Schema\n * Layering and stacking order.\n */\nexport const ZIndexSchema = lazySchema(() => z.object({\n base: z.number().optional().describe('Base z-index (e.g., 0)'),\n dropdown: z.number().optional().describe('Dropdown z-index (e.g., 1000)'),\n sticky: z.number().optional().describe('Sticky z-index (e.g., 1020)'),\n fixed: z.number().optional().describe('Fixed z-index (e.g., 1030)'),\n modalBackdrop: z.number().optional().describe('Modal backdrop z-index (e.g., 1040)'),\n modal: z.number().optional().describe('Modal z-index (e.g., 1050)'),\n popover: z.number().optional().describe('Popover z-index (e.g., 1060)'),\n tooltip: z.number().optional().describe('Tooltip z-index (e.g., 1070)'),\n}));\n\n/**\n * Theme Mode Schema\n */\nexport const ThemeModeSchema = lazySchema(() => z.enum(['light', 'dark', 'auto']));\n\n/** @deprecated Use ThemeModeSchema instead */\nexport const ThemeMode = ThemeModeSchema;\n\n/**\n * Density Mode Schema\n * Controls spacing and sizing for different use cases.\n */\nexport const DensityModeSchema = lazySchema(() => z.enum(['compact', 'regular', 'spacious']));\n\n/** @deprecated Use DensityModeSchema instead */\nexport const DensityMode = DensityModeSchema;\n\n/**\n * WCAG Contrast Level Schema\n * Web Content Accessibility Guidelines color contrast requirements.\n */\nexport const WcagContrastLevelSchema = lazySchema(() => z.enum(['AA', 'AAA']));\n\n/** @deprecated Use WcagContrastLevelSchema instead */\nexport const WcagContrastLevel = WcagContrastLevelSchema;\n\n/**\n * Theme Configuration Schema\n * Complete theme definition for brand customization.\n */\nexport const ThemeSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Unique theme identifier (snake_case)'),\n label: z.string().describe('Human-readable theme name'),\n description: z.string().optional().describe('Theme description'),\n \n /** Theme mode */\n mode: ThemeModeSchema.default('light').describe('Theme mode (light, dark, or auto)'),\n \n /** Color system */\n colors: ColorPaletteSchema.describe('Color palette configuration'),\n \n /** Typography */\n typography: TypographySchema.optional().describe('Typography settings'),\n \n /** Spacing */\n spacing: SpacingSchema.optional().describe('Spacing scale'),\n \n /** Border radius */\n borderRadius: BorderRadiusSchema.optional().describe('Border radius scale'),\n \n /** Shadows */\n shadows: ShadowSchema.optional().describe('Box shadow effects'),\n \n /** Breakpoints */\n breakpoints: BreakpointsSchema.optional().describe('Responsive breakpoints'),\n \n /** Animation */\n animation: AnimationSchema.optional().describe('Animation settings'),\n \n /** Z-Index */\n zIndex: ZIndexSchema.optional().describe('Z-index scale for layering'),\n \n /** Custom CSS variables */\n customVars: z.record(z.string(), z.string()).optional().describe('Custom CSS variables (key-value pairs)'),\n \n /** Logo */\n logo: z.object({\n light: z.string().optional().describe('Logo URL for light mode'),\n dark: z.string().optional().describe('Logo URL for dark mode'),\n favicon: z.string().optional().describe('Favicon URL'),\n }).optional().describe('Logo assets'),\n \n /** Extends another theme */\n extends: z.string().optional().describe('Base theme to extend from'),\n\n /** Display density mode */\n density: DensityModeSchema.optional().describe('Display density: compact, regular, or spacious'),\n\n /** WCAG contrast level requirement */\n wcagContrast: WcagContrastLevelSchema.optional().describe('WCAG color contrast level (AA or AAA)'),\n\n /** Right-to-left language support */\n rtl: z.boolean().optional().describe('Enable right-to-left layout direction'),\n\n /** Touch target accessibility configuration */\n touchTarget: TouchTargetConfigSchema.optional().describe('Touch target sizing defaults'),\n\n /** Keyboard navigation and focus management */\n keyboardNavigation: FocusManagementSchema.optional().describe('Keyboard focus management settings'),\n}));\n\nexport type Theme = z.infer<typeof ThemeSchema>;\nexport type ColorPalette = z.infer<typeof ColorPaletteSchema>;\nexport type Typography = z.infer<typeof TypographySchema>;\nexport type Spacing = z.infer<typeof SpacingSchema>;\nexport type BorderRadius = z.infer<typeof BorderRadiusSchema>;\nexport type Shadow = z.infer<typeof ShadowSchema>;\nexport type Breakpoints = z.infer<typeof BreakpointsSchema>;\nexport type Animation = z.infer<typeof AnimationSchema>;\nexport type ZIndex = z.infer<typeof ZIndexSchema>;\nexport type ThemeMode = z.infer<typeof ThemeModeSchema>;\nexport type DensityMode = z.infer<typeof DensityModeSchema>;\nexport type WcagContrastLevel = z.infer<typeof WcagContrastLevelSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema } from './i18n.zod';\n\n/**\n * Offline Strategy Schema\n * Determines how data is fetched when connectivity is limited.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const OfflineStrategySchema = lazySchema(() => z.enum([\n 'cache_first',\n 'network_first',\n 'stale_while_revalidate',\n 'network_only',\n 'cache_only',\n]).describe('Data fetching strategy for offline/online transitions'));\n\nexport type OfflineStrategy = z.infer<typeof OfflineStrategySchema>;\n\n/**\n * Conflict Resolution Strategy Enum\n */\nexport const ConflictResolutionSchema = lazySchema(() => z.enum([\n 'client_wins',\n 'server_wins',\n 'manual',\n 'last_write_wins',\n]).describe('How to resolve conflicts when syncing offline changes'));\n\nexport type ConflictResolution = z.infer<typeof ConflictResolutionSchema>;\n\n/**\n * Sync Configuration Schema\n * Controls how offline mutations are synchronized with the server.\n */\nexport const SyncConfigSchema = lazySchema(() => z.object({\n strategy: OfflineStrategySchema.default('network_first').describe('Sync fetch strategy'),\n conflictResolution: ConflictResolutionSchema.default('last_write_wins').describe('Conflict resolution policy'),\n retryInterval: z.number().optional().describe('Retry interval in milliseconds between sync attempts'),\n maxRetries: z.number().optional().describe('Maximum number of sync retry attempts'),\n batchSize: z.number().optional().describe('Number of mutations to sync per batch'),\n}).describe('Offline-to-online synchronization configuration'));\n\nexport type SyncConfig = z.infer<typeof SyncConfigSchema>;\n\n/**\n * Persist Storage Backend Enum\n */\nexport const PersistStorageSchema = lazySchema(() => z.enum([\n 'indexeddb',\n 'localstorage',\n 'sqlite',\n]).describe('Client-side storage backend for offline cache'));\n\nexport type PersistStorage = z.infer<typeof PersistStorageSchema>;\n\n/**\n * Eviction Policy Enum\n */\nexport const EvictionPolicySchema = lazySchema(() => z.enum([\n 'lru',\n 'lfu',\n 'fifo',\n]).describe('Cache eviction policy'));\n\nexport type EvictionPolicy = z.infer<typeof EvictionPolicySchema>;\n\n/**\n * Offline Cache Configuration Schema\n * Controls how data is persisted on the client for offline access.\n */\nexport const OfflineCacheConfigSchema = lazySchema(() => z.object({\n maxSize: z.number().optional().describe('Maximum cache size in bytes'),\n ttl: z.number().optional().describe('Time-to-live for cached entries in milliseconds'),\n persistStorage: PersistStorageSchema.default('indexeddb').describe('Storage backend'),\n evictionPolicy: EvictionPolicySchema.default('lru').describe('Cache eviction policy when full'),\n}).describe('Client-side offline cache configuration'));\n\nexport type OfflineCacheConfig = z.infer<typeof OfflineCacheConfigSchema>;\n\n/**\n * Offline Configuration Schema\n * Top-level offline support configuration for an application or component.\n */\nexport const OfflineConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable offline support'),\n strategy: OfflineStrategySchema.default('network_first').describe('Default offline fetch strategy'),\n cache: OfflineCacheConfigSchema.optional().describe('Cache settings for offline data'),\n sync: SyncConfigSchema.optional().describe('Sync settings for offline mutations'),\n offlineIndicator: z.boolean().default(true).describe('Show a visual indicator when offline'),\n offlineMessage: I18nLabelSchema.optional().describe('Customizable offline status message shown to users'),\n queueMaxSize: z.number().optional().describe('Maximum number of queued offline mutations'),\n}).describe('Offline support configuration'));\n\nexport type OfflineConfig = z.infer<typeof OfflineConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Transition Preset Schema\n * Common animation transition presets.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const TransitionPresetSchema = lazySchema(() => z.enum([\n 'fade',\n 'slide_up',\n 'slide_down',\n 'slide_left',\n 'slide_right',\n 'scale',\n 'rotate',\n 'flip',\n 'none',\n]).describe('Transition preset type'));\n\nexport type TransitionPreset = z.infer<typeof TransitionPresetSchema>;\n\n/**\n * Easing Function Schema\n * Supported animation easing/timing functions.\n */\nexport const EasingFunctionSchema = lazySchema(() => z.enum([\n 'linear',\n 'ease',\n 'ease_in',\n 'ease_out',\n 'ease_in_out',\n 'spring',\n]).describe('Animation easing function'));\n\nexport type EasingFunction = z.infer<typeof EasingFunctionSchema>;\n\n/**\n * Transition Configuration Schema\n * Defines a single animation transition with timing and easing options.\n */\nexport const TransitionConfigSchema = lazySchema(() => z.object({\n preset: TransitionPresetSchema.optional().describe('Transition preset to apply'),\n duration: z.number().optional().describe('Transition duration in milliseconds'),\n easing: EasingFunctionSchema.optional().describe('Easing function for the transition'),\n delay: z.number().optional().describe('Delay before transition starts in milliseconds'),\n customKeyframes: z.string().optional().describe('CSS @keyframes name for custom animations'),\n themeToken: z.string().optional().describe('Reference to a theme animation token (e.g. \"animation.duration.fast\")'),\n}).describe('Animation transition configuration'));\n\nexport type TransitionConfig = z.infer<typeof TransitionConfigSchema>;\n\n/**\n * Animation Trigger Schema\n * Events that can trigger an animation.\n */\nexport const AnimationTriggerSchema = lazySchema(() => z.enum([\n 'on_mount',\n 'on_unmount',\n 'on_hover',\n 'on_focus',\n 'on_click',\n 'on_scroll',\n 'on_visible',\n]).describe('Event that triggers the animation'));\n\nexport type AnimationTrigger = z.infer<typeof AnimationTriggerSchema>;\n\n/**\n * Component Animation Schema\n * Animation configuration for an individual UI component.\n */\nexport const ComponentAnimationSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.optional().describe('Descriptive label for this animation configuration'),\n enter: TransitionConfigSchema.optional().describe('Enter/mount animation'),\n exit: TransitionConfigSchema.optional().describe('Exit/unmount animation'),\n hover: TransitionConfigSchema.optional().describe('Hover state animation'),\n trigger: AnimationTriggerSchema.optional().describe('When to trigger the animation'),\n reducedMotion: z.enum(['respect', 'disable', 'alternative']).default('respect')\n .describe('Accessibility: how to handle prefers-reduced-motion'),\n}).merge(AriaPropsSchema.partial()).describe('Component-level animation configuration'));\n\nexport type ComponentAnimation = z.infer<typeof ComponentAnimationSchema>;\n\n/**\n * Page Transition Schema\n * Defines the animation used when navigating between pages.\n */\nexport const PageTransitionSchema = lazySchema(() => z.object({\n type: TransitionPresetSchema.default('fade').describe('Page transition type'),\n duration: z.number().default(300).describe('Transition duration in milliseconds'),\n easing: EasingFunctionSchema.default('ease_in_out').describe('Easing function for the transition'),\n crossFade: z.boolean().default(false).describe('Whether to cross-fade between pages'),\n}).describe('Page-level transition configuration'));\n\nexport type PageTransition = z.infer<typeof PageTransitionSchema>;\n\n/**\n * Motion Configuration Schema\n * Top-level animation and motion design configuration.\n */\nexport const MotionConfigSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.optional().describe('Descriptive label for the motion configuration'),\n defaultTransition: TransitionConfigSchema.optional().describe('Default transition applied to all animations'),\n pageTransitions: PageTransitionSchema.optional().describe('Page navigation transition settings'),\n componentAnimations: z.record(z.string(), ComponentAnimationSchema).optional()\n .describe('Component name to animation configuration mapping'),\n reducedMotion: z.boolean().default(false).describe('When true, respect prefers-reduced-motion and suppress animations globally'),\n enabled: z.boolean().default(true).describe('Enable or disable all animations globally'),\n}).describe('Top-level motion and animation design configuration'));\n\nexport type MotionConfig = z.infer<typeof MotionConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Notification Type Schema\n * Defines the visual presentation style of the notification.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const NotificationTypeSchema = lazySchema(() => z.enum([\n 'toast',\n 'snackbar',\n 'banner',\n 'alert',\n 'inline',\n]).describe('Notification presentation style'));\n\nexport type NotificationType = z.infer<typeof NotificationTypeSchema>;\n\n/**\n * Notification Severity Schema\n * Indicates the urgency and visual treatment of the notification.\n */\nexport const NotificationSeveritySchema = lazySchema(() => z.enum([\n 'info',\n 'success',\n 'warning',\n 'error',\n]).describe('Notification severity level'));\n\nexport type NotificationSeverity = z.infer<typeof NotificationSeveritySchema>;\n\n/**\n * Notification Position Schema\n * Screen position for rendering notifications.\n */\nexport const NotificationPositionSchema = lazySchema(() => z.enum([\n 'top_left',\n 'top_center',\n 'top_right',\n 'bottom_left',\n 'bottom_center',\n 'bottom_right',\n]).describe('Screen position for notification placement'));\n\nexport type NotificationPosition = z.infer<typeof NotificationPositionSchema>;\n\n/**\n * Notification Action Schema\n * Defines an interactive action button within a notification.\n */\nexport const NotificationActionSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.describe('Action button label'),\n action: z.string().describe('Action identifier to execute'),\n variant: z.enum(['primary', 'secondary', 'link']).default('primary')\n .describe('Button variant style'),\n}).describe('Notification action button'));\n\nexport type NotificationAction = z.infer<typeof NotificationActionSchema>;\n\n/**\n * Notification Schema\n * Defines a single notification instance with content, behavior, and positioning.\n */\nexport const NotificationSchema = lazySchema(() => z.object({\n type: NotificationTypeSchema.default('toast').describe('Notification presentation style'),\n severity: NotificationSeveritySchema.default('info').describe('Notification severity level'),\n title: I18nLabelSchema.optional().describe('Notification title'),\n message: I18nLabelSchema.describe('Notification message body'),\n icon: z.string().optional().describe('Icon name override'),\n duration: z.number().optional().describe('Auto-dismiss duration in ms, omit for persistent'),\n dismissible: z.boolean().default(true).describe('Allow user to dismiss the notification'),\n actions: z.array(NotificationActionSchema).optional().describe('Action buttons'),\n position: NotificationPositionSchema.optional().describe('Override default position'),\n}).merge(AriaPropsSchema.partial()).describe('Notification instance definition'));\n\nexport type Notification = z.infer<typeof NotificationSchema>;\n\n/**\n * Notification Config Schema\n * Top-level notification system configuration.\n */\nexport const NotificationConfigSchema = lazySchema(() => z.object({\n defaultPosition: NotificationPositionSchema.default('top_right')\n .describe('Default screen position for notifications'),\n defaultDuration: z.number().default(5000)\n .describe('Default auto-dismiss duration in ms'),\n maxVisible: z.number().default(5)\n .describe('Maximum number of notifications visible at once'),\n stackDirection: z.enum(['up', 'down']).default('down')\n .describe('Stack direction for multiple notifications'),\n pauseOnHover: z.boolean().default(true)\n .describe('Pause auto-dismiss timer on hover'),\n}).describe('Global notification system configuration'));\n\nexport type NotificationConfig = z.infer<typeof NotificationConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Drag Handle Schema\n * Defines how a drag interaction is initiated on an element.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const DragHandleSchema = lazySchema(() => z.enum([\n 'element',\n 'handle',\n 'grip_icon',\n]).describe('Drag initiation method'));\n\nexport type DragHandle = z.infer<typeof DragHandleSchema>;\n\n/**\n * Drop Effect Schema\n * Visual feedback indicating the result of a drop operation.\n */\nexport const DropEffectSchema = lazySchema(() => z.enum([\n 'move',\n 'copy',\n 'link',\n 'none',\n]).describe('Drop operation effect'));\n\nexport type DropEffect = z.infer<typeof DropEffectSchema>;\n\n/**\n * Drag Constraint Schema\n * Constrains drag movement along axes, within bounds, or to a grid.\n */\nexport const DragConstraintSchema = lazySchema(() => z.object({\n axis: z.enum(['x', 'y', 'both']).default('both').describe('Constrain drag axis'),\n bounds: z.enum(['parent', 'viewport', 'none']).default('none').describe('Constrain within bounds'),\n grid: z.tuple([z.number(), z.number()]).optional().describe('Snap to grid [x, y] in pixels'),\n}).describe('Drag movement constraints'));\n\nexport type DragConstraint = z.infer<typeof DragConstraintSchema>;\n\n/**\n * Drop Zone Schema\n * Configures a container that accepts dragged items.\n */\nexport const DropZoneSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.optional().describe('Accessible label for the drop zone'),\n accept: z.array(z.string()).describe('Accepted drag item types'),\n maxItems: z.number().optional().describe('Maximum items allowed in drop zone'),\n highlightOnDragOver: z.boolean().default(true).describe('Highlight drop zone when dragging over'),\n dropEffect: DropEffectSchema.default('move').describe('Visual effect on drop'),\n}).merge(AriaPropsSchema.partial()).describe('Drop zone configuration'));\n\nexport type DropZone = z.infer<typeof DropZoneSchema>;\n\n/**\n * Drag Item Schema\n * Configures a draggable element including handle, constraints, and preview.\n */\nexport const DragItemSchema = lazySchema(() => z.object({\n type: z.string().describe('Drag item type identifier for matching with drop zones'),\n label: I18nLabelSchema.optional().describe('Accessible label describing the draggable item'),\n handle: DragHandleSchema.default('element').describe('How to initiate drag'),\n constraint: DragConstraintSchema.optional().describe('Drag movement constraints'),\n preview: z.enum(['element', 'custom', 'none']).default('element').describe('Drag preview type'),\n disabled: z.boolean().default(false).describe('Disable dragging'),\n}).merge(AriaPropsSchema.partial()).describe('Draggable item configuration'));\n\nexport type DragItem = z.infer<typeof DragItemSchema>;\n\n/**\n * Drag and Drop Configuration Schema\n * Top-level drag-and-drop interaction configuration for a component.\n */\nexport const DndConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable drag and drop'),\n dragItem: DragItemSchema.optional().describe('Configuration for draggable item'),\n dropZone: DropZoneSchema.optional().describe('Configuration for drop target'),\n sortable: z.boolean().default(false).describe('Enable sortable list behavior'),\n autoScroll: z.boolean().default(true).describe('Auto-scroll during drag near edges'),\n touchDelay: z.number().default(200).describe('Delay in ms before drag starts on touch devices'),\n}).describe('Drag and drop interaction configuration'));\n\nexport type DndConfig = z.infer<typeof DndConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * @module ui/portal\n *\n * Portal Protocol — Metadata-driven external-user UI projection.\n *\n * A Portal is **not** a new application or permission model. It is a\n * declarative projection of the existing app / view / action surface,\n * scoped to a route prefix, a set of profiles, and an optional anonymous\n * entry surface.\n *\n * Five invariants this schema preserves:\n * 1. Zero business code — layout is an enum + plugin id; theme is tokens;\n * navigation is references to existing metadata.\n * 2. Data plane is untouched — portal cannot declare objects, fields,\n * flows, or permissions. Data API (`/api/v1/data/...`) is unaware of\n * portals.\n * 3. Portal ≠ permission boundary. The Profile is. Portals only narrow\n * the UI projection; hiding a view in `navigation` is UX, not security.\n * 4. Stackable — the same user/profile can be admitted by multiple\n * portals. Routing or a picker decides which one is rendered.\n * 5. Template-first — a template author ships `customer.portal.ts` and\n * the platform guarantees the rendering shell.\n *\n * Architectural reach (consumer guidance, not part of the schema):\n * - Dispatcher / HonoServer: at boot, enumerate portals and register\n * `/<routePrefix>/*` route families with a per-portal auth scope.\n * - Auth middleware: admit the request if `profile ∈ portal.profiles`,\n * or it matches `anonymousEntry.routes[*]`.\n * - objectui LayoutDispatcher: select shell from `layout`.\n * - objectui NavigationBuilder: render `navigation` (not the all-apps\n * grid).\n * - objectui ThemeProvider: inject `theme` as CSS variables.\n *\n * See framework issue\n * https://github.com/objectstack-ai/framework/issues/1294\n * for the design rationale.\n */\n\nimport { z } from 'zod';\nimport { lazySchema } from '../shared/lazy-schema';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema } from './i18n.zod';\n\n// ---------------------------------------------------------------------------\n// Theme tokens (portal-local; intentionally narrower than AppBranding to keep\n// portal metadata declarative and platform-renderable without custom CSS)\n// ---------------------------------------------------------------------------\n\nexport const PortalThemeSchema = lazySchema(() => z.object({\n primaryColor: z.string().optional()\n .describe('Primary brand color (hex, rgb, hsl). Mapped to --portal-primary.'),\n accentColor: z.string().optional()\n .describe('Accent color used for highlights and CTAs.'),\n backgroundColor: z.string().optional()\n .describe('Page background color.'),\n surfaceColor: z.string().optional()\n .describe('Card / surface background color.'),\n textColor: z.string().optional()\n .describe('Primary text color.'),\n logoUrl: z.string().optional()\n .describe('Absolute or relative URL to the portal header logo (SVG or PNG).'),\n faviconUrl: z.string().optional()\n .describe('Absolute or relative URL to the portal favicon.'),\n fontFamily: z.string().optional()\n .describe('CSS font-family stack for the portal.'),\n customCss: z.string().optional()\n .describe('OPTIONAL escape hatch: raw CSS appended last. Discouraged; prefer tokens.'),\n}));\n\n// ---------------------------------------------------------------------------\n// Navigation — references to existing metadata. Discriminated union mirrors\n// app.zod.ts shape but is intentionally a much smaller surface: portals\n// expose a flat list of entry points, not a deep group tree.\n// ---------------------------------------------------------------------------\n\nconst BasePortalNavItemSchema = z.object({\n id: SnakeCaseIdentifierSchema\n .describe('Unique identifier for this portal nav item (lowercase snake_case).'),\n label: I18nLabelSchema.describe('Display label.'),\n icon: z.string().optional().describe('Icon name (Lucide).'),\n order: z.number().optional().describe('Sort order; lower appears first.'),\n badge: z.union([z.string(), z.number()]).optional()\n .describe('Optional badge (e.g. unread count).'),\n});\n\nexport const PortalViewNavItemSchema = BasePortalNavItemSchema.extend({\n type: z.literal('view'),\n /** Fully-qualified view reference: `<object_name>.<view_id>` */\n viewRef: z.string().describe('Reference to an existing view, e.g. \"helpdesk_ticket.list.my_tickets\".'),\n});\n\nexport const PortalActionNavItemSchema = BasePortalNavItemSchema.extend({\n type: z.literal('action'),\n /** Fully-qualified action reference: `<object_name>.<action_id>` */\n actionRef: z.string().describe('Reference to an existing action, e.g. \"helpdesk_ticket.create\".'),\n});\n\nexport const PortalDashboardNavItemSchema = BasePortalNavItemSchema.extend({\n type: z.literal('dashboard'),\n dashboardName: SnakeCaseIdentifierSchema.describe('Existing dashboard id.'),\n});\n\nexport const PortalUrlNavItemSchema = BasePortalNavItemSchema.extend({\n type: z.literal('url'),\n url: z.string().describe('Absolute or root-relative URL.'),\n target: z.enum(['_self', '_blank']).optional().default('_self'),\n});\n\nexport const PortalNavItemSchema = z.discriminatedUnion('type', [\n PortalViewNavItemSchema,\n PortalActionNavItemSchema,\n PortalDashboardNavItemSchema,\n PortalUrlNavItemSchema,\n]);\n\n// ---------------------------------------------------------------------------\n// Anonymous entry — declarative, with mandatory rate-limit + captcha hooks\n// for any unauthenticated mutation. Read-only views (e.g. public KB) only\n// need a rate-limit budget.\n// ---------------------------------------------------------------------------\n\nexport const PortalRateLimitSchema = lazySchema(() => z.object({\n /** Token-bucket rule string, e.g. \"5/hour/ip\" or \"100/day/tenant\". */\n rule: z.string().describe('Rate-limit rule string, e.g. \"5/hour/ip\", \"100/day/tenant\".'),\n /** Scope key controlled by the runtime. */\n scope: z.enum(['ip', 'tenant', 'route']).default('ip')\n .describe('Counter scope. \"ip\" buckets per requester; \"tenant\" per portal owner; \"route\" global per route.'),\n}));\n\nexport const PortalAnonymousRouteSchema = lazySchema(() => z.object({\n /** Portal-relative path, must begin with `/`. */\n path: z.string().describe('Path within the portal, e.g. \"/submit\" or \"/kb\".'),\n /** Exactly one of these must be set. */\n viewRef: z.string().optional()\n .describe('Reference to a public view (read-only).'),\n actionRef: z.string().optional()\n .describe('Reference to an action to perform anonymously (mutation).'),\n rateLimit: PortalRateLimitSchema.optional()\n .describe('Rate-limit for anonymous traffic on this route.'),\n captcha: z.boolean().optional().default(false)\n .describe('Require CAPTCHA / proof-of-work challenge before invoking.'),\n /**\n * For action routes that need a deferred identity bind (e.g. anonymous\n * ticket submission → magic-link verification of the supplied email).\n * The runtime captures the input field, sends a magic link, and on\n * verification re-attributes the created record to the new user.\n */\n bindIdentityFromField: z.string().optional()\n .describe('Field name on the action input to use for magic-link identity binding (e.g. \"customer_email\").'),\n}));\n\nexport const PortalAnonymousEntrySchema = lazySchema(() => z.object({\n routes: z.array(PortalAnonymousRouteSchema)\n .describe('List of anonymous-accessible routes.'),\n /** Default rate-limit applied when a route does not specify one. */\n defaultRateLimit: PortalRateLimitSchema.optional(),\n}));\n\n// ---------------------------------------------------------------------------\n// SEO + locale + auth modes\n// ---------------------------------------------------------------------------\n\nexport const PortalSeoSchema = lazySchema(() => z.object({\n title: z.string().optional().describe('Default <title>.'),\n description: z.string().optional().describe('Default <meta name=\"description\">.'),\n openGraphImage: z.string().optional().describe('Default og:image URL.'),\n robots: z.enum(['index', 'noindex']).optional().default('index'),\n}));\n\nexport const PortalAuthModeSchema = lazySchema(() => z.union([\n z.literal('authenticated'),\n z.literal('magic-link'),\n z.literal('anonymous'),\n // SSO provider, e.g. \"sso:google\", \"sso:azure-ad\", \"sso:saml:<idp-id>\".\n z.string().regex(/^sso:[a-z][a-z0-9_-]*(?::[a-z0-9_-]+)?$/i,\n 'SSO mode must be \"sso:<provider>\" or \"sso:<protocol>:<idp-id>\"'),\n]));\n\nexport const PortalLayoutSchema = lazySchema(() => z.union([\n z.literal('console'),\n z.literal('minimal'),\n z.literal('embedded'),\n // Plugin shell: \"custom:<plugin-id>\" or \"custom:<plugin-id>/<layout-id>\".\n z.string().regex(/^custom:[a-z][a-z0-9_-]*(?:\\/[a-z0-9_-]+)?$/i,\n 'Custom layout must be \"custom:<plugin-id>\" or \"custom:<plugin-id>/<layout-id>\"'),\n]));\n\n// ---------------------------------------------------------------------------\n// Portal — top-level metadata kind\n// ---------------------------------------------------------------------------\n\nexport const PortalSchema = lazySchema(() => z.object({\n /** Discriminator for the metadata registry. */\n kind: z.literal('portal').describe('Metadata kind discriminator.'),\n\n /** Machine name (id). Unique per tenant. */\n id: SnakeCaseIdentifierSchema\n .describe('Portal unique machine name (lowercase snake_case).'),\n\n /** Display label, i18n. */\n label: I18nLabelSchema.describe('Portal display label.'),\n\n /** Optional description (i18n). */\n description: I18nLabelSchema.optional(),\n\n // ---------------- Routing ----------------\n\n /**\n * Root path the portal is mounted at. MUST be absolute and start with `/`.\n * Multiple portals cannot share the same `routePrefix` within a tenant.\n * Example: \"/portal/helpdesk\".\n */\n routePrefix: z.string()\n .regex(/^\\/[a-z0-9/_-]*$/i, 'routePrefix must start with \"/\" and be url-safe')\n .describe('Root URL path for the portal (must start with \"/\").'),\n\n /**\n * Optional vanity domain. When set, the platform serves the portal on\n * this hostname in addition to (or instead of) `routePrefix` on the\n * default domain. Subject to TLS provisioning and DNS verification.\n */\n domain: z.string().optional()\n .describe('Optional vanity domain (e.g. \"support.acme.com\").'),\n\n // ---------------- Shell ----------------\n\n layout: PortalLayoutSchema.default('minimal')\n .describe('Shell layout for the portal.'),\n\n theme: PortalThemeSchema.optional().describe('Theme tokens.'),\n\n /**\n * Locale resolution. \"auto\" → use Accept-Language; otherwise force a\n * specific locale (e.g. \"en\", \"zh-CN\").\n */\n locale: z.union([z.literal('auto'), z.string()]).optional().default('auto')\n .describe('Locale resolution strategy.'),\n\n /** SEO metadata defaults for unauthenticated pages. */\n seo: PortalSeoSchema.optional(),\n\n // ---------------- Auth ----------------\n\n authMode: PortalAuthModeSchema.default('authenticated')\n .describe('Authentication mode for the portal.'),\n\n /**\n * Profiles admitted to the portal. A user is allowed in iff at least\n * one of their effective profiles is listed here. **This is a UI gate,\n * not the source of truth — the data layer still enforces profile +\n * sharing on every API call.**\n */\n profiles: z.array(SnakeCaseIdentifierSchema)\n .min(1, 'A portal must admit at least one profile (use a dedicated profile for \"anonymous-only\" portals).')\n .describe('Profiles admitted to the portal.'),\n\n /**\n * Anonymous entry surface — declarative routes that can be hit without\n * a session. The runtime impersonates a tenant-local `system.anonymous`\n * principal, applies the route's rate-limit + captcha, then runs the\n * referenced view/action.\n */\n anonymousEntry: PortalAnonymousEntrySchema.optional(),\n\n // ---------------- Navigation ----------------\n\n navigation: z.array(PortalNavItemSchema)\n .describe('Flat list of portal entry points (references to existing metadata).'),\n\n /**\n * Optional default route. If omitted, the runtime picks the first\n * `navigation` entry.\n */\n defaultRoute: z.object({\n viewRef: z.string().optional(),\n actionRef: z.string().optional(),\n dashboardName: SnakeCaseIdentifierSchema.optional(),\n }).optional().describe('Landing surface when the user hits the portal root.'),\n\n // ---------------- Embedding ----------------\n\n /**\n * Whether the portal may be rendered inside an `<iframe>`. Controls\n * `X-Frame-Options` / `frame-ancestors` CSP headers.\n */\n embeddable: z.boolean().optional().default(false),\n\n /**\n * Allowed embed origins (CSP `frame-ancestors`). Ignored when\n * `embeddable: false`.\n */\n allowedEmbedOrigins: z.array(z.string()).optional(),\n\n /** Whether the portal is active. */\n active: z.boolean().optional().default(true),\n}));\n\n// ---------------------------------------------------------------------------\n// Factory + types\n// ---------------------------------------------------------------------------\n\nexport const Portal = {\n create: (config: z.input<typeof PortalSchema>): Portal => PortalSchema.parse(config),\n} as const;\n\nexport function definePortal(config: z.input<typeof PortalSchema>): Portal {\n return PortalSchema.parse(config);\n}\n\nexport type Portal = z.infer<typeof PortalSchema>;\nexport type PortalInput = z.input<typeof PortalSchema>;\nexport type PortalTheme = z.infer<typeof PortalThemeSchema>;\nexport type PortalNavItem = z.infer<typeof PortalNavItemSchema>;\nexport type PortalViewNavItem = z.infer<typeof PortalViewNavItemSchema>;\nexport type PortalActionNavItem = z.infer<typeof PortalActionNavItemSchema>;\nexport type PortalDashboardNavItem = z.infer<typeof PortalDashboardNavItemSchema>;\nexport type PortalUrlNavItem = z.infer<typeof PortalUrlNavItemSchema>;\nexport type PortalAnonymousEntry = z.infer<typeof PortalAnonymousEntrySchema>;\nexport type PortalAnonymousRoute = z.infer<typeof PortalAnonymousRouteSchema>;\nexport type PortalRateLimit = z.infer<typeof PortalRateLimitSchema>;\nexport type PortalSeo = z.infer<typeof PortalSeoSchema>;\nexport type PortalAuthMode = z.infer<typeof PortalAuthModeSchema>;\nexport type PortalLayout = z.infer<typeof PortalLayoutSchema>;\n"]}
1
+ {"version":3,"sources":["../../src/shared/lazy-schema.ts","../../src/ui/i18n.zod.ts","../../src/ui/chart.zod.ts","../../src/ui/responsive.zod.ts","../../src/shared/identifiers.zod.ts","../../src/shared/expression.zod.ts","../../src/ui/sharing.zod.ts","../../src/kernel/metadata-protection.zod.ts","../../src/shared/protection.zod.ts","../../src/ui/app.zod.ts","../../src/system/encryption.zod.ts","../../src/system/masking.zod.ts","../../src/data/field.zod.ts","../../src/shared/http.zod.ts","../../src/ui/view.zod.ts","../../src/data/filter.zod.ts","../../src/ui/dashboard.zod.ts","../../src/ui/report.zod.ts","../../src/data/query.zod.ts","../../src/ui/dataset.zod.ts","../../src/ui/report.form.ts","../../src/ui/view.form.ts","../../src/ui/app.form.ts","../../src/ui/dashboard.form.ts","../../src/ui/action.form.ts","../../src/ui/page.form.ts","../../src/data/hook-body.zod.ts","../../src/ui/action.zod.ts","../../src/shared/enums.zod.ts","../../src/ui/page.zod.ts","../../src/ui/widget.zod.ts","../../src/data/feed.zod.ts","../../src/ui/component.zod.ts","../../src/ui/touch.zod.ts","../../src/ui/keyboard.zod.ts","../../src/ui/theme.zod.ts","../../src/ui/offline.zod.ts","../../src/ui/animation.zod.ts","../../src/ui/notification.zod.ts","../../src/ui/dnd.zod.ts","../../src/ui/portal.zod.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { z } from 'zod';\n\n/**\n * Wrap a Zod schema constructor so its body is only evaluated on first use.\n *\n * Why: building Zod schemas at module-load creates millions of closures that\n * dominate dev-server RSS even though most schemas are never parsed in a\n * given session. Wrapping the constructor in a Proxy defers allocation until\n * the first property access (`.parse`, `.shape`, `._def`, etc.) and reuses\n * a single cached instance thereafter.\n *\n * Type system: the returned Proxy is structurally indistinguishable from the\n * underlying ZodType, so `z.infer<typeof X>` and `.parse()` callers do not\n * need to change.\n *\n * Emergency rollback: set `OS_EAGER_SCHEMAS=1` to evaluate the\n * factory immediately and bypass the Proxy entirely.\n */\nexport function lazySchema<T extends z.ZodTypeAny>(factory: () => T): T {\n if (typeof process !== 'undefined' && process.env?.OS_EAGER_SCHEMAS === '1') {\n return factory();\n }\n\n let cached: T | undefined;\n const resolve = (): T => {\n if (cached === undefined) cached = factory();\n return cached;\n };\n\n const target = function lazyZod() {} as unknown as T;\n\n const proxy = new Proxy(target as object, {\n get(_t, prop) {\n const real = resolve() as unknown as Record<PropertyKey, unknown>;\n const value = real[prop];\n if (typeof value === 'function') {\n return (value as (...a: unknown[]) => unknown).bind(real);\n }\n return value;\n },\n set(_t, prop, value) {\n const real = resolve() as unknown as Record<PropertyKey, unknown>;\n real[prop] = value;\n return true;\n },\n has(_t, prop) {\n return prop in (resolve() as object);\n },\n ownKeys() {\n return Reflect.ownKeys(resolve() as object);\n },\n getOwnPropertyDescriptor(_t, prop) {\n return Reflect.getOwnPropertyDescriptor(resolve() as object, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(resolve() as object);\n },\n });\n\n return proxy as T;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * I18n Object Schema\n * Structured internationalization label with translation key and parameters.\n * \n * @example\n * ```typescript\n * const label: I18nObject = {\n * key: 'views.task_list.label',\n * defaultValue: 'Task List',\n * params: { count: 5 },\n * };\n * ```\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const I18nObjectSchema = lazySchema(() => z.object({\n /** Translation key (e.g., \"views.task_list.label\", \"apps.crm.description\") */\n key: z.string().describe('Translation key (e.g., \"views.task_list.label\")'),\n\n /** Default value when translation is not available */\n defaultValue: z.string().optional().describe('Fallback value when translation key is not found'),\n\n /** Interpolation parameters for dynamic translations */\n params: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional().describe('Interpolation parameters (e.g., { count: 5 })'),\n}));\n\nexport type I18nObject = z.infer<typeof I18nObjectSchema>;\n\n/**\n * I18n Label Schema\n * \n * A plain string label for display purposes.\n * i18n translation keys are auto-generated by the framework at registration time\n * based on a standardized naming convention (e.g., `apps.<packageId>.<name>.label`).\n * Developers only need to provide the default-language string; translations are\n * managed through translation files, not inline i18n objects.\n * \n * @example\n * ```typescript\n * const label: I18nLabel = \"All Active\";\n * ```\n */\nexport const I18nLabelSchema = lazySchema(() => z.string().describe('Display label (plain string; i18n keys are auto-generated by the framework)'));\n\nexport type I18nLabel = z.infer<typeof I18nLabelSchema>;\n\n/**\n * ARIA Accessibility Properties Schema\n * \n * Common ARIA attributes for UI components to support screen readers\n * and assistive technologies.\n * \n * Aligned with WAI-ARIA 1.2 specification.\n * \n * @see https://www.w3.org/TR/wai-aria-1.2/\n * \n * @example\n * ```typescript\n * const aria: AriaProps = {\n * ariaLabel: 'Close dialog',\n * ariaDescribedBy: 'dialog-description',\n * role: 'dialog',\n * };\n * ```\n */\nexport const AriaPropsSchema = lazySchema(() => z.object({\n /** Accessible label for screen readers */\n ariaLabel: I18nLabelSchema.optional().describe('Accessible label for screen readers (WAI-ARIA aria-label)'),\n\n /** ID of element that describes this component */\n ariaDescribedBy: z.string().optional().describe('ID of element providing additional description (WAI-ARIA aria-describedby)'),\n\n /** WAI-ARIA role override */\n role: z.string().optional().describe('WAI-ARIA role attribute (e.g., \"dialog\", \"navigation\", \"alert\")'),\n}).describe('ARIA accessibility attributes'));\n\nexport type AriaProps = z.infer<typeof AriaPropsSchema>;\n\n/**\n * Plural Rule Schema\n *\n * Defines plural forms for a translation key, following ICU MessageFormat / i18next conventions.\n * Supports zero, one, two, few, many, other forms per CLDR plural rules.\n *\n * @see https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules\n *\n * @example\n * ```typescript\n * const plural: PluralRule = {\n * key: 'items.count',\n * zero: 'No items',\n * one: '{count} item',\n * other: '{count} items',\n * };\n * ```\n */\nexport const PluralRuleSchema = lazySchema(() => z.object({\n /** Translation key for the plural form */\n key: z.string().describe('Translation key'),\n /** Form for zero quantity */\n zero: z.string().optional().describe('Zero form (e.g., \"No items\")'),\n /** Form for singular (1) */\n one: z.string().optional().describe('Singular form (e.g., \"{count} item\")'),\n /** Form for dual (2) — used in Arabic, Welsh, etc. */\n two: z.string().optional().describe('Dual form (e.g., \"{count} items\" for exactly 2)'),\n /** Form for few (2-4 in Slavic languages) */\n few: z.string().optional().describe('Few form (e.g., for 2-4 in some languages)'),\n /** Form for many (5+ in Slavic languages) */\n many: z.string().optional().describe('Many form (e.g., for 5+ in some languages)'),\n /** Default/fallback form */\n other: z.string().describe('Default plural form (e.g., \"{count} items\")'),\n}).describe('ICU plural rules for a translation key'));\n\nexport type PluralRule = z.infer<typeof PluralRuleSchema>;\n\n/**\n * Number Format Schema\n *\n * Defines number formatting rules for localization.\n *\n * @example\n * ```typescript\n * const format: NumberFormat = {\n * style: 'currency',\n * currency: 'USD',\n * minimumFractionDigits: 2,\n * };\n * ```\n */\nexport const NumberFormatSchema = lazySchema(() => z.object({\n style: z.enum(['decimal', 'currency', 'percent', 'unit']).default('decimal')\n .describe('Number formatting style'),\n currency: z.string().optional().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n unit: z.string().optional().describe('Unit for unit formatting (e.g., \"kilometer\", \"liter\")'),\n minimumFractionDigits: z.number().optional().describe('Minimum number of fraction digits'),\n maximumFractionDigits: z.number().optional().describe('Maximum number of fraction digits'),\n useGrouping: z.boolean().optional().describe('Whether to use grouping separators (e.g., 1,000)'),\n}).describe('Number formatting rules'));\n\nexport type NumberFormat = z.infer<typeof NumberFormatSchema>;\n\n/**\n * Date Format Schema\n *\n * Defines date/time formatting rules for localization.\n *\n * @example\n * ```typescript\n * const format: DateFormat = {\n * dateStyle: 'medium',\n * timeStyle: 'short',\n * timeZone: 'America/New_York',\n * };\n * ```\n */\nexport const DateFormatSchema = lazySchema(() => z.object({\n dateStyle: z.enum(['full', 'long', 'medium', 'short']).optional()\n .describe('Date display style'),\n timeStyle: z.enum(['full', 'long', 'medium', 'short']).optional()\n .describe('Time display style'),\n timeZone: z.string().optional().describe('IANA time zone (e.g., \"America/New_York\")'),\n hour12: z.boolean().optional().describe('Use 12-hour format'),\n}).describe('Date/time formatting rules'));\n\nexport type DateFormat = z.infer<typeof DateFormatSchema>;\n\n/**\n * Locale Configuration Schema\n *\n * Defines a complete locale configuration including language code,\n * fallback chain, and formatting preferences.\n *\n * @example\n * ```typescript\n * const locale: LocaleConfig = {\n * code: 'zh-CN',\n * fallbackChain: ['zh-TW', 'en'],\n * direction: 'ltr',\n * numberFormat: { style: 'decimal', useGrouping: true },\n * dateFormat: { dateStyle: 'medium', timeStyle: 'short' },\n * };\n * ```\n */\nexport const LocaleConfigSchema = lazySchema(() => z.object({\n /** BCP 47 language code (e.g., \"en-US\", \"zh-CN\", \"ar-SA\") */\n code: z.string().describe('BCP 47 language code (e.g., \"en-US\", \"zh-CN\")'),\n\n /** Ordered fallback chain for missing translations */\n fallbackChain: z.array(z.string()).optional()\n .describe('Fallback language codes in priority order (e.g., [\"zh-TW\", \"en\"])'),\n\n /** Text direction */\n direction: z.enum(['ltr', 'rtl']).default('ltr')\n .describe('Text direction: left-to-right or right-to-left'),\n\n /** Default number formatting */\n numberFormat: NumberFormatSchema.optional().describe('Default number formatting rules'),\n\n /** Default date formatting */\n dateFormat: DateFormatSchema.optional().describe('Default date/time formatting rules'),\n}).describe('Locale configuration'));\n\nexport type LocaleConfig = z.infer<typeof LocaleConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Unified Chart Type Taxonomy\n * \n * Shared by Dashboard and Report widgets.\n * Provides a comprehensive set of chart types for data visualization.\n */\n\n/**\n * Chart Type Enum\n * Categorized by visualization purpose\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ChartTypeSchema = lazySchema(() => z.enum([\n // Comparison\n 'bar',\n 'horizontal-bar',\n 'column',\n\n // Trend\n 'line',\n 'area',\n\n // Distribution\n 'pie',\n 'donut',\n 'funnel',\n\n // Relationship\n 'scatter',\n\n // Composition\n 'treemap',\n 'sankey',\n\n // Performance (single value — metric/kpi render a number; gauge/solid-gauge/\n // bullet are honest single-value variants pending a real dial/target renderer)\n 'gauge',\n 'solid-gauge',\n 'metric',\n 'kpi',\n 'bullet',\n\n // Advanced\n 'radar',\n\n // Tabular\n 'table',\n 'pivot',\n]));\n\n// NOTE: the taxonomy lists only chart families the default Recharts renderer\n// draws DISTINCTLY. Two groups are intentionally absent:\n//\n// 1. Families requiring data/dependencies the platform does not model — OHLC\n// (candlestick/stock), per-record distributions (box-plot/violin), geo\n// (choropleth/bubble-map/gl-map), or extra renderers (sunburst, heatmap,\n// word-cloud, waterfall).\n// 2. VARIANTS that only render as their base chart, so advertising them lies\n// about the output: grouped-bar / stacked-bar / bi-polar-bar (→ bar, no\n// multi-series grouping/stacking), stacked-area (→ area), step-line / spline\n// (→ line), pyramid (→ funnel), bubble (→ scatter, no size encoding).\n//\n// Both can return via an opt-in renderer once there is a real renderer and a\n// data model to back them. (`metric`/`kpi` are kept as honest single-value\n// synonyms; `gauge`/`solid-gauge`/`bullet` render a value today and gain a dial\n// when a gauge renderer lands.)\n\nexport type ChartType = z.infer<typeof ChartTypeSchema>;\n\n/**\n * Chart Axis Schema\n * Definition for X and Y axes\n */\nexport const ChartAxisSchema = lazySchema(() => z.object({\n /** Data field to map to this axis */\n field: z.string().describe('Data field key'),\n \n /** Axis title */\n title: I18nLabelSchema.optional().describe('Axis display title'),\n\n /** Value formatting (d3-format or similar) */\n format: z.string().optional().describe('Value format string (e.g., \"$0,0.00\")'),\n \n /** Axis scale settings */\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n stepSize: z.number().optional().describe('Step size for ticks'),\n \n /** Appearance */\n showGridLines: z.boolean().default(true),\n position: z.enum(['left', 'right', 'top', 'bottom']).optional().describe('Axis position'),\n \n /** Logarithmic scale */\n logarithmic: z.boolean().default(false),\n}));\n\n/**\n * Chart Series Schema\n * Defines a single data series in the chart\n */\nexport const ChartSeriesSchema = lazySchema(() => z.object({\n /** Field name for values */\n name: z.string().describe('Field name or series identifier'),\n \n /** Display label */\n label: I18nLabelSchema.optional().describe('Series display label'),\n \n /** Series type override (combo charts) */\n type: ChartTypeSchema.optional().describe('Override chart type for this series'),\n \n /** Specific color */\n color: z.string().optional().describe('Series color (hex/rgb/token)'),\n \n /** Stacking group */\n stack: z.string().optional().describe('Stack identifier to group series'),\n \n /** Axis binding */\n yAxis: z.enum(['left', 'right']).default('left').describe('Bind to specific Y-Axis'),\n\n /**\n * Series role.\n *\n * - `'primary'` (default) — normal styling using the chart palette.\n * - `'comparison'` — secondary period-over-period overlay; renderers\n * render it muted (lower opacity, dashed stroke for line/area,\n * lighter fill for bars) so it visually backgrounds against the\n * primary series. Pair with `DashboardWidget.compareTo` on data-\n * bound charts; for hand-authored series, set it directly.\n */\n variant: z.enum(['primary', 'comparison']).default('primary').optional().describe('Series visual role'),\n\n /** Override stroke dash pattern (e.g. \"4 4\" for dashed lines). */\n dashArray: z.string().optional().describe('SVG stroke-dasharray override'),\n\n /** Override series opacity (0–1). */\n opacity: z.number().min(0).max(1).optional().describe('Series opacity override'),\n}));\n\n/**\n * Chart Annotation Schema\n * Static lines or regions to highlight data\n */\nexport const ChartAnnotationSchema = lazySchema(() => z.object({\n type: z.enum(['line', 'region']).default('line'),\n axis: z.enum(['x', 'y']).default('y'),\n value: z.union([z.number(), z.string()]).describe('Start value'),\n endValue: z.union([z.number(), z.string()]).optional().describe('End value for regions'),\n color: z.string().optional(),\n label: I18nLabelSchema.optional(),\n style: z.enum(['solid', 'dashed', 'dotted']).default('dashed'),\n}));\n\n/**\n * Chart Interaction Schema\n */\nexport const ChartInteractionSchema = lazySchema(() => z.object({\n tooltips: z.boolean().default(true),\n zoom: z.boolean().default(false),\n brush: z.boolean().default(false),\n clickAction: z.string().optional().describe('Action ID to trigger on click'),\n}));\n\n/**\n * Chart Configuration Base\n * Common configuration for all chart types\n */\nexport const ChartConfigSchema = lazySchema(() => z.object({\n /** Chart Type */\n type: ChartTypeSchema,\n \n /** Titles */\n title: I18nLabelSchema.optional().describe('Chart title'),\n subtitle: I18nLabelSchema.optional().describe('Chart subtitle'),\n description: I18nLabelSchema.optional().describe('Accessibility description'),\n \n /** Axes Mapping */\n xAxis: ChartAxisSchema.optional().describe('X-Axis configuration'),\n yAxis: z.array(ChartAxisSchema).optional().describe('Y-Axis configuration (support dual axis)'),\n \n /** Series Configuration */\n series: z.array(ChartSeriesSchema).optional().describe('Defined series configuration'),\n \n /** Appearance */\n colors: z.array(z.string()).optional().describe('Color palette'),\n height: z.number().optional().describe('Fixed height in pixels'),\n \n /** Components */\n showLegend: z.boolean().default(true).describe('Display legend'),\n showDataLabels: z.boolean().default(false).describe('Display data labels'),\n \n /** Annotations & Reference Lines */\n annotations: z.array(ChartAnnotationSchema).optional(),\n \n /** Interactions */\n interaction: ChartInteractionSchema.optional(),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport type ChartConfig = z.infer<typeof ChartConfigSchema>;\nexport type ChartAxis = z.infer<typeof ChartAxisSchema>;\nexport type ChartSeries = z.infer<typeof ChartSeriesSchema>;\nexport type ChartAnnotation = z.infer<typeof ChartAnnotationSchema>;\nexport type ChartInteraction = z.infer<typeof ChartInteractionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Breakpoint Name Enum\n * Matches the breakpoint names defined in theme.zod.ts BreakpointsSchema.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const BreakpointName = z.enum(['xs', 'sm', 'md', 'lg', 'xl', '2xl']);\n\nexport type BreakpointName = z.infer<typeof BreakpointName>;\n\n/**\n * Responsive Configuration Schema\n *\n * Provides responsive layout configuration for UI components.\n * Maps breakpoint names to layout behavior (columns, visibility, order).\n *\n * Aligned with theme.zod.ts BreakpointsSchema for a unified responsive system.\n *\n * @example\n * ```typescript\n * const config: ResponsiveConfig = {\n * columns: { xs: 12, sm: 6, lg: 4 },\n * hiddenOn: ['xs'],\n * order: { xs: 2, lg: 1 },\n * };\n * ```\n */\n/**\n * Breakpoint Column Map Schema\n * Maps breakpoint names to grid column counts (1-12).\n * All entries are optional — only specified breakpoints are configured.\n */\nexport const BreakpointColumnMapSchema = lazySchema(() => z.object({\n xs: z.number().min(1).max(12).optional(),\n sm: z.number().min(1).max(12).optional(),\n md: z.number().min(1).max(12).optional(),\n lg: z.number().min(1).max(12).optional(),\n xl: z.number().min(1).max(12).optional(),\n '2xl': z.number().min(1).max(12).optional(),\n}).describe('Grid columns per breakpoint (1-12)'));\n\n/**\n * Breakpoint Order Map Schema\n * Maps breakpoint names to display order numbers.\n * All entries are optional — only specified breakpoints are configured.\n */\nexport const BreakpointOrderMapSchema = lazySchema(() => z.object({\n xs: z.number().optional(),\n sm: z.number().optional(),\n md: z.number().optional(),\n lg: z.number().optional(),\n xl: z.number().optional(),\n '2xl': z.number().optional(),\n}).describe('Display order per breakpoint'));\n\nexport const ResponsiveConfigSchema = lazySchema(() => z.object({\n /** Minimum breakpoint for visibility */\n breakpoint: BreakpointName.optional()\n .describe('Minimum breakpoint for visibility'),\n\n /** Hide on specific breakpoints */\n hiddenOn: z.array(BreakpointName).optional()\n .describe('Hide on these breakpoints'),\n\n /** Grid columns per breakpoint (1-12 column grid) */\n columns: BreakpointColumnMapSchema.optional().describe('Grid columns per breakpoint'),\n\n /** Display order per breakpoint */\n order: BreakpointOrderMapSchema.optional().describe('Display order per breakpoint'),\n}).describe('Responsive layout configuration'));\n\nexport type ResponsiveConfig = z.infer<typeof ResponsiveConfigSchema>;\n\n/**\n * Performance Configuration Schema\n *\n * Defines performance optimization settings for UI components\n * such as lazy loading, virtual scrolling, and caching.\n *\n * @example\n * ```typescript\n * const perf: PerformanceConfig = {\n * lazyLoad: true,\n * virtualScroll: { enabled: true, itemHeight: 40, overscan: 5 },\n * cacheStrategy: 'stale-while-revalidate',\n * prefetch: true,\n * };\n * ```\n */\nexport const PerformanceConfigSchema = lazySchema(() => z.object({\n /** Enable lazy loading for this component */\n lazyLoad: z.boolean().optional()\n .describe('Enable lazy loading (defer rendering until visible)'),\n\n /** Virtual scrolling configuration for large datasets */\n virtualScroll: z.object({\n enabled: z.boolean().default(false).describe('Enable virtual scrolling'),\n itemHeight: z.number().optional().describe('Fixed item height in pixels (for estimation)'),\n overscan: z.number().optional().describe('Number of extra items to render outside viewport'),\n }).optional().describe('Virtual scrolling configuration'),\n\n /** Client-side caching strategy */\n cacheStrategy: z.enum([\n 'none',\n 'cache-first',\n 'network-first',\n 'stale-while-revalidate',\n ]).optional().describe('Client-side data caching strategy'),\n\n /** Enable data prefetching */\n prefetch: z.boolean().optional()\n .describe('Prefetch data before component is visible'),\n\n /** Maximum number of items to render before pagination */\n pageSize: z.number().optional()\n .describe('Number of items per page for pagination'),\n\n /** Debounce interval for user interactions (ms) */\n debounceMs: z.number().optional()\n .describe('Debounce interval for user interactions in milliseconds'),\n}).describe('Performance optimization configuration'));\n\nexport type PerformanceConfig = z.infer<typeof PerformanceConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * System Identifier Schema\n * \n * Universal naming convention for all machine identifiers (API Names) in ObjectStack.\n * Enforces lowercase with underscores or dots to ensure:\n * - Cross-platform compatibility (case-insensitive filesystems)\n * - URL-friendliness (no encoding needed)\n * - Database consistency (no collation issues)\n * - Security (no case-sensitivity bugs in permission checks)\n * \n * **Applies to all metadata that acts as a machine identifier:**\n * - Object names (tables/collections)\n * - Field names\n * - Role names\n * - Permission set names\n * - Action/trigger names\n * - Event keys\n * - App IDs\n * - Menu/page IDs\n * - Select option values\n * - Workflow names\n * - Webhook names\n * \n * **Naming Convention Summary:**\n * | Type | Pattern | Example |\n * |------|---------|---------|\n * | Machine ID | snake_case | `crm_account`, `btn_submit`, `role_admin` |\n * | Event keys | dot.notation | `user.login`, `order.created` |\n * | Labels | Any case | `Client Account`, `Submit Form` |\n * \n * @example Valid identifiers\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * - 'order.created' (for events)\n * - 'api_v2_endpoint'\n * \n * @example Invalid identifiers (will be rejected)\n * - 'Account' (uppercase)\n * - 'CrmAccount' (camelCase)\n * - 'crm-account' (kebab-case - use underscore instead)\n * - 'user profile' (spaces)\n */\nimport { lazySchema } from './lazy-schema';\nexport const SystemIdentifierSchema = lazySchema(() => z\n .string()\n .min(2, { message: 'System identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'System identifier must be lowercase, starting with a letter, and may contain letters, numbers, underscores, or dots (e.g., \"user_profile\" or \"order.created\")',\n })\n .describe('System identifier (lowercase with underscores or dots)'));\n\n/**\n * Strict Snake Case Identifier\n * \n * More restrictive than SystemIdentifierSchema - only allows underscores (no dots).\n * Use this for identifiers that should NOT contain dots (e.g., database table/column names).\n * \n * @example Valid\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * \n * @example Invalid\n * - 'user.profile' (dots not allowed)\n * - 'UserProfile' (uppercase)\n */\nexport const SnakeCaseIdentifierSchema = lazySchema(() => z\n .string()\n .min(2, { message: 'Identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_]*$/, {\n message:\n 'Identifier must be lowercase snake_case, starting with a letter, and may contain only letters, numbers, and underscores (e.g., \"user_profile\")',\n })\n .describe('Snake case identifier (lowercase with underscores only)'));\n\n/**\n * Event Name Identifier\n * \n * Specialized identifier for event names that encourages dot notation.\n * Used in event-driven systems, message queues, and webhooks.\n * \n * Pattern: `namespace.action` or `entity.event_type`\n * \n * @example Valid\n * - 'user.created'\n * - 'order.paid'\n * - 'user.login_success'\n * - 'alarm.high_cpu'\n * \n * @example Invalid\n * - 'UserCreated' (camelCase)\n * - 'user_created' (should use dots for namespacing)\n */\nexport const EventNameSchema = lazySchema(() => z\n .string()\n .min(3, { message: 'Event name must be at least 3 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'Event name must be lowercase with dots for namespacing (e.g., \"user.created\", \"order.paid\")',\n })\n .describe('Event name (lowercase with dot notation for namespacing)'));\n\n/**\n * Type Exports\n */\nexport type SystemIdentifier = z.infer<typeof SystemIdentifierSchema>;\nexport type SnakeCaseIdentifier = z.infer<typeof SnakeCaseIdentifierSchema>;\nexport type EventName = z.infer<typeof EventNameSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Expression Protocol\n *\n * Canonical wire format for all \"expression\"-shaped metadata across ObjectStack\n * (formula fields, predicates, conditions, criteria, visibility rules, seed\n * dynamic values, …).\n *\n * The persisted form is `{ dialect, source }` (and, after `objectstack\n * compile` normalization, `{ dialect, ast }`). String-only shorthand is\n * accepted at *input* time for developer ergonomics; build emits the canonical\n * envelope.\n *\n * ## Dialects\n *\n * | dialect | engine | use |\n * |:---|:---|:---|\n * | `cel` | `@objectstack/formula` (cel-js + ObjectStack stdlib) | formulas, predicates, seed dynamic values |\n * | `js` | sandboxed L2 hook bodies (`isolated-vm` / `quickjs`) | mapping, hook bodies |\n * | `cron` | `cron-parser` | job schedules |\n *\n * SQL fragments (analytics joins, partial indexes) are intentionally **not**\n * routed through this schema — they stay driver-native because their security\n * posture and portability story differ.\n *\n * @see content/docs/concepts/north-star.mdx §8 \"No private expression DSL\"\n */\n\n/** Supported expression dialects. */\nexport const ExpressionDialect = z.enum(['cel', 'js', 'cron', 'template']);\nexport type ExpressionDialect = z.infer<typeof ExpressionDialect>;\n\n/**\n * Authorship metadata for an expression. Optional but encouraged for AI-\n * generated artifacts so audit/explanation tooling has something to render.\n */\nexport const ExpressionMetaSchema = z.object({\n /** Human-readable rationale (often AI-emitted). */\n rationale: z.string().optional(),\n /** Identifier of the agent / tool that produced this expression. */\n generatedBy: z.string().optional(),\n});\nexport type ExpressionMeta = z.infer<typeof ExpressionMetaSchema>;\n\n/**\n * Canonical Expression envelope.\n *\n * Phase 1 (M9.1): `source` is the canonical persisted form. `ast` is reserved\n * and accepted as opaque structured value — `objectstack compile` will fill it\n * in M9.2 with the engine's parsed AST so the artifact carries an AST-only\n * representation.\n *\n * Phase 2 (M9.2+): `ast` becomes required in build output; `source` is kept\n * only for round-trip / debug.\n */\nexport const ExpressionSchema = z.object({\n /** Which engine evaluates `source` / `ast`. */\n dialect: ExpressionDialect,\n /** Surface syntax. Required while `ast` is not yet populated. */\n source: z.string().min(1).optional(),\n /**\n * Engine-native AST. Opaque at the spec layer; each engine validates its own\n * shape. For `dialect: 'cel'` this is the cel-js parsed AST node.\n */\n ast: z.unknown().optional(),\n /** Optional authorship metadata. */\n meta: ExpressionMetaSchema.optional(),\n}).refine(e => e.source !== undefined || e.ast !== undefined, {\n message: 'Expression requires at least one of `source` or `ast`',\n});\nexport type Expression = z.infer<typeof ExpressionSchema>;\n\n/**\n * Author-time input shape: a bare string is shorthand for `{ dialect: 'cel',\n * source }`. Engines that need other dialects must use the full envelope.\n *\n * Build (`objectstack compile`) normalizes this union to `Expression` so the\n * persisted artifact never contains the bare-string form.\n */\nexport const ExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'cel', source })),\n ExpressionSchema,\n]);\nexport type ExpressionInput = z.input<typeof ExpressionInputSchema>;\n\n/**\n * Cron-typed input shape: a bare string is shorthand for `{ dialect: 'cron',\n * source }` (not `cel`). Use this for `schedule` / `cronExpression` fields so\n * authors can write `'0 9 * * 1-5'` without manually wrapping.\n */\nexport const CronExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'cron', source })),\n ExpressionSchema,\n]);\nexport type CronExpressionInput = z.input<typeof CronExpressionInputSchema>;\n\n/**\n * Template-typed input shape: a bare string is shorthand for\n * `{ dialect: 'template', source }`. Use this for notification subjects/bodies,\n * titleFormat, prompt templates — anything with `{{var}}` interpolation.\n */\nexport const TemplateExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'template', source })),\n ExpressionSchema,\n]);\nexport type TemplateExpressionInput = z.input<typeof TemplateExpressionInputSchema>;\n\n/**\n * Predicate — an Expression whose evaluation is expected to be boolean.\n * Spec layer cannot enforce return type at parse time; this alias exists for\n * intent documentation and future runtime type-check wiring.\n */\nexport const PredicateSchema = ExpressionSchema;\nexport type Predicate = z.infer<typeof PredicateSchema>;\n\nexport const PredicateInputSchema = ExpressionInputSchema;\nexport type PredicateInput = z.input<typeof PredicateInputSchema>;\n\n/**\n * Construct an Expression literal from a CEL source string. Used by DX\n * shorthand (`cel\\`...\\``) and by codegen tools.\n */\nexport function expression(source: string, dialect: ExpressionDialect = 'cel', meta?: ExpressionMeta): Expression {\n return { dialect, source, ...(meta ? { meta } : {}) };\n}\n\n/**\n * Tagged-template helpers for inline expression authoring.\n *\n * ```ts\n * import { cel, F, P } from '@objectstack/spec';\n *\n * const f = { formula: F`record.amount * 0.1` };\n * const v = { visible: P`record.status == \"open\"` };\n * const d = { close_date: cel`now() + duration(\"P30D\")` };\n * ```\n *\n * Each helper produces an {@link Expression} envelope with `dialect: 'cel'`\n * and the rendered template string as `source`. The CLI `objectstack compile`\n * step (M9.2) parses these into ASTs at build time so the persisted artifact\n * is dialect-AST only.\n */\nfunction renderTemplate(strings: TemplateStringsArray, values: readonly unknown[]): string {\n if (values.length === 0) return strings[0] ?? '';\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n // Inline literal substitution. Strings get JSON-escaped so `${name}` for\n // `name = 'O\\'Brien'` produces a valid CEL string literal. Numbers and\n // booleans render as their toString. Anything exotic should be passed via\n // the variable scope (record/input) rather than interpolated.\n if (typeof v === 'string') out += JSON.stringify(v);\n else if (typeof v === 'number' || typeof v === 'boolean') out += String(v);\n else if (v === null || v === undefined) out += 'null';\n else out += JSON.stringify(v);\n out += strings[i + 1] ?? '';\n }\n return out;\n}\n\n/** Tagged template — produces a CEL Expression envelope. */\nexport function cel(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n return { dialect: 'cel', source: renderTemplate(strings, values) };\n}\n\n/** Formula alias of {@link cel} — semantic shorthand for computed-field formulas. */\nexport const F = cel;\n\n/** Predicate alias of {@link cel} — semantic shorthand for boolean conditions. */\nexport const P = cel;\n\n/**\n * Tagged template — produces a Mustache-template Expression envelope. Use for\n * notification subjects, prompt bodies, titleFormat strings, etc. Variable\n * scope is the same as CEL (`{{record.x}}`, `{{os.user.id}}`).\n */\nexport function tmpl(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n // Templates do not get JSON.stringify on substitution — interpolation happens\n // at evaluate time via `{{path}}` markers, so we keep raw substitutions here.\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n out += String(values[i]);\n out += strings[i + 1] ?? '';\n }\n return { dialect: 'template', source: out };\n}\n\n/** Tagged template — produces a cron Expression envelope. */\nexport function cron(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n out += String(values[i]);\n out += strings[i + 1] ?? '';\n }\n return { dialect: 'cron', source: out };\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * @module ui/sharing\n *\n * Sharing & Embedding Protocol\n *\n * Defines schemas for public link sharing, embed configuration,\n * domain restrictions, and password protection for apps, pages, and forms.\n */\n\nimport { z } from 'zod';\n\n/**\n * Sharing Config Schema\n * Configuration for public sharing of an app, page, or form.\n * Supports public links, password protection, domain restrictions, and expiration.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SharingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable public sharing'),\n publicLink: z.string().optional().describe('Generated public share URL'),\n password: z.string().optional().describe('Password required to access shared link'),\n allowedDomains: z.array(z.string()).optional()\n .describe('Restrict access to specific email domains (e.g. [\"example.com\"])'),\n expiresAt: z.string().optional()\n .describe('Expiration date/time in ISO 8601 format'),\n allowAnonymous: z.boolean().optional().default(false)\n .describe('Allow access without authentication'),\n}));\n\n/**\n * Embed Config Schema\n * Configuration for iframe embedding of an app, page, or form.\n * Supports origin restrictions, display options, and responsive sizing.\n */\nexport const EmbedConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable iframe embedding'),\n allowedOrigins: z.array(z.string()).optional()\n .describe('Allowed iframe parent origins (e.g. [\"https://example.com\"])'),\n width: z.string().optional().default('100%').describe('Embed width (CSS value)'),\n height: z.string().optional().default('600px').describe('Embed height (CSS value)'),\n showHeader: z.boolean().optional().default(true).describe('Show interface header in embed'),\n showNavigation: z.boolean().optional().default(false).describe('Show navigation in embed'),\n responsive: z.boolean().optional().default(true).describe('Enable responsive resizing'),\n}));\n\n// Type Exports\nexport type SharingConfig = z.infer<typeof SharingConfigSchema>;\nexport type EmbedConfig = z.infer<typeof EmbedConfigSchema>;\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Metadata Protection Model — Phase 1 (ADR-0010)\n *\n * Phase 1 introduces the **item-level lock** (`_lock`) and the\n * provenance / package tags that drive it. Later phases extend this\n * file with the path-level (`_frozenPaths`) and package-level\n * (`metadataDefaults`) layers; the wire shapes here are forward-\n * compatible with those additions.\n *\n * Wire / runtime contract:\n * - `_lock` — 4-state enum, controls overlay / delete actions.\n * - `_lockReason` — short, user-visible explanation surfaced in\n * `403 item_locked` errors and on Studio tooltips.\n * - `_lockSource` — which layer set the lock (Phase 1 only emits\n * `'artifact'`; `'package'` and `'env-forced'`\n * are reserved for Phase 3/2 respectively).\n * - `_provenance` — `'package'` for loader-introduced items,\n * `'org'` for tenant-authored, `'env-forced'`\n * reserved for emergency overrides.\n * - `_packageId` / `_packageVersion` — denormalised from the\n * registry tag so consumers don't need a second\n * round-trip to inspect provenance.\n *\n * See `docs/adr/0010-metadata-protection-model.md` for the full\n * design (industry references, 4-layer model, audit trail).\n */\n\n// ─────────────────────────────────────────────────────────────────────\n// Enums\n// ─────────────────────────────────────────────────────────────────────\n\n/**\n * 4-state lock enum.\n *\n * | Value | Save (PUT / publish / rollback) | Delete |\n * |---------------|---------------------------------|--------|\n * | `none` | allow | allow |\n * | `no-overlay` | **deny** (403 item_locked) | allow |\n * | `no-delete` | allow | **deny** |\n * | `full` | **deny** | **deny** |\n *\n * `allowRuntimeCreate` for **brand-new** items is governed by the\n * type-level L1 registry flag and is never affected by `_lock`\n * (which describes an existing item). See ADR-0010 §3.3.\n */\nexport const MetadataLockSchema = z.enum(['none', 'no-overlay', 'no-delete', 'full']);\nexport type MetadataLock = z.infer<typeof MetadataLockSchema>;\n\n/** Where the `_lock` declaration came from. Reserved enum for forward compatibility. */\nexport const MetadataLockSourceSchema = z.enum(['artifact', 'package', 'env-forced']);\nexport type MetadataLockSource = z.infer<typeof MetadataLockSourceSchema>;\n\n/** Where the metadata item originated. */\nexport const MetadataProvenanceSchema = z.enum(['package', 'org', 'env-forced']);\nexport type MetadataProvenance = z.infer<typeof MetadataProvenanceSchema>;\n\n// ─────────────────────────────────────────────────────────────────────\n// Mixin — raw shape that schemas spread into themselves\n// ─────────────────────────────────────────────────────────────────────\n\n/**\n * Raw shape spliced into each metadata Zod schema that wants to expose\n * the optional protection envelope to its TS authors. Implemented as a\n * Zod raw shape (not a wrapping schema) so it composes with the\n * existing `z.object({ ... })` patterns without needing to introduce\n * a refinement layer.\n *\n * Usage:\n * ```ts\n * const AppSchema = z.object({\n * name: z.string(),\n * // …\n * ...MetadataProtectionFields,\n * });\n * ```\n */\nexport const MetadataProtectionFields = {\n /**\n * Per-item lock declaration. Defaults to `'none'` when omitted.\n * Enforced by the runtime protocol on save / publish / rollback /\n * delete. See ADR-0010 §3.3.\n */\n _lock: MetadataLockSchema.optional().describe(\n 'Item-level lock — controls overlay & delete (ADR-0010).',\n ),\n\n /**\n * Short, user-visible explanation surfaced in `403 item_locked`\n * error envelopes and Studio tooltips. Keep < 200 chars.\n */\n _lockReason: z.string().max(500).optional().describe(\n 'Human-readable reason shown when a write is refused by _lock.',\n ),\n\n /**\n * Which layer asserted the lock — Phase 1 only emits `'artifact'`.\n * Reserved for Phase 2/3 (`'package'`, `'env-forced'`).\n */\n _lockSource: MetadataLockSourceSchema.optional().describe(\n 'Layer that set _lock (artifact | package | env-forced).',\n ),\n\n /**\n * `'package'` — introduced by a loader from npm-package source.\n * `'org'` — authored by a tenant via the metadata API.\n * `'env-forced'` — emergency overrides via the unlock list.\n */\n _provenance: MetadataProvenanceSchema.optional().describe(\n 'Origin of the item (package | org | env-forced).',\n ),\n\n /** Owning package machine id (e.g. `com.objectstack.setup`). */\n _packageId: z.string().optional().describe('Owning package machine id.'),\n\n /** Owning package semver. */\n _packageVersion: z.string().optional().describe('Owning package version.'),\n\n /**\n * Optional URL the Studio lock banner links to for more context.\n * Populated by the loader from the author-facing\n * `protection.docsUrl` field — see `shared/protection.zod.ts`.\n */\n _lockDocsUrl: z.string().optional().describe(\n 'Optional documentation link surfaced next to _lockReason.',\n ),\n} as const;\n\n// ─────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────\n\n/**\n * Read the protection envelope off any candidate item. Safe to call\n * on `undefined`, primitives, or items that have no protection fields\n * at all — returns a fully-defaulted record.\n */\nexport function extractProtection(item: unknown): {\n lock: MetadataLock;\n lockReason: string | undefined;\n lockSource: MetadataLockSource | undefined;\n lockDocsUrl: string | undefined;\n provenance: MetadataProvenance | undefined;\n packageId: string | undefined;\n packageVersion: string | undefined;\n} {\n const empty = {\n lock: 'none' as MetadataLock,\n lockReason: undefined,\n lockSource: undefined,\n lockDocsUrl: undefined,\n provenance: undefined,\n packageId: undefined,\n packageVersion: undefined,\n };\n if (!item || typeof item !== 'object') return empty;\n const rec = item as Record<string, unknown>;\n const lockRaw = rec['_lock'];\n const lock = typeof lockRaw === 'string' && MetadataLockSchema.options.includes(lockRaw as MetadataLock)\n ? (lockRaw as MetadataLock)\n : 'none';\n const lockReason = typeof rec['_lockReason'] === 'string' ? (rec['_lockReason'] as string) : undefined;\n const lockSource = typeof rec['_lockSource'] === 'string'\n && MetadataLockSourceSchema.options.includes(rec['_lockSource'] as MetadataLockSource)\n ? (rec['_lockSource'] as MetadataLockSource)\n : undefined;\n const lockDocsUrl = typeof rec['_lockDocsUrl'] === 'string' ? (rec['_lockDocsUrl'] as string) : undefined;\n const provenance = typeof rec['_provenance'] === 'string'\n && MetadataProvenanceSchema.options.includes(rec['_provenance'] as MetadataProvenance)\n ? (rec['_provenance'] as MetadataProvenance)\n : undefined;\n const packageId = typeof rec['_packageId'] === 'string' ? (rec['_packageId'] as string) : undefined;\n const packageVersion = typeof rec['_packageVersion'] === 'string' ? (rec['_packageVersion'] as string) : undefined;\n return { lock, lockReason, lockSource, lockDocsUrl, provenance, packageId, packageVersion };\n}\n\n/**\n * Decide whether a write-style operation (PUT / publish / rollback)\n * is allowed under the given lock state.\n *\n * Returns `null` on allow. Returns a structured refusal envelope when\n * the lock blocks the operation; the protocol layer turns that into a\n * `403 item_locked` HTTP error.\n */\nexport function evaluateLockForWrite(lock: MetadataLock): { code: 'item_locked'; reason: string } | null {\n if (lock === 'no-overlay' || lock === 'full') {\n return { code: 'item_locked', reason: `Write refused — _lock=${lock}` };\n }\n return null;\n}\n\n/** Counterpart of {@link evaluateLockForWrite} for delete operations. */\nexport function evaluateLockForDelete(lock: MetadataLock): { code: 'item_locked'; reason: string } | null {\n if (lock === 'no-delete' || lock === 'full') {\n return { code: 'item_locked', reason: `Delete refused — _lock=${lock}` };\n }\n return null;\n}\n\n/**\n * Derive the read-side flags Studio needs to render the UI. The\n * `editable` / `deletable` / `resettable` triple is what the\n * `GET /meta/:type/:name` response carries in Phase 1. See ADR-0010 §5.\n */\nexport function resolveLockState(item: unknown, artifactBacked: boolean): {\n lock: MetadataLock;\n lockReason: string | undefined;\n lockSource: MetadataLockSource | undefined;\n lockDocsUrl: string | undefined;\n provenance: MetadataProvenance | undefined;\n packageId: string | undefined;\n packageVersion: string | undefined;\n editable: boolean;\n deletable: boolean;\n resettable: boolean;\n} {\n const p = extractProtection(item);\n const editable = p.lock !== 'no-overlay' && p.lock !== 'full';\n const deletable = p.lock !== 'no-delete' && p.lock !== 'full';\n // Reset only makes sense when there is something to reset *to* —\n // i.e. the artifact is package-backed and an overlay can be peeled\n // off. Phase 3 will surface this through a dedicated endpoint; for\n // Phase 1 we publish the boolean so Studio can pre-disable the\n // button when artifactBacked is false.\n const resettable = artifactBacked;\n return { ...p, editable, deletable, resettable };\n}\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * # Package-level metadata protection (ADR-0010 §3.7 — Phase 4.3)\n *\n * Public, type-safe author surface for package authors to declare\n * how much of one of their metadata items the runtime (and the\n * tenant's Studio) is allowed to mutate. Internally this is what\n * gets translated into the `_lock` / `_lockReason` / `_lockDocsUrl`\n * private envelope (`kernel/metadata-protection.zod.ts`) that the\n * protocol layer enforces.\n *\n * Why two layers?\n * - **`protection`** is the *author DX* surface — typed, validated,\n * and discoverable via IntelliSense on every `*.app.ts` /\n * `*.object.ts` / `*.view.ts` etc.\n * - **`_lock` envelope** is the *runtime* surface — strips off the\n * protection block on load and stamps the private fields so the\n * persistence and overlay layers don't drag the author-facing\n * block through every `sys_metadata` overlay diff.\n *\n * Example:\n * ```ts\n * export const SETUP_APP: App = {\n * name: 'setup',\n * label: 'Setup',\n * protection: {\n * lock: 'full',\n * reason: 'Core admin UI shipped by @objectstack/platform-objects.',\n * docsUrl: 'https://docs.objectstack.ai/adr/0010-metadata-protection',\n * },\n * // ...\n * };\n * ```\n *\n * The loader (`metadata/plugin.ts` + `objectql/registry.ts`) calls\n * {@link applyProtection} to translate this block into the private\n * `_lock` envelope at registration time. Authors should NEVER set\n * the underscored fields directly — they are an implementation\n * detail.\n *\n * See also:\n * - ADR-0010 §3.7 — Future work → now implemented.\n * - `kernel/metadata-protection.zod.ts` — the runtime envelope.\n */\n\nimport { z } from 'zod';\nimport {\n MetadataLockSchema,\n type MetadataLock,\n} from '../kernel/metadata-protection.zod';\n\n/**\n * Public protection block authored by package developers. Optional on\n * every lockable metadata type — omit to leave the item fully\n * overlay-editable and overlay-deletable (default behaviour).\n *\n * The shape is intentionally *small*: only the fields that have a\n * meaningful UX impact in Studio are exposed. Internal bookkeeping\n * (provenance, packageId, packageVersion) is auto-populated by the\n * loader and must not be supplied here.\n */\nexport const ProtectionSchema = z.object({\n /**\n * Lock policy for this item. See {@link MetadataLockSchema} for\n * the full semantics table.\n *\n * | Value | Save | Delete |\n * |---------------|------|--------|\n * | `none` | ✅ | ✅ |\n * | `no-overlay` | ❌ | ✅ |\n * | `no-delete` | ✅ | ❌ |\n * | `full` | ❌ | ❌ |\n *\n * `no-overlay` is recommended for \"structural\" items that should\n * stay authoritative but allow side-by-side extension (e.g. core\n * objects whose fields can be extended via `objectExtensions`).\n * `full` is for items that have no safe extension point at all\n * (e.g. the platform Setup app whose nav tree is wired directly\n * into framework code).\n */\n lock: MetadataLockSchema.describe(\n 'Lock policy — none | no-overlay | no-delete | full.',\n ),\n\n /**\n * Short user-visible explanation surfaced in `403 item_locked`\n * errors and the Studio lock banner. Aim for one sentence; the\n * banner truncates long values.\n */\n reason: z.string().min(1).max(500).describe(\n 'User-visible reason shown when the lock blocks an action.',\n ),\n\n /**\n * Optional documentation link rendered next to the reason in\n * the Studio lock banner. Use it to point operators at the\n * package's protection policy or to a \"how to customise this\"\n * guide. Must be a fully-qualified URL.\n */\n docsUrl: z.string().url().optional().describe(\n 'Optional URL the Studio banner links to for more context.',\n ),\n}).strict();\n\nexport type Protection = z.infer<typeof ProtectionSchema>;\n\n// ─────────────────────────────────────────────────────────────────────\n// Loader-side translation\n// ─────────────────────────────────────────────────────────────────────\n\n/** Loader context handed in by the registration pipeline. */\nexport interface ApplyProtectionContext {\n /** Owning package id (e.g. `com.objectstack.platform-objects`). */\n packageId?: string;\n /** Owning package semver. */\n packageVersion?: string;\n /**\n * `'package'` for items introduced by a package loader (default).\n * Pass `'env-forced'` when the runtime is materialising an\n * emergency override.\n */\n provenance?: 'package' | 'env-forced';\n}\n\n/**\n * Translate the author-facing `protection` block on `item` into the\n * private `_lock` envelope and strip the public block so it never\n * leaks into the overlay row.\n *\n * Safe to call on any object: items without `protection` are returned\n * unchanged (other than the standard `_packageId` / `_packageVersion`\n * stamping that always runs when the context supplies those fields).\n *\n * Always **mutates** `item` and returns it for chaining.\n */\nexport function applyProtection<T extends Record<string, unknown>>(\n item: T,\n ctx: ApplyProtectionContext = {},\n): T {\n if (!item || typeof item !== 'object') return item;\n\n // Stamp provenance / package coords first so they apply even when\n // there is no `protection` block. The loader pipeline used to do\n // _packageId stamping itself; centralising it here keeps the two\n // load paths (artifact loader + registry.registerItem) consistent.\n if (ctx.packageId && (item as any)._packageId === undefined) {\n (item as any)._packageId = ctx.packageId;\n }\n if (ctx.packageVersion && (item as any)._packageVersion === undefined) {\n (item as any)._packageVersion = ctx.packageVersion;\n }\n // Only stamp provenance when we actually have package coords or an\n // author-facing protection block; otherwise leave the item alone so\n // that DB-only / test fixtures don't acquire an unexpected\n // `_provenance` field. The loader passes packageId for genuine\n // package items; bare `registerItem(type, item)` calls without a\n // package context still produce a clean item.\n const hasProtectionBlock =\n (item as any).protection\n && typeof (item as any).protection === 'object';\n if (\n (ctx.packageId || hasProtectionBlock)\n && (item as any)._provenance === undefined\n ) {\n (item as any)._provenance = ctx.provenance ?? 'package';\n }\n\n const block = (item as any).protection;\n if (!block || typeof block !== 'object') return item;\n\n // Author-facing block exists — translate to the private envelope.\n // We accept partial values (lock alone, reason alone) and let the\n // protocol layer fall back to defaults; full Zod validation runs\n // upstream when the schemas were composed with ProtectionSchema.\n const lock = block.lock as MetadataLock | undefined;\n const reason = typeof block.reason === 'string' ? block.reason : undefined;\n const docsUrl = typeof block.docsUrl === 'string' ? block.docsUrl : undefined;\n\n if (lock !== undefined) {\n (item as any)._lock = lock;\n }\n if (reason !== undefined) {\n (item as any)._lockReason = reason;\n }\n if (docsUrl !== undefined) {\n (item as any)._lockDocsUrl = docsUrl;\n }\n // Lock source is 'package' for anything that came through this\n // helper. Artifact-only items (no packageId) fall back to\n // 'artifact' to preserve the Phase-1 contract.\n if ((item as any)._lockSource === undefined) {\n (item as any)._lockSource = ctx.packageId ? 'package' : 'artifact';\n }\n\n // Strip the public block — it lives only on the author-side\n // module, never on the persisted overlay row.\n delete (item as any).protection;\n\n return item;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { SharingConfigSchema, EmbedConfigSchema } from './sharing.zod';\n\n/**\n * Base Navigation Item Schema\n * Shared properties for all navigation types.\n * \n * **NAMING CONVENTION:**\n * Navigation item IDs are used in URLs and configuration and must be lowercase snake_case.\n * \n * @example Good IDs\n * - 'menu_accounts'\n * - 'page_dashboard'\n * - 'nav_settings'\n * \n * @example Bad IDs (will be rejected)\n * - 'MenuAccounts' (PascalCase)\n * - 'Page Dashboard' (spaces)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { ProtectionSchema } from '../shared/protection.zod';\nconst BaseNavItemSchema = z.object({\n /** Unique identifier for the item */\n id: SnakeCaseIdentifierSchema.describe('Unique identifier for this navigation item (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Display proper label'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** Sort order within the same level (lower numbers appear first) */\n order: z.number().optional().describe('Sort order within the same level (lower = first)'),\n\n /** Badge text or count displayed on the navigation item (e.g. \"3\", \"New\") */\n badge: z.union([z.string(), z.number()]).optional().describe('Badge text or count displayed on the item'),\n\n /** \n * Visibility condition. \n * Formula expression returning boolean. \n * e.g. \"user.is_admin || user.department == 'sales'\"\n */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL). e.g. P`os.user.role == \"admin\"`'),\n\n /** Permissions required to see/access this navigation item */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this item'),\n\n /**\n * Capability gate — registered object name.\n *\n * When set, the frontend MUST hide (or render disabled) this navigation\n * entry if the named object is not registered in the runtime's\n * SchemaRegistry. Useful for cloud-only objects (e.g. `sys_app`,\n * `sys_package`, `sys_package_installation`) that don't exist in\n * single-environment runtimes — declaring the dependency here avoids\n * 404-when-clicked traps without hard-coding environment checks in the\n * UI.\n *\n * Independent of `visible` (CEL) and `requiredPermissions` (RBAC) —\n * this gates on runtime *capability*, not user authorization.\n */\n requiresObject: z.string().optional().describe('Hide/disable this entry unless the named object is registered in the runtime'),\n\n /**\n * Capability gate — registered service name.\n *\n * Same idea as `requiresObject` but keyed on a kernel service\n * (e.g. `'ai'`, `'tenant'`, `'realtime'`). Hide the entry when the\n * service isn't installed.\n */\n requiresService: z.string().optional().describe('Hide/disable this entry unless the named kernel service is registered'),\n});\n\n/**\n * 1. Object Navigation Item\n *\n * Navigates to an object's list view by default. When `recordId` is set,\n * navigates directly to that record's detail page instead — useful for\n * \"My Profile\", \"My Settings\", or any other always-one-row entry where\n * dropping the user on a list view first would be wrong UX.\n *\n * `recordId` supports a small set of template variables resolved at render\n * time by the shell (see Console's `AppSidebar` / `AppContent`):\n * - `{current_user_id}` — the signed-in user's id\n * - `{current_org_id}` — the active organization id\n * These mirror the variables already understood by the view-layer\n * filter resolver (see e.g. `sys_user.me` listView), so authors only\n * have to learn one vocabulary.\n *\n * @example List view (existing behaviour)\n * ```ts\n * { id: 'nav_users', type: 'object', label: 'Users',\n * objectName: 'sys_user', viewName: 'all_users' }\n * ```\n *\n * @example Direct-to-record (new)\n * ```ts\n * { id: 'nav_profile', type: 'object', label: 'My Profile',\n * objectName: 'sys_user', recordId: '{current_user_id}' }\n * ```\n */\nexport const ObjectNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('object'),\n objectName: z.string().describe('Target object name'),\n viewName: z.string().optional().describe('Default list view to open. Defaults to \"all\". Ignored when `recordId` is set.'),\n /**\n * When set, navigate straight to the detail page of this specific\n * record instead of the object's list view. Supports template\n * variables `{current_user_id}` and `{current_org_id}` resolved by\n * the shell at render time. Mutually exclusive with `viewName`\n * (viewName is ignored if both are set).\n */\n recordId: z.string().optional().describe(\n 'Navigate directly to this record id instead of the list view. Supports template vars: {current_user_id}, {current_org_id}.',\n ),\n /**\n * Open the record in view (default) or edit mode. Only meaningful\n * when `recordId` is set.\n */\n recordMode: z.enum(['view', 'edit']).optional().describe(\n 'Open the record in view (default) or edit mode. Only meaningful when `recordId` is set.',\n ),\n}));\n\n/**\n * 2. Dashboard Navigation Item\n * Navigates to a specific dashboard.\n */\nexport const DashboardNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('dashboard'),\n dashboardName: z.string().describe('Target dashboard name'),\n}));\n\n/**\n * 3. Page Navigation Item\n * Navigates to a custom UI page/component.\n */\nexport const PageNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('page'),\n pageName: z.string().describe('Target custom page component name'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the page context'),\n}));\n\n/**\n * 4. URL Navigation Item\n * Navigates to an external or absolute URL.\n */\nexport const UrlNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('url'),\n url: z.string().describe('Target external URL'),\n target: z.enum(['_self', '_blank']).default('_self').describe('Link target window'),\n}));\n\n/**\n * 5. Report Navigation Item\n * Navigates to a specific report.\n */\nexport const ReportNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('report'),\n reportName: z.string().describe('Target report name'),\n}));\n\n/**\n * 6. Action Navigation Item\n * Triggers an action (e.g. opening a flow, running a script, or launching a screen action).\n */\nexport const ActionNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('action'),\n actionDef: z.object({\n actionName: z.string().describe('Action machine name to execute'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the action'),\n }).describe('Action definition to execute when clicked'),\n}));\n\n/**\n * 7. Component Navigation Item\n * Navigates to a built-in front-end component registered in the runtime's\n * `ComponentRegistry` (e.g. `metadata:directory`, `metadata:resource`,\n * `setup:permission_matrix`). Unlike `page` (which resolves a user-defined\n * Page metadata record) and `url` (external link), `component` targets\n * a first-party UI shipped with the platform — typically admin/setup\n * surfaces that have no row in any data store.\n *\n * `params` are passed verbatim to the component as React props, so the\n * same component (e.g. `metadata:resource`) can be reused across many\n * nav entries with different `type` parameters.\n *\n * @example\n * ```ts\n * { id: 'nav_objects', type: 'component', label: 'Objects',\n * componentRef: 'metadata:resource', params: { type: 'object' } }\n * ```\n */\nexport const ComponentNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('component'),\n componentRef: z.string().describe('Component registry key (e.g. \"metadata:directory\")'),\n params: z.record(z.string(), z.unknown()).optional().describe('Props passed to the component'),\n}));\n\n/**\n * 8. Group Navigation Item\n * A container for child navigation items (Sub-menu).\n * Does not perform navigation itself.\n */\nexport const GroupNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('group'),\n expanded: z.boolean().default(false).describe('Default expansion state in sidebar'),\n // children property is added in the recursive definition below\n}));\n\n/**\n * Recursive Union of all navigation item types.\n * Allows constructing an unlimited-depth navigation tree.\n */\nexport const NavigationItemSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n ObjectNavItemSchema.extend({\n children: z.array(NavigationItemSchema).optional().describe('Child navigation items (e.g. specific views)'),\n }),\n DashboardNavItemSchema,\n PageNavItemSchema,\n UrlNavItemSchema,\n ReportNavItemSchema,\n ActionNavItemSchema,\n ComponentNavItemSchema,\n GroupNavItemSchema.extend({\n children: z.array(NavigationItemSchema).describe('Child navigation items'),\n })\n ])\n);\n\n/**\n * Navigation Contribution (ADR-0029 D7)\n *\n * Lets a package inject navigation items into an app it does **not** own —\n * the UI-layer analog of object `objectExtensions`. A capability plugin\n * contributes its menu entries into a shared admin app (e.g. `setup`) so the\n * app can be a thin \"shell + group anchors\" while each plugin ships the menu\n * for the objects it owns.\n *\n * The runtime merges all contributions into the owning app's `navigation`\n * tree by **target group id + priority** (lower priority applied first,\n * mirroring object extender ordering). When `group` is omitted the items are\n * appended at the app's top level. Contributed items keep the normal nav\n * gating fields (`requiresObject` / `requiredPermissions` / `visible`), so an\n * uninstalled capability simply contributes nothing and its slot stays empty.\n *\n * @example\n * {\n * app: 'setup',\n * group: 'group_integrations',\n * priority: 100,\n * items: [\n * { id: 'nav_webhooks', type: 'object', label: 'Webhooks', objectName: 'sys_webhook', requiresObject: 'sys_webhook' },\n * ],\n * }\n */\nexport const NavigationContributionSchema = lazySchema(() => z.object({\n app: SnakeCaseIdentifierSchema.describe('Target app name to contribute navigation into (e.g. \"setup\")'),\n group: SnakeCaseIdentifierSchema.optional().describe('Target group nav-item id to append into (e.g. \"group_integrations\"); omit to append at the app top level'),\n priority: z.number().int().min(0).default(200).describe('Merge priority within the target group — lower applied first (matches object extender priority)'),\n items: z.array(NavigationItemSchema).describe('Navigation items contributed into the target app/group'),\n}).describe('A navigation contribution: a package injecting nav items into an app it does not own (ADR-0029 D7)'));\nexport type NavigationContribution = z.infer<typeof NavigationContributionSchema>;\n\n/**\n * App Branding Configuration\n * Allows configuring the look and feel of the specific app.\n */\nexport const AppBrandingSchema = lazySchema(() => z.object({\n primaryColor: z.string().optional().describe('Primary theme color hex code'),\n logo: z.string().optional().describe('Custom logo URL for this app'),\n favicon: z.string().optional().describe('Custom favicon URL for this app'),\n}));\n\n/**\n * Navigation Area Schema\n * \n * A logical grouping (zone/section) of navigation items, similar to Salesforce \"App Areas\"\n * or Dynamics 365 \"Site Map Areas\". Each area represents a business domain (e.g. Sales, Service, Settings)\n * and contains its own independent navigation tree.\n * \n * Areas allow large applications to partition navigation by business function while\n * keeping a single AppSchema definition. The runtime may render areas as top-level tabs,\n * sidebar sections, or a switchable navigation context.\n * \n * @example\n * ```ts\n * const salesArea: NavigationArea = {\n * id: 'area_sales',\n * label: 'Sales',\n * icon: 'briefcase',\n * order: 1,\n * navigation: [\n * { id: 'nav_leads', type: 'object', label: 'Leads', objectName: 'lead' },\n * { id: 'nav_opportunities', type: 'object', label: 'Opportunities', objectName: 'opportunity' },\n * ],\n * };\n * ```\n */\nexport const NavigationAreaSchema = lazySchema(() => z.object({\n /** Unique area identifier */\n id: SnakeCaseIdentifierSchema.describe('Unique area identifier (lowercase snake_case)'),\n\n /** Display label */\n label: I18nLabelSchema.describe('Area display label'),\n\n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Area icon name'),\n\n /** Sort order among areas (lower = first) */\n order: z.number().optional().describe('Sort order among areas (lower = first)'),\n\n /** Area description */\n description: I18nLabelSchema.optional().describe('Area description'),\n\n /** \n * Visibility condition.\n * Formula expression returning boolean.\n */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL) for this area.'),\n\n /** Permissions required to access this area */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this area'),\n\n /** Navigation items within this area */\n navigation: z.array(NavigationItemSchema).describe('Navigation items within this area'),\n}));\n\n/**\n * App Context Selector Schema\n *\n * Declares a sidebar-level \"scope\" dropdown (e.g. a Package filter, an\n * Environment switcher, a Locale picker) whose **current value is exposed\n * as a navigation template variable** named after `id`.\n *\n * This is the metadata-driven way to add a control at the top of the\n * navigation that transparently scopes every child navigation item —\n * without wiring the value into each item by hand. The shell:\n * 1. Renders the dropdown (options pulled from `optionsSource.endpoint`).\n * 2. Holds the selected value (persisted per `persist`).\n * 3. Substitutes `{<id>}` into any nav item's `params` / `recordId`\n * exactly like the built-in `{current_user_id}` / `{current_org_id}`\n * variables (see `ObjectNavItem.recordId`).\n *\n * @example Package filter for the Studio workbench\n * ```ts\n * contextSelectors: [{\n * id: 'active_package',\n * label: 'Package',\n * icon: 'package',\n * optionsSource: {\n * endpoint: '/api/v1/packages',\n * valueKey: 'manifest.id',\n * labelKey: 'manifest.name',\n * // Only offer third-party / custom (project-scoped) packages;\n * // hide the platform's own system/cloud kernel packages.\n * filter: [{ key: 'manifest.scope', op: 'nin', value: ['system', 'cloud'] }],\n * },\n * }]\n * // …then in nav items:\n * { id: 'nav_objects', type: 'component', componentRef: 'metadata:resource',\n * params: { type: 'object', package: '{active_package}' } }\n * ```\n */\nexport const AppContextSelectorSchema = lazySchema(() => z.object({\n /**\n * Identifier — also the template-variable name the selected value is\n * exposed under. Reference it in nav items as `{<id>}`\n * (e.g. `id: 'active_package'` → `{active_package}`).\n */\n id: SnakeCaseIdentifierSchema.describe('Selector id; selected value is exposed as the nav template var {<id>}'),\n\n /** Display label for the dropdown. */\n label: I18nLabelSchema.describe('Dropdown label'),\n\n /** Icon name (Lucide). */\n icon: z.string().optional().describe('Icon name'),\n\n /**\n * Where the dropdown options come from. The shell fetches `endpoint`\n * and maps each row to `{ value: row[valueKey], label: row[labelKey] }`.\n * Re-uses existing REST surfaces (e.g. `/api/v1/packages`) so no\n * bespoke option API is required.\n */\n optionsSource: z.object({\n endpoint: z.string().describe('REST endpoint returning the option rows (e.g. /api/v1/packages)'),\n valueKey: z.string().default('id').describe('Row property used as the option value (dotted path allowed, e.g. \"manifest.id\")'),\n labelKey: z.string().default('name').describe('Row property used as the option label (dotted path allowed, e.g. \"manifest.name\")'),\n /**\n * Optional predicates applied to each fetched row before it becomes\n * an option. All predicates must pass (logical AND). Keys are dotted\n * paths so nested fields (e.g. `manifest.scope`) can be reached.\n *\n * This keeps shared REST surfaces (e.g. `/api/v1/packages`) generic\n * while letting an individual selector narrow the list. For example,\n * the Studio package scope hides platform/kernel packages so only\n * `project`-scoped (third-party / custom) packages are selectable —\n * the scope dropdown is a developer affordance, not a place to\n * surface the platform's own internal `system`/`cloud` packages:\n *\n * ```ts\n * filter: [{ key: 'manifest.scope', op: 'nin', value: ['system', 'cloud'] }]\n * ```\n */\n filter: z.array(z.object({\n key: z.string().describe('Dotted path on each row to compare (e.g. \"manifest.scope\")'),\n op: z.enum(['eq', 'ne', 'in', 'nin']).default('eq')\n .describe('Comparison operator: eq | ne | in | nin'),\n value: z.union([z.string(), z.array(z.string())])\n .describe('Comparison value (string for eq/ne, string[] for in/nin)'),\n })).optional().describe('Predicates (AND) each option row must satisfy'),\n }).describe('Option data source'),\n\n /** Whether to prepend an \"All\" option that clears the scope. */\n includeAll: z.boolean().default(true).describe('Prepend an \"All\" option that clears the scope'),\n\n /** Value emitted when \"All\" is selected (empty string = no filter). */\n allValue: z.string().default('').describe('Template value when \"All\" is selected (empty = no filter)'),\n\n /** How the selection is persisted across navigation. */\n persist: z.enum(['query', 'session', 'none']).default('query')\n .describe('Persist selection via URL query, sessionStorage, or not at all'),\n\n /** Where the dropdown is rendered. */\n placement: z.enum(['sidebar_header', 'topbar']).default('sidebar_header')\n .describe('Render location in the app chrome'),\n}));\n\nexport type AppContextSelector = z.infer<typeof AppContextSelectorSchema>;\n\n/**\n * Schema for Applications (Apps).\n * A logical container for business functionality (e.g., \"Sales CRM\", \"HR Portal\").\n * \n * **NAMING CONVENTION:**\n * App names are used in URLs and routing and must be lowercase snake_case.\n * Prefix with 'app_' is recommended for clarity.\n * \n * @example Good app names\n * - 'app_crm'\n * - 'app_finance'\n * - 'app_portal'\n * - 'sales_app'\n * \n * @example Bad app names (will be rejected)\n * - 'CRM' (uppercase)\n * - 'FinanceApp' (mixed case)\n * - 'Sales App' (spaces)\n */\n/**\n * App Configuration Schema\n * Defines a business application container, including its navigation, branding, and permissions.\n * \n * The App is the top-level navigation shell. The `navigation[]` field holds the complete\n * sidebar tree with unlimited nesting depth via `type: 'group'` items. Pages are referenced\n * by name via `type: 'page'` items and defined independently.\n * \n * @example CRM App with nested navigation tree\n * {\n * name: \"crm\",\n * label: \"Sales CRM\",\n * icon: \"briefcase\",\n * navigation: [\n * { type: \"group\", id: \"grp_sales\", label: \"Sales Cloud\", expanded: true, children: [\n * { type: \"page\", id: \"nav_pipeline\", label: \"Pipeline\", pageName: \"page_pipeline\" },\n * { type: \"page\", id: \"nav_accounts\", label: \"Accounts\", pageName: \"page_accounts\" },\n * ]},\n * { type: \"page\", id: \"nav_settings\", label: \"Settings\", pageName: \"admin_settings\" },\n * ]\n * }\n */\nexport const AppSchema = lazySchema(() => z.object({\n /** Machine name (id) */\n name: SnakeCaseIdentifierSchema.describe('App unique machine name (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('App display label'),\n\n /** App version */\n version: z.string().optional().describe('App version'),\n \n /** Description */\n description: I18nLabelSchema.optional().describe('App description'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('App icon used in the App Launcher'),\n \n /** Branding/Theming Configuration */\n branding: AppBrandingSchema.optional().describe('App-specific branding'),\n \n /** Application status */\n active: z.boolean().optional().default(true).describe('Whether the app is enabled'),\n\n /** Is this the default app for new users? */\n isDefault: z.boolean().optional().default(false).describe('Is default app'),\n\n /**\n * Hide this app from the top-level App Switcher.\n *\n * Hidden apps stay fully routable and permission-checked — they just\n * don't appear in the apps dropdown. The shell is expected to surface\n * them through the avatar / user dropdown instead, so this is the\n * right knob for personal-settings-style apps (\"Account\") that would\n * feel out of place next to business apps (CRM, HR, Setup).\n *\n * Mirrors GitHub Settings / Google account chip / Salesforce\n * \"Personal Settings\" — visible to every user, but reached from the\n * avatar rather than the app launcher.\n */\n hidden: z.boolean().optional()\n .describe('Hide from the App Switcher; the shell surfaces hidden apps via the avatar menu instead'),\n \n /** \n * Full Navigation Tree — supports unlimited nesting depth.\n * Pages are referenced by name via `type: 'page'` items.\n * Groups can contain other groups for arbitrary sidebar depth.\n * \n * For simple apps, use `navigation` directly.\n * For enterprise apps with multiple business domains, use `areas` instead.\n */\n navigation: z.array(NavigationItemSchema).optional()\n .describe('Full navigation tree for the app sidebar'),\n\n /**\n * Navigation Areas — partitions navigation by business domain.\n * Each area defines an independent navigation tree (e.g. Sales, Service, Settings).\n * When areas are defined, they take precedence over the top-level `navigation` array.\n * \n * @example\n * ```ts\n * areas: [\n * { id: 'area_sales', label: 'Sales', icon: 'briefcase', order: 1, navigation: [...] },\n * { id: 'area_service', label: 'Service', icon: 'headset', order: 2, navigation: [...] },\n * ]\n * ```\n */\n areas: z.array(NavigationAreaSchema).optional()\n .describe('Navigation areas for partitioning navigation by business domain'),\n\n /**\n * App-level context selectors — sidebar/topbar \"scope\" dropdowns whose\n * selected value is injected into navigation items as a template\n * variable (`{<id>}`). Use to add a Package / Environment / Locale\n * filter that transparently scopes every child nav item. See\n * {@link AppContextSelectorSchema}.\n */\n contextSelectors: z.array(AppContextSelectorSchema).optional()\n .describe('App-level scope dropdowns whose value is injected into nav items as {<id>} template vars'),\n \n /** \n * App-level Home Page Override\n * ID of the navigation item to act as the landing page.\n * If not set, usually defaults to the first navigation item.\n */\n homePageId: z.string().optional().describe('ID of the navigation item to serve as landing page'),\n\n /** \n * Access Control\n * List of permissions required to access this app.\n * Modern replacement for role/profile based assignment.\n * Example: [\"app.access.crm\"]\n */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this app'),\n \n /** \n * Package Components (For config file convenience)\n * In a real monorepo these might be auto-discovered, but here we allow explicit registration.\n */\n objects: z.array(z.unknown()).optional().describe('Objects belonging to this app'),\n apis: z.array(z.unknown()).optional().describe('Custom APIs belonging to this app'),\n\n /** Sharing configuration for public access */\n sharing: SharingConfigSchema.optional().describe('Public sharing configuration'),\n\n /** Embed configuration for iframe embedding */\n embed: EmbedConfigSchema.optional().describe('Iframe embedding configuration'),\n\n /** Mobile navigation mode */\n mobileNavigation: z.object({\n mode: z.enum(['drawer', 'bottom_nav', 'hamburger']).default('drawer')\n .describe('Mobile navigation mode: drawer sidebar, bottom navigation bar, or hamburger menu'),\n bottomNavItems: z.array(z.string()).optional()\n .describe('Navigation item IDs to show in bottom nav (max 5)'),\n }).optional().describe('Mobile-specific navigation configuration'),\n\n /**\n * Default AI Copilot for this app.\n *\n * When set, the ambient chat endpoint (`POST /api/v1/ai/chat` with\n * `context.appName`) auto-resolves to this agent without the user\n * having to pick from a list. The agent's `skills[]` are loaded\n * from the SkillRegistry and exposed to the LLM.\n *\n * Mirrors the Salesforce Agentforce / ServiceNow Now Assist pattern\n * where each application surface has one ambient copilot.\n *\n * @example\n * ```ts\n * defineApp({ name: 'crm', defaultAgent: 'sales_copilot', ... })\n * ```\n */\n defaultAgent: SnakeCaseIdentifierSchema.optional()\n .describe('Name of the default AI agent for this app (used by the ambient chat endpoint)'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the application'),\n\n /**\n * ADR-0010 §3.7 — Package-level protection envelope. Package\n * authors declare lock policy here; the loader translates it\n * into the private `_lock` envelope at registration time and\n * strips this block before persistence. See\n * `shared/protection.zod.ts`.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this app.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n}));\n\n/**\n * App Factory Helper\n */\nexport const App = {\n create: (config: z.input<typeof AppSchema>): App => AppSchema.parse(config),\n} as const;\n\n/**\n * Type-safe factory for creating application definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example CRM App with nested navigation tree\n * ```ts\n * const crmApp = defineApp({\n * name: 'crm',\n * label: 'Sales CRM',\n * navigation: [\n * { id: 'grp_sales', type: 'group', label: 'Sales Cloud', expanded: true, children: [\n * { id: 'nav_pipeline', type: 'page', label: 'Pipeline', pageName: 'page_pipeline' },\n * { id: 'nav_accounts', type: 'page', label: 'Accounts', pageName: 'page_accounts' },\n * ]},\n * { id: 'nav_settings', type: 'page', label: 'Settings', pageName: 'admin_settings' },\n * ],\n * });\n * ```\n */\nexport function defineApp(config: z.input<typeof AppSchema>): App {\n return AppSchema.parse(config);\n}\n\n// Main Types\nexport type App = z.infer<typeof AppSchema>;\nexport type AppInput = z.input<typeof AppSchema>;\nexport type AppBranding = z.infer<typeof AppBrandingSchema>;\nexport type NavigationItem = z.infer<typeof NavigationItemSchema>;\nexport type NavigationArea = z.infer<typeof NavigationAreaSchema>;\n\n// Discriminated Item Types (Helper exports)\nexport type ObjectNavItem = z.infer<typeof ObjectNavItemSchema>;\nexport type DashboardNavItem = z.infer<typeof DashboardNavItemSchema>;\nexport type PageNavItem = z.infer<typeof PageNavItemSchema>;\nexport type UrlNavItem = z.infer<typeof UrlNavItemSchema>;\nexport type ReportNavItem = z.infer<typeof ReportNavItemSchema>;\nexport type ActionNavItem = z.infer<typeof ActionNavItemSchema>;\nexport type ComponentNavItem = z.infer<typeof ComponentNavItemSchema>;\nexport type GroupNavItem = z.infer<typeof GroupNavItemSchema> & { children: NavigationItem[] };\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Field-level encryption protocol\n * GDPR/HIPAA/PCI-DSS compliant\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const EncryptionAlgorithmSchema = lazySchema(() => z.enum([\n 'aes-256-gcm',\n 'aes-256-cbc',\n 'chacha20-poly1305',\n]).describe('Supported encryption algorithm'));\n\nexport type EncryptionAlgorithm = z.infer<typeof EncryptionAlgorithmSchema>;\n\nexport const KeyManagementProviderSchema = lazySchema(() => z.enum([\n 'local',\n 'aws-kms',\n 'azure-key-vault',\n 'gcp-kms',\n 'hashicorp-vault',\n]).describe('Key management service provider'));\n\nexport type KeyManagementProvider = z.infer<typeof KeyManagementProviderSchema>;\n\nexport const KeyRotationPolicySchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable automatic key rotation'),\n frequencyDays: z.number().min(1).default(90).describe('Rotation frequency in days'),\n retainOldVersions: z.number().default(3).describe('Number of old key versions to retain'),\n autoRotate: z.boolean().default(true).describe('Automatically rotate without manual approval'),\n}).describe('Policy for automatic encryption key rotation'));\n\nexport type KeyRotationPolicy = z.infer<typeof KeyRotationPolicySchema>;\nexport type KeyRotationPolicyInput = z.input<typeof KeyRotationPolicySchema>;\n\nexport const EncryptionConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable field-level encryption'),\n algorithm: EncryptionAlgorithmSchema.default('aes-256-gcm').describe('Encryption algorithm'),\n keyManagement: z.object({\n provider: KeyManagementProviderSchema.describe('Key management service provider'),\n keyId: z.string().optional().describe('Key identifier in the provider'),\n rotationPolicy: KeyRotationPolicySchema.optional().describe('Key rotation policy'),\n }).describe('Key management configuration'),\n scope: z.enum(['field', 'record', 'table', 'database']).describe('Encryption scope level'),\n deterministicEncryption: z.boolean().default(false).describe('Allows equality queries on encrypted data'),\n searchableEncryption: z.boolean().default(false).describe('Allows search on encrypted data'),\n}).describe('Field-level encryption configuration'));\n\nexport type EncryptionConfig = z.infer<typeof EncryptionConfigSchema>;\nexport type EncryptionConfigInput = z.input<typeof EncryptionConfigSchema>;\n\nexport const FieldEncryptionSchema = lazySchema(() => z.object({\n fieldName: z.string().describe('Name of the field to encrypt'),\n encryptionConfig: EncryptionConfigSchema.describe('Encryption settings for this field'),\n indexable: z.boolean().default(false).describe('Allow indexing on encrypted field'),\n}).describe('Per-field encryption assignment'));\n\nexport type FieldEncryption = z.infer<typeof FieldEncryptionSchema>;\nexport type FieldEncryptionInput = z.input<typeof FieldEncryptionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Data masking protocol for PII protection\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const MaskingStrategySchema = lazySchema(() => z.enum([\n 'redact', // Complete redaction: ****\n 'partial', // Partial masking: 138****5678\n 'hash', // Hash value: sha256(value)\n 'tokenize', // Tokenization: token-12345\n 'randomize', // Randomize: generate random value\n 'nullify', // Null value: null\n 'substitute', // Substitute with dummy data\n]).describe('Data masking strategy for PII protection'));\n\nexport type MaskingStrategy = z.infer<typeof MaskingStrategySchema>;\n\nexport const MaskingRuleSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to apply masking to'),\n strategy: MaskingStrategySchema.describe('Masking strategy to use'),\n pattern: z.string().optional().describe('Regex pattern for partial masking'),\n preserveFormat: z.boolean().default(true).describe('Keep the original data format after masking'),\n preserveLength: z.boolean().default(true).describe('Keep the original data length after masking'),\n roles: z.array(z.string()).optional().describe('Roles that see masked data'),\n exemptRoles: z.array(z.string()).optional().describe('Roles that see unmasked data'),\n}).describe('Masking rule for a single field'));\n\nexport type MaskingRule = z.infer<typeof MaskingRuleSchema>;\nexport type MaskingRuleInput = z.input<typeof MaskingRuleSchema>;\n\nexport const MaskingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable data masking'),\n rules: z.array(MaskingRuleSchema).describe('List of field-level masking rules'),\n auditUnmasking: z.boolean().default(true).describe('Log when masked data is accessed unmasked'),\n}).describe('Top-level data masking configuration for PII protection'));\n\nexport type MaskingConfig = z.infer<typeof MaskingConfigSchema>;\nexport type MaskingConfigInput = z.input<typeof MaskingConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SystemIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { EncryptionConfigSchema } from '../system/encryption.zod';\nimport { MaskingRuleSchema } from '../system/masking.zod';\n\n/**\n * Field Type Enum\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldType = z.enum([\n // Core Text\n 'text', 'textarea', 'email', 'url', 'phone', 'password',\n // Secret — reversible, encrypted-at-rest value (DB password, API key, token).\n // UNLIKE 'password' (a one-way hash owned by the auth subsystem), a 'secret'\n // is round-tripped: the engine encrypts it on write via the registered\n // ICryptoProvider, stores the ciphertext handle in `sys_secret`, persists only\n // an opaque ref on the row, and masks it on read. Fail-closed: no provider ⇒\n // writes throw rather than persist cleartext. See ADR (secret field channel).\n 'secret',\n // Rich Content\n 'markdown', 'html', 'richtext',\n // Numbers\n 'number', 'currency', 'percent', \n // Date & Time\n 'date', 'datetime', 'time',\n // Logic\n 'boolean', 'toggle', // Toggle is a distinct UI from checkbox\n // Selection\n 'select', // Single select dropdown\n 'multiselect', // Multi select (often tags)\n 'radio', // Radio group\n 'checkboxes', // Checkbox group\n // Relational\n 'lookup', 'master_detail', // Dynamic reference\n 'tree', // Hierarchical reference\n // Media\n 'image', 'file', 'avatar', 'video', 'audio',\n // Calculated / System\n 'formula', 'summary', 'autonumber',\n // Embedded structured values (stored as JSON on the parent row — no separate table / FK)\n 'composite', // Single embedded sub-object with declared sub-fields (≈ Strapi component / ACF group)\n 'repeater', // Repeating embedded sub-object array with declared sub-fields (≈ Strapi repeatable component / ACF repeater)\n 'record', // Name-keyed map of embedded sub-objects (Record<string, SubObject>). Insertion order = display order. Used for collections where each item has a stable machine name (e.g. object.fields). See ADR-0007.\n // Enhanced Types\n 'location', // GPS coordinates\n 'address', // Structured address\n 'code', // Code editor (JSON/SQL/JS)\n 'json', // Structured JSON data (untyped escape hatch)\n 'color', // Color picker\n 'rating', // Star rating\n 'slider', // Numeric slider\n 'signature', // Digital signature\n 'qrcode', // QR code / Barcode\n 'progress', // Progress bar\n 'tags', // Simple tag list\n // AI/ML Types\n 'vector', // Vector embeddings for AI/ML (semantic search, RAG)\n]);\n\nexport type FieldType = z.infer<typeof FieldType>;\n\n/**\n * Select Option Schema\n * \n * Defines option values for select/picklist fields.\n * \n * **CRITICAL RULE**: The `value` field is a machine identifier that gets stored in the database.\n * It MUST be lowercase to avoid case-sensitivity issues in queries and comparisons.\n * \n * @example Good\n * { label: 'New', value: 'new' }\n * { label: 'In Progress', value: 'in_progress' }\n * { label: 'Closed Won', value: 'closed_won' }\n * \n * @example Bad (will be rejected)\n * { label: 'New', value: 'New' } // uppercase\n * { label: 'In Progress', value: 'In Progress' } // spaces and uppercase\n * { label: 'Closed Won', value: 'Closed_Won' } // mixed case\n */\nexport const SelectOptionSchema = lazySchema(() => z.object({\n label: z.string().describe('Display label (human-readable, any case allowed)'),\n value: SystemIdentifierSchema.describe('Stored value (lowercase machine identifier)'),\n color: z.string().optional().describe('Color code for badges/charts'),\n default: z.boolean().optional().describe('Is default option'),\n}));\n\n/**\n * Location Coordinates Schema\n * GPS coordinates for location field type\n */\nexport const LocationCoordinatesSchema = lazySchema(() => z.object({\n latitude: z.number().min(-90).max(90).describe('Latitude coordinate'),\n longitude: z.number().min(-180).max(180).describe('Longitude coordinate'),\n altitude: z.number().optional().describe('Altitude in meters'),\n accuracy: z.number().optional().describe('Accuracy in meters'),\n}));\n\n/**\n * Currency Configuration Schema\n * Configuration for currency field type supporting multi-currency\n * \n * Note: Currency codes are validated by length only (3 characters) to support:\n * - Standard ISO 4217 codes (USD, EUR, CNY, etc.)\n * - Cryptocurrency codes (BTC, ETH, etc.)\n * - Custom business-specific codes\n * Stricter validation can be implemented at the application layer based on business requirements.\n */\nexport const CurrencyConfigSchema = lazySchema(() => z.object({\n precision: z.number().int().min(0).max(10).default(2).describe('Decimal precision (default: 2)'),\n currencyMode: z.enum(['dynamic', 'fixed']).default('dynamic').describe('Currency mode: dynamic (user selectable) or fixed (single currency)'),\n defaultCurrency: z.string().length(3).default('CNY').describe('Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)'),\n}));\n\n/**\n * Currency Value Schema\n * Runtime value structure for currency fields\n * \n * Note: Currency codes are validated by length only (3 characters) to support flexibility.\n * See CurrencyConfigSchema for details on currency code validation strategy.\n */\nexport const CurrencyValueSchema = lazySchema(() => z.object({\n value: z.number().describe('Monetary amount'),\n currency: z.string().length(3).describe('Currency code (ISO 4217)'),\n}));\n\n/**\n * Address Schema\n * Structured address for address field type\n */\nexport const AddressSchema = lazySchema(() => z.object({\n street: z.string().optional().describe('Street address'),\n city: z.string().optional().describe('City name'),\n state: z.string().optional().describe('State/Province'),\n postalCode: z.string().optional().describe('Postal/ZIP code'),\n country: z.string().optional().describe('Country name or code'),\n countryCode: z.string().optional().describe('ISO country code (e.g., US, GB)'),\n formatted: z.string().optional().describe('Formatted address string'),\n}));\n\n/**\n * Vector Configuration Schema\n * Configuration for vector field type supporting AI/ML embeddings\n * \n * Vector fields store numerical embeddings for semantic search, similarity matching,\n * and Retrieval-Augmented Generation (RAG) workflows.\n * \n * @example\n * // Text embeddings for semantic search\n * {\n * dimensions: 1536, // OpenAI text-embedding-ada-002\n * distanceMetric: 'cosine',\n * indexed: true\n * }\n * \n * @example\n * // Image embeddings with normalization\n * {\n * dimensions: 512, // ResNet-50\n * distanceMetric: 'euclidean',\n * normalized: true,\n * indexed: true\n * }\n */\nexport const VectorConfigSchema = lazySchema(() => z.object({\n dimensions: z.number().int().min(1).max(10000).describe('Vector dimensionality (e.g., 1536 for OpenAI embeddings)'),\n distanceMetric: z.enum(['cosine', 'euclidean', 'dotProduct', 'manhattan']).default('cosine').describe('Distance/similarity metric for vector search'),\n normalized: z.boolean().default(false).describe('Whether vectors are normalized (unit length)'),\n indexed: z.boolean().default(true).describe('Whether to create a vector index for fast similarity search'),\n indexType: z.enum(['hnsw', 'ivfflat', 'flat']).optional().describe('Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)'),\n}));\n\n/**\n * File Attachment Configuration Schema\n * Configuration for file and attachment field types\n * \n * Provides comprehensive file upload capabilities with:\n * - File type restrictions (allowed/blocked)\n * - File size limits (min/max)\n * - Virus scanning integration\n * - Storage provider integration\n * - Image-specific features (dimensions, thumbnails)\n * \n * @example Basic file upload with size limit\n * {\n * maxSize: 10485760, // 10MB\n * allowedTypes: ['.pdf', '.docx', '.xlsx'],\n * virusScan: true\n * }\n * \n * @example Image upload with validation\n * {\n * maxSize: 5242880, // 5MB\n * allowedTypes: ['.jpg', '.jpeg', '.png', '.webp'],\n * imageValidation: {\n * maxWidth: 4096,\n * maxHeight: 4096,\n * generateThumbnails: true\n * }\n * }\n */\nexport const FileAttachmentConfigSchema = lazySchema(() => z.object({\n /** File Size Limits */\n minSize: z.number().min(0).optional().describe('Minimum file size in bytes'),\n maxSize: z.number().min(1).optional().describe('Maximum file size in bytes (e.g., 10485760 = 10MB)'),\n \n /** File Type Restrictions */\n allowedTypes: z.array(z.string()).optional().describe('Allowed file extensions (e.g., [\".pdf\", \".docx\", \".jpg\"])'),\n blockedTypes: z.array(z.string()).optional().describe('Blocked file extensions (e.g., [\".exe\", \".bat\", \".sh\"])'),\n allowedMimeTypes: z.array(z.string()).optional().describe('Allowed MIME types (e.g., [\"image/jpeg\", \"application/pdf\"])'),\n blockedMimeTypes: z.array(z.string()).optional().describe('Blocked MIME types'),\n \n /** Virus Scanning */\n virusScan: z.boolean().default(false).describe('Enable virus scanning for uploaded files'),\n virusScanProvider: z.enum(['clamav', 'virustotal', 'metadefender', 'custom']).optional().describe('Virus scanning service provider'),\n virusScanOnUpload: z.boolean().default(true).describe('Scan files immediately on upload'),\n quarantineOnThreat: z.boolean().default(true).describe('Quarantine files if threat detected'),\n \n /** Storage Configuration */\n storageProvider: z.string().optional().describe('Object storage provider name (references ObjectStorageConfig)'),\n storageBucket: z.string().optional().describe('Target bucket name'),\n storagePrefix: z.string().optional().describe('Storage path prefix (e.g., \"uploads/documents/\")'),\n \n /** Image-Specific Validation */\n imageValidation: z.object({\n minWidth: z.number().min(1).optional().describe('Minimum image width in pixels'),\n maxWidth: z.number().min(1).optional().describe('Maximum image width in pixels'),\n minHeight: z.number().min(1).optional().describe('Minimum image height in pixels'),\n maxHeight: z.number().min(1).optional().describe('Maximum image height in pixels'),\n aspectRatio: z.string().optional().describe('Required aspect ratio (e.g., \"16:9\", \"1:1\")'),\n generateThumbnails: z.boolean().default(false).describe('Auto-generate thumbnails'),\n thumbnailSizes: z.array(z.object({\n name: z.string().describe('Thumbnail variant name (e.g., \"small\", \"medium\", \"large\")'),\n width: z.number().min(1).describe('Thumbnail width in pixels'),\n height: z.number().min(1).describe('Thumbnail height in pixels'),\n crop: z.boolean().default(false).describe('Crop to exact dimensions'),\n })).optional().describe('Thumbnail size configurations'),\n preserveMetadata: z.boolean().default(false).describe('Preserve EXIF metadata'),\n autoRotate: z.boolean().default(true).describe('Auto-rotate based on EXIF orientation'),\n }).optional().describe('Image-specific validation rules'),\n \n /** Upload Behavior */\n allowMultiple: z.boolean().default(false).describe('Allow multiple file uploads (overrides field.multiple)'),\n allowReplace: z.boolean().default(true).describe('Allow replacing existing files'),\n allowDelete: z.boolean().default(true).describe('Allow deleting uploaded files'),\n requireUpload: z.boolean().default(false).describe('Require at least one file when field is required'),\n \n /** Metadata Extraction */\n extractMetadata: z.boolean().default(true).describe('Extract file metadata (name, size, type, etc.)'),\n extractText: z.boolean().default(false).describe('Extract text content from documents (OCR/parsing)'),\n \n /** Versioning */\n versioningEnabled: z.boolean().default(false).describe('Keep previous versions of replaced files'),\n maxVersions: z.number().min(1).optional().describe('Maximum number of versions to retain'),\n \n /** Access Control */\n publicRead: z.boolean().default(false).describe('Allow public read access to uploaded files'),\n presignedUrlExpiry: z.number().min(60).max(604800).default(3600).describe('Presigned URL expiration in seconds (default: 1 hour)'),\n}).refine((data) => {\n // Validate minSize is less than or equal to maxSize\n if (data.minSize !== undefined && data.maxSize !== undefined && data.minSize > data.maxSize) {\n return false;\n }\n return true;\n}, {\n message: 'minSize must be less than or equal to maxSize',\n}).refine((data) => {\n // Validate virusScanProvider requires virusScan to be enabled\n if (data.virusScanProvider !== undefined && data.virusScan !== true) {\n return false;\n }\n return true;\n}, {\n message: 'virusScanProvider requires virusScan to be enabled',\n}));\n\n/**\n * Data Quality Rules Schema\n * Defines data quality validation and monitoring for fields\n * \n * @example Unique SSN field with completeness requirement\n * {\n * uniqueness: true,\n * completeness: 0.95, // 95% of records must have this field\n * accuracy: {\n * source: 'government_db',\n * threshold: 0.98\n * }\n * }\n */\nexport const DataQualityRulesSchema = lazySchema(() => z.object({\n /** Enforce uniqueness constraint */\n uniqueness: z.boolean().default(false).describe('Enforce unique values across all records'),\n \n /** Completeness ratio (0-1) indicating minimum percentage of non-null values */\n completeness: z.number().min(0).max(1).default(0).describe('Minimum ratio of non-null values (0-1, default: 0 = no requirement)'),\n \n /** Accuracy validation against authoritative source */\n accuracy: z.object({\n source: z.string().describe('Reference data source for validation (e.g., \"api.verify.com\", \"master_data\")'),\n threshold: z.number().min(0).max(1).describe('Minimum accuracy threshold (0-1, e.g., 0.95 = 95% match required)'),\n }).optional().describe('Accuracy validation configuration'),\n}));\n\n/**\n * Computed Field Caching Schema\n * Configuration for caching computed/formula field results\n * \n * @example Cache product price with 1-hour TTL, invalidate on inventory changes\n * {\n * enabled: true,\n * ttl: 3600,\n * invalidateOn: ['inventory.quantity', 'pricing.discount']\n * }\n */\nexport const ComputedFieldCacheSchema = lazySchema(() => z.object({\n /** Enable caching for this computed field */\n enabled: z.boolean().describe('Enable caching for computed field results'),\n \n /** Time-to-live in seconds */\n ttl: z.number().min(0).describe('Cache TTL in seconds (0 = no expiration)'),\n \n /** Array of field paths that trigger cache invalidation when changed */\n invalidateOn: z.array(z.string()).describe('Field paths that invalidate cache (e.g., [\"inventory.quantity\", \"pricing.base_price\"])'),\n}));\n\n/**\n * Field Schema - Best Practice Enterprise Pattern\n */\n/**\n * Field Definition Schema\n * Defines the properties, type, and behavior of a single field (column) on an object.\n * \n * @example Lookup Field\n * {\n * name: \"account_id\",\n * label: \"Account\",\n * type: \"lookup\",\n * reference: \"accounts\",\n * required: true\n * }\n * \n * @example Select Field\n * {\n * name: \"status\",\n * label: \"Status\",\n * type: \"select\",\n * options: [\n * { label: \"Open\", value: \"open\" },\n * { label: \"Closed\", value: \"closed\" }\n * ],\n * defaultValue: \"open\"\n * }\n */\nexport const FieldSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine name (snake_case)').optional(),\n label: z.string().optional().describe('Human readable label'),\n type: FieldType.describe('Field Data Type'),\n description: z.string().optional().describe('Tooltip/Help text'),\n format: z.string().optional().describe('Format string (e.g. email, phone)'),\n\n /** Storage Layer Mapping */\n columnName: z.string().optional().describe('Physical column name in the target datasource. Defaults to the field key when not set.'),\n\n /** Database Constraints */\n required: z.boolean().default(false).describe('Is required'),\n searchable: z.boolean().default(false).describe('Is searchable'),\n multiple: z.boolean().default(false).describe('Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image.'),\n unique: z.boolean().default(false).describe('Is unique constraint'),\n defaultValue: z.unknown().optional().describe('Default value'),\n \n /** Text/String Constraints */\n maxLength: z.number().optional().describe('Max character length'),\n minLength: z.number().optional().describe('Min character length'),\n \n /** Number Constraints */\n precision: z.number().optional().describe('Total digits'),\n scale: z.number().optional().describe('Decimal places'),\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n\n /** Selection Options */\n options: z.array(SelectOptionSchema).optional().describe('Static options for select/multiselect'),\n\n /**\n * Relationship Config\n * \n * Used by `lookup` and `master_detail` field types to define cross-object references.\n * The `reference` property is **required** for these types — it identifies the target\n * object whose records this field links to. The engine uses `reference` during $expand\n * post-processing to resolve foreign key IDs into full related objects via batch queries.\n * \n * For `master_detail` fields, the parent record controls the lifecycle of child records\n * (e.g., cascade delete). For `lookup` fields, the reference is a soft link.\n */\n reference: z.string().optional().describe(\n 'Target object name (snake_case) for lookup/master_detail fields. '\n + 'Required for relationship types. Used by $expand to resolve foreign key IDs into full objects.'\n ),\n referenceFilters: z.array(z.string()).optional().describe('Filters applied to lookup dialogs (e.g. \"active = true\")'),\n writeRequiresMasterRead: z.boolean().optional().describe('If true, user needs read access to master record to edit this field'),\n deleteBehavior: z.enum(['set_null', 'cascade', 'restrict']).optional().default('set_null').describe('What happens if referenced record is deleted'),\n /**\n * Master-detail INLINE EDITING. On a child's `master_detail`/`lookup` field\n * (whose `reference` is the parent object), declare that \"this child is\n * entered/edited inline within the parent's form\". The parent's standard\n * create/edit form then renders the children and saves parent + children in\n * ONE atomic transaction — no form view config and no bespoke page. The intent\n * lives here in the data model; forms derive the UI.\n *\n * The value also selects the EDITING FORM FACTOR:\n * - `true` → auto: the UI picks `grid` or `form` from the child's shape\n * (rich types / many fields → `form`, else `grid`).\n * - `'grid'` → an editable line-item grid (fast bulk entry; thin children\n * like invoice lines / order items).\n * - `'form'` → a compact read-only list; \"Add\" / per-row edit opens the\n * child's FULL form (fat children with rich types, e.g. long\n * text, attachments, many fields).\n * Use for true line-item/composition children; leave off for associations\n * (comments, attachments) — surface those as detail-page related lists.\n */\n inlineEdit: z.union([z.boolean(), z.enum(['grid', 'form'])]).optional().describe('Edit these child records inline within the parent\\'s form (atomic master-detail). true = auto-pick grid/form by child shape; \\'grid\\' = editable line-item grid; \\'form\\' = list + per-row full form.'),\n /** Optional section title for the inline grid (defaults to the child object label). */\n inlineTitle: z.string().optional().describe('Title for the inline master-detail grid'),\n /** Optional explicit grid columns for the inline editor (derived from the child object when omitted). */\n inlineColumns: z.array(z.any()).optional().describe('Explicit columns for the inline grid (derived from the child object when omitted)'),\n /** Optional numeric child field summed for the inline grid running total. */\n inlineAmountField: z.string().optional().describe('Numeric child field summed for the inline grid total'),\n\n /**\n * Detail-page RELATED LIST — the read-side mirror of `inlineEdit`. On a\n * child's `master_detail`/`lookup` field (whose `reference` is the parent),\n * this governs whether/how the child collection appears as a related list on\n * the parent's record DETAIL page. Owned children (`master_detail`) and\n * `lookup` children are shown by default (derived from the relationship);\n * set `relatedList: false` to suppress a child from the detail page (e.g.\n * noisy audit/association links you don't want surfaced). Where `inlineEdit`\n * pulls a child INTO the parent's entry form (write side), `relatedList`\n * controls its appearance on the parent's detail page (read side). The intent\n * lives here in the data model; the detail page derives the UI.\n */\n relatedList: z.boolean().optional().describe('Show this child collection as a related list on the parent\\'s detail page (read-side mirror of inlineEdit). Defaults to shown for master_detail/lookup; set false to suppress.'),\n /** Optional section title for the detail-page related list (defaults to the child object label). */\n relatedListTitle: z.string().optional().describe('Title for the detail-page related list'),\n /** Optional explicit columns for the detail-page related list (derived from the child object when omitted). */\n relatedListColumns: z.array(z.any()).optional().describe('Explicit columns for the detail-page related list (derived from the child object when omitted)'),\n\n /** Calculation — CEL formula. Plain string accepted for back-compat; build emits canonical envelope. */\n expression: ExpressionInputSchema.optional().describe('Formula expression (CEL). e.g. F`record.amount * 0.1`'),\n summaryOperations: z.object({\n object: z.string().describe('Source child object name for roll-up'),\n field: z.string().describe('Field on child object to aggregate (ignored for count)'),\n function: z.enum(['count', 'sum', 'min', 'max', 'avg']).describe('Aggregation function to apply'),\n relationshipField: z.string().optional().describe('FK field on the child pointing back to this parent. Auto-detected from the child\\'s lookup/master_detail field referencing this object when omitted; set explicitly only when the child has more than one such reference.'),\n }).optional().describe('Roll-up summary definition. The engine recomputes the value when child records are inserted/updated/deleted.'),\n\n /** Enhanced Field Type Configurations */\n // Code field config\n language: z.string().optional().describe('Programming language for syntax highlighting (e.g., javascript, python, sql)'),\n theme: z.string().optional().describe('Code editor theme (e.g., dark, light, monokai)'),\n lineNumbers: z.boolean().optional().describe('Show line numbers in code editor'),\n \n // Rating field config\n maxRating: z.number().optional().describe('Maximum rating value (default: 5)'),\n allowHalf: z.boolean().optional().describe('Allow half-star ratings'),\n \n // Location field config\n displayMap: z.boolean().optional().describe('Display map widget for location field'),\n allowGeocoding: z.boolean().optional().describe('Allow address-to-coordinate conversion'),\n \n // Address field config\n addressFormat: z.enum(['us', 'uk', 'international']).optional().describe('Address format template'),\n \n // Color field config\n colorFormat: z.enum(['hex', 'rgb', 'rgba', 'hsl']).optional().describe('Color value format'),\n allowAlpha: z.boolean().optional().describe('Allow transparency/alpha channel'),\n presetColors: z.array(z.string()).optional().describe('Preset color options'),\n \n // Slider field config\n step: z.number().optional().describe('Step increment for slider (default: 1)'),\n showValue: z.boolean().optional().describe('Display current value on slider'),\n marks: z.record(z.string(), z.string()).optional().describe('Custom marks/labels at specific values (e.g., {0: \"Low\", 50: \"Medium\", 100: \"High\"})'),\n \n // QR Code / Barcode field config\n // Note: qrErrorCorrection is only applicable when barcodeFormat='qr'\n // Runtime validation should enforce this constraint\n barcodeFormat: z.enum(['qr', 'ean13', 'ean8', 'code128', 'code39', 'upca', 'upce']).optional().describe('Barcode format type'),\n qrErrorCorrection: z.enum(['L', 'M', 'Q', 'H']).optional().describe('QR code error correction level (L=7%, M=15%, Q=25%, H=30%). Only applicable when barcodeFormat is \"qr\"'),\n displayValue: z.boolean().optional().describe('Display human-readable value below barcode/QR code'),\n allowScanning: z.boolean().optional().describe('Enable camera scanning for barcode/QR code input'),\n\n // Currency field config\n currencyConfig: CurrencyConfigSchema.optional().describe('Configuration for currency field type'),\n\n // Vector field config\n vectorConfig: VectorConfigSchema.optional().describe('Configuration for vector field type (AI/ML embeddings)'),\n\n // File attachment field config\n fileAttachmentConfig: FileAttachmentConfigSchema.optional().describe('Configuration for file and attachment field types'),\n\n /** Enhanced Security & Compliance */\n // Encryption configuration\n encryptionConfig: EncryptionConfigSchema.optional().describe('Field-level encryption configuration for sensitive data (GDPR/HIPAA/PCI-DSS)'),\n \n // Data masking rules\n maskingRule: MaskingRuleSchema.optional().describe('Data masking rules for PII protection'),\n \n // Audit trail\n auditTrail: z.boolean().default(false).describe('Enable detailed audit trail for this field (tracks all changes with user and timestamp)'),\n \n /** Field Dependencies & Relationships */\n // Field dependencies\n dependencies: z.array(z.string()).optional().describe('Array of field names that this field depends on (for formulas, visibility rules, etc.)'),\n \n /** Computed Field Optimization */\n // Computed field caching\n cached: ComputedFieldCacheSchema.optional().describe('Caching configuration for computed/formula fields'),\n \n /** Data Quality & Governance */\n // Data quality rules\n dataQuality: DataQualityRulesSchema.optional().describe('Data quality validation and monitoring rules'),\n\n /** Layout & Grouping */\n group: z.string().optional().describe('Field group name for organizing fields in forms and layouts (e.g., \"contact_info\", \"billing\", \"system\")'),\n\n /**\n * Conditional field rules (CEL predicates over `record`). Evaluated on BOTH\n * sides: the client form toggles the field's visibility / read-only / required\n * state live as the record changes (UX), and the server enforces\n * `requiredWhen` and ignores writes to a field whose `readonlyWhen` is TRUE\n * (so the rule can't be bypassed). e.g. `P\\`record.status == 'paid'\\``.\n */\n visibleWhen: ExpressionInputSchema.optional().describe(\"Predicate (CEL) — field is shown only when TRUE (else hidden). e.g. P`record.type == 'invoice'`\"),\n readonlyWhen: ExpressionInputSchema.optional().describe(\"Predicate (CEL) — field is read-only when TRUE. e.g. P`record.status == 'paid'`\"),\n requiredWhen: ExpressionInputSchema.optional().describe(\"Predicate (CEL) — field is required when TRUE. Canonical name for `conditionalRequired`.\"),\n\n /** Conditional Requirements\n * @deprecated Alias of `requiredWhen` — kept for back-compat. */\n conditionalRequired: ExpressionInputSchema.optional().describe('Predicate (CEL) — field is required when TRUE. Alias of `requiredWhen`.'),\n\n /** Security & Visibility */\n hidden: z.boolean().default(false).describe('Hidden from default UI'),\n readonly: z.boolean().default(false).describe('Read-only in UI'),\n system: z.boolean().optional().describe('Auto-injected system/audit field (e.g. created_at, updated_by, organization_id). Tools that surface system fields separately from author-declared business fields should branch on this flag.'),\n sortable: z.boolean().optional().default(true).describe('Whether field is sortable in list views'),\n inlineHelpText: z.string().optional().describe('Help text displayed below the field in forms'),\n trackFeedHistory: z.boolean().optional().describe('Track field changes in Chatter/activity feed (Salesforce pattern)'),\n caseSensitive: z.boolean().optional().describe('Whether text comparisons are case-sensitive'),\n autonumberFormat: z.string().optional().describe('Auto-number display format pattern (e.g., \"CASE-{0000}\")'),\n /** Indexing */\n index: z.boolean().default(false).describe('Create standard database index'),\n externalId: z.boolean().default(false).describe('Is external ID for upsert operations'),\n}));\n\nexport type Field = z.infer<typeof FieldSchema>;\nexport type SelectOption = z.infer<typeof SelectOptionSchema>;\nexport type LocationCoordinates = z.infer<typeof LocationCoordinatesSchema>;\nexport type Address = z.infer<typeof AddressSchema>;\nexport type CurrencyConfig = z.infer<typeof CurrencyConfigSchema>;\nexport type CurrencyConfigInput = z.input<typeof CurrencyConfigSchema>;\nexport type CurrencyValue = z.infer<typeof CurrencyValueSchema>;\nexport type VectorConfig = z.infer<typeof VectorConfigSchema>;\nexport type VectorConfigInput = z.input<typeof VectorConfigSchema>;\nexport type FileAttachmentConfig = z.infer<typeof FileAttachmentConfigSchema>;\nexport type FileAttachmentConfigInput = z.input<typeof FileAttachmentConfigSchema>;\nexport type DataQualityRules = z.infer<typeof DataQualityRulesSchema>;\nexport type DataQualityRulesInput = z.input<typeof DataQualityRulesSchema>;\nexport type ComputedFieldCache = z.infer<typeof ComputedFieldCacheSchema>;\n\n/**\n * Field Factory Helper\n */\nexport type FieldInput = Omit<Partial<Field>, 'type'>;\n\nexport const Field = {\n text: (config: FieldInput = {}) => ({ type: 'text', ...config } as const),\n textarea: (config: FieldInput = {}) => ({ type: 'textarea', ...config } as const),\n number: (config: FieldInput = {}) => ({ type: 'number', ...config } as const),\n boolean: (config: FieldInput = {}) => ({ type: 'boolean', ...config } as const),\n date: (config: FieldInput = {}) => ({ type: 'date', ...config } as const),\n datetime: (config: FieldInput = {}) => ({ type: 'datetime', ...config } as const),\n currency: (config: FieldInput = {}) => ({ type: 'currency', ...config } as const),\n percent: (config: FieldInput = {}) => ({ type: 'percent', ...config } as const),\n url: (config: FieldInput = {}) => ({ type: 'url', ...config } as const),\n email: (config: FieldInput = {}) => ({ type: 'email', ...config } as const),\n phone: (config: FieldInput = {}) => ({ type: 'phone', ...config } as const),\n image: (config: FieldInput = {}) => ({ type: 'image', ...config } as const),\n file: (config: FieldInput = {}) => ({ type: 'file', ...config } as const),\n avatar: (config: FieldInput = {}) => ({ type: 'avatar', ...config } as const),\n formula: (config: FieldInput = {}) => ({ type: 'formula', ...config } as const),\n summary: (config: FieldInput = {}) => ({ type: 'summary', ...config } as const),\n autonumber: (config: FieldInput = {}) => ({ type: 'autonumber', ...config } as const),\n markdown: (config: FieldInput = {}) => ({ type: 'markdown', ...config } as const),\n html: (config: FieldInput = {}) => ({ type: 'html', ...config } as const),\n password: (config: FieldInput = {}) => ({ type: 'password', ...config } as const),\n /**\n * Secret field — reversible encrypted-at-rest value (DB password, API key,\n * token). Encrypted on write to `sys_secret` via the registered\n * ICryptoProvider; only an opaque ref is persisted on the row; masked on\n * read. Distinct from `password` (one-way hash, owned by the auth subsystem).\n */\n secret: (config: FieldInput = {}) => ({ type: 'secret', ...config } as const),\n \n /**\n * Select field helper with backward-compatible API\n * \n * Automatically converts option values to lowercase to enforce naming conventions.\n * \n * @example Old API (array first) - auto-converts to lowercase\n * Field.select(['High', 'Low'], { label: 'Priority' })\n * // Results in: [{ label: 'High', value: 'high' }, { label: 'Low', value: 'low' }]\n * \n * @example New API (config object) - enforces lowercase\n * Field.select({ options: [{label: 'High', value: 'high'}], label: 'Priority' })\n * \n * @example Multi-word values - converts to snake_case\n * Field.select(['In Progress', 'Closed Won'], { label: 'Status' })\n * // Results in: [{ label: 'In Progress', value: 'in_progress' }, { label: 'Closed Won', value: 'closed_won' }]\n */\n select: (optionsOrConfig: SelectOption[] | string[] | FieldInput & { options: SelectOption[] | string[] }, config?: FieldInput) => {\n // Helper function to convert string to lowercase snake_case\n const toSnakeCase = (str: string): string => {\n return str\n .toLowerCase()\n .replace(/\\s+/g, '_') // Replace spaces with underscores\n .replace(/[^a-z0-9_]/g, ''); // Remove invalid characters (keeping underscores only)\n };\n\n // Support both old and new signatures:\n // Old: Field.select(['a', 'b'], { label: 'X' })\n // New: Field.select({ options: [{label: 'A', value: 'a'}], label: 'X' })\n let options: SelectOption[];\n let finalConfig: FieldInput;\n \n if (Array.isArray(optionsOrConfig)) {\n // Old signature: array as first param\n options = optionsOrConfig.map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n finalConfig = config || {};\n } else {\n // New signature: config object with options\n options = (optionsOrConfig.options || []).map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n // Remove options from config to avoid confusion\n const { options: _, ...restConfig } = optionsOrConfig;\n finalConfig = restConfig;\n }\n \n return { type: 'select', options, ...finalConfig } as const;\n },\n\n \n lookup: (reference: string, config: FieldInput = {}) => ({ \n type: 'lookup', \n reference, \n ...config \n } as const),\n \n masterDetail: (reference: string, config: FieldInput = {}) => ({\n type: 'master_detail',\n reference,\n ...config\n } as const),\n\n // Enhanced Field Type Helpers\n location: (config: FieldInput = {}) => ({ \n type: 'location', \n ...config \n } as const),\n \n address: (config: FieldInput = {}) => ({ \n type: 'address', \n ...config \n } as const),\n \n richtext: (config: FieldInput = {}) => ({ \n type: 'richtext', \n ...config \n } as const),\n \n code: (language?: string, config: FieldInput = {}) => ({ \n type: 'code', \n language,\n ...config \n } as const),\n \n color: (config: FieldInput = {}) => ({ \n type: 'color', \n ...config \n } as const),\n \n rating: (maxRating: number = 5, config: FieldInput = {}) => ({ \n type: 'rating', \n maxRating,\n ...config \n } as const),\n \n signature: (config: FieldInput = {}) => ({ \n type: 'signature', \n ...config \n } as const),\n \n slider: (config: FieldInput = {}) => ({ \n type: 'slider', \n ...config \n } as const),\n \n qrcode: (config: FieldInput = {}) => ({ \n type: 'qrcode', \n ...config \n } as const),\n \n json: (config: FieldInput = {}) => ({ \n type: 'json', \n ...config \n } as const),\n \n vector: (dimensions: number, config: FieldInput = {}) => ({ \n type: 'vector', \n vectorConfig: {\n dimensions,\n distanceMetric: 'cosine' as const,\n normalized: false,\n indexed: true,\n ...config.vectorConfig\n },\n ...config \n } as const),\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Shared HTTP Schemas\n * \n * Common HTTP-related schemas used across API and System protocols.\n * These schemas ensure consistency across different parts of the stack.\n */\n\n// ==========================================\n// Basic HTTP Types\n// ==========================================\n\n/**\n * HTTP Method Enum\n */\nimport { lazySchema } from './lazy-schema';\nexport const HttpMethod = z.enum([\n 'GET', \n 'POST', \n 'PUT', \n 'DELETE', \n 'PATCH', \n 'HEAD', \n 'OPTIONS'\n]);\n\nexport type HttpMethod = z.infer<typeof HttpMethod>;\n\n/**\n * HTTP Method Schema (subset for UI/View data sources)\n * Common HTTP methods used in view data source configurations.\n * Migrated from ui/view.zod.ts to shared for reuse across modules.\n */\nexport const HttpMethodSchema = lazySchema(() => z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']));\n\nexport type HttpMethodType = z.infer<typeof HttpMethodSchema>;\n\n/**\n * HTTP Request Configuration Schema\n * Defines a complete HTTP request configuration used by API data providers.\n * Migrated from ui/view.zod.ts to shared for reuse across modules.\n */\nexport const HttpRequestSchema = lazySchema(() => z.object({\n url: z.string().describe('API endpoint URL'),\n method: HttpMethodSchema.optional().default('GET').describe('HTTP method'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),\n params: z.record(z.string(), z.unknown()).optional().describe('Query parameters'),\n body: z.unknown().optional().describe('Request body for POST/PUT/PATCH'),\n}));\n\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\n\n// ==========================================\n// CORS Configuration\n// ==========================================\n\n/**\n * CORS Configuration Schema\n * Cross-Origin Resource Sharing configuration\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"origins\": [\"http://localhost:3000\", \"https://app.example.com\"],\n * \"methods\": [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n * \"credentials\": true,\n * \"maxAge\": 86400\n * }\n */\nexport const CorsConfigSchema = lazySchema(() => z.object({\n /**\n * Enable CORS\n */\n enabled: z.boolean().default(true).describe('Enable CORS'),\n \n /**\n * Allowed origins (* for all)\n */\n origins: z.union([\n z.string(),\n z.array(z.string())\n ]).default('*').describe('Allowed origins (* for all)'),\n \n /**\n * Allowed HTTP methods\n */\n methods: z.array(HttpMethod).optional().describe('Allowed HTTP methods'),\n \n /**\n * Allow credentials (cookies, authorization headers)\n */\n credentials: z.boolean().default(false).describe('Allow credentials (cookies, authorization headers)'),\n \n /**\n * Preflight cache duration in seconds\n */\n maxAge: z.number().int().optional().describe('Preflight cache duration in seconds'),\n}));\n\nexport type CorsConfig = z.infer<typeof CorsConfigSchema>;\n\n// ==========================================\n// Rate Limiting\n// ==========================================\n\n/**\n * Rate Limit Configuration Schema\n * \n * Used by:\n * - api/endpoint.zod.ts (ApiEndpointSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"windowMs\": 60000,\n * \"maxRequests\": 100\n * }\n */\nexport const RateLimitConfigSchema = lazySchema(() => z.object({\n /**\n * Enable rate limiting\n */\n enabled: z.boolean().default(false).describe('Enable rate limiting'),\n \n /**\n * Time window in milliseconds\n */\n windowMs: z.number().int().default(60000).describe('Time window in milliseconds'),\n \n /**\n * Max requests per window\n */\n maxRequests: z.number().int().default(100).describe('Max requests per window'),\n}));\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\n\n// ==========================================\n// Static File Serving\n// ==========================================\n\n/**\n * Static Mount Configuration Schema\n * Configuration for serving static files\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"path\": \"/static\",\n * \"directory\": \"./public\",\n * \"cacheControl\": \"public, max-age=31536000\"\n * }\n */\nexport const StaticMountSchema = lazySchema(() => z.object({\n /**\n * URL path to serve from\n */\n path: z.string().describe('URL path to serve from'),\n \n /**\n * Physical directory to serve\n */\n directory: z.string().describe('Physical directory to serve'),\n \n /**\n * Cache-Control header value\n */\n cacheControl: z.string().optional().describe('Cache-Control header value'),\n}));\n\nexport type StaticMount = z.infer<typeof StaticMountSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ProtectionSchema } from '../shared/protection.zod';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { SharingConfigSchema } from './sharing.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\nimport { FieldType, SelectOptionSchema } from '../data/field.zod';\n\n/**\n * HTTP Method Enum & HTTP Request Schema\n * Migrated to shared/http.zod.ts. Re-exported here for backward compatibility.\n */\nimport { HttpMethodSchema, HttpRequestSchema } from '../shared/http.zod';\nimport { lazySchema } from '../shared/lazy-schema';\nexport { HttpMethodSchema, HttpRequestSchema };\n\n/**\n * View Data Source Configuration\n * Supports three modes:\n * 1. 'object': Standard Protocol - Auto-connects to ObjectStack Metadata and Data APIs\n * 2. 'api': Custom API - Explicitly provided API URLs\n * 3. 'value': Static Data - Hardcoded data array\n */\nexport const ViewDataSchema = lazySchema(() => z.discriminatedUnion('provider', [\n z.object({\n provider: z.literal('object'),\n object: z.string().describe('Target object name'),\n }),\n z.object({\n provider: z.literal('api'),\n read: HttpRequestSchema.optional().describe('Configuration for fetching data'),\n write: HttpRequestSchema.optional().describe('Configuration for submitting data (for forms/editable tables)'),\n }),\n z.object({\n provider: z.literal('value'),\n items: z.array(z.unknown()).describe('Static data array'),\n }),\n /**\n * Schema-bound data source — used by standalone forms whose data is\n * shaped by a JSON Schema (or Zod-derived schema) rather than by an\n * ObjectQL object. Powers the metadata editor, action input dialogs,\n * and any Form that is not bound to a CRUD object.\n */\n z.object({\n provider: z.literal('schema'),\n /** Schema identifier (e.g. metadata type name \"report\"). Resolved at runtime against /meta entries. */\n schemaId: z.string().describe('Schema identifier — typically the metadata type name'),\n /** Optional inline JSON Schema; when omitted the runtime resolves schemaId from the server. */\n schema: z.record(z.string(), z.unknown()).optional().describe('Inline JSON Schema (Draft 2020-12). Optional when schemaId is resolvable.'),\n }),\n]));\n\n/**\n * View Filter Rule Schema\n * Standardized filter condition used in list views, tabs, and page-level filters.\n * Uses a declarative array-of-objects format: [{ field, operator, value }].\n *\n * @example\n * ```ts\n * filter: [\n * { field: 'status', operator: 'equals', value: 'active' },\n * { field: 'close_date', operator: 'this_quarter' },\n * ]\n * ```\n */\nexport const ViewFilterRuleSchema = lazySchema(() => z.object({\n /** Field name to filter on */\n field: z.string().describe('Field name to filter on'),\n /** Filter operator */\n operator: z.string().describe('Filter operator (e.g. equals, not_equals, contains, this_quarter)'),\n /** Filter value (optional for unary operators like is_null, this_quarter) */\n value: z.union([z.string(), z.number(), z.boolean(), z.null(), z.array(z.union([z.string(), z.number()]))])\n .optional().describe('Filter value'),\n}).describe('View filter rule'));\n\nexport type ViewFilterRule = z.infer<typeof ViewFilterRuleSchema>;\n\n/**\n * Column Summary Function Schema\n * Aggregation function for column footer (Airtable-style column summaries)\n */\nexport const ColumnSummarySchema = lazySchema(() => z.enum([\n 'none',\n 'count',\n 'count_empty',\n 'count_filled',\n 'count_unique',\n 'percent_empty',\n 'percent_filled',\n 'sum',\n 'avg',\n 'min',\n 'max',\n]).describe('Aggregation function for column footer summary'));\n\n/**\n * List Column Configuration Schema\n * Detailed configuration for individual list view columns\n */\nexport const ListColumnSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label override'),\n width: z.number().positive().optional().describe('Column width in pixels'),\n align: z.enum(['left', 'center', 'right']).optional().describe('Text alignment'),\n hidden: z.boolean().optional().describe('Hide column by default'),\n sortable: z.boolean().optional().describe('Allow sorting by this column'),\n resizable: z.boolean().optional().describe('Allow resizing this column'),\n wrap: z.boolean().optional().describe('Allow text wrapping'),\n type: z.string().optional().describe('Renderer type override (e.g., \"currency\", \"date\")'),\n\n /** Pinning (Airtable-style frozen columns) */\n pinned: z.enum(['left', 'right']).optional().describe('Pin/freeze column to left or right side'),\n\n /** Column Footer Summary (Airtable-style aggregation) */\n summary: ColumnSummarySchema.optional().describe('Footer aggregation function for this column'),\n\n /** Interaction */\n link: z.boolean().optional().describe('Functions as the primary navigation link (triggers View navigation)'),\n action: z.string().optional().describe('Registered Action ID to execute when clicked'),\n}));\n\n/**\n * List View Selection Configuration\n */\nexport const SelectionConfigSchema = lazySchema(() => z.object({\n type: z.enum(['none', 'single', 'multiple']).default('none').describe('Selection mode'),\n}));\n\n/**\n * List View Pagination Configuration\n */\nexport const PaginationConfigSchema = lazySchema(() => z.object({\n pageSize: z.number().int().positive().default(25).describe('Number of records per page'),\n pageSizeOptions: z.array(z.number().int().positive()).optional().describe('Available page size options'),\n}));\n\n/**\n * Row Height / Density Schema (Airtable-style)\n * Controls the visual density of rows in a list view.\n */\nexport const RowHeightSchema = lazySchema(() => z.enum([\n 'compact', // Minimal padding, single line\n 'short', // Reduced padding\n 'medium', // Default padding\n 'tall', // Extra padding, multi-line preview\n 'extra_tall', // Maximum padding, rich content preview\n]).describe('Row height / density setting for list view'));\n\n/**\n * Grouping Field Configuration\n * Defines a single grouping level for record grouping.\n */\nexport const GroupingFieldSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to group by'),\n order: z.enum(['asc', 'desc']).default('asc').describe('Group sort order'),\n collapsed: z.boolean().default(false).describe('Collapse groups by default'),\n}));\n\n/**\n * Grouping Configuration Schema (Airtable-style)\n * Supports multi-level grouping for grid/gallery views.\n */\nexport const GroupingConfigSchema = lazySchema(() => z.object({\n fields: z.array(GroupingFieldSchema).min(1).describe('Fields to group by (supports up to 3 levels)'),\n}).describe('Record grouping configuration'));\n\n/**\n * Gallery View Configuration (Airtable-style)\n * Configures card layout for gallery/card views.\n */\nexport const GalleryConfigSchema = lazySchema(() => z.object({\n coverField: z.string().optional().describe('Attachment/image field to display as card cover'),\n coverFit: z.enum(['cover', 'contain']).default('cover').describe('Image fit mode for card cover'),\n cardSize: z.enum(['small', 'medium', 'large']).default('medium').describe('Card size in gallery view'),\n titleField: z.string().optional().describe('Field to display as card title'),\n visibleFields: z.array(z.string()).optional().describe('Fields to display on card body'),\n}).describe('Gallery/card view configuration'));\n\n/**\n * Timeline View Configuration (Airtable-style)\n * Configures timeline/chronological views.\n */\nexport const TimelineConfigSchema = lazySchema(() => z.object({\n startDateField: z.string().describe('Field for timeline item start date'),\n endDateField: z.string().optional().describe('Field for timeline item end date'),\n titleField: z.string().describe('Field to display as timeline item title'),\n groupByField: z.string().optional().describe('Field to group timeline rows'),\n colorField: z.string().optional().describe('Field to determine item color'),\n scale: z.enum(['hour', 'day', 'week', 'month', 'quarter', 'year']).default('week').describe('Default timeline scale'),\n}).describe('Timeline view configuration'));\n\n/**\n * View Sharing Configuration (Airtable-style)\n * Defines who can see and modify a view.\n */\nexport const ViewSharingSchema = lazySchema(() => z.object({\n type: z.enum(['personal', 'collaborative']).default('collaborative').describe('View ownership type'),\n lockedBy: z.string().optional().describe('User who locked the view configuration'),\n}).describe('View sharing and access configuration'));\n\n/**\n * Row Color Configuration (Airtable-style)\n * Defines how rows are colored based on field values.\n */\nexport const RowColorConfigSchema = lazySchema(() => z.object({\n field: z.string().describe('Field to derive color from (typically a select/status field)'),\n colors: z.record(z.string(), z.string()).optional().describe('Map of field value to color (hex/token)'),\n}).describe('Row color configuration based on field values'));\n\n/**\n * Visualization Type Schema\n * Whitelist of visualization types the user can switch between.\n * Maps to Airtable's \"Visualizations\" setting in Appearance panel.\n */\nexport const VisualizationTypeSchema = lazySchema(() => z.enum([\n 'grid',\n 'kanban',\n 'gallery',\n 'calendar',\n 'timeline',\n 'gantt',\n 'map',\n 'chart',\n]).describe('Visualization type that users can switch to'));\n\n/**\n * User Actions Configuration Schema (Airtable Interface parity)\n * Controls which interactive actions are available to users in the view toolbar.\n * Each boolean toggles the corresponding toolbar element on/off.\n *\n * @see Airtable Interface → \"User actions\" panel\n */\nexport const UserActionsConfigSchema = lazySchema(() => z.object({\n sort: z.boolean().default(true).describe('Allow users to sort records'),\n search: z.boolean().default(true).describe('Allow users to search records'),\n filter: z.boolean().default(true).describe('Allow users to filter records'),\n rowHeight: z.boolean().default(true).describe('Allow users to toggle row height/density'),\n addRecordForm: z.boolean().default(false).describe('Add records through a form instead of inline'),\n buttons: z.array(z.string()).optional().describe('Custom action button IDs to show in the toolbar'),\n}).describe('User action toggles for the view toolbar'));\n\n/**\n * Appearance Configuration Schema (Airtable Interface parity)\n * Controls visual presentation options for the view.\n *\n * @see Airtable Interface → \"Appearance\" panel\n */\nexport const AppearanceConfigSchema = lazySchema(() => z.object({\n showDescription: z.boolean().default(true).describe('Show the view description text'),\n allowedVisualizations: z.array(VisualizationTypeSchema).optional()\n .describe('Whitelist of visualization types users can switch between (e.g. [\"grid\", \"gallery\", \"kanban\"])'),\n}).describe('Appearance and visualization configuration'));\n\n/**\n * View Tab Schema (Airtable Interface parity)\n * Defines a tab in a multi-tab view interface.\n * Each tab references a named list view and can be ordered, pinned, or set as default.\n *\n * @see Airtable Interface → \"Tabs\" panel\n */\nexport const ViewTabSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Tab identifier (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label'),\n icon: z.string().optional().describe('Tab icon name'),\n view: z.string().optional().describe('Referenced list view name from listViews'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Tab-specific filter criteria'),\n order: z.number().int().min(0).optional().describe('Tab display order'),\n pinned: z.boolean().default(false).describe('Pin tab (cannot be removed by users)'),\n isDefault: z.boolean().default(false).describe('Set as the default active tab'),\n visible: z.boolean().default(true).describe('Tab visibility'),\n}).describe('Tab configuration for multi-tab view interface'));\n\n/**\n * User Filter Field Schema (ADR-0047)\n * One field exposed as a quick-filter control in the end-user filter bar.\n * Rendering details (widget, options) default to inference from the field\n * definition on the source object — authors only override when needed.\n *\n * @see Airtable Interface → \"User filters\" panel (Dropdowns element)\n */\nexport const UserFilterFieldSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name on the source object (must exist — checked by reference diagnostics)'),\n label: I18nLabelSchema.optional().describe('Display label override (defaults to the field label)'),\n type: z.enum(['select', 'multi-select', 'boolean', 'date-range', 'text']).optional()\n .describe('Filter control type. Omit to infer from the field definition'),\n options: z.array(z.object({\n value: z.union([z.string(), z.number(), z.boolean()]).describe('Option value'),\n label: I18nLabelSchema.describe('Option label'),\n color: z.string().optional().describe('Option color token/hex'),\n })).optional().describe('Static options. Omit to derive from the field definition (select options / lookup records)'),\n showCount: z.boolean().optional().describe('Show per-option record counts'),\n defaultValues: z.array(z.union([z.string(), z.number(), z.boolean()])).optional()\n .describe('Pre-selected values when the view loads'),\n}).describe('Quick-filter field configuration'));\n\n/**\n * User Filters Schema (ADR-0047, Airtable Interface parity)\n * The end-user-facing quick-filter surface above a list. The author picks the\n * element style and which fields/presets are exposed; end users combine them\n * at runtime (session-scoped — selections never persist as metadata).\n *\n * Distinct from `ListView.filter` (the always-on base criteria) and from the\n * advanced filter builder (`userActions.filter` toggle).\n *\n * @see Airtable Interface → \"User filters\" panel (Elements: tabs / dropdowns)\n */\nexport const UserFiltersSchema = lazySchema(() => z.object({\n // `toggle` is DEPRECATED (ADR-0047 §3.4a): it overlaps `tabs` (presets) and\n // `dropdown` (per-field values) without adding expressive power, needs\n // per-field defaultValues to be useful, and authoring tooling no longer\n // offers it (None / Tabs / Dropdown only). Kept in the enum so existing\n // configs keep rendering; do not author new `toggle` filters.\n element: z.enum(['dropdown', 'tabs', 'toggle']).default('dropdown')\n .describe('Filter control style: \"dropdown\" (per-field value selectors) or \"tabs\" (named presets). \"toggle\" is deprecated.'),\n fields: z.array(UserFilterFieldSchema).optional()\n .describe('Fields exposed as quick filters (dropdown/toggle elements)'),\n tabs: z.array(ViewTabSchema).optional()\n .describe('Named filter presets rendered as tabs (tabs element). Reuses ViewTabSchema'),\n showAllRecords: z.boolean().optional()\n .describe('Show an \"All records\" tab before the presets (tabs element)'),\n}).describe('End-user quick-filter configuration (Airtable \"User filters\" parity)'));\n\n/**\n * Add Record Configuration Schema (Airtable Interface parity)\n * Configures the \"Add Record\" entry point for a list view.\n *\n * @see Airtable Interface → \"+ Add record\" button\n */\nexport const AddRecordConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(true).describe('Show the add record entry point'),\n position: z.enum(['top', 'bottom', 'both']).default('bottom').describe('Position of the add record button'),\n mode: z.enum(['inline', 'form', 'modal']).default('inline').describe('How to add a new record'),\n formView: z.string().optional().describe('Named form view to use when mode is \"form\" or \"modal\"'),\n}).describe('Add record entry point configuration'));\n\n/**\n * Kanban Settings\n */\nexport const KanbanConfigSchema = lazySchema(() => z.object({\n groupByField: z.string().describe('Field to group columns by (usually status/select)'),\n summarizeField: z.string().optional().describe('Field to sum at top of column (e.g. amount)'),\n columns: z.array(z.string()).describe('Fields to show on cards'),\n}));\n\n/**\n * List Chart View Configuration (Airtable-style)\n * Configures aggregate chart visualizations (bar/line/pie/area/scatter)\n * when used as a `type: 'chart'` ListView. Distinct from the full-featured\n * `ChartConfigSchema` in `chart.zod.ts` (which is for embedded reports).\n */\nexport const ListChartConfigSchema = lazySchema(() => z.object({\n chartType: z.enum(['bar', 'line', 'pie', 'area', 'scatter']).default('bar').describe('Chart visualisation type'),\n /**\n * ADR-0021 — the semantic-layer `dataset` this chart binds to. Selects\n * dimensions/measures BY NAME so the chart's numbers stay consistent with\n * every other surface using the same dataset. This is the single author-facing\n * shape (the legacy inline `xAxisField` + `yAxisFields` + `aggregation` query\n * was removed in the cutover).\n */\n dataset: SnakeCaseIdentifierSchema.describe('Dataset name to bind (ADR-0021)'),\n /** Dimension names (from the dataset) for X / group / split. */\n dimensions: z.array(z.string()).optional().describe('Dimension names — X/group/split'),\n /** Measure names (from the dataset) for the value axis. */\n values: z.array(z.string()).min(1).describe('Measure names — Y (at least one)'),\n}).describe('List chart view configuration'));\n\n/**\n * Calendar Settings\n */\nexport const CalendarConfigSchema = lazySchema(() => z.object({\n startDateField: z.string(),\n endDateField: z.string().optional(),\n titleField: z.string(),\n colorField: z.string().optional(),\n}));\n\n/**\n * Gantt Settings\n */\nexport const GanttConfigSchema = lazySchema(() => z.object({\n startDateField: z.string(),\n endDateField: z.string(),\n titleField: z.string(),\n progressField: z.string().optional(),\n dependenciesField: z.string().optional(),\n}));\n\n/**\n * Navigation Mode Enum\n * Defines how to navigate to the detail view from a list item.\n */\nexport const NavigationModeSchema = lazySchema(() => z.enum([\n 'page', // Navigate to a new route (default)\n 'drawer', // Open details in a side drawer/panel\n 'modal', // Open details in a modal dialog\n 'split', // Show details side-by-side with the list (master-detail)\n 'popover', // Show details in a popover (lightweight)\n 'new_window', // Open in new browser tab/window\n 'none' // No navigation (read-only list)\n]));\n\n/**\n * Navigation Configuration Schema\n */\nexport const NavigationConfigSchema = lazySchema(() => z.object({\n mode: NavigationModeSchema.default('page'),\n \n /** Target View Config */\n view: z.string().optional().describe('Name of the form view to use for details (e.g. \"summary_view\", \"edit_form\")'),\n \n /** Interaction Triggers */\n preventNavigation: z.boolean().default(false).describe('Disable standard navigation entirely'),\n openNewTab: z.boolean().default(false).describe('Force open in new tab (applies to page mode)'),\n \n /** Dimensions (for modal/drawer) */\n width: z.union([z.string(), z.number()]).optional().describe('Width of the drawer/modal (e.g. \"600px\", \"50%\")'),\n}));\n\n/**\n * List View Schema (Expanded)\n * Defines how a collection of records is displayed to the user.\n * \n * **NAMING CONVENTION:**\n * View names (when provided) are machine identifiers and must be lowercase snake_case.\n * \n * @example Standard Grid\n * {\n * name: \"all_active\",\n * label: \"All Active\",\n * type: \"grid\",\n * columns: [\"name\", \"status\", \"created_at\"],\n * filter: [[\"status\", \"=\", \"active\"]]\n * }\n * \n * @example Kanban Board\n * {\n * type: \"kanban\",\n * columns: [\"name\", \"amount\"],\n * kanban: {\n * groupByField: \"stage\",\n * summarizeField: \"amount\",\n * columns: [\"name\", \"close_date\"]\n * }\n * }\n */\nexport const ListViewSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.optional().describe('Internal view name (lowercase snake_case)'),\n label: I18nLabelSchema.optional(), // Display label override (supports i18n)\n type: z.enum([\n 'grid', // Standard Data Table\n 'kanban', // Board / Columns\n 'gallery', // Card Deck / Masonry\n 'calendar', // Monthly/Weekly/Daily\n 'timeline', // Chronological Stream (Feed)\n 'gantt', // Project Timeline\n 'map', // Geospatial\n 'chart' // Aggregate visualisation\n ]).default('grid'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n /** Shared Query Config */\n columns: z.union([\n z.array(z.string()), // Legacy: simple field names\n z.array(ListColumnSchema), // Enhanced: detailed column config\n ]).describe('Fields to display as columns'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Filter criteria (JSON Rules)'),\n sort: z.union([\n z.string(), //Legacy \"field desc\"\n z.array(z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc'])\n }))\n ]).optional(),\n \n /** Search & Filter */\n searchableFields: z.array(z.string()).optional().describe('Fields enabled for search'),\n filterableFields: z.array(z.string()).optional().describe('Legacy shorthand for userFilters.fields — bare field names enabled for end-user filtering. Prefer userFilters'),\n\n /** User Filters (ADR-0047, Airtable Interface parity) */\n userFilters: UserFiltersSchema.optional()\n .describe('End-user quick-filter bar: dropdown/toggle fields or tab presets. Omit to let the renderer derive filters from select/boolean fields'),\n\n /** Grid Features */\n resizable: z.boolean().optional().describe('Enable column resizing'),\n striped: z.boolean().optional().describe('Striped row styling'),\n bordered: z.boolean().optional().describe('Show borders'),\n compactToolbar: z.boolean().optional().describe('Collapse Group/Color/Density/Hide-fields into a single View settings popover'),\n\n /** Selection */\n selection: SelectionConfigSchema.optional().describe('Row selection configuration'),\n\n /** Navigation / Interaction */\n navigation: NavigationConfigSchema.optional().describe('Configuration for item click navigation (page, drawer, modal, etc.)'),\n\n /** Pagination */\n pagination: PaginationConfigSchema.optional().describe('Pagination configuration'),\n\n /** Type Specific Config */\n kanban: KanbanConfigSchema.optional(),\n calendar: CalendarConfigSchema.optional(),\n gantt: GanttConfigSchema.optional(),\n gallery: GalleryConfigSchema.optional(),\n timeline: TimelineConfigSchema.optional(),\n chart: ListChartConfigSchema.optional(),\n\n /** View Metadata (Airtable-style view management) */\n description: I18nLabelSchema.optional().describe('View description for documentation/tooltips'),\n sharing: ViewSharingSchema.optional().describe('View sharing and access configuration'),\n\n /** Row Height / Density (Airtable-style) */\n rowHeight: RowHeightSchema.optional().describe('Row height / density setting'),\n\n /** Record Grouping (Airtable-style) */\n grouping: GroupingConfigSchema.optional().describe('Group records by one or more fields'),\n\n /** Row Color (Airtable-style) */\n rowColor: RowColorConfigSchema.optional().describe('Color rows based on field value'),\n\n /** Field Visibility & Ordering per View (Airtable-style) */\n hiddenFields: z.array(z.string()).optional().describe('Fields to hide in this specific view'),\n fieldOrder: z.array(z.string()).optional().describe('Explicit field display order for this view'),\n\n /** Row & Bulk Actions */\n rowActions: z.array(z.string()).optional().describe('Actions available for individual row items'),\n bulkActions: z.array(z.string()).optional().describe('Actions available when multiple rows are selected'),\n bulkActionDefs: z.array(z.record(z.string(), z.any())).optional().describe('Rich bulk action definitions (schema-driven, executed via BulkActionDialog)'),\n\n /** Performance */\n virtualScroll: z.boolean().optional().describe('Enable virtual scrolling for large datasets'),\n\n /** Conditional Formatting */\n conditionalFormatting: z.array(z.object({\n condition: ExpressionInputSchema.describe('Predicate (CEL) to evaluate.'),\n style: z.record(z.string(), z.string()).describe('CSS styles to apply when condition is true'),\n })).optional().describe('Conditional formatting rules for list rows'),\n\n /** Inline Edit */\n inlineEdit: z.boolean().optional().describe('Allow inline editing of records directly in the list view'),\n\n /** Export */\n exportOptions: z.array(z.enum(['csv', 'xlsx', 'pdf', 'json'])).optional().describe('Available export format options'),\n\n /** User Actions (Airtable Interface parity) */\n userActions: UserActionsConfigSchema.optional().describe('User action toggles for the view toolbar'),\n\n /** Appearance (Airtable Interface parity) */\n appearance: AppearanceConfigSchema.optional().describe('Appearance and visualization configuration'),\n\n /** Tabs (Airtable Interface parity) */\n tabs: z.array(ViewTabSchema).optional().describe('Tab definitions for multi-tab view interface'),\n\n /** Add Record (Airtable Interface parity) */\n addRecord: AddRecordConfigSchema.optional().describe('Add record entry point configuration'),\n\n /** Record Count Display (Airtable Interface parity) */\n showRecordCount: z.boolean().optional().describe('Show record count at the bottom of the list'),\n\n /** Advanced: Allow Printing (Airtable Interface parity) */\n allowPrinting: z.boolean().optional().describe('Allow users to print the view'),\n\n /** Empty State */\n emptyState: z.object({\n title: I18nLabelSchema.optional(),\n message: I18nLabelSchema.optional(),\n icon: z.string().optional(),\n }).optional().describe('Empty state configuration when no records found'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the list view'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n}));\n\n/**\n * Form Field Configuration Schema\n * Detailed configuration for individual form fields.\n * \n * Reuses Data.FieldType and related constraints from the Data protocol to avoid duplication.\n * The `type` field auto-infers widget rendering; explicit `widget` overrides are only needed\n * for custom components.\n * \n * @example Auto-inferred select widget\n * { field: 'status', type: 'select', options: [{ label: 'Open', value: 'open' }] }\n * \n * @example Lookup field with reference\n * { field: 'account_id', type: 'lookup', reference: 'account', label: 'Account' }\n * \n * @example Custom widget override\n * { field: 'filter', widget: 'filter-builder' }\n */\nexport const FormFieldSchema: z.ZodType<any> = lazySchema(() => z.object({\n /** Field name (snake_case) */\n field: z.string().describe('Field name (snake_case)'),\n \n /** Field type — reuses Data.FieldType. When set, widget is auto-inferred (can be overridden). */\n type: FieldType.optional().describe('Field type (auto-infers widget if omitted)'),\n \n /** Select/multiselect options — only needed when type=select/multiselect/radio/checkboxes */\n options: z.array(SelectOptionSchema).optional().describe('Options for select/multiselect/radio/checkboxes fields'),\n \n /** Reference object for lookup/master_detail fields */\n reference: z.string().optional().describe('Target object name for lookup/master_detail fields'),\n \n /** Text constraints */\n maxLength: z.number().optional().describe('Maximum character length (for text/textarea/email/url/phone)'),\n minLength: z.number().optional().describe('Minimum character length'),\n \n /** Number constraints */\n min: z.number().optional().describe('Minimum value (for number/currency/percent/slider)'),\n max: z.number().optional().describe('Maximum value'),\n precision: z.number().optional().describe('Total digits (for number/currency)'),\n scale: z.number().optional().describe('Decimal places'),\n \n /** Multi-value flag */\n multiple: z.boolean().optional().describe('Allow multiple values (for select/lookup/file/image)'),\n \n /** UI overrides */\n label: I18nLabelSchema.optional().describe('Display label override'),\n placeholder: I18nLabelSchema.optional().describe('Placeholder text'),\n helpText: I18nLabelSchema.optional().describe('Help/hint text'),\n readonly: z.boolean().optional().describe('Read-only override'),\n immutable: z.boolean().optional().describe('Editable on create, locked once the record exists (e.g. machine names).'),\n required: z.boolean().optional().describe('Required override'),\n hidden: z.boolean().optional().describe('Hidden override'),\n colSpan: z.number().int().min(1).max(4).optional().describe('Column span in grid layout (1-4)'),\n \n /** Custom widget override — only needed when auto-inference is insufficient */\n widget: z.string().optional().describe('Custom widget/component name (overrides type-based inference)'),\n\n /** For `code` fields: source language (e.g. 'javascript', 'sql', 'json', 'typescript', 'expression', 'cel'). Drives syntax highlighting. */\n language: z.string().optional().describe('Code editor language (for type=code)'),\n\n /**\n * Sub-fields for `composite` / `repeater` / `record` types — declares\n * the inner shape of an embedded sub-object (composite), each row of\n * an embedded sub-object array (repeater), or each entry of a name-keyed\n * map (record). Recursive: any of the three can nest.\n *\n * Use `lookup` / `master_detail` instead when the children are independent\n * records with their own IDs in a separate object/table.\n */\n fields: z.array(z.lazy(() => FormFieldSchema)).optional()\n .describe('Sub-fields for composite/repeater/record types'),\n\n /**\n * For `record`-typed fields only. Declares how the map key is sourced,\n * displayed, and validated when an admin creates a new entry.\n *\n * The same identifier is also stored as `name` on the inner value (so\n * `record.fields[k].name === k`). Most callers can omit this and accept\n * the defaults: `{ field: 'name', label: 'Name', regex: /^[a-z_][a-z0-9_]*$/, immutable: true }`.\n *\n * See ADR-0007 (record form field type).\n */\n keyField: z.object({\n field: z.string().default('name').describe('Property name that holds the key inside each item (defaults to \"name\")'),\n label: I18nLabelSchema.optional().describe('Display label for the key column'),\n placeholder: I18nLabelSchema.optional().describe('Placeholder when entering a new key'),\n helpText: I18nLabelSchema.optional().describe('Help text under the key input'),\n /** Validation pattern serialised as a regex source string (no flags). */\n regex: z.string().optional().describe('JS regex source string the key must match (no flags)'),\n /** Renamable after creation? Defaults to false — keys are usually identifiers. */\n immutable: z.boolean().default(true).describe('If true, the key is read-only after creation'),\n }).optional().describe('Key column config for record-typed fields'),\n\n dependsOn: z.string().optional().describe('Parent field name for cascading'),\n visibleOn: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n}));\n\n/**\n * Form Layout Section\n */\nexport const FormSectionSchema = lazySchema(() => z.object({\n /**\n * Stable identifier for translation lookup. snake_case convention.\n * When provided, translation bundles can target this section's `label`\n * and `description` via `metadataForms.<type>.sections.<name>`.\n * Optional for backward-compat with sections that only have a `label`.\n */\n name: z.string().optional().describe('Stable section identifier for i18n lookup (snake_case)'),\n label: I18nLabelSchema.optional(),\n description: z.string().optional().describe('Optional description rendered under the section header.'),\n collapsible: z.boolean().default(false),\n collapsed: z.boolean().default(false),\n visibleOn: ExpressionInputSchema.optional().describe('Visibility predicate (CEL). Hides the whole section when false.'),\n columns: z.union([\n z.enum(['1', '2', '3', '4']),\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n ]).default(1).transform(val => (typeof val === 'string' ? parseInt(val) : val) as 1 | 2 | 3 | 4),\n fields: z.array(z.union([\n z.string(), // Legacy: simple field name\n FormFieldSchema, // Enhanced: detailed field config\n ])),\n}));\n\n/**\n * Form View Schema\n * Defines the layout for creating or editing a single record.\n * \n * @example Simple Sectioned Form\n * {\n * type: \"simple\",\n * sections: [\n * {\n * label: \"General Info\",\n * columns: 2,\n * fields: [\"name\", \"status\"]\n * },\n * {\n * label: \"Details\",\n * fields: [\"description\", { field: \"priority\", widget: \"rating\" }]\n * }\n * ]\n * }\n */\nexport const FormViewSchema = lazySchema(() => z.object({\n type: z.enum([\n 'simple', // Single column or sections\n 'tabbed', // Tabs\n 'wizard', // Step by step\n 'split', // Master-Detail split\n 'drawer', // Side panel\n 'modal' // Dialog\n ]).default('simple'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n sections: z.array(FormSectionSchema).optional(), // For simple layout\n groups: z.array(FormSectionSchema).optional(), // Legacy support -> alias to sections\n\n /**\n * Inline child collections (master-detail). When present, the standard\n * create/edit form for this object renders as a master-detail form — the\n * object's own fields on top, an editable grid per child collection below,\n * persisted together in ONE atomic transaction — with no bespoke page. Each\n * entry needs only `childObject`; the relationship FK and grid columns are\n * derived from the child object's metadata (override via\n * `relationshipField` / `columns`).\n */\n subforms: z.array(z.object({\n childObject: z.string().describe('Child object whose records are entered inline'),\n relationshipField: z.string().optional().describe('FK on the child pointing back to the parent (auto-detected when omitted)'),\n columns: z.array(z.any()).optional().describe('Editable grid columns (derived from the child object when omitted)'),\n amountField: z.string().optional().describe('Numeric child column summed for the running total'),\n totalField: z.string().optional().describe('Parent field to receive the rolled-up sum'),\n title: z.string().optional().describe('Section title'),\n addLabel: z.string().optional().describe('Add-row button label'),\n minRows: z.number().optional(),\n maxRows: z.number().optional(),\n })).optional().describe('Inline master-detail child collections'),\n\n /** Default Sort for Related Lists (e.g., sort child records by date) */\n defaultSort: z.array(z.object({\n field: z.string().describe('Field name to sort by'),\n order: z.enum(['asc', 'desc']).default('desc').describe('Sort direction'),\n })).optional().describe('Default sort order for related list views within this form'),\n\n /** Public form sharing configuration */\n sharing: SharingConfigSchema.optional().describe('Public sharing configuration for this form'),\n\n /**\n * What happens after a successful submit.\n *\n * - `thank-you` (default) — show a confirmation panel\n * - `redirect` — send the browser to a URL\n * - `continue` — reset the form so another response can be entered\n * - `next-record` — advance to the next record (internal queues only)\n */\n submitBehavior: z.union([\n z.object({\n kind: z.literal('thank-you'),\n title: z.string().optional(),\n message: z.string().optional(),\n }),\n z.object({\n kind: z.literal('redirect'),\n url: z.string(),\n delayMs: z.number().int().min(0).optional(),\n }),\n z.object({ kind: z.literal('continue') }),\n z.object({ kind: z.literal('next-record') }),\n ]).optional().describe('Post-submit behavior'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the form view'),\n}));\n\n/**\n * Master View Schema\n * Can define multiple named views.\n */\n/**\n * View Container Schema\n * Aggregates all view definitions for a specific object or context.\n * \n * @example\n * {\n * list: { type: \"grid\", columns: [\"name\"] },\n * form: { type: \"simple\", fields: [\"name\"] },\n * listViews: {\n * \"all\": { label: \"All\", filter: [] },\n * \"my\": { label: \"Mine\", filter: [[\"owner\", \"=\", \"{user_id}\"]] }\n * }\n * }\n */\nexport const ViewSchema = lazySchema(() => z.object({\n list: ListViewSchema.optional(), // Default list view\n form: FormViewSchema.optional(), // Default form view\n listViews: z.record(z.string(), ListViewSchema).optional().describe('Additional named list views'),\n formViews: z.record(z.string(), FormViewSchema).optional().describe('Additional named form views'),\n /**\n * ADR-0010 §3.7 — Package-level protection envelope. Package\n * authors declare lock policy here; the loader translates it\n * into the private `_lock` envelope at registration time and\n * strips this block before persistence. See\n * `shared/protection.zod.ts`.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this view.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n\n}));\n\n/**\n * Type-safe factory for creating view definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const taskViews = defineView({\n * list: {\n * type: 'grid',\n * data: { provider: 'object', object: 'task' },\n * columns: ['subject', 'status', 'priority', 'due_date'],\n * },\n * form: {\n * type: 'simple',\n * sections: [{ label: 'Details', fields: [{ field: 'subject' }] }],\n * },\n * });\n * ```\n */\nexport function defineView(config: z.input<typeof ViewSchema>): View {\n return ViewSchema.parse(config);\n}\n\n// ───────────────────────────────────────────────────────────────────────────\n// Independent View Item model (Object has-many View)\n// ───────────────────────────────────────────────────────────────────────────\n//\n// The {@link ViewSchema} *container* above aggregates every view of an object\n// into one document. That model cannot express runtime-authored views (a user\n// adding \"My high-value leads\" at runtime cannot append to a developer's source\n// file), and it forces multiple distinct views into a single designer.\n//\n// {@link ViewItemSchema} promotes each named view to a first-class, independently\n// addressable entity bound to its object by a foreign key. The object↔view\n// switcher is then a *query* (`getViewsByObject`) rather than embedded storage —\n// mirroring Airtable / Salesforce / Notion, where a table/object has-many views.\n//\n// `defineView` is retained as authoring sugar: the backend loader expands an\n// aggregated document into N ViewItems at registration time, so existing\n// `*.view.ts` files and the published spec keep working unchanged.\n\n/**\n * Qualified view-item identity: `<object>.<viewKey>` — dotted snake_case\n * segments, e.g. `crm_lead.pipeline`. Globally unique, and the object can be\n * recovered from the prefix, so the registry key never collides across objects.\n */\nexport const ViewItemNameSchema = z\n .string()\n .regex(\n /^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$/,\n 'View item name must be a dotted snake_case qualified name, e.g. \"crm_lead.pipeline\".',\n )\n .describe('Globally-unique view id, `<object>.<viewKey>`.');\n\n/**\n * Identity layer for a view item — its visibility scope and ownership.\n *\n * - `package` — shipped from `*.view.ts` source / an installed package.\n * Not deletable (reinstall restores it); customisable via an\n * override layer; hideable from the switcher.\n * - `shared` — authored at runtime, visible org-wide. Creating one is gated\n * by the `view.manageShared` capability.\n * - `personal` — authored at runtime, scoped to `owner`. Any user with read\n * access to the object may create one.\n *\n * Named `scope` (not `provenance`) to avoid colliding with the loader-set\n * `_provenance` envelope field, which tracks a different axis\n * (package | org | env-forced).\n */\nexport const ViewScopeSchema = z\n .enum(['package', 'shared', 'personal'])\n .describe('View identity layer: package | shared | personal.');\n\n/** Discriminator for the kind of view a {@link ViewItemSchema} carries. */\nexport const ViewKindSchema = z\n .enum(['list', 'form'])\n .describe('Whether `config` is a ListView (list family) or a FormView.');\n\n/**\n * Fields shared by every independent view item, regardless of kind. Returned\n * as a raw Zod shape so it composes into each discriminated-union member\n * without forcing eager schema construction.\n */\nfunction viewItemBaseShape() {\n return {\n name: ViewItemNameSchema,\n object: z\n .string()\n .describe('Bound object name — the foreign key used to aggregate views.'),\n label: I18nLabelSchema.optional().describe('Display label (supports i18n).'),\n isDefault: z\n .boolean()\n .optional()\n .describe(\"Whether this is the object's default view in the switcher.\"),\n order: z\n .number()\n .int()\n .optional()\n .describe(\"Sort order within the object's view switcher / left rail.\"),\n scope: ViewScopeSchema.optional().describe(\n 'Identity layer (defaults to `package` for source-loaded views).',\n ),\n owner: z\n .string()\n .optional()\n .describe('Owner user id — set when `scope` is `personal`.'),\n hidden: z\n .boolean()\n .optional()\n .describe('Hidden from the switcher (per-user / per-org declutter).'),\n /**\n * Package author protection block — same envelope as {@link ViewSchema};\n * the loader translates it into the private `_lock` envelope.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this view.',\n ),\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n };\n}\n\n/**\n * Independent View Item — a single named view bound to one object.\n *\n * Discriminated on `viewKind`: a `list` item carries a {@link ListViewSchema}\n * config (grid / kanban / calendar / …), a `form` item carries a\n * {@link FormViewSchema} config.\n *\n * @example\n * ```ts\n * const pipeline = defineViewItem({\n * name: 'crm_lead.pipeline',\n * object: 'crm_lead',\n * viewKind: 'list',\n * label: 'Pipeline',\n * config: {\n * type: 'kanban',\n * data: { provider: 'object', object: 'crm_lead' },\n * columns: ['name', 'stage', 'amount'],\n * },\n * });\n * ```\n */\nexport const ViewItemSchema = lazySchema(() =>\n z.discriminatedUnion('viewKind', [\n z.object({\n viewKind: z.literal('list'),\n config: ListViewSchema.describe('List-family view configuration.'),\n ...viewItemBaseShape(),\n }),\n z.object({\n viewKind: z.literal('form'),\n config: FormViewSchema.describe('Form view configuration.'),\n ...viewItemBaseShape(),\n }),\n ]),\n);\n\n/**\n * Type-safe factory for an independent {@link ViewItem}.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const allLeads = defineViewItem({\n * name: 'crm_lead.all',\n * object: 'crm_lead',\n * viewKind: 'list',\n * isDefault: true,\n * config: { type: 'grid', data: { provider: 'object', object: 'crm_lead' }, columns: ['name'] },\n * });\n * ```\n */\nexport function defineViewItem(config: z.input<typeof ViewItemSchema>): ViewItem {\n return ViewItemSchema.parse(config);\n}\n\n// ───────────────────────────────────────────────────────────────────────────\n// defineView container → ViewItem expansion (shared by every loader)\n//\n// `defineView({ list, form, listViews, formViews })` aggregates an object's\n// views into one document. Each registration path that ingests such a\n// container (the ObjectQL engine boot loop AND the metadata HMR plugin) must\n// expand it into N independent ViewItems registered under `<object>.<viewKey>`,\n// so each view is individually addressable and `getViewsByObject()` can rebuild\n// the switcher. The original container is ALSO kept under the bare `<object>`\n// key for backward-compatible reads. This logic lives in `@objectstack/spec`\n// (depended on by both objectql and metadata) so the two loaders cannot drift.\n\n/** A ViewItem materialised from an aggregated container (always `package`). */\nexport interface ExpandedViewItem {\n name: string;\n object: string;\n viewKind: 'list' | 'form';\n label?: unknown;\n config: any;\n isDefault?: boolean;\n order: number;\n scope: 'package';\n}\n\n/** True when a raw view artifact still uses the aggregated container shape\n * (and is not already an independent ViewItem, which carries `viewKind`). */\nexport function isAggregatedViewContainer(item: any): boolean {\n if (!item || typeof item !== 'object') return false;\n if (item.viewKind) return false; // already an independent ViewItem\n return Boolean(item.list || item.form || item.listViews || item.formViews);\n}\n\n/** Structural signature used to collapse a container's default `list`/`form`\n * with a redundant `listViews`/`formViews` restatement of the same view (the\n * common \"default == listViews.all\" authoring pattern). */\nfunction viewSignature(v: any): string {\n if (!v || typeof v !== 'object') return '';\n try {\n return JSON.stringify({ type: v.type ?? null, label: v.label ?? null, columns: v.columns ?? null });\n } catch {\n return '';\n }\n}\n\n/** Allocate a collision-free `<object>.<key>` name within one expansion. */\nfunction uniqueViewName(base: string, used: Set<string>): string {\n let name = base;\n let i = 2;\n while (used.has(name)) name = `${base}_${i++}`;\n used.add(name);\n return name;\n}\n\nfunction cloneViewConfig(v: any): any {\n try {\n return structuredClone(v);\n } catch {\n return JSON.parse(JSON.stringify(v));\n }\n}\n\n/**\n * Expand an aggregated view container into independent ViewItems.\n *\n * List family: `listViews` entries first (keys taken from the author), then the\n * default `list` — deduped by structural signature so a `listViews.all` that\n * merely restates `list` collapses into one item. The view matching the\n * declared default is flagged `isDefault`.\n *\n * Form family: `formViews` entries, then the default `form`.\n */\nexport function expandViewContainer(object: string, container: any): ExpandedViewItem[] {\n const out: ExpandedViewItem[] = [];\n const used = new Set<string>();\n let order = 0;\n\n // ---- list family ----\n const listSigToName = new Map<string, string>();\n const listViews =\n container.listViews && typeof container.listViews === 'object' ? container.listViews : {};\n for (const [k, v] of Object.entries<any>(listViews)) {\n if (!v || typeof v !== 'object') continue;\n const name = uniqueViewName(`${object}.${k}`, used);\n listSigToName.set(viewSignature(v), name);\n out.push({ name, object, viewKind: 'list', label: v.label, config: cloneViewConfig(v), order: order++, scope: 'package' });\n }\n const defaultList = container.list;\n let defaultListName: string | undefined;\n if (defaultList && typeof defaultList === 'object') {\n const dup = listSigToName.get(viewSignature(defaultList));\n if (dup) {\n defaultListName = dup; // already represented by a named listViews entry\n } else {\n const key = typeof defaultList.name === 'string' && defaultList.name ? defaultList.name : 'default';\n const name = uniqueViewName(`${object}.${key}`, used);\n out.push({ name, object, viewKind: 'list', label: defaultList.label, config: cloneViewConfig(defaultList), order: order++, scope: 'package' });\n defaultListName = name;\n }\n }\n if (!defaultListName && out.length) defaultListName = out[0].name;\n for (const item of out) {\n if (item.viewKind === 'list' && item.name === defaultListName) item.isDefault = true;\n }\n\n // ---- form family ----\n const formStart = out.length;\n const formSigSeen = new Set<string>();\n const formViews =\n container.formViews && typeof container.formViews === 'object' ? container.formViews : {};\n for (const [k, v] of Object.entries<any>(formViews)) {\n if (!v || typeof v !== 'object') continue;\n const name = uniqueViewName(`${object}.${k}`, used);\n formSigSeen.add(viewSignature(v));\n out.push({ name, object, viewKind: 'form', label: v.label, config: cloneViewConfig(v), order: order++, scope: 'package' });\n }\n const defaultForm = container.form;\n let defaultFormName: string | undefined;\n if (defaultForm && typeof defaultForm === 'object' && !formSigSeen.has(viewSignature(defaultForm))) {\n const key = typeof defaultForm.name === 'string' && defaultForm.name ? defaultForm.name : 'form';\n const name = uniqueViewName(`${object}.${key}`, used);\n out.push({ name, object, viewKind: 'form', label: defaultForm.label, config: cloneViewConfig(defaultForm), order: order++, scope: 'package' });\n defaultFormName = name;\n }\n if (!defaultFormName && out.length > formStart) defaultFormName = out[formStart].name;\n for (let i = formStart; i < out.length; i++) {\n if (out[i].name === defaultFormName) out[i].isDefault = true;\n }\n\n return out;\n}\n\n/**\n * Type-safe factory for a standalone {@link FormView} bound to a JSON Schema\n * rather than to an ObjectQL object.\n *\n * Use this for forms that edit **metadata** (e.g. `report.form.ts`,\n * `dashboard.form.ts`), **action inputs**, or **flow screens** — anywhere the\n * data shape is described by a Zod-derived JSON Schema instead of an Object\n * field set.\n *\n * The returned FormView is validated at definition time; the runtime form\n * renderer (`@object-ui/plugin-form`) inspects `data.provider === 'schema'`\n * and pulls field metadata from the resolved JSON Schema instead of from\n * ObjectQL.\n *\n * @example\n * ```ts\n * export const reportForm = defineForm({\n * schemaId: 'report',\n * type: 'tabbed',\n * sections: [\n * { label: 'Basics', columns: 2, fields: [\n * { field: 'name' },\n * { field: 'label' },\n * { field: 'objectName', widget: 'ref:object' },\n * { field: 'type' },\n * ]},\n * { label: 'Columns', fields: [{ field: 'columns', widget: 'master-detail' }] },\n * { label: 'Advanced', collapsible: true, collapsed: true, fields: [\n * { field: 'filter', widget: 'filter-builder' },\n * { field: 'chart', widget: 'chart-config' },\n * ]},\n * ],\n * });\n * ```\n */\nexport function defineForm(\n config: Omit<z.input<typeof FormViewSchema>, 'data'> & { schemaId: string },\n): FormView {\n const { schemaId, ...rest } = config;\n return FormViewSchema.parse({\n ...rest,\n data: { provider: 'schema', schemaId },\n });\n}\n\nexport type View = z.infer<typeof ViewSchema>;\nexport type ViewItem = z.infer<typeof ViewItemSchema>;\nexport type ViewScope = z.infer<typeof ViewScopeSchema>;\nexport type ViewKind = z.infer<typeof ViewKindSchema>;\nexport type ListView = z.infer<typeof ListViewSchema>;\nexport type FormView = z.infer<typeof FormViewSchema>;\nexport type FormSection = z.infer<typeof FormSectionSchema>;\nexport type ListColumn = z.infer<typeof ListColumnSchema>;\nexport type FormField = z.infer<typeof FormFieldSchema>;\nexport type SelectionConfig = z.infer<typeof SelectionConfigSchema>;\nexport type NavigationConfig = z.infer<typeof NavigationConfigSchema>;\nexport type PaginationConfig = z.infer<typeof PaginationConfigSchema>;\nexport type ViewData = z.infer<typeof ViewDataSchema>;\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\nexport type HttpMethod = z.infer<typeof HttpMethodSchema>;\nexport type ColumnSummary = z.infer<typeof ColumnSummarySchema>;\nexport type RowHeight = z.infer<typeof RowHeightSchema>;\nexport type GroupingConfig = z.infer<typeof GroupingConfigSchema>;\nexport type GalleryConfig = z.infer<typeof GalleryConfigSchema>;\nexport type TimelineConfig = z.infer<typeof TimelineConfigSchema>;\nexport type ListChartConfig = z.infer<typeof ListChartConfigSchema>;\nexport type ViewSharing = z.infer<typeof ViewSharingSchema>;\nexport type RowColorConfig = z.infer<typeof RowColorConfigSchema>;\nexport type VisualizationType = z.infer<typeof VisualizationTypeSchema>;\nexport type UserActionsConfig = z.infer<typeof UserActionsConfigSchema>;\nexport type AppearanceConfig = z.infer<typeof AppearanceConfigSchema>;\nexport type ViewTab = z.infer<typeof ViewTabSchema>;\nexport type UserFilterField = z.infer<typeof UserFilterFieldSchema>;\nexport type UserFilters = z.infer<typeof UserFiltersSchema>;\nexport type AddRecordConfig = z.infer<typeof AddRecordConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Unified Query DSL Specification\n * \n * Based on industry best practices from:\n * - Prisma ORM\n * - Strapi CMS\n * - TypeORM\n * - LoopBack Framework\n * \n * Version: 1.0.0\n * Status: Draft\n * \n * Objective: Define a JSON-based, database-agnostic query syntax standard\n * for data filtering interactions between frontend and backend APIs.\n * \n * Design Principles:\n * 1. Declarative: Frontend describes \"what data to get\", not \"how to query\"\n * 2. Database Agnostic: Syntax contains no database-specific directives\n * 3. Type Safe: Structure can be statically inferred by TypeScript\n * 4. Convention over Configuration: Implicit syntax for common queries\n */\n\n/**\n * Field Reference\n * Represents a reference to another field/column instead of a literal value.\n * Used for joins (ON clause) and cross-field comparisons.\n * \n * @example\n * // user.id = order.owner_id\n * { \"$eq\": { \"$field\": \"order.owner_id\" } }\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldReferenceSchema = lazySchema(() => z.object({\n $field: z.string().describe('Field Reference/Column Name')\n}));\n\nexport type FieldReference = z.infer<typeof FieldReferenceSchema>;\n\n// ============================================================================\n// 3.1 Comparison Operators\n// ============================================================================\n\n/**\n * Comparison operators for equality and inequality checks.\n * Supported data types: Any\n */\nexport const EqualityOperatorSchema = lazySchema(() => z.object({\n /** Equal to (default) - SQL: = | MongoDB: $eq */\n $eq: z.any().optional(),\n \n /** Not equal to - SQL: <> or != | MongoDB: $ne */\n $ne: z.any().optional(),\n}));\n\n/**\n * Comparison operators for numeric and date comparisons.\n * Supported data types: Number, Date\n */\nexport const ComparisonOperatorSchema = lazySchema(() => z.object({\n /** Greater than - SQL: > | MongoDB: $gt */\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Greater than or equal to - SQL: >= | MongoDB: $gte */\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than - SQL: < | MongoDB: $lt */\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than or equal to - SQL: <= | MongoDB: $lte */\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n}));\n\n// ============================================================================\n// 3.2 Set & Range Operators\n// ============================================================================\n\n/**\n * Set operators for membership checks.\n */\nexport const SetOperatorSchema = lazySchema(() => z.object({\n /** In list - SQL: IN (?, ?, ?) | MongoDB: $in */\n $in: z.array(z.any()).optional(),\n \n /** Not in list - SQL: NOT IN (...) | MongoDB: $nin */\n $nin: z.array(z.any()).optional(),\n}));\n\n/**\n * Range operator for interval checks (closed interval).\n * SQL: BETWEEN ? AND ? | MongoDB: $gte AND $lte\n */\nexport const RangeOperatorSchema = lazySchema(() => z.object({\n /** Between (inclusive) - takes [min, max] array */\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n}));\n\n// ============================================================================\n// 3.3 String-Specific Operators\n// ============================================================================\n\n/**\n * String pattern matching operators.\n * Note: Case sensitivity should be handled at backend level.\n */\nexport const StringOperatorSchema = lazySchema(() => z.object({\n /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */\n $contains: z.string().optional(),\n \n /** Does not contain substring - SQL: NOT LIKE %?% | MongoDB: $not: $regex */\n $notContains: z.string().optional(),\n \n /** Starts with prefix - SQL: LIKE ?% | MongoDB: $regex */\n $startsWith: z.string().optional(),\n \n /** Ends with suffix - SQL: LIKE %? | MongoDB: $regex */\n $endsWith: z.string().optional(),\n}));\n\n// ============================================================================\n// 3.5 Special Operators\n// ============================================================================\n\n/**\n * Special check operators for null and existence.\n */\nexport const SpecialOperatorSchema = lazySchema(() => z.object({\n /** Is null check - SQL: IS NULL (true) / IS NOT NULL (false) | MongoDB: field: null */\n $null: z.boolean().optional(),\n \n /** Field exists check (primarily for NoSQL) - MongoDB: $exists */\n $exists: z.boolean().optional(),\n}));\n\n// ============================================================================\n// Combined Field Operators\n// ============================================================================\n\n/**\n * All field-level operators combined.\n * These can be applied to individual fields in a filter.\n */\nexport const FieldOperatorsSchema = lazySchema(() => z.object({\n // Equality\n $eq: z.any().optional(),\n $ne: z.any().optional(),\n \n // Comparison (numeric/date)\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n // Set & Range\n $in: z.array(z.any()).optional(),\n $nin: z.array(z.any()).optional(),\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n \n // String-specific\n $contains: z.string().optional(),\n $notContains: z.string().optional(),\n $startsWith: z.string().optional(),\n $endsWith: z.string().optional(),\n \n // Special\n $null: z.boolean().optional(),\n $exists: z.boolean().optional(),\n}));\n\n// ============================================================================\n// 3.4 Logical Operators & Recursive Filter Structure\n// ============================================================================\n\n/**\n * Recursive filter type that supports:\n * 1. Implicit equality: { field: value }\n * 2. Explicit operators: { field: { $op: value } }\n * 3. Logical combinations: { $and: [...], $or: [...], $not: {...} }\n * 4. Nested relations: { relation: { field: value } }\n */\nexport type FilterCondition = {\n [key: string]: \n | any // Implicit equality: key: value\n | z.infer<typeof FieldOperatorsSchema> // Explicit operators: key: { $op: value }\n | FilterCondition; // Nested relation: key: { nested: ... }\n} & {\n /** Logical AND - combines all conditions that must be true */\n $and?: FilterCondition[];\n \n /** Logical OR - at least one condition must be true */\n $or?: FilterCondition[];\n \n /** Logical NOT - negates the condition */\n $not?: FilterCondition;\n};\n\n/**\n * Zod schema for recursive filter validation.\n * Uses z.lazy() to handle recursive structure.\n */\nexport const FilterConditionSchema: z.ZodType<FilterCondition> = z.lazy(() =>\n z.record(z.string(), z.unknown()).and(\n z.object({\n $and: z.array(FilterConditionSchema).optional(),\n $or: z.array(FilterConditionSchema).optional(),\n $not: FilterConditionSchema.optional(),\n })\n )\n);\n\n// ============================================================================\n// Query Filter Wrapper\n// ============================================================================\n\n/**\n * Top-level query filter wrapper.\n * This is typically used as the \"where\" clause in a query.\n * \n * @example\n * ```typescript\n * const filter: QueryFilter = {\n * where: {\n * status: \"active\", // Implicit equality\n * age: { $gte: 18 }, // Explicit operator\n * $or: [ // Logical combination\n * { role: \"admin\" },\n * { email: { $contains: \"@company.com\" } }\n * ],\n * profile: { // Nested relation\n * verified: true\n * }\n * }\n * }\n * ```\n */\nexport const QueryFilterSchema = lazySchema(() => z.object({\n where: FilterConditionSchema.optional(),\n}));\n\n// ============================================================================\n// TypeScript Type Exports\n// ============================================================================\n\n/**\n * Type-safe filter operators for use in TypeScript.\n * \n * @example\n * ```typescript\n * type UserFilter = Filter<User>;\n * \n * const filter: UserFilter = {\n * age: { $gte: 18 },\n * email: { $contains: \"@example.com\" }\n * };\n * ```\n */\nexport type Filter<T = any> = {\n [K in keyof T]?: \n | T[K] // Implicit equality\n | {\n $eq?: T[K];\n $ne?: T[K];\n $gt?: T[K] extends number | Date ? T[K] : never;\n $gte?: T[K] extends number | Date ? T[K] : never;\n $lt?: T[K] extends number | Date ? T[K] : never;\n $lte?: T[K] extends number | Date ? T[K] : never;\n $in?: T[K][];\n $nin?: T[K][];\n $between?: T[K] extends number | Date ? [T[K], T[K]] : never;\n $contains?: T[K] extends string ? string : never;\n $notContains?: T[K] extends string ? string : never;\n $startsWith?: T[K] extends string ? string : never;\n $endsWith?: T[K] extends string ? string : never;\n $null?: boolean;\n $exists?: boolean;\n }\n | (T[K] extends object ? Filter<T[K]> : never); // Nested relation\n} & {\n $and?: Filter<T>[];\n $or?: Filter<T>[];\n $not?: Filter<T>;\n};\n\n/**\n * Scalar types supported by the filter system.\n */\nexport type Scalar = string | number | boolean | Date | null;\n\n// Export inferred types\nexport type FieldOperators = z.infer<typeof FieldOperatorsSchema>;\nexport type QueryFilter = z.infer<typeof QueryFilterSchema>;\n\n// ============================================================================\n// Normalization Utilities (Internal Representation)\n// ============================================================================\n\n/**\n * Normalized filter AST structure.\n * This is the internal representation after converting all syntactic sugar\n * to explicit operators.\n * \n * Stage 1: Normalization Pass\n * Input: { age: 18, role: \"admin\" }\n * Output: { $and: [{ age: { $eq: 18 } }, { role: { $eq: \"admin\" } }] }\n * \n * This simplifies adapter implementation by providing a consistent structure.\n */\nexport const NormalizedFilterSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n $and: z.array(\n z.union([\n // Field condition: { field: { $op: value } }\n z.record(z.string(), FieldOperatorsSchema),\n // Nested logical group\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $or: z.array(\n z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $not: z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ]).optional(),\n })\n);\n\nexport type NormalizedFilter = z.infer<typeof NormalizedFilterSchema>;\n\n// ============================================================================\n// AST Array Format Detection & Validation\n// ============================================================================\n\n/**\n * Set of valid AST comparison operators (case-insensitive).\n * Used by `isFilterAST()` to validate AST structure beyond `Array.isArray`.\n */\nexport const VALID_AST_OPERATORS = new Set([\n '=', '==', '!=', '<>', '>', '>=', '<', '<=',\n 'in', 'nin', 'not_in',\n 'contains', 'notcontains', 'not_contains', 'like',\n 'startswith', 'starts_with',\n 'endswith', 'ends_with',\n 'between',\n 'is_null', 'is_not_null',\n]);\n\n/**\n * Detect whether a value is a valid Filter AST array structure.\n *\n * A valid AST is one of:\n * - Comparison node: `[field: string, operator: string, value: unknown]` where operator is a known operator\n * - Logical node: `[\"and\" | \"or\", ...children]` where children are valid AST nodes\n * - Legacy flat array: `[[cond], [cond], ...]` where all elements are sub-arrays (each a valid AST node)\n *\n * This replaces the naïve `Array.isArray(filter)` check, preventing accidental\n * misidentification of arbitrary arrays as filter ASTs.\n *\n * @example\n * isFilterAST([\"status\", \"=\", \"active\"]) // true\n * isFilterAST([\"and\", [\"a\", \"=\", 1], [\"b\", \">\", 2]]) // true\n * isFilterAST([[\"a\", \"=\", 1], [\"b\", \"=\", 2]]) // true (legacy)\n * isFilterAST([1, 2, 3]) // false\n * isFilterAST(\"not an array\") // false\n * isFilterAST({ status: \"active\" }) // false\n */\nexport function isFilterAST(filter: unknown): boolean {\n if (!Array.isArray(filter) || filter.length === 0) return false;\n\n const first = filter[0];\n\n // Logical node: [\"and\", ...] or [\"or\", ...]\n if (typeof first === 'string') {\n const lower = first.toLowerCase();\n if (lower === 'and' || lower === 'or') {\n return filter.length >= 2 && filter.slice(1).every((child: unknown) => isFilterAST(child));\n }\n\n // Comparison node: [field, operator, value]\n if (filter.length >= 2 && typeof filter[1] === 'string') {\n return VALID_AST_OPERATORS.has(filter[1].toLowerCase());\n }\n }\n\n // Legacy flat array: [[cond], [cond], ...]\n if (filter.every((item: unknown) => isFilterAST(item))) {\n return filter.length > 0;\n }\n\n return false;\n}\n\n// ============================================================================\n// AST Array → FilterCondition Conversion\n// ============================================================================\n\n/**\n * Operator mapping from AST infix operators to FilterCondition `$`-prefixed operators.\n */\nconst AST_OPERATOR_MAP: Record<string, string> = {\n '=': '$eq',\n '==': '$eq',\n '!=': '$ne',\n '<>': '$ne',\n '>': '$gt',\n '>=': '$gte',\n '<': '$lt',\n '<=': '$lte',\n 'in': '$in',\n 'nin': '$nin',\n 'not_in': '$nin',\n 'contains': '$contains',\n 'notcontains': '$notContains',\n 'not_contains': '$notContains',\n 'like': '$contains',\n 'startswith': '$startsWith',\n 'starts_with': '$startsWith',\n 'endswith': '$endsWith',\n 'ends_with': '$endsWith',\n 'between': '$between',\n 'is_null': '$null',\n 'is_not_null': '$null',\n};\n\n/**\n * Convert a single AST comparison node `[field, operator, value]` to a FilterCondition object.\n */\nfunction convertComparison(node: [string, string, unknown]): FilterCondition {\n const [field, operator, value] = node;\n const op = operator.toLowerCase();\n\n // Special case: equality shorthand\n if (op === '=' || op === '==') {\n return { [field]: value } as FilterCondition;\n }\n\n // Null check operators\n if (op === 'is_null') {\n return { [field]: { $null: true } } as FilterCondition;\n }\n if (op === 'is_not_null') {\n return { [field]: { $null: false } } as FilterCondition;\n }\n\n const mapped = AST_OPERATOR_MAP[op];\n if (mapped) {\n return { [field]: { [mapped]: value } } as FilterCondition;\n }\n\n // Fallback: use the operator as-is with $ prefix\n return { [field]: { [`$${op}`]: value } } as FilterCondition;\n}\n\n/**\n * Parse a filter from AST array format to FilterCondition object format.\n *\n * The AST array format is used by the ObjectUI client and the `FilterBuilder`:\n * - Comparison: `[field, operator, value]` → `{ field: value }` or `{ field: { $op: value } }`\n * - Logical AND: `[\"and\", cond1, cond2, ...]` → `{ $and: [...] }`\n * - Logical OR: `[\"or\", cond1, cond2, ...]` → `{ $or: [...] }`\n *\n * If the input is already a FilterCondition object (not an array), it is returned as-is.\n * If the input is `null` or `undefined`, it is returned as-is.\n *\n * @example\n * // Simple condition\n * parseFilterAST([\"status\", \"=\", \"active\"])\n * // → { status: \"active\" }\n *\n * @example\n * // Compound AND\n * parseFilterAST([\"and\", [\"priority\", \"=\", \"high\"], [\"status\", \"=\", \"active\"]])\n * // → { $and: [{ priority: \"high\" }, { status: \"active\" }] }\n *\n * @example\n * // Object passthrough\n * parseFilterAST({ status: \"active\" })\n * // → { status: \"active\" }\n */\nexport function parseFilterAST(filter: unknown): FilterCondition | undefined {\n if (filter == null) return undefined;\n if (!Array.isArray(filter)) return filter as FilterCondition;\n if (filter.length === 0) return undefined;\n\n const first = filter[0];\n\n // Logical node: [\"and\", cond1, cond2, ...] or [\"or\", cond1, cond2, ...]\n if (typeof first === 'string' && (first.toLowerCase() === 'and' || first.toLowerCase() === 'or')) {\n const logicOp = `$${first.toLowerCase()}` as '$and' | '$or';\n const children = filter.slice(1).map((child: unknown) => parseFilterAST(child)).filter(Boolean) as FilterCondition[];\n if (children.length === 0) return undefined;\n if (children.length === 1) return children[0];\n return { [logicOp]: children } as FilterCondition;\n }\n\n // Comparison node: [field, operator, value]\n if (filter.length >= 2 && typeof first === 'string') {\n return convertComparison(filter as [string, string, unknown]);\n }\n\n // Legacy flat array: [[field, op, val], [field, op, val], ...]\n // All elements are sub-arrays → treat as implicit AND\n if (filter.every((item: unknown) => Array.isArray(item))) {\n const children = filter.map((child: unknown) => parseFilterAST(child)).filter(Boolean) as FilterCondition[];\n if (children.length === 0) return undefined;\n if (children.length === 1) return children[0];\n return { $and: children } as FilterCondition;\n }\n\n return undefined;\n}\n\n// ============================================================================\n// Constants & Metadata\n// ============================================================================\n\n/**\n * All supported operator keys.\n * Useful for validation and parsing.\n */\nexport const FILTER_OPERATORS = [\n // Equality\n '$eq', '$ne',\n // Comparison\n '$gt', '$gte', '$lt', '$lte',\n // Set & Range\n '$in', '$nin', '$between',\n // String\n '$contains', '$notContains', '$startsWith', '$endsWith',\n // Special\n '$null', '$exists',\n] as const;\n\n/**\n * Logical operator keys.\n */\nexport const LOGICAL_OPERATORS = ['$and', '$or', '$not'] as const;\n\n/**\n * All operator keys (field + logical).\n */\nexport const ALL_OPERATORS = [...FILTER_OPERATORS, ...LOGICAL_OPERATORS] as const;\n\nexport type FilterOperatorKey = typeof FILTER_OPERATORS[number];\nexport type LogicalOperatorKey = typeof LOGICAL_OPERATORS[number];\nexport type OperatorKey = typeof ALL_OPERATORS[number];\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ProtectionSchema } from '../shared/protection.zod';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ChartTypeSchema, ChartConfigSchema } from './chart.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Color variant for dashboard widgets (e.g., KPI cards).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WidgetColorVariantSchema = lazySchema(() => z.enum([\n 'default',\n 'blue',\n 'teal',\n 'orange',\n 'purple',\n 'success',\n 'warning',\n 'danger',\n]).describe('Widget color variant'));\n\n/**\n * Action type for widget action buttons.\n */\nexport const WidgetActionTypeSchema = lazySchema(() => z.enum([\n 'script',\n 'url',\n 'modal',\n 'flow',\n 'api',\n]).describe('Widget action type'));\n\n/**\n * Dashboard Header Action Schema\n * An action button displayed in the dashboard header area.\n */\nexport const DashboardHeaderActionSchema = lazySchema(() => z.object({\n /** Action label */\n label: I18nLabelSchema.describe('Action button label'),\n\n /** Action URL or target */\n actionUrl: z.string().describe('URL or target for the action'),\n\n /** Action type */\n actionType: WidgetActionTypeSchema.optional().describe('Type of action'),\n\n /** Icon identifier */\n icon: z.string().optional().describe('Icon identifier for the action button'),\n}).describe('Dashboard header action'));\n\n/**\n * Dashboard Header Schema\n * Structured header configuration for the dashboard.\n */\nexport const DashboardHeaderSchema = lazySchema(() => z.object({\n /** Whether to show the dashboard title in the header */\n showTitle: z.boolean().default(true).describe('Show dashboard title in header'),\n\n /** Whether to show the dashboard description in the header */\n showDescription: z.boolean().default(true).describe('Show dashboard description in header'),\n\n /** Action buttons displayed in the header */\n actions: z.array(DashboardHeaderActionSchema).optional().describe('Header action buttons'),\n}).describe('Dashboard header configuration'));\n\n/**\n * Dashboard Widget Schema\n * A single component on the dashboard grid.\n */\nexport const DashboardWidgetSchema = lazySchema(() => z.object({\n /** Unique widget identifier (snake_case, used for targetWidgets references) */\n id: SnakeCaseIdentifierSchema.describe('Unique widget identifier (snake_case)'),\n\n /** Widget Title */\n title: I18nLabelSchema.optional().describe('Widget title'),\n\n /** Widget Description (displayed below the title) */\n description: I18nLabelSchema.optional().describe('Widget description text below the header'),\n \n /** Visualization Type */\n type: ChartTypeSchema.default('metric').describe('Visualization type'),\n \n /** Chart Configuration */\n chartConfig: ChartConfigSchema.optional().describe('Chart visualization configuration'),\n\n /** Color variant for the widget (e.g., KPI card accent color) */\n colorVariant: WidgetColorVariantSchema.optional().describe('Widget color variant for theming'),\n\n /**\n * Runtime capability gate — widget is hidden when the named object is\n * not registered in the runtime's SchemaRegistry. Mirrors\n * `NavigationItem.requiresObject` so cloud-only widgets (e.g. those\n * keyed on `sys_app` / `sys_package_installation`) silently disappear\n * in single-environment runtimes instead of rendering a 404 error.\n * Set explicitly to the dataset's base object when the widget should be\n * gated on that object's availability.\n */\n requiresObject: z.string().optional().describe('Hide the widget unless the named object is registered'),\n\n /**\n * Runtime capability gate — widget is hidden when the named kernel\n * service is not registered. Mirrors `NavigationItem.requiresService`.\n */\n requiresService: z.string().optional().describe('Hide the widget unless the named kernel service is registered'),\n\n /** Action URL for the widget header action button */\n actionUrl: z.string().optional().describe('URL or target for the widget action button'),\n\n /** Action type for the widget header action button */\n actionType: WidgetActionTypeSchema.optional().describe('Type of action for the widget action button'),\n\n /** Icon for the widget header action button */\n actionIcon: z.string().optional().describe('Icon identifier for the widget action button'),\n \n /** Presentation-scope filter (MongoDB-style), ANDed into the dataset query as `runtimeFilter`. */\n filter: FilterConditionSchema.optional().describe('Presentation-scope filter (runtimeFilter)'),\n\n /**\n * Period-over-period comparison primitive.\n *\n * When set, the renderer runs a second query against a shifted time\n * window and surfaces the delta (metric widgets show a secondary\n * value + arrow; chart widgets render a muted/dashed overlay series).\n *\n * - `'previousPeriod'` — auto-detect the comparison window from the\n * widget's `filter` date macros (e.g. `{current_month_start}` →\n * `{last_month_start}`). Falls back to no comparison when the\n * filter contains no resolvable date range.\n * - `'previousYear'` — shift the resolved filter window back by one\n * calendar year.\n * - `{ offset: '7d' | '1M' | '1y' }` — shift by an explicit\n * ISO-8601-like duration. Units: `d` (days), `w` (weeks),\n * `M` (months), `y` (years).\n */\n compareTo: z.union([\n z.literal('previousPeriod'),\n z.literal('previousYear'),\n z.object({\n offset: z.string().regex(/^\\d+[dwMy]$/, 'Offset must match <N>(d|w|M|y), e.g. \"7d\", \"1M\", \"1y\"'),\n }),\n ]).optional().describe('Period-over-period comparison window'),\n\n /**\n * ADR-0021 — the semantic-layer `dataset` this widget binds to. The widget\n * selects the dataset's dimensions/measures BY NAME; the dataset owns the base\n * object, allowed joins, intrinsic filter, dimensions, and certified measures,\n * so numbers stay consistent across every surface. This is the single\n * author-facing analytics shape (the legacy inline `object` + `categoryField`\n * + `valueField` + `aggregate` query was removed in the single-form cutover).\n */\n dataset: SnakeCaseIdentifierSchema.describe('Dataset name to bind (ADR-0021)'),\n /** Dimension names (from the dataset) for X / group / split. */\n dimensions: z.array(z.string()).optional().describe('Dimension names — X/group/split'),\n /** Measure names (from the dataset) for the value axis. */\n values: z.array(z.string()).min(1).describe('Measure names — Y (at least one)'),\n\n /**\n * Layout Position (React-Grid-Layout style)\n * x: column (0-11)\n * y: row\n * w: width (1-12)\n * h: height\n */\n layout: z.object({\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n }).describe('Grid layout position'),\n \n /** Widget specific options (colors, legend, etc.) */\n options: z.unknown().optional().describe('Widget specific configuration'),\n\n /**\n * Rule ids of build diagnostics intentionally suppressed on this widget\n * (e.g. `'table-count-only'` when a single-row summary table is deliberate).\n * Consumed by `objectstack build` / `objectstack lint`; no runtime effect.\n */\n suppressWarnings: z.array(z.string()).optional().describe('Build diagnostic rule ids suppressed on this widget'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n // ADR-0021 single-form: every widget binds a `dataset` and selects `values`\n // (both required above) — there is no inline-query shape to disambiguate.\n}));\n\n/**\n * Dynamic options binding for global filters.\n * Allows dropdown options to be fetched from an object at runtime.\n */\nexport const GlobalFilterOptionsFromSchema = lazySchema(() => z.object({\n /** Source object name to fetch options from */\n object: z.string().describe('Source object name'),\n\n /** Field to use as option value */\n valueField: z.string().describe('Field to use as option value'),\n\n /** Field to use as option label */\n labelField: z.string().describe('Field to use as option label'),\n\n /** Optional filter to apply when fetching options */\n filter: FilterConditionSchema.optional().describe('Filter to apply to source object'),\n}).describe('Dynamic filter options from object'));\n\n/**\n * Global Filter Schema\n * Defines a single global filter control for the dashboard filter bar.\n */\nexport const GlobalFilterSchema = lazySchema(() => z.object({\n /** Field name to filter on */\n field: z.string().describe('Field name to filter on'),\n\n /** Display label for the filter */\n label: I18nLabelSchema.optional().describe('Display label for the filter'),\n\n /** Filter input type */\n type: z.enum(['text', 'select', 'date', 'number', 'lookup']).optional().describe('Filter input type'),\n\n /** Static options for select/lookup filters */\n options: z.array(z.object({\n value: z.union([z.string(), z.number(), z.boolean()]).describe('Option value'),\n label: I18nLabelSchema,\n })).optional().describe('Static filter options'),\n\n /** Dynamic data binding for filter options */\n optionsFrom: GlobalFilterOptionsFromSchema.optional().describe('Dynamic filter options from object'),\n\n /** Default filter value */\n defaultValue: z.union([z.string(), z.number(), z.boolean()]).optional().describe('Default filter value'),\n\n /** Filter application scope */\n scope: z.enum(['dashboard', 'widget']).default('dashboard').describe('Filter application scope'),\n\n /** Widget IDs to apply this filter to (when scope is widget) */\n targetWidgets: z.array(z.string()).optional().describe('Widget IDs to apply this filter to'),\n}));\n\n/**\n * Dashboard Schema\n * Represents a page containing multiple visualizations.\n * \n * @example Sales Executive Dashboard\n * {\n * name: \"sales_overview\",\n * label: \"Sales Executive Overview\",\n * widgets: [\n * {\n * title: \"Total Pipe\",\n * type: \"metric\",\n * object: \"opportunity\",\n * valueField: \"amount\",\n * aggregate: \"sum\",\n * layout: { x: 0, y: 0, w: 3, h: 2 }\n * },\n * {\n * title: \"Revenue by Region\",\n * type: \"bar\",\n * object: \"order\",\n * categoryField: \"region\",\n * valueField: \"total\",\n * aggregate: \"sum\",\n * layout: { x: 3, y: 0, w: 6, h: 4 }\n * }\n * ]\n * }\n */\nexport const DashboardSchema = lazySchema(() => z.object({\n /** Machine name */\n name: SnakeCaseIdentifierSchema.describe('Dashboard unique name'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Dashboard label'),\n \n /** Description */\n description: I18nLabelSchema.optional().describe('Dashboard description'),\n\n /** Structured header configuration */\n header: DashboardHeaderSchema.optional().describe('Dashboard header configuration'),\n \n /** Collection of widgets */\n widgets: z.array(DashboardWidgetSchema).describe('Widgets to display'),\n\n /** Grid column count — defaults to 12 for a standard 12-column grid */\n columns: z.number().int().min(1).max(24).optional().describe('Number of grid columns (default 12)'),\n\n /** Grid gap in Tailwind spacing units (e.g. 4 = 1rem) */\n gap: z.number().int().min(0).optional().describe('Grid gap in Tailwind spacing units'),\n\n /** Auto-refresh */\n refreshInterval: z.number().optional().describe('Auto-refresh interval in seconds'),\n\n /** Dashboard Date Range (Global time filter) */\n dateRange: z.object({\n field: z.string().optional().describe('Default date field name for time-based filtering'),\n defaultRange: z.enum(['today', 'yesterday', 'this_week', 'last_week', 'this_month', 'last_month', 'this_quarter', 'last_quarter', 'this_year', 'last_year', 'last_7_days', 'last_30_days', 'last_90_days', 'custom']).default('this_month').describe('Default date range preset'),\n allowCustomRange: z.boolean().default(true).describe('Allow users to pick a custom date range'),\n }).optional().describe('Global dashboard date range filter configuration'),\n\n /** Global Filters */\n globalFilters: z.array(GlobalFilterSchema).optional().describe('Global filters that apply to all widgets in the dashboard'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n /**\n * ADR-0010 §3.7 — Package-level protection envelope. Package\n * authors declare lock policy here; the loader translates it\n * into the private `_lock` envelope at registration time and\n * strips this block before persistence. See\n * `shared/protection.zod.ts`.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this dashboard.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n\n}));\n\nexport type Dashboard = z.infer<typeof DashboardSchema>;\nexport type DashboardInput = z.input<typeof DashboardSchema>;\nexport type DashboardWidget = z.infer<typeof DashboardWidgetSchema>;\nexport type DashboardHeader = z.infer<typeof DashboardHeaderSchema>;\nexport type DashboardHeaderAction = z.infer<typeof DashboardHeaderActionSchema>;\nexport type WidgetColorVariant = z.infer<typeof WidgetColorVariantSchema>;\nexport type WidgetActionType = z.infer<typeof WidgetActionTypeSchema>;\nexport type GlobalFilter = z.infer<typeof GlobalFilterSchema>;\nexport type GlobalFilterOptionsFrom = z.infer<typeof GlobalFilterOptionsFromSchema>;\n\n/**\n * Dashboard Factory Helper\n */\nexport const Dashboard = {\n create: (config: z.input<typeof DashboardSchema>): Dashboard => DashboardSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ProtectionSchema } from '../shared/protection.zod';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ChartConfigSchema } from './chart.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Report Type Enum\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ReportType = z.enum([\n 'tabular', // Simple list\n 'summary', // Grouped by row\n 'matrix', // Grouped by row and column\n 'joined' // Joined multiple blocks\n]);\n\n/**\n * Report Column Schema\n */\nexport const ReportColumnSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name'),\n label: I18nLabelSchema.optional().describe('Override label'),\n aggregate: z.enum(['sum', 'avg', 'max', 'min', 'count', 'unique']).optional().describe('Aggregation function'),\n /** Responsive visibility/priority per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive visibility for this column'),\n}));\n\n/**\n * Report Grouping Schema\n */\nexport const ReportGroupingSchema = lazySchema(() => z.object({\n field: z.string().describe('Field to group by'),\n sortOrder: z.enum(['asc', 'desc']).default('asc'),\n dateGranularity: z.enum(['day', 'week', 'month', 'quarter', 'year']).optional().describe('For date fields'),\n}));\n\n/**\n * Report Chart Schema\n * Embedded visualization configuration using unified chart taxonomy.\n */\nexport const ReportChartSchema = lazySchema(() => ChartConfigSchema.extend({\n /** Report-specific chart configuration */\n xAxis: z.string().describe('Grouping field for X-Axis'),\n yAxis: z.string().describe('Summary field for Y-Axis'),\n groupBy: z.string().optional().describe('Additional grouping field'),\n}));\n\n/**\n * Joined Report Block Schema\n *\n * Represents a single sub-report inside a `type: 'joined'` report. Each block\n * is a self-contained, independently-queried report stacked vertically (or\n * arranged in a grid) inside the joined container. Blocks are used for\n * comparative dashboards where each panel is a different slice of the same\n * domain — e.g. \"new customers / churned / silent\" in a customer-churn\n * report, or \"new / qualified / closed\" in a lead-funnel report.\n *\n * Blocks may declare their own filter (combined with the container filter\n * via `$and` at render time) and their own grouping / aggregation.\n *\n * Notes for implementers:\n * - `type` defaults to `tabular` — leave a block's type implicit if the\n * sub-report is just a list. Set explicitly to `summary` or `matrix` for\n * aggregated blocks.\n * - The schema is intentionally permissive about the column shape: blocks\n * are not allowed to be themselves `joined` (no recursion).\n */\nexport const JoinedReportBlockSchema: z.ZodTypeAny = lazySchema(() => z.object({\n /** Stable id for the block (used as react key, telemetry, deeplinks). */\n name: SnakeCaseIdentifierSchema,\n /** Human label shown above the block. Falls back to `name`. */\n label: I18nLabelSchema.optional(),\n /** Optional description rendered below the label. */\n description: I18nLabelSchema.optional(),\n /** Block report type — `joined` is intentionally excluded (no recursion). */\n type: z.enum(['tabular', 'summary', 'matrix']).default('tabular'),\n /** Optional inline chart configuration. */\n chart: ReportChartSchema.optional(),\n\n /**\n * ADR-0021 — the dataset this block binds to (single-form). The block selects\n * the dataset's measures by name; the legacy inline `objectName` + `columns` +\n * `groupings` query was removed in the cutover.\n */\n dataset: SnakeCaseIdentifierSchema.optional().describe('Dataset name to bind (ADR-0021)'),\n /** Dimension names (from the dataset) to group rows by. Dataset-bound only. */\n rows: z.array(z.string()).optional().describe('Dimension names down (dataset-bound)'),\n /** Dimension names across — matrix blocks pivot rows × columns (ADR-0021 D2). */\n columns: z.array(z.string()).optional().describe('Dimension names across (matrix, dataset-bound)'),\n /** Measure names (from the dataset) to display. Dataset-bound only. */\n values: z.array(z.string()).optional().describe('Measure names to show (dataset-bound)'),\n /** Render-time scope filter, ANDed at query time. Dataset-bound only. */\n runtimeFilter: FilterConditionSchema.optional().describe('Render-time scope filter (dataset-bound)'),\n}));\n\n/**\n * Report Schema\n * Deep data analysis definition.\n */\nexport const ReportSchema = lazySchema(() => z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Report unique name'),\n label: I18nLabelSchema.describe('Report label'),\n description: I18nLabelSchema.optional(),\n\n /** Report Configuration */\n type: ReportType.default('tabular').describe('Report format type'),\n\n /**\n * ADR-0021 — the semantic-layer `dataset` this report binds to. The report\n * renders the dataset's named measures grouped by the chosen `rows`\n * dimensions — numbers stay consistent with every other surface using the\n * same dataset. This is the single author-facing analytics shape (the legacy\n * inline `objectName` + `columns` + `groupings` query was removed in the\n * single-form cutover). For a `joined` report, the data lives on `blocks`.\n */\n dataset: SnakeCaseIdentifierSchema.optional().describe('Dataset name to bind (ADR-0021)'),\n /** Dimension names (from the dataset) to group rows by (down axis). */\n rows: z.array(z.string()).optional().describe('Dimension names down'),\n /**\n * Dimension names across (ADR-0021 D2) — a `matrix` report pivots\n * `rows` × `columns` with `values` in the cells. Ignored for other types.\n */\n columns: z.array(z.string()).optional().describe('Dimension names across (matrix)'),\n /** Measure names (from the dataset) to display. */\n values: z.array(z.string()).optional().describe('Measure names to show'),\n /** Render-time scope filter, ANDed at query time. */\n runtimeFilter: FilterConditionSchema.optional().describe('Render-time scope filter'),\n /**\n * ADR-0021 D2 — click an aggregated row/cell to open the underlying\n * records (dataset-backed; the host resolves the dataset's object and\n * dimension→field mapping). Default on; set `false` to disable.\n */\n drilldown: z.boolean().default(true).describe('Click-through to underlying records'),\n\n /** Visualization */\n chart: ReportChartSchema.optional().describe('Embedded chart configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n\n /**\n * Joined report blocks — only meaningful when `type: 'joined'`.\n *\n * A joined report renders multiple independent sub-reports stacked\n * vertically in the same view. Each block declares its own object,\n * columns, groupings and filter. The container-level `filter` is ANDed\n * into every block at query time so a top-level scope (e.g. \"this\n * quarter\") flows down without per-block duplication.\n *\n * Renderers must ignore `blocks` when `type !== 'joined'`.\n */\n blocks: z.array(JoinedReportBlockSchema).optional().describe('Sub-reports for type=joined'),\n /**\n * ADR-0010 §3.7 — Package-level protection envelope. Package\n * authors declare lock policy here; the loader translates it\n * into the private `_lock` envelope at registration time and\n * strips this block before persistence. See\n * `shared/protection.zod.ts`.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this report.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n\n}).superRefine((r, ctx) => {\n // ADR-0021 single-form: a report is dataset-bound. A `joined` report carries\n // its data on `blocks` (each block dataset-bound); every other type needs a\n // top-level `dataset` + `values`.\n if (r.type === 'joined') {\n if (!r.blocks || r.blocks.length === 0) {\n ctx.addIssue({ code: 'custom', message: 'a `joined` report needs `blocks`.', path: ['blocks'] });\n }\n } else if (!r.dataset || !r.values || r.values.length === 0) {\n ctx.addIssue({\n code: 'custom',\n message: 'a report needs `dataset` + `values` (measure names).',\n path: ['dataset'],\n });\n }\n}));\n\nexport type JoinedReportBlock = z.infer<typeof JoinedReportBlockSchema>;\nexport type JoinedReportBlockInput = z.input<typeof JoinedReportBlockSchema>;\n\n/**\n * Report Types\n * \n * Note: For configuration/definition contexts, use the Input types (e.g., ReportInput)\n * which allow optional fields with defaults to be omitted.\n */\nexport type Report = z.infer<typeof ReportSchema>;\nexport type ReportColumn = z.infer<typeof ReportColumnSchema>;\nexport type ReportGrouping = z.infer<typeof ReportGroupingSchema>;\nexport type ReportChart = z.infer<typeof ReportChartSchema>;\n\n/**\n * Input Types for Report Configuration\n * Use these when defining reports in configuration files.\n */\nexport type ReportInput = z.input<typeof ReportSchema>;\nexport type ReportColumnInput = z.input<typeof ReportColumnSchema>;\nexport type ReportGroupingInput = z.input<typeof ReportGroupingSchema>;\nexport type ReportChartInput = z.input<typeof ReportChartSchema>;\n\n/**\n * Report Factory Helper\n */\nexport const Report = {\n create: (config: ReportInput): Report => ReportSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from './filter.zod';\n\n/**\n * Sort Node\n * Represents \"Order By\".\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SortNodeSchema = lazySchema(() => z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc']).default('asc')\n}));\n\n/**\n * Aggregation Function Enum\n * Standard aggregation functions for data analysis.\n * \n * Supported Functions:\n * - **count**: Count rows (SQL: COUNT(*) or COUNT(field))\n * - **sum**: Sum numeric values (SQL: SUM(field))\n * - **avg**: Average numeric values (SQL: AVG(field))\n * - **min**: Minimum value (SQL: MIN(field))\n * - **max**: Maximum value (SQL: MAX(field))\n * - **count_distinct**: Count unique values (SQL: COUNT(DISTINCT field))\n * - **array_agg**: Aggregate values into array (SQL: ARRAY_AGG(field))\n * - **string_agg**: Concatenate values (SQL: STRING_AGG(field, delimiter))\n * \n * Performance Considerations:\n * - COUNT(*) is typically faster than COUNT(field) as it doesn't check for nulls\n * - COUNT DISTINCT may require additional memory for tracking unique values\n * - Window aggregates (with OVER clause) can be more efficient than subqueries\n * - Large GROUP BY operations benefit from proper indexing on grouped fields\n * \n * @example\n * // SQL: SELECT region, SUM(amount) FROM sales GROUP BY region\n * {\n * object: 'sales',\n * fields: ['region'],\n * aggregations: [\n * { function: 'sum', field: 'amount', alias: 'total_sales' }\n * ],\n * groupBy: ['region']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT COUNT(Id) FROM Account\n * {\n * object: 'account',\n * aggregations: [\n * { function: 'count', alias: 'total_accounts' }\n * ]\n * }\n */\nexport const AggregationFunction = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'array_agg', 'string_agg'\n]);\n\n/**\n * Date Granularity Enum\n * Used to bucket date/timestamp fields into uniform periods during GROUP BY.\n *\n * Backends MAY emit `DATE_TRUNC` (PostgreSQL), `DATE_FORMAT` (MySQL),\n * `$dateTrunc` (MongoDB), or any other equivalent. When a driver does not\n * support server-side truncation the engine falls back to an in-memory bucket\n * using ISO-8601 conventions (weeks start Monday).\n */\nexport const DateGranularity = z.enum(['day', 'week', 'month', 'quarter', 'year']);\n\n/**\n * GroupBy Node\n *\n * A grouping target — either a bare field name (string) for plain grouping,\n * or a structured object that adds `dateGranularity` for time-bucketed\n * grouping. The string form remains the canonical short-hand:\n *\n * ```ts\n * groupBy: ['region', { field: 'closed_at', dateGranularity: 'quarter' }]\n * ```\n *\n * This is backward-compatible: every existing `groupBy: ['region']` payload\n * continues to validate.\n */\nexport const GroupByNodeSchema = lazySchema(() => z.union([\n z.string(),\n z.object({\n field: z.string().describe('Field to group by'),\n dateGranularity: DateGranularity.optional().describe('Bucket date values into uniform periods (day/week/month/quarter/year)'),\n /** Optional alias for the projected group value (defaults to `field`). */\n alias: z.string().optional().describe('Alias for the projected group value'),\n }),\n]));\n\n/**\n * Aggregation Node\n * Represents an aggregated field with function.\n * \n * Aggregations summarize data across groups of rows (GROUP BY).\n * Used with `groupBy` to create analytical queries.\n * \n * @example\n * // SQL: SELECT customer_id, COUNT(*), SUM(amount) FROM orders GROUP BY customer_id\n * {\n * object: 'order',\n * fields: ['customer_id'],\n * aggregations: [\n * { function: 'count', alias: 'order_count' },\n * { function: 'sum', field: 'amount', alias: 'total_amount' }\n * ],\n * groupBy: ['customer_id']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT LeadSource, COUNT(Id) FROM Lead GROUP BY LeadSource\n * {\n * object: 'lead',\n * fields: ['lead_source'],\n * aggregations: [\n * { function: 'count', alias: 'lead_count' }\n * ],\n * groupBy: ['lead_source']\n * }\n */\nexport const AggregationNodeSchema = lazySchema(() => z.object({\n function: AggregationFunction.describe('Aggregation function'),\n field: z.string().optional().describe('Field to aggregate (optional for COUNT(*))'),\n alias: z.string().describe('Result column alias'),\n distinct: z.boolean().optional().describe('Apply DISTINCT before aggregation'),\n filter: FilterConditionSchema.optional().describe('Filter/Condition to apply to the aggregation (FILTER WHERE clause)'),\n}));\n\n/**\n * Join Type Enum\n * Standard SQL join types for combining tables.\n * \n * Join Types:\n * - **inner**: Returns only matching rows from both tables (SQL: INNER JOIN)\n * - **left**: Returns all rows from left table, matching rows from right (SQL: LEFT JOIN)\n * - **right**: Returns all rows from right table, matching rows from left (SQL: RIGHT JOIN)\n * - **full**: Returns all rows from both tables (SQL: FULL OUTER JOIN)\n * \n * @example\n * // SQL: SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * on: ['order.customer_id', '=', 'customer.id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL-style: Find all customers and their orders (if any)\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * on: ['customer.id', '=', 'order.customer_id']\n * }\n * ]\n * }\n */\nexport const JoinType = z.enum(['inner', 'left', 'right', 'full']);\n\n/**\n * Join Execution Strategy\n * Hints to the query engine on how to execute the join.\n * \n * Strategies:\n * - **auto**: Engine decides best strategy (Default).\n * - **database**: Push down join to the database (Requires same datasource).\n * - **hash**: Load both sets into memory and hash join (Cross-datasource, memory intensive).\n * - **loop**: Nested loop lookup (N+1 safe version). (Good for small right-side lookups).\n */\nexport const JoinStrategy = z.enum(['auto', 'database', 'hash', 'loop']);\n\n/**\n * Join Node\n * Represents table joins for combining data from multiple objects.\n * \n * Joins connect related data across multiple tables using ON conditions.\n * Supports both direct object joins and subquery joins.\n * \n * @example\n * // SQL: SELECT o.*, c.name FROM orders o INNER JOIN customers c ON o.customer_id = c.id\n * {\n * object: 'order',\n * fields: ['id', 'amount'],\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Multi-table join\n * // SELECT * FROM orders o\n * // INNER JOIN customers c ON o.customer_id = c.id\n * // LEFT JOIN shipments s ON o.id = s.order_id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * },\n * {\n * type: 'left',\n * object: 'shipment',\n * alias: 's',\n * on: ['order.id', '=', 's.order_id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT Name, (SELECT LastName FROM Contacts) FROM Account\n * {\n * object: 'account',\n * fields: ['name'],\n * joins: [\n * {\n * type: 'left',\n * object: 'contact',\n * on: ['account.id', '=', 'contact.account_id']\n * }\n * ]\n * }\n * \n * @example\n * // Subquery Join: Join with a filtered/aggregated dataset\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * alias: 'high_value_orders',\n * on: ['customer.id', '=', 'high_value_orders.customer_id'],\n * subquery: {\n * object: 'order',\n * fields: ['customer_id', 'total'],\n * filters: ['total', '>', 1000]\n * }\n * }\n * ]\n * }\n */\nexport const JoinNodeSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n type: JoinType.describe('Join type'),\n strategy: JoinStrategy.optional().describe('Execution strategy hint'),\n object: z.string().describe('Object/table to join'),\n alias: z.string().optional().describe('Table alias'),\n on: FilterConditionSchema.describe('Join condition'),\n subquery: z.lazy(() => QuerySchema).optional().describe('Subquery instead of object'),\n })\n);\n\n/**\n * Window Function Enum\n * Advanced analytical functions for row-based calculations.\n * \n * Window Functions:\n * - **row_number**: Sequential number within partition (SQL: ROW_NUMBER() OVER (...))\n * - **rank**: Rank with gaps for ties (SQL: RANK() OVER (...))\n * - **dense_rank**: Rank without gaps (SQL: DENSE_RANK() OVER (...))\n * - **percent_rank**: Relative rank as percentage (SQL: PERCENT_RANK() OVER (...))\n * - **lag**: Access previous row value (SQL: LAG(field) OVER (...))\n * - **lead**: Access next row value (SQL: LEAD(field) OVER (...))\n * - **first_value**: First value in window (SQL: FIRST_VALUE(field) OVER (...))\n * - **last_value**: Last value in window (SQL: LAST_VALUE(field) OVER (...))\n * - **sum/avg/count/min/max**: Aggregates over window (SQL: SUM(field) OVER (...))\n * \n * @example\n * // SQL: SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY amount DESC) as rank\n * // FROM orders\n * {\n * object: 'order',\n * fields: ['id', 'customer_id', 'amount'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'rank',\n * over: {\n * partitionBy: ['customer_id'],\n * orderBy: [{ field: 'amount', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Running total with SUM() OVER (...)\n * {\n * object: 'transaction',\n * fields: ['date', 'amount'],\n * windowFunctions: [\n * {\n * function: 'sum',\n * field: 'amount',\n * alias: 'running_total',\n * over: {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: 'UNBOUNDED PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunction = z.enum([\n 'row_number', 'rank', 'dense_rank', 'percent_rank',\n 'lag', 'lead', 'first_value', 'last_value',\n 'sum', 'avg', 'count', 'min', 'max'\n]);\n\n/**\n * Window Specification\n * Defines PARTITION BY and ORDER BY for window functions.\n * \n * Window specifications control how window functions compute values:\n * - **partitionBy**: Divide rows into groups (like GROUP BY but without collapsing rows)\n * - **orderBy**: Define order for ranking and offset functions\n * - **frame**: Specify which rows to include in aggregate calculations\n * \n * @example\n * // Partition by department, order by salary\n * {\n * partitionBy: ['department'],\n * orderBy: [{ field: 'salary', order: 'desc' }]\n * }\n * \n * @example\n * // Moving average with frame specification\n * {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: '6 PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n */\nexport const WindowSpecSchema = lazySchema(() => z.object({\n partitionBy: z.array(z.string()).optional().describe('PARTITION BY fields'),\n orderBy: z.array(SortNodeSchema).optional().describe('ORDER BY specification'),\n frame: z.object({\n type: z.enum(['rows', 'range']).optional(),\n start: z.string().optional().describe('Frame start (e.g., \"UNBOUNDED PRECEDING\", \"1 PRECEDING\")'),\n end: z.string().optional().describe('Frame end (e.g., \"CURRENT ROW\", \"1 FOLLOWING\")'),\n }).optional().describe('Window frame specification'),\n}));\n\n/**\n * Window Function Node\n * Represents window function with OVER clause.\n * \n * Window functions perform calculations across a set of rows related to the current row,\n * without collapsing the result set (unlike GROUP BY aggregations).\n * \n * @example\n * // SQL: Top 3 products per category\n * // SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY sales DESC) as rank\n * // FROM products\n * {\n * object: 'product',\n * fields: ['name', 'category', 'sales'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'category_rank',\n * over: {\n * partitionBy: ['category'],\n * orderBy: [{ field: 'sales', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Year-over-year comparison with LAG\n * {\n * object: 'monthly_sales',\n * fields: ['month', 'revenue'],\n * windowFunctions: [\n * {\n * function: 'lag',\n * field: 'revenue',\n * alias: 'prev_year_revenue',\n * over: {\n * orderBy: [{ field: 'month', order: 'asc' }]\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunctionNodeSchema = lazySchema(() => z.object({\n function: WindowFunction.describe('Window function name'),\n field: z.string().optional().describe('Field to operate on (for aggregate window functions)'),\n alias: z.string().describe('Result column alias'),\n over: WindowSpecSchema.describe('Window specification (OVER clause)'),\n}));\n\n/**\n * Field Selection Node\n * Represents \"Select\" attributes, including joins.\n */\nexport const FieldNodeSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n z.string(), // Primitive field: \"name\"\n z.object({\n field: z.string(), // Relationship field: \"owner\"\n fields: z.array(FieldNodeSchema).optional(), // Nested select: [\"name\", \"email\"]\n alias: z.string().optional()\n })\n ])\n);\n\n/**\n * Full-Text Search Configuration\n * Defines full-text search parameters for text queries.\n * \n * Supports:\n * - Multi-field search\n * - Relevance scoring\n * - Fuzzy matching\n * - Language-specific analyzers\n * \n * @example\n * {\n * query: \"John Smith\",\n * fields: [\"name\", \"email\", \"description\"],\n * fuzzy: true,\n * boost: { \"name\": 2.0, \"email\": 1.5 }\n * }\n */\nexport const FullTextSearchSchema = lazySchema(() => z.object({\n query: z.string().describe('Search query text'),\n fields: z.array(z.string()).optional().describe('Fields to search in (if not specified, searches all text fields)'),\n fuzzy: z.boolean().optional().default(false).describe('Enable fuzzy matching (tolerates typos)'),\n operator: z.enum(['and', 'or']).optional().default('or').describe('Logical operator between terms'),\n boost: z.record(z.string(), z.number()).optional().describe('Field-specific relevance boosting (field name -> boost factor)'),\n minScore: z.number().optional().describe('Minimum relevance score threshold'),\n language: z.string().optional().describe('Language for text analysis (e.g., \"en\", \"zh\", \"es\")'),\n highlight: z.boolean().optional().default(false).describe('Enable search result highlighting'),\n}));\n\nexport type FullTextSearch = z.infer<typeof FullTextSearchSchema>;\n\n/**\n * Query AST Schema\n * The universal data retrieval contract defined in `ast-structure.mdx`.\n * \n * This schema represents ObjectQL - a universal query language that abstracts\n * SQL, NoSQL, and SaaS APIs into a single unified interface.\n * \n * Updates (v2):\n * - Aligned with modern ORM standards (Prisma/TypeORM)\n * - Added `cursor` based pagination support\n * - Renamed `top`/`skip` to `limit`/`offset`\n * - Unified filtering syntax with `FilterConditionSchema`\n * \n * Updates (v3):\n * - Added `search` parameter for full-text search (P2 requirement)\n * \n * @example\n * // Simple query: SELECT name, email FROM account WHERE status = 'active'\n * {\n * object: 'account',\n * fields: ['name', 'email'],\n * where: { status: 'active' }\n * }\n * \n * @example\n * // Pagination with Limit/Offset\n * {\n * object: 'post',\n * where: { published: true },\n * orderBy: [{ field: 'created_at', order: 'desc' }],\n * limit: 20,\n * offset: 40\n * }\n * \n * @example\n * // Full-text search\n * {\n * object: 'article',\n * search: {\n * query: \"machine learning\",\n * fields: [\"title\", \"content\"],\n * fuzzy: true,\n * boost: { \"title\": 2.0 }\n * },\n * limit: 10\n * }\n */\nconst BaseQuerySchema = z.object({\n /** Target Entity */\n object: z.string().describe('Object name (e.g. account)'),\n \n /** Select Clause */\n fields: z.array(FieldNodeSchema).optional().describe('Fields to retrieve'),\n \n /** Where Clause (Filtering) */\n where: FilterConditionSchema.optional().describe('Filtering criteria (WHERE)'),\n \n /** Full-Text Search */\n search: FullTextSearchSchema.optional().describe('Full-text search configuration ($search parameter)'),\n \n /** Order By Clause (Sorting) */\n orderBy: z.array(SortNodeSchema).optional().describe('Sorting instructions (ORDER BY)'),\n \n /** Pagination */\n limit: z.number().optional().describe('Max records to return (LIMIT)'),\n offset: z.number().optional().describe('Records to skip (OFFSET)'),\n top: z.number().optional().describe('Alias for limit (OData compatibility)'),\n cursor: z.record(z.string(), z.unknown()).optional().describe('Cursor for keyset pagination'),\n \n /** Joins */\n joins: z.array(JoinNodeSchema).optional().describe('Explicit Table Joins'),\n \n /** Aggregations */\n aggregations: z.array(AggregationNodeSchema).optional().describe('Aggregation functions'),\n \n /** Group By Clause */\n groupBy: z.array(GroupByNodeSchema).optional().describe('GROUP BY targets (strings or `{field, dateGranularity?}` objects for date bucketing)'),\n \n /** Having Clause */\n having: FilterConditionSchema.optional().describe('HAVING clause for aggregation filtering'),\n \n /** Window Functions */\n windowFunctions: z.array(WindowFunctionNodeSchema).optional().describe('Window functions with OVER clause'),\n \n /** Subquery flag */\n distinct: z.boolean().optional().describe('SELECT DISTINCT flag'),\n});\n\n/**\n * QueryAST — Abstract Syntax Tree for data queries.\n *\n * The `expand` property enables recursive loading of related records through\n * lookup and master_detail fields. Each key is a relationship field name; the\n * value is a nested QueryAST that can further filter, select, sort, and expand\n * the related records (up to a default max depth of 3).\n *\n * @example\n * ```ts\n * const ast: QueryAST = {\n * object: 'task',\n * fields: ['title', 'assignee'],\n * expand: {\n * assignee: { object: 'user', fields: ['name', 'email'] },\n * project: {\n * object: 'project',\n * expand: { org: { object: 'org' } } // nested expand\n * }\n * }\n * };\n * ```\n */\nexport type QueryAST = z.infer<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryAST>;\n};\n\nexport type QueryInput = z.input<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryInput>;\n};\n\nexport const QuerySchema: z.ZodType<QueryAST> = lazySchema(() => BaseQuerySchema.extend({\n expand: z.lazy(() => z.record(z.string(), QuerySchema)).optional().describe(\n 'Recursive relation loading map. Keys are lookup/master_detail field names; '\n + 'values are nested QueryAST objects that control select, filter, sort, and '\n + 'further expansion on the related object. The engine resolves expand via '\n + 'batch $in queries (driver-agnostic) with a default max depth of 3.'\n ),\n}));\n\nexport type SortNode = z.infer<typeof SortNodeSchema>;\nexport type AggregationNode = z.infer<typeof AggregationNodeSchema>;\nexport type GroupByNode = z.infer<typeof GroupByNodeSchema>;\nexport type DateGranularityValue = z.infer<typeof DateGranularity>;\nexport type JoinNode = z.infer<typeof JoinNodeSchema>;\nexport type WindowFunctionNode = z.infer<typeof WindowFunctionNodeSchema>;\nexport type WindowSpec = z.infer<typeof WindowSpecSchema>;\n","// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { lazySchema } from '../shared/lazy-schema';\nimport { ProtectionSchema } from '../shared/protection.zod';\nimport { MetadataProtectionFields } from '../kernel/metadata-protection.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema } from './i18n.zod';\nimport { AggregationFunction, DateGranularity } from '../data/query.zod';\n\n/**\n * Analytics Dataset — the one semantic layer (ADR-0021).\n *\n * A `dataset` is a named, reusable analytical definition: a base object, the\n * relationships to include (joins are *derived* from the object graph — the\n * author never writes an `ON` clause), and the declared **dimensions**\n * (groupable axes) and **measures** (aggregatable values). It is deliberately\n * SMALLER than `QuerySchema`: no raw SQL, no hand-authored join predicates,\n * no window/having grammar in the author surface.\n *\n * Presentations (`report` / `dashboard`) bind to a dataset by reference and\n * pick dimensions/measures *by name*. The dataset compiles to the existing\n * Cube analytics runtime (ADR-0021 D-A=(c)); RLS / tenant scoping is enforced\n * by the runtime per joined object (D-C), never declared here.\n *\n * Naming: this module owns the high-prior `dataset` / `dimension` / `measure`\n * vocabulary (LookML / dbt / Cube / PowerBI). The Zod export identifiers are\n * `Dataset`-prefixed (`DatasetDimensionSchema`, `DatasetMeasureSchema`) so they\n * do not clash with the Cube layer's `DimensionSchema` / `MetricSchema` in\n * `data/analytics.zod.ts` while the two layers coexist (Phase 1). The Cube\n * layer is absorbed/retired in a later phase (D-A).\n */\n\n/**\n * Dimension — a groupable axis (e.g. \"region\", \"close_date by quarter\").\n */\nexport const DatasetDimensionSchema = lazySchema(() => z.object({\n /** Referenced by presentations (report rows/columns, widget dimensions). */\n name: SnakeCaseIdentifierSchema.describe('Dimension name — referenced by presentations'),\n label: I18nLabelSchema.optional(),\n /**\n * A field on the base object, OR a `relationship.field` path (e.g.\n * `account.region`). The join is DERIVED from the declared relationship in\n * `Dataset.include` — the author never writes a predicate.\n */\n field: z.string().describe('Base field or `relationship.field` path'),\n type: z.enum(['string', 'number', 'date', 'boolean', 'lookup']).optional(),\n /** Default bucketing for date dimensions (day/week/month/quarter/year). */\n dateGranularity: DateGranularity.optional(),\n}));\n\n/**\n * Derived-measure operator (ADR-0021 Q1).\n * A derived measure references OTHER measures BY NAME only — no raw fields,\n * no raw SQL — keeping it enumerable and reviewable.\n */\nexport const DerivedMeasureOp = z.enum(['ratio', 'sum', 'difference', 'product']);\n\n/**\n * Measure — an aggregatable value (e.g. \"revenue = sum(amount)\"). Defined ONCE\n * here; every presentation references it by name.\n */\nexport const DatasetMeasureSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Measure name — e.g. \"revenue\"; defined once'),\n label: I18nLabelSchema.optional(),\n /** Aggregation function — reuses the canonical query.zod enum. */\n aggregate: AggregationFunction.describe('Aggregation (sum/avg/count/...)'),\n /** Base or `relationship.field`. Optional for `count` (count(*)). */\n field: z.string().optional().describe('Aggregated field; optional for count(*)'),\n /** Measure-scoped filter (e.g. only won deals for \"won_amount\"). */\n filter: FilterConditionSchema.optional(),\n /** Display format, e.g. \"$0,0.00\", \"0.0%\". */\n format: z.string().optional(),\n /** Governance: a human-blessed metric — the review checkpoint. */\n certified: z.boolean().default(false).describe('Blessed metric (governance checkpoint)'),\n /**\n * Derived measure — computed from OTHER measures in this dataset by name\n * only. e.g. `{ op: 'ratio', of: ['won_amount', 'total_amount'] }`.\n * Mutually exclusive with `field`/`aggregate` semantics: when `derived` is\n * set, `aggregate` is ignored at compile time.\n */\n derived: z.object({\n op: DerivedMeasureOp,\n /** Names of other measures in this dataset (2+ for ratio/difference). */\n of: z.array(SnakeCaseIdentifierSchema).min(1),\n }).optional(),\n}));\n\n/**\n * Dataset — the single analytical source of truth (ADR-0021 D1).\n */\nexport const DatasetSchema = lazySchema(() => z.object({\n /** Identity. */\n name: SnakeCaseIdentifierSchema.describe('Dataset unique name'),\n label: I18nLabelSchema.describe('Dataset label'),\n description: I18nLabelSchema.optional(),\n\n /** Base object — the FROM. */\n object: z.string().describe('Base object name'),\n\n /**\n * Relationships to include, BY NAME (lookup / master_detail field names on\n * the object graph). Joins are COMPILED from these — the author writes no ON\n * clause. v1 (D-C): only declared relationships are joinable; no arbitrary\n * predicates.\n */\n include: z.array(z.string()).optional().describe('Relationship names to join (derived from object graph)'),\n\n /** Definition-level filter (the dataset's intrinsic scope, e.g. non-deleted). */\n filter: FilterConditionSchema.optional().describe('Intrinsic dataset scope filter'),\n\n /** The semantic contract presentations bind to. */\n dimensions: z.array(DatasetDimensionSchema).describe('Groupable axes'),\n measures: z.array(DatasetMeasureSchema).describe('Aggregatable values'),\n\n /**\n * ADR-0010 — package-author protection envelope; the loader translates this\n * into the private `_lock` envelope at registration and strips it before\n * persistence.\n */\n protection: ProtectionSchema.optional().describe(\n 'Package author protection block — lock policy for this dataset.',\n ),\n\n // ADR-0010 — runtime protection envelope (internal — set by loader).\n ...MetadataProtectionFields,\n}).superRefine((ds, ctx) => {\n // Measure names must be unique (presentations reference them by name).\n const measureNames = new Set<string>();\n for (const m of ds.measures) {\n if (measureNames.has(m.name)) {\n ctx.addIssue({ code: 'custom', message: `duplicate measure name \"${m.name}\"`, path: ['measures'] });\n }\n measureNames.add(m.name);\n }\n // Dimension names must be unique.\n const dimNames = new Set<string>();\n for (const d of ds.dimensions) {\n if (dimNames.has(d.name)) {\n ctx.addIssue({ code: 'custom', message: `duplicate dimension name \"${d.name}\"`, path: ['dimensions'] });\n }\n dimNames.add(d.name);\n }\n // Derived measures may only reference OTHER measures declared in this dataset.\n for (const m of ds.measures) {\n if (!m.derived) {\n // A non-derived measure needs a field unless it is a plain count.\n if (!m.field && m.aggregate !== 'count') {\n ctx.addIssue({\n code: 'custom',\n message: `measure \"${m.name}\" requires \\`field\\` (only \\`count\\` may omit it)`,\n path: ['measures'],\n });\n }\n continue;\n }\n for (const ref of m.derived.of) {\n if (ref === m.name) {\n ctx.addIssue({ code: 'custom', message: `derived measure \"${m.name}\" cannot reference itself`, path: ['measures'] });\n } else if (!measureNames.has(ref)) {\n ctx.addIssue({\n code: 'custom',\n message: `derived measure \"${m.name}\" references unknown measure \"${ref}\"`,\n path: ['measures'],\n });\n }\n }\n }\n}));\n\n/**\n * Authoring helper — identity function that gives editors full type-checking\n * and inference when defining a dataset in a `*.dataset.ts` file.\n *\n * @example\n * ```ts\n * export default defineDataset({\n * name: 'sales',\n * label: 'Sales',\n * object: 'opportunity',\n * include: ['account'],\n * dimensions: [{ name: 'region', field: 'account.region' }],\n * measures: [{ name: 'revenue', aggregate: 'sum', field: 'amount', certified: true }],\n * });\n * ```\n */\nexport function defineDataset(dataset: DatasetInput): DatasetInput {\n return dataset;\n}\n\nexport type DatasetDimension = z.infer<typeof DatasetDimensionSchema>;\nexport type DatasetMeasure = z.infer<typeof DatasetMeasureSchema>;\nexport type DerivedMeasureOpValue = z.infer<typeof DerivedMeasureOp>;\nexport type Dataset = z.infer<typeof DatasetSchema>;\n\n/** Input types for authoring (optional fields with defaults may be omitted). */\nexport type DatasetDimensionInput = z.input<typeof DatasetDimensionSchema>;\nexport type DatasetMeasureInput = z.input<typeof DatasetMeasureSchema>;\nexport type DatasetInput = z.input<typeof DatasetSchema>;\n","/**\n * Form layout for the Report metadata editor.\n *\n * Bound to {@link ReportSchema} via `data.provider = 'schema'`. The\n * `@object-ui/plugin-form` renderer resolves field metadata from the\n * Zod-derived JSON Schema served by `/api/v1/meta` and applies the\n * widget/visibility hints declared here.\n *\n * ADR-0021 single-form: a report is dataset-bound — it binds a semantic-layer\n * `dataset` and selects its `values` (measure names) grouped by `rows`\n * (dimension names). The legacy inline `objectName` + `columns` + `groupings`\n * query form was removed from {@link ReportSchema} in the 9.0 cutover, so this\n * form no longer declares those fields.\n */\n\nimport { defineForm } from './view.zod';\n\nexport const reportForm = defineForm({\n schemaId: 'report',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'Identity and report type.',\n columns: 2,\n fields: [\n { field: 'name', type: 'text', colSpan: 1, required: true, helpText: 'snake_case unique identifier' },\n { field: 'label', type: 'text', colSpan: 1, required: true },\n { field: 'description', type: 'textarea', colSpan: 2 },\n { field: 'type', colSpan: 2, helpText: 'Report type: tabular/summary/matrix/joined' },\n ],\n },\n {\n label: 'Dataset binding',\n description: 'The semantic-layer dataset this report renders. Values are the dataset’s measures; rows are its dimensions.',\n // A `joined` report carries its data on `blocks` instead.\n visibleOn: \"data.type != 'joined'\",\n fields: [\n { field: 'dataset', widget: 'ref:dataset', helpText: 'Dataset to bind (measures/dimensions come from its semantic layer)' },\n { field: 'values', widget: 'string-tags', helpText: 'Measure names (from the dataset) to display' },\n { field: 'rows', widget: 'string-tags', helpText: 'Dimension names (from the dataset) to group rows by' },\n // CEL visibility — only Matrix reports pivot across a second dimension.\n { field: 'columns', widget: 'string-tags', visibleOn: \"data.type == 'matrix'\", helpText: 'Dimension names across (matrix only)' },\n { field: 'drilldown', helpText: 'Click an aggregated row/cell to open the underlying records' },\n ],\n },\n {\n label: 'Joined blocks',\n description: 'Additional dataset-bound blocks stacked into a single report (joined reports only).',\n visibleOn: \"data.type == 'joined'\",\n fields: [\n { field: 'blocks', type: 'repeater', helpText: 'Dataset-bound sub-reports (joined report only)' },\n ],\n },\n {\n label: 'Filter & chart',\n description: 'Render-time scope filter and chart presentation.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'runtimeFilter', widget: 'json', helpText: 'Render-time scope filter, ANDed at query time' },\n { field: 'chart', type: 'composite', helpText: 'Chart config (type, legend, colors)' },\n ],\n },\n {\n label: 'Advanced',\n description: 'Accessibility and performance tuning.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'aria', type: 'composite', helpText: 'Accessibility labels' },\n { field: 'performance', type: 'composite', helpText: 'Caching and optimization' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * View — canonical FormView layout.\n *\n * Views power most data surfaces (grid / kanban / calendar / gantt /\n * gallery / timeline / chart) and each surface has its own block of\n * options. We group fields by surface so the editor doesn't dump 30+\n * irrelevant knobs on the user.\n *\n * Visibility predicates use the `type` discriminator to reveal only\n * the surface-specific block.\n */\n\nimport { defineForm } from './view.zod';\n\nexport const viewForm = defineForm({\n schemaId: 'view',\n type: 'simple',\n sections: [\n {\n name: 'basics',\n label: 'Basics',\n description: 'Identity and primary surface.',\n columns: 2,\n fields: [\n { field: 'name', type: 'text', required: true, colSpan: 1, helpText: 'snake_case, unique per environment' },\n { field: 'label', type: 'text', required: true, colSpan: 1 },\n { field: 'description', type: 'textarea', colSpan: 2 },\n { field: 'type', required: true, colSpan: 1, helpText: 'Primary view surface' },\n { field: 'data', widget: 'json', colSpan: 2, helpText: 'Data source — e.g. {\"provider\":\"object\",\"object\":\"task\"}' },\n ],\n },\n {\n name: 'columns_filters',\n label: 'Columns & filters',\n description: 'What rows show and how users filter them.',\n fields: [\n { field: 'columns', type: 'repeater', required: true, helpText: 'Columns to display (field names from selected object)' },\n { field: 'filter', type: 'repeater', helpText: 'Filter conditions' },\n { field: 'sort', type: 'repeater', helpText: 'Default sort order' },\n { field: 'searchableFields', widget: 'string-tags', helpText: 'Field names available for quick search' },\n { field: 'filterableFields', widget: 'string-tags', helpText: 'Field names available for filtering' },\n ],\n },\n {\n name: 'table_options',\n label: 'Table options',\n description: 'Grid-only display options.',\n visibleOn: \"data.type == 'grid' || data.type == null\",\n collapsible: true,\n collapsed: true,\n columns: 2,\n fields: [\n { field: 'resizable', colSpan: 1 },\n { field: 'striped', colSpan: 1 },\n { field: 'bordered', colSpan: 1 },\n { field: 'compactToolbar', colSpan: 1 },\n { field: 'rowHeight', colSpan: 1 },\n { field: 'selection', type: 'composite', colSpan: 2 },\n { field: 'pagination', type: 'composite', colSpan: 2 },\n ],\n },\n {\n name: 'kanban',\n label: 'Kanban',\n description: 'Kanban-specific board configuration.',\n visibleOn: \"data.type == 'kanban'\",\n fields: [{ field: 'kanban', type: 'composite' }],\n },\n {\n name: 'calendar',\n label: 'Calendar',\n description: 'Calendar-specific configuration.',\n visibleOn: \"data.type == 'calendar'\",\n fields: [{ field: 'calendar', type: 'composite' }],\n },\n {\n name: 'gantt',\n label: 'Gantt',\n description: 'Gantt-specific configuration.',\n visibleOn: \"data.type == 'gantt'\",\n fields: [{ field: 'gantt', type: 'composite' }],\n },\n {\n name: 'gallery',\n label: 'Gallery',\n description: 'Gallery-specific configuration.',\n visibleOn: \"data.type == 'gallery'\",\n fields: [{ field: 'gallery', type: 'composite' }],\n },\n {\n name: 'timeline',\n label: 'Timeline',\n description: 'Timeline-specific configuration.',\n visibleOn: \"data.type == 'timeline'\",\n fields: [{ field: 'timeline', type: 'composite' }],\n },\n {\n name: 'chart',\n label: 'Chart',\n description: 'Chart-specific configuration.',\n visibleOn: \"data.type == 'chart'\",\n fields: [{ field: 'chart', type: 'composite' }],\n },\n {\n name: 'end_user_controls',\n label: 'End-user controls',\n description: 'What end users can do on this view — quick filters, filter tabs, visualization switching (ADR-0047, Airtable Interface parity).',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'userFilters', type: 'composite', helpText: 'Quick-filter bar: element style (dropdown / tabs / toggle) + exposed fields or tab presets' },\n { field: 'tabs', type: 'repeater', helpText: 'In-view filter tabs — each tab applies its own filter rules' },\n { field: 'appearance', type: 'composite', helpText: 'allowedVisualizations: which renderers users may switch between' },\n { field: 'userActions', type: 'composite', helpText: 'Toolbar toggles: sort / search / filter / row height' },\n { field: 'addRecord', type: 'composite' },\n { field: 'showRecordCount' },\n ],\n },\n {\n name: 'navigation_sharing',\n label: 'Navigation & sharing',\n description: 'Where this view appears and who can see it.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'navigation', type: 'composite' },\n { field: 'sharing', type: 'composite' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { defineForm } from './view.zod';\n\nexport const appForm = defineForm({\n schemaId: 'app',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'App identity and activation.',\n columns: 2,\n fields: [\n { field: 'name', type: 'text', required: true, colSpan: 1, helpText: 'snake_case, unique' },\n { field: 'label', type: 'text', required: true, colSpan: 1 },\n { field: 'description', type: 'textarea', colSpan: 2 },\n { field: 'version', type: 'text', colSpan: 1 },\n { field: 'icon', type: 'text', colSpan: 1, helpText: 'Lucide icon name (e.g. \"users\", \"briefcase\")' },\n { field: 'active', type: 'boolean', colSpan: 1 },\n { field: 'isDefault', type: 'boolean', colSpan: 1, helpText: 'Make this the default app for new users' },\n ],\n },\n {\n label: 'Navigation',\n description: 'Sidebar items and area grouping.',\n fields: [\n { field: 'navigation', type: 'composite', helpText: 'Nav tree — recursive structure' },\n { field: 'areas', type: 'repeater', helpText: 'Group items into collapsible areas' },\n { field: 'homePageId', type: 'text', helpText: 'Landing page when app opens' },\n { field: 'mobileNavigation', type: 'composite', helpText: 'Bottom tab bar config for mobile' },\n ],\n },\n {\n label: 'Content',\n description: 'Objects and APIs this app uses.',\n fields: [\n { field: 'objects', widget: 'object-selector', multiple: true, helpText: 'Object names this app exposes' },\n { field: 'apis', type: 'composite', helpText: 'API endpoint definitions' },\n { field: 'defaultAgent', type: 'text', helpText: 'AI agent for the ambient assistant button' },\n ],\n },\n {\n label: 'Branding',\n description: 'Theme colors and logo.',\n collapsible: true,\n collapsed: true,\n fields: [{ field: 'branding', type: 'composite', helpText: 'Primary/secondary colors, logo, theme' }],\n },\n {\n label: 'Access & sharing',\n description: 'Who can access this app and how it can be embedded.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'requiredPermissions', widget: 'string-tags', helpText: 'Permissions needed to access this app' },\n { field: 'sharing', type: 'composite', helpText: 'Public/internal/restricted access control' },\n { field: 'embed', type: 'composite', helpText: 'iFrame embed configuration' },\n { field: 'aria', type: 'composite', helpText: 'Accessibility labels' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { defineForm } from './view.zod';\n\nexport const dashboardForm = defineForm({\n schemaId: 'dashboard',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'Dashboard identity and description.',\n columns: 2,\n fields: [\n { field: 'name', type: 'text', required: true, colSpan: 1, helpText: 'snake_case unique identifier' },\n { field: 'label', type: 'text', required: true, colSpan: 1, helpText: 'Display name' },\n { field: 'description', type: 'textarea', colSpan: 2 },\n ],\n },\n {\n label: 'Layout',\n description: 'Grid sizing and refresh cadence.',\n columns: 3,\n fields: [\n { field: 'columns', type: 'number', colSpan: 1, helpText: 'Grid columns (default 12)' },\n { field: 'gap', type: 'number', colSpan: 1, helpText: 'Grid gap (Tailwind units)' },\n { field: 'refreshInterval', type: 'number', colSpan: 1, helpText: 'Auto-refresh (seconds)' },\n { field: 'header', type: 'composite', colSpan: 3, helpText: 'Dashboard header config (title, subtitle, actions)' },\n ],\n },\n {\n label: 'Widgets',\n description: 'Cards and charts placed on the grid.',\n fields: [\n { field: 'widgets', type: 'repeater', required: true, helpText: 'Dashboard widgets with position and sizing' },\n ],\n },\n {\n label: 'Filters',\n description: 'Default and global filters applied across widgets.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'dateRange', type: 'composite', helpText: 'Default date range selector' },\n { field: 'globalFilters', type: 'repeater', helpText: 'Filters applied to all widgets' },\n ],\n },\n {\n label: 'Advanced',\n description: 'Accessibility and performance tuning.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'aria', type: 'composite', helpText: 'Accessibility labels' },\n { field: 'performance', type: 'composite', helpText: 'Caching and optimization config' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { defineForm } from './view.zod';\n\n/**\n * Action Metadata Form\n * \n * Form layout for creating/editing action metadata definitions.\n */\nexport const actionForm = defineForm({\n schemaId: 'action',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'Action identity and presentation.',\n columns: 2,\n fields: [\n { field: 'name', required: true, colSpan: 1, helpText: 'Unique identifier (snake_case)' },\n { field: 'label', required: true, colSpan: 1, helpText: 'Button text shown to users' },\n { field: 'objectName', widget: 'ref:object', colSpan: 1, helpText: 'Object this action belongs to (optional)' },\n { field: 'icon', colSpan: 1, helpText: 'Lucide icon name (e.g., \"check\", \"x-circle\")' },\n { field: 'type', required: true, colSpan: 1, helpText: 'What happens when clicked' },\n { field: 'variant', colSpan: 1, helpText: 'Button style (primary=blue, danger=red, ghost=transparent)' },\n ],\n },\n {\n label: 'Behavior',\n description: 'Configure what happens when the action is triggered.',\n fields: [\n { field: 'target', visibleOn: \"data.type != 'script'\", helpText: 'URL, flow name, or API endpoint to call' },\n { field: 'method', visibleOn: \"data.type == 'api'\", helpText: 'HTTP method (GET, POST, PUT, DELETE)' },\n {\n field: 'body',\n type: 'composite',\n visibleOn: \"data.type == 'script'\",\n helpText: 'Either an L1 expression or an L2 sandboxed JS body',\n // Mirrors hook.form.ts: `body` is a discriminated union\n // (HookBodySchema) on `language`, not a bare string. A flat\n // `widget: 'code'` fed the whole object to the editor and rendered\n // \"[object Object]\". Render the union as language + source (+ the\n // L2-only capability/timeout knobs).\n fields: [\n { field: 'language', type: 'select', required: true, helpText: 'expression = pure formula; js = sandboxed JavaScript', options: [\n { label: 'Expression (L1)', value: 'expression' },\n { label: 'JavaScript (L2 sandboxed)', value: 'js' },\n ] },\n { field: 'source', type: 'code', language: 'javascript', required: true, helpText: 'Function body source — no top-level imports' },\n { field: 'capabilities', type: 'tags', helpText: 'Allowed ctx APIs (api.read, api.write, crypto.uuid, log, …)' },\n { field: 'timeoutMs', type: 'number', helpText: 'Per-invocation timeout (ms)' },\n ],\n },\n { field: 'params', type: 'repeater', helpText: 'User input parameters (show form before executing)' },\n { field: 'confirmText', helpText: 'Confirmation message (e.g., \"Are you sure?\")' },\n { field: 'successMessage', helpText: 'Success message after completion' },\n { field: 'refreshAfter', helpText: 'Refresh the list/page after action completes' },\n ],\n },\n {\n label: 'Placement',\n description: 'Where and when the action button appears.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'locations', type: 'repeater', helpText: 'Where to show this action (toolbar, row menu, etc.)' },\n { field: 'component', helpText: 'How to render (button, icon, menu item)' },\n { field: 'visible', widget: 'textarea', helpText: 'CEL expression: show only when condition is true' },\n { field: 'disabled', widget: 'textarea', helpText: 'CEL expression: disable when condition is true' },\n { field: 'shortcut', helpText: 'Keyboard shortcut (e.g., \"Ctrl+S\", \"Cmd+Enter\")' },\n ],\n },\n {\n label: 'Advanced',\n description: 'Bulk operations, AI exposure, and API request shape.',\n collapsible: true,\n collapsed: true,\n columns: 2,\n fields: [\n { field: 'bulkEnabled', colSpan: 1, helpText: 'Allow applying to multiple selected records' },\n { field: 'ai', colSpan: 2, helpText: 'AI exposure (opt-in): set ai.exposed=true and write ai.description (≥40 chars) to make this callable by agents.' },\n { field: 'recordIdParam', visibleOn: \"data.type == 'api'\", colSpan: 1, helpText: 'Body parameter name for record ID' },\n { field: 'recordIdField', visibleOn: \"data.type == 'api' && data.recordIdParam\", colSpan: 1, helpText: 'Field to use as record ID (default: \"id\")' },\n { field: 'bodyShape', visibleOn: \"data.type == 'api'\", colSpan: 2, helpText: 'Request body structure (flat or nested)' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { defineForm } from './view.zod';\n\n/**\n * Page Metadata Form\n * \n * Form layout for creating/editing page metadata definitions.\n */\nexport const pageForm = defineForm({\n schemaId: 'page',\n type: 'simple',\n sections: [\n {\n label: 'Basics',\n description: 'Page identity and template.',\n columns: 2,\n fields: [\n { field: 'name', required: true, colSpan: 1, helpText: 'Unique identifier (snake_case)' },\n { field: 'label', required: true, colSpan: 1, helpText: 'Page title shown to users' },\n { field: 'icon', widget: 'icon', colSpan: 1, helpText: 'Icon for navigation menu' },\n {\n field: 'type',\n colSpan: 1,\n // The page KIND, not a visualization. Kanban/Calendar/Gallery/Timeline\n // are visualizations OF a List page (set under Interface →\n // Appearance → Allowed visualizations), not page types — so they are\n // deliberately absent here. Only kinds with a dedicated renderer are\n // offered; roadmap kinds (dashboard/form/record_detail/…) are valid in\n // the schema but hidden until they render distinctly.\n options: [\n { label: 'List / Interface page', value: 'list' },\n { label: 'Record page', value: 'record' },\n { label: 'Home page', value: 'home' },\n { label: 'App page', value: 'app' },\n { label: 'Utility panel', value: 'utility' },\n ],\n helpText: 'Page kind. \"List / Interface\" binds a source view into a curated surface — how it looks (grid / kanban / calendar / …) is a visualization set under Interface, not a page type.',\n },\n // A list/interface page renders via InterfaceListPage and ignores the\n // region template, so hide it there (same rationale as Data Context / Layout).\n { field: 'template', colSpan: 2, visibleOn: \"data.type != 'list'\", helpText: 'Layout template (e.g., \"header-sidebar-main\")' },\n { field: 'description', widget: 'textarea', colSpan: 2, helpText: 'Page description for navigation' },\n ],\n },\n {\n label: 'Data Context',\n description: 'Record binding and page-local state.',\n // Interface/list pages bind their data via the Interface section\n // (source/sourceView), not a page-level object — hide this to keep\n // the panel lean (the region/record machinery doesn't apply).\n visibleOn: \"data.type != 'list'\",\n fields: [\n { field: 'object', widget: 'ref:object', helpText: 'Bound object (for Record pages)' },\n { field: 'variables', type: 'repeater', helpText: 'Local page state variables' },\n ],\n },\n {\n label: 'Layout',\n description: 'Page regions and components placed within them.',\n // List pages render a curated list surface, not free-form regions —\n // the region designer is irrelevant here, so hide it for list pages.\n visibleOn: \"data.type != 'list'\",\n fields: [\n { field: 'regions', type: 'repeater', required: true, helpText: 'Layout regions (header, main, sidebar, footer) with components' },\n ],\n },\n {\n name: 'interface',\n label: 'Interface (list pages)',\n description: 'ADR-0047 interface mode: bind a source view and curate the end-user surface — quick filters, locked visualizations, toolbar actions (Airtable Interfaces parity).',\n collapsible: true,\n // Primary content for a list page — open by default (still collapsible).\n collapsed: false,\n visibleOn: \"data.type == 'list'\",\n fields: [\n {\n field: 'interfaceConfig',\n type: 'composite',\n helpText:\n 'source/sourceView bind the object view (columns, base filter and sort are inherited — the iron rule); appearance.allowedVisualizations whitelists renderers (one entry = locked); userActions toggles the toolbar.',\n // Order: common authoring controls first, rarely-used ones last.\n // Explicit sub-fields so `userFilters` can use the dedicated\n // filter-mode selector (None / Tabs / Dropdown, ADR-0047 §3.4a).\n // None maps to ABSENCE of userFilters — the protocol stores\n // \"no filter bar\" as omission, not a literal element: 'none'.\n // (`element: 'toggle'` stays valid but deprecated — not offered.)\n // Keep this list in sync with InterfacePageConfigSchema.\n fields: [\n { field: 'source', widget: 'ref:object', helpText: 'Object this list reads from' },\n // Pick from the source object's views instead of typing a name.\n // `dependsOn: 'source'` tells the picker which object's views to list.\n { field: 'sourceView', widget: 'view-ref', dependsOn: 'source', helpText: 'Named list view to inherit columns/filter/sort from (blank = object default)' },\n { field: 'appearance', type: 'composite', helpText: 'Allowed visualizations (Grid / Kanban / Calendar / …) and description visibility' },\n {\n field: 'userFilters',\n widget: 'filter-mode',\n helpText: 'End-user filter bar: None (no bar) / Tabs (named presets) / Dropdown (per-field). None removes the config.',\n },\n { field: 'userActions', type: 'composite', helpText: 'Toolbar toggles (search, sort, filter, row height)' },\n { field: 'addRecord', type: 'composite', helpText: 'Add-record entry point' },\n { field: 'showRecordCount', helpText: 'Show the record count bar' },\n // Less-common — kept last.\n { field: 'filterBy', type: 'repeater', helpText: 'Always-on page filter (in addition to the source view)' },\n { field: 'levels', helpText: 'Hierarchy levels to display (tree-like sources)' },\n { field: 'allowPrinting', helpText: 'Allow users to print this page' },\n ],\n },\n ],\n },\n {\n label: 'Advanced',\n description: 'Activation, audience, and accessibility.',\n collapsible: true,\n collapsed: true,\n fields: [\n { field: 'isDefault', helpText: 'Set as default page for this page type' },\n { field: 'kind', helpText: 'Page override mode: full or slotted (for record pages)' },\n { field: 'assignedProfiles', widget: 'string-tags', helpText: 'Profiles that can access this page' },\n { field: 'aria', type: 'composite', helpText: 'Accessibility attributes (ARIA labels, roles)' },\n ],\n },\n ],\n});\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Capability tokens a script body may request.\n *\n * The runtime sandbox enforces these — if a body uses a `ctx` API that requires\n * a capability it did not declare, the call throws at invocation time.\n *\n * - `api.read` — `ctx.api.object(...).find / findOne / count / aggregate`\n * - `api.write` — `ctx.api.object(...).insert / update / delete`\n * - `crypto.uuid` — `ctx.crypto.randomUUID()`\n * - `crypto.hash` — `ctx.crypto.hash(algo, data)`\n * - `log` — `ctx.log.info / warn / error`\n *\n * `http.fetch` is intentionally absent — outbound calls go through Connector\n * recipes (separate spec) so they remain auditable and replayable.\n */\nexport const HookBodyCapability = z.enum([\n 'api.read',\n 'api.write',\n 'crypto.uuid',\n 'crypto.hash',\n 'log',\n]);\nexport type HookBodyCapability = z.infer<typeof HookBodyCapability>;\n\n/**\n * L1 — Pure expression body.\n *\n * Evaluated by the formula engine. No IO, no mutation. Used for predicates\n * (`condition`-style) and simple computed values.\n *\n * @example\n * ```json\n * { \"language\": \"expression\", \"source\": \"input.amount > 1000 && input.status == 'open'\" }\n * ```\n */\nexport const ExpressionBodySchema = z.object({\n language: z.literal('expression'),\n /** Formula-engine expression. Pure, side-effect-free. */\n source: z.string().min(1).describe('Formula expression source'),\n}).describe('L1 expression body — pure formula, no IO');\nexport type ExpressionBody = z.infer<typeof ExpressionBodySchema>;\n\n/**\n * L2 — Sandboxed JavaScript source.\n *\n * The `source` is the **function body only** (not a full module). The runtime\n * wraps it in `new AsyncFunction('ctx', source)` for hooks, or\n * `new AsyncFunction('input', 'ctx', source)` for actions, then executes\n * inside an isolated VM.\n *\n * Forbidden inside `source` (CLI build will reject):\n * - `import` / `require` / dynamic `import()`\n * - `process`, `globalThis`, `eval`, `new Function`\n * - any identifier resolved from a value-only top-level import\n *\n * @example\n * ```json\n * {\n * \"language\": \"js\",\n * \"source\": \"if (ctx.input.email) ctx.input.email = ctx.input.email.toLowerCase();\",\n * \"capabilities\": [],\n * \"timeoutMs\": 250\n * }\n * ```\n */\nexport const ScriptBodySchema = z.object({\n language: z.literal('js'),\n /** Function body source (NOT a full module — no top-level imports). */\n source: z.string().min(1).describe('Function body source'),\n /**\n * Capability tokens the body is allowed to use. Default: `[]`.\n * The sandbox throws if the body calls a `ctx` API not covered by these.\n */\n capabilities: z.array(HookBodyCapability).default([]).describe('Granted capability tokens'),\n /**\n * Per-invocation hard timeout in milliseconds.\n * Sandbox kills the script if it exceeds this; smaller of this and the\n * enclosing hook/action `timeout` wins.\n */\n timeoutMs: z.number().int().positive().max(30_000).optional().describe('Per-invocation timeout (ms)'),\n /**\n * Per-invocation memory cap in MB.\n * Subject to engine support (isolated-vm enforces, quickjs approximates).\n */\n memoryMb: z.number().int().positive().max(256).optional().describe('Per-invocation memory cap (MB)'),\n}).describe('L2 sandboxed JS body — runs inside an isolated VM with declared capabilities');\nexport type ScriptBody = z.infer<typeof ScriptBodySchema>;\n\n/**\n * Hook / Action body — discriminated by `language`.\n *\n * Two and only two forms are accepted:\n * - `expression` — L1, pure formula evaluated by the formula engine.\n * - `js` — L2, sandboxed JavaScript source string.\n *\n * The compiled-module path (`.mjs` envelope) is intentionally **not** part of\n * this union. All bodies are pure metadata and travel inside the project\n * artifact JSON — no separate runtime module is required.\n *\n * @see content/docs/concepts/north-star.mdx — \"Metadata-only runtime\"\n */\nexport const HookBodySchema = z.discriminatedUnion('language', [\n ExpressionBodySchema,\n ScriptBodySchema,\n]).describe('Hook/Action body — expression (L1) or sandboxed JS (L2)');\nexport type HookBody = z.infer<typeof HookBodySchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldType } from '../data/field.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { HookBodySchema } from '../data/hook-body.zod';\n\n/**\n * Action Parameter Schema\n *\n * Defines inputs required before executing an action.\n *\n * Two declaration modes:\n *\n * 1. **Field-backed** (preferred) — reference an existing object field; the\n * runtime resolves the field's label (i18n), type, validation rules,\n * options, placeholder, help text, and widget mapping from object\n * metadata. Cross-object references use `objectOverride`.\n *\n * ```ts\n * params: [\n * { field: 'email' }, // same object\n * { field: 'role', objectOverride: 'sys_member' }, // different object\n * ]\n * ```\n *\n * 2. **Inline** (legacy / bespoke) — declare `name`, `label`, `type` etc.\n * inline when no matching object field exists. Inline values may also be\n * used alongside `field` to override individual properties.\n *\n * `name` is required unless `field` is provided (in which case it defaults\n * to the field name and is used as the request-body key).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ActionParamSchema = lazySchema(() => z.object({\n /** Request-body key. Defaults to `field` when `field` is set. */\n name: z.string().optional(),\n /** Reference an existing object field for label/type/validation/options. */\n field: SnakeCaseIdentifierSchema.optional(),\n /** Object that owns the referenced field (defaults to the action's parent object). */\n objectOverride: SnakeCaseIdentifierSchema.optional(),\n /** Overrides the resolved field label (or sets it for inline params). */\n label: I18nLabelSchema.optional(),\n /** Overrides the resolved field type (or sets it for inline params). */\n type: FieldType.optional(),\n /**\n * Required override; when omitted defaults to `false`. Consumers that wish\n * to inherit the underlying field's `required` flag should leave this\n * undefined in the source schema and resolve at runtime (the dialog\n * renderers check truthiness, so `false === undefined` for UI purposes).\n */\n required: z.boolean().optional().default(false),\n /** Select/picklist options override. */\n options: z.array(z.object({ label: I18nLabelSchema, value: z.string() })).optional(),\n /** Placeholder override. */\n placeholder: z.string().optional(),\n /** Help/description override. */\n helpText: z.string().optional(),\n /** Default value for the dialog input. */\n defaultValue: z.unknown().optional(),\n /**\n * When true, the param's default value is pulled from the current row record\n * (key = the resolved field name) when the action runs from a list_item\n * context. Useful for edit dialogs that pre-fill from the selected row.\n */\n defaultFromRow: z.boolean().optional(),\n}).refine(\n (p) => Boolean(p.name) || Boolean(p.field),\n { message: 'ActionParam requires either \"name\" or \"field\"' },\n));\n\n/**\n * Action type enum values.\n */\nexport const ActionType = z.enum(['script', 'url', 'modal', 'flow', 'api', 'form']);\n\n/**\n * Action types that require a `target` field.\n * Derived from ActionType, excluding 'script' which allows inline handlers.\n * These types reference an external resource (URL, flow, modal, or API endpoint)\n * and cannot function without a target binding.\n */\nconst TARGET_REQUIRED_TYPES: ReadonlySet<string> = new Set(\n ActionType.options.filter((t) => t !== 'script'),\n);\n\n/**\n * Action Schema\n * \n * **NAMING CONVENTION:**\n * Action names are machine identifiers used in code and must be lowercase snake_case.\n * \n * **TARGET BINDING:**\n * The `target` field is the canonical way to bind an action to its handler.\n * - `type: 'script'` — `target` is recommended (references a script/function name).\n * - `type: 'url'` — `target` is **required** (the URL to navigate to).\n * - `type: 'flow'` — `target` is **required** (the flow name to invoke).\n * - `type: 'modal'` — `target` is **required** (the modal/page name to open).\n * - `type: 'api'` — `target` is **required** (the API endpoint to call).\n * - `type: 'form'` — `target` is **required** (the FormView name to open, routed to `/console/forms/:name`).\n * \n * The `execute` field is **deprecated** and will be removed in a future version.\n * If `execute` is provided without `target`, it is automatically migrated to `target`.\n * \n * @example Good action names\n * - 'on_close_deal'\n * - 'send_welcome_email'\n * - 'approve_contract'\n * - 'export_report'\n * \n * @example Bad action names (will be rejected)\n * - 'OnCloseDeal' (PascalCase)\n * - 'sendEmail' (camelCase)\n * - 'Send Email' (spaces)\n * \n * Note: The action name is the configuration ID. JavaScript function names can use camelCase,\n * but the metadata ID must be lowercase snake_case.\n */\n/**\n * Action Location — where an action is allowed to surface in the UI.\n *\n * Canonical list (single source of truth for the whole platform). Renderers,\n * the ActionEngine, the Studio designer dropdowns, and `objectui` consumers\n * MUST import from this constant rather than re-declaring their own enum —\n * adding a new location should require touching this one file only.\n *\n * Semantics:\n * - `list_toolbar` — header/toolbar of a list view (bulk actions, \"New\", export).\n * - `list_item` — per-row action on a list/grid row (Salesforce row-level menu).\n * - `record_header` — primary actions in the record-detail title bar.\n * - `record_more` — overflow menu under the \"More\" / ⋯ button on a record.\n * - `record_related` — actions on a related list section inside a record.\n * - `record_section` — actions surfaced inside a body section/tab of a record\n * (e.g. a Security tab grouping change-password, 2FA, etc.).\n * - `global_nav` — global navigation/command-palette level actions.\n */\nexport const ACTION_LOCATIONS = [\n 'list_toolbar',\n 'list_item',\n 'record_header',\n 'record_more',\n 'record_related',\n 'record_section',\n 'global_nav',\n] as const;\n\nexport const ActionLocationSchema = z.enum(ACTION_LOCATIONS);\nexport type ActionLocation = z.infer<typeof ActionLocationSchema>;\n\n/**\n * Tool category values for {@link ActionAiSchema.category}.\n *\n * Mirrors `ToolCategorySchema` in `../ai/tool.zod`. Kept **inline** rather\n * than imported to avoid a `ui → ai` import cycle (`ai/*.form.ts` already\n * imports `defineForm` from `ui/view.zod`). If you change the canonical\n * tool categories, update both sides.\n */\nconst ActionAiCategorySchema = z.enum([\n 'data',\n 'action',\n 'flow',\n 'integration',\n 'vector_search',\n 'analytics',\n 'utility',\n]);\n\n/**\n * AI exposure block (ADR-0011 \"Actions as AI Tools\").\n *\n * **Opt-in, default off.** An action becomes an AI-callable tool only when\n * `exposed: true`. This is a deliberate governance gate: in an AI-authoring\n * world the platform's value is that a human can govern exactly which\n * capabilities the agent fleet is allowed to invoke — a half-finished or\n * unreviewed action must never be silently armed.\n *\n * When exposed, `description` is **required** — it is the LLM-facing contract\n * (when/why to call), authored explicitly rather than derived from the\n * UI `label`. The bridge in `@objectstack/service-ai` translates this block\n * into an `AIToolDefinition`.\n */\nexport const ActionAiSchema = z.object({\n /**\n * Expose this action to AI agents as a callable tool. Default `false`.\n * Setting `true` REQUIRES `description`.\n */\n exposed: z.boolean().default(false).describe('Expose this action to AI agents. Requires `description` when true.'),\n\n /**\n * LLM-facing description: tells the model when and why to call this action.\n * Distinct from the UI `label`. Plain English, ≥ 40 chars for useful tool\n * selection. Required whenever `exposed` is true.\n */\n description: z.string().min(40).optional().describe('LLM-facing description (≥40 chars). Required when exposed.'),\n\n /**\n * Override the derived tool category. Defaults to `action` (side-effect).\n * Use `data` for read-only actions, `analytics` for aggregations, etc.\n */\n category: ActionAiCategorySchema.optional().describe('Tool category override (defaults to \"action\").'),\n\n /**\n * Per-parameter AI hints, keyed by param name (or the injected `recordId`).\n * Tightens the JSON Schema the LLM sees (e.g. add `enum`, override\n * `description`, supply `examples`) WITHOUT changing the UI-facing field\n * metadata. Keys must match a declared `params[].name` (or `recordId`).\n */\n paramHints: z.record(z.string(), z.object({\n description: z.string().optional(),\n enum: z.array(z.union([z.string(), z.number()])).optional(),\n examples: z.array(z.unknown()).optional(),\n })).optional().describe('Per-parameter AI hints keyed by param name.'),\n\n /**\n * Output JSON Schema for the action's return value. Enables structured\n * downstream tool chaining (one action's output feeds another's input) and\n * is summarised into the tool description so the model knows what it gets\n * back. Optional — when omitted the return value is treated as freeform.\n */\n outputSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for the action return value.'),\n\n /**\n * Override confirmation for AI calls. When unset, the bridge defaults to\n * `true` for actions that look destructive (`confirmText` set, `mode:'delete'`,\n * or `variant:'danger'`). Set explicitly to `false` to assert a destructive-\n * looking action is safe to run without human approval, or `true` to force a\n * human-in-the-loop gate on an otherwise-safe action.\n */\n requiresConfirmation: z.boolean().optional().describe('Override HITL confirmation for AI invocations.'),\n});\n\nexport type ActionAi = z.infer<typeof ActionAiSchema>;\n\nexport const ActionSchema = lazySchema(() => z.object({\n /** Machine name of the action */\n name: SnakeCaseIdentifierSchema.describe('Machine name (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Display label'),\n\n /** Target object this action belongs to (optional, snake_case) */\n objectName: z.string().regex(/^[a-z_][a-z0-9_]*$/).optional().describe('Target object this action belongs to. When set, the action is auto-merged into the object\\'s actions array by defineStack().'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** Where does this action appear? */\n locations: z.array(ActionLocationSchema).optional().describe('Locations where this action is visible'),\n\n /** \n * Visual Component Type\n * Defaults to 'button' or 'menu_item' based on location,\n * but can be overridden.\n */\n component: z.enum([\n 'action:button', // Standard Button\n 'action:icon', // Icon only\n 'action:menu', // Dropdown menu\n 'action:group' // Button Group\n ]).optional().describe('Visual component override'),\n \n /** What type of interaction? */\n type: ActionType.default('script').describe('Action functionality type'),\n \n /** \n * Payload / Target — the canonical binding for the action handler.\n * Required for url, flow, modal, and api types.\n * For `script` type: prefer `body` over `target`. `target` is kept only for\n * legacy bundle.functions[name] references.\n *\n * **Interpolation** (renderer responsibility, all action types):\n * `target` MAY contain `${param.X}` and `${ctx.X}` tokens. Renderers\n * resolve them just before invocation:\n * - `${param.X}` — value collected from the action's params dialog.\n * - `${ctx.X}` — values from the action context: `ctx.origin`\n * (window.origin), `ctx.recordId`, `ctx.user.id`, `ctx.org.id`, etc.\n * Used by redirect-style actions like `link_social`, where the target is\n * e.g. `/api/v1/auth/sign-in/social?provider=${param.provider}&callbackURL=${ctx.origin}/_console/apps/account/sys_account`.\n * Renderers MUST `encodeURIComponent` interpolated values before\n * substituting them into URL query positions.\n */\n target: z.string().optional().describe('URL, Script Name, Flow ID, or API Endpoint. Supports ${param.X} and ${ctx.X} interpolation.'),\n\n /**\n * Action Body (L1 expression or L2 sandboxed JS).\n *\n * Only meaningful when `type === 'script'`. When set, the runtime invokes\n * the body inside the sandbox as `(input, ctx) => Promise<output>` and\n * ignores `target`.\n *\n * - `{ language: 'expression', source: '...' }` — pure formula (L1).\n * - `{ language: 'js', source: '...', capabilities: [...] }` — sandboxed JS (L2).\n *\n * Compiled-module bodies are not supported. Outbound IO (HTTP, etc.) goes\n * through Connector recipes (separate spec).\n */\n body: HookBodySchema.optional().describe('Action body — expression (L1) or sandboxed JS (L2). Only used when type is `script`.'),\n\n /** \n * @deprecated Use `target` instead. This field is auto-migrated to `target` during parsing.\n */\n execute: z.string().optional().describe('@deprecated — Use target instead. Auto-migrated to target during parsing.'),\n \n /** User Input Requirements */\n params: z.array(ActionParamSchema).optional().describe('Input parameters required from user'),\n \n /** Visual Style */\n variant: z.enum(['primary', 'secondary', 'danger', 'ghost', 'link']).optional().describe('Button visual variant for styling (primary = highlighted, danger = destructive, ghost = transparent)'),\n\n /** UX Behavior */\n confirmText: I18nLabelSchema.optional().describe('Confirmation message before execution'),\n successMessage: I18nLabelSchema.optional().describe('Success message to show after execution'),\n refreshAfter: z.boolean().default(false).describe('Refresh view after execution'),\n\n /**\n * Result Dialog — describe how to render the API response on success.\n *\n * When set and the action returns successfully, the renderer SHOULD open a\n * dialog showing the selected fields from `result.data` instead of the\n * `successMessage` toast. The dialog has an acknowledge button only — the\n * user must explicitly close it. Used for **one-shot reveals** of values\n * the user must copy now because they cannot be retrieved later:\n *\n * - TOTP enrollment URI + secret (`enable_two_factor`)\n * - Backup recovery codes (`regenerate_backup_codes`)\n * - Freshly minted OAuth `client_secret` (`rotate_client_secret`,\n * `create_oauth_application`)\n *\n * `fields` selects what to render and how. Each entry's `path` is a dot\n * path into `result.data` (e.g. `'totpURI'`, `'backupCodes'`,\n * `'client.client_secret'`). When `fields` is omitted, the renderer falls\n * back to JSON-printing the whole response under a single block.\n *\n * `format` (dialog-level) is a default for fields that don't carry their\n * own `format`; the per-field `format` always wins.\n *\n * Renderer contract (objectui):\n * - `qrcode` — render the value as a QR code; also render the raw string\n * underneath with a copy button (so the user can paste into apps that\n * don't scan).\n * - `code-list` — value must be an array of strings; render each in a\n * monospace row with per-row copy and a \"Copy all\" affordance.\n * - `secret` — render a single string masked by default with a reveal\n * toggle and copy button.\n * - `text` — plain text with copy.\n * - `json` — pretty-printed JSON in a monospace block.\n *\n * The dialog SHOULD set `refreshAfter` to true on close (separate from\n * the existing `refreshAfter` flag, which fires immediately on success).\n */\n resultDialog: z.object({\n title: I18nLabelSchema.optional(),\n description: I18nLabelSchema.optional(),\n acknowledge: I18nLabelSchema.optional().describe('Acknowledge button label, e.g. \"I have saved this\"'),\n format: z.enum(['qrcode', 'code-list', 'secret', 'text', 'json']).optional().describe('Default format for fields without their own format. Defaults to json when omitted.'),\n fields: z.array(z.object({\n path: z.string().describe('Dot path into result.data (e.g. \"totpURI\", \"client.client_secret\").'),\n label: I18nLabelSchema.optional(),\n format: z.enum(['qrcode', 'code-list', 'secret', 'text', 'json']).optional().describe('Per-field format override.'),\n })).optional().describe('Which fields from result.data to render. Omit to dump full JSON.'),\n }).optional().describe('Render API response in a one-shot reveal dialog (suppresses successMessage when set).'),\n \n /** Access */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n disabled: z.union([z.boolean(), ExpressionInputSchema]).optional().describe('Boolean or predicate (CEL) — action is disabled when TRUE.'),\n\n /** Keyboard Shortcut */\n shortcut: z.string().optional().describe('Keyboard shortcut to trigger this action (e.g., \"Ctrl+S\")'),\n\n /** Bulk Operations */\n bulkEnabled: z.boolean().optional().describe('Whether this action can be applied to multiple selected records'),\n\n /**\n * AI exposure block (ADR-0011). Opt-in, default off: an action is exposed\n * to AI agents only when `ai.exposed === true`, in which case `ai.description`\n * is required. See {@link ActionAiSchema}.\n */\n ai: ActionAiSchema.optional().describe('AI exposure (opt-in). Set ai.exposed=true + ai.description to make this callable by agents.'),\n\n /**\n * Row-context: when the action runs from a list_item location, this body key\n * receives the row's id (or the field named by `recordIdField`). Defaults to\n * `id` when omitted but `recordIdField` is set; otherwise no injection.\n */\n recordIdParam: z.string().optional().describe('Body key to inject the row id into when running from a list_item context.'),\n /**\n * Row field whose value seeds `recordIdParam`. Defaults to `'id'` when\n * `recordIdParam` is set. Use this when the body key expects a non-id value\n * (e.g. `token` for `revoke-session`).\n */\n recordIdField: z.string().optional().describe('Row field whose value seeds recordIdParam. Defaults to \"id\".'),\n /**\n * Request-body shape. `'flat'` (default) sends collected params at the top\n * level. `{ wrap: 'data' }` nests the user-collected params under that key\n * (used by better-auth `organization/update`), while `recordIdParam` and\n * other top-level keys stay flat.\n */\n bodyShape: z.union([\n z.literal('flat'),\n z.object({ wrap: z.string() }),\n ]).optional().describe('Body wrapping: flat (default) or { wrap: key } to nest user-collected params under a key.'),\n /**\n * HTTP method to use when `type: 'api'`. Defaults to `POST`. Use `PATCH` to\n * call data-API update endpoints (e.g. `/api/v1/sys_api_key/{id}` with\n * `bodyExtra: { revoked: true }`).\n */\n method: z.enum(['POST', 'PATCH', 'PUT', 'DELETE']).optional().describe('HTTP method for type:\"api\" actions. Defaults to POST.'),\n /**\n * Static body fragment merged into the outgoing request body for `type:'api'`\n * actions. Useful for constants the user shouldn't (or can't) edit, e.g.\n * `bodyExtra: { resend: true }` on a resend-invitation action that reuses\n * better-auth's `invite-member` endpoint. Applied after user-collected\n * params and `recordIdParam` so constants always win.\n */\n bodyExtra: z.record(z.string(), z.unknown()).optional().describe('Constant body fields merged into the API request (applied last; overrides user params).'),\n /**\n * Semantic mode hint — UI / runtime can use this to pick confirm copy,\n * default variants, success messaging. Pure metadata; no runtime branching.\n */\n mode: z.enum(['create', 'edit', 'delete', 'custom']).optional().describe('Semantic mode of the action.'),\n\n /**\n * Open the action's result in a NEW TAB. The renderer pre-opens the tab\n * synchronously on click (preserving the user gesture so popup blockers\n * don't fire), paints a progress page, then drives the tab to the\n * handler's returned `redirectUrl` — or, when `newTabUrl` is set, straight\n * to that URL with no server round trip.\n */\n opensInNewTab: z.boolean().optional().describe('Open the action result in a new tab. The renderer pre-opens the tab synchronously on click (popup-blocker-safe) and navigates it to the handler\\'s redirectUrl.'),\n\n /**\n * Zero-roundtrip new-tab target. A path template the renderer navigates\n * the pre-opened tab to IMMEDIATELY on click, skipping the action POST\n * entirely. Only valid together with `opensInNewTab`. The target endpoint\n * MUST perform all auth/authz itself (e.g. the cloud `/sso-open` endpoint,\n * which re-runs every check the POST half would have done). Supports the\n * `{recordId}` placeholder, URL-encoded on substitution.\n */\n newTabUrl: z.string().optional().describe('Direct new-tab URL template ({recordId} placeholder). When set with opensInNewTab, the renderer navigates the pre-opened tab here immediately — no action POST. The endpoint must enforce auth itself.'),\n\n /** Execution */\n timeout: z.number().optional().describe('Maximum execution time in milliseconds for the action'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}).transform((data) => {\n // Auto-migrate deprecated `execute` → `target` for backward compatibility\n if (data.execute && !data.target) {\n return { ...data, target: data.execute };\n }\n return data;\n}).refine((data) => {\n // Require `target` for types that reference an external resource\n if (TARGET_REQUIRED_TYPES.has(data.type) && !data.target) {\n return false;\n }\n return true;\n}, {\n message: \"Action 'target' is required when type is 'url', 'flow', 'modal', 'api', or 'form'.\",\n path: ['target'],\n}).refine((data) => {\n // ADR-0011: an exposed action must carry an LLM-facing description.\n if (data.ai?.exposed === true && !data.ai.description) {\n return false;\n }\n return true;\n}, {\n message: 'ai.description is required (≥40 chars) when ai.exposed is true.',\n path: ['ai', 'description'],\n}).refine((data) => {\n // ADR-0011: paramHints keys must reference a declared param (or the\n // auto-injected `recordId`), so a typo can't silently no-op.\n const hints = data.ai?.paramHints;\n if (!hints) return true;\n const known = new Set<string>(['recordId']);\n for (const p of data.params ?? []) {\n const key = p.name ?? p.field;\n if (key) known.add(key);\n }\n return Object.keys(hints).every((k) => known.has(k));\n}, {\n message: 'ai.paramHints keys must match a declared param name (or \"recordId\").',\n path: ['ai', 'paramHints'],\n}));\n\nexport type Action = z.infer<typeof ActionSchema>;\nexport type ActionParam = z.infer<typeof ActionParamSchema>;\nexport type ActionInput = z.input<typeof ActionSchema>;\n\n/**\n * Action Factory Helper\n */\nexport const Action = {\n create: (config: z.input<typeof ActionSchema>): Action => ActionSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Shared Enumerations\n// ============================================================================\n\n/** Aggregation functions used across query, data-engine, analytics, field */\nimport { lazySchema } from './lazy-schema';\nexport const AggregationFunctionEnum = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'percentile', 'median', 'stddev', 'variance',\n]).describe('Standard aggregation functions');\nexport type AggregationFunction = z.infer<typeof AggregationFunctionEnum>;\n\n/** Sort direction used across query, data-engine, analytics */\nexport const SortDirectionEnum = z.enum(['asc', 'desc'])\n .describe('Sort order direction');\nexport type SortDirection = z.infer<typeof SortDirectionEnum>;\n\n/** Reusable sort item — field + direction pair used across views, data sources, filters */\nexport const SortItemSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to sort by'),\n order: SortDirectionEnum.describe('Sort direction'),\n}).describe('Sort field and direction pair'));\nexport type SortItem = z.infer<typeof SortItemSchema>;\n\n/** CRUD mutation events used across hook, validation, object CDC */\nexport const MutationEventEnum = z.enum([\n 'insert', 'update', 'delete', 'upsert',\n]).describe('Data mutation event types');\nexport type MutationEvent = z.infer<typeof MutationEventEnum>;\n\n/** Database isolation levels — unified format */\nexport const IsolationLevelEnum = z.enum([\n 'read_uncommitted', 'read_committed', 'repeatable_read', 'serializable', 'snapshot',\n]).describe('Transaction isolation levels (snake_case standard)');\nexport type IsolationLevel = z.infer<typeof IsolationLevelEnum>;\n\n/** Cache eviction strategies */\nexport const CacheStrategyEnum = z.enum(['lru', 'lfu', 'ttl', 'fifo'])\n .describe('Cache eviction strategy');\nexport type CacheStrategy = z.infer<typeof CacheStrategyEnum>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { SortItemSchema } from '../shared/enums.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema } from './responsive.zod';\nimport {\n UserActionsConfigSchema,\n AppearanceConfigSchema,\n UserFiltersSchema,\n ViewFilterRuleSchema,\n AddRecordConfigSchema,\n} from './view.zod';\n\n/**\n * Page Region Schema\n * A named region in the template where components are dropped.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PageRegionSchema = lazySchema(() => z.object({\n name: z.string().describe('Region name (e.g. \"sidebar\", \"main\", \"header\")'),\n width: z.enum(['small', 'medium', 'large', 'full']).optional(),\n components: z.array(z.lazy(() => PageComponentSchema)).describe('Components in this region')\n}));\n\n/**\n * Standard Page Component Types\n */\nexport const PageComponentType = z.enum([\n // Structure\n 'page:header', 'page:footer', 'page:sidebar', 'page:tabs', 'page:accordion', 'page:card', 'page:section',\n // Record Context\n 'record:details', 'record:highlights', 'record:related_list', 'record:activity', 'record:chatter', 'record:path', 'record:alert', 'record:quick_actions', 'record:reference_rail', 'record:history',\n // Navigation\n 'app:launcher', 'nav:menu', 'nav:breadcrumb',\n // Utility\n 'global:search', 'global:notifications', 'user:profile',\n // AI\n 'ai:chat_window', 'ai:suggestion',\n // Content Elements (Airtable Interface parity)\n 'element:text', 'element:number', 'element:image', 'element:divider',\n // Interactive Elements (Phase B — Element Library)\n 'element:button', 'element:filter', 'element:form', 'element:record_picker'\n]);\n\n/**\n * Element Data Source Schema\n * Per-element data binding for multi-object pages.\n * Overrides page-level object context so each element can query a different object.\n */\nexport const ElementDataSourceSchema = lazySchema(() => z.object({\n object: z.string().describe('Object to query'),\n view: z.string().optional().describe('Named view to apply'),\n filter: FilterConditionSchema.optional().describe('Additional filter criteria'),\n sort: z.array(SortItemSchema).optional().describe('Sort order'),\n limit: z.number().int().positive().optional().describe('Max records to display'),\n}));\n\n/**\n * Page Component Schema\n * A configured instance of a UI component.\n */\nexport const PageComponentSchema = lazySchema(() => z.object({\n /** Definition */\n type: z.union([\n PageComponentType,\n z.string()\n ]).describe('Component Type (Standard enum or custom string)'),\n id: z.string().optional().describe('Unique instance ID'),\n \n /** Configuration */\n label: I18nLabelSchema.optional(),\n properties: z.record(z.string(), z.unknown()).describe('Component props passed to the widget. See component.zod.ts for schemas.'),\n \n /** \n * Event Handlers \n * Map event names to Action expressions.\n * \"onClick\": \"set_variable('userId', $event.id)\"\n * \"onRowSelect\": \"navigate_to('page_detail', { id: $event.id })\"\n */\n events: z.record(z.string(), z.string()).optional().describe('Event handlers map'),\n\n /** Appearance */\n style: z.record(z.string(), z.string()).optional().describe('Inline styles or utility classes'),\n className: z.string().optional().describe('CSS class names'),\n\n /** Visibility Rule */\n visibility: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n\n /** Per-element data binding, overrides page-level object context */\n dataSource: ElementDataSourceSchema.optional().describe('Per-element data binding for multi-object pages'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * Page Variable Schema\n * Defines local state for the page.\n * Variables can be bound to interactive elements (e.g. element:record_picker, element:filter).\n */\nexport const PageVariableSchema = lazySchema(() => z.object({\n name: z.string().describe('Variable name'),\n type: z.enum(['string', 'number', 'boolean', 'object', 'array', 'record_id']).default('string'),\n defaultValue: z.unknown().optional(),\n /** Source element binding (e.g. element:record_picker writes to this variable) */\n source: z.string().optional().describe('Component ID that writes to this variable'),\n}));\n\n/**\n * Blank Page Layout Item Schema\n * Positions a component on a free-form grid canvas.\n */\nexport const BlankPageLayoutItemSchema = lazySchema(() => z.object({\n componentId: z.string().describe('Reference to a PageComponent.id in the page'),\n x: z.number().int().min(0).describe('Grid column position (0-based)'),\n y: z.number().int().min(0).describe('Grid row position (0-based)'),\n width: z.number().int().min(1).describe('Width in grid columns'),\n height: z.number().int().min(1).describe('Height in grid rows'),\n}));\n\n/**\n * Blank Page Layout Schema\n * Free-form canvas composition with grid-based positioning.\n * Used when page type is 'blank' to enable drag-and-drop element placement.\n */\nexport const BlankPageLayoutSchema = lazySchema(() => z.object({\n columns: z.number().int().min(1).default(12).describe('Number of grid columns'),\n rowHeight: z.number().int().min(1).default(40).describe('Height of each grid row in pixels'),\n gap: z.number().int().min(0).default(8).describe('Gap between grid items in pixels'),\n items: z.array(BlankPageLayoutItemSchema).describe('Positioned components on the canvas'),\n}));\n\n/**\n * Page Type Schema\n * Unified page type enum covering both platform pages (Salesforce FlexiPage style)\n * and Airtable-inspired interface page types.\n *\n * **Page type is the page KIND, NOT a visualization.** How an interface (`list`)\n * page displays its records — grid / kanban / calendar / gallery / timeline — is a\n * *visualization*, configured via `interfaceConfig.appearance.allowedVisualizations`\n * and switched at runtime. Those are deliberately NOT page types: a kanban is a `list`\n * page shown as a board, not a distinct page kind. (Historically grid/kanban/calendar/\n * gallery/timeline appeared here; the runtime never branched on them — it always read\n * the visualization from `interfaceConfig` — so they were removed to stop misleading authors.)\n *\n * **Disambiguation of similar types:**\n * - `record` vs `record_detail`: `record` is a component-based layout page (FlexiPage style with regions),\n * `record_detail` is a field-display page showing all fields of a single record (Airtable style).\n * Use `record` for custom record pages with regions/components, `record_detail` for auto-generated detail views.\n * - `home` vs `overview`: `home` is the platform-level landing page (tab landing),\n * `overview` is an interface-level navigation hub with links/instructions.\n * Use `home` for app-level landing, `overview` for in-interface navigation hubs.\n * - `app` vs `utility` vs `blank`: `app` is an app-level page with navigation context,\n * `utility` is a floating utility panel (e.g. notes, phone), `blank` is a free-form canvas\n * for custom composition. They serve distinct layout purposes.\n *\n * **Implementation status:** only `record`, `home`, `app`, `utility`, and `list` have\n * dedicated renderers today; the remaining interface types (`dashboard`, `form`,\n * `record_detail`, `record_review`, `overview`, `blank`) are declared for roadmap parity\n * but currently fall back to the list renderer. The authoring form only offers the\n * implemented set (see `page.form.ts`) to avoid presenting dead options.\n */\nexport const PageTypeSchema = lazySchema(() => z.enum([\n // Platform page types (Salesforce FlexiPage style) — region/component composition\n 'record', // Component-based record layout page with regions\n 'home', // Platform-level home/landing page\n 'app', // App-level page with navigation context\n 'utility', // Floating utility panel (e.g. notes, phone dialer)\n // Interface page types (Airtable Interface parity) — data-driven surfaces.\n // NOTE: grid/kanban/calendar/gallery/timeline are NOT here — they are visualizations\n // of a `list` page (interfaceConfig.appearance.allowedVisualizations), not page types.\n 'list', // Record list/grid surface with switchable visualizations + quick actions\n 'dashboard', // [roadmap] KPI summary with charts/metrics\n 'form', // [roadmap] Data entry form\n 'record_detail', // [roadmap] Auto-generated single record field display\n 'record_review', // [roadmap] Sequential record review/approval\n 'overview', // [roadmap] Interface-level navigation/landing hub\n 'blank', // [roadmap] Free-form canvas for custom composition\n]).describe('Page type — the page KIND (platform or interface). Visualizations of a list page live in interfaceConfig, not here.'));\n\n/**\n * Record Review Config Schema\n * Configuration for a sequential record review/approval page.\n * Users navigate through records one-by-one, taking actions (approve/reject/skip).\n * Only applicable when page type is 'record_review'.\n */\nexport const RecordReviewConfigSchema = lazySchema(() => z.object({\n object: z.string().describe('Target object for review'),\n filter: FilterConditionSchema.optional().describe('Filter criteria for review queue'),\n sort: z.array(SortItemSchema).optional().describe('Sort order for review queue'),\n displayFields: z.array(z.string()).optional()\n .describe('Fields to display on the review page'),\n actions: z.array(z.object({\n label: z.string().describe('Action button label'),\n type: z.enum(['approve', 'reject', 'skip', 'custom'])\n .describe('Action type'),\n field: z.string().optional()\n .describe('Field to update on action'),\n value: z.union([z.string(), z.number(), z.boolean()]).optional()\n .describe('Value to set on action'),\n nextRecord: z.boolean().optional().default(true)\n .describe('Auto-advance to next record after action'),\n })).describe('Review actions'),\n navigation: z.enum(['sequential', 'random', 'filtered'])\n .optional().default('sequential')\n .describe('Record navigation mode'),\n showProgress: z.boolean().optional().default(true)\n .describe('Show review progress indicator'),\n}));\n\n/**\n * Interface Page Configuration Schema (Airtable Interface parity)\n * Page-level declarative configuration for Airtable-style interface pages.\n * Covers title/data binding, levels, filter by, appearance, user actions,\n * tabs, record count, add record, and advanced options (printing).\n *\n * @see Airtable Interface → right panel (Page / Data / Appearance / User filters / User actions / Advanced)\n */\nexport const InterfacePageConfigSchema = lazySchema(() => z.object({\n /** Data binding (ADR-0047: pages REFERENCE views, never restate them) */\n source: z.string().optional().describe('Source object name for the page'),\n sourceView: z.string().optional()\n .describe('Named list view on the source object to inherit columns/filter/sort from (ADR-0047 iron rule: the page adds presentation policy only). Omit to use the object default view'),\n levels: z.number().int().min(1).optional().describe('Number of hierarchy levels to display'),\n filterBy: z.array(ViewFilterRuleSchema).optional().describe('Page-level filter criteria'),\n\n /** Appearance — `appearance.allowedVisualizations` is the runtime visualization whitelist */\n appearance: AppearanceConfigSchema.optional().describe('Appearance and visualization configuration'),\n\n /** User filters (ADR-0047) */\n userFilters: UserFiltersSchema.optional()\n .describe('End-user quick-filter bar for this page (overrides the source view\\'s userFilters)'),\n\n /** User actions */\n userActions: UserActionsConfigSchema.optional().describe('User action toggles'),\n\n /** Add record */\n addRecord: AddRecordConfigSchema.optional().describe('Add record entry point configuration'),\n\n /** Record count */\n showRecordCount: z.boolean().optional().describe('Show record count at page bottom'),\n\n /** Advanced */\n allowPrinting: z.boolean().optional().describe('Allow users to print the page'),\n}).describe('Interface-level page configuration (Airtable parity)'));\n\n/**\n * Page Schema\n * Defines a composition of components for a specific context.\n * Supports both platform pages (Salesforce FlexiPage style: record, home, app, utility)\n * and interface pages (Airtable Interface style: dashboard, grid, kanban, record_review, etc.).\n * \n * **NAMING CONVENTION:**\n * Page names are used in routing and must be lowercase snake_case.\n * Prefix with 'page_' is recommended for clarity.\n * \n * @example Good page names\n * - 'page_dashboard'\n * - 'page_settings'\n * - 'home_page'\n * - 'record_detail'\n * \n * @example Bad page names (will be rejected)\n * - 'PageDashboard' (PascalCase)\n * - 'Settings Page' (spaces)\n */\nexport const PageSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Page unique name (lowercase snake_case)'),\n label: I18nLabelSchema,\n description: I18nLabelSchema.optional(),\n\n /** Icon (used in interface navigation) */\n icon: z.string().optional().describe('Page icon name'),\n \n /** Page Type */\n type: PageTypeSchema.default('record').describe('Page type'),\n \n /** Page State Definitions */\n variables: z.array(PageVariableSchema).optional().describe('Local page state variables'),\n\n /** Context */\n object: z.string().optional().describe('Bound object (for Record pages)'),\n\n /** Record Review Configuration (only for record_review pages) */\n recordReview: RecordReviewConfigSchema.optional()\n .describe('Record review configuration (required when type is \"record_review\")'),\n\n /** Blank Page Layout (only for blank pages) */\n blankLayout: BlankPageLayoutSchema.optional()\n .describe('Free-form grid layout for blank pages (used when type is \"blank\")'),\n \n /** Layout Template */\n template: z.string().default('default').describe('Layout template name (e.g. \"header-sidebar-main\")'),\n \n /** Regions & Content */\n regions: z.array(PageRegionSchema).describe('Defined regions with components'),\n \n /** Activation */\n isDefault: z.boolean().default(false),\n assignedProfiles: z.array(z.string()).optional(),\n\n /** Interface Page Configuration (Airtable Interface parity) */\n interfaceConfig: InterfacePageConfigSchema.optional()\n .describe('Interface-level page configuration (for Airtable-style interface pages)'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /**\n * Override semantics for record pages.\n *\n * - `\"full\"` (default): the schema fully describes the page.\n * - `\"slotted\"`: the schema only provides overrides for one or more\n * named slots (see `slots`). The default-page synthesizer fills\n * in every slot the author did NOT override. Useful when you want\n * to customize just the header / actions / one tab without\n * re-authoring the rest of the page.\n *\n * Only meaningful when `type === 'record'`. Ignored otherwise.\n */\n kind: z.enum(['full', 'slotted']).default('full')\n .describe('Page override mode: full (default) or slotted (partial overrides)'),\n\n /**\n * Slot override map for slotted record pages.\n *\n * Each slot accepts a single PageComponent or an array. Slots not\n * provided fall through to the synthesized default.\n *\n * Slot menu (v1): header | actions | alerts | highlights | details |\n * tabs | discussion. Each slot is a full replacement at the slot\n * boundary — no deep merge, no patch operations. To compose default +\n * custom, call the corresponding `buildDefault*` sub-builder from the\n * renderer runtime (e.g. @object-ui/plugin-detail).\n *\n * Only honored when `kind === 'slotted'`.\n */\n slots: z.object({\n header: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n actions: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n alerts: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n highlights: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n details: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n tabs: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n discussion: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n }).optional().describe('Slot override map for slotted pages'),\n}).superRefine((data, ctx) => {\n if (data.type === 'record_review' && !data.recordReview) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['recordReview'],\n message: 'recordReview is required when type is \"record_review\"',\n });\n }\n if (data.type === 'blank' && !data.blankLayout) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['blankLayout'],\n message: 'blankLayout is required when type is \"blank\"',\n });\n }\n if (data.kind === 'slotted' && !data.slots) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['slots'],\n message: 'slots is required when kind is \"slotted\"',\n });\n }\n}));\n\nexport type Page = z.infer<typeof PageSchema>;\nexport type PageType = z.infer<typeof PageTypeSchema>;\nexport type PageComponent = z.infer<typeof PageComponentSchema>;\nexport type PageRegion = z.infer<typeof PageRegionSchema>;\nexport type PageVariable = z.infer<typeof PageVariableSchema>;\nexport type ElementDataSource = z.infer<typeof ElementDataSourceSchema>;\nexport type RecordReviewConfig = z.infer<typeof RecordReviewConfigSchema>;\nexport type BlankPageLayoutItem = z.infer<typeof BlankPageLayoutItemSchema>;\nexport type BlankPageLayout = z.infer<typeof BlankPageLayoutSchema>;\nexport type InterfacePageConfig = z.infer<typeof InterfacePageConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldSchema } from '../data/field.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Widget Lifecycle Hooks Schema\n * \n * Defines lifecycle callbacks for custom widgets inspired by Web Components and React.\n * These hooks allow widgets to perform initialization, cleanup, and respond to changes.\n * \n * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components\n * @see https://react.dev/reference/react/Component#component-lifecycle\n * \n * @example\n * ```typescript\n * const widget = {\n * lifecycle: {\n * onMount: \"console.log('Widget mounted')\",\n * onUpdate: \"if (prevProps.value !== props.value) { updateUI() }\",\n * onUnmount: \"cleanup()\",\n * onValidate: \"return value.length > 0 ? null : 'Required field'\"\n * }\n * }\n * ```\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WidgetLifecycleSchema = lazySchema(() => z.object({\n /**\n * Called when widget is mounted/rendered for the first time\n * Use for initialization, setting up event listeners, loading data, etc.\n * \n * @example \"initializeDatePicker(); loadOptions();\"\n */\n onMount: z.string().optional().describe('Initialization code when widget mounts'),\n\n /**\n * Called when widget props change\n * Receives previous props for comparison\n * \n * @example \"if (prevProps.value !== props.value) { updateDisplay() }\"\n */\n onUpdate: z.string().optional().describe('Code to run when props change'),\n\n /**\n * Called when widget is about to be removed from DOM\n * Use for cleanup, removing event listeners, canceling timers, etc.\n * \n * @example \"destroyDatePicker(); cancelPendingRequests();\"\n */\n onUnmount: z.string().optional().describe('Cleanup code when widget unmounts'),\n\n /**\n * Custom validation logic for this widget\n * Should return error message string if invalid, null/undefined if valid\n * \n * @example \"return value && value.length >= 10 ? null : 'Minimum 10 characters'\"\n */\n onValidate: z.string().optional().describe('Custom validation logic'),\n\n /**\n * Called when widget receives focus\n * \n * @example \"highlightField(); logFocusEvent();\"\n */\n onFocus: z.string().optional().describe('Code to run on focus'),\n\n /**\n * Called when widget loses focus\n * \n * @example \"validateField(); saveFieldState();\"\n */\n onBlur: z.string().optional().describe('Code to run on blur'),\n\n /**\n * Called on any error in the widget\n * \n * @example \"logError(error); showErrorNotification();\"\n */\n onError: z.string().optional().describe('Error handling code'),\n}));\n\nexport type WidgetLifecycle = z.infer<typeof WidgetLifecycleSchema>;\n\n/**\n * Widget Event Schema\n * \n * Defines custom events that widgets can emit, inspired by DOM Events and Lightning Web Components.\n * \n * @see https://developer.mozilla.org/en-US/docs/Web/Events/Creating_and_triggering_events\n * @see https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.events\n * \n * @example\n * ```typescript\n * const searchEvent = {\n * name: 'search',\n * bubbles: true,\n * cancelable: false,\n * payload: {\n * query: 'string',\n * filters: 'object'\n * }\n * }\n * ```\n */\nexport const WidgetEventSchema = lazySchema(() => z.object({\n /**\n * Event name\n * Should be lowercase, dash-separated for consistency\n * \n * @example \"value-change\", \"item-selected\", \"search-complete\"\n */\n name: z.string().describe('Event name'),\n\n /**\n * Event label for documentation\n */\n label: I18nLabelSchema.optional().describe('Human-readable event label'),\n\n /**\n * Event description\n */\n description: I18nLabelSchema.optional().describe('Event description and usage'),\n\n /**\n * Whether event bubbles up through the DOM hierarchy\n * \n * @default false\n */\n bubbles: z.boolean().default(false).describe('Whether event bubbles'),\n\n /**\n * Whether event can be cancelled\n * \n * @default false\n */\n cancelable: z.boolean().default(false).describe('Whether event is cancelable'),\n\n /**\n * Event payload schema\n * Defines the data structure sent with the event\n * \n * @example { userId: 'string', timestamp: 'number' }\n */\n payload: z.record(z.string(), z.unknown()).optional().describe('Event payload schema'),\n}));\n\nexport type WidgetEvent = z.infer<typeof WidgetEventSchema>;\n\n/**\n * Widget Property Definition Schema\n * \n * Defines the contract for widget configuration properties.\n * Inspired by React PropTypes and Web Component attributes.\n * \n * @see https://react.dev/reference/react/Component#static-proptypes\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements\n * \n * @example\n * ```typescript\n * const widgetProps = {\n * maxLength: {\n * type: 'number',\n * required: false,\n * default: 100,\n * description: 'Maximum input length'\n * }\n * }\n * ```\n */\nexport const WidgetPropertySchema = lazySchema(() => z.object({\n /**\n * Property name\n * Should be camelCase following ObjectStack conventions\n */\n name: z.string().describe('Property name (camelCase)'),\n\n /**\n * Property label for UI\n */\n label: I18nLabelSchema.optional().describe('Human-readable label'),\n\n /**\n * Property data type\n * \n * @example \"string\", \"number\", \"boolean\", \"array\", \"object\", \"function\"\n */\n type: z.enum(['string', 'number', 'boolean', 'array', 'object', 'function', 'any'])\n .describe('TypeScript type'),\n\n /**\n * Whether property is required\n * \n * @default false\n */\n required: z.boolean().default(false).describe('Whether property is required'),\n\n /**\n * Default value for the property\n */\n default: z.unknown().optional().describe('Default value'),\n\n /**\n * Property description\n */\n description: I18nLabelSchema.optional().describe('Property description'),\n\n /**\n * Property validation schema\n * Can include min/max, regex, enum values, etc.\n */\n validation: z.record(z.string(), z.unknown()).optional().describe('Validation rules'),\n\n /**\n * Property category for grouping in UI\n */\n category: z.string().optional().describe('Property category'),\n}));\n\nexport type WidgetProperty = z.infer<typeof WidgetPropertySchema>;\n\n/**\n * Widget Manifest Schema\n * \n * Complete definition for a custom widget including metadata, lifecycle, events, and props.\n * This is used for widget registration and discovery.\n * \n * @example\n * ```typescript\n * const customWidget = {\n * name: 'custom_date_picker',\n * label: 'Custom Date Picker',\n * version: '1.0.0',\n * author: 'Company Name',\n * fieldTypes: ['date', 'datetime'],\n * lifecycle: { ... },\n * events: [ ... ],\n * properties: [ ... ]\n * }\n * ```\n */\n/**\n * Widget Source Schema\n * Defines how the widget code is loaded.\n */\nexport const WidgetSourceSchema = lazySchema(() => z.discriminatedUnion('type', [\n // NPM Registry (standard)\n z.object({\n type: z.literal('npm'),\n packageName: z.string().describe('NPM package name'),\n version: z.string().default('latest'),\n exportName: z.string().optional().describe('Named export (default: default)'),\n }),\n // Module Federation (Remote)\n z.object({\n type: z.literal('remote'),\n url: z.string().url().describe('Remote entry URL (.js)'),\n moduleName: z.string().describe('Exposed module name'),\n scope: z.string().describe('Remote scope name'),\n }),\n // Inline Code (Simple scripts)\n z.object({\n type: z.literal('inline'),\n code: z.string().describe('JavaScript code body'),\n }),\n]));\n\nexport type WidgetSource = z.infer<typeof WidgetSourceSchema>;\n\nexport const WidgetManifestSchema = lazySchema(() => z.object({\n /**\n * Widget identifier (snake_case)\n */\n name: SnakeCaseIdentifierSchema\n .describe('Widget identifier (snake_case)'),\n\n /**\n * Human-readable widget name\n */\n label: I18nLabelSchema.describe('Widget display name'),\n\n /**\n * Widget description\n */\n description: I18nLabelSchema.optional().describe('Widget description'),\n\n /**\n * Widget version (semver)\n */\n version: z.string().optional().describe('Widget version (semver)'),\n\n /**\n * Widget author/organization\n */\n author: z.string().optional().describe('Widget author'),\n\n /**\n * Icon name or URL\n */\n icon: z.string().optional().describe('Widget icon'),\n\n /**\n * Field types this widget supports\n * \n * @example [\"text\", \"email\", \"url\"]\n */\n fieldTypes: z.array(z.string()).optional().describe('Supported field types'),\n\n /**\n * Widget category for organization\n */\n category: z.enum(['input', 'display', 'picker', 'editor', 'custom'])\n .default('custom')\n .describe('Widget category'),\n\n /**\n * Widget lifecycle hooks\n */\n lifecycle: WidgetLifecycleSchema.optional().describe('Lifecycle hooks'),\n\n /**\n * Custom events this widget emits\n */\n events: z.array(WidgetEventSchema).optional().describe('Custom events'),\n\n /**\n * Widget configuration properties\n */\n properties: z.array(WidgetPropertySchema).optional().describe('Configuration properties'),\n\n /**\n * Widget implementation\n * Defines how to load the widget code\n */\n implementation: WidgetSourceSchema.optional().describe('Widget implementation source'),\n\n /**\n * Widget dependencies\n * External libraries or scripts needed\n */\n dependencies: z.array(z.object({\n name: z.string(),\n version: z.string().optional(),\n url: z.string().url().optional(),\n })).optional().describe('Widget dependencies'),\n\n /**\n * Widget screenshots for showcase\n */\n screenshots: z.array(z.string().url()).optional().describe('Screenshot URLs'),\n\n /**\n * Widget documentation URL\n */\n documentation: z.string().url().optional().describe('Documentation URL'),\n\n /**\n * License information\n */\n license: z.string().optional().describe('License (SPDX identifier)'),\n\n /**\n * Tags for discovery\n */\n tags: z.array(z.string()).optional().describe('Tags for categorization'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n}));\n\nexport type WidgetManifest = z.infer<typeof WidgetManifestSchema>;\n\n/**\n * Field Widget Props Schema\n * \n * This defines the contract for custom field components and plugin UI extensions.\n * Third-party developers use this interface to build custom field widgets that integrate\n * seamlessly with the ObjectStack UI system.\n * \n * @example\n * // Custom widget implementation\n * function CustomDatePicker(props: FieldWidgetProps) {\n * const { value, onChange, readonly, required, error, field, record, options } = props;\n * // Widget implementation...\n * }\n */\nexport const FieldWidgetPropsSchema = lazySchema(() => z.object({\n /**\n * Current field value.\n * Type depends on the field type (string, number, boolean, array, object, etc.)\n */\n value: z.unknown().describe('Current field value'),\n\n /**\n * Callback function to update the field value.\n * Should be called when user interaction changes the value.\n * \n * @param newValue - The new value to set\n */\n onChange: z.function()\n .input(z.tuple([z.unknown()]))\n .output(z.void())\n .describe('Callback to update field value'),\n\n /**\n * Whether the field is in read-only mode.\n * When true, the widget should display the value but not allow editing.\n */\n readonly: z.boolean().default(false).describe('Read-only mode flag'),\n\n /**\n * Whether the field is required.\n * Widget should indicate required state visually and validate accordingly.\n */\n required: z.boolean().default(false).describe('Required field flag'),\n\n /**\n * Validation error message to display.\n * When present, widget should display the error in its UI.\n */\n error: z.string().optional().describe('Validation error message'),\n\n /**\n * Complete field definition from the schema.\n * Contains metadata like type, constraints, options, etc.\n */\n field: FieldSchema.describe('Field schema definition'),\n\n /**\n * The complete record/document being edited.\n * Useful for conditional logic and cross-field dependencies.\n */\n record: z.record(z.string(), z.unknown()).optional().describe('Complete record data'),\n\n /**\n * Custom options passed to the widget.\n * Can contain widget-specific configuration like themes, behaviors, etc.\n */\n options: z.record(z.string(), z.unknown()).optional().describe('Custom widget options'),\n}));\n\n/**\n * TypeScript type for Field Widget Props\n */\nexport type FieldWidgetProps = z.infer<typeof FieldWidgetPropsSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Feed Item Type\n * Unified activity types for the record timeline.\n * Covers comments, field changes, tasks, events, and system activities.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FeedItemType = z.enum([\n 'comment',\n 'field_change',\n 'task',\n 'event',\n 'email',\n 'call',\n 'note',\n 'file',\n 'record_create',\n 'record_delete',\n 'approval',\n 'sharing',\n 'system',\n]);\nexport type FeedItemType = z.infer<typeof FeedItemType>;\n\n/**\n * Mention Schema\n * Represents an @mention within comment body text.\n */\nexport const MentionSchema = lazySchema(() => z.object({\n type: z.enum(['user', 'team', 'record']).describe('Mention target type'),\n id: z.string().describe('Target ID'),\n name: z.string().describe('Display name for rendering'),\n offset: z.number().int().min(0).describe('Character offset in body text'),\n length: z.number().int().min(1).describe('Length of mention token in body text'),\n}));\nexport type Mention = z.infer<typeof MentionSchema>;\n\n/**\n * Field Change Entry Schema\n * Represents a single field-level change within a field_change feed item.\n */\nexport const FieldChangeEntrySchema = lazySchema(() => z.object({\n field: z.string().describe('Field machine name'),\n fieldLabel: z.string().optional().describe('Field display label'),\n oldValue: z.unknown().optional().describe('Previous value'),\n newValue: z.unknown().optional().describe('New value'),\n oldDisplayValue: z.string().optional().describe('Human-readable old value'),\n newDisplayValue: z.string().optional().describe('Human-readable new value'),\n}));\nexport type FieldChangeEntry = z.infer<typeof FieldChangeEntrySchema>;\n\n/**\n * Reaction Schema\n * Represents an emoji reaction on a feed item.\n */\nexport const ReactionSchema = lazySchema(() => z.object({\n emoji: z.string().describe('Emoji character or shortcode (e.g., \"👍\", \":thumbsup:\")'),\n userIds: z.array(z.string()).describe('Users who reacted'),\n count: z.number().int().min(1).describe('Total reaction count'),\n}));\nexport type Reaction = z.infer<typeof ReactionSchema>;\n\n/**\n * Feed Actor Schema\n * Represents the actor who performed the action.\n */\nexport const FeedActorSchema = lazySchema(() => z.object({\n type: z.enum(['user', 'system', 'service', 'automation']).describe('Actor type'),\n id: z.string().describe('Actor ID'),\n name: z.string().optional().describe('Actor display name'),\n avatarUrl: z.string().url().optional().describe('Actor avatar URL'),\n source: z.string().optional().describe('Source application (e.g., \"Omni\", \"API\", \"Studio\")'),\n}));\nexport type FeedActor = z.infer<typeof FeedActorSchema>;\n\n/**\n * Feed Item Visibility\n */\nexport const FeedVisibility = z.enum(['public', 'internal', 'private']);\nexport type FeedVisibility = z.infer<typeof FeedVisibility>;\n\n/**\n * Feed Item Schema\n * A single entry in the unified activity timeline.\n *\n * @example Comment\n * {\n * id: 'feed_001',\n * type: 'comment',\n * object: 'account',\n * recordId: 'rec_123',\n * body: 'Great progress! @jane.doe can you follow up?',\n * mentions: [{ type: 'user', id: 'user_123', name: 'Jane Doe', offset: 17, length: 9 }],\n * actor: { type: 'user', id: 'user_456', name: 'John Smith' },\n * createdAt: '2026-01-15T10:30:00Z',\n * }\n *\n * @example Field Change\n * {\n * id: 'feed_002',\n * type: 'field_change',\n * object: 'account',\n * recordId: 'rec_123',\n * changes: [\n * { field: 'status', oldDisplayValue: 'New', newDisplayValue: 'Active' },\n * { field: 'region', oldDisplayValue: '', newDisplayValue: 'Asia-Pacific' },\n * ],\n * actor: { type: 'user', id: 'user_456', name: 'John Smith' },\n * createdAt: '2026-01-15T10:25:00Z',\n * }\n */\nexport const FeedItemSchema = lazySchema(() => z.object({\n /** Unique identifier */\n id: z.string().describe('Feed item ID'),\n\n /** Feed item type */\n type: FeedItemType.describe('Activity type'),\n\n /** Target record reference */\n object: z.string().describe('Object name (e.g., \"account\")'),\n recordId: z.string().describe('Record ID this feed item belongs to'),\n\n /** Actor (who performed the action) */\n actor: FeedActorSchema.describe('Who performed this action'),\n\n /** Content (for comments/notes) */\n body: z.string().optional().describe('Rich text body (Markdown supported)'),\n\n /** @Mentions */\n mentions: z.array(MentionSchema).optional().describe('Mentioned users/teams/records'),\n\n /** Field changes (for field_change type) */\n changes: z.array(FieldChangeEntrySchema).optional().describe('Field-level changes'),\n\n /** Reactions */\n reactions: z.array(ReactionSchema).optional().describe('Emoji reactions on this item'),\n\n /** Reply threading */\n parentId: z.string().optional().describe('Parent feed item ID for threaded replies'),\n replyCount: z.number().int().min(0).default(0).describe('Number of replies'),\n\n /** Pin / Star */\n pinned: z.boolean().default(false).describe('Whether the feed item is pinned to the top of the timeline'),\n pinnedAt: z.string().datetime().optional().describe('Timestamp when the item was pinned'),\n pinnedBy: z.string().optional().describe('User ID who pinned the item'),\n starred: z.boolean().default(false).describe('Whether the feed item is starred/bookmarked by the current user'),\n starredAt: z.string().datetime().optional().describe('Timestamp when the item was starred'),\n\n /** Visibility */\n visibility: FeedVisibility.default('public')\n .describe('Visibility: public (all users), internal (team only), private (author + mentioned)'),\n\n /** Timestamps */\n createdAt: z.string().datetime().describe('Creation timestamp'),\n updatedAt: z.string().datetime().optional().describe('Last update timestamp'),\n editedAt: z.string().datetime().optional().describe('When comment was last edited'),\n isEdited: z.boolean().default(false).describe('Whether comment has been edited'),\n}));\nexport type FeedItem = z.infer<typeof FeedItemSchema>;\n\n/**\n * Feed Filter Mode\n * Controls which feed item types to display in the timeline.\n */\nexport const FeedFilterMode = z.enum([\n 'all',\n 'comments_only',\n 'changes_only',\n 'tasks_only',\n]);\nexport type FeedFilterMode = z.infer<typeof FeedFilterMode>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ViewFilterRuleSchema } from './view.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { FeedItemType, FeedFilterMode } from '../data/feed.zod';\n\n/**\n * Empty Properties Schema\n */\nimport { lazySchema } from '../shared/lazy-schema';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nconst EmptyProps = z.object({});\n\n/**\n * ----------------------------------------------------------------------\n * 1. Structure Components\n * ----------------------------------------------------------------------\n */\n\nexport const PageHeaderProps = z.object({\n title: I18nLabelSchema.describe('Page title'),\n subtitle: I18nLabelSchema.optional().describe('Page subtitle'),\n icon: z.string().optional().describe('Icon name'),\n breadcrumb: z.boolean().default(true).describe('Show breadcrumb'),\n actions: z.array(z.string()).optional().describe('Action IDs to show in header'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const PageTabsProps = z.object({\n type: z.enum(['line', 'card', 'pill']).default('line'),\n position: z.enum(['top', 'left']).default('top'),\n items: z.array(z.object({\n label: I18nLabelSchema,\n icon: z.string().optional(),\n children: z.array(z.unknown()).describe('Child components')\n })),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const PageCardProps = z.object({\n title: I18nLabelSchema.optional(),\n bordered: z.boolean().default(true),\n actions: z.array(z.string()).optional(),\n /** Slot for nested content in the Card body */\n body: z.array(z.unknown()).optional().describe('Card content components (slot)'),\n /** Slot for footer content */\n footer: z.array(z.unknown()).optional().describe('Card footer components (slot)'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\n/**\n * ----------------------------------------------------------------------\n * 2. Record Context Components\n * ----------------------------------------------------------------------\n */\n\nexport const RecordDetailsProps = z.object({\n columns: z.enum(['1', '2', '3', '4']).default('2').describe('Number of columns for field layout (1-4)'),\n layout: z.enum(['auto', 'custom']).default('auto').describe('Layout mode: auto uses object compactLayout, custom uses explicit sections'),\n sections: z.array(z.string()).optional().describe('Section IDs to show (required when layout is \"custom\")'),\n fields: z.array(z.string()).optional().describe('Explicit field list to display (optional, overrides compactLayout)'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordRelatedListProps = z.object({\n objectName: z.string().describe('Related object name (e.g., \"task\", \"opportunity\")'),\n relationshipField: z.string().describe('Field on related object that points to this record (e.g., \"account_id\")'),\n columns: z.array(z.string()).describe('Fields to display in the related list'),\n sort: z.union([\n z.string(),\n z.array(z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc'])\n }))\n ]).optional().describe('Sort order for related records'),\n limit: z.number().int().positive().default(5).describe('Number of records to display initially'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Additional filter criteria for related records'),\n title: I18nLabelSchema.optional().describe('Custom title for the related list'),\n showViewAll: z.boolean().default(true).describe('Show \"View All\" link to see all related records'),\n actions: z.array(z.string()).optional().describe('Action IDs available for related records'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordHighlightsField = z.union([\n z.string(),\n z.object({\n name: z.string().describe('Field name on the record'),\n label: z.string().optional().describe('Display label (overrides schema label)'),\n icon: z.string().optional().describe('Icon name (lucide icon key)'),\n type: z.string().optional().describe('Override cell renderer type (rare)'),\n }),\n]).describe('Highlight field: bare name, or {name,label?,icon?,type?}');\n\nexport const RecordHighlightsProps = z.object({\n fields: z.array(RecordHighlightsField).min(1).max(7).describe('Key fields to highlight (1-7 fields max, typically displayed as prominent cards). Each item may be a bare field name or {name, label?, icon?, type?} for inline overrides.'),\n layout: z.enum(['horizontal', 'vertical']).default('horizontal').describe('Layout orientation for highlight fields'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordActivityProps = z.object({\n /** Activity types to display (unified enum including comment, field_change, etc.) */\n types: z.array(FeedItemType).optional().describe('Feed item types to show (default: all)'),\n /** Default filter mode (Airtable-style dropdown) */\n filterMode: FeedFilterMode.default('all').describe('Default activity filter'),\n /** Allow user to switch filter modes */\n showFilterToggle: z.boolean().default(true).describe('Show filter dropdown in panel header'),\n /** Pagination */\n limit: z.number().int().positive().default(20).describe('Number of items to load per page'),\n /** Show completed activities */\n showCompleted: z.boolean().default(false).describe('Include completed activities'),\n /** Merge field_change + comment in a unified timeline */\n unifiedTimeline: z.boolean().default(true).describe('Mix field changes and comments in one timeline (Airtable style)'),\n /** Show the comment input box at the bottom */\n showCommentInput: z.boolean().default(true).describe('Show \"Leave a comment\" input at the bottom'),\n /** Enable @mentions in comments */\n enableMentions: z.boolean().default(true).describe('Enable @mentions in comments'),\n /** Enable emoji reactions */\n enableReactions: z.boolean().default(false).describe('Enable emoji reactions on feed items'),\n /** Enable threaded replies */\n enableThreading: z.boolean().default(false).describe('Enable threaded replies on comments'),\n /** Show notification subscription toggle (bell icon) */\n showSubscriptionToggle: z.boolean().default(true).describe('Show bell icon for record-level notification subscription'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordChatterProps = z.object({\n /** Panel position */\n position: z.enum(['sidebar', 'inline', 'drawer']).default('sidebar').describe('Where to render the chatter panel'),\n /** Panel width (for sidebar/drawer) */\n width: z.union([z.string(), z.number()]).optional().describe('Panel width (e.g., \"350px\", \"30%\")'),\n /** Collapsible */\n collapsible: z.boolean().default(true).describe('Whether the panel can be collapsed'),\n /** Default collapsed state */\n defaultCollapsed: z.boolean().default(false).describe('Whether the panel starts collapsed'),\n /** Feed configuration (delegates to RecordActivityProps) */\n feed: RecordActivityProps.optional().describe('Embedded activity feed configuration'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const RecordPathProps = z.object({\n statusField: z.string().describe('Field name representing the current status/stage'),\n stages: z.array(z.object({\n value: z.string(),\n label: I18nLabelSchema,\n })).optional().describe('Explicit stage definitions (if not using field metadata)'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const PageAccordionProps = z.object({\n items: z.array(z.object({\n label: I18nLabelSchema,\n icon: z.string().optional(),\n collapsed: z.boolean().default(false),\n children: z.array(z.unknown()).describe('Child components'),\n })),\n allowMultiple: z.boolean().default(false).describe('Allow multiple panels to be expanded simultaneously'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\nexport const AIChatWindowProps = z.object({\n mode: z.enum(['float', 'sidebar', 'inline']).default('float').describe('Display mode for the chat window'),\n agentId: z.string().optional().describe('Specific AI agent to use'),\n context: z.record(z.string(), z.unknown()).optional().describe('Contextual data to pass to the AI'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n});\n\n/**\n * ----------------------------------------------------------------------\n * 3. Content Element Components (Airtable Interface Parity)\n * ----------------------------------------------------------------------\n */\n\nexport const ElementTextPropsSchema = lazySchema(() => z.object({\n content: z.string().describe('Text or Markdown content'),\n variant: z.enum(['heading', 'subheading', 'body', 'caption'])\n .optional().default('body').describe('Text style variant'),\n align: z.enum(['left', 'center', 'right'])\n .optional().default('left').describe('Text alignment'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementNumberPropsSchema = lazySchema(() => z.object({\n object: z.string().describe('Source object'),\n field: z.string().optional().describe('Field to aggregate'),\n aggregate: z.enum(['count', 'sum', 'avg', 'min', 'max'])\n .describe('Aggregation function'),\n filter: FilterConditionSchema.optional().describe('Filter criteria'),\n format: z.enum(['number', 'currency', 'percent']).optional().describe('Number display format'),\n prefix: z.string().optional().describe('Prefix text (e.g. \"$\")'),\n suffix: z.string().optional().describe('Suffix text (e.g. \"%\")'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementImagePropsSchema = lazySchema(() => z.object({\n src: z.string().describe('Image URL or attachment field'),\n alt: z.string().optional().describe('Alt text for accessibility'),\n fit: z.enum(['cover', 'contain', 'fill'])\n .optional().default('cover').describe('Image object-fit mode'),\n height: z.number().optional().describe('Fixed height in pixels'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * ----------------------------------------------------------------------\n * 4. Interactive Element Components (Phase B — Element Library)\n * ----------------------------------------------------------------------\n */\n\nexport const ElementButtonPropsSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.describe('Button display label'),\n variant: z.enum(['primary', 'secondary', 'danger', 'ghost', 'link'])\n .optional().default('primary').describe('Button visual variant'),\n size: z.enum(['small', 'medium', 'large'])\n .optional().default('medium').describe('Button size'),\n icon: z.string().optional().describe('Icon name (Lucide icon)'),\n iconPosition: z.enum(['left', 'right'])\n .optional().default('left').describe('Icon position relative to label'),\n disabled: z.boolean().optional().default(false).describe('Disable the button'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementFilterPropsSchema = lazySchema(() => z.object({\n object: z.string().describe('Object to filter'),\n fields: z.array(z.string()).describe('Filterable field names'),\n targetVariable: z.string().optional().describe('Page variable to store filter state'),\n layout: z.enum(['inline', 'dropdown', 'sidebar'])\n .optional().default('inline').describe('Filter display layout'),\n showSearch: z.boolean().optional().default(true).describe('Show search input'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementFormPropsSchema = lazySchema(() => z.object({\n object: z.string().describe('Object for the form'),\n fields: z.array(z.string()).optional().describe('Fields to display (defaults to all editable fields)'),\n mode: z.enum(['create', 'edit']).optional().default('create').describe('Form mode'),\n submitLabel: I18nLabelSchema.optional().describe('Submit button label'),\n onSubmit: ExpressionInputSchema.optional().describe('Action expression on form submit (CEL)'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport const ElementRecordPickerPropsSchema = lazySchema(() => z.object({\n object: z.string().describe('Object to pick records from'),\n displayField: z.string().describe('Field to display as the record label'),\n searchFields: z.array(z.string()).optional().describe('Fields to search against'),\n filter: FilterConditionSchema.optional().describe('Filter criteria for available records'),\n multiple: z.boolean().optional().default(false).describe('Allow multiple record selection'),\n targetVariable: z.string().optional().describe('Page variable to bind selected record ID(s)'),\n placeholder: I18nLabelSchema.optional().describe('Placeholder text'),\n /** ARIA accessibility */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * ----------------------------------------------------------------------\n * Component Props Map\n * Maps Component Type to its Property Schema\n * ----------------------------------------------------------------------\n */\nexport const ComponentPropsMap = {\n // Structure\n 'page:header': PageHeaderProps,\n 'page:tabs': PageTabsProps,\n 'page:card': PageCardProps,\n 'page:footer': EmptyProps,\n 'page:sidebar': EmptyProps,\n 'page:accordion': PageAccordionProps,\n 'page:section': EmptyProps,\n\n // Record\n 'record:details': RecordDetailsProps,\n 'record:related_list': RecordRelatedListProps,\n 'record:highlights': RecordHighlightsProps,\n 'record:activity': RecordActivityProps,\n 'record:chatter': RecordChatterProps,\n 'record:path': RecordPathProps,\n\n // Navigation\n 'app:launcher': EmptyProps,\n 'nav:menu': EmptyProps,\n 'nav:breadcrumb': EmptyProps,\n\n // Utility\n 'global:search': EmptyProps,\n 'global:notifications': EmptyProps,\n 'user:profile': EmptyProps,\n \n // AI\n 'ai:chat_window': AIChatWindowProps,\n 'ai:suggestion': z.object({ context: z.string().optional() }),\n\n // Content Elements\n 'element:text': ElementTextPropsSchema,\n 'element:number': ElementNumberPropsSchema,\n 'element:image': ElementImagePropsSchema,\n 'element:divider': EmptyProps,\n\n // Interactive Elements\n 'element:button': ElementButtonPropsSchema,\n 'element:filter': ElementFilterPropsSchema,\n 'element:form': ElementFormPropsSchema,\n 'element:record_picker': ElementRecordPickerPropsSchema,\n} as const;\n\n/**\n * Type Helper to extract props from map\n */\nexport type ComponentProps<T extends keyof typeof ComponentPropsMap> = z.infer<typeof ComponentPropsMap[T]>;\nexport type ComponentPropsInput<T extends keyof typeof ComponentPropsMap> = z.input<typeof ComponentPropsMap[T]>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Touch Target Configuration Schema\n * Ensures touch targets meet WCAG 2.5.5 minimum size requirements (44x44px).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const TouchTargetConfigSchema = lazySchema(() => z.object({\n minWidth: z.number().default(44).describe('Minimum touch target width in pixels (WCAG 2.5.5: 44px)'),\n minHeight: z.number().default(44).describe('Minimum touch target height in pixels (WCAG 2.5.5: 44px)'),\n padding: z.number().optional().describe('Additional padding around touch target in pixels'),\n hitSlop: z.object({\n top: z.number().optional().describe('Extra hit area above the element'),\n right: z.number().optional().describe('Extra hit area to the right of the element'),\n bottom: z.number().optional().describe('Extra hit area below the element'),\n left: z.number().optional().describe('Extra hit area to the left of the element'),\n }).optional().describe('Invisible hit area extension beyond the visible bounds'),\n}).describe('Touch target sizing configuration (WCAG accessible)'));\n\nexport type TouchTargetConfig = z.infer<typeof TouchTargetConfigSchema>;\n\n/**\n * Gesture Type Enum\n * Supported touch gesture types.\n */\nexport const GestureTypeSchema = lazySchema(() => z.enum([\n 'swipe',\n 'pinch',\n 'long_press',\n 'double_tap',\n 'drag',\n 'rotate',\n 'pan',\n]).describe('Touch gesture type'));\n\nexport type GestureType = z.infer<typeof GestureTypeSchema>;\n\n/**\n * Swipe Direction Enum\n */\nexport const SwipeDirectionSchema = lazySchema(() => z.enum(['up', 'down', 'left', 'right']));\n\nexport type SwipeDirection = z.infer<typeof SwipeDirectionSchema>;\n\n/**\n * Swipe Gesture Configuration Schema\n */\nexport const SwipeGestureConfigSchema = lazySchema(() => z.object({\n direction: z.array(SwipeDirectionSchema).describe('Allowed swipe directions'),\n threshold: z.number().optional().describe('Minimum distance in pixels to recognize swipe'),\n velocity: z.number().optional().describe('Minimum velocity (px/ms) to trigger swipe'),\n}).describe('Swipe gesture recognition settings'));\n\nexport type SwipeGestureConfig = z.infer<typeof SwipeGestureConfigSchema>;\n\n/**\n * Pinch Gesture Configuration Schema\n */\nexport const PinchGestureConfigSchema = lazySchema(() => z.object({\n minScale: z.number().optional().describe('Minimum scale factor (e.g., 0.5 for 50%)'),\n maxScale: z.number().optional().describe('Maximum scale factor (e.g., 3.0 for 300%)'),\n}).describe('Pinch/zoom gesture recognition settings'));\n\nexport type PinchGestureConfig = z.infer<typeof PinchGestureConfigSchema>;\n\n/**\n * Long Press Gesture Configuration Schema\n */\nexport const LongPressGestureConfigSchema = lazySchema(() => z.object({\n duration: z.number().default(500).describe('Hold duration in milliseconds to trigger long press'),\n moveTolerance: z.number().optional().describe('Max movement in pixels allowed during press'),\n}).describe('Long press gesture recognition settings'));\n\nexport type LongPressGestureConfig = z.infer<typeof LongPressGestureConfigSchema>;\n\n/**\n * Gesture Configuration Schema\n * Unified configuration for all supported gesture types.\n */\nexport const GestureConfigSchema = lazySchema(() => z.object({\n type: GestureTypeSchema.describe('Gesture type to configure'),\n label: I18nLabelSchema.optional().describe('Descriptive label for the gesture action'),\n enabled: z.boolean().default(true).describe('Whether this gesture is active'),\n swipe: SwipeGestureConfigSchema.optional().describe('Swipe gesture settings (when type is swipe)'),\n pinch: PinchGestureConfigSchema.optional().describe('Pinch gesture settings (when type is pinch)'),\n longPress: LongPressGestureConfigSchema.optional().describe('Long press settings (when type is long_press)'),\n}).describe('Per-gesture configuration'));\n\nexport type GestureConfig = z.infer<typeof GestureConfigSchema>;\n\n/**\n * Touch Interaction Schema\n * Top-level touch and gesture interaction configuration for a component.\n */\nexport const TouchInteractionSchema = lazySchema(() => z.object({\n gestures: z.array(GestureConfigSchema).optional().describe('Configured gesture recognizers'),\n touchTarget: TouchTargetConfigSchema.optional().describe('Touch target sizing and hit area'),\n hapticFeedback: z.boolean().optional().describe('Enable haptic feedback on touch interactions'),\n}).merge(AriaPropsSchema.partial()).describe('Touch and gesture interaction configuration'));\n\nexport type TouchInteraction = z.infer<typeof TouchInteractionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Focus Trap Configuration Schema\n * Constrains keyboard focus within a specific container (e.g., modals, dialogs).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FocusTrapConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable focus trapping within this container'),\n initialFocus: z.string().optional().describe('CSS selector for the element to focus on activation'),\n returnFocus: z.boolean().default(true).describe('Return focus to trigger element on deactivation'),\n escapeDeactivates: z.boolean().default(true).describe('Allow Escape key to deactivate the focus trap'),\n}).describe('Focus trap configuration for modal-like containers'));\n\nexport type FocusTrapConfig = z.infer<typeof FocusTrapConfigSchema>;\n\n/**\n * Keyboard Shortcut Schema\n * Defines a single keyboard shortcut binding.\n */\nexport const KeyboardShortcutSchema = lazySchema(() => z.object({\n key: z.string().describe('Key combination (e.g., \"Ctrl+S\", \"Alt+N\", \"Escape\")'),\n action: z.string().describe('Action identifier to invoke when shortcut is triggered'),\n description: I18nLabelSchema.optional().describe('Human-readable description of what the shortcut does'),\n scope: z.enum(['global', 'view', 'form', 'modal', 'list']).default('global')\n .describe('Scope in which this shortcut is active'),\n}).describe('Keyboard shortcut binding'));\n\nexport type KeyboardShortcut = z.infer<typeof KeyboardShortcutSchema>;\n\n/**\n * Focus Management Schema\n * Controls tab order, focus visibility, and navigation behavior.\n */\nexport const FocusManagementSchema = lazySchema(() => z.object({\n tabOrder: z.enum(['auto', 'manual']).default('auto')\n .describe('Tab order strategy: auto (DOM order) or manual (explicit tabIndex)'),\n skipLinks: z.boolean().default(false).describe('Provide skip-to-content navigation links'),\n focusVisible: z.boolean().default(true).describe('Show visible focus indicators for keyboard users'),\n focusTrap: FocusTrapConfigSchema.optional().describe('Focus trap settings'),\n arrowNavigation: z.boolean().default(false)\n .describe('Enable arrow key navigation between focusable items'),\n}).describe('Focus and tab navigation management'));\n\nexport type FocusManagement = z.infer<typeof FocusManagementSchema>;\n\n/**\n * Keyboard Navigation Configuration Schema\n * Top-level keyboard navigation and shortcut configuration.\n */\nexport const KeyboardNavigationConfigSchema = lazySchema(() => z.object({\n shortcuts: z.array(KeyboardShortcutSchema).optional().describe('Registered keyboard shortcuts'),\n focusManagement: FocusManagementSchema.optional().describe('Focus and tab order management'),\n rovingTabindex: z.boolean().default(false)\n .describe('Enable roving tabindex pattern for composite widgets'),\n}).merge(AriaPropsSchema.partial()).describe('Keyboard navigation and shortcut configuration'));\n\nexport type KeyboardNavigationConfig = z.infer<typeof KeyboardNavigationConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { TouchTargetConfigSchema } from './touch.zod';\nimport { FocusManagementSchema } from './keyboard.zod';\n\n/**\n * Color Palette Schema\n * Defines brand colors and their variants.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ColorPaletteSchema = lazySchema(() => z.object({\n primary: z.string().describe('Primary brand color (hex, rgb, or hsl)'),\n secondary: z.string().optional().describe('Secondary brand color'),\n accent: z.string().optional().describe('Accent color for highlights'),\n success: z.string().optional().describe('Success state color (default: green)'),\n warning: z.string().optional().describe('Warning state color (default: yellow)'),\n error: z.string().optional().describe('Error state color (default: red)'),\n info: z.string().optional().describe('Info state color (default: blue)'),\n \n // Neutral colors\n background: z.string().optional().describe('Background color'),\n surface: z.string().optional().describe('Surface/card background color'),\n text: z.string().optional().describe('Primary text color'),\n textSecondary: z.string().optional().describe('Secondary text color'),\n border: z.string().optional().describe('Border color'),\n disabled: z.string().optional().describe('Disabled state color'),\n \n // Color variants (shades)\n primaryLight: z.string().optional().describe('Lighter shade of primary'),\n primaryDark: z.string().optional().describe('Darker shade of primary'),\n secondaryLight: z.string().optional().describe('Lighter shade of secondary'),\n secondaryDark: z.string().optional().describe('Darker shade of secondary'),\n}));\n\n/**\n * Typography Settings Schema\n * Font families, sizes, weights, and line heights.\n */\nexport const TypographySchema = lazySchema(() => z.object({\n fontFamily: z.object({\n base: z.string().optional().describe('Base font family (default: system fonts)'),\n heading: z.string().optional().describe('Heading font family'),\n mono: z.string().optional().describe('Monospace font family for code'),\n }).optional(),\n \n fontSize: z.object({\n xs: z.string().optional().describe('Extra small font size (e.g., 0.75rem)'),\n sm: z.string().optional().describe('Small font size (e.g., 0.875rem)'),\n base: z.string().optional().describe('Base font size (e.g., 1rem)'),\n lg: z.string().optional().describe('Large font size (e.g., 1.125rem)'),\n xl: z.string().optional().describe('Extra large font size (e.g., 1.25rem)'),\n '2xl': z.string().optional().describe('2X large font size (e.g., 1.5rem)'),\n '3xl': z.string().optional().describe('3X large font size (e.g., 1.875rem)'),\n '4xl': z.string().optional().describe('4X large font size (e.g., 2.25rem)'),\n }).optional(),\n \n fontWeight: z.object({\n light: z.number().optional().describe('Light weight (default: 300)'),\n normal: z.number().optional().describe('Normal weight (default: 400)'),\n medium: z.number().optional().describe('Medium weight (default: 500)'),\n semibold: z.number().optional().describe('Semibold weight (default: 600)'),\n bold: z.number().optional().describe('Bold weight (default: 700)'),\n }).optional(),\n \n lineHeight: z.object({\n tight: z.string().optional().describe('Tight line height (e.g., 1.25)'),\n normal: z.string().optional().describe('Normal line height (e.g., 1.5)'),\n relaxed: z.string().optional().describe('Relaxed line height (e.g., 1.75)'),\n loose: z.string().optional().describe('Loose line height (e.g., 2)'),\n }).optional(),\n \n letterSpacing: z.object({\n tighter: z.string().optional().describe('Tighter letter spacing (e.g., -0.05em)'),\n tight: z.string().optional().describe('Tight letter spacing (e.g., -0.025em)'),\n normal: z.string().optional().describe('Normal letter spacing (e.g., 0)'),\n wide: z.string().optional().describe('Wide letter spacing (e.g., 0.025em)'),\n wider: z.string().optional().describe('Wider letter spacing (e.g., 0.05em)'),\n }).optional(),\n}));\n\n/**\n * Spacing Units Schema\n * Defines spacing scale for margins, padding, gaps.\n */\nexport const SpacingSchema = lazySchema(() => z.object({\n '0': z.string().optional().describe('0 spacing (0)'),\n '1': z.string().optional().describe('Spacing unit 1 (e.g., 0.25rem)'),\n '2': z.string().optional().describe('Spacing unit 2 (e.g., 0.5rem)'),\n '3': z.string().optional().describe('Spacing unit 3 (e.g., 0.75rem)'),\n '4': z.string().optional().describe('Spacing unit 4 (e.g., 1rem)'),\n '5': z.string().optional().describe('Spacing unit 5 (e.g., 1.25rem)'),\n '6': z.string().optional().describe('Spacing unit 6 (e.g., 1.5rem)'),\n '8': z.string().optional().describe('Spacing unit 8 (e.g., 2rem)'),\n '10': z.string().optional().describe('Spacing unit 10 (e.g., 2.5rem)'),\n '12': z.string().optional().describe('Spacing unit 12 (e.g., 3rem)'),\n '16': z.string().optional().describe('Spacing unit 16 (e.g., 4rem)'),\n '20': z.string().optional().describe('Spacing unit 20 (e.g., 5rem)'),\n '24': z.string().optional().describe('Spacing unit 24 (e.g., 6rem)'),\n}));\n\n/**\n * Border Radius Schema\n * Rounded corners configuration.\n */\nexport const BorderRadiusSchema = lazySchema(() => z.object({\n none: z.string().optional().describe('No border radius (0)'),\n sm: z.string().optional().describe('Small border radius (e.g., 0.125rem)'),\n base: z.string().optional().describe('Base border radius (e.g., 0.25rem)'),\n md: z.string().optional().describe('Medium border radius (e.g., 0.375rem)'),\n lg: z.string().optional().describe('Large border radius (e.g., 0.5rem)'),\n xl: z.string().optional().describe('Extra large border radius (e.g., 0.75rem)'),\n '2xl': z.string().optional().describe('2X large border radius (e.g., 1rem)'),\n full: z.string().optional().describe('Full border radius (50%)'),\n}));\n\n/**\n * Shadow Schema\n * Box shadow effects.\n */\nexport const ShadowSchema = lazySchema(() => z.object({\n none: z.string().optional().describe('No shadow'),\n sm: z.string().optional().describe('Small shadow'),\n base: z.string().optional().describe('Base shadow'),\n md: z.string().optional().describe('Medium shadow'),\n lg: z.string().optional().describe('Large shadow'),\n xl: z.string().optional().describe('Extra large shadow'),\n '2xl': z.string().optional().describe('2X large shadow'),\n inner: z.string().optional().describe('Inner shadow (inset)'),\n}));\n\n/**\n * Breakpoints Schema\n * Responsive design breakpoints.\n */\nexport const BreakpointsSchema = lazySchema(() => z.object({\n xs: z.string().optional().describe('Extra small breakpoint (e.g., 480px)'),\n sm: z.string().optional().describe('Small breakpoint (e.g., 640px)'),\n md: z.string().optional().describe('Medium breakpoint (e.g., 768px)'),\n lg: z.string().optional().describe('Large breakpoint (e.g., 1024px)'),\n xl: z.string().optional().describe('Extra large breakpoint (e.g., 1280px)'),\n '2xl': z.string().optional().describe('2X large breakpoint (e.g., 1536px)'),\n}));\n\n/**\n * Animation Schema\n * Animation timing and duration settings.\n */\nexport const AnimationSchema = lazySchema(() => z.object({\n duration: z.object({\n fast: z.string().optional().describe('Fast animation (e.g., 150ms)'),\n base: z.string().optional().describe('Base animation (e.g., 300ms)'),\n slow: z.string().optional().describe('Slow animation (e.g., 500ms)'),\n }).optional(),\n \n timing: z.object({\n linear: z.string().optional().describe('Linear timing function'),\n ease: z.string().optional().describe('Ease timing function'),\n ease_in: z.string().optional().describe('Ease-in timing function'),\n ease_out: z.string().optional().describe('Ease-out timing function'),\n ease_in_out: z.string().optional().describe('Ease-in-out timing function'),\n }).optional(),\n}));\n\n/**\n * Z-Index Scale Schema\n * Layering and stacking order.\n */\nexport const ZIndexSchema = lazySchema(() => z.object({\n base: z.number().optional().describe('Base z-index (e.g., 0)'),\n dropdown: z.number().optional().describe('Dropdown z-index (e.g., 1000)'),\n sticky: z.number().optional().describe('Sticky z-index (e.g., 1020)'),\n fixed: z.number().optional().describe('Fixed z-index (e.g., 1030)'),\n modalBackdrop: z.number().optional().describe('Modal backdrop z-index (e.g., 1040)'),\n modal: z.number().optional().describe('Modal z-index (e.g., 1050)'),\n popover: z.number().optional().describe('Popover z-index (e.g., 1060)'),\n tooltip: z.number().optional().describe('Tooltip z-index (e.g., 1070)'),\n}));\n\n/**\n * Theme Mode Schema\n */\nexport const ThemeModeSchema = lazySchema(() => z.enum(['light', 'dark', 'auto']));\n\n/** @deprecated Use ThemeModeSchema instead */\nexport const ThemeMode = ThemeModeSchema;\n\n/**\n * Density Mode Schema\n * Controls spacing and sizing for different use cases.\n */\nexport const DensityModeSchema = lazySchema(() => z.enum(['compact', 'regular', 'spacious']));\n\n/** @deprecated Use DensityModeSchema instead */\nexport const DensityMode = DensityModeSchema;\n\n/**\n * WCAG Contrast Level Schema\n * Web Content Accessibility Guidelines color contrast requirements.\n */\nexport const WcagContrastLevelSchema = lazySchema(() => z.enum(['AA', 'AAA']));\n\n/** @deprecated Use WcagContrastLevelSchema instead */\nexport const WcagContrastLevel = WcagContrastLevelSchema;\n\n/**\n * Theme Configuration Schema\n * Complete theme definition for brand customization.\n */\nexport const ThemeSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Unique theme identifier (snake_case)'),\n label: z.string().describe('Human-readable theme name'),\n description: z.string().optional().describe('Theme description'),\n \n /** Theme mode */\n mode: ThemeModeSchema.default('light').describe('Theme mode (light, dark, or auto)'),\n \n /** Color system */\n colors: ColorPaletteSchema.describe('Color palette configuration'),\n \n /** Typography */\n typography: TypographySchema.optional().describe('Typography settings'),\n \n /** Spacing */\n spacing: SpacingSchema.optional().describe('Spacing scale'),\n \n /** Border radius */\n borderRadius: BorderRadiusSchema.optional().describe('Border radius scale'),\n \n /** Shadows */\n shadows: ShadowSchema.optional().describe('Box shadow effects'),\n \n /** Breakpoints */\n breakpoints: BreakpointsSchema.optional().describe('Responsive breakpoints'),\n \n /** Animation */\n animation: AnimationSchema.optional().describe('Animation settings'),\n \n /** Z-Index */\n zIndex: ZIndexSchema.optional().describe('Z-index scale for layering'),\n \n /** Custom CSS variables */\n customVars: z.record(z.string(), z.string()).optional().describe('Custom CSS variables (key-value pairs)'),\n \n /** Logo */\n logo: z.object({\n light: z.string().optional().describe('Logo URL for light mode'),\n dark: z.string().optional().describe('Logo URL for dark mode'),\n favicon: z.string().optional().describe('Favicon URL'),\n }).optional().describe('Logo assets'),\n \n /** Extends another theme */\n extends: z.string().optional().describe('Base theme to extend from'),\n\n /** Display density mode */\n density: DensityModeSchema.optional().describe('Display density: compact, regular, or spacious'),\n\n /** WCAG contrast level requirement */\n wcagContrast: WcagContrastLevelSchema.optional().describe('WCAG color contrast level (AA or AAA)'),\n\n /** Right-to-left language support */\n rtl: z.boolean().optional().describe('Enable right-to-left layout direction'),\n\n /** Touch target accessibility configuration */\n touchTarget: TouchTargetConfigSchema.optional().describe('Touch target sizing defaults'),\n\n /** Keyboard navigation and focus management */\n keyboardNavigation: FocusManagementSchema.optional().describe('Keyboard focus management settings'),\n}));\n\nexport type Theme = z.infer<typeof ThemeSchema>;\nexport type ColorPalette = z.infer<typeof ColorPaletteSchema>;\nexport type Typography = z.infer<typeof TypographySchema>;\nexport type Spacing = z.infer<typeof SpacingSchema>;\nexport type BorderRadius = z.infer<typeof BorderRadiusSchema>;\nexport type Shadow = z.infer<typeof ShadowSchema>;\nexport type Breakpoints = z.infer<typeof BreakpointsSchema>;\nexport type Animation = z.infer<typeof AnimationSchema>;\nexport type ZIndex = z.infer<typeof ZIndexSchema>;\nexport type ThemeMode = z.infer<typeof ThemeModeSchema>;\nexport type DensityMode = z.infer<typeof DensityModeSchema>;\nexport type WcagContrastLevel = z.infer<typeof WcagContrastLevelSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema } from './i18n.zod';\n\n/**\n * Offline Strategy Schema\n * Determines how data is fetched when connectivity is limited.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const OfflineStrategySchema = lazySchema(() => z.enum([\n 'cache_first',\n 'network_first',\n 'stale_while_revalidate',\n 'network_only',\n 'cache_only',\n]).describe('Data fetching strategy for offline/online transitions'));\n\nexport type OfflineStrategy = z.infer<typeof OfflineStrategySchema>;\n\n/**\n * Conflict Resolution Strategy Enum\n */\nexport const ConflictResolutionSchema = lazySchema(() => z.enum([\n 'client_wins',\n 'server_wins',\n 'manual',\n 'last_write_wins',\n]).describe('How to resolve conflicts when syncing offline changes'));\n\nexport type ConflictResolution = z.infer<typeof ConflictResolutionSchema>;\n\n/**\n * Sync Configuration Schema\n * Controls how offline mutations are synchronized with the server.\n */\nexport const SyncConfigSchema = lazySchema(() => z.object({\n strategy: OfflineStrategySchema.default('network_first').describe('Sync fetch strategy'),\n conflictResolution: ConflictResolutionSchema.default('last_write_wins').describe('Conflict resolution policy'),\n retryInterval: z.number().optional().describe('Retry interval in milliseconds between sync attempts'),\n maxRetries: z.number().optional().describe('Maximum number of sync retry attempts'),\n batchSize: z.number().optional().describe('Number of mutations to sync per batch'),\n}).describe('Offline-to-online synchronization configuration'));\n\nexport type SyncConfig = z.infer<typeof SyncConfigSchema>;\n\n/**\n * Persist Storage Backend Enum\n */\nexport const PersistStorageSchema = lazySchema(() => z.enum([\n 'indexeddb',\n 'localstorage',\n 'sqlite',\n]).describe('Client-side storage backend for offline cache'));\n\nexport type PersistStorage = z.infer<typeof PersistStorageSchema>;\n\n/**\n * Eviction Policy Enum\n */\nexport const EvictionPolicySchema = lazySchema(() => z.enum([\n 'lru',\n 'lfu',\n 'fifo',\n]).describe('Cache eviction policy'));\n\nexport type EvictionPolicy = z.infer<typeof EvictionPolicySchema>;\n\n/**\n * Offline Cache Configuration Schema\n * Controls how data is persisted on the client for offline access.\n */\nexport const OfflineCacheConfigSchema = lazySchema(() => z.object({\n maxSize: z.number().optional().describe('Maximum cache size in bytes'),\n ttl: z.number().optional().describe('Time-to-live for cached entries in milliseconds'),\n persistStorage: PersistStorageSchema.default('indexeddb').describe('Storage backend'),\n evictionPolicy: EvictionPolicySchema.default('lru').describe('Cache eviction policy when full'),\n}).describe('Client-side offline cache configuration'));\n\nexport type OfflineCacheConfig = z.infer<typeof OfflineCacheConfigSchema>;\n\n/**\n * Offline Configuration Schema\n * Top-level offline support configuration for an application or component.\n */\nexport const OfflineConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable offline support'),\n strategy: OfflineStrategySchema.default('network_first').describe('Default offline fetch strategy'),\n cache: OfflineCacheConfigSchema.optional().describe('Cache settings for offline data'),\n sync: SyncConfigSchema.optional().describe('Sync settings for offline mutations'),\n offlineIndicator: z.boolean().default(true).describe('Show a visual indicator when offline'),\n offlineMessage: I18nLabelSchema.optional().describe('Customizable offline status message shown to users'),\n queueMaxSize: z.number().optional().describe('Maximum number of queued offline mutations'),\n}).describe('Offline support configuration'));\n\nexport type OfflineConfig = z.infer<typeof OfflineConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Transition Preset Schema\n * Common animation transition presets.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const TransitionPresetSchema = lazySchema(() => z.enum([\n 'fade',\n 'slide_up',\n 'slide_down',\n 'slide_left',\n 'slide_right',\n 'scale',\n 'rotate',\n 'flip',\n 'none',\n]).describe('Transition preset type'));\n\nexport type TransitionPreset = z.infer<typeof TransitionPresetSchema>;\n\n/**\n * Easing Function Schema\n * Supported animation easing/timing functions.\n */\nexport const EasingFunctionSchema = lazySchema(() => z.enum([\n 'linear',\n 'ease',\n 'ease_in',\n 'ease_out',\n 'ease_in_out',\n 'spring',\n]).describe('Animation easing function'));\n\nexport type EasingFunction = z.infer<typeof EasingFunctionSchema>;\n\n/**\n * Transition Configuration Schema\n * Defines a single animation transition with timing and easing options.\n */\nexport const TransitionConfigSchema = lazySchema(() => z.object({\n preset: TransitionPresetSchema.optional().describe('Transition preset to apply'),\n duration: z.number().optional().describe('Transition duration in milliseconds'),\n easing: EasingFunctionSchema.optional().describe('Easing function for the transition'),\n delay: z.number().optional().describe('Delay before transition starts in milliseconds'),\n customKeyframes: z.string().optional().describe('CSS @keyframes name for custom animations'),\n themeToken: z.string().optional().describe('Reference to a theme animation token (e.g. \"animation.duration.fast\")'),\n}).describe('Animation transition configuration'));\n\nexport type TransitionConfig = z.infer<typeof TransitionConfigSchema>;\n\n/**\n * Animation Trigger Schema\n * Events that can trigger an animation.\n */\nexport const AnimationTriggerSchema = lazySchema(() => z.enum([\n 'on_mount',\n 'on_unmount',\n 'on_hover',\n 'on_focus',\n 'on_click',\n 'on_scroll',\n 'on_visible',\n]).describe('Event that triggers the animation'));\n\nexport type AnimationTrigger = z.infer<typeof AnimationTriggerSchema>;\n\n/**\n * Component Animation Schema\n * Animation configuration for an individual UI component.\n */\nexport const ComponentAnimationSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.optional().describe('Descriptive label for this animation configuration'),\n enter: TransitionConfigSchema.optional().describe('Enter/mount animation'),\n exit: TransitionConfigSchema.optional().describe('Exit/unmount animation'),\n hover: TransitionConfigSchema.optional().describe('Hover state animation'),\n trigger: AnimationTriggerSchema.optional().describe('When to trigger the animation'),\n reducedMotion: z.enum(['respect', 'disable', 'alternative']).default('respect')\n .describe('Accessibility: how to handle prefers-reduced-motion'),\n}).merge(AriaPropsSchema.partial()).describe('Component-level animation configuration'));\n\nexport type ComponentAnimation = z.infer<typeof ComponentAnimationSchema>;\n\n/**\n * Page Transition Schema\n * Defines the animation used when navigating between pages.\n */\nexport const PageTransitionSchema = lazySchema(() => z.object({\n type: TransitionPresetSchema.default('fade').describe('Page transition type'),\n duration: z.number().default(300).describe('Transition duration in milliseconds'),\n easing: EasingFunctionSchema.default('ease_in_out').describe('Easing function for the transition'),\n crossFade: z.boolean().default(false).describe('Whether to cross-fade between pages'),\n}).describe('Page-level transition configuration'));\n\nexport type PageTransition = z.infer<typeof PageTransitionSchema>;\n\n/**\n * Motion Configuration Schema\n * Top-level animation and motion design configuration.\n */\nexport const MotionConfigSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.optional().describe('Descriptive label for the motion configuration'),\n defaultTransition: TransitionConfigSchema.optional().describe('Default transition applied to all animations'),\n pageTransitions: PageTransitionSchema.optional().describe('Page navigation transition settings'),\n componentAnimations: z.record(z.string(), ComponentAnimationSchema).optional()\n .describe('Component name to animation configuration mapping'),\n reducedMotion: z.boolean().default(false).describe('When true, respect prefers-reduced-motion and suppress animations globally'),\n enabled: z.boolean().default(true).describe('Enable or disable all animations globally'),\n}).describe('Top-level motion and animation design configuration'));\n\nexport type MotionConfig = z.infer<typeof MotionConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Notification Type Schema\n * Defines the visual presentation style of the notification.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const NotificationTypeSchema = lazySchema(() => z.enum([\n 'toast',\n 'snackbar',\n 'banner',\n 'alert',\n 'inline',\n]).describe('Notification presentation style'));\n\nexport type NotificationType = z.infer<typeof NotificationTypeSchema>;\n\n/**\n * Notification Severity Schema\n * Indicates the urgency and visual treatment of the notification.\n */\nexport const NotificationSeveritySchema = lazySchema(() => z.enum([\n 'info',\n 'success',\n 'warning',\n 'error',\n]).describe('Notification severity level'));\n\nexport type NotificationSeverity = z.infer<typeof NotificationSeveritySchema>;\n\n/**\n * Notification Position Schema\n * Screen position for rendering notifications.\n */\nexport const NotificationPositionSchema = lazySchema(() => z.enum([\n 'top_left',\n 'top_center',\n 'top_right',\n 'bottom_left',\n 'bottom_center',\n 'bottom_right',\n]).describe('Screen position for notification placement'));\n\nexport type NotificationPosition = z.infer<typeof NotificationPositionSchema>;\n\n/**\n * Notification Action Schema\n * Defines an interactive action button within a notification.\n */\nexport const NotificationActionSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.describe('Action button label'),\n action: z.string().describe('Action identifier to execute'),\n variant: z.enum(['primary', 'secondary', 'link']).default('primary')\n .describe('Button variant style'),\n}).describe('Notification action button'));\n\nexport type NotificationAction = z.infer<typeof NotificationActionSchema>;\n\n/**\n * Notification Schema\n * Defines a single notification instance with content, behavior, and positioning.\n */\nexport const NotificationSchema = lazySchema(() => z.object({\n type: NotificationTypeSchema.default('toast').describe('Notification presentation style'),\n severity: NotificationSeveritySchema.default('info').describe('Notification severity level'),\n title: I18nLabelSchema.optional().describe('Notification title'),\n message: I18nLabelSchema.describe('Notification message body'),\n icon: z.string().optional().describe('Icon name override'),\n duration: z.number().optional().describe('Auto-dismiss duration in ms, omit for persistent'),\n dismissible: z.boolean().default(true).describe('Allow user to dismiss the notification'),\n actions: z.array(NotificationActionSchema).optional().describe('Action buttons'),\n position: NotificationPositionSchema.optional().describe('Override default position'),\n}).merge(AriaPropsSchema.partial()).describe('Notification instance definition'));\n\nexport type Notification = z.infer<typeof NotificationSchema>;\n\n/**\n * Notification Config Schema\n * Top-level notification system configuration.\n */\nexport const NotificationConfigSchema = lazySchema(() => z.object({\n defaultPosition: NotificationPositionSchema.default('top_right')\n .describe('Default screen position for notifications'),\n defaultDuration: z.number().default(5000)\n .describe('Default auto-dismiss duration in ms'),\n maxVisible: z.number().default(5)\n .describe('Maximum number of notifications visible at once'),\n stackDirection: z.enum(['up', 'down']).default('down')\n .describe('Stack direction for multiple notifications'),\n pauseOnHover: z.boolean().default(true)\n .describe('Pause auto-dismiss timer on hover'),\n}).describe('Global notification system configuration'));\n\nexport type NotificationConfig = z.infer<typeof NotificationConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Drag Handle Schema\n * Defines how a drag interaction is initiated on an element.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const DragHandleSchema = lazySchema(() => z.enum([\n 'element',\n 'handle',\n 'grip_icon',\n]).describe('Drag initiation method'));\n\nexport type DragHandle = z.infer<typeof DragHandleSchema>;\n\n/**\n * Drop Effect Schema\n * Visual feedback indicating the result of a drop operation.\n */\nexport const DropEffectSchema = lazySchema(() => z.enum([\n 'move',\n 'copy',\n 'link',\n 'none',\n]).describe('Drop operation effect'));\n\nexport type DropEffect = z.infer<typeof DropEffectSchema>;\n\n/**\n * Drag Constraint Schema\n * Constrains drag movement along axes, within bounds, or to a grid.\n */\nexport const DragConstraintSchema = lazySchema(() => z.object({\n axis: z.enum(['x', 'y', 'both']).default('both').describe('Constrain drag axis'),\n bounds: z.enum(['parent', 'viewport', 'none']).default('none').describe('Constrain within bounds'),\n grid: z.tuple([z.number(), z.number()]).optional().describe('Snap to grid [x, y] in pixels'),\n}).describe('Drag movement constraints'));\n\nexport type DragConstraint = z.infer<typeof DragConstraintSchema>;\n\n/**\n * Drop Zone Schema\n * Configures a container that accepts dragged items.\n */\nexport const DropZoneSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.optional().describe('Accessible label for the drop zone'),\n accept: z.array(z.string()).describe('Accepted drag item types'),\n maxItems: z.number().optional().describe('Maximum items allowed in drop zone'),\n highlightOnDragOver: z.boolean().default(true).describe('Highlight drop zone when dragging over'),\n dropEffect: DropEffectSchema.default('move').describe('Visual effect on drop'),\n}).merge(AriaPropsSchema.partial()).describe('Drop zone configuration'));\n\nexport type DropZone = z.infer<typeof DropZoneSchema>;\n\n/**\n * Drag Item Schema\n * Configures a draggable element including handle, constraints, and preview.\n */\nexport const DragItemSchema = lazySchema(() => z.object({\n type: z.string().describe('Drag item type identifier for matching with drop zones'),\n label: I18nLabelSchema.optional().describe('Accessible label describing the draggable item'),\n handle: DragHandleSchema.default('element').describe('How to initiate drag'),\n constraint: DragConstraintSchema.optional().describe('Drag movement constraints'),\n preview: z.enum(['element', 'custom', 'none']).default('element').describe('Drag preview type'),\n disabled: z.boolean().default(false).describe('Disable dragging'),\n}).merge(AriaPropsSchema.partial()).describe('Draggable item configuration'));\n\nexport type DragItem = z.infer<typeof DragItemSchema>;\n\n/**\n * Drag and Drop Configuration Schema\n * Top-level drag-and-drop interaction configuration for a component.\n */\nexport const DndConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable drag and drop'),\n dragItem: DragItemSchema.optional().describe('Configuration for draggable item'),\n dropZone: DropZoneSchema.optional().describe('Configuration for drop target'),\n sortable: z.boolean().default(false).describe('Enable sortable list behavior'),\n autoScroll: z.boolean().default(true).describe('Auto-scroll during drag near edges'),\n touchDelay: z.number().default(200).describe('Delay in ms before drag starts on touch devices'),\n}).describe('Drag and drop interaction configuration'));\n\nexport type DndConfig = z.infer<typeof DndConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * @module ui/portal\n *\n * Portal Protocol — Metadata-driven external-user UI projection.\n *\n * A Portal is **not** a new application or permission model. It is a\n * declarative projection of the existing app / view / action surface,\n * scoped to a route prefix, a set of profiles, and an optional anonymous\n * entry surface.\n *\n * Five invariants this schema preserves:\n * 1. Zero business code — layout is an enum + plugin id; theme is tokens;\n * navigation is references to existing metadata.\n * 2. Data plane is untouched — portal cannot declare objects, fields,\n * flows, or permissions. Data API (`/api/v1/data/...`) is unaware of\n * portals.\n * 3. Portal ≠ permission boundary. The Profile is. Portals only narrow\n * the UI projection; hiding a view in `navigation` is UX, not security.\n * 4. Stackable — the same user/profile can be admitted by multiple\n * portals. Routing or a picker decides which one is rendered.\n * 5. Template-first — a template author ships `customer.portal.ts` and\n * the platform guarantees the rendering shell.\n *\n * Architectural reach (consumer guidance, not part of the schema):\n * - Dispatcher / HonoServer: at boot, enumerate portals and register\n * `/<routePrefix>/*` route families with a per-portal auth scope.\n * - Auth middleware: admit the request if `profile ∈ portal.profiles`,\n * or it matches `anonymousEntry.routes[*]`.\n * - objectui LayoutDispatcher: select shell from `layout`.\n * - objectui NavigationBuilder: render `navigation` (not the all-apps\n * grid).\n * - objectui ThemeProvider: inject `theme` as CSS variables.\n *\n * See framework issue\n * https://github.com/objectstack-ai/framework/issues/1294\n * for the design rationale.\n */\n\nimport { z } from 'zod';\nimport { lazySchema } from '../shared/lazy-schema';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema } from './i18n.zod';\n\n// ---------------------------------------------------------------------------\n// Theme tokens (portal-local; intentionally narrower than AppBranding to keep\n// portal metadata declarative and platform-renderable without custom CSS)\n// ---------------------------------------------------------------------------\n\nexport const PortalThemeSchema = lazySchema(() => z.object({\n primaryColor: z.string().optional()\n .describe('Primary brand color (hex, rgb, hsl). Mapped to --portal-primary.'),\n accentColor: z.string().optional()\n .describe('Accent color used for highlights and CTAs.'),\n backgroundColor: z.string().optional()\n .describe('Page background color.'),\n surfaceColor: z.string().optional()\n .describe('Card / surface background color.'),\n textColor: z.string().optional()\n .describe('Primary text color.'),\n logoUrl: z.string().optional()\n .describe('Absolute or relative URL to the portal header logo (SVG or PNG).'),\n faviconUrl: z.string().optional()\n .describe('Absolute or relative URL to the portal favicon.'),\n fontFamily: z.string().optional()\n .describe('CSS font-family stack for the portal.'),\n customCss: z.string().optional()\n .describe('OPTIONAL escape hatch: raw CSS appended last. Discouraged; prefer tokens.'),\n}));\n\n// ---------------------------------------------------------------------------\n// Navigation — references to existing metadata. Discriminated union mirrors\n// app.zod.ts shape but is intentionally a much smaller surface: portals\n// expose a flat list of entry points, not a deep group tree.\n// ---------------------------------------------------------------------------\n\nconst BasePortalNavItemSchema = z.object({\n id: SnakeCaseIdentifierSchema\n .describe('Unique identifier for this portal nav item (lowercase snake_case).'),\n label: I18nLabelSchema.describe('Display label.'),\n icon: z.string().optional().describe('Icon name (Lucide).'),\n order: z.number().optional().describe('Sort order; lower appears first.'),\n badge: z.union([z.string(), z.number()]).optional()\n .describe('Optional badge (e.g. unread count).'),\n});\n\nexport const PortalViewNavItemSchema = BasePortalNavItemSchema.extend({\n type: z.literal('view'),\n /** Fully-qualified view reference: `<object_name>.<view_id>` */\n viewRef: z.string().describe('Reference to an existing view, e.g. \"helpdesk_ticket.list.my_tickets\".'),\n});\n\nexport const PortalActionNavItemSchema = BasePortalNavItemSchema.extend({\n type: z.literal('action'),\n /** Fully-qualified action reference: `<object_name>.<action_id>` */\n actionRef: z.string().describe('Reference to an existing action, e.g. \"helpdesk_ticket.create\".'),\n});\n\nexport const PortalDashboardNavItemSchema = BasePortalNavItemSchema.extend({\n type: z.literal('dashboard'),\n dashboardName: SnakeCaseIdentifierSchema.describe('Existing dashboard id.'),\n});\n\nexport const PortalUrlNavItemSchema = BasePortalNavItemSchema.extend({\n type: z.literal('url'),\n url: z.string().describe('Absolute or root-relative URL.'),\n target: z.enum(['_self', '_blank']).optional().default('_self'),\n});\n\nexport const PortalNavItemSchema = z.discriminatedUnion('type', [\n PortalViewNavItemSchema,\n PortalActionNavItemSchema,\n PortalDashboardNavItemSchema,\n PortalUrlNavItemSchema,\n]);\n\n// ---------------------------------------------------------------------------\n// Anonymous entry — declarative, with mandatory rate-limit + captcha hooks\n// for any unauthenticated mutation. Read-only views (e.g. public KB) only\n// need a rate-limit budget.\n// ---------------------------------------------------------------------------\n\nexport const PortalRateLimitSchema = lazySchema(() => z.object({\n /** Token-bucket rule string, e.g. \"5/hour/ip\" or \"100/day/tenant\". */\n rule: z.string().describe('Rate-limit rule string, e.g. \"5/hour/ip\", \"100/day/tenant\".'),\n /** Scope key controlled by the runtime. */\n scope: z.enum(['ip', 'tenant', 'route']).default('ip')\n .describe('Counter scope. \"ip\" buckets per requester; \"tenant\" per portal owner; \"route\" global per route.'),\n}));\n\nexport const PortalAnonymousRouteSchema = lazySchema(() => z.object({\n /** Portal-relative path, must begin with `/`. */\n path: z.string().describe('Path within the portal, e.g. \"/submit\" or \"/kb\".'),\n /** Exactly one of these must be set. */\n viewRef: z.string().optional()\n .describe('Reference to a public view (read-only).'),\n actionRef: z.string().optional()\n .describe('Reference to an action to perform anonymously (mutation).'),\n rateLimit: PortalRateLimitSchema.optional()\n .describe('Rate-limit for anonymous traffic on this route.'),\n captcha: z.boolean().optional().default(false)\n .describe('Require CAPTCHA / proof-of-work challenge before invoking.'),\n /**\n * For action routes that need a deferred identity bind (e.g. anonymous\n * ticket submission → magic-link verification of the supplied email).\n * The runtime captures the input field, sends a magic link, and on\n * verification re-attributes the created record to the new user.\n */\n bindIdentityFromField: z.string().optional()\n .describe('Field name on the action input to use for magic-link identity binding (e.g. \"customer_email\").'),\n}));\n\nexport const PortalAnonymousEntrySchema = lazySchema(() => z.object({\n routes: z.array(PortalAnonymousRouteSchema)\n .describe('List of anonymous-accessible routes.'),\n /** Default rate-limit applied when a route does not specify one. */\n defaultRateLimit: PortalRateLimitSchema.optional(),\n}));\n\n// ---------------------------------------------------------------------------\n// SEO + locale + auth modes\n// ---------------------------------------------------------------------------\n\nexport const PortalSeoSchema = lazySchema(() => z.object({\n title: z.string().optional().describe('Default <title>.'),\n description: z.string().optional().describe('Default <meta name=\"description\">.'),\n openGraphImage: z.string().optional().describe('Default og:image URL.'),\n robots: z.enum(['index', 'noindex']).optional().default('index'),\n}));\n\nexport const PortalAuthModeSchema = lazySchema(() => z.union([\n z.literal('authenticated'),\n z.literal('magic-link'),\n z.literal('anonymous'),\n // SSO provider, e.g. \"sso:google\", \"sso:azure-ad\", \"sso:saml:<idp-id>\".\n z.string().regex(/^sso:[a-z][a-z0-9_-]*(?::[a-z0-9_-]+)?$/i,\n 'SSO mode must be \"sso:<provider>\" or \"sso:<protocol>:<idp-id>\"'),\n]));\n\nexport const PortalLayoutSchema = lazySchema(() => z.union([\n z.literal('console'),\n z.literal('minimal'),\n z.literal('embedded'),\n // Plugin shell: \"custom:<plugin-id>\" or \"custom:<plugin-id>/<layout-id>\".\n z.string().regex(/^custom:[a-z][a-z0-9_-]*(?:\\/[a-z0-9_-]+)?$/i,\n 'Custom layout must be \"custom:<plugin-id>\" or \"custom:<plugin-id>/<layout-id>\"'),\n]));\n\n// ---------------------------------------------------------------------------\n// Portal — top-level metadata kind\n// ---------------------------------------------------------------------------\n\nexport const PortalSchema = lazySchema(() => z.object({\n /** Discriminator for the metadata registry. */\n kind: z.literal('portal').describe('Metadata kind discriminator.'),\n\n /** Machine name (id). Unique per tenant. */\n id: SnakeCaseIdentifierSchema\n .describe('Portal unique machine name (lowercase snake_case).'),\n\n /** Display label, i18n. */\n label: I18nLabelSchema.describe('Portal display label.'),\n\n /** Optional description (i18n). */\n description: I18nLabelSchema.optional(),\n\n // ---------------- Routing ----------------\n\n /**\n * Root path the portal is mounted at. MUST be absolute and start with `/`.\n * Multiple portals cannot share the same `routePrefix` within a tenant.\n * Example: \"/portal/helpdesk\".\n */\n routePrefix: z.string()\n .regex(/^\\/[a-z0-9/_-]*$/i, 'routePrefix must start with \"/\" and be url-safe')\n .describe('Root URL path for the portal (must start with \"/\").'),\n\n /**\n * Optional vanity domain. When set, the platform serves the portal on\n * this hostname in addition to (or instead of) `routePrefix` on the\n * default domain. Subject to TLS provisioning and DNS verification.\n */\n domain: z.string().optional()\n .describe('Optional vanity domain (e.g. \"support.acme.com\").'),\n\n // ---------------- Shell ----------------\n\n layout: PortalLayoutSchema.default('minimal')\n .describe('Shell layout for the portal.'),\n\n theme: PortalThemeSchema.optional().describe('Theme tokens.'),\n\n /**\n * Locale resolution. \"auto\" → use Accept-Language; otherwise force a\n * specific locale (e.g. \"en\", \"zh-CN\").\n */\n locale: z.union([z.literal('auto'), z.string()]).optional().default('auto')\n .describe('Locale resolution strategy.'),\n\n /** SEO metadata defaults for unauthenticated pages. */\n seo: PortalSeoSchema.optional(),\n\n // ---------------- Auth ----------------\n\n authMode: PortalAuthModeSchema.default('authenticated')\n .describe('Authentication mode for the portal.'),\n\n /**\n * Profiles admitted to the portal. A user is allowed in iff at least\n * one of their effective profiles is listed here. **This is a UI gate,\n * not the source of truth — the data layer still enforces profile +\n * sharing on every API call.**\n */\n profiles: z.array(SnakeCaseIdentifierSchema)\n .min(1, 'A portal must admit at least one profile (use a dedicated profile for \"anonymous-only\" portals).')\n .describe('Profiles admitted to the portal.'),\n\n /**\n * Anonymous entry surface — declarative routes that can be hit without\n * a session. The runtime impersonates a tenant-local `system.anonymous`\n * principal, applies the route's rate-limit + captcha, then runs the\n * referenced view/action.\n */\n anonymousEntry: PortalAnonymousEntrySchema.optional(),\n\n // ---------------- Navigation ----------------\n\n navigation: z.array(PortalNavItemSchema)\n .describe('Flat list of portal entry points (references to existing metadata).'),\n\n /**\n * Optional default route. If omitted, the runtime picks the first\n * `navigation` entry.\n */\n defaultRoute: z.object({\n viewRef: z.string().optional(),\n actionRef: z.string().optional(),\n dashboardName: SnakeCaseIdentifierSchema.optional(),\n }).optional().describe('Landing surface when the user hits the portal root.'),\n\n // ---------------- Embedding ----------------\n\n /**\n * Whether the portal may be rendered inside an `<iframe>`. Controls\n * `X-Frame-Options` / `frame-ancestors` CSP headers.\n */\n embeddable: z.boolean().optional().default(false),\n\n /**\n * Allowed embed origins (CSP `frame-ancestors`). Ignored when\n * `embeddable: false`.\n */\n allowedEmbedOrigins: z.array(z.string()).optional(),\n\n /** Whether the portal is active. */\n active: z.boolean().optional().default(true),\n}));\n\n// ---------------------------------------------------------------------------\n// Factory + types\n// ---------------------------------------------------------------------------\n\nexport const Portal = {\n create: (config: z.input<typeof PortalSchema>): Portal => PortalSchema.parse(config),\n} as const;\n\nexport function definePortal(config: z.input<typeof PortalSchema>): Portal {\n return PortalSchema.parse(config);\n}\n\nexport type Portal = z.infer<typeof PortalSchema>;\nexport type PortalInput = z.input<typeof PortalSchema>;\nexport type PortalTheme = z.infer<typeof PortalThemeSchema>;\nexport type PortalNavItem = z.infer<typeof PortalNavItemSchema>;\nexport type PortalViewNavItem = z.infer<typeof PortalViewNavItemSchema>;\nexport type PortalActionNavItem = z.infer<typeof PortalActionNavItemSchema>;\nexport type PortalDashboardNavItem = z.infer<typeof PortalDashboardNavItemSchema>;\nexport type PortalUrlNavItem = z.infer<typeof PortalUrlNavItemSchema>;\nexport type PortalAnonymousEntry = z.infer<typeof PortalAnonymousEntrySchema>;\nexport type PortalAnonymousRoute = z.infer<typeof PortalAnonymousRouteSchema>;\nexport type PortalRateLimit = z.infer<typeof PortalRateLimitSchema>;\nexport type PortalSeo = z.infer<typeof PortalSeoSchema>;\nexport type PortalAuthMode = z.infer<typeof PortalAuthModeSchema>;\nexport type PortalLayout = z.infer<typeof PortalLayoutSchema>;\n"]}