@objectstack/spec 3.0.10 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1796) hide show
  1. package/dist/ai/index.js +14 -2
  2. package/dist/ai/index.js.map +1 -1
  3. package/dist/ai/index.mjs +14 -2
  4. package/dist/ai/index.mjs.map +1 -1
  5. package/dist/api/index.d.mts +2 -2
  6. package/dist/api/index.d.ts +2 -2
  7. package/dist/api/index.js +34 -9
  8. package/dist/api/index.js.map +1 -1
  9. package/dist/api/index.mjs +34 -9
  10. package/dist/api/index.mjs.map +1 -1
  11. package/dist/app-install.zod-TL0VEjw0.d.mts +781 -0
  12. package/dist/app-install.zod-TL0VEjw0.d.ts +781 -0
  13. package/dist/contracts/index.d.mts +4 -4
  14. package/dist/contracts/index.d.ts +4 -4
  15. package/dist/data/index.d.mts +3 -3
  16. package/dist/data/index.d.ts +3 -3
  17. package/dist/data/index.js +26 -5
  18. package/dist/data/index.js.map +1 -1
  19. package/dist/data/index.mjs +26 -5
  20. package/dist/data/index.mjs.map +1 -1
  21. package/dist/{field.zod-K9xdi_Bk.d.mts → field.zod-Bh_6vHk-.d.mts} +23 -0
  22. package/dist/{field.zod-CMm9uHBm.d.ts → field.zod-DJBepjVL.d.ts} +23 -0
  23. package/dist/{index-Duacv2Tg.d.mts → index--x9w7c0H.d.mts} +21 -393
  24. package/dist/{index-DZ7LmKj0.d.ts → index-BwX5Ns-I.d.ts} +32 -3
  25. package/dist/{index-D_XkwA3D.d.ts → index-C5hYpJjR.d.ts} +2 -2
  26. package/dist/{index-CIiQ-UuT.d.mts → index-CAzhsyLL.d.mts} +2 -2
  27. package/dist/{index-DEvrB28l.d.ts → index-D56UyFwq.d.ts} +21 -393
  28. package/dist/{index-Dyec30Bw.d.mts → index-DjSwwWnW.d.mts} +1 -1
  29. package/dist/{index-CVsfQ7rS.d.ts → index-cdzdGN8y.d.ts} +1 -1
  30. package/dist/{index-CJIWgRtH.d.mts → index-vItQe_8P.d.mts} +32 -3
  31. package/dist/index.d.mts +7 -7
  32. package/dist/index.d.ts +7 -7
  33. package/dist/index.js +60 -11
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.mjs +60 -11
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/shared/index.js +14 -2
  38. package/dist/shared/index.js.map +1 -1
  39. package/dist/shared/index.mjs +14 -2
  40. package/dist/shared/index.mjs.map +1 -1
  41. package/dist/{subscription.zod-D1ut7JDL.d.ts → subscription.zod-Bx-J3fJO.d.ts} +1 -1
  42. package/dist/{subscription.zod-Dy8wi1B9.d.mts → subscription.zod-CS8ya5Gy.d.mts} +1 -1
  43. package/dist/system/index.d.mts +2 -2
  44. package/dist/system/index.d.ts +2 -2
  45. package/dist/system/index.js +31 -2
  46. package/dist/system/index.js.map +1 -1
  47. package/dist/system/index.mjs +31 -3
  48. package/dist/system/index.mjs.map +1 -1
  49. package/dist/ui/index.js +14 -2
  50. package/dist/ui/index.js.map +1 -1
  51. package/dist/ui/index.mjs +14 -2
  52. package/dist/ui/index.mjs.map +1 -1
  53. package/json-schema/ai/AICodeReviewResult.json +2 -2
  54. package/json-schema/ai/AIKnowledge.json +2 -2
  55. package/json-schema/ai/AIModelConfig.json +2 -2
  56. package/json-schema/ai/AIOperationCost.json +2 -2
  57. package/json-schema/ai/AIOpsAgentConfig.json +2 -2
  58. package/json-schema/ai/AIOrchestration.json +2 -2
  59. package/json-schema/ai/AIOrchestrationExecutionResult.json +2 -2
  60. package/json-schema/ai/AIOrchestrationTrigger.json +2 -2
  61. package/json-schema/ai/AITask.json +2 -2
  62. package/json-schema/ai/AITaskType.json +2 -2
  63. package/json-schema/ai/AITool.json +2 -2
  64. package/json-schema/ai/Agent.json +2 -2
  65. package/json-schema/ai/AgentAction.json +2 -2
  66. package/json-schema/ai/AgentActionResult.json +2 -2
  67. package/json-schema/ai/AgentActionSequence.json +2 -2
  68. package/json-schema/ai/AgentActionSequenceResult.json +2 -2
  69. package/json-schema/ai/AgentCommunicationProtocol.json +2 -2
  70. package/json-schema/ai/AgentGroupMember.json +2 -2
  71. package/json-schema/ai/AgentGroupRole.json +2 -2
  72. package/json-schema/ai/AnomalyDetectionConfig.json +2 -2
  73. package/json-schema/ai/AutoScalingPolicy.json +2 -2
  74. package/json-schema/ai/BatchAIOrchestrationExecution.json +2 -2
  75. package/json-schema/ai/BillingPeriod.json +2 -2
  76. package/json-schema/ai/BudgetLimit.json +2 -2
  77. package/json-schema/ai/BudgetStatus.json +2 -2
  78. package/json-schema/ai/BudgetType.json +2 -2
  79. package/json-schema/ai/CICDPipelineConfig.json +2 -2
  80. package/json-schema/ai/ChunkingStrategy.json +2 -2
  81. package/json-schema/ai/CodeContent.json +2 -2
  82. package/json-schema/ai/CodeGenerationConfig.json +2 -2
  83. package/json-schema/ai/CodeGenerationRequest.json +2 -2
  84. package/json-schema/ai/CodeGenerationTarget.json +2 -2
  85. package/json-schema/ai/ComponentActionParams.json +2 -2
  86. package/json-schema/ai/ComponentActionType.json +2 -2
  87. package/json-schema/ai/ComponentAgentAction.json +2 -2
  88. package/json-schema/ai/ConversationAnalytics.json +2 -2
  89. package/json-schema/ai/ConversationContext.json +2 -2
  90. package/json-schema/ai/ConversationMessage.json +2 -2
  91. package/json-schema/ai/ConversationSession.json +2 -2
  92. package/json-schema/ai/ConversationSummary.json +2 -2
  93. package/json-schema/ai/CostAlert.json +2 -2
  94. package/json-schema/ai/CostAlertType.json +2 -2
  95. package/json-schema/ai/CostAnalytics.json +2 -2
  96. package/json-schema/ai/CostBreakdownDimension.json +2 -2
  97. package/json-schema/ai/CostBreakdownEntry.json +2 -2
  98. package/json-schema/ai/CostEntry.json +2 -2
  99. package/json-schema/ai/CostMetricType.json +2 -2
  100. package/json-schema/ai/CostOptimizationRecommendation.json +2 -2
  101. package/json-schema/ai/CostQueryFilters.json +2 -2
  102. package/json-schema/ai/CostReport.json +2 -2
  103. package/json-schema/ai/DataActionParams.json +2 -2
  104. package/json-schema/ai/DataActionType.json +2 -2
  105. package/json-schema/ai/DataAgentAction.json +2 -2
  106. package/json-schema/ai/DeploymentStrategy.json +2 -2
  107. package/json-schema/ai/DevOpsAgent.json +2 -2
  108. package/json-schema/ai/DevOpsTool.json +2 -2
  109. package/json-schema/ai/DevelopmentConfig.json +2 -2
  110. package/json-schema/ai/DocumentChunk.json +2 -2
  111. package/json-schema/ai/DocumentLoaderConfig.json +2 -2
  112. package/json-schema/ai/DocumentMetadata.json +2 -2
  113. package/json-schema/ai/EmbeddingModel.json +2 -2
  114. package/json-schema/ai/Entity.json +2 -2
  115. package/json-schema/ai/EvaluationMetrics.json +2 -2
  116. package/json-schema/ai/FeedbackLoop.json +6 -6
  117. package/json-schema/ai/FieldSynonymConfig.json +2 -2
  118. package/json-schema/ai/FileContent.json +2 -2
  119. package/json-schema/ai/FilterExpression.json +2 -2
  120. package/json-schema/ai/FilterGroup.json +2 -2
  121. package/json-schema/ai/FormActionParams.json +2 -2
  122. package/json-schema/ai/FormActionType.json +2 -2
  123. package/json-schema/ai/FormAgentAction.json +2 -2
  124. package/json-schema/ai/FunctionCall.json +2 -2
  125. package/json-schema/ai/GeneratedCode.json +2 -2
  126. package/json-schema/ai/GitHubIntegration.json +2 -2
  127. package/json-schema/ai/Hyperparameters.json +2 -2
  128. package/json-schema/ai/ImageContent.json +2 -2
  129. package/json-schema/ai/IntegrationConfig.json +2 -2
  130. package/json-schema/ai/IntentActionMapping.json +2 -2
  131. package/json-schema/ai/Issue.json +2 -2
  132. package/json-schema/ai/MCPCapability.json +2 -2
  133. package/json-schema/ai/MCPClientConfig.json +2 -2
  134. package/json-schema/ai/MCPPrompt.json +2 -2
  135. package/json-schema/ai/MCPPromptArgument.json +2 -2
  136. package/json-schema/ai/MCPPromptMessage.json +2 -2
  137. package/json-schema/ai/MCPPromptRequest.json +2 -2
  138. package/json-schema/ai/MCPPromptResponse.json +2 -2
  139. package/json-schema/ai/MCPResource.json +2 -2
  140. package/json-schema/ai/MCPResourceRequest.json +2 -2
  141. package/json-schema/ai/MCPResourceResponse.json +2 -2
  142. package/json-schema/ai/MCPResourceTemplate.json +2 -2
  143. package/json-schema/ai/MCPResourceType.json +2 -2
  144. package/json-schema/ai/MCPRootEntry.json +2 -2
  145. package/json-schema/ai/MCPRootsConfig.json +2 -2
  146. package/json-schema/ai/MCPSamplingConfig.json +2 -2
  147. package/json-schema/ai/MCPServerConfig.json +2 -2
  148. package/json-schema/ai/MCPServerInfo.json +2 -2
  149. package/json-schema/ai/MCPStreamingConfig.json +2 -2
  150. package/json-schema/ai/MCPTool.json +2 -2
  151. package/json-schema/ai/MCPToolApproval.json +2 -2
  152. package/json-schema/ai/MCPToolCallRequest.json +2 -2
  153. package/json-schema/ai/MCPToolCallResponse.json +2 -2
  154. package/json-schema/ai/MCPToolParameter.json +2 -2
  155. package/json-schema/ai/MCPTransportConfig.json +2 -2
  156. package/json-schema/ai/MCPTransportType.json +2 -2
  157. package/json-schema/ai/MessageContent.json +2 -2
  158. package/json-schema/ai/MessageContentType.json +2 -2
  159. package/json-schema/ai/MessagePruningEvent.json +2 -2
  160. package/json-schema/ai/MessageRole.json +2 -2
  161. package/json-schema/ai/MetadataFilter.json +2 -2
  162. package/json-schema/ai/MetadataSource.json +2 -2
  163. package/json-schema/ai/ModelCapability.json +2 -2
  164. package/json-schema/ai/ModelConfig.json +2 -2
  165. package/json-schema/ai/ModelDrift.json +2 -2
  166. package/json-schema/ai/ModelFeature.json +2 -2
  167. package/json-schema/ai/ModelLimits.json +2 -2
  168. package/json-schema/ai/ModelPricing.json +2 -2
  169. package/json-schema/ai/ModelProvider.json +2 -2
  170. package/json-schema/ai/ModelRegistry.json +2 -2
  171. package/json-schema/ai/ModelRegistryEntry.json +2 -2
  172. package/json-schema/ai/ModelSelectionCriteria.json +2 -2
  173. package/json-schema/ai/MonitoringConfig.json +2 -2
  174. package/json-schema/ai/MultiAgentGroup.json +2 -2
  175. package/json-schema/ai/NLQAnalytics.json +2 -2
  176. package/json-schema/ai/NLQFieldMapping.json +2 -2
  177. package/json-schema/ai/NLQModelConfig.json +2 -2
  178. package/json-schema/ai/NLQParseResult.json +2 -2
  179. package/json-schema/ai/NLQRequest.json +2 -2
  180. package/json-schema/ai/NLQResponse.json +2 -2
  181. package/json-schema/ai/NLQTrainingExample.json +2 -2
  182. package/json-schema/ai/NavigationActionParams.json +2 -2
  183. package/json-schema/ai/NavigationActionType.json +2 -2
  184. package/json-schema/ai/NavigationAgentAction.json +2 -2
  185. package/json-schema/ai/PerformanceOptimization.json +2 -2
  186. package/json-schema/ai/PipelineStage.json +2 -2
  187. package/json-schema/ai/PluginCompositionRequest.json +2 -2
  188. package/json-schema/ai/PluginCompositionResult.json +2 -2
  189. package/json-schema/ai/PluginRecommendation.json +2 -2
  190. package/json-schema/ai/PluginRecommendationRequest.json +2 -2
  191. package/json-schema/ai/PluginScaffoldingTemplate.json +2 -2
  192. package/json-schema/ai/PostProcessingAction.json +2 -2
  193. package/json-schema/ai/PredictionRequest.json +2 -2
  194. package/json-schema/ai/PredictionResult.json +2 -2
  195. package/json-schema/ai/PredictiveModel.json +2 -2
  196. package/json-schema/ai/PredictiveModelType.json +2 -2
  197. package/json-schema/ai/PromptTemplate.json +2 -2
  198. package/json-schema/ai/PromptVariable.json +2 -2
  199. package/json-schema/ai/QueryContext.json +2 -2
  200. package/json-schema/ai/QueryIntent.json +2 -2
  201. package/json-schema/ai/QueryTemplate.json +2 -2
  202. package/json-schema/ai/RAGPipelineConfig.json +2 -2
  203. package/json-schema/ai/RAGPipelineStatus.json +2 -2
  204. package/json-schema/ai/RAGQueryRequest.json +2 -2
  205. package/json-schema/ai/RAGQueryResponse.json +2 -2
  206. package/json-schema/ai/RerankingConfig.json +2 -2
  207. package/json-schema/ai/Resolution.json +6 -6
  208. package/json-schema/ai/RetrievalStrategy.json +2 -2
  209. package/json-schema/ai/RootCauseAnalysisRequest.json +2 -2
  210. package/json-schema/ai/RootCauseAnalysisResult.json +2 -2
  211. package/json-schema/ai/SelfHealingAction.json +2 -2
  212. package/json-schema/ai/SelfHealingConfig.json +2 -2
  213. package/json-schema/ai/StructuredOutputConfig.json +2 -2
  214. package/json-schema/ai/StructuredOutputFormat.json +2 -2
  215. package/json-schema/ai/TestingConfig.json +2 -2
  216. package/json-schema/ai/TextContent.json +2 -2
  217. package/json-schema/ai/Timeframe.json +2 -2
  218. package/json-schema/ai/TokenBudgetConfig.json +2 -2
  219. package/json-schema/ai/TokenBudgetStrategy.json +2 -2
  220. package/json-schema/ai/TokenUsage.json +2 -2
  221. package/json-schema/ai/TokenUsageStats.json +2 -2
  222. package/json-schema/ai/ToolCall.json +2 -2
  223. package/json-schema/ai/TrainingConfig.json +2 -2
  224. package/json-schema/ai/TransformPipelineStep.json +2 -2
  225. package/json-schema/ai/TypedAgentAction.json +2 -2
  226. package/json-schema/ai/UIActionType.json +2 -2
  227. package/json-schema/ai/VectorStoreConfig.json +2 -2
  228. package/json-schema/ai/VectorStoreProvider.json +2 -2
  229. package/json-schema/ai/VercelIntegration.json +2 -2
  230. package/json-schema/ai/VersionManagement.json +2 -2
  231. package/json-schema/ai/ViewActionParams.json +2 -2
  232. package/json-schema/ai/ViewActionType.json +2 -2
  233. package/json-schema/ai/ViewAgentAction.json +2 -2
  234. package/json-schema/ai/WorkflowActionParams.json +2 -2
  235. package/json-schema/ai/WorkflowActionType.json +2 -2
  236. package/json-schema/ai/WorkflowAgentAction.json +2 -2
  237. package/json-schema/ai/WorkflowFieldCondition.json +2 -2
  238. package/json-schema/ai/WorkflowSchedule.json +2 -2
  239. package/json-schema/api/AckMessage.json +2 -2
  240. package/json-schema/api/AddReactionRequest.json +2 -2
  241. package/json-schema/api/AddReactionResponse.json +2 -2
  242. package/json-schema/api/AiChatRequest.json +2 -2
  243. package/json-schema/api/AiChatResponse.json +2 -2
  244. package/json-schema/api/AiInsightsRequest.json +2 -2
  245. package/json-schema/api/AiInsightsResponse.json +2 -2
  246. package/json-schema/api/AiNlqRequest.json +2 -2
  247. package/json-schema/api/AiNlqResponse.json +2 -2
  248. package/json-schema/api/AiSuggestRequest.json +2 -2
  249. package/json-schema/api/AiSuggestResponse.json +2 -2
  250. package/json-schema/api/AnalyticsEndpoint.json +2 -2
  251. package/json-schema/api/AnalyticsMetadataResponse.json +2 -2
  252. package/json-schema/api/AnalyticsQueryRequest.json +2 -2
  253. package/json-schema/api/AnalyticsResultResponse.json +2 -2
  254. package/json-schema/api/AnalyticsSqlResponse.json +2 -2
  255. package/json-schema/api/ApiChangelogEntry.json +2 -2
  256. package/json-schema/api/ApiDiscoveryQuery.json +2 -2
  257. package/json-schema/api/ApiDiscoveryResponse.json +2 -2
  258. package/json-schema/api/ApiDocumentationConfig.json +2 -2
  259. package/json-schema/api/ApiEndpoint.json +2 -2
  260. package/json-schema/api/ApiEndpointRegistration.json +2 -2
  261. package/json-schema/api/ApiError.json +2 -2
  262. package/json-schema/api/ApiMapping.json +2 -2
  263. package/json-schema/api/ApiMetadata.json +2 -2
  264. package/json-schema/api/ApiParameter.json +2 -2
  265. package/json-schema/api/ApiProtocolType.json +2 -2
  266. package/json-schema/api/ApiRegistry.json +2 -2
  267. package/json-schema/api/ApiRegistryEntry.json +2 -2
  268. package/json-schema/api/ApiResponse.json +2 -2
  269. package/json-schema/api/ApiRoutes.json +2 -2
  270. package/json-schema/api/ApiTestCollection.json +2 -2
  271. package/json-schema/api/ApiTestRequest.json +2 -2
  272. package/json-schema/api/ApiTestingUiConfig.json +2 -2
  273. package/json-schema/api/ApiTestingUiType.json +2 -2
  274. package/json-schema/api/AppDefinitionResponse.json +2 -2
  275. package/json-schema/api/AuthEndpoint.json +2 -2
  276. package/json-schema/api/AuthProvider.json +2 -2
  277. package/json-schema/api/AutomationApiErrorCode.json +2 -2
  278. package/json-schema/api/AutomationFlowPathParams.json +2 -2
  279. package/json-schema/api/AutomationRunPathParams.json +2 -2
  280. package/json-schema/api/AutomationTriggerRequest.json +2 -2
  281. package/json-schema/api/AutomationTriggerResponse.json +2 -2
  282. package/json-schema/api/BasePresence.json +2 -2
  283. package/json-schema/api/BaseResponse.json +2 -2
  284. package/json-schema/api/BatchConfig.json +2 -2
  285. package/json-schema/api/BatchDataRequest.json +2 -2
  286. package/json-schema/api/BatchDataResponse.json +2 -2
  287. package/json-schema/api/BatchEndpointsConfig.json +2 -2
  288. package/json-schema/api/BatchLoadingStrategy.json +2 -2
  289. package/json-schema/api/BatchOperationResult.json +2 -2
  290. package/json-schema/api/BatchOperationType.json +2 -2
  291. package/json-schema/api/BatchOptions.json +2 -2
  292. package/json-schema/api/BatchRecord.json +2 -2
  293. package/json-schema/api/BatchUpdateRequest.json +2 -2
  294. package/json-schema/api/BatchUpdateResponse.json +2 -2
  295. package/json-schema/api/BulkRequest.json +2 -2
  296. package/json-schema/api/BulkResponse.json +2 -2
  297. package/json-schema/api/CacheControl.json +2 -2
  298. package/json-schema/api/CacheDirective.json +2 -2
  299. package/json-schema/api/CacheInvalidationRequest.json +2 -2
  300. package/json-schema/api/CacheInvalidationResponse.json +2 -2
  301. package/json-schema/api/CacheInvalidationTarget.json +2 -2
  302. package/json-schema/api/Callback.json +2 -2
  303. package/json-schema/api/ChangelogEntry.json +2 -2
  304. package/json-schema/api/CheckPermissionRequest.json +2 -2
  305. package/json-schema/api/CheckPermissionResponse.json +2 -2
  306. package/json-schema/api/CodeGenerationTemplate.json +2 -2
  307. package/json-schema/api/CompleteChunkedUploadRequest.json +2 -2
  308. package/json-schema/api/CompleteChunkedUploadResponse.json +2 -2
  309. package/json-schema/api/CompleteUploadRequest.json +2 -2
  310. package/json-schema/api/ConceptListResponse.json +2 -2
  311. package/json-schema/api/ConflictResolutionStrategy.json +2 -2
  312. package/json-schema/api/CreateDataRequest.json +2 -2
  313. package/json-schema/api/CreateDataResponse.json +2 -2
  314. package/json-schema/api/CreateExportJobRequest.json +2 -2
  315. package/json-schema/api/CreateExportJobResponse.json +2 -2
  316. package/json-schema/api/CreateFeedItemRequest.json +2 -2
  317. package/json-schema/api/CreateFeedItemResponse.json +2 -2
  318. package/json-schema/api/CreateFlowRequest.json +2 -2
  319. package/json-schema/api/CreateFlowResponse.json +2 -2
  320. package/json-schema/api/CreateManyDataRequest.json +2 -2
  321. package/json-schema/api/CreateManyDataResponse.json +2 -2
  322. package/json-schema/api/CreateRequest.json +2 -2
  323. package/json-schema/api/CrudEndpointPattern.json +2 -2
  324. package/json-schema/api/CrudEndpointsConfig.json +2 -2
  325. package/json-schema/api/CrudOperation.json +2 -2
  326. package/json-schema/api/CursorMessage.json +2 -2
  327. package/json-schema/api/CursorPosition.json +2 -2
  328. package/json-schema/api/DataLoaderConfig.json +2 -2
  329. package/json-schema/api/DeduplicationStrategy.json +2 -2
  330. package/json-schema/api/DeleteDataRequest.json +2 -2
  331. package/json-schema/api/DeleteDataResponse.json +2 -2
  332. package/json-schema/api/DeleteFeedItemRequest.json +2 -2
  333. package/json-schema/api/DeleteFeedItemResponse.json +2 -2
  334. package/json-schema/api/DeleteFlowRequest.json +2 -2
  335. package/json-schema/api/DeleteFlowResponse.json +2 -2
  336. package/json-schema/api/DeleteManyDataRequest.json +2 -2
  337. package/json-schema/api/DeleteManyDataResponse.json +2 -2
  338. package/json-schema/api/DeleteManyRequest.json +2 -2
  339. package/json-schema/api/DeleteResponse.json +2 -2
  340. package/json-schema/api/DeleteViewRequest.json +2 -2
  341. package/json-schema/api/DeleteViewResponse.json +2 -2
  342. package/json-schema/api/DisablePackageRequest.json +2 -2
  343. package/json-schema/api/DisablePackageResponse.json +2 -2
  344. package/json-schema/api/Discovery.json +2 -2
  345. package/json-schema/api/DispatcherConfig.json +2 -2
  346. package/json-schema/api/DispatcherRoute.json +2 -2
  347. package/json-schema/api/DocumentState.json +2 -2
  348. package/json-schema/api/ETag.json +2 -2
  349. package/json-schema/api/EditMessage.json +2 -2
  350. package/json-schema/api/EditOperation.json +2 -2
  351. package/json-schema/api/EditOperationType.json +2 -2
  352. package/json-schema/api/EnablePackageRequest.json +2 -2
  353. package/json-schema/api/EnablePackageResponse.json +2 -2
  354. package/json-schema/api/EndpointRegistry.json +2 -2
  355. package/json-schema/api/EnhancedApiError.json +2 -2
  356. package/json-schema/api/ErrorCategory.json +2 -2
  357. package/json-schema/api/ErrorHandlingConfig.json +2 -2
  358. package/json-schema/api/ErrorMessage.json +2 -2
  359. package/json-schema/api/ErrorResponse.json +2 -2
  360. package/json-schema/api/EventFilter.json +2 -2
  361. package/json-schema/api/EventFilterCondition.json +2 -2
  362. package/json-schema/api/EventMessage.json +2 -2
  363. package/json-schema/api/EventPattern.json +2 -2
  364. package/json-schema/api/EventSubscription.json +2 -2
  365. package/json-schema/api/ExportFormat.json +2 -2
  366. package/json-schema/api/ExportImportTemplate.json +2 -2
  367. package/json-schema/api/ExportJobProgress.json +2 -2
  368. package/json-schema/api/ExportJobStatus.json +2 -2
  369. package/json-schema/api/ExportJobSummary.json +2 -2
  370. package/json-schema/api/ExportRequest.json +3 -3
  371. package/json-schema/api/FederationEntity.json +2 -2
  372. package/json-schema/api/FederationEntityKey.json +2 -2
  373. package/json-schema/api/FederationExternalField.json +2 -2
  374. package/json-schema/api/FederationGateway.json +2 -2
  375. package/json-schema/api/FederationProvides.json +2 -2
  376. package/json-schema/api/FederationRequires.json +2 -2
  377. package/json-schema/api/FeedApiErrorCode.json +2 -2
  378. package/json-schema/api/FeedItemPathParams.json +2 -2
  379. package/json-schema/api/FeedListFilterType.json +2 -2
  380. package/json-schema/api/FeedPathParams.json +2 -2
  381. package/json-schema/api/FeedUnsubscribeRequest.json +2 -2
  382. package/json-schema/api/FieldError.json +2 -2
  383. package/json-schema/api/FieldMappingEntry.json +2 -2
  384. package/json-schema/api/FileTypeValidation.json +2 -2
  385. package/json-schema/api/FileUploadResponse.json +2 -2
  386. package/json-schema/api/FilterOperator.json +2 -2
  387. package/json-schema/api/FindDataRequest.json +3 -3
  388. package/json-schema/api/FindDataResponse.json +2 -2
  389. package/json-schema/api/FlowSummary.json +2 -2
  390. package/json-schema/api/GeneratedApiDocumentation.json +2 -2
  391. package/json-schema/api/GeneratedEndpoint.json +2 -2
  392. package/json-schema/api/GetAnalyticsMetaRequest.json +2 -2
  393. package/json-schema/api/GetChangelogRequest.json +2 -2
  394. package/json-schema/api/GetChangelogResponse.json +2 -2
  395. package/json-schema/api/GetDataRequest.json +3 -3
  396. package/json-schema/api/GetDataResponse.json +2 -2
  397. package/json-schema/api/GetDiscoveryRequest.json +2 -2
  398. package/json-schema/api/GetDiscoveryResponse.json +2 -2
  399. package/json-schema/api/GetEffectivePermissionsRequest.json +2 -2
  400. package/json-schema/api/GetEffectivePermissionsResponse.json +2 -2
  401. package/json-schema/api/GetExportJobDownloadRequest.json +2 -2
  402. package/json-schema/api/GetExportJobDownloadResponse.json +2 -2
  403. package/json-schema/api/GetFeedRequest.json +2 -2
  404. package/json-schema/api/GetFeedResponse.json +2 -2
  405. package/json-schema/api/GetFieldLabelsRequest.json +2 -2
  406. package/json-schema/api/GetFieldLabelsResponse.json +2 -2
  407. package/json-schema/api/GetFlowRequest.json +2 -2
  408. package/json-schema/api/GetFlowResponse.json +2 -2
  409. package/json-schema/api/GetInstalledPackageRequest.json +2 -2
  410. package/json-schema/api/GetInstalledPackageResponse.json +2 -2
  411. package/json-schema/api/GetLocalesRequest.json +2 -2
  412. package/json-schema/api/GetLocalesResponse.json +2 -2
  413. package/json-schema/api/GetMetaItemCachedRequest.json +2 -2
  414. package/json-schema/api/GetMetaItemCachedResponse.json +2 -2
  415. package/json-schema/api/GetMetaItemRequest.json +2 -2
  416. package/json-schema/api/GetMetaItemResponse.json +2 -2
  417. package/json-schema/api/GetMetaItemsRequest.json +2 -2
  418. package/json-schema/api/GetMetaItemsResponse.json +2 -2
  419. package/json-schema/api/GetMetaTypesRequest.json +2 -2
  420. package/json-schema/api/GetMetaTypesResponse.json +2 -2
  421. package/json-schema/api/GetNotificationPreferencesRequest.json +2 -2
  422. package/json-schema/api/GetNotificationPreferencesResponse.json +2 -2
  423. package/json-schema/api/GetObjectPermissionsRequest.json +2 -2
  424. package/json-schema/api/GetObjectPermissionsResponse.json +2 -2
  425. package/json-schema/api/GetPackageRequest.json +2 -2
  426. package/json-schema/api/GetPackageResponse.json +2 -2
  427. package/json-schema/api/GetPresenceRequest.json +2 -2
  428. package/json-schema/api/GetPresenceResponse.json +2 -2
  429. package/json-schema/api/GetPresignedUrlRequest.json +2 -2
  430. package/json-schema/api/GetRunRequest.json +2 -2
  431. package/json-schema/api/GetRunResponse.json +2 -2
  432. package/json-schema/api/GetTranslationsRequest.json +2 -2
  433. package/json-schema/api/GetTranslationsResponse.json +2 -2
  434. package/json-schema/api/GetUiViewRequest.json +2 -2
  435. package/json-schema/api/GetViewRequest.json +2 -2
  436. package/json-schema/api/GetWorkflowConfigRequest.json +2 -2
  437. package/json-schema/api/GetWorkflowConfigResponse.json +2 -2
  438. package/json-schema/api/GetWorkflowStateRequest.json +2 -2
  439. package/json-schema/api/GetWorkflowStateResponse.json +2 -2
  440. package/json-schema/api/GraphQLConfig.json +2 -2
  441. package/json-schema/api/GraphQLDataLoaderConfig.json +2 -2
  442. package/json-schema/api/GraphQLDirectiveConfig.json +2 -2
  443. package/json-schema/api/GraphQLDirectiveLocation.json +2 -2
  444. package/json-schema/api/GraphQLMutationConfig.json +2 -2
  445. package/json-schema/api/GraphQLPersistedQuery.json +2 -2
  446. package/json-schema/api/GraphQLQueryAdapter.json +2 -2
  447. package/json-schema/api/GraphQLQueryComplexity.json +2 -2
  448. package/json-schema/api/GraphQLQueryConfig.json +2 -2
  449. package/json-schema/api/GraphQLQueryDepthLimit.json +2 -2
  450. package/json-schema/api/GraphQLRateLimit.json +2 -2
  451. package/json-schema/api/GraphQLResolverConfig.json +2 -2
  452. package/json-schema/api/GraphQLScalarType.json +2 -2
  453. package/json-schema/api/GraphQLSubscriptionConfig.json +2 -2
  454. package/json-schema/api/GraphQLTypeConfig.json +2 -2
  455. package/json-schema/api/HttpFindQueryParams.json +3 -3
  456. package/json-schema/api/HttpMethod.json +2 -2
  457. package/json-schema/api/HttpStatusCode.json +2 -2
  458. package/json-schema/api/IdRequest.json +2 -2
  459. package/json-schema/api/ImportValidationConfig.json +2 -2
  460. package/json-schema/api/ImportValidationMode.json +2 -2
  461. package/json-schema/api/ImportValidationResult.json +2 -2
  462. package/json-schema/api/InitiateChunkedUploadRequest.json +2 -2
  463. package/json-schema/api/InitiateChunkedUploadResponse.json +2 -2
  464. package/json-schema/api/InstallPackageRequest.json +2 -2
  465. package/json-schema/api/InstallPackageResponse.json +2 -2
  466. package/json-schema/api/ListExportJobsRequest.json +2 -2
  467. package/json-schema/api/ListExportJobsResponse.json +2 -2
  468. package/json-schema/api/ListFlowsRequest.json +2 -2
  469. package/json-schema/api/ListFlowsResponse.json +2 -2
  470. package/json-schema/api/ListInstalledPackagesRequest.json +2 -2
  471. package/json-schema/api/ListInstalledPackagesResponse.json +2 -2
  472. package/json-schema/api/ListNotificationsRequest.json +2 -2
  473. package/json-schema/api/ListNotificationsResponse.json +2 -2
  474. package/json-schema/api/ListPackagesRequest.json +2 -2
  475. package/json-schema/api/ListPackagesResponse.json +2 -2
  476. package/json-schema/api/ListRecordResponse.json +2 -2
  477. package/json-schema/api/ListRunsRequest.json +2 -2
  478. package/json-schema/api/ListRunsResponse.json +2 -2
  479. package/json-schema/api/ListViewsRequest.json +2 -2
  480. package/json-schema/api/LoginRequest.json +2 -2
  481. package/json-schema/api/LoginType.json +2 -2
  482. package/json-schema/api/MarkAllNotificationsReadRequest.json +2 -2
  483. package/json-schema/api/MarkAllNotificationsReadResponse.json +2 -2
  484. package/json-schema/api/MarkNotificationsReadRequest.json +2 -2
  485. package/json-schema/api/MarkNotificationsReadResponse.json +2 -2
  486. package/json-schema/api/MetadataBulkRegisterRequest.json +2 -2
  487. package/json-schema/api/MetadataBulkResponse.json +2 -2
  488. package/json-schema/api/MetadataBulkUnregisterRequest.json +2 -2
  489. package/json-schema/api/MetadataCacheRequest.json +2 -2
  490. package/json-schema/api/MetadataCacheResponse.json +2 -2
  491. package/json-schema/api/MetadataDeleteResponse.json +2 -2
  492. package/json-schema/api/MetadataDependenciesResponse.json +2 -2
  493. package/json-schema/api/MetadataDependentsResponse.json +2 -2
  494. package/json-schema/api/MetadataEffectiveResponse.json +2 -2
  495. package/json-schema/api/MetadataEndpointsConfig.json +2 -2
  496. package/json-schema/api/MetadataExistsResponse.json +2 -2
  497. package/json-schema/api/MetadataExportRequest.json +2 -2
  498. package/json-schema/api/MetadataExportResponse.json +2 -2
  499. package/json-schema/api/MetadataImportRequest.json +2 -2
  500. package/json-schema/api/MetadataImportResponse.json +2 -2
  501. package/json-schema/api/MetadataItemResponse.json +2 -2
  502. package/json-schema/api/MetadataListResponse.json +2 -2
  503. package/json-schema/api/MetadataNamesResponse.json +2 -2
  504. package/json-schema/api/MetadataOverlayResponse.json +2 -2
  505. package/json-schema/api/MetadataOverlaySaveRequest.json +2 -2
  506. package/json-schema/api/MetadataQueryRequest.json +2 -2
  507. package/json-schema/api/MetadataQueryResponse.json +2 -2
  508. package/json-schema/api/MetadataRegisterRequest.json +2 -2
  509. package/json-schema/api/MetadataTypeInfoResponse.json +2 -2
  510. package/json-schema/api/MetadataTypesResponse.json +2 -2
  511. package/json-schema/api/MetadataValidateRequest.json +2 -2
  512. package/json-schema/api/MetadataValidateResponse.json +2 -2
  513. package/json-schema/api/ModificationResult.json +2 -2
  514. package/json-schema/api/Notification.json +2 -2
  515. package/json-schema/api/NotificationPreferences.json +2 -2
  516. package/json-schema/api/ODataConfig.json +2 -2
  517. package/json-schema/api/ODataError.json +2 -2
  518. package/json-schema/api/ODataFilterFunction.json +2 -2
  519. package/json-schema/api/ODataFilterOperator.json +2 -2
  520. package/json-schema/api/ODataMetadata.json +2 -2
  521. package/json-schema/api/ODataQuery.json +3 -3
  522. package/json-schema/api/ODataQueryAdapter.json +2 -2
  523. package/json-schema/api/ODataResponse.json +2 -2
  524. package/json-schema/api/ObjectDefinitionResponse.json +3 -3
  525. package/json-schema/api/ObjectQLReference.json +2 -2
  526. package/json-schema/api/OpenApi31Extensions.json +2 -2
  527. package/json-schema/api/OpenApiGenerationConfig.json +2 -2
  528. package/json-schema/api/OpenApiSecurityScheme.json +2 -2
  529. package/json-schema/api/OpenApiServer.json +2 -2
  530. package/json-schema/api/OpenApiSpec.json +2 -2
  531. package/json-schema/api/OperatorMapping.json +2 -2
  532. package/json-schema/api/PackageApiErrorCode.json +2 -2
  533. package/json-schema/api/PackageInstallRequest.json +2 -2
  534. package/json-schema/api/PackageInstallResponse.json +2 -2
  535. package/json-schema/api/PackagePathParams.json +2 -2
  536. package/json-schema/api/PackageRollbackRequest.json +2 -2
  537. package/json-schema/api/PackageRollbackResponse.json +2 -2
  538. package/json-schema/api/PackageUpgradeRequest.json +2 -2
  539. package/json-schema/api/PackageUpgradeResponse.json +2 -2
  540. package/json-schema/api/PinFeedItemRequest.json +2 -2
  541. package/json-schema/api/PinFeedItemResponse.json +2 -2
  542. package/json-schema/api/PingMessage.json +2 -2
  543. package/json-schema/api/PongMessage.json +2 -2
  544. package/json-schema/api/PresenceMessage.json +2 -2
  545. package/json-schema/api/PresenceState.json +2 -2
  546. package/json-schema/api/PresenceStatus.json +2 -2
  547. package/json-schema/api/PresenceUpdate.json +2 -2
  548. package/json-schema/api/PresignedUrlResponse.json +2 -2
  549. package/json-schema/api/QueryAdapterConfig.json +2 -2
  550. package/json-schema/api/QueryAdapterTarget.json +2 -2
  551. package/json-schema/api/QueryOptimizationConfig.json +2 -2
  552. package/json-schema/api/RealtimeConfig.json +2 -2
  553. package/json-schema/api/RealtimeConnectRequest.json +2 -2
  554. package/json-schema/api/RealtimeConnectResponse.json +2 -2
  555. package/json-schema/api/RealtimeDisconnectRequest.json +2 -2
  556. package/json-schema/api/RealtimeDisconnectResponse.json +2 -2
  557. package/json-schema/api/RealtimeEvent.json +2 -2
  558. package/json-schema/api/RealtimeEventType.json +2 -2
  559. package/json-schema/api/RealtimePresence.json +2 -2
  560. package/json-schema/api/RealtimeRecordAction.json +2 -2
  561. package/json-schema/api/RealtimeSubscribeRequest.json +2 -2
  562. package/json-schema/api/RealtimeSubscribeResponse.json +2 -2
  563. package/json-schema/api/RealtimeUnsubscribeRequest.json +2 -2
  564. package/json-schema/api/RealtimeUnsubscribeResponse.json +2 -2
  565. package/json-schema/api/RecordData.json +2 -2
  566. package/json-schema/api/RefreshTokenRequest.json +2 -2
  567. package/json-schema/api/RegisterDeviceRequest.json +2 -2
  568. package/json-schema/api/RegisterDeviceResponse.json +2 -2
  569. package/json-schema/api/RegisterRequest.json +2 -2
  570. package/json-schema/api/RemoveReactionRequest.json +2 -2
  571. package/json-schema/api/RemoveReactionResponse.json +2 -2
  572. package/json-schema/api/RequestValidationConfig.json +2 -2
  573. package/json-schema/api/ResolveDependenciesRequest.json +2 -2
  574. package/json-schema/api/ResolveDependenciesResponse.json +2 -2
  575. package/json-schema/api/ResponseEnvelopeConfig.json +2 -2
  576. package/json-schema/api/RestApiConfig.json +2 -2
  577. package/json-schema/api/RestApiEndpoint.json +2 -2
  578. package/json-schema/api/RestApiPluginConfig.json +2 -2
  579. package/json-schema/api/RestApiRouteCategory.json +2 -2
  580. package/json-schema/api/RestApiRouteRegistration.json +2 -2
  581. package/json-schema/api/RestQueryAdapter.json +2 -2
  582. package/json-schema/api/RestServerConfig.json +2 -2
  583. package/json-schema/api/RetryStrategy.json +2 -2
  584. package/json-schema/api/RouteCategory.json +2 -2
  585. package/json-schema/api/RouteDefinition.json +2 -2
  586. package/json-schema/api/RouteGenerationConfig.json +2 -2
  587. package/json-schema/api/RouterConfig.json +2 -2
  588. package/json-schema/api/SaveMetaItemRequest.json +2 -2
  589. package/json-schema/api/SaveMetaItemResponse.json +2 -2
  590. package/json-schema/api/ScheduleExportRequest.json +2 -2
  591. package/json-schema/api/ScheduleExportResponse.json +2 -2
  592. package/json-schema/api/ScheduledExport.json +2 -2
  593. package/json-schema/api/SchemaDefinition.json +2 -2
  594. package/json-schema/api/SearchFeedRequest.json +2 -2
  595. package/json-schema/api/SearchFeedResponse.json +2 -2
  596. package/json-schema/api/ServiceInfo.json +2 -2
  597. package/json-schema/api/Session.json +2 -2
  598. package/json-schema/api/SessionResponse.json +2 -2
  599. package/json-schema/api/SessionUser.json +2 -2
  600. package/json-schema/api/SetPresenceRequest.json +2 -2
  601. package/json-schema/api/SetPresenceResponse.json +2 -2
  602. package/json-schema/api/SimpleCursorPosition.json +2 -2
  603. package/json-schema/api/SimplePresenceState.json +2 -2
  604. package/json-schema/api/SingleRecordResponse.json +2 -2
  605. package/json-schema/api/StandardErrorCode.json +2 -2
  606. package/json-schema/api/StarFeedItemRequest.json +2 -2
  607. package/json-schema/api/StarFeedItemResponse.json +2 -2
  608. package/json-schema/api/SubgraphConfig.json +2 -2
  609. package/json-schema/api/SubscribeMessage.json +2 -2
  610. package/json-schema/api/SubscribeRequest.json +2 -2
  611. package/json-schema/api/SubscribeResponse.json +2 -2
  612. package/json-schema/api/Subscription.json +2 -2
  613. package/json-schema/api/SubscriptionEvent.json +2 -2
  614. package/json-schema/api/ToggleFlowRequest.json +2 -2
  615. package/json-schema/api/ToggleFlowResponse.json +2 -2
  616. package/json-schema/api/TransportProtocol.json +2 -2
  617. package/json-schema/api/TriggerFlowRequest.json +2 -2
  618. package/json-schema/api/TriggerFlowResponse.json +2 -2
  619. package/json-schema/api/UninstallPackageApiRequest.json +2 -2
  620. package/json-schema/api/UninstallPackageApiResponse.json +2 -2
  621. package/json-schema/api/UninstallPackageRequest.json +2 -2
  622. package/json-schema/api/UninstallPackageResponse.json +2 -2
  623. package/json-schema/api/UnpinFeedItemRequest.json +2 -2
  624. package/json-schema/api/UnpinFeedItemResponse.json +2 -2
  625. package/json-schema/api/UnregisterDeviceRequest.json +2 -2
  626. package/json-schema/api/UnregisterDeviceResponse.json +2 -2
  627. package/json-schema/api/UnstarFeedItemRequest.json +2 -2
  628. package/json-schema/api/UnstarFeedItemResponse.json +2 -2
  629. package/json-schema/api/UnsubscribeMessage.json +2 -2
  630. package/json-schema/api/UnsubscribeRequest.json +2 -2
  631. package/json-schema/api/UnsubscribeResponse.json +2 -2
  632. package/json-schema/api/UpdateDataRequest.json +2 -2
  633. package/json-schema/api/UpdateDataResponse.json +2 -2
  634. package/json-schema/api/UpdateFeedItemRequest.json +2 -2
  635. package/json-schema/api/UpdateFeedItemResponse.json +2 -2
  636. package/json-schema/api/UpdateFlowRequest.json +2 -2
  637. package/json-schema/api/UpdateFlowResponse.json +2 -2
  638. package/json-schema/api/UpdateManyDataRequest.json +2 -2
  639. package/json-schema/api/UpdateManyDataResponse.json +2 -2
  640. package/json-schema/api/UpdateManyRequest.json +2 -2
  641. package/json-schema/api/UpdateNotificationPreferencesRequest.json +2 -2
  642. package/json-schema/api/UpdateNotificationPreferencesResponse.json +2 -2
  643. package/json-schema/api/UpdateRequest.json +2 -2
  644. package/json-schema/api/UploadArtifactRequest.json +2 -2
  645. package/json-schema/api/UploadArtifactResponse.json +2 -2
  646. package/json-schema/api/UploadChunkRequest.json +2 -2
  647. package/json-schema/api/UploadChunkResponse.json +2 -2
  648. package/json-schema/api/UploadProgress.json +2 -2
  649. package/json-schema/api/UserProfileResponse.json +2 -2
  650. package/json-schema/api/ValidationMode.json +2 -2
  651. package/json-schema/api/VersionDefinition.json +2 -2
  652. package/json-schema/api/VersionNegotiationResponse.json +2 -2
  653. package/json-schema/api/VersionStatus.json +2 -2
  654. package/json-schema/api/VersioningConfig.json +2 -2
  655. package/json-schema/api/VersioningStrategy.json +2 -2
  656. package/json-schema/api/WebSocketConfig.json +2 -2
  657. package/json-schema/api/WebSocketEvent.json +2 -2
  658. package/json-schema/api/WebSocketMessage.json +2 -2
  659. package/json-schema/api/WebSocketMessageType.json +2 -2
  660. package/json-schema/api/WebSocketPresenceStatus.json +2 -2
  661. package/json-schema/api/WebSocketServerConfig.json +2 -2
  662. package/json-schema/api/WebhookConfig.json +2 -2
  663. package/json-schema/api/WebhookEvent.json +2 -2
  664. package/json-schema/api/WellKnownCapabilities.json +2 -2
  665. package/json-schema/api/WorkflowApproveRequest.json +2 -2
  666. package/json-schema/api/WorkflowApproveResponse.json +2 -2
  667. package/json-schema/api/WorkflowRejectRequest.json +2 -2
  668. package/json-schema/api/WorkflowRejectResponse.json +2 -2
  669. package/json-schema/api/WorkflowState.json +2 -2
  670. package/json-schema/api/WorkflowTransitionRequest.json +2 -2
  671. package/json-schema/api/WorkflowTransitionResponse.json +2 -2
  672. package/json-schema/automation/ActionRef.json +2 -2
  673. package/json-schema/automation/ApprovalAction.json +2 -2
  674. package/json-schema/automation/ApprovalActionType.json +2 -2
  675. package/json-schema/automation/ApprovalProcess.json +2 -2
  676. package/json-schema/automation/ApprovalStep.json +2 -2
  677. package/json-schema/automation/ApproverType.json +2 -2
  678. package/json-schema/automation/AuthField.json +2 -2
  679. package/json-schema/automation/Authentication.json +2 -2
  680. package/json-schema/automation/AuthenticationType.json +2 -2
  681. package/json-schema/automation/BpmnDiagnostic.json +2 -2
  682. package/json-schema/automation/BpmnElementMapping.json +2 -2
  683. package/json-schema/automation/BpmnExportOptions.json +2 -2
  684. package/json-schema/automation/BpmnImportOptions.json +2 -2
  685. package/json-schema/automation/BpmnInteropResult.json +2 -2
  686. package/json-schema/automation/BpmnUnmappedStrategy.json +2 -2
  687. package/json-schema/automation/BpmnVersion.json +2 -2
  688. package/json-schema/automation/Checkpoint.json +2 -2
  689. package/json-schema/automation/ConcurrencyPolicy.json +2 -2
  690. package/json-schema/automation/ConflictResolution.json +2 -2
  691. package/json-schema/automation/Connector.json +2 -2
  692. package/json-schema/automation/ConnectorActionRef.json +2 -2
  693. package/json-schema/automation/ConnectorCategory.json +2 -2
  694. package/json-schema/automation/ConnectorInstance.json +2 -2
  695. package/json-schema/automation/ConnectorOperation.json +2 -2
  696. package/json-schema/automation/ConnectorTrigger.json +2 -2
  697. package/json-schema/automation/CustomScriptAction.json +2 -2
  698. package/json-schema/automation/DataDestinationConfig.json +2 -2
  699. package/json-schema/automation/DataSourceConfig.json +2 -2
  700. package/json-schema/automation/DataSyncConfig.json +2 -2
  701. package/json-schema/automation/ETLDestination.json +2 -2
  702. package/json-schema/automation/ETLEndpointType.json +2 -2
  703. package/json-schema/automation/ETLPipeline.json +2 -2
  704. package/json-schema/automation/ETLPipelineRun.json +2 -2
  705. package/json-schema/automation/ETLRunStatus.json +2 -2
  706. package/json-schema/automation/ETLSource.json +2 -2
  707. package/json-schema/automation/ETLSyncMode.json +2 -2
  708. package/json-schema/automation/ETLTransformation.json +2 -2
  709. package/json-schema/automation/ETLTransformationType.json +2 -2
  710. package/json-schema/automation/EmailAlertAction.json +2 -2
  711. package/json-schema/automation/Event.json +2 -2
  712. package/json-schema/automation/ExecutionError.json +2 -2
  713. package/json-schema/automation/ExecutionErrorSeverity.json +2 -2
  714. package/json-schema/automation/ExecutionLog.json +2 -2
  715. package/json-schema/automation/ExecutionStatus.json +2 -2
  716. package/json-schema/automation/ExecutionStepLog.json +2 -2
  717. package/json-schema/automation/FieldUpdateAction.json +2 -2
  718. package/json-schema/automation/Flow.json +2 -2
  719. package/json-schema/automation/FlowEdge.json +2 -2
  720. package/json-schema/automation/FlowNode.json +2 -2
  721. package/json-schema/automation/FlowNodeAction.json +2 -2
  722. package/json-schema/automation/FlowVariable.json +2 -2
  723. package/json-schema/automation/FlowVersionHistory.json +2 -2
  724. package/json-schema/automation/GuardRef.json +2 -2
  725. package/json-schema/automation/HttpCallAction.json +2 -2
  726. package/json-schema/automation/NodeExecutorDescriptor.json +2 -2
  727. package/json-schema/automation/OAuth2Config.json +2 -2
  728. package/json-schema/automation/OperationParameter.json +2 -2
  729. package/json-schema/automation/OperationType.json +2 -2
  730. package/json-schema/automation/PushNotificationAction.json +2 -2
  731. package/json-schema/automation/ScheduleState.json +2 -2
  732. package/json-schema/automation/StateMachine.json +2 -2
  733. package/json-schema/automation/StateNode.json +2 -2
  734. package/json-schema/automation/SyncDirection.json +2 -2
  735. package/json-schema/automation/SyncExecutionResult.json +2 -2
  736. package/json-schema/automation/SyncExecutionStatus.json +2 -2
  737. package/json-schema/automation/SyncMode.json +2 -2
  738. package/json-schema/automation/TaskCreationAction.json +2 -2
  739. package/json-schema/automation/TimeTrigger.json +2 -2
  740. package/json-schema/automation/Transition.json +2 -2
  741. package/json-schema/automation/WaitEventType.json +2 -2
  742. package/json-schema/automation/WaitExecutorConfig.json +2 -2
  743. package/json-schema/automation/WaitResumePayload.json +2 -2
  744. package/json-schema/automation/WaitTimeoutBehavior.json +2 -2
  745. package/json-schema/automation/Webhook.json +2 -2
  746. package/json-schema/automation/WebhookReceiver.json +2 -2
  747. package/json-schema/automation/WebhookTriggerType.json +2 -2
  748. package/json-schema/automation/WorkflowAction.json +2 -2
  749. package/json-schema/automation/WorkflowRule.json +2 -2
  750. package/json-schema/automation/WorkflowTriggerType.json +2 -2
  751. package/json-schema/cloud/AnalyticsTimeRange.json +2 -2
  752. package/json-schema/cloud/AppDiscoveryRequest.json +2 -2
  753. package/json-schema/cloud/AppDiscoveryResponse.json +2 -2
  754. package/json-schema/cloud/AppSubscription.json +2 -2
  755. package/json-schema/cloud/ArtifactDownloadResponse.json +2 -2
  756. package/json-schema/cloud/ArtifactReference.json +2 -2
  757. package/json-schema/cloud/CreateListingRequest.json +2 -2
  758. package/json-schema/cloud/CuratedCollection.json +2 -2
  759. package/json-schema/cloud/FeaturedListing.json +2 -2
  760. package/json-schema/cloud/InstalledAppSummary.json +2 -2
  761. package/json-schema/cloud/ListInstalledAppsRequest.json +2 -2
  762. package/json-schema/cloud/ListInstalledAppsResponse.json +2 -2
  763. package/json-schema/cloud/ListReviewsRequest.json +2 -2
  764. package/json-schema/cloud/ListReviewsResponse.json +2 -2
  765. package/json-schema/cloud/ListingActionRequest.json +2 -2
  766. package/json-schema/cloud/ListingStatus.json +2 -2
  767. package/json-schema/cloud/MarketplaceCategory.json +2 -2
  768. package/json-schema/cloud/MarketplaceHealthMetrics.json +2 -2
  769. package/json-schema/cloud/MarketplaceInstallRequest.json +2 -2
  770. package/json-schema/cloud/MarketplaceInstallResponse.json +2 -2
  771. package/json-schema/cloud/MarketplaceListing.json +2 -2
  772. package/json-schema/cloud/MarketplaceSearchRequest.json +2 -2
  773. package/json-schema/cloud/MarketplaceSearchResponse.json +2 -2
  774. package/json-schema/cloud/PackageSubmission.json +2 -2
  775. package/json-schema/cloud/PolicyAction.json +2 -2
  776. package/json-schema/cloud/PolicyViolationType.json +2 -2
  777. package/json-schema/cloud/PricingModel.json +2 -2
  778. package/json-schema/cloud/Publisher.json +2 -2
  779. package/json-schema/cloud/PublisherProfile.json +2 -2
  780. package/json-schema/cloud/PublisherVerification.json +2 -2
  781. package/json-schema/cloud/PublishingAnalyticsRequest.json +2 -2
  782. package/json-schema/cloud/PublishingAnalyticsResponse.json +2 -2
  783. package/json-schema/cloud/RecommendationReason.json +2 -2
  784. package/json-schema/cloud/RecommendedApp.json +2 -2
  785. package/json-schema/cloud/RejectionReason.json +2 -2
  786. package/json-schema/cloud/ReleaseChannel.json +2 -2
  787. package/json-schema/cloud/ReviewCriterion.json +2 -2
  788. package/json-schema/cloud/ReviewDecision.json +2 -2
  789. package/json-schema/cloud/ReviewModerationStatus.json +2 -2
  790. package/json-schema/cloud/SubmissionReview.json +2 -2
  791. package/json-schema/cloud/SubmitReviewRequest.json +2 -2
  792. package/json-schema/cloud/SubscriptionStatus.json +2 -2
  793. package/json-schema/cloud/TimeSeriesPoint.json +2 -2
  794. package/json-schema/cloud/TrendingListing.json +2 -2
  795. package/json-schema/cloud/UpdateListingRequest.json +2 -2
  796. package/json-schema/cloud/UserReview.json +2 -2
  797. package/json-schema/cloud/VersionRelease.json +2 -2
  798. package/json-schema/data/Address.json +2 -2
  799. package/json-schema/data/AggregationFunction.json +2 -2
  800. package/json-schema/data/AggregationMetricType.json +2 -2
  801. package/json-schema/data/AggregationNode.json +2 -2
  802. package/json-schema/data/AggregationPipeline.json +2 -2
  803. package/json-schema/data/AggregationStage.json +2 -2
  804. package/json-schema/data/AnalyticsQuery.json +2 -2
  805. package/json-schema/data/ApiMethod.json +2 -2
  806. package/json-schema/data/AsyncValidation.json +2 -2
  807. package/json-schema/data/BaseEngineOptions.json +2 -2
  808. package/json-schema/data/CDCConfig.json +2 -2
  809. package/json-schema/data/ComputedFieldCache.json +2 -2
  810. package/json-schema/data/ConditionalValidation.json +2 -2
  811. package/json-schema/data/ConsistencyLevel.json +2 -2
  812. package/json-schema/data/CrossFieldValidation.json +2 -2
  813. package/json-schema/data/Cube.json +2 -2
  814. package/json-schema/data/CubeJoin.json +2 -2
  815. package/json-schema/data/CurrencyConfig.json +2 -2
  816. package/json-schema/data/CurrencyValue.json +2 -2
  817. package/json-schema/data/CustomValidator.json +2 -2
  818. package/json-schema/data/DataEngineAggregateOptions.json +2 -2
  819. package/json-schema/data/DataEngineAggregateRequest.json +2 -2
  820. package/json-schema/data/DataEngineBatchRequest.json +2 -2
  821. package/json-schema/data/DataEngineCountOptions.json +2 -2
  822. package/json-schema/data/DataEngineCountRequest.json +2 -2
  823. package/json-schema/data/DataEngineDeleteOptions.json +2 -2
  824. package/json-schema/data/DataEngineDeleteRequest.json +2 -2
  825. package/json-schema/data/DataEngineExecuteRequest.json +2 -2
  826. package/json-schema/data/DataEngineFilter.json +2 -2
  827. package/json-schema/data/DataEngineFindOneRequest.json +2 -2
  828. package/json-schema/data/DataEngineFindRequest.json +2 -2
  829. package/json-schema/data/DataEngineInsertOptions.json +2 -2
  830. package/json-schema/data/DataEngineInsertRequest.json +2 -2
  831. package/json-schema/data/DataEngineQueryOptions.json +2 -2
  832. package/json-schema/data/DataEngineRequest.json +2 -2
  833. package/json-schema/data/DataEngineSort.json +2 -2
  834. package/json-schema/data/DataEngineUpdateOptions.json +2 -2
  835. package/json-schema/data/DataEngineUpdateRequest.json +2 -2
  836. package/json-schema/data/DataEngineVectorFindRequest.json +2 -2
  837. package/json-schema/data/DataQualityRules.json +2 -2
  838. package/json-schema/data/DataTypeMapping.json +2 -2
  839. package/json-schema/data/Dataset.json +2 -2
  840. package/json-schema/data/DatasetMode.json +2 -2
  841. package/json-schema/data/Datasource.json +2 -2
  842. package/json-schema/data/DatasourceCapabilities.json +2 -2
  843. package/json-schema/data/Dimension.json +2 -2
  844. package/json-schema/data/DimensionType.json +2 -2
  845. package/json-schema/data/Document.json +2 -2
  846. package/json-schema/data/DocumentTemplate.json +2 -2
  847. package/json-schema/data/DocumentValidationSchema.json +2 -2
  848. package/json-schema/data/DocumentVersion.json +2 -2
  849. package/json-schema/data/DriverCapabilities.json +2 -2
  850. package/json-schema/data/DriverConfig.json +2 -2
  851. package/json-schema/data/DriverDefinition.json +2 -2
  852. package/json-schema/data/DriverOptions.json +2 -2
  853. package/json-schema/data/DriverType.json +2 -2
  854. package/json-schema/data/ESignatureConfig.json +2 -2
  855. package/json-schema/data/EqualityOperator.json +2 -2
  856. package/json-schema/data/ExternalDataSource.json +2 -2
  857. package/json-schema/data/ExternalFieldMapping.json +2 -2
  858. package/json-schema/data/ExternalLookup.json +2 -2
  859. package/json-schema/data/FeedActor.json +2 -2
  860. package/json-schema/data/FeedFilterMode.json +2 -2
  861. package/json-schema/data/FeedItem.json +2 -2
  862. package/json-schema/data/FeedItemType.json +2 -2
  863. package/json-schema/data/FeedVisibility.json +2 -2
  864. package/json-schema/data/Field.json +3 -3
  865. package/json-schema/data/FieldChangeEntry.json +2 -2
  866. package/json-schema/data/FieldMapping.json +2 -2
  867. package/json-schema/data/FieldNode.json +2 -2
  868. package/json-schema/data/FieldReference.json +2 -2
  869. package/json-schema/data/FieldType.json +2 -2
  870. package/json-schema/data/FileAttachmentConfig.json +2 -2
  871. package/json-schema/data/FilterCondition.json +2 -2
  872. package/json-schema/data/FormatValidation.json +2 -2
  873. package/json-schema/data/FullTextSearch.json +2 -2
  874. package/json-schema/data/HookContext.json +2 -2
  875. package/json-schema/data/HookEvent.json +2 -2
  876. package/json-schema/data/Index.json +2 -2
  877. package/json-schema/data/JSONValidation.json +2 -2
  878. package/json-schema/data/JoinNode.json +3 -3
  879. package/json-schema/data/JoinStrategy.json +2 -2
  880. package/json-schema/data/JoinType.json +2 -2
  881. package/json-schema/data/LocationCoordinates.json +2 -2
  882. package/json-schema/data/Mapping.json +3 -3
  883. package/json-schema/data/Mention.json +2 -2
  884. package/json-schema/data/Metric.json +2 -2
  885. package/json-schema/data/NoSQLDataTypeMapping.json +2 -2
  886. package/json-schema/data/NoSQLDatabaseType.json +2 -2
  887. package/json-schema/data/NoSQLDriverConfig.json +2 -2
  888. package/json-schema/data/NoSQLIndex.json +2 -2
  889. package/json-schema/data/NoSQLIndexType.json +2 -2
  890. package/json-schema/data/NoSQLOperationType.json +2 -2
  891. package/json-schema/data/NoSQLQueryOptions.json +2 -2
  892. package/json-schema/data/NoSQLTransactionOptions.json +2 -2
  893. package/json-schema/data/NotificationChannel.json +2 -2
  894. package/json-schema/data/Object.json +3 -3
  895. package/json-schema/data/ObjectCapabilities.json +2 -2
  896. package/json-schema/data/ObjectExtension.json +3 -3
  897. package/json-schema/data/ObjectOwnershipEnum.json +2 -2
  898. package/json-schema/data/PartitioningConfig.json +2 -2
  899. package/json-schema/data/PoolConfig.json +2 -2
  900. package/json-schema/data/Query.json +3 -3
  901. package/json-schema/data/QueryFilter.json +2 -2
  902. package/json-schema/data/Reaction.json +2 -2
  903. package/json-schema/data/RecordSubscription.json +2 -2
  904. package/json-schema/data/ReplicationConfig.json +2 -2
  905. package/json-schema/data/SQLDialect.json +2 -2
  906. package/json-schema/data/SQLDriverConfig.json +2 -2
  907. package/json-schema/data/SSLConfig.json +2 -2
  908. package/json-schema/data/ScriptValidation.json +2 -2
  909. package/json-schema/data/SearchConfig.json +2 -2
  910. package/json-schema/data/SelectOption.json +2 -2
  911. package/json-schema/data/SetOperator.json +2 -2
  912. package/json-schema/data/ShardingConfig.json +2 -2
  913. package/json-schema/data/SoftDeleteConfig.json +2 -2
  914. package/json-schema/data/SortNode.json +2 -2
  915. package/json-schema/data/SpecialOperator.json +2 -2
  916. package/json-schema/data/StateMachineValidation.json +2 -2
  917. package/json-schema/data/StringOperator.json +2 -2
  918. package/json-schema/data/SubscriptionEventType.json +2 -2
  919. package/json-schema/data/TenancyConfig.json +2 -2
  920. package/json-schema/data/TenantDatabaseLifecycle.json +2 -2
  921. package/json-schema/data/TenantResolverStrategy.json +2 -2
  922. package/json-schema/data/TimeUpdateInterval.json +2 -2
  923. package/json-schema/data/TransformType.json +2 -2
  924. package/json-schema/data/TursoGroup.json +2 -2
  925. package/json-schema/data/TursoMultiTenantConfig.json +2 -2
  926. package/json-schema/data/UniquenessValidation.json +2 -2
  927. package/json-schema/data/ValidationRule.json +2 -2
  928. package/json-schema/data/VectorConfig.json +2 -2
  929. package/json-schema/data/VersioningConfig.json +2 -2
  930. package/json-schema/data/WindowFunction.json +2 -2
  931. package/json-schema/data/WindowFunctionNode.json +2 -2
  932. package/json-schema/data/WindowSpec.json +2 -2
  933. package/json-schema/identity/Account.json +2 -2
  934. package/json-schema/identity/ApiKey.json +2 -2
  935. package/json-schema/identity/Invitation.json +2 -2
  936. package/json-schema/identity/InvitationStatus.json +2 -2
  937. package/json-schema/identity/Member.json +2 -2
  938. package/json-schema/identity/Organization.json +2 -2
  939. package/json-schema/identity/Role.json +2 -2
  940. package/json-schema/identity/SCIMAddress.json +2 -2
  941. package/json-schema/identity/SCIMBulkOperation.json +2 -2
  942. package/json-schema/identity/SCIMBulkRequest.json +2 -2
  943. package/json-schema/identity/SCIMBulkResponse.json +2 -2
  944. package/json-schema/identity/SCIMBulkResponseOperation.json +2 -2
  945. package/json-schema/identity/SCIMEmail.json +2 -2
  946. package/json-schema/identity/SCIMEnterpriseUser.json +2 -2
  947. package/json-schema/identity/SCIMError.json +2 -2
  948. package/json-schema/identity/SCIMGroup.json +2 -2
  949. package/json-schema/identity/SCIMGroupReference.json +2 -2
  950. package/json-schema/identity/SCIMListResponse.json +2 -2
  951. package/json-schema/identity/SCIMMemberReference.json +2 -2
  952. package/json-schema/identity/SCIMMeta.json +2 -2
  953. package/json-schema/identity/SCIMName.json +2 -2
  954. package/json-schema/identity/SCIMPatchOperation.json +2 -2
  955. package/json-schema/identity/SCIMPatchRequest.json +2 -2
  956. package/json-schema/identity/SCIMPhoneNumber.json +2 -2
  957. package/json-schema/identity/SCIMUser.json +2 -2
  958. package/json-schema/identity/Session.json +2 -2
  959. package/json-schema/identity/User.json +2 -2
  960. package/json-schema/identity/VerificationToken.json +2 -2
  961. package/json-schema/integration/AckMode.json +2 -2
  962. package/json-schema/integration/ApiVersionConfig.json +2 -2
  963. package/json-schema/integration/BuildConfig.json +2 -2
  964. package/json-schema/integration/CdcConfig.json +2 -2
  965. package/json-schema/integration/CircuitBreakerConfig.json +2 -2
  966. package/json-schema/integration/ConflictResolution.json +2 -2
  967. package/json-schema/integration/Connector.json +2 -2
  968. package/json-schema/integration/ConnectorAction.json +2 -2
  969. package/json-schema/integration/ConnectorHealth.json +2 -2
  970. package/json-schema/integration/ConnectorStatus.json +2 -2
  971. package/json-schema/integration/ConnectorTrigger.json +2 -2
  972. package/json-schema/integration/ConnectorType.json +2 -2
  973. package/json-schema/integration/ConsumerConfig.json +2 -2
  974. package/json-schema/integration/DataSyncConfig.json +2 -2
  975. package/json-schema/integration/DatabaseConnector.json +2 -2
  976. package/json-schema/integration/DatabasePoolConfig.json +2 -2
  977. package/json-schema/integration/DatabaseProvider.json +2 -2
  978. package/json-schema/integration/DatabaseTable.json +2 -2
  979. package/json-schema/integration/DeliveryGuarantee.json +2 -2
  980. package/json-schema/integration/DeploymentConfig.json +2 -2
  981. package/json-schema/integration/DlqConfig.json +2 -2
  982. package/json-schema/integration/DomainConfig.json +2 -2
  983. package/json-schema/integration/EdgeFunctionConfig.json +2 -2
  984. package/json-schema/integration/EnvironmentVariables.json +2 -2
  985. package/json-schema/integration/ErrorCategory.json +2 -2
  986. package/json-schema/integration/ErrorMappingConfig.json +2 -2
  987. package/json-schema/integration/ErrorMappingRule.json +2 -2
  988. package/json-schema/integration/FieldMapping.json +2 -2
  989. package/json-schema/integration/FileAccessPattern.json +2 -2
  990. package/json-schema/integration/FileFilterConfig.json +2 -2
  991. package/json-schema/integration/FileMetadataConfig.json +2 -2
  992. package/json-schema/integration/FileStorageConnector.json +2 -2
  993. package/json-schema/integration/FileStorageProvider.json +2 -2
  994. package/json-schema/integration/FileVersioningConfig.json +2 -2
  995. package/json-schema/integration/GitHubActionsWorkflow.json +2 -2
  996. package/json-schema/integration/GitHubCommitConfig.json +2 -2
  997. package/json-schema/integration/GitHubConnector.json +2 -2
  998. package/json-schema/integration/GitHubIssueTracking.json +2 -2
  999. package/json-schema/integration/GitHubProvider.json +2 -2
  1000. package/json-schema/integration/GitHubPullRequestConfig.json +2 -2
  1001. package/json-schema/integration/GitHubReleaseConfig.json +2 -2
  1002. package/json-schema/integration/GitHubRepository.json +2 -2
  1003. package/json-schema/integration/GitRepositoryConfig.json +2 -2
  1004. package/json-schema/integration/HealthCheckConfig.json +2 -2
  1005. package/json-schema/integration/MessageFormat.json +2 -2
  1006. package/json-schema/integration/MessageQueueConnector.json +2 -2
  1007. package/json-schema/integration/MessageQueueProvider.json +2 -2
  1008. package/json-schema/integration/MultipartUploadConfig.json +2 -2
  1009. package/json-schema/integration/ProducerConfig.json +2 -2
  1010. package/json-schema/integration/RateLimitConfig.json +2 -2
  1011. package/json-schema/integration/RateLimitStrategy.json +2 -2
  1012. package/json-schema/integration/RetryConfig.json +2 -2
  1013. package/json-schema/integration/RetryStrategy.json +2 -2
  1014. package/json-schema/integration/SaasConnector.json +2 -2
  1015. package/json-schema/integration/SaasObjectType.json +2 -2
  1016. package/json-schema/integration/SaasProvider.json +2 -2
  1017. package/json-schema/integration/SslConfig.json +2 -2
  1018. package/json-schema/integration/StorageBucket.json +2 -2
  1019. package/json-schema/integration/SyncStrategy.json +2 -2
  1020. package/json-schema/integration/TopicQueue.json +2 -2
  1021. package/json-schema/integration/VercelConnector.json +2 -2
  1022. package/json-schema/integration/VercelFramework.json +2 -2
  1023. package/json-schema/integration/VercelMonitoring.json +2 -2
  1024. package/json-schema/integration/VercelProject.json +2 -2
  1025. package/json-schema/integration/VercelProvider.json +2 -2
  1026. package/json-schema/integration/VercelTeam.json +2 -2
  1027. package/json-schema/integration/WebhookConfig.json +2 -2
  1028. package/json-schema/integration/WebhookEvent.json +2 -2
  1029. package/json-schema/integration/WebhookSignatureAlgorithm.json +2 -2
  1030. package/json-schema/kernel/ActivationEvent.json +2 -2
  1031. package/json-schema/kernel/AdvancedPluginLifecycleConfig.json +2 -2
  1032. package/json-schema/kernel/ArtifactChecksum.json +2 -2
  1033. package/json-schema/kernel/ArtifactFileEntry.json +2 -2
  1034. package/json-schema/kernel/ArtifactSignature.json +2 -2
  1035. package/json-schema/kernel/BreakingChange.json +2 -2
  1036. package/json-schema/kernel/CLICommandContribution.json +2 -2
  1037. package/json-schema/kernel/CapabilityConformanceLevel.json +2 -2
  1038. package/json-schema/kernel/CompatibilityLevel.json +2 -2
  1039. package/json-schema/kernel/CompatibilityMatrixEntry.json +2 -2
  1040. package/json-schema/kernel/CustomizationOrigin.json +2 -2
  1041. package/json-schema/kernel/CustomizationPolicy.json +2 -2
  1042. package/json-schema/kernel/DeadLetterQueueEntry.json +2 -2
  1043. package/json-schema/kernel/DependencyConflict.json +2 -2
  1044. package/json-schema/kernel/DependencyGraph.json +2 -2
  1045. package/json-schema/kernel/DependencyGraphNode.json +2 -2
  1046. package/json-schema/kernel/DependencyResolutionResult.json +2 -2
  1047. package/json-schema/kernel/DependencyStatusEnum.json +2 -2
  1048. package/json-schema/kernel/DeprecationNotice.json +2 -2
  1049. package/json-schema/kernel/DevFixtureConfig.json +2 -2
  1050. package/json-schema/kernel/DevPluginConfig.json +2 -2
  1051. package/json-schema/kernel/DevPluginPreset.json +2 -2
  1052. package/json-schema/kernel/DevServiceOverride.json +2 -2
  1053. package/json-schema/kernel/DevToolsConfig.json +2 -2
  1054. package/json-schema/kernel/DisablePackageRequest.json +2 -2
  1055. package/json-schema/kernel/DisablePackageResponse.json +2 -2
  1056. package/json-schema/kernel/DistributedStateConfig.json +2 -2
  1057. package/json-schema/kernel/DynamicLoadRequest.json +2 -2
  1058. package/json-schema/kernel/DynamicLoadingConfig.json +2 -2
  1059. package/json-schema/kernel/DynamicPluginOperation.json +2 -2
  1060. package/json-schema/kernel/DynamicPluginResult.json +2 -2
  1061. package/json-schema/kernel/DynamicUnloadRequest.json +2 -2
  1062. package/json-schema/kernel/EnablePackageRequest.json +2 -2
  1063. package/json-schema/kernel/EnablePackageResponse.json +2 -2
  1064. package/json-schema/kernel/Event.json +2 -2
  1065. package/json-schema/kernel/EventBusConfig.json +2 -2
  1066. package/json-schema/kernel/EventHandler.json +2 -2
  1067. package/json-schema/kernel/EventLogEntry.json +2 -2
  1068. package/json-schema/kernel/EventMessageQueueConfig.json +2 -2
  1069. package/json-schema/kernel/EventMetadata.json +2 -2
  1070. package/json-schema/kernel/EventPersistence.json +2 -2
  1071. package/json-schema/kernel/EventPhase.json +2 -2
  1072. package/json-schema/kernel/EventPriority.json +2 -2
  1073. package/json-schema/kernel/EventQueueConfig.json +2 -2
  1074. package/json-schema/kernel/EventReplayConfig.json +2 -2
  1075. package/json-schema/kernel/EventRoute.json +2 -2
  1076. package/json-schema/kernel/EventSourcingConfig.json +2 -2
  1077. package/json-schema/kernel/EventTypeDefinition.json +2 -2
  1078. package/json-schema/kernel/EventWebhookConfig.json +2 -2
  1079. package/json-schema/kernel/ExecutionContext.json +2 -2
  1080. package/json-schema/kernel/ExtensionPoint.json +2 -2
  1081. package/json-schema/kernel/FeatureFlag.json +2 -2
  1082. package/json-schema/kernel/FeatureStrategy.json +2 -2
  1083. package/json-schema/kernel/FieldChange.json +2 -2
  1084. package/json-schema/kernel/GetPackageRequest.json +2 -2
  1085. package/json-schema/kernel/GetPackageResponse.json +2 -2
  1086. package/json-schema/kernel/GracefulDegradation.json +2 -2
  1087. package/json-schema/kernel/HealthStatus.json +2 -2
  1088. package/json-schema/kernel/HookRegisteredEvent.json +2 -2
  1089. package/json-schema/kernel/HookTriggeredEvent.json +2 -2
  1090. package/json-schema/kernel/HotReloadConfig.json +2 -2
  1091. package/json-schema/kernel/InstallPackageRequest.json +2 -2
  1092. package/json-schema/kernel/InstallPackageResponse.json +2 -2
  1093. package/json-schema/kernel/InstalledPackage.json +2 -2
  1094. package/json-schema/kernel/KernelContext.json +2 -2
  1095. package/json-schema/kernel/KernelEventBase.json +2 -2
  1096. package/json-schema/kernel/KernelReadyEvent.json +2 -2
  1097. package/json-schema/kernel/KernelSecurityPolicy.json +2 -2
  1098. package/json-schema/kernel/KernelSecurityScanResult.json +2 -2
  1099. package/json-schema/kernel/KernelSecurityVulnerability.json +2 -2
  1100. package/json-schema/kernel/KernelShutdownEvent.json +2 -2
  1101. package/json-schema/kernel/ListPackagesRequest.json +2 -2
  1102. package/json-schema/kernel/ListPackagesResponse.json +2 -2
  1103. package/json-schema/kernel/Manifest.json +2 -2
  1104. package/json-schema/kernel/MergeConflict.json +2 -2
  1105. package/json-schema/kernel/MergeResult.json +2 -2
  1106. package/json-schema/kernel/MergeStrategyConfig.json +2 -2
  1107. package/json-schema/kernel/MetadataBulkRegisterRequest.json +2 -2
  1108. package/json-schema/kernel/MetadataBulkResult.json +2 -2
  1109. package/json-schema/kernel/MetadataCategoryEnum.json +2 -2
  1110. package/json-schema/kernel/MetadataChangeType.json +2 -2
  1111. package/json-schema/kernel/MetadataCollectionInfo.json +2 -2
  1112. package/json-schema/kernel/MetadataDependency.json +2 -2
  1113. package/json-schema/kernel/MetadataDiffItem.json +2 -2
  1114. package/json-schema/kernel/MetadataEvent.json +2 -2
  1115. package/json-schema/kernel/MetadataExportOptions.json +2 -2
  1116. package/json-schema/kernel/MetadataFallbackStrategy.json +2 -2
  1117. package/json-schema/kernel/MetadataFormat.json +2 -2
  1118. package/json-schema/kernel/MetadataImportOptions.json +2 -2
  1119. package/json-schema/kernel/MetadataLoadOptions.json +2 -2
  1120. package/json-schema/kernel/MetadataLoadResult.json +2 -2
  1121. package/json-schema/kernel/MetadataLoaderContract.json +2 -2
  1122. package/json-schema/kernel/MetadataManagerConfig.json +2 -2
  1123. package/json-schema/kernel/MetadataOverlay.json +2 -2
  1124. package/json-schema/kernel/MetadataPluginConfig.json +2 -2
  1125. package/json-schema/kernel/MetadataPluginManifest.json +2 -2
  1126. package/json-schema/kernel/MetadataQuery.json +2 -2
  1127. package/json-schema/kernel/MetadataQueryResult.json +2 -2
  1128. package/json-schema/kernel/MetadataSaveOptions.json +2 -2
  1129. package/json-schema/kernel/MetadataSaveResult.json +2 -2
  1130. package/json-schema/kernel/MetadataStats.json +2 -2
  1131. package/json-schema/kernel/MetadataType.json +2 -2
  1132. package/json-schema/kernel/MetadataTypeRegistryEntry.json +2 -2
  1133. package/json-schema/kernel/MetadataValidationResult.json +2 -2
  1134. package/json-schema/kernel/MetadataWatchEvent.json +2 -2
  1135. package/json-schema/kernel/MultiVersionSupport.json +2 -2
  1136. package/json-schema/kernel/NamespaceConflictError.json +2 -2
  1137. package/json-schema/kernel/NamespaceRegistryEntry.json +2 -2
  1138. package/json-schema/kernel/OclifPluginConfig.json +2 -2
  1139. package/json-schema/kernel/OpsDomainModule.json +2 -2
  1140. package/json-schema/kernel/OpsFilePath.json +2 -2
  1141. package/json-schema/kernel/OpsPluginStructure.json +2 -2
  1142. package/json-schema/kernel/PackageArtifact.json +2 -2
  1143. package/json-schema/kernel/PackageDependency.json +2 -2
  1144. package/json-schema/kernel/PackageDependencyConflict.json +2 -2
  1145. package/json-schema/kernel/PackageDependencyResolutionResult.json +2 -2
  1146. package/json-schema/kernel/PackageStatusEnum.json +2 -2
  1147. package/json-schema/kernel/Permission.json +2 -2
  1148. package/json-schema/kernel/PermissionAction.json +2 -2
  1149. package/json-schema/kernel/PermissionScope.json +2 -2
  1150. package/json-schema/kernel/PermissionSet.json +2 -2
  1151. package/json-schema/kernel/PluginBuildOptions.json +2 -2
  1152. package/json-schema/kernel/PluginBuildResult.json +2 -2
  1153. package/json-schema/kernel/PluginCaching.json +2 -2
  1154. package/json-schema/kernel/PluginCapability.json +2 -2
  1155. package/json-schema/kernel/PluginCapabilityManifest.json +2 -2
  1156. package/json-schema/kernel/PluginCodeSplitting.json +2 -2
  1157. package/json-schema/kernel/PluginCompatibilityMatrix.json +2 -2
  1158. package/json-schema/kernel/PluginDependency.json +2 -2
  1159. package/json-schema/kernel/PluginDependencyResolution.json +2 -2
  1160. package/json-schema/kernel/PluginDependencyResolutionResult.json +2 -2
  1161. package/json-schema/kernel/PluginDiscoveryConfig.json +2 -2
  1162. package/json-schema/kernel/PluginDiscoverySource.json +2 -2
  1163. package/json-schema/kernel/PluginDynamicImport.json +2 -2
  1164. package/json-schema/kernel/PluginErrorEvent.json +2 -2
  1165. package/json-schema/kernel/PluginEventBase.json +2 -2
  1166. package/json-schema/kernel/PluginHealthCheck.json +2 -2
  1167. package/json-schema/kernel/PluginHealthReport.json +2 -2
  1168. package/json-schema/kernel/PluginHealthStatus.json +2 -2
  1169. package/json-schema/kernel/PluginHotReload.json +2 -2
  1170. package/json-schema/kernel/PluginInitialization.json +2 -2
  1171. package/json-schema/kernel/PluginInstallConfig.json +2 -2
  1172. package/json-schema/kernel/PluginInterface.json +2 -2
  1173. package/json-schema/kernel/PluginLifecycleEventType.json +2 -2
  1174. package/json-schema/kernel/PluginLifecyclePhaseEvent.json +2 -2
  1175. package/json-schema/kernel/PluginLoadingConfig.json +2 -2
  1176. package/json-schema/kernel/PluginLoadingEvent.json +2 -2
  1177. package/json-schema/kernel/PluginLoadingState.json +2 -2
  1178. package/json-schema/kernel/PluginLoadingStrategy.json +2 -2
  1179. package/json-schema/kernel/PluginMetadata.json +2 -2
  1180. package/json-schema/kernel/PluginPerformanceMonitoring.json +2 -2
  1181. package/json-schema/kernel/PluginPreloadConfig.json +2 -2
  1182. package/json-schema/kernel/PluginProvenance.json +2 -2
  1183. package/json-schema/kernel/PluginPublishOptions.json +2 -2
  1184. package/json-schema/kernel/PluginPublishResult.json +2 -2
  1185. package/json-schema/kernel/PluginQualityMetrics.json +2 -2
  1186. package/json-schema/kernel/PluginRegisteredEvent.json +2 -2
  1187. package/json-schema/kernel/PluginRegistryEntry.json +2 -2
  1188. package/json-schema/kernel/PluginSandboxing.json +2 -2
  1189. package/json-schema/kernel/PluginSearchFilters.json +2 -2
  1190. package/json-schema/kernel/PluginSecurityManifest.json +2 -2
  1191. package/json-schema/kernel/PluginSource.json +2 -2
  1192. package/json-schema/kernel/PluginStartupResult.json +2 -2
  1193. package/json-schema/kernel/PluginStateSnapshot.json +2 -2
  1194. package/json-schema/kernel/PluginStatistics.json +2 -2
  1195. package/json-schema/kernel/PluginTrustLevel.json +2 -2
  1196. package/json-schema/kernel/PluginTrustScore.json +2 -2
  1197. package/json-schema/kernel/PluginUpdateStrategy.json +2 -2
  1198. package/json-schema/kernel/PluginValidateOptions.json +2 -2
  1199. package/json-schema/kernel/PluginValidateResult.json +2 -2
  1200. package/json-schema/kernel/PluginVendor.json +2 -2
  1201. package/json-schema/kernel/PluginVersionMetadata.json +2 -2
  1202. package/json-schema/kernel/PreviewModeConfig.json +2 -2
  1203. package/json-schema/kernel/ProtocolFeature.json +2 -2
  1204. package/json-schema/kernel/ProtocolReference.json +2 -2
  1205. package/json-schema/kernel/ProtocolVersion.json +2 -2
  1206. package/json-schema/kernel/RealTimeNotificationConfig.json +2 -2
  1207. package/json-schema/kernel/RequiredAction.json +2 -2
  1208. package/json-schema/kernel/ResolvedDependency.json +2 -2
  1209. package/json-schema/kernel/ResourceType.json +2 -2
  1210. package/json-schema/kernel/RollbackPackageRequest.json +2 -2
  1211. package/json-schema/kernel/RollbackPackageResponse.json +2 -2
  1212. package/json-schema/kernel/RuntimeConfig.json +2 -2
  1213. package/json-schema/kernel/RuntimeMode.json +2 -2
  1214. package/json-schema/kernel/SBOM.json +2 -2
  1215. package/json-schema/kernel/SBOMEntry.json +2 -2
  1216. package/json-schema/kernel/SandboxConfig.json +2 -2
  1217. package/json-schema/kernel/ScopeConfig.json +2 -2
  1218. package/json-schema/kernel/ScopeInfo.json +2 -2
  1219. package/json-schema/kernel/SecurityPolicy.json +2 -2
  1220. package/json-schema/kernel/SecurityScanResult.json +2 -2
  1221. package/json-schema/kernel/SecurityVulnerability.json +2 -2
  1222. package/json-schema/kernel/SemanticVersion.json +2 -2
  1223. package/json-schema/kernel/ServiceFactoryRegistration.json +2 -2
  1224. package/json-schema/kernel/ServiceMetadata.json +2 -2
  1225. package/json-schema/kernel/ServiceRegisteredEvent.json +2 -2
  1226. package/json-schema/kernel/ServiceRegistryConfig.json +2 -2
  1227. package/json-schema/kernel/ServiceScopeType.json +2 -2
  1228. package/json-schema/kernel/ServiceUnregisteredEvent.json +2 -2
  1229. package/json-schema/kernel/StartupOptions.json +2 -2
  1230. package/json-schema/kernel/StartupOrchestrationResult.json +2 -2
  1231. package/json-schema/kernel/TenantRuntimeContext.json +2 -2
  1232. package/json-schema/kernel/UninstallPackageRequest.json +2 -2
  1233. package/json-schema/kernel/UninstallPackageResponse.json +2 -2
  1234. package/json-schema/kernel/UpgradeContext.json +2 -2
  1235. package/json-schema/kernel/UpgradeImpactLevel.json +2 -2
  1236. package/json-schema/kernel/UpgradePackageRequest.json +2 -2
  1237. package/json-schema/kernel/UpgradePackageResponse.json +2 -2
  1238. package/json-schema/kernel/UpgradePhase.json +2 -2
  1239. package/json-schema/kernel/UpgradePlan.json +2 -2
  1240. package/json-schema/kernel/UpgradeSnapshot.json +2 -2
  1241. package/json-schema/kernel/ValidationError.json +2 -2
  1242. package/json-schema/kernel/ValidationFinding.json +2 -2
  1243. package/json-schema/kernel/ValidationResult.json +2 -2
  1244. package/json-schema/kernel/ValidationSeverityEnum.json +2 -2
  1245. package/json-schema/kernel/ValidationWarning.json +2 -2
  1246. package/json-schema/kernel/VersionConstraint.json +2 -2
  1247. package/json-schema/kernel/VulnerabilitySeverity.json +2 -2
  1248. package/json-schema/objectstack.json +3590 -3508
  1249. package/json-schema/openapi.json +1 -1
  1250. package/json-schema/qa/TestAction.json +2 -2
  1251. package/json-schema/qa/TestActionType.json +2 -2
  1252. package/json-schema/qa/TestAssertion.json +2 -2
  1253. package/json-schema/qa/TestAssertionType.json +2 -2
  1254. package/json-schema/qa/TestContext.json +2 -2
  1255. package/json-schema/qa/TestScenario.json +2 -2
  1256. package/json-schema/qa/TestStep.json +2 -2
  1257. package/json-schema/qa/TestSuite.json +2 -2
  1258. package/json-schema/security/AuditPolicy.json +2 -2
  1259. package/json-schema/security/CriteriaSharingRule.json +2 -2
  1260. package/json-schema/security/FieldPermission.json +2 -2
  1261. package/json-schema/security/NetworkPolicy.json +2 -2
  1262. package/json-schema/security/OWDModel.json +2 -2
  1263. package/json-schema/security/ObjectPermission.json +2 -2
  1264. package/json-schema/security/OwnerSharingRule.json +2 -2
  1265. package/json-schema/security/PasswordPolicy.json +2 -2
  1266. package/json-schema/security/PermissionSet.json +2 -2
  1267. package/json-schema/security/Policy.json +2 -2
  1268. package/json-schema/security/RLSAuditConfig.json +2 -2
  1269. package/json-schema/security/RLSAuditEvent.json +2 -2
  1270. package/json-schema/security/RLSConfig.json +2 -2
  1271. package/json-schema/security/RLSEvaluationResult.json +2 -2
  1272. package/json-schema/security/RLSOperation.json +2 -2
  1273. package/json-schema/security/RLSUserContext.json +2 -2
  1274. package/json-schema/security/RowLevelSecurityPolicy.json +2 -2
  1275. package/json-schema/security/SessionPolicy.json +2 -2
  1276. package/json-schema/security/ShareRecipientType.json +2 -2
  1277. package/json-schema/security/SharingLevel.json +2 -2
  1278. package/json-schema/security/SharingRule.json +2 -2
  1279. package/json-schema/security/SharingRuleType.json +2 -2
  1280. package/json-schema/security/Territory.json +2 -2
  1281. package/json-schema/security/TerritoryModel.json +2 -2
  1282. package/json-schema/security/TerritoryType.json +2 -2
  1283. package/json-schema/shared/AggregationFunctionEnum.json +2 -2
  1284. package/json-schema/shared/AppName.json +2 -2
  1285. package/json-schema/shared/BaseMetadataRecord.json +2 -2
  1286. package/json-schema/shared/CacheStrategyEnum.json +2 -2
  1287. package/json-schema/shared/CorsConfig.json +2 -2
  1288. package/json-schema/shared/EventName.json +2 -2
  1289. package/json-schema/shared/FieldMapping.json +2 -2
  1290. package/json-schema/shared/FieldName.json +2 -2
  1291. package/json-schema/shared/FlowName.json +2 -2
  1292. package/json-schema/shared/HttpMethod.json +2 -2
  1293. package/json-schema/shared/HttpRequest.json +2 -2
  1294. package/json-schema/shared/IsolationLevelEnum.json +2 -2
  1295. package/json-schema/shared/MetadataFormat.json +2 -2
  1296. package/json-schema/shared/MutationEventEnum.json +2 -2
  1297. package/json-schema/shared/ObjectName.json +2 -2
  1298. package/json-schema/shared/RateLimitConfig.json +2 -2
  1299. package/json-schema/shared/RoleName.json +2 -2
  1300. package/json-schema/shared/SnakeCaseIdentifier.json +2 -2
  1301. package/json-schema/shared/SortDirectionEnum.json +2 -2
  1302. package/json-schema/shared/SortItem.json +2 -2
  1303. package/json-schema/shared/StaticMount.json +2 -2
  1304. package/json-schema/shared/SystemIdentifier.json +2 -2
  1305. package/json-schema/shared/TransformType.json +2 -2
  1306. package/json-schema/shared/ViewName.json +2 -2
  1307. package/json-schema/studio/ActionContribution.json +2 -2
  1308. package/json-schema/studio/ActionLocation.json +2 -2
  1309. package/json-schema/studio/ActivationEvent.json +2 -2
  1310. package/json-schema/studio/CanvasSnapSettings.json +2 -2
  1311. package/json-schema/studio/CanvasZoomSettings.json +2 -2
  1312. package/json-schema/studio/CommandContribution.json +2 -2
  1313. package/json-schema/studio/ERDiagramConfig.json +2 -2
  1314. package/json-schema/studio/ERLayoutAlgorithm.json +2 -2
  1315. package/json-schema/studio/ERNodeDisplay.json +2 -2
  1316. package/json-schema/studio/ElementPaletteItem.json +2 -2
  1317. package/json-schema/studio/FieldEditorConfig.json +2 -2
  1318. package/json-schema/studio/FieldGroup.json +2 -2
  1319. package/json-schema/studio/FieldPropertySection.json +2 -2
  1320. package/json-schema/studio/FlowBuilderConfig.json +2 -2
  1321. package/json-schema/studio/FlowCanvasEdge.json +2 -2
  1322. package/json-schema/studio/FlowCanvasEdgeStyle.json +2 -2
  1323. package/json-schema/studio/FlowCanvasNode.json +2 -2
  1324. package/json-schema/studio/FlowLayoutAlgorithm.json +2 -2
  1325. package/json-schema/studio/FlowLayoutDirection.json +2 -2
  1326. package/json-schema/studio/FlowNodeRenderDescriptor.json +2 -2
  1327. package/json-schema/studio/FlowNodeShape.json +2 -2
  1328. package/json-schema/studio/InterfaceBuilderConfig.json +2 -2
  1329. package/json-schema/studio/MetadataIconContribution.json +2 -2
  1330. package/json-schema/studio/MetadataViewerContribution.json +2 -2
  1331. package/json-schema/studio/ObjectDesignerConfig.json +2 -2
  1332. package/json-schema/studio/ObjectDesignerDefaultView.json +2 -2
  1333. package/json-schema/studio/ObjectFilter.json +2 -2
  1334. package/json-schema/studio/ObjectListDisplayMode.json +2 -2
  1335. package/json-schema/studio/ObjectManagerConfig.json +2 -2
  1336. package/json-schema/studio/ObjectPreviewConfig.json +2 -2
  1337. package/json-schema/studio/ObjectPreviewTab.json +2 -2
  1338. package/json-schema/studio/ObjectSortField.json +2 -2
  1339. package/json-schema/studio/PageBuilderConfig.json +2 -2
  1340. package/json-schema/studio/PanelContribution.json +2 -2
  1341. package/json-schema/studio/PanelLocation.json +2 -2
  1342. package/json-schema/studio/RelationshipDisplay.json +2 -2
  1343. package/json-schema/studio/RelationshipMapperConfig.json +2 -2
  1344. package/json-schema/studio/SidebarGroupContribution.json +2 -2
  1345. package/json-schema/studio/StudioPluginContributions.json +2 -2
  1346. package/json-schema/studio/StudioPluginManifest.json +2 -2
  1347. package/json-schema/studio/ViewMode.json +2 -2
  1348. package/json-schema/system/AccessControlConfig.json +2 -2
  1349. package/json-schema/system/AddFieldOperation.json +3 -3
  1350. package/json-schema/system/AnalyzerConfig.json +2 -2
  1351. package/json-schema/system/AppCompatibilityCheck.json +2 -2
  1352. package/json-schema/system/AppInstallRequest.json +2 -2
  1353. package/json-schema/system/AppInstallResult.json +2 -2
  1354. package/json-schema/system/AppManifest.json +2 -2
  1355. package/json-schema/system/AuditConfig.json +2 -2
  1356. package/json-schema/system/AuditEvent.json +2 -2
  1357. package/json-schema/system/AuditEventActor.json +2 -2
  1358. package/json-schema/system/AuditEventChange.json +2 -2
  1359. package/json-schema/system/AuditEventFilter.json +2 -2
  1360. package/json-schema/system/AuditEventSeverity.json +2 -2
  1361. package/json-schema/system/AuditEventTarget.json +2 -2
  1362. package/json-schema/system/AuditEventType.json +2 -2
  1363. package/json-schema/system/AuditFinding.json +2 -2
  1364. package/json-schema/system/AuditFindingSeverity.json +2 -2
  1365. package/json-schema/system/AuditFindingStatus.json +2 -2
  1366. package/json-schema/system/AuditLogConfig.json +2 -2
  1367. package/json-schema/system/AuditRetentionPolicy.json +2 -2
  1368. package/json-schema/system/AuditSchedule.json +2 -2
  1369. package/json-schema/system/AuditStorageConfig.json +2 -2
  1370. package/json-schema/system/AuthConfig.json +2 -2
  1371. package/json-schema/system/AuthPluginConfig.json +2 -2
  1372. package/json-schema/system/AuthProviderConfig.json +2 -2
  1373. package/json-schema/system/AwarenessEvent.json +2 -2
  1374. package/json-schema/system/AwarenessSession.json +2 -2
  1375. package/json-schema/system/AwarenessUpdate.json +2 -2
  1376. package/json-schema/system/AwarenessUserState.json +2 -2
  1377. package/json-schema/system/BackupConfig.json +2 -2
  1378. package/json-schema/system/BackupRetention.json +2 -2
  1379. package/json-schema/system/BackupStrategy.json +2 -2
  1380. package/json-schema/system/BatchProgress.json +2 -2
  1381. package/json-schema/system/BucketConfig.json +2 -2
  1382. package/json-schema/system/CRDTMergeResult.json +2 -2
  1383. package/json-schema/system/CRDTState.json +2 -2
  1384. package/json-schema/system/CRDTType.json +2 -2
  1385. package/json-schema/system/CacheAvalanchePrevention.json +2 -2
  1386. package/json-schema/system/CacheConfig.json +2 -2
  1387. package/json-schema/system/CacheConsistency.json +2 -2
  1388. package/json-schema/system/CacheInvalidation.json +2 -2
  1389. package/json-schema/system/CacheStrategy.json +2 -2
  1390. package/json-schema/system/CacheTier.json +2 -2
  1391. package/json-schema/system/CacheWarmup.json +2 -2
  1392. package/json-schema/system/ChangeImpact.json +2 -2
  1393. package/json-schema/system/ChangePriority.json +2 -2
  1394. package/json-schema/system/ChangeRequest.json +2 -2
  1395. package/json-schema/system/ChangeSchema.json +2 -2
  1396. package/json-schema/system/ChangeSet.json +6 -6
  1397. package/json-schema/system/ChangeStatus.json +2 -2
  1398. package/json-schema/system/ChangeType.json +2 -2
  1399. package/json-schema/system/CollaborationMode.json +2 -2
  1400. package/json-schema/system/CollaborationSession.json +2 -2
  1401. package/json-schema/system/CollaborationSessionConfig.json +2 -2
  1402. package/json-schema/system/CollaborativeCursor.json +2 -2
  1403. package/json-schema/system/ComplianceAuditRequirement.json +2 -2
  1404. package/json-schema/system/ComplianceConfig.json +2 -2
  1405. package/json-schema/system/ComplianceEncryptionRequirement.json +2 -2
  1406. package/json-schema/system/ComplianceFramework.json +2 -2
  1407. package/json-schema/system/ConsoleDestinationConfig.json +2 -2
  1408. package/json-schema/system/ConsumerConfig.json +2 -2
  1409. package/json-schema/system/CoreServiceName.json +2 -2
  1410. package/json-schema/system/CounterOperation.json +2 -2
  1411. package/json-schema/system/CreateObjectOperation.json +3 -3
  1412. package/json-schema/system/CronSchedule.json +2 -2
  1413. package/json-schema/system/CursorColorPreset.json +2 -2
  1414. package/json-schema/system/CursorSelection.json +2 -2
  1415. package/json-schema/system/CursorStyle.json +2 -2
  1416. package/json-schema/system/CursorUpdate.json +2 -2
  1417. package/json-schema/system/DataClassification.json +2 -2
  1418. package/json-schema/system/DataClassificationPolicy.json +2 -2
  1419. package/json-schema/system/DatabaseLevelIsolationStrategy.json +2 -2
  1420. package/json-schema/system/DatabaseProvider.json +2 -2
  1421. package/json-schema/system/DeadLetterQueue.json +2 -2
  1422. package/json-schema/system/DeleteObjectOperation.json +2 -2
  1423. package/json-schema/system/DeployBundle.json +2 -2
  1424. package/json-schema/system/DeployDiff.json +2 -2
  1425. package/json-schema/system/DeployManifest.json +2 -2
  1426. package/json-schema/system/DeployStatusEnum.json +2 -2
  1427. package/json-schema/system/DeployValidationIssue.json +2 -2
  1428. package/json-schema/system/DeployValidationResult.json +2 -2
  1429. package/json-schema/system/DisasterRecoveryPlan.json +2 -2
  1430. package/json-schema/system/DistributedCacheConfig.json +2 -2
  1431. package/json-schema/system/EmailTemplate.json +2 -2
  1432. package/json-schema/system/EncryptionAlgorithm.json +2 -2
  1433. package/json-schema/system/EncryptionConfig.json +2 -2
  1434. package/json-schema/system/ExecuteSqlOperation.json +2 -2
  1435. package/json-schema/system/ExtendedLogLevel.json +2 -2
  1436. package/json-schema/system/ExternalServiceDestinationConfig.json +2 -2
  1437. package/json-schema/system/FacetConfig.json +2 -2
  1438. package/json-schema/system/FailoverConfig.json +2 -2
  1439. package/json-schema/system/FailoverMode.json +2 -2
  1440. package/json-schema/system/Feature.json +2 -2
  1441. package/json-schema/system/FieldEncryption.json +2 -2
  1442. package/json-schema/system/FieldTranslation.json +2 -2
  1443. package/json-schema/system/FileDestinationConfig.json +2 -2
  1444. package/json-schema/system/FileMetadata.json +2 -2
  1445. package/json-schema/system/GCounter.json +2 -2
  1446. package/json-schema/system/GDPRConfig.json +2 -2
  1447. package/json-schema/system/HIPAAConfig.json +2 -2
  1448. package/json-schema/system/HistogramBucketConfig.json +2 -2
  1449. package/json-schema/system/HttpDestinationConfig.json +2 -2
  1450. package/json-schema/system/HttpServerConfig.json +2 -2
  1451. package/json-schema/system/InAppNotification.json +2 -2
  1452. package/json-schema/system/Incident.json +2 -2
  1453. package/json-schema/system/IncidentCategory.json +2 -2
  1454. package/json-schema/system/IncidentNotificationMatrix.json +2 -2
  1455. package/json-schema/system/IncidentNotificationRule.json +2 -2
  1456. package/json-schema/system/IncidentResponsePhase.json +2 -2
  1457. package/json-schema/system/IncidentResponsePolicy.json +2 -2
  1458. package/json-schema/system/IncidentSeverity.json +2 -2
  1459. package/json-schema/system/IncidentStatus.json +2 -2
  1460. package/json-schema/system/IntervalSchedule.json +2 -2
  1461. package/json-schema/system/Job.json +2 -2
  1462. package/json-schema/system/JobExecution.json +2 -2
  1463. package/json-schema/system/JobExecutionStatus.json +2 -2
  1464. package/json-schema/system/KernelServiceMap.json +2 -2
  1465. package/json-schema/system/KeyManagementProvider.json +2 -2
  1466. package/json-schema/system/KeyRotationPolicy.json +2 -2
  1467. package/json-schema/system/LWWRegister.json +2 -2
  1468. package/json-schema/system/LevelIsolationStrategySchema.json +2 -2
  1469. package/json-schema/system/License.json +2 -2
  1470. package/json-schema/system/LicenseMetricType.json +2 -2
  1471. package/json-schema/system/LifecycleAction.json +2 -2
  1472. package/json-schema/system/LifecyclePolicyConfig.json +2 -2
  1473. package/json-schema/system/LifecyclePolicyRule.json +2 -2
  1474. package/json-schema/system/Locale.json +2 -2
  1475. package/json-schema/system/LogDestination.json +2 -2
  1476. package/json-schema/system/LogDestinationType.json +2 -2
  1477. package/json-schema/system/LogEnrichmentConfig.json +2 -2
  1478. package/json-schema/system/LogEntry.json +2 -2
  1479. package/json-schema/system/LogFormat.json +2 -2
  1480. package/json-schema/system/LogLevel.json +2 -2
  1481. package/json-schema/system/LoggerConfig.json +2 -2
  1482. package/json-schema/system/LoggingConfig.json +2 -2
  1483. package/json-schema/system/MaskingConfig.json +2 -2
  1484. package/json-schema/system/MaskingRule.json +2 -2
  1485. package/json-schema/system/MaskingStrategy.json +2 -2
  1486. package/json-schema/system/MaskingVisibilityRule.json +2 -2
  1487. package/json-schema/system/MessageQueueConfig.json +2 -2
  1488. package/json-schema/system/MessageQueueProvider.json +2 -2
  1489. package/json-schema/system/MetadataCollectionInfo.json +2 -2
  1490. package/json-schema/system/MetadataExportOptions.json +2 -2
  1491. package/json-schema/system/MetadataFallbackStrategy.json +2 -2
  1492. package/json-schema/system/MetadataFormat.json +2 -2
  1493. package/json-schema/system/MetadataImportOptions.json +2 -2
  1494. package/json-schema/system/MetadataLoadOptions.json +2 -2
  1495. package/json-schema/system/MetadataLoadResult.json +2 -2
  1496. package/json-schema/system/MetadataLoaderContract.json +2 -2
  1497. package/json-schema/system/MetadataManagerConfig.json +2 -2
  1498. package/json-schema/system/MetadataRecord.json +15 -2
  1499. package/json-schema/system/MetadataSaveOptions.json +2 -2
  1500. package/json-schema/system/MetadataSaveResult.json +2 -2
  1501. package/json-schema/system/MetadataScope.json +2 -2
  1502. package/json-schema/system/MetadataSource.json +2 -2
  1503. package/json-schema/system/MetadataState.json +2 -2
  1504. package/json-schema/system/MetadataStats.json +2 -2
  1505. package/json-schema/system/MetadataWatchEvent.json +2 -2
  1506. package/json-schema/system/MetricAggregationConfig.json +2 -2
  1507. package/json-schema/system/MetricAggregationType.json +2 -2
  1508. package/json-schema/system/MetricDataPoint.json +2 -2
  1509. package/json-schema/system/MetricDefinition.json +2 -2
  1510. package/json-schema/system/MetricExportConfig.json +2 -2
  1511. package/json-schema/system/MetricLabels.json +2 -2
  1512. package/json-schema/system/MetricType.json +2 -2
  1513. package/json-schema/system/MetricUnit.json +2 -2
  1514. package/json-schema/system/MetricsConfig.json +2 -2
  1515. package/json-schema/system/MiddlewareConfig.json +2 -2
  1516. package/json-schema/system/MiddlewareType.json +2 -2
  1517. package/json-schema/system/MigrationDependency.json +2 -2
  1518. package/json-schema/system/MigrationOperation.json +4 -4
  1519. package/json-schema/system/MigrationPlan.json +2 -2
  1520. package/json-schema/system/MigrationStatement.json +2 -2
  1521. package/json-schema/system/ModifyFieldOperation.json +2 -2
  1522. package/json-schema/system/MultipartUploadConfig.json +2 -2
  1523. package/json-schema/system/MutualTLSConfig.json +2 -2
  1524. package/json-schema/system/NotificationChannel.json +2 -2
  1525. package/json-schema/system/NotificationConfig.json +2 -2
  1526. package/json-schema/system/ORSet.json +2 -2
  1527. package/json-schema/system/ORSetElement.json +2 -2
  1528. package/json-schema/system/OTComponent.json +2 -2
  1529. package/json-schema/system/OTOperation.json +2 -2
  1530. package/json-schema/system/OTOperationType.json +2 -2
  1531. package/json-schema/system/OTTransformResult.json +2 -2
  1532. package/json-schema/system/ObjectMetadata.json +2 -2
  1533. package/json-schema/system/ObjectStorageConfig.json +2 -2
  1534. package/json-schema/system/ObjectTranslationData.json +2 -2
  1535. package/json-schema/system/OnceSchedule.json +2 -2
  1536. package/json-schema/system/OpenTelemetryCompatibility.json +2 -2
  1537. package/json-schema/system/OtelExporterType.json +2 -2
  1538. package/json-schema/system/PCIDSSConfig.json +2 -2
  1539. package/json-schema/system/PNCounter.json +2 -2
  1540. package/json-schema/system/PackagePublishResult.json +69 -0
  1541. package/json-schema/system/Plan.json +2 -2
  1542. package/json-schema/system/PresignedUrlConfig.json +2 -2
  1543. package/json-schema/system/ProvisioningStep.json +2 -2
  1544. package/json-schema/system/PushNotification.json +2 -2
  1545. package/json-schema/system/QueueConfig.json +2 -2
  1546. package/json-schema/system/QuotaEnforcementResult.json +2 -2
  1547. package/json-schema/system/RPO.json +2 -2
  1548. package/json-schema/system/RTO.json +2 -2
  1549. package/json-schema/system/RegistryConfig.json +2 -2
  1550. package/json-schema/system/RegistrySyncPolicy.json +2 -2
  1551. package/json-schema/system/RegistryUpstream.json +2 -2
  1552. package/json-schema/system/RemoveFieldOperation.json +2 -2
  1553. package/json-schema/system/RenameObjectOperation.json +2 -2
  1554. package/json-schema/system/RetryPolicy.json +2 -2
  1555. package/json-schema/system/RollbackPlan.json +2 -2
  1556. package/json-schema/system/RouteHandlerMetadata.json +2 -2
  1557. package/json-schema/system/RowLevelIsolationStrategy.json +2 -2
  1558. package/json-schema/system/SMSTemplate.json +2 -2
  1559. package/json-schema/system/SamplingDecision.json +2 -2
  1560. package/json-schema/system/SamplingStrategyType.json +2 -2
  1561. package/json-schema/system/Schedule.json +2 -2
  1562. package/json-schema/system/SearchConfig.json +2 -2
  1563. package/json-schema/system/SearchIndexConfig.json +2 -2
  1564. package/json-schema/system/SearchProvider.json +2 -2
  1565. package/json-schema/system/SecurityContextConfig.json +2 -2
  1566. package/json-schema/system/SecurityEventCorrelation.json +2 -2
  1567. package/json-schema/system/ServerCapabilities.json +2 -2
  1568. package/json-schema/system/ServerEvent.json +2 -2
  1569. package/json-schema/system/ServerEventType.json +2 -2
  1570. package/json-schema/system/ServerStatus.json +2 -2
  1571. package/json-schema/system/ServiceConfig.json +2 -2
  1572. package/json-schema/system/ServiceCriticality.json +2 -2
  1573. package/json-schema/system/ServiceLevelIndicator.json +2 -2
  1574. package/json-schema/system/ServiceLevelObjective.json +2 -2
  1575. package/json-schema/system/ServiceStatus.json +2 -2
  1576. package/json-schema/system/Span.json +2 -2
  1577. package/json-schema/system/SpanAttributeValue.json +2 -2
  1578. package/json-schema/system/SpanAttributes.json +2 -2
  1579. package/json-schema/system/SpanEvent.json +2 -2
  1580. package/json-schema/system/SpanKind.json +2 -2
  1581. package/json-schema/system/SpanLink.json +2 -2
  1582. package/json-schema/system/SpanStatus.json +2 -2
  1583. package/json-schema/system/StorageAcl.json +2 -2
  1584. package/json-schema/system/StorageClass.json +2 -2
  1585. package/json-schema/system/StorageConnection.json +2 -2
  1586. package/json-schema/system/StorageProvider.json +2 -2
  1587. package/json-schema/system/StorageScope.json +2 -2
  1588. package/json-schema/system/StructuredLogEntry.json +2 -2
  1589. package/json-schema/system/SupplierAssessmentStatus.json +2 -2
  1590. package/json-schema/system/SupplierRiskLevel.json +2 -2
  1591. package/json-schema/system/SupplierSecurityAssessment.json +2 -2
  1592. package/json-schema/system/SupplierSecurityPolicy.json +2 -2
  1593. package/json-schema/system/SupplierSecurityRequirement.json +2 -2
  1594. package/json-schema/system/SuspiciousActivityRule.json +2 -2
  1595. package/json-schema/system/Task.json +2 -2
  1596. package/json-schema/system/TaskExecutionResult.json +2 -2
  1597. package/json-schema/system/TaskPriority.json +2 -2
  1598. package/json-schema/system/TaskRetryPolicy.json +2 -2
  1599. package/json-schema/system/TaskStatus.json +2 -2
  1600. package/json-schema/system/Tenant.json +2 -2
  1601. package/json-schema/system/TenantConnectionConfig.json +2 -2
  1602. package/json-schema/system/TenantIsolationConfig.json +2 -2
  1603. package/json-schema/system/TenantIsolationLevel.json +2 -2
  1604. package/json-schema/system/TenantPlan.json +2 -2
  1605. package/json-schema/system/TenantProvisioningRequest.json +2 -2
  1606. package/json-schema/system/TenantProvisioningResult.json +2 -2
  1607. package/json-schema/system/TenantProvisioningStatusEnum.json +2 -2
  1608. package/json-schema/system/TenantQuota.json +2 -2
  1609. package/json-schema/system/TenantRegion.json +2 -2
  1610. package/json-schema/system/TenantSecurityPolicy.json +2 -2
  1611. package/json-schema/system/TenantUsage.json +2 -2
  1612. package/json-schema/system/TextCRDTOperation.json +2 -2
  1613. package/json-schema/system/TextCRDTState.json +2 -2
  1614. package/json-schema/system/TimeSeries.json +2 -2
  1615. package/json-schema/system/TimeSeriesDataPoint.json +2 -2
  1616. package/json-schema/system/TopicConfig.json +2 -2
  1617. package/json-schema/system/TraceContext.json +2 -2
  1618. package/json-schema/system/TraceContextPropagation.json +2 -2
  1619. package/json-schema/system/TraceFlags.json +2 -2
  1620. package/json-schema/system/TracePropagationFormat.json +2 -2
  1621. package/json-schema/system/TraceSamplingConfig.json +2 -2
  1622. package/json-schema/system/TraceState.json +2 -2
  1623. package/json-schema/system/TracingConfig.json +2 -2
  1624. package/json-schema/system/TrainingCategory.json +2 -2
  1625. package/json-schema/system/TrainingCompletionStatus.json +2 -2
  1626. package/json-schema/system/TrainingCourse.json +2 -2
  1627. package/json-schema/system/TrainingPlan.json +2 -2
  1628. package/json-schema/system/TrainingRecord.json +2 -2
  1629. package/json-schema/system/TranslationBundle.json +2 -2
  1630. package/json-schema/system/TranslationConfig.json +2 -2
  1631. package/json-schema/system/TranslationData.json +2 -2
  1632. package/json-schema/system/TranslationFileOrganization.json +2 -2
  1633. package/json-schema/system/UserActivityStatus.json +2 -2
  1634. package/json-schema/system/VectorClock.json +2 -2
  1635. package/json-schema/system/WorkerStats.json +2 -2
  1636. package/json-schema/ui/AIChatWindowProps.json +2 -2
  1637. package/json-schema/ui/Action.json +2 -2
  1638. package/json-schema/ui/ActionNavItem.json +2 -2
  1639. package/json-schema/ui/ActionParam.json +2 -2
  1640. package/json-schema/ui/AddRecordConfig.json +2 -2
  1641. package/json-schema/ui/Animation.json +2 -2
  1642. package/json-schema/ui/AnimationTrigger.json +2 -2
  1643. package/json-schema/ui/App.json +2 -2
  1644. package/json-schema/ui/AppBranding.json +2 -2
  1645. package/json-schema/ui/AppearanceConfig.json +2 -2
  1646. package/json-schema/ui/AriaProps.json +2 -2
  1647. package/json-schema/ui/BlankPageLayout.json +2 -2
  1648. package/json-schema/ui/BlankPageLayoutItem.json +2 -2
  1649. package/json-schema/ui/BorderRadius.json +2 -2
  1650. package/json-schema/ui/BreakpointColumnMap.json +2 -2
  1651. package/json-schema/ui/BreakpointName.json +2 -2
  1652. package/json-schema/ui/BreakpointOrderMap.json +2 -2
  1653. package/json-schema/ui/Breakpoints.json +2 -2
  1654. package/json-schema/ui/CalendarConfig.json +2 -2
  1655. package/json-schema/ui/ChartAnnotation.json +2 -2
  1656. package/json-schema/ui/ChartAxis.json +2 -2
  1657. package/json-schema/ui/ChartConfig.json +2 -2
  1658. package/json-schema/ui/ChartInteraction.json +2 -2
  1659. package/json-schema/ui/ChartSeries.json +2 -2
  1660. package/json-schema/ui/ChartType.json +2 -2
  1661. package/json-schema/ui/ColorPalette.json +2 -2
  1662. package/json-schema/ui/ColumnSummary.json +2 -2
  1663. package/json-schema/ui/ComponentAnimation.json +2 -2
  1664. package/json-schema/ui/ConflictResolution.json +2 -2
  1665. package/json-schema/ui/Dashboard.json +2 -2
  1666. package/json-schema/ui/DashboardHeader.json +2 -2
  1667. package/json-schema/ui/DashboardHeaderAction.json +2 -2
  1668. package/json-schema/ui/DashboardNavItem.json +2 -2
  1669. package/json-schema/ui/DashboardWidget.json +2 -2
  1670. package/json-schema/ui/DateFormat.json +2 -2
  1671. package/json-schema/ui/DensityMode.json +2 -2
  1672. package/json-schema/ui/DndConfig.json +2 -2
  1673. package/json-schema/ui/DragConstraint.json +2 -2
  1674. package/json-schema/ui/DragHandle.json +2 -2
  1675. package/json-schema/ui/DragItem.json +2 -2
  1676. package/json-schema/ui/DropEffect.json +2 -2
  1677. package/json-schema/ui/DropZone.json +2 -2
  1678. package/json-schema/ui/EasingFunction.json +2 -2
  1679. package/json-schema/ui/ElementButtonProps.json +2 -2
  1680. package/json-schema/ui/ElementDataSource.json +2 -2
  1681. package/json-schema/ui/ElementFilterProps.json +2 -2
  1682. package/json-schema/ui/ElementFormProps.json +2 -2
  1683. package/json-schema/ui/ElementImageProps.json +2 -2
  1684. package/json-schema/ui/ElementNumberProps.json +2 -2
  1685. package/json-schema/ui/ElementRecordPickerProps.json +2 -2
  1686. package/json-schema/ui/ElementTextProps.json +2 -2
  1687. package/json-schema/ui/EmbedConfig.json +2 -2
  1688. package/json-schema/ui/EvictionPolicy.json +2 -2
  1689. package/json-schema/ui/FocusManagement.json +2 -2
  1690. package/json-schema/ui/FocusTrapConfig.json +2 -2
  1691. package/json-schema/ui/FormField.json +2 -2
  1692. package/json-schema/ui/GalleryConfig.json +2 -2
  1693. package/json-schema/ui/GanttConfig.json +2 -2
  1694. package/json-schema/ui/GestureConfig.json +2 -2
  1695. package/json-schema/ui/GestureType.json +2 -2
  1696. package/json-schema/ui/GlobalFilter.json +2 -2
  1697. package/json-schema/ui/GlobalFilterOptionsFrom.json +2 -2
  1698. package/json-schema/ui/GroupNavItem.json +2 -2
  1699. package/json-schema/ui/GroupingConfig.json +2 -2
  1700. package/json-schema/ui/GroupingField.json +2 -2
  1701. package/json-schema/ui/HttpMethod.json +2 -2
  1702. package/json-schema/ui/HttpRequest.json +2 -2
  1703. package/json-schema/ui/I18nLabel.json +2 -2
  1704. package/json-schema/ui/I18nObject.json +2 -2
  1705. package/json-schema/ui/InterfacePageConfig.json +2 -2
  1706. package/json-schema/ui/KanbanConfig.json +2 -2
  1707. package/json-schema/ui/KeyboardNavigationConfig.json +2 -2
  1708. package/json-schema/ui/KeyboardShortcut.json +2 -2
  1709. package/json-schema/ui/ListColumn.json +2 -2
  1710. package/json-schema/ui/ListView.json +2 -2
  1711. package/json-schema/ui/LocaleConfig.json +2 -2
  1712. package/json-schema/ui/LongPressGestureConfig.json +2 -2
  1713. package/json-schema/ui/MotionConfig.json +2 -2
  1714. package/json-schema/ui/NavigationArea.json +2 -2
  1715. package/json-schema/ui/NavigationConfig.json +2 -2
  1716. package/json-schema/ui/NavigationItem.json +2 -2
  1717. package/json-schema/ui/NavigationMode.json +2 -2
  1718. package/json-schema/ui/Notification.json +2 -2
  1719. package/json-schema/ui/NotificationAction.json +2 -2
  1720. package/json-schema/ui/NotificationConfig.json +2 -2
  1721. package/json-schema/ui/NotificationPosition.json +2 -2
  1722. package/json-schema/ui/NotificationSeverity.json +2 -2
  1723. package/json-schema/ui/NotificationType.json +2 -2
  1724. package/json-schema/ui/NumberFormat.json +2 -2
  1725. package/json-schema/ui/ObjectNavItem.json +2 -2
  1726. package/json-schema/ui/OfflineCacheConfig.json +2 -2
  1727. package/json-schema/ui/OfflineConfig.json +2 -2
  1728. package/json-schema/ui/OfflineStrategy.json +2 -2
  1729. package/json-schema/ui/Page.json +2 -2
  1730. package/json-schema/ui/PageAccordionProps.json +2 -2
  1731. package/json-schema/ui/PageCardProps.json +2 -2
  1732. package/json-schema/ui/PageComponent.json +2 -2
  1733. package/json-schema/ui/PageComponentType.json +2 -2
  1734. package/json-schema/ui/PageHeaderProps.json +2 -2
  1735. package/json-schema/ui/PageNavItem.json +2 -2
  1736. package/json-schema/ui/PageRegion.json +2 -2
  1737. package/json-schema/ui/PageTabsProps.json +2 -2
  1738. package/json-schema/ui/PageTransition.json +2 -2
  1739. package/json-schema/ui/PageType.json +2 -2
  1740. package/json-schema/ui/PageVariable.json +2 -2
  1741. package/json-schema/ui/PaginationConfig.json +2 -2
  1742. package/json-schema/ui/PerformanceConfig.json +2 -2
  1743. package/json-schema/ui/PersistStorage.json +2 -2
  1744. package/json-schema/ui/PinchGestureConfig.json +2 -2
  1745. package/json-schema/ui/PluralRule.json +2 -2
  1746. package/json-schema/ui/RecordActivityProps.json +2 -2
  1747. package/json-schema/ui/RecordChatterProps.json +2 -2
  1748. package/json-schema/ui/RecordDetailsProps.json +2 -2
  1749. package/json-schema/ui/RecordHighlightsProps.json +2 -2
  1750. package/json-schema/ui/RecordPathProps.json +2 -2
  1751. package/json-schema/ui/RecordRelatedListProps.json +2 -2
  1752. package/json-schema/ui/RecordReviewConfig.json +2 -2
  1753. package/json-schema/ui/Report.json +2 -2
  1754. package/json-schema/ui/ReportChart.json +2 -2
  1755. package/json-schema/ui/ReportColumn.json +2 -2
  1756. package/json-schema/ui/ReportGrouping.json +2 -2
  1757. package/json-schema/ui/ReportNavItem.json +2 -2
  1758. package/json-schema/ui/ReportType.json +2 -2
  1759. package/json-schema/ui/ResponsiveConfig.json +2 -2
  1760. package/json-schema/ui/RowColorConfig.json +2 -2
  1761. package/json-schema/ui/RowHeight.json +2 -2
  1762. package/json-schema/ui/SelectionConfig.json +2 -2
  1763. package/json-schema/ui/Shadow.json +2 -2
  1764. package/json-schema/ui/SharingConfig.json +2 -2
  1765. package/json-schema/ui/Spacing.json +2 -2
  1766. package/json-schema/ui/SwipeDirection.json +2 -2
  1767. package/json-schema/ui/SwipeGestureConfig.json +2 -2
  1768. package/json-schema/ui/SyncConfig.json +2 -2
  1769. package/json-schema/ui/Theme.json +2 -2
  1770. package/json-schema/ui/ThemeMode.json +2 -2
  1771. package/json-schema/ui/TimelineConfig.json +2 -2
  1772. package/json-schema/ui/TouchInteraction.json +2 -2
  1773. package/json-schema/ui/TouchTargetConfig.json +2 -2
  1774. package/json-schema/ui/TransitionConfig.json +2 -2
  1775. package/json-schema/ui/TransitionPreset.json +2 -2
  1776. package/json-schema/ui/Typography.json +2 -2
  1777. package/json-schema/ui/UrlNavItem.json +2 -2
  1778. package/json-schema/ui/UserActionsConfig.json +2 -2
  1779. package/json-schema/ui/ViewData.json +2 -2
  1780. package/json-schema/ui/ViewFilterRule.json +2 -2
  1781. package/json-schema/ui/ViewSharing.json +2 -2
  1782. package/json-schema/ui/ViewTab.json +2 -2
  1783. package/json-schema/ui/VisualizationType.json +2 -2
  1784. package/json-schema/ui/WcagContrastLevel.json +2 -2
  1785. package/json-schema/ui/WidgetActionType.json +2 -2
  1786. package/json-schema/ui/WidgetColorVariant.json +2 -2
  1787. package/json-schema/ui/WidgetEvent.json +2 -2
  1788. package/json-schema/ui/WidgetLifecycle.json +2 -2
  1789. package/json-schema/ui/WidgetManifest.json +2 -2
  1790. package/json-schema/ui/WidgetMeasure.json +2 -2
  1791. package/json-schema/ui/WidgetProperty.json +2 -2
  1792. package/json-schema/ui/WidgetSource.json +2 -2
  1793. package/json-schema/ui/ZIndex.json +2 -2
  1794. package/package.json +1 -1
  1795. package/dist/app-install.zod-BEVR4Rrw.d.mts +0 -387
  1796. package/dist/app-install.zod-BEVR4Rrw.d.ts +0 -387
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data/filter.zod.ts","../../src/data/query.zod.ts","../../src/shared/identifiers.zod.ts","../../src/system/encryption.zod.ts","../../src/system/masking.zod.ts","../../src/data/field.zod.ts","../../src/data/validation.zod.ts","../../src/automation/state-machine.zod.ts","../../src/data/object.zod.ts","../../src/data/hook.zod.ts","../../src/data/mapping.zod.ts","../../src/kernel/execution-context.zod.ts","../../src/data/data-engine.zod.ts","../../src/shared/enums.zod.ts","../../src/data/driver.zod.ts","../../src/data/driver-sql.zod.ts","../../src/data/driver-nosql.zod.ts","../../src/data/dataset.zod.ts","../../src/data/document.zod.ts","../../src/shared/mapping.zod.ts","../../src/data/external-lookup.zod.ts","../../src/data/datasource.zod.ts","../../src/data/analytics.zod.ts","../../src/data/feed.zod.ts","../../src/data/subscription.zod.ts","../../src/data/driver/turso-multi-tenant.zod.ts"],"names":["z","FieldMappingSchema"],"mappings":";;;;;AAmCO,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,MAAA,EAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,6BAA6B;AAC3D,CAAC;AAYM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE7C,GAAA,EAAKA,KAAA,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS;AAAA;AAAA,EAGtB,GAAA,EAAKA,KAAA,CAAE,GAAA,EAAI,CAAE,QAAA;AACf,CAAC;AAMM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE/C,GAAA,EAAKA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,EAAE,QAAA,EAAS;AAAA;AAAA,EAGpE,IAAA,EAAMA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,EAAE,QAAA,EAAS;AAAA;AAAA,EAGrE,GAAA,EAAKA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,EAAE,QAAA,EAAS;AAAA;AAAA,EAGpE,IAAA,EAAMA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,EAAE,QAAA;AAC9D,CAAC;AASM,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAExC,KAAKA,KAAA,CAAE,KAAA,CAAMA,MAAE,GAAA,EAAK,EAAE,QAAA,EAAS;AAAA;AAAA,EAG/B,MAAMA,KAAA,CAAE,KAAA,CAAMA,MAAE,GAAA,EAAK,EAAE,QAAA;AACzB,CAAC;AAMM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE1C,QAAA,EAAUA,MAAE,KAAA,CAAM;AAAA,IAChBA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,IAAUA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,CAAA;AAAA,IACpDA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,IAAUA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC;AAAA,GACrD,EAAE,QAAA;AACL,CAAC;AAUM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE3C,SAAA,EAAWA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAG/B,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAGjC,SAAA,EAAWA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACxB,CAAC;AASM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE5C,KAAA,EAAOA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA;AAAA,EAG5B,OAAA,EAASA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACvB,CAAC;AAUM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE3C,GAAA,EAAKA,KAAA,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS;AAAA,EACtB,GAAA,EAAKA,KAAA,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS;AAAA;AAAA,EAGtB,GAAA,EAAKA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,EAAE,QAAA,EAAS;AAAA,EACpE,IAAA,EAAMA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,EAAE,QAAA,EAAS;AAAA,EACrE,GAAA,EAAKA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,EAAE,QAAA,EAAS;AAAA,EACpE,IAAA,EAAMA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,EAAE,QAAA,EAAS;AAAA;AAAA,EAGrE,KAAKA,KAAA,CAAE,KAAA,CAAMA,MAAE,GAAA,EAAK,EAAE,QAAA,EAAS;AAAA,EAC/B,MAAMA,KAAA,CAAE,KAAA,CAAMA,MAAE,GAAA,EAAK,EAAE,QAAA,EAAS;AAAA,EAChC,QAAA,EAAUA,MAAE,KAAA,CAAM;AAAA,IAChBA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,IAAUA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC,CAAA;AAAA,IACpDA,KAAA,CAAE,KAAA,CAAM,CAACA,KAAA,CAAE,MAAA,IAAUA,KAAA,CAAE,IAAA,EAAK,EAAG,oBAAoB,CAAC;AAAA,GACrD,EAAE,QAAA,EAAS;AAAA;AAAA,EAGZ,SAAA,EAAWA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,SAAA,EAAWA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAG/B,KAAA,EAAOA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC5B,OAAA,EAASA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACvB,CAAC;AAiCM,IAAM,wBAAoDA,KAAA,CAAE,IAAA;AAAA,EAAK,MACtEA,MAAE,MAAA,CAAOA,KAAA,CAAE,QAAO,EAAGA,KAAA,CAAE,OAAA,EAAS,CAAA,CAAE,GAAA;AAAA,IAChCA,MAAE,MAAA,CAAO;AAAA,MACP,IAAA,EAAMA,KAAA,CAAE,KAAA,CAAM,qBAAqB,EAAE,QAAA,EAAS;AAAA,MAC9C,GAAA,EAAKA,KAAA,CAAE,KAAA,CAAM,qBAAqB,EAAE,QAAA,EAAS;AAAA,MAC7C,IAAA,EAAM,sBAAsB,QAAA;AAAS,KACtC;AAAA;AAEL;AA2BO,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA,EACxC,KAAA,EAAO,sBAAsB,QAAA;AAC/B,CAAC;AAqEM,IAAM,yBAAyCA,KAAA,CAAE,IAAA;AAAA,EAAK,MAC3DA,MAAE,MAAA,CAAO;AAAA,IACP,MAAMA,KAAA,CAAE,KAAA;AAAA,MACNA,MAAE,KAAA,CAAM;AAAA;AAAA,QAENA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,IAAU,oBAAoB,CAAA;AAAA;AAAA,QAEzC;AAAA,OACD;AAAA,MACD,QAAA,EAAS;AAAA,IAEX,KAAKA,KAAA,CAAE,KAAA;AAAA,MACLA,MAAE,KAAA,CAAM;AAAA,QACNA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,IAAU,oBAAoB,CAAA;AAAA,QACzC;AAAA,OACD;AAAA,MACD,QAAA,EAAS;AAAA,IAEX,IAAA,EAAMA,MAAE,KAAA,CAAM;AAAA,MACZA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,IAAU,oBAAoB,CAAA;AAAA,MACzC;AAAA,KACD,EAAE,QAAA;AAAS,GACb;AACH;AAYO,IAAM,mBAAA,uBAA0B,GAAA,CAAI;AAAA,EACzC,GAAA;AAAA,EAAK,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,GAAA;AAAA,EAAK,IAAA;AAAA,EAAM,GAAA;AAAA,EAAK,IAAA;AAAA,EACvC,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,QAAA;AAAA,EACb,UAAA;AAAA,EAAY,MAAA;AAAA,EACZ,YAAA;AAAA,EAAc,aAAA;AAAA,EACd,UAAA;AAAA,EAAY,WAAA;AAAA,EACZ,SAAA;AAAA,EACA,SAAA;AAAA,EAAW;AACb,CAAC;AAqBM,SAAS,YAAY,MAAA,EAA0B;AACpD,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,MAAM,KAAK,MAAA,CAAO,MAAA,KAAW,GAAG,OAAO,KAAA;AAE1D,EAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AAGtB,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,KAAA,GAAQ,MAAM,WAAA,EAAY;AAChC,IAAA,IAAI,KAAA,KAAU,KAAA,IAAS,KAAA,KAAU,IAAA,EAAM;AACrC,MAAA,OAAO,MAAA,CAAO,MAAA,IAAU,CAAA,IAAK,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,CAAE,KAAA,CAAM,CAAC,KAAA,KAAmB,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA,IAC3F;AAGA,IAAA,IAAI,OAAO,MAAA,IAAU,CAAA,IAAK,OAAO,MAAA,CAAO,CAAC,MAAM,QAAA,EAAU;AACvD,MAAA,OAAO,oBAAoB,GAAA,CAAI,MAAA,CAAO,CAAC,CAAA,CAAE,aAAa,CAAA;AAAA,IACxD;AAAA,EACF;AAGA,EAAA,IAAI,OAAO,KAAA,CAAM,CAAC,SAAkB,WAAA,CAAY,IAAI,CAAC,CAAA,EAAG;AACtD,IAAA,OAAO,OAAO,MAAA,GAAS,CAAA;AAAA,EACzB;AAEA,EAAA,OAAO,KAAA;AACT;AASA,IAAM,gBAAA,GAA2C;AAAA,EAC/C,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAM,KAAA;AAAA,EACN,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,KAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,QAAA,EAAU,MAAA;AAAA,EACV,UAAA,EAAY,WAAA;AAAA,EACZ,MAAA,EAAQ,WAAA;AAAA,EACR,YAAA,EAAc,aAAA;AAAA,EACd,aAAA,EAAe,aAAA;AAAA,EACf,UAAA,EAAY,WAAA;AAAA,EACZ,WAAA,EAAa,WAAA;AAAA,EACb,SAAA,EAAW,UAAA;AAAA,EACX,SAAA,EAAW,OAAA;AAAA,EACX,aAAA,EAAe;AACjB,CAAA;AAKA,SAAS,kBAAkB,IAAA,EAAkD;AAC3E,EAAA,MAAM,CAAC,KAAA,EAAO,QAAA,EAAU,KAAK,CAAA,GAAI,IAAA;AACjC,EAAA,MAAM,EAAA,GAAK,SAAS,WAAA,EAAY;AAGhC,EAAA,IAAI,EAAA,KAAO,GAAA,IAAO,EAAA,KAAO,IAAA,EAAM;AAC7B,IAAA,OAAO,EAAE,CAAC,KAAK,GAAG,KAAA,EAAM;AAAA,EAC1B;AAGA,EAAA,IAAI,OAAO,SAAA,EAAW;AACpB,IAAA,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,KAAA,EAAO,MAAK,EAAE;AAAA,EACpC;AACA,EAAA,IAAI,OAAO,aAAA,EAAe;AACxB,IAAA,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,KAAA,EAAO,OAAM,EAAE;AAAA,EACrC;AAEA,EAAA,MAAM,MAAA,GAAS,iBAAiB,EAAE,CAAA;AAClC,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,GAAG,KAAA,EAAM,EAAE;AAAA,EACxC;AAGA,EAAA,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,GAAG,KAAA,EAAM,EAAE;AAC1C;AA4BO,SAAS,eAAe,MAAA,EAA8C;AAC3E,EAAA,IAAI,MAAA,IAAU,MAAM,OAAO,MAAA;AAC3B,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,GAAG,OAAO,MAAA;AACnC,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAEhC,EAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AAGtB,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,KAAa,KAAA,CAAM,WAAA,OAAkB,KAAA,IAAS,KAAA,CAAM,WAAA,EAAY,KAAM,IAAA,CAAA,EAAO;AAChG,IAAA,MAAM,OAAA,GAAU,CAAA,CAAA,EAAI,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA;AACvC,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,KAAmB,cAAA,CAAe,KAAK,CAAC,CAAA,CAAE,OAAO,OAAO,CAAA;AAC9F,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAClC,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,SAAS,CAAC,CAAA;AAC5C,IAAA,OAAO,EAAE,CAAC,OAAO,GAAG,QAAA,EAAS;AAAA,EAC/B;AAGA,EAAA,IAAI,MAAA,CAAO,MAAA,IAAU,CAAA,IAAK,OAAO,UAAU,QAAA,EAAU;AACnD,IAAA,OAAO,kBAAkB,MAAmC,CAAA;AAAA,EAC9D;AAIA,EAAA,IAAI,MAAA,CAAO,MAAM,CAAC,IAAA,KAAkB,MAAM,OAAA,CAAQ,IAAI,CAAC,CAAA,EAAG;AACxD,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAmB,eAAe,KAAK,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AACrF,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAClC,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,SAAS,CAAC,CAAA;AAC5C,IAAA,OAAO,EAAE,MAAM,QAAA,EAAS;AAAA,EAC1B;AAEA,EAAA,OAAO,MAAA;AACT;AAUO,IAAM,gBAAA,GAAmB;AAAA;AAAA,EAE9B,KAAA;AAAA,EAAO,KAAA;AAAA;AAAA,EAEP,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA;AAAA,EAEtB,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,UAAA;AAAA;AAAA,EAEf,WAAA;AAAA,EAAa,aAAA;AAAA,EAAe,WAAA;AAAA;AAAA,EAE5B,OAAA;AAAA,EAAS;AACX;AAKO,IAAM,iBAAA,GAAoB,CAAC,MAAA,EAAQ,KAAA,EAAO,MAAM;AAKhD,IAAM,aAAA,GAAgB,CAAC,GAAG,gBAAA,EAAkB,GAAG,iBAAiB;;;AC1hBhE,IAAM,cAAA,GAAiBA,MAAE,MAAA,CAAO;AAAA,EACrC,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,KAAA,EAAOA,MAAE,IAAA,CAAK,CAAC,OAAO,MAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAK;AAC9C,CAAC;AA0CM,IAAM,mBAAA,GAAsBA,MAAE,IAAA,CAAK;AAAA,EACxC,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAC9B,gBAAA;AAAA,EAAkB,WAAA;AAAA,EAAa;AACjC,CAAC;AAgCM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA,EAC5C,QAAA,EAAU,mBAAA,CAAoB,QAAA,CAAS,sBAAsB,CAAA;AAAA,EAC7D,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,EAClF,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,qBAAqB,CAAA;AAAA,EAChD,UAAUA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA,EAC7E,MAAA,EAAQ,qBAAA,CAAsB,QAAA,EAAS,CAAE,SAAS,oEAAoE;AACxH,CAAC;AAsCM,IAAM,QAAA,GAAWA,MAAE,IAAA,CAAK,CAAC,SAAS,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAC;AAY1D,IAAM,YAAA,GAAeA,MAAE,IAAA,CAAK,CAAC,QAAQ,UAAA,EAAY,MAAA,EAAQ,MAAM,CAAC;AAgFhE,IAAM,iBAAiCA,KAAAA,CAAE,IAAA;AAAA,EAAK,MACnDA,MAAE,MAAA,CAAO;AAAA,IACP,IAAA,EAAM,QAAA,CAAS,QAAA,CAAS,WAAW,CAAA;AAAA,IACnC,QAAA,EAAU,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,IACpE,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sBAAsB,CAAA;AAAA,IAClD,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,aAAa,CAAA;AAAA,IACnD,EAAA,EAAI,qBAAA,CAAsB,QAAA,CAAS,gBAAgB,CAAA;AAAA,IACnD,QAAA,EAAUA,MAAE,IAAA,CAAK,MAAM,WAAW,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,4BAA4B;AAAA,GACrF;AACH;AAyDO,IAAM,cAAA,GAAiBA,MAAE,IAAA,CAAK;AAAA,EACnC,YAAA;AAAA,EAAc,MAAA;AAAA,EAAQ,YAAA;AAAA,EAAc,cAAA;AAAA,EACpC,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,aAAA;AAAA,EAAe,YAAA;AAAA,EAC9B,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO;AAChC,CAAC;AA6BM,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,WAAA,EAAaA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,qBAAqB,CAAA;AAAA,EAC1E,OAAA,EAASA,MAAE,KAAA,CAAM,cAAc,EAAE,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,EAC7E,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA,IACd,IAAA,EAAMA,MAAE,IAAA,CAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,QAAA,EAAS;AAAA,IACzC,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0DAA0D,CAAA;AAAA,IAChG,KAAKA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gDAAgD;AAAA,GACrF,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,4BAA4B;AACrD,CAAC;AA6CM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA,EAC/C,QAAA,EAAU,cAAA,CAAe,QAAA,CAAS,sBAAsB,CAAA;AAAA,EACxD,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sDAAsD,CAAA;AAAA,EAC5F,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,qBAAqB,CAAA;AAAA,EAChD,IAAA,EAAM,gBAAA,CAAiB,QAAA,CAAS,oCAAoC;AACtE,CAAC;AAMM,IAAM,kBAAkCA,KAAAA,CAAE,IAAA;AAAA,EAAK,MACpDA,MAAE,KAAA,CAAM;AAAA,IACNA,MAAE,MAAA,EAAO;AAAA;AAAA,IACTA,MAAE,MAAA,CAAO;AAAA,MACP,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA;AAAA,MAChB,MAAA,EAAQA,KAAAA,CAAE,KAAA,CAAM,eAAe,EAAE,QAAA,EAAS;AAAA;AAAA,MAC1C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,KAC5B;AAAA,GACF;AACH;AAoBO,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA,EAC9C,MAAA,EAAQA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,kEAAkE,CAAA;AAAA,EAClH,KAAA,EAAOA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,yCAAyC,CAAA;AAAA,EAC/F,QAAA,EAAUA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAO,IAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA,CAAE,SAAS,gCAAgC,CAAA;AAAA,EAClG,KAAA,EAAOA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,gEAAgE,CAAA;AAAA,EAC5H,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA,EAC5E,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EAC9F,SAAA,EAAWA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,mCAAmC;AAC/F,CAAC;AAmDD,IAAM,eAAA,GAAkBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE/B,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA,EAGxD,MAAA,EAAQA,MAAE,KAAA,CAAM,eAAe,EAAE,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA,EAGzE,KAAA,EAAO,qBAAA,CAAsB,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA,EAG7E,MAAA,EAAQ,oBAAA,CAAqB,QAAA,EAAS,CAAE,SAAS,oDAAoD,CAAA;AAAA;AAAA,EAGrG,OAAA,EAASA,MAAE,KAAA,CAAM,cAAc,EAAE,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA,EAGtF,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA,EACrE,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,EACjE,KAAKA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,EAC3E,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA,EAG5F,KAAA,EAAOA,MAAE,KAAA,CAAM,cAAc,EAAE,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA;AAAA,EAGzE,YAAA,EAAcA,MAAE,KAAA,CAAM,qBAAqB,EAAE,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA;AAAA,EAGxF,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iBAAiB,CAAA;AAAA;AAAA,EAGlE,MAAA,EAAQ,qBAAA,CAAsB,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA;AAAA,EAG3F,eAAA,EAAiBA,MAAE,KAAA,CAAM,wBAAwB,EAAE,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA;AAAA,EAG1G,UAAUA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,sBAAsB;AAClE,CAAC,CAAA;AAUM,IAAM,WAAA,GAAmC,gBAAgB,MAAA,CAAO;AAAA,EACrE,MAAA,EAAQA,KAAAA,CAAE,IAAA,CAAK,MAAMA,MAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAG,WAAW,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,6CAA6C;AAC3H,CAAC;ACjeM,IAAM,sBAAA,GAAyBA,KAAAA,CACnC,MAAA,EAAO,CACP,GAAA,CAAI,CAAA,EAAG,EAAE,OAAA,EAAS,iDAAA,EAAmD,CAAA,CACrE,KAAA,CAAM,oBAAA,EAAsB;AAAA,EAC3B,OAAA,EACE;AACJ,CAAC,CAAA,CACA,SAAS,wDAAwD,CAAA;AAiB7D,IAAM,yBAAA,GAA4BA,KAAAA,CACtC,MAAA,EAAO,CACP,GAAA,CAAI,CAAA,EAAG,EAAE,OAAA,EAAS,0CAAA,EAA4C,CAAA,CAC9D,KAAA,CAAM,mBAAA,EAAqB;AAAA,EAC1B,OAAA,EACE;AACJ,CAAC,CAAA,CACA,SAAS,yDAAyD,CAAA;AAoBtCA,KAAAA,CAC5B,MAAA,EAAO,CACP,GAAA,CAAI,CAAA,EAAG,EAAE,OAAA,EAAS,0CAAA,EAA4C,CAAA,CAC9D,KAAA,CAAM,oBAAA,EAAsB;AAAA,EAC3B,OAAA,EACE;AACJ,CAAC,CAAA,CACA,SAAS,0DAA0D;ACjG/D,IAAM,yBAAA,GAA4BA,MAAE,IAAA,CAAK;AAAA,EAC9C,aAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAC,CAAA,CAAE,SAAS,gCAAgC,CAAA;AAIrC,IAAM,2BAAA,GAA8BA,MAAE,IAAA,CAAK;AAAA,EAChD,OAAA;AAAA,EACA,SAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAC,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAItC,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,+BAA+B,CAAA;AAAA,EAC5E,aAAA,EAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA,CAAE,QAAA,CAAS,4BAA4B,CAAA;AAAA,EAClF,iBAAA,EAAmBA,MAAE,MAAA,EAAO,CAAE,QAAQ,CAAC,CAAA,CAAE,SAAS,sCAAsC,CAAA;AAAA,EACxF,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,8CAA8C;AAC/F,CAAC,CAAA,CAAE,SAAS,8CAA8C,CAAA;AAKnD,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,+BAA+B,CAAA;AAAA,EAC5E,WAAW,yBAAA,CAA0B,OAAA,CAAQ,aAAa,CAAA,CAAE,SAAS,sBAAsB,CAAA;AAAA,EAC3F,aAAA,EAAeA,MAAE,MAAA,CAAO;AAAA,IACtB,QAAA,EAAU,2BAAA,CAA4B,QAAA,CAAS,iCAAiC,CAAA;AAAA,IAChF,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,IACtE,cAAA,EAAgB,uBAAA,CAAwB,QAAA,EAAS,CAAE,SAAS,qBAAqB;AAAA,GAClF,CAAA,CAAE,QAAA,CAAS,8BAA8B,CAAA;AAAA,EAC1C,KAAA,EAAOA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,UAAU,CAAC,CAAA,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,EACzF,uBAAA,EAAyBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,2CAA2C,CAAA;AAAA,EACxG,oBAAA,EAAsBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iCAAiC;AAC7F,CAAC,CAAA,CAAE,SAAS,sCAAsC,CAAA;AAKbA,MAAE,MAAA,CAAO;AAAA,EAC5C,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,8BAA8B,CAAA;AAAA,EAC7D,gBAAA,EAAkB,sBAAA,CAAuB,QAAA,CAAS,oCAAoC,CAAA;AAAA,EACtF,SAAA,EAAWA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,mCAAmC;AACpF,CAAC,CAAA,CAAE,SAAS,iCAAiC;ACjDtC,IAAM,qBAAA,GAAwBA,MAAE,IAAA,CAAK;AAAA,EAC1C,QAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,MAAA;AAAA;AAAA,EACA,UAAA;AAAA;AAAA,EACA,WAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAC,CAAA,CAAE,SAAS,0CAA0C,CAAA;AAI/C,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA,EACxC,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gCAAgC,CAAA;AAAA,EAC3D,QAAA,EAAU,qBAAA,CAAsB,QAAA,CAAS,yBAAyB,CAAA;AAAA,EAClE,SAASA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA,EAC3E,cAAA,EAAgBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,6CAA6C,CAAA;AAAA,EAChG,cAAA,EAAgBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,6CAA6C,CAAA;AAAA,EAChG,KAAA,EAAOA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,4BAA4B,CAAA;AAAA,EAC3E,WAAA,EAAaA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,8BAA8B;AACrF,CAAC,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAKVA,MAAE,MAAA,CAAO;AAAA,EAC1C,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,qBAAqB,CAAA;AAAA,EAClE,OAAOA,KAAAA,CAAE,KAAA,CAAM,iBAAiB,CAAA,CAAE,SAAS,mCAAmC,CAAA;AAAA,EAC9E,cAAA,EAAgBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,2CAA2C;AAChG,CAAC,CAAA,CAAE,SAAS,yDAAyD;;;AC1B9D,IAAM,SAAA,GAAYA,MAAE,IAAA,CAAK;AAAA;AAAA,EAE9B,MAAA;AAAA,EAAQ,UAAA;AAAA,EAAY,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,OAAA;AAAA,EAAS,UAAA;AAAA;AAAA,EAE7C,UAAA;AAAA,EAAY,MAAA;AAAA,EAAQ,UAAA;AAAA;AAAA,EAEpB,QAAA;AAAA,EAAU,UAAA;AAAA,EAAY,SAAA;AAAA;AAAA,EAEtB,MAAA;AAAA,EAAQ,UAAA;AAAA,EAAY,MAAA;AAAA;AAAA,EAEpB,SAAA;AAAA,EAAW,QAAA;AAAA;AAAA;AAAA,EAEX,QAAA;AAAA;AAAA,EACA,aAAA;AAAA;AAAA,EACA,OAAA;AAAA;AAAA,EACA,YAAA;AAAA;AAAA;AAAA,EAEA,QAAA;AAAA,EAAU,eAAA;AAAA;AAAA,EACV,MAAA;AAAA;AAAA;AAAA,EAEA,OAAA;AAAA,EAAS,MAAA;AAAA,EAAQ,QAAA;AAAA,EAAU,OAAA;AAAA,EAAS,OAAA;AAAA;AAAA,EAEpC,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,YAAA;AAAA;AAAA,EAEtB,UAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,MAAA;AAAA;AAAA,EACA,MAAA;AAAA;AAAA,EACA,OAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,WAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,UAAA;AAAA;AAAA,EACA,MAAA;AAAA;AAAA;AAAA,EAEA;AAAA;AACF,CAAC;AAsBM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kDAAkD,CAAA;AAAA,EAC7E,KAAA,EAAO,sBAAA,CAAuB,QAAA,CAAS,6CAA6C,CAAA;AAAA,EACpF,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACpE,SAASA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,mBAAmB;AAC9D,CAAC;AAMM,IAAM,yBAAA,GAA4BA,MAAE,MAAA,CAAO;AAAA,EAChD,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,QAAA,CAAS,qBAAqB,CAAA;AAAA,EACpE,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA,EACxE,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,EAC7D,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB;AAC/D,CAAC;AAYM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,WAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,SAAS,gCAAgC,CAAA;AAAA,EAC/F,YAAA,EAAcA,KAAAA,CAAE,IAAA,CAAK,CAAC,SAAA,EAAW,OAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,qEAAqE,CAAA;AAAA,EAC5I,eAAA,EAAiBA,KAAAA,CAAE,MAAA,EAAO,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,gEAAgE;AAChI,CAAC;AASM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,iBAAiB,CAAA;AAAA,EAC5C,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,OAAO,CAAC,CAAA,CAAE,SAAS,0BAA0B;AACpE,CAAC;AAMM,IAAM,aAAA,GAAgBA,MAAE,MAAA,CAAO;AAAA,EACpC,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,EACvD,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,WAAW,CAAA;AAAA,EAChD,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,EACtD,YAAYA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iBAAiB,CAAA;AAAA,EAC5D,SAASA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,EAC9D,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,EAC7E,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B;AACtE,CAAC;AA0BM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAK,CAAA,CAAE,SAAS,0DAA0D,CAAA;AAAA,EAClH,cAAA,EAAgBA,KAAAA,CAAE,IAAA,CAAK,CAAC,UAAU,WAAA,EAAa,YAAA,EAAc,WAAW,CAAC,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,CAAE,SAAS,8CAA8C,CAAA;AAAA,EACpJ,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,8CAA8C,CAAA;AAAA,EAC9F,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,6DAA6D,CAAA;AAAA,EACzG,SAAA,EAAWA,KAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,SAAA,EAAW,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,6EAA6E;AAClJ,CAAC;AA+BM,IAAM,0BAAA,GAA6BA,MAAE,MAAA,CAAO;AAAA;AAAA,EAEjD,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,4BAA4B,CAAA;AAAA,EAC3E,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oDAAoD,CAAA;AAAA;AAAA,EAGnG,YAAA,EAAcA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,2DAA2D,CAAA;AAAA,EACjH,YAAA,EAAcA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,yDAAyD,CAAA;AAAA,EAC/G,gBAAA,EAAkBA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,8DAA8D,CAAA;AAAA,EACxH,gBAAA,EAAkBA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oBAAoB,CAAA;AAAA;AAAA,EAG9E,SAAA,EAAWA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACzF,iBAAA,EAAmBA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,YAAA,EAAc,cAAA,EAAgB,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,EACnI,iBAAA,EAAmBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,kCAAkC,CAAA;AAAA,EACxF,kBAAA,EAAoBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA,EAG5F,iBAAiBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+DAA+D,CAAA;AAAA,EAC/G,eAAeA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,EAClE,eAAeA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kDAAkD,CAAA;AAAA;AAAA,EAGhG,eAAA,EAAiBA,MAAE,MAAA,CAAO;AAAA,IACxB,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,IAC/E,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,IAC/E,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gCAAgC,CAAA;AAAA,IACjF,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gCAAgC,CAAA;AAAA,IACjF,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,IACzF,kBAAA,EAAoBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,0BAA0B,CAAA;AAAA,IAClF,cAAA,EAAgBA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAO;AAAA,MAC/B,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,2DAA2D,CAAA;AAAA,MACrF,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,2BAA2B,CAAA;AAAA,MAC7D,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAAA,MAC/D,IAAA,EAAMA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,0BAA0B;AAAA,KACrE,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA,IACvD,gBAAA,EAAkBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA,IAC9E,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,uCAAuC;AAAA,GACvF,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA,EAGxD,aAAA,EAAeA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,wDAAwD,CAAA;AAAA,EAC3G,YAAA,EAAcA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,gCAAgC,CAAA;AAAA,EACjF,WAAA,EAAaA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,+BAA+B,CAAA;AAAA,EAC/E,aAAA,EAAeA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,kDAAkD,CAAA;AAAA;AAAA,EAGrG,eAAA,EAAiBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,gDAAgD,CAAA;AAAA,EACpG,WAAA,EAAaA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,mDAAmD,CAAA;AAAA;AAAA,EAGpG,iBAAA,EAAmBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACjG,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sCAAsC,CAAA;AAAA;AAAA,EAGzF,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,4CAA4C,CAAA;AAAA,EAC5F,kBAAA,EAAoBA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA,CAAE,OAAA,CAAQ,IAAI,CAAA,CAAE,SAAS,uDAAuD;AACnI,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AAElB,EAAA,IAAI,IAAA,CAAK,YAAY,MAAA,IAAa,IAAA,CAAK,YAAY,MAAA,IAAa,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,OAAA,EAAS;AAC3F,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT,CAAA,EAAG;AAAA,EACD,OAAA,EAAS;AACX,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AAElB,EAAA,IAAI,IAAA,CAAK,iBAAA,KAAsB,MAAA,IAAa,IAAA,CAAK,cAAc,IAAA,EAAM;AACnE,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT,CAAA,EAAG;AAAA,EACD,OAAA,EAAS;AACX,CAAC;AAgBM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE7C,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,0CAA0C,CAAA;AAAA;AAAA,EAG1F,YAAA,EAAcA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,SAAS,qEAAqE,CAAA;AAAA;AAAA,EAGhI,QAAA,EAAUA,MAAE,MAAA,CAAO;AAAA,IACjB,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,8EAA8E,CAAA;AAAA,IAC1G,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,mEAAmE;AAAA,GACjH,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,mCAAmC;AAC5D,CAAC;AAaM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE/C,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,2CAA2C,CAAA;AAAA;AAAA,EAGzE,GAAA,EAAKA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,0CAA0C,CAAA;AAAA;AAAA,EAG1E,YAAA,EAAcA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA,CAAE,SAAS,wFAAwF;AACrI,CAAC;AA8BM,IAAM,WAAA,GAAcA,MAAE,MAAA,CAAO;AAAA;AAAA,EAElC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,oBAAoB,CAAA,CAAE,QAAA,CAAS,2BAA2B,CAAA,CAAE,QAAA,EAAS;AAAA,EAC5F,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,EAC5D,IAAA,EAAM,SAAA,CAAU,QAAA,CAAS,iBAAiB,CAAA;AAAA,EAC1C,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,EAC/D,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA;AAAA,EAG1E,YAAYA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wFAAwF,CAAA;AAAA;AAAA,EAGnI,QAAA,EAAUA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,aAAa,CAAA;AAAA,EAC3D,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,eAAe,CAAA;AAAA,EAC/D,QAAA,EAAUA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,2FAA2F,CAAA;AAAA,EACzI,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,sBAAsB,CAAA;AAAA,EAClE,cAAcA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,eAAe,CAAA;AAAA;AAAA,EAG7D,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,EAChE,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA;AAAA,EAGhE,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,cAAc,CAAA;AAAA,EACxD,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,EACtD,KAAKA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,eAAe,CAAA;AAAA,EACnD,KAAKA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,eAAe,CAAA;AAAA;AAAA,EAGnD,OAAA,EAASA,MAAE,KAAA,CAAM,kBAAkB,EAAE,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA;AAAA,EAGhG,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,EAC9D,gBAAA,EAAkBA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,0DAA0D,CAAA;AAAA,EACpH,yBAAyBA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,qEAAqE,CAAA;AAAA,EAC9H,cAAA,EAAgBA,KAAAA,CAAE,IAAA,CAAK,CAAC,YAAY,SAAA,EAAW,UAAU,CAAC,CAAA,CAAE,UAAS,CAAE,OAAA,CAAQ,UAAU,CAAA,CAAE,SAAS,8CAA8C,CAAA;AAAA;AAAA,EAGlJ,YAAYA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,EAC/D,iBAAA,EAAmBA,MAAE,MAAA,CAAO;AAAA,IAC1B,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sCAAsC,CAAA;AAAA,IAClE,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oCAAoC,CAAA;AAAA,IAC/D,QAAA,EAAUA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAC,CAAA,CAAE,QAAA,CAAS,+BAA+B;AAAA,GACjG,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA;AAAA,EAInD,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8EAA8E,CAAA;AAAA,EACvH,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA,EACtF,aAAaA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA;AAAA,EAG/E,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA,EAC7E,WAAWA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA;AAAA,EAGpE,YAAYA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,EACnF,gBAAgBA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,wCAAwC,CAAA;AAAA;AAAA,EAGxF,aAAA,EAAeA,KAAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,IAAA,EAAM,eAAe,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,yBAAyB,CAAA;AAAA;AAAA,EAGlG,WAAA,EAAaA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,KAAK,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,EAC3F,YAAYA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,EAC9E,YAAA,EAAcA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA;AAAA,EAG5E,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wCAAwC,CAAA;AAAA,EAC7E,WAAWA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,EAC5E,KAAA,EAAOA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,sFAAsF,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlJ,eAAeA,KAAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,SAAS,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,EAC7H,iBAAA,EAAmBA,KAAAA,CAAE,IAAA,CAAK,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,wGAAwG,CAAA;AAAA,EAC5K,cAAcA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,oDAAoD,CAAA;AAAA,EAClG,eAAeA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,kDAAkD,CAAA;AAAA;AAAA,EAGjG,cAAA,EAAgB,oBAAA,CAAqB,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA;AAAA,EAGhG,YAAA,EAAc,kBAAA,CAAmB,QAAA,EAAS,CAAE,SAAS,wDAAwD,CAAA;AAAA;AAAA,EAG7G,oBAAA,EAAsB,0BAAA,CAA2B,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA;AAAA;AAAA,EAIxH,gBAAA,EAAkB,sBAAA,CAAuB,QAAA,EAAS,CAAE,SAAS,8EAA8E,CAAA;AAAA;AAAA,EAG3I,WAAA,EAAa,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA;AAAA,EAG1F,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,yFAAyF,CAAA;AAAA;AAAA;AAAA,EAIzI,YAAA,EAAcA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wFAAwF,CAAA;AAAA;AAAA;AAAA,EAI9I,MAAA,EAAQ,wBAAA,CAAyB,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA;AAAA;AAAA,EAIxG,WAAA,EAAa,sBAAA,CAAuB,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA;AAAA,EAGtG,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yGAAyG,CAAA;AAAA;AAAA,EAG/I,qBAAqBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,CAAA,2FAAA,CAA+F,CAAA;AAAA;AAAA,EAGnJ,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA,EACpE,QAAA,EAAUA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iBAAiB,CAAA;AAAA,EAC/D,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,IAAI,CAAA,CAAE,QAAA,CAAS,yCAAyC,CAAA;AAAA,EACjG,gBAAgBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EAC7F,kBAAkBA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,mEAAmE,CAAA;AAAA,EACrH,eAAeA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,EAC5F,kBAAkBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0DAA0D,CAAA;AAAA;AAAA,EAE3G,KAAA,EAAOA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,gCAAgC,CAAA;AAAA,EAC3E,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,sCAAsC;AACxF,CAAC;AAsBM,IAAM,KAAA,GAAQ;AAAA,EACnB,IAAA,EAAM,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAG,MAAA,EAAO,CAAA;AAAA,EAC9D,QAAA,EAAU,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,GAAG,MAAA,EAAO,CAAA;AAAA,EACtE,MAAA,EAAQ,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,GAAG,MAAA,EAAO,CAAA;AAAA,EAClE,OAAA,EAAS,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,GAAG,MAAA,EAAO,CAAA;AAAA,EACpE,IAAA,EAAM,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAG,MAAA,EAAO,CAAA;AAAA,EAC9D,QAAA,EAAU,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,GAAG,MAAA,EAAO,CAAA;AAAA,EACtE,QAAA,EAAU,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,GAAG,MAAA,EAAO,CAAA;AAAA,EACtE,OAAA,EAAS,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,GAAG,MAAA,EAAO,CAAA;AAAA,EACpE,GAAA,EAAK,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,KAAA,EAAO,GAAG,MAAA,EAAO,CAAA;AAAA,EAC5D,KAAA,EAAO,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,GAAG,MAAA,EAAO,CAAA;AAAA,EAChE,KAAA,EAAO,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,GAAG,MAAA,EAAO,CAAA;AAAA,EAChE,KAAA,EAAO,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,GAAG,MAAA,EAAO,CAAA;AAAA,EAChE,IAAA,EAAM,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAG,MAAA,EAAO,CAAA;AAAA,EAC9D,MAAA,EAAQ,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,GAAG,MAAA,EAAO,CAAA;AAAA,EAClE,OAAA,EAAS,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,GAAG,MAAA,EAAO,CAAA;AAAA,EACpE,OAAA,EAAS,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,GAAG,MAAA,EAAO,CAAA;AAAA,EACpE,UAAA,EAAY,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,YAAA,EAAc,GAAG,MAAA,EAAO,CAAA;AAAA,EAC1E,QAAA,EAAU,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,GAAG,MAAA,EAAO,CAAA;AAAA,EACtE,IAAA,EAAM,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAG,MAAA,EAAO,CAAA;AAAA,EAC9D,QAAA,EAAU,CAAC,MAAA,GAAqB,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,GAAG,MAAA,EAAO,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBtE,MAAA,EAAQ,CAAC,eAAA,EAAkG,MAAA,KAAwB;AAEjI,IAAA,MAAM,WAAA,GAAc,CAAC,GAAA,KAAwB;AAC3C,MAAA,OAAO,GAAA,CACJ,aAAY,CACZ,OAAA,CAAQ,QAAQ,GAAG,CAAA,CACnB,OAAA,CAAQ,aAAA,EAAe,EAAE,CAAA;AAAA,IAC9B,CAAA;AAKA,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI,WAAA;AAEJ,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,eAAe,CAAA,EAAG;AAElC,MAAA,OAAA,GAAU,eAAA,CAAgB,GAAA;AAAA,QAAI,OAC5B,OAAO,CAAA,KAAM,WACT,EAAE,KAAA,EAAO,GAAG,KAAA,EAAO,WAAA,CAAY,CAAC,CAAA,EAAE,GAClC,EAAE,GAAG,CAAA,EAAG,OAAO,CAAA,CAAE,KAAA,CAAM,aAAY;AAAE;AAAA,OAC3C;AACA,MAAA,WAAA,GAAc,UAAU,EAAC;AAAA,IAC3B,CAAA,MAAO;AAEL,MAAA,OAAA,GAAA,CAAW,eAAA,CAAgB,OAAA,IAAW,EAAC,EAAG,GAAA;AAAA,QAAI,OAC5C,OAAO,CAAA,KAAM,WACT,EAAE,KAAA,EAAO,GAAG,KAAA,EAAO,WAAA,CAAY,CAAC,CAAA,EAAE,GAClC,EAAE,GAAG,CAAA,EAAG,OAAO,CAAA,CAAE,KAAA,CAAM,aAAY;AAAE;AAAA,OAC3C;AAEA,MAAA,MAAM,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,YAAW,GAAI,eAAA;AACtC,MAAA,WAAA,GAAc,UAAA;AAAA,IAChB;AAEA,IAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,GAAG,WAAA,EAAY;AAAA,EACnD,CAAA;AAAA,EAGA,MAAA,EAAQ,CAAC,SAAA,EAAmB,MAAA,GAAqB,EAAC,MAAO;AAAA,IACvD,IAAA,EAAM,QAAA;AAAA,IACN,SAAA;AAAA,IACA,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,YAAA,EAAc,CAAC,SAAA,EAAmB,MAAA,GAAqB,EAAC,MAAO;AAAA,IAC7D,IAAA,EAAM,eAAA;AAAA,IACN,SAAA;AAAA,IACA,GAAG;AAAA,GACL,CAAA;AAAA;AAAA,EAGA,QAAA,EAAU,CAAC,MAAA,GAAqB,EAAC,MAAO;AAAA,IACtC,IAAA,EAAM,UAAA;AAAA,IACN,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,OAAA,EAAS,CAAC,MAAA,GAAqB,EAAC,MAAO;AAAA,IACrC,IAAA,EAAM,SAAA;AAAA,IACN,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,QAAA,EAAU,CAAC,MAAA,GAAqB,EAAC,MAAO;AAAA,IACtC,IAAA,EAAM,UAAA;AAAA,IACN,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,IAAA,EAAM,CAAC,QAAA,EAAmB,MAAA,GAAqB,EAAC,MAAO;AAAA,IACrD,IAAA,EAAM,MAAA;AAAA,IACN,QAAA;AAAA,IACA,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,KAAA,EAAO,CAAC,MAAA,GAAqB,EAAC,MAAO;AAAA,IACnC,IAAA,EAAM,OAAA;AAAA,IACN,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,QAAQ,CAAC,SAAA,GAAoB,CAAA,EAAG,MAAA,GAAqB,EAAC,MAAO;AAAA,IAC3D,IAAA,EAAM,QAAA;AAAA,IACN,SAAA;AAAA,IACA,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,SAAA,EAAW,CAAC,MAAA,GAAqB,EAAC,MAAO;AAAA,IACvC,IAAA,EAAM,WAAA;AAAA,IACN,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,MAAA,EAAQ,CAAC,MAAA,GAAqB,EAAC,MAAO;AAAA,IACpC,IAAA,EAAM,QAAA;AAAA,IACN,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,MAAA,EAAQ,CAAC,MAAA,GAAqB,EAAC,MAAO;AAAA,IACpC,IAAA,EAAM,QAAA;AAAA,IACN,GAAG;AAAA,GACL,CAAA;AAAA,EAEA,MAAA,EAAQ,CAAC,UAAA,EAAoB,MAAA,GAAqB,EAAC,MAAO;AAAA,IACxD,IAAA,EAAM,QAAA;AAAA,IACN,YAAA,EAAc;AAAA,MACZ,UAAA;AAAA,MACA,cAAA,EAAgB,QAAA;AAAA,MAChB,UAAA,EAAY,KAAA;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,GAAG,MAAA,CAAO;AAAA,KACZ;AAAA,IACA,GAAG;AAAA,GACL;AACF;ACtkBA,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAEpC,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,MAAM,oBAAoB,CAAA,CAAE,SAAS,+BAA+B,CAAA;AAAA,EACrF,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2CAA2C,CAAA;AAAA,EACjF,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA;AAAA,EAGjG,MAAA,EAAQA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA;AAAA,EAChC,QAAQA,KAAAA,CAAE,KAAA,CAAMA,MAAE,IAAA,CAAK,CAAC,UAAU,QAAA,EAAU,QAAQ,CAAC,CAAC,CAAA,CAAE,QAAQ,CAAC,QAAA,EAAU,QAAQ,CAAC,CAAA,CAAE,SAAS,qBAAqB,CAAA;AAAA,EACpH,UAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,IAAI,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,CAAE,SAAS,qDAAqD,CAAA;AAAA;AAAA,EAGvH,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,qDAAqD,CAAA;AAAA;AAAA,EAGnG,QAAA,EAAUA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,WAAW,MAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EAC9D,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sCAAsC;AACrE,CAAC,CAAA;AAMM,IAAM,sBAAA,GAAyB,qBAAqB,MAAA,CAAO;AAAA,EAChE,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kEAAkE;AACnG,CAAC;AAMM,IAAM,0BAAA,GAA6B,qBAAqB,MAAA,CAAO;AAAA,EACpE,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,MAAA,EAAQA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA,CAAE,SAAS,qCAAqC,CAAA;AAAA,EAC1E,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kDAAkD,CAAA;AAAA,EACxF,aAAA,EAAeA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI;AACzC,CAAC;AAMM,IAAM,4BAAA,GAA+B,qBAAqB,MAAA,CAAO;AAAA,EACtE,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,eAAe,CAAA;AAAA,EAC/B,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,2BAA2B,CAAA;AAAA,EACtD,WAAA,EAAaA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,SAAS,yCAAyC;AAC3G,CAAC;AAMM,IAAM,sBAAA,GAAyB,qBAAqB,MAAA,CAAO;AAAA,EAChE,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,MAAA,EAAQA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,OAAO,OAAA,EAAS,MAAM,CAAC,CAAA,CAAE,QAAA;AACpD,CAAC;AAiEM,IAAM,0BAAA,GAA6B,qBAAqB,MAAA,CAAO;AAAA,EACpE,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,EAC7B,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oEAAoE,CAAA;AAAA,EACnG,MAAA,EAAQA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA,CAAE,SAAS,mCAAmC;AAC1E,CAAC;AAWM,IAAM,oBAAA,GAAuB,qBAAqB,MAAA,CAAO;AAAA,EAC9D,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,EAC7B,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,wBAAwB,CAAA;AAAA,EACnD,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,+BAA+B;AACpF,CAAC;AAqHM,IAAM,qBAAA,GAAwB,qBAAqB,MAAA,CAAO;AAAA,EAC/D,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACvB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA,EAC9C,cAAcA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,EACnF,MAAA,EAAQA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,MAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,EACvF,OAAA,EAASA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,EAC9F,mBAAmBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wCAAwC,CAAA;AAAA,EAC1F,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,OAAA,CAAQ,GAAI,CAAA,CAAE,QAAA,CAAS,yBAAyB,CAAA;AAAA,EAC/E,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,EACzE,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,4CAA4C;AAC5G,CAAC;AAMM,IAAM,qBAAA,GAAwB,qBAAqB,MAAA,CAAO;AAAA,EAC/D,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,iEAAiE,CAAA;AAAA,EAC9F,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,yCAAyC;AACzG,CAAC;AAoBM,IAAM,uBAA2DA,KAAAA,CAAE,IAAA;AAAA,EAAK,MAC7EA,KAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,IAC3B,sBAAA;AAAA,IACA,0BAAA;AAAA,IACA,4BAAA;AAAA,IACA,sBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,qBAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACD;AACH;AAkLO,IAAM,2BAAA,GAA8B,qBAAqB,MAAA,CAAO;AAAA,EACrE,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,EAC7B,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,CAAA,8CAAA,CAAkD,CAAA;AAAA,EAC5E,IAAA,EAAM,oBAAA,CAAqB,QAAA,CAAS,iDAAiD,CAAA;AAAA,EACrF,SAAA,EAAW,oBAAA,CAAqB,QAAA,EAAS,CAAE,SAAS,kDAAkD;AACxG,CAAC;ACxhBM,IAAM,eAAA,GAAkBA,MAAE,KAAA,CAAM;AAAA,EACrCA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,CAAS,aAAa,CAAA;AAAA,EACjCA,MAAE,MAAA,CAAO;AAAA,IACP,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA;AAAA,IACf,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,IAAUA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAAS,GACpD;AACH,CAAC,CAAA;AAMM,IAAM,cAAA,GAAiBA,MAAE,KAAA,CAAM;AAAA,EACpCA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,CAAS,gDAAgD,CAAA;AAAA,EACpEA,MAAE,MAAA,CAAO;AAAA,IACP,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,IACf,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,IAAUA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAAS,GACpD;AACH,CAAC,CAAA;AAQM,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iBAAiB,CAAA;AAAA,EACxD,IAAA,EAAM,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EACvF,OAAA,EAASA,MAAE,KAAA,CAAM,eAAe,EAAE,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,EAC5F,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC;AACvF,CAAC,CAAA;AAK0BA,MAAE,MAAA,CAAO;AAAA,EAClC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,iDAAiD,CAAA;AAAA;AAAA,EAE3E,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,kCAAkC;AAClG,CAAC;AAwBM,IAAM,eAAA,GAA8CA,KAAAA,CAAE,IAAA,CAAK,MAAMA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE/E,IAAA,EAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,UAAA,EAAY,UAAA,EAAY,OAAA,EAAS,SAAS,CAAC,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA;AAAA,EAGrF,KAAA,EAAOA,MAAE,KAAA,CAAM,eAAe,EAAE,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,EAC7F,IAAA,EAAMA,MAAE,KAAA,CAAM,eAAe,EAAE,QAAA,EAAS,CAAE,SAAS,wCAAwC,CAAA;AAAA;AAAA,EAG3F,IAAIA,KAAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAO,EAAGA,MAAE,KAAA,CAAM;AAAA,IAC/BA,MAAE,MAAA,EAAO;AAAA;AAAA,IACT,gBAAA;AAAA,IACAA,KAAAA,CAAE,MAAM,gBAAgB;AAAA,GACzB,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA;AAAA,EAGpE,MAAA,EAAQA,KAAAA,CAAE,KAAA,CAAM,gBAAgB,EAAE,QAAA,EAAS;AAAA;AAAA,EAG3C,SAASA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA,EAC3E,MAAA,EAAQA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAG,eAAe,EAAE,QAAA,EAAS;AAAA;AAAA,EAGvD,IAAA,EAAMA,MAAE,MAAA,CAAO;AAAA,IACb,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC3B,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IACjC,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA;AAAA,IAE3B,gBAAgBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iDAAiD;AAAA,GACjG,EAAE,QAAA;AACL,CAAC,CAAC,CAAA;AAKK,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,EAAA,EAAI,yBAAA,CAA0B,QAAA,CAAS,mBAAmB,CAAA;AAAA,EAC1D,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAGjC,aAAA,EAAeA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,2CAA2C,CAAA;AAAA;AAAA,EAGhH,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kBAAkB,CAAA;AAAA;AAAA,EAG/C,MAAA,EAAQA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAG,eAAe,CAAA,CAAE,QAAA,CAAS,aAAa,CAAA;AAAA;AAAA,EAGpE,EAAA,EAAIA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,MAAM,CAACA,KAAAA,CAAE,QAAO,EAAG,gBAAA,EAAkBA,MAAE,KAAA,CAAM,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAA;AAC/F,CAAC,CAAA;;;ACzHM,IAAM,SAAA,GAAYA,MAAE,IAAA,CAAK;AAAA,EAC9B,KAAA;AAAA,EAAO,MAAA;AAAA;AAAA,EACP,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU,QAAA;AAAA;AAAA,EACpB,QAAA;AAAA;AAAA,EACA,MAAA;AAAA;AAAA,EACA,WAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,SAAA;AAAA,EAAW,OAAA;AAAA;AAAA,EACX,QAAA;AAAA,EAAU;AAAA;AACZ,CAAC;AAqBM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAEzC,YAAA,EAAcA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,oDAAoD,CAAA;AAAA;AAAA,EAGtG,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA,EAGhF,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,kCAAkC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjF,UAAA,EAAYA,MAAE,KAAA,CAAM,SAAS,EAAE,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA,EAGxF,KAAA,EAAOA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iDAAiD,CAAA;AAAA;AAAA,EAG5F,KAAA,EAAOA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,2DAA2D,CAAA;AAAA;AAAA,EAGtG,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,2CAA2C,CAAA;AAAA;AAAA,EAG3F,KAAA,EAAOA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,4CAA4C,CAAA;AAAA;AAAA,EAGtF,GAAA,EAAKA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,+CAA+C,CAAA;AAAA;AAAA,EAGvF,KAAA,EAAOA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,2BAA2B;AACvE,CAAC;AAcM,IAAM,WAAA,GAAcA,MAAE,MAAA,CAAO;AAAA,EAClC,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,EAClF,MAAA,EAAQA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACnE,MAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,UAAU,CAAC,EAAE,QAAA,EAAS,CAAE,QAAQ,OAAO,CAAA,CAAE,SAAS,sBAAsB,CAAA;AAAA,EACtH,MAAA,EAAQA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,uCAAuC,CAAA;AAAA,EAC9F,SAASA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oEAAoE;AAC9G,CAAC;AAaM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,MAAA,EAAQA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA,CAAE,SAAS,gDAAgD,CAAA;AAAA,EACrF,aAAA,EAAeA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,0CAA0C,CAAA;AAAA,EACjG,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oCAAoC;AACvF,CAAC;AAcM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,sCAAsC,CAAA;AAAA,EACpE,QAAA,EAAUA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,YAAY,QAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,2GAA2G,CAAA;AAAA,EACvK,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,QAAQ,WAAW,CAAA,CAAE,SAAS,kCAAkC,CAAA;AAAA,EACxF,iBAAA,EAAmBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,2DAA2D;AACpH,CAAC;AAaM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,wCAAwC,CAAA;AAAA,EACtE,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,QAAQ,YAAY,CAAA,CAAE,SAAS,sCAAsC,CAAA;AAAA,EACvF,aAAA,EAAeA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,wCAAwC;AAC7F,CAAC;AAcM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,0BAA0B,CAAA;AAAA,EACxD,QAAA,EAAUA,KAAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,SAAS,gBAAgB,CAAC,CAAA,CAAE,QAAA,CAAS,6FAA6F,CAAA;AAAA,EAChK,aAAA,EAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,8DAA8D,CAAA;AAAA,EACnH,YAAA,EAAcA,MAAE,MAAA,EAAO,CAAE,QAAQ,SAAS,CAAA,CAAE,SAAS,yCAAyC;AAChG,CAAC;AAcM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA,EAC/C,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,2BAA2B,CAAA;AAAA,EACzD,QAAA,EAAUA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,QAAQ,MAAM,CAAC,CAAA,CAAE,QAAA,CAAS,iGAAiG,CAAA;AAAA,EACtJ,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,4BAA4B,CAAA;AAAA,EACrD,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mEAAmE;AAC9G,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AAElB,EAAA,IAAI,IAAA,CAAK,QAAA,KAAa,OAAA,IAAW,CAAC,KAAK,QAAA,EAAU;AAC/C,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT,CAAA,EAAG;AAAA,EACD,OAAA,EAAS;AACX,CAAC;AAaM,IAAM,eAAA,GAAkBA,MAAE,MAAA,CAAO;AAAA,EACtC,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,4BAA4B,CAAA;AAAA,EAC1D,MAAA,EAAQA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAC,CAAC,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA,EACzF,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+DAA+D;AAClG,CAAC;AAyBD,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAIhC,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,MAAM,oBAAoB,CAAA,CAAE,SAAS,6CAA6C,CAAA;AAAA,EACnG,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA,EACtF,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA,EAC3F,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,EACnF,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA;AAAA;AAAA;AAAA,EAKxF,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,2DAA2D,CAAA;AAAA,EACzG,MAAA,EAAQA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,IAAI,CAAA,CAAE,QAAA,CAAS,iCAAiC,CAAA;AAAA,EACvF,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,4CAA4C,CAAA;AAAA,EACrG,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,kDAAkD,CAAA;AAAA;AAAA;AAAA;AAAA,EAK3G,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,oDAAoD,CAAA;AAAA,EAClH,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yDAAyD,CAAA;AAAA;AAAA;AAAA;AAAA,EAKnG,QAAQA,KAAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAO,CAAE,MAAM,oBAAA,EAAsB;AAAA,IACtD,OAAA,EAAS;AAAA,GACV,CAAA,EAAG,WAAW,CAAA,CAAE,SAAS,6DAA6D,CAAA;AAAA,EACvF,OAAA,EAASA,MAAE,KAAA,CAAM,WAAW,EAAE,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhF,OAAA,EAAS,mBAAA,CAAoB,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA;AAAA,EAGpG,UAAA,EAAY,sBAAA,CAAuB,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA;AAAA,EAGtG,UAAA,EAAY,sBAAA,CAAuB,QAAA,EAAS,CAAE,SAAS,sDAAsD,CAAA;AAAA;AAAA,EAG7G,YAAA,EAAc,wBAAA,CAAyB,QAAA,EAAS,CAAE,SAAS,kDAAkD,CAAA;AAAA;AAAA,EAG7G,GAAA,EAAK,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,sEAAsE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/G,WAAA,EAAaA,MAAE,KAAA,CAAM,oBAAoB,EAAE,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS9F,aAAA,EAAeA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAG,kBAAkB,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gFAAgF,CAAA;AAAA;AAAA;AAAA;AAAA,EAK5J,kBAAkBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iGAAiG,CAAA;AAAA,EAClJ,UAAA,EAAYA,MAAE,MAAA,CAAO;AAAA,IACnB,IAAA,EAAMA,MAAE,IAAA,CAAK,CAAC,QAAQ,YAAY,CAAC,CAAA,CAAE,QAAA,CAAS,wEAAwE,CAAA;AAAA,IACtH,eAAeA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uEAAuE,CAAA;AAAA,IACrH,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,6CAA6C;AAAA,GACvG,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,2DAA2D,CAAA;AAAA,EAClF,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wEAAwE,CAAA;AAAA,EACpH,aAAA,EAAeA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wCAAwC,CAAA;AAAA;AAAA;AAAA;AAAA,EAK/F,MAAA,EAAQ,kBAAA,CAAmB,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA;AAAA;AAAA;AAAA,EAK5E,MAAA,EAAQ,kBAAA,CAAmB,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA,EAGhF,WAAA,EAAaA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mCAAmC,CAAA;AAAA;AAAA,EAGxF,YAAA,EAAcA,KAAAA,CAAE,IAAA,CAAK,CAAC,SAAA,EAAW,MAAA,EAAQ,YAAA,EAAc,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA;AAAA,EAG3G,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uDAAuD;AAC1G,CAAC,CAAA;AAMD,SAAS,iBAAiB,IAAA,EAAsB;AAC9C,EAAA,OAAO,KACJ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAA,IAAA,KAAQ,KAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CACxD,KAAK,GAAG,CAAA;AACb;AAKO,IAAM,YAAA,GAAe,MAAA,CAAO,MAAA,CAAO,gBAAA,EAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmB1D,MAAA,EAAQ,CAAC,MAAA,KAA4D;AACnE,IAAA,MAAM,YAAA,GAAe;AAAA,MACnB,GAAG,MAAA;AAAA,MACH,KAAA,EAAO,MAAA,CAAO,KAAA,IAAS,gBAAA,CAAiB,OAAO,IAAI;AAAA,KACrD;AACA,IAAA,OAAO,gBAAA,CAAiB,MAAM,YAAY,CAAA;AAAA,EAC5C;AACF,CAAC;AA8BM,IAAM,sBAAsBA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,QAAQ,CAAC;AAepD,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE5C,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oCAAoC,CAAA;AAAA;AAAA,EAGhE,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAG,WAAW,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA;AAAA,EAGtF,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wCAAwC,CAAA;AAAA;AAAA,EAG9E,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA;AAAA,EAG3F,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA;AAAA,EAG1F,WAAA,EAAaA,MAAE,KAAA,CAAM,oBAAoB,EAAE,QAAA,EAAS,CAAE,SAAS,6DAA6D,CAAA;AAAA;AAAA,EAG5H,OAAA,EAASA,MAAE,KAAA,CAAM,WAAW,EAAE,QAAA,EAAS,CAAE,SAAS,oDAAoD,CAAA;AAAA;AAAA,EAGtG,UAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,CAAE,SAAS,yCAAyC;AAC5G,CAAC;AClbM,IAAM,SAAA,GAAYA,MAAE,IAAA,CAAK;AAAA;AAAA,EAE9B,YAAA;AAAA,EAAc,WAAA;AAAA,EACd,eAAA;AAAA,EAAiB,cAAA;AAAA,EACjB,aAAA;AAAA,EAAe,YAAA;AAAA,EACf,iBAAA;AAAA,EAAmB,gBAAA;AAAA;AAAA,EAGnB,cAAA;AAAA,EAAgB,aAAA;AAAA,EAChB,cAAA;AAAA,EAAgB,aAAA;AAAA,EAChB,cAAA;AAAA,EAAgB,aAAA;AAAA;AAAA,EAGhB,kBAAA;AAAA,EAAoB,iBAAA;AAAA,EACpB,kBAAA;AAAA,EAAoB;AACtB,CAAC;AAcM,IAAM,UAAA,GAAaA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjC,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,MAAM,oBAAoB,CAAA,CAAE,SAAS,+BAA+B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKrF,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS1E,QAAQA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAC,CAAC,CAAA,CAAE,SAAS,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9E,QAAQA,KAAAA,CAAE,KAAA,CAAM,SAAS,CAAA,CAAE,SAAS,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtD,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAM,CAACA,MAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,QAAA,EAAU,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,6DAA6D,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS9H,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAG,CAAA,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ/D,KAAA,EAAOA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUhF,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,CAAA,0FAAA,CAA8F,CAAA;AAAA;AAAA;AAAA;AAAA,EAKxI,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA;AAAA;AAAA;AAAA,EAK/F,WAAA,EAAaA,MAAE,MAAA,CAAO;AAAA,IACpB,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,QAAQ,CAAC,CAAA,CAAE,SAAS,mCAAmC,CAAA;AAAA,IAC9E,SAAA,EAAWA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAI,CAAA,CAAE,SAAS,+CAA+C;AAAA,GAC7F,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA;AAAA;AAAA;AAAA,EAKhE,SAASA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mEAAmE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3G,OAAA,EAASA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,KAAK,CAAC,CAAA,CAAE,OAAA,CAAQ,OAAO,CAAA,CAAE,QAAA,CAAS,yBAAyB;AACvF,CAAC;AAWM,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAExC,IAAIA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA,EAGpE,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA;AAAA,EAGjB,KAAA,EAAO,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaP,KAAA,EAAOA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,0BAA0B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5E,QAAQA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7E,QAAA,EAAUA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/F,OAAA,EAASA,MAAE,MAAA,CAAO;AAAA,IAChB,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC9B,OAAOA,KAAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,IACpC,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAClC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhD,aAAaA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM1E,EAAA,EAAIA,KAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,2BAA2B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYpD,KAAKA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/E,IAAA,EAAMA,MAAE,MAAA,CAAO;AAAA,IACb,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IACxB,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC1B,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC5B,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,4BAA4B;AACrD,CAAC;AC3MM,IAAM,aAAA,GAAgBA,MAAE,IAAA,CAAK;AAAA,EAClC,MAAA;AAAA;AAAA,EACA,UAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,OAAA;AAAA;AAAA,EACA,MAAA;AAAA;AAAA,EACA,YAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAC;AAKM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAEzC,QAAQA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAC,CAAC,CAAA,CAAE,SAAS,yBAAyB,CAAA;AAAA;AAAA,EAGrF,QAAQA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAC,CAAC,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA;AAAA,EAGpF,SAAA,EAAW,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAA;AAAA;AAAA,EAGvC,MAAA,EAAQA,MAAE,MAAA,CAAO;AAAA;AAAA,IAEf,KAAA,EAAOA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA;AAAA,IAG5B,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,IAC5B,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,IAC/B,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,IAC7B,UAAA,EAAYA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA;AAAA;AAAA,IAGjC,QAAA,EAAUA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,IAAUA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA;AAAA,IAGrD,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAChC,EAAE,QAAA;AACL,CAAC;AAkBM,IAAM,aAAA,GAAgBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAEpC,IAAA,EAAM,yBAAA,CAA0B,QAAA,CAAS,4CAA4C,CAAA;AAAA,EACrF,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAG3B,YAAA,EAAcA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,KAAK,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,EACjE,YAAA,EAAcA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA,EAGtD,YAAA,EAAcA,KAAAA,CAAE,KAAA,CAAM,kBAAkB,CAAA;AAAA;AAAA,EAGxC,IAAA,EAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,UAAU,QAAQ,CAAC,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EAC7D,SAAA,EAAWA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,yCAAyC,CAAA;AAAA;AAAA,EAG5F,YAAA,EAAc,WAAA,CAAY,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA,EAG5E,WAAA,EAAaA,KAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,SAAS,OAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EAC9D,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAQ,GAAI;AACpC,CAAC;ACvEM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE7C,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAG5B,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAG9B,KAAA,EAAOA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA;AAAA,EAGrC,WAAA,EAAaA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA;AAAA,EAG3C,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAGnC,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAGjC,WAAA,EAAaA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA;AAAA,EAGlC,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACtB,CAAC,CAAA;;;ACjBM,IAAM,sBAAA,GAAyBA,MAAE,KAAA,CAAM;AAAA,EAC5CA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAA;AAAA,EAChC;AACF,CAAC,CAAA,CAAE,SAAS,qCAAqC;AAS1C,IAAM,oBAAA,GAAuBA,MAAE,KAAA,CAAM;AAAA,EAC1CA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,MAAM,CAAC,CAAC,CAAA;AAAA,EAC5CA,MAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,MAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,EAAGA,KAAAA,CAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;AAAA,EAC3DA,KAAAA,CAAE,MAAM,cAAc;AACxB,CAAC,CAAA,CAAE,SAAS,uBAAuB;AAY5B,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE9C,OAAA,EAAS,uBAAuB,QAAA;AAClC,CAAC;AAMM,IAAM,4BAAA,GAA+B,wBAAwB,MAAA,CAAO;AAAA;AAAA,EAEzE,MAAA,EAAQ,uBAAuB,QAAA,EAAS;AAAA;AAAA,EAGxC,QAAQA,KAAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA;AAAA,EAGrC,IAAA,EAAM,qBAAqB,QAAA,EAAS;AAAA;AAAA,EAGpC,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAGxC,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvC,GAAA,EAAKA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtC,UAAUA,KAAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA;AAChC,CAAC,CAAA,CAAE,SAAS,iDAAiD;AAMtD,IAAM,6BAAA,GAAgC,wBAAwB,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM1E,WAAWA,KAAAA,CAAE,OAAA,GAAU,OAAA,CAAQ,IAAI,EAAE,QAAA;AACvC,CAAC,CAAA,CAAE,SAAS,0CAA0C;AAM/C,IAAM,6BAAA,GAAgC,wBAAwB,MAAA,CAAO;AAAA;AAAA,EAE1E,MAAA,EAAQ,uBAAuB,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxC,QAAQA,KAAAA,CAAE,OAAA,GAAU,OAAA,CAAQ,KAAK,EAAE,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5C,OAAOA,KAAAA,CAAE,OAAA,GAAU,OAAA,CAAQ,KAAK,EAAE,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3C,WAAWA,KAAAA,CAAE,OAAA,GAAU,OAAA,CAAQ,KAAK,EAAE,QAAA;AACxC,CAAC,CAAA,CAAE,SAAS,0CAA0C;AAM/C,IAAM,6BAAA,GAAgC,wBAAwB,MAAA,CAAO;AAAA;AAAA,EAE1E,MAAA,EAAQ,uBAAuB,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOxC,OAAOA,KAAAA,CAAE,OAAA,GAAU,OAAA,CAAQ,KAAK,EAAE,QAAA;AACpC,CAAC,CAAA,CAAE,SAAS,0CAA0C;AAM/C,IAAM,gCAAA,GAAmC,wBAAwB,MAAA,CAAO;AAAA;AAAA,EAE7E,MAAA,EAAQ,uBAAuB,QAAA,EAAS;AAAA;AAAA,EAGxC,SAASA,KAAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtC,YAAA,EAAcA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAO;AAAA,IAC7B,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,IAChB,MAAA,EAAQA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,OAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,gBAAgB,CAAC,CAAA;AAAA,IACtE,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC5B,CAAC,CAAA,CAAE,QAAA;AACN,CAAC,CAAA,CAAE,SAAS,6CAA6C;AAMlD,IAAM,4BAAA,GAA+B,wBAAwB,MAAA,CAAO;AAAA;AAAA,EAEzE,MAAA,EAAQ,uBAAuB,QAAA;AACjC,CAAC,CAAA,CAAE,SAAS,yCAAyC;AAM9C,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA,EAC/C,IAAA,EAAMA,KAAAA,CAAE,QAAA,EAAS,CACd,KAAA,CAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,4BAAA,CAA6B,QAAA,EAAU,CAAC,CAAC,CAAA,CACpE,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAC,CAAA;AAAA,EAEzC,OAAA,EAASA,MAAE,QAAA,EAAS,CACjB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,6BAA6B,QAAA,EAAU,CAAC,CAAC,CAAA,CACpE,MAAA,CAAOA,MAAE,OAAA,CAAQA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EAEhC,MAAA,EAAQA,MAAE,QAAA,EAAS,CAChB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAGA,MAAE,KAAA,CAAM,CAACA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,EAAGA,KAAAA,CAAE,MAAMA,KAAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAO,EAAGA,MAAE,OAAA,EAAS,CAAC,CAAC,CAAC,CAAA,EAAG,8BAA8B,QAAA,EAAU,CAAC,CAAC,CAAA,CAC/J,MAAA,CAAOA,MAAE,OAAA,CAAQA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EAEhC,MAAA,EAAQA,KAAAA,CAAE,QAAA,EAAS,CAChB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,EAAG,6BAAA,CAA8B,QAAA,EAAU,CAAC,CAAC,CAAA,CACxG,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EAEhC,MAAA,EAAQA,MAAE,QAAA,EAAS,CAChB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,8BAA8B,QAAA,EAAU,CAAC,CAAC,CAAA,CACrE,MAAA,CAAOA,MAAE,OAAA,CAAQA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EAEhC,KAAA,EAAOA,MAAE,QAAA,EAAS,CACf,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,6BAA6B,QAAA,EAAU,CAAC,CAAC,CAAA,CACpE,MAAA,CAAOA,MAAE,OAAA,CAAQA,KAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,EAE/B,SAAA,EAAWA,KAAAA,CAAE,QAAA,EAAS,CACnB,KAAA,CAAMA,MAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,gCAAgC,CAAC,CAAC,CAAA,CAC7D,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,MAAMA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAC;AAC3C,CAAC,CAAA,CAAE,SAAS,+BAA+B;AAgBpC,IAAM,2BAAA,GAA8BA,MAAE,MAAA,CAAO;AAAA,EAClD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACxB,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,KAAA,EAAO,6BAA6B,QAAA;AACtC,CAAC;AAEM,IAAM,8BAAA,GAAiCA,MAAE,MAAA,CAAO;AAAA,EACrD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,EAC3B,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,KAAA,EAAO,6BAA6B,QAAA;AACtC,CAAC;AAEM,IAAM,6BAAA,GAAgCA,MAAE,MAAA,CAAO;AAAA,EACpD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EAC1B,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,OAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,GAAGA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAC,CAAC,CAAA;AAAA,EAC7F,OAAA,EAAS,8BAA8B,QAAA;AACzC,CAAC;AAEM,IAAM,6BAAA,GAAgCA,MAAE,MAAA,CAAO;AAAA,EACpD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EAC1B,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,IAAA,EAAMA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAA;AAAA,EACtC,EAAA,EAAIA,KAAAA,CAAE,KAAA,CAAM,CAACA,MAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA,EAC1G,OAAA,EAAS,8BAA8B,QAAA;AACzC,CAAC;AAEM,IAAM,6BAAA,GAAgCA,MAAE,MAAA,CAAO;AAAA,EACpD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EAC1B,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,EAAA,EAAIA,KAAAA,CAAE,KAAA,CAAM,CAACA,MAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA,EAC1G,OAAA,EAAS,8BAA8B,QAAA;AACzC,CAAC;AAEM,IAAM,4BAAA,GAA+BA,MAAE,MAAA,CAAO;AAAA,EACnD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACzB,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,KAAA,EAAO,6BAA6B,QAAA;AACtC,CAAC;AAEM,IAAM,gCAAA,GAAmCA,MAAE,MAAA,CAAO;AAAA,EACvD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,WAAW,CAAA;AAAA,EAC7B,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,KAAA,EAAO;AACT,CAAC;AAMM,IAAM,8BAAA,GAAiCA,MAAE,MAAA,CAAO;AAAA,EACrD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA;AAAA,EAE3B,OAAA,EAASA,MAAE,OAAA,EAAQ;AAAA;AAAA,EAEnB,OAAA,EAASA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,IAAUA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC7C,CAAC;AAMM,IAAM,iCAAA,GAAoCA,MAAE,MAAA,CAAO;AAAA,EACxD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC9B,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA;AAAA,EAEjB,MAAA,EAAQA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA;AAAA;AAAA,EAE1B,MAAA,EAAQ,uBAAuB,QAAA,EAAS;AAAA;AAAA,EAExC,QAAQA,KAAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA;AAAA,EAErC,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAE5C,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACxB,CAAC;AAMM,IAAM,4BAAA,GAA+BA,MAAE,MAAA,CAAO;AAAA,EACnD,MAAA,EAAQA,KAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACzB,QAAA,EAAUA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,mBAAmB,QAAA,EAAU;AAAA,IAC/C,2BAAA;AAAA,IACA,8BAAA;AAAA,IACA,6BAAA;AAAA,IACA,6BAAA;AAAA,IACA,6BAAA;AAAA,IACA,4BAAA;AAAA,IACA,gCAAA;AAAA,IACA,8BAAA;AAAA,IACA;AAAA,GACD,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMF,aAAaA,KAAAA,CAAE,OAAA,GAAU,OAAA,CAAQ,IAAI,EAAE,QAAA;AACzC,CAAC;AAMM,IAAM,uBAAA,GAA0BA,KAAAA,CAAE,kBAAA,CAAmB,QAAA,EAAU;AAAA,EACpE,2BAAA;AAAA,EACA,8BAAA;AAAA,EACA,6BAAA;AAAA,EACA,6BAAA;AAAA,EACA,6BAAA;AAAA,EACA,4BAAA;AAAA,EACA,gCAAA;AAAA,EACA,4BAAA;AAAA,EACA,8BAAA;AAAA,EACA;AACF,CAAC,CAAA,CAAE,SAAS,mCAAmC;AChVRA,MAAE,IAAA,CAAK;AAAA,EAC5C,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAC9B,gBAAA;AAAA,EAAkB,YAAA;AAAA,EAAc,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU;AACtD,CAAC,CAAA,CAAE,SAAS,gCAAgC;AAIrC,IAAM,iBAAA,GAAoBA,MAAE,IAAA,CAAK,CAAC,OAAO,MAAM,CAAC,CAAA,CACpD,QAAA,CAAS,sBAAsB,CAAA;AAIJA,MAAE,MAAA,CAAO;AAAA,EACrC,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,uBAAuB,CAAA;AAAA,EAClD,KAAA,EAAO,iBAAA,CAAkB,QAAA,CAAS,gBAAgB;AACpD,CAAC,CAAA,CAAE,SAAS,+BAA+B;AAIVA,MAAE,IAAA,CAAK;AAAA,EACtC,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU;AAChC,CAAC,CAAA,CAAE,SAAS,2BAA2B;AAIhC,IAAM,kBAAA,GAAqBA,MAAE,IAAA,CAAK;AAAA,EACvC,kBAAA;AAAA,EAAoB,gBAAA;AAAA,EAAkB,iBAAA;AAAA,EAAmB,cAAA;AAAA,EAAgB;AAC3E,CAAC,CAAA,CAAE,SAAS,oDAAoD,CAAA;AAI/BA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,MAAM,CAAC,CAAA,CAClE,QAAA,CAAS,yBAAyB;;;AC/B9B,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAK1C,aAAaA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKjE,SAASA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,EAKvD,WAAWA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,cAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzD,YAAA,EAAcA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxG,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B;AACxE,CAAC;AASM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ/C,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKvE,IAAA,EAAMA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,0BAA0B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKnE,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKvE,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASvE,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA;AAAA;AAAA,EAKjF,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA;AAAA;AAAA,EAKjF,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUjF,YAAA,EAAcA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9E,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA;AAAA;AAAA,EAKjF,eAAA,EAAiBA,MAAE,KAAA,CAAM,kBAAkB,EAAE,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAY7F,YAAA,EAAcA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlF,iBAAA,EAAmBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,6CAA6C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpG,YAAA,EAAcA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,2BAA2B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5E,eAAA,EAAiBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,kCAAkC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtF,oBAAA,EAAsBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,4CAA4C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtG,eAAA,EAAiBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,qBAAqB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK1E,QAAA,EAAUA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iDAAiD,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/F,KAAA,EAAOA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU/D,cAAA,EAAgBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,2BAA2B,CAAA;AAAA;AAAA;AAAA;AAAA,EAK/E,SAAA,EAAWA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA;AAAA;AAAA,EAK7E,eAAA,EAAiBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlF,SAAA,EAAWA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,+CAA+C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9F,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,2BAA2B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3E,WAAA,EAAaA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7E,YAAA,EAAcA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,kDAAkD,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASpG,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,2CAA2C,CAAA;AAAA;AAAA;AAAA;AAAA,EAK3F,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9E,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,wCAAwC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASrF,iBAAA,EAAmBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKpF,kBAAA,EAAoBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,yDAAyD,CAAA;AAAA;AAAA;AAAA;AAAA,EAKjH,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,+BAA+B;AACjF,CAAC;AAQM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAI5C,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9C,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK7C,QAAA,EAAU,wBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASV,OAAA,EAASA,MAAE,QAAA,EAAS,CACjB,MAAMA,KAAAA,CAAE,KAAA,CAAM,EAAE,CAAC,EACjB,MAAA,CAAOA,KAAAA,CAAE,QAAQA,KAAAA,CAAE,IAAA,EAAM,CAAC,CAAA,CAC1B,SAAS,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlC,UAAA,EAAYA,MAAE,QAAA,EAAS,CACpB,MAAMA,KAAAA,CAAE,KAAA,CAAM,EAAE,CAAC,EACjB,MAAA,CAAOA,KAAAA,CAAE,QAAQA,KAAAA,CAAE,IAAA,EAAM,CAAC,CAAA,CAC1B,SAAS,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9B,WAAA,EAAaA,MAAE,QAAA,EAAS,CACrB,MAAMA,KAAAA,CAAE,KAAA,CAAM,EAAE,CAAC,EACjB,MAAA,CAAOA,KAAAA,CAAE,QAAQA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAA,CAC7B,SAAS,cAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM1B,YAAA,EAAcA,KAAAA,CAAE,QAAA,EAAS,CACtB,KAAA,CAAMA,KAAAA,CAAE,KAAA,CAAM,EAAE,CAAC,CAAA,CACjB,MAAA,CAAOA,MAAE,MAAA,CAAO;AAAA,IACf,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,IAChB,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,IACf,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,IACjB,OAAA,EAASA,MAAE,MAAA;AAAO,GACnB,EAAE,QAAA,EAAU,EACZ,QAAA,EAAS,CACT,SAAS,gCAAgC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsB5C,OAAA,EAASA,KAAAA,CAAE,QAAA,EAAS,CACjB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,SAAQ,EAAGA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,SAAS,CAAA,CAAE,QAAA,EAAS,EAAG,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CAC7F,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,MAAE,OAAA,EAAS,CAAC,CAAA,CAC7B,SAAS,qBAAqB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBjC,MAAMA,KAAAA,CAAE,QAAA,EAAS,CACd,KAAA,CAAMA,MAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,IAAU,WAAA,EAAa,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CACxE,MAAA,CAAOA,KAAAA,CAAE,QAAQA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAC,CAAC,CAAA,CAC5D,SAAS,cAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW1B,UAAA,EAAYA,KAAAA,CAAE,QAAA,EAAS,CACpB,KAAA,CAAMA,MAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,WAAA,EAAa,oBAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CACxE,MAAA,CAAOA,MAAE,OAAA,EAAS,CAAA,CAClB,QAAA,CAAS,gCAAgC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAY5C,OAAA,EAASA,KAAAA,CAAE,QAAA,EAAS,CACjB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,QAAO,EAAG,WAAA,EAAa,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CACxE,MAAA,CAAOA,MAAE,OAAA,CAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,EAAE,QAAA,EAAU,CAAC,CAAA,CAC9D,SAAS,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW7B,QAAQA,KAAAA,CAAE,QAAA,GACP,KAAA,CAAMA,KAAAA,CAAE,MAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAGA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAA,EAAG,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,EAC9F,MAAA,CAAOA,KAAAA,CAAE,QAAQA,KAAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAO,EAAGA,MAAE,OAAA,EAAS,CAAC,CAAC,CAAA,CACnD,SAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAY3B,MAAA,EAAQA,MAAE,QAAA,EAAS,CAChB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAGA,MAAE,MAAA,EAAO,CAAE,GAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAA,EAAGA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,MAAE,OAAA,EAAS,GAAG,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CACzH,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,MAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAC,CAAA,CACnD,QAAA,CAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW3B,MAAA,EAAQA,MAAE,QAAA,EAAS,CAChB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAGA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAA,EAAGA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,IAAY,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CAC9H,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,MAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAC,CAAA,CACnD,QAAA,CAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU3B,MAAA,EAAQA,KAAAA,CAAE,QAAA,EAAS,CAChB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAA,EAAG,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CACtF,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,MAAE,OAAA,EAAS,CAAC,CAAA,CAC7B,SAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU3B,KAAA,EAAOA,KAAAA,CAAE,QAAA,EAAS,CACf,KAAA,CAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,WAAA,CAAY,QAAA,EAAS,EAAG,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CACnF,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAC5B,SAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc3B,UAAA,EAAYA,MAAE,QAAA,EAAS,CACpB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,IAAUA,KAAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAC,GAAG,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,EACvG,MAAA,CAAOA,KAAAA,CAAE,QAAQA,KAAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAC,CAAC,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS/D,UAAA,EAAYA,KAAAA,CAAE,QAAA,EAAS,CACpB,KAAA,CAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAO,EAAE,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,EAAA,CAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAMA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,EAAG,CAAC,CAAA,EAAG,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CAC1J,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAC,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ/D,UAAA,EAAYA,KAAAA,CAAE,QAAA,EAAS,CACpB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAO,CAAE,EAAA,CAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,EAAG,mBAAA,CAAoB,UAAU,CAAC,CAAC,CAAA,CAC/F,OAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW7B,UAAA,EAAYA,KAAAA,CAAE,QAAA,EAAS,CACpB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,QAAO,EAAG,WAAA,EAAaA,KAAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,EAAG,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CAC3G,MAAA,CAAOA,KAAAA,CAAE,QAAQA,KAAAA,CAAE,MAAA,EAAQ,CAAC,EAC5B,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUZ,UAAA,EAAYA,KAAAA,CAAE,QAAA,EAAS,CACpB,KAAA,CAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,WAAA,EAAa,mBAAA,CAAoB,UAAU,CAAC,CAAC,CAAA,CACxE,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAC5B,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWZ,gBAAA,EAAkBA,MAAE,QAAA,EAAS,CAC1B,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,CAAO;AAAA,IACvB,cAAA,EAAgB,mBAAmB,QAAA;AAAS,GAC7C,CAAA,CAAE,QAAA,EAAU,CAAC,CAAC,CAAA,CACd,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,MAAE,OAAA,EAAS,CAAC,CAAA,CAC7B,SAAS,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/B,MAAA,EAAQA,MAAE,QAAA,EAAS,CAChB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAC,CAAA,CAC5B,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,MAAM,CAAC,CAAA,CAC1B,QAAA,CAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhC,QAAA,EAAUA,MAAE,QAAA,EAAS,CAClB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAC,CAAA,CAC5B,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,MAAM,CAAC,CAAA,CAC1B,QAAA,CAAS,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAelC,UAAA,EAAYA,KAAAA,CAAE,QAAA,EAAS,CACpB,KAAA,CAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAQ,EAAG,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CACxE,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,IAAA,EAAM,CAAC,CAAA,CAC1B,SAAS,0BAA0B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtC,SAAA,EAAWA,MAAE,QAAA,EAAS,CACnB,MAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,oBAAoB,QAAA,EAAU,CAAC,CAAC,CAAA,CAC3D,MAAA,CAAOA,MAAE,OAAA,CAAQA,KAAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU7B,OAAA,EAASA,KAAAA,CAAE,QAAA,EAAS,CACjB,KAAA,CAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAG,WAAA,EAAa,mBAAA,CAAoB,UAAU,CAAC,CAAC,CAAA,CACxE,MAAA,CAAOA,KAAAA,CAAE,OAAA,CAAQA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAA,CAC7B,QAAA;AACL,CAAC;AAMM,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,uCAAuC,CAAA;AAAA,EAClF,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA,CAAE,QAAA,CAAS,uCAAuC,CAAA;AAAA,EACnF,iBAAA,EAAmBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,GAAK,CAAA,CAAE,QAAA,CAAS,6CAA6C,CAAA;AAAA,EAC1G,uBAAA,EAAyBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,GAAI,CAAA,CAAE,QAAA,CAAS,6CAA6C;AACjH,CAAC;AAMM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sBAAsB,CAAA;AAAA,EAChD,IAAA,EAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,YAAY,CAAC,CAAA,CAAE,SAAS,sBAAsB,CAAA;AAAA,EACxG,YAAA,EAAc,wBAAA,CAAyB,QAAA,CAAS,yBAAyB,CAAA;AAAA,EACzE,kBAAkBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EACtG,UAAA,EAAY,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,+BAA+B;AAClF,CAAC;ACtmBM,IAAM,gBAAA,GAAmBA,MAAE,IAAA,CAAK;AAAA,EACrC,YAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAC;AAoBM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA,EAC5C,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gDAAgD,CAAA;AAAA,EAC1E,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,0DAA0D,CAAA;AAAA,EACtF,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kDAAkD,CAAA;AAAA,EAC/E,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,uCAAuC,CAAA;AAAA,EACjE,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,0DAA0D,CAAA;AAAA,EACxF,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EACnF,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iDAAiD,CAAA;AAAA,EACtF,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gDAAgD;AACzF,CAAC;AAgBM,IAAM,eAAA,GAAkBA,MAAE,MAAA,CAAO;AAAA,EACtC,kBAAA,EAAoBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,8CAA8C,CAAA;AAAA,EACrG,IAAIA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,EACxE,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,EAC9E,KAAKA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC;AAC/E,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AAElB,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,KAAS,MAAA;AAC9B,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,KAAQ,MAAA;AAC5B,EAAA,OAAO,OAAA,KAAY,MAAA;AACrB,CAAA,EAAG;AAAA,EACD,OAAA,EAAS;AACX,CAAC;AAsEM,IAAM,qBAAA,GAAwB,mBAAmB,MAAA,CAAO;AAAA,EAC7D,MAAMA,KAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,CAAE,SAAS,2BAA2B,CAAA;AAAA,EAC3D,OAAA,EAAS,gBAAA,CAAiB,QAAA,CAAS,sBAAsB,CAAA;AAAA,EACzD,eAAA,EAAiB,qBAAA,CAAsB,QAAA,CAAS,qCAAqC,CAAA;AAAA,EACrF,GAAA,EAAKA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,2BAA2B,CAAA;AAAA,EACpE,SAAA,EAAW,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,mDAAmD;AACpG,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AAElB,EAAA,IAAI,IAAA,CAAK,GAAA,IAAO,CAAC,IAAA,CAAK,SAAA,EAAW;AAC/B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT,CAAA,EAAG;AAAA,EACD,OAAA,EAAS;AACX,CAAC;AAmBM,IAAM,6BAAA,GAAiD;AAAA,EAC5D,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,MAAA;AAAA,EACN,QAAA,EAAU,MAAA;AAAA,EACV,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ;AACV;AAYO,IAAM,2BAAA,GAA8B;AAAA;AAAA,EAEzC,iBAAA,EAAmB,IAAA;AAAA;AAAA,EAEnB,oBAAA,EAAsB,IAAA;AAAA;AAAA,EAEtB,kBAAA,EAAoB,IAAA;AAAA;AAAA,EAEpB,oBAAA,EAAsB,KAAA;AAAA;AAAA,EAEtB,qBAAA,EAAuB,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASvB,eAAA,EAAiB;AACnB;AChNO,IAAM,uBAAA,GAA0BA,MAAE,IAAA,CAAK;AAAA,EAC5C,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC;AAQM,IAAM,wBAAA,GAA2BA,MAAE,IAAA,CAAK;AAAA,EAC7C,MAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,WAAA;AAAA;AAAA,EACA,WAAA;AAAA;AAAA,EACA,OAAA;AAAA;AAAA,EACA,UAAA;AAAA;AAAA,EACA,aAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAC;AAgBM,IAAM,sBAAA,GAAyBA,MAAE,IAAA,CAAK;AAAA,EAC3C,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAC;AAQM,IAAM,oBAAA,GAAuBA,MAAE,IAAA,CAAK;AAAA,EACzC,QAAA;AAAA;AAAA,EACA,UAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,MAAA;AAAA;AAAA,EACA,YAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,KAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAC;AAQM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iBAAiB,CAAA;AAAA,EAC9D,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2BAA2B,CAAA;AAAA,EACpE,gBAAA,EAAkBA,KAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mBAAmB,CAAA;AAAA,EAC3F,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,kBAAkB;AAC/E,CAAC;AAQM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,oBAAoB,CAAA;AAAA,EACjE,gBAAgBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB,CAAA;AAAA,EACjE,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oBAAoB,CAAA;AAAA,EAC9E,cAAA,EAAgBA,KAAAA,CAAE,IAAA,CAAK,CAAC,WAAW,kBAAA,EAAoB,WAAA,EAAa,oBAAA,EAAsB,SAAS,CAAC,CAAA,CACjG,QAAA,EAAS,CACT,SAAS,iCAAiC,CAAA;AAAA,EAC7C,YAAA,EAAcA,KAAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,cAAA,EAAgB,gBAAgB,CAAC,CAAA,CAChE,QAAA,EAAS,CACT,QAAA,CAAS,qBAAqB;AACnC,CAAC;AAQM,IAAM,8BAAA,GAAiCA,MAAE,MAAA,CAAO;AAAA,EACrD,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,0BAA0B,CAAA;AAAA,EACvE,eAAA,EAAiBA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,UAAA,EAAY,KAAK,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB,CAAA;AAAA,EAClG,gBAAA,EAAkBA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,8BAA8B,CAAA;AAAA,EAC9F,UAAA,EAAYA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,4BAA4B;AAChG,CAAC;AAsBM,IAAM,0BAAA,GAA6BA,MAAE,MAAA,CAAO;AAAA,EACjD,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,4BAA4B,CAAA;AAAA,EACtD,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,8BAA8B,CAAA;AAAA,EAC1D,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+BAA+B,CAAA;AAAA,EAC5D,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,4BAA4B,CAAA;AAAA,EACtD,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gCAAgC,CAAA;AAAA,EAC9D,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA,EACxE,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,EACjE,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACrE,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,EACnE,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACnF,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wCAAwC;AACnF,CAAC;AAsGM,IAAM,uBAAA,GAA0B,mBAAmB,MAAA,CAAO;AAAA,EAC/D,MAAMA,KAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAAA,EAC/D,YAAA,EAAc,uBAAA,CAAwB,QAAA,CAAS,8BAA8B,CAAA;AAAA,EAC7E,eAAA,EAAiB,0BAAA,CAA2B,QAAA,CAAS,uCAAuC,CAAA;AAAA;AAAA;AAAA;AAAA,EAK5F,WAAA,EAAa,sBAAA,CAAuB,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA;AAAA;AAAA;AAAA,EAK1F,WAAA,EAAa,uBAAA,CAAwB,QAAA,EAAS,CAAE,SAAS,2BAA2B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKpF,QAAA,EAAU,oBAAA,CAAqB,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK3E,gBAAA,EAAkB,8BAAA,CAA+B,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKjG,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA;AAAA;AAAA;AAAA,EAKhF,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK/D,iBAAiBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvE,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA;AAAA;AAAA;AAAA,EAK7E,eAAA,EAAiBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gCAAgC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjG,kBAAkBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC;AACtF,CAAC;AAQM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAI9C,WAAA,EAAa,sBAAA,CAAuB,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKpF,mBAAmBA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA;AAAA;AAAA;AAAA,EAK1F,UAAA,EAAYA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,EAAGA,KAAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9G,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK7E,WAAWA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,2CAA2C,CAAA;AAAA;AAAA;AAAA;AAAA,EAKtF,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9E,SAASA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKjE,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC;AAC1E,CAAC;AAQM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAI7C,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oDAAoD,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlF,OAAA,EAASA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,wBAAwB;AAC9E,CAAC;AAQM,IAAM,yBAAA,GAA4BA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAIhD,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,uBAAuB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKvD,QAAQA,KAAAA,CAAE,KAAA,CAAM,sBAAsB,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9E,OAAA,EAAS,uBAAA,CAAwB,QAAA,EAAS,CAAE,SAAS,eAAe;AACtE,CAAC;AAQM,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAIvC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA,EAKtC,IAAA,EAAM,oBAAA,CAAqB,QAAA,CAAS,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhD,MAAA,EAAQA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAO;AAAA,IACvB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,YAAY,CAAA;AAAA,IACvC,KAAA,EAAOA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,UAAU,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,qBAAqB;AAAA,GAC7F,CAAC,CAAA,CAAE,QAAA,CAAS,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKhE,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,cAAc,CAAA;AAAA;AAAA;AAAA;AAAA,EAK1D,kBAAA,EAAoBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKpF,uBAAA,EAAyBA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKrG,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,4BAA4B;AAC9E,CAAC;AAQM,IAAM,6BAAA,GAAgCA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAIpD,WAAA,EAAaA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,UAAA,EAAY,cAAA,EAAgB,UAAU,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK/G,YAAA,EAAcA,KAAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,cAAA,EAAgB,gBAAgB,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,qBAAqB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9G,cAAA,EAAgBA,KAAAA,CAAE,IAAA,CAAK,CAAC,WAAW,kBAAA,EAAoB,WAAA,EAAa,oBAAA,EAAsB,SAAS,CAAC,CAAA,CACjG,QAAA,EAAS,CACT,SAAS,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK7B,eAAA,EAAiBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iCAAiC;AACpG,CAAC;AC7dM,IAAM,WAAA,GAAcA,MAAE,IAAA,CAAK;AAAA,EAChC,QAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAC;AAWM,IAAM,aAAA,GAAgBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpC,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,MAAM,oBAAoB,CAAA,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ5E,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,QAAQ,MAAM,CAAA,CAAE,SAAS,kCAAkC,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlF,MAAM,WAAA,CAAY,OAAA,CAAQ,QAAQ,CAAA,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3E,GAAA,EAAKA,MAAE,KAAA,CAAMA,KAAAA,CAAE,KAAK,CAAC,MAAA,EAAQ,OAAO,MAAM,CAAC,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,MAAA,EAAQ,KAAA,EAAO,MAAM,CAAC,CAAA,CAAE,SAAS,yBAAyB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjH,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,OAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAA,CAAE,SAAS,cAAc;AAC7E,CAAC;ACnCM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAI5C,aAAA,EAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKnD,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKnD,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKhD,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9C,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,EAK7C,aAAaA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,SAAS,cAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrD,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,mBAAmB;AAC9E,CAAC;AAiCM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAI7C,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA,EAKrC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,EAKzC,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlE,SAASA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,SAAS,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKtD,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9C,YAAA,EAAcA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,IAI7B,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA,IAK1C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA,IAK9C,IAAA,EAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,QAAA,CAAS,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM7E,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,aAAa;AAAA,GACvE,CAAC,CAAA,CAAE,QAAA,CAAS,uBAAuB;AACtC,CAAC;AAgCM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAI7C,QAAA,EAAUA,KAAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,YAAA,EAAc,WAAA,EAAa,QAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnG,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,qBAAqB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK7E,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,IAIxB,OAAOA,KAAAA,CAAE,MAAA,GAAS,KAAA,EAAM,CAAE,SAAS,cAAc,CAAA;AAAA;AAAA;AAAA;AAAA,IAKjD,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA,IAKvC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA,IAKvC,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe;AAAA,GAC3C,CAAC,CAAA,CAAE,QAAA,CAAS,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/B,cAAA,EAAgBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,OAAA,CAAQ,EAAE,CAAA,CAAE,QAAA,CAAS,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5E,YAAA,EAAcA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,OAAA,CAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,wBAAwB;AAClF,CAAC;AA8CM,IAAM,cAAA,GAAiBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAIrC,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA,EAKrC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,EAKzC,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlE,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9C,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlD,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK5D,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,EAK7D,UAAA,EAAYA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,IAInB,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,IAKlD,UAAUA,KAAAA,CAAE,KAAA,CAAM,qBAAqB,CAAA,CAAE,SAAS,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA,IAKnE,YAAA,EAAcA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,IAKjD,YAAA,EAAcA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe;AAAA,GAClD,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKxC,QAAA,EAAU,sBAAA,CAAuB,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKxE,UAAA,EAAY,sBAAA,CAAuB,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK3E,MAAA,EAAQA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKf,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,IAKxE,UAAA,EAAYA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA,IAKjE,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB;AAAA,GAC9D,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKvC,QAAA,EAAUA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,iBAAiB;AACnF,CAAC;AClUM,IAAM,mBAAA,GAAsBA,KAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC9DA,MAAE,MAAA,CAAO;AAAA,IACP,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,IAC1B,KAAA,EAAOA,KAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,uBAAuB;AAAA,GACpD,CAAA,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA,EAElCA,MAAE,MAAA,CAAO;AAAA,IACP,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,IACtB,UAAA,EAAYA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,MAAM,CAAC,CAAA,CAAE,QAAA,CAAS,kBAAkB;AAAA,GACxF,CAAA,CAAE,QAAA,CAAS,8BAA8B,CAAA;AAAA,EAE1CA,MAAE,MAAA,CAAO;AAAA,IACP,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACxB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA,IAC9C,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA,IACjD,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB;AAAA,GACpD,CAAA,CAAE,QAAA,CAAS,iCAAiC,CAAA;AAAA,EAE7CA,MAAE,MAAA,CAAO;AAAA,IACP,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,IAC5B,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,qDAAqD;AAAA,GACtF,CAAA,CAAE,QAAA,CAAS,kCAAkC,CAAA;AAAA,EAE9CA,MAAE,MAAA,CAAO;AAAA,IACP,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,IACrB,QAAA,EAAUA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,6CAA6C;AAAA,GACnG,CAAA,CAAE,QAAA,CAAS,+BAA+B;AAC7C,CAAC,CAAA;AAuBM,IAAMC,mBAAAA,GAAqBD,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAIzC,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK/C,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK/C,SAAA,EAAW,mBAAA,CAAoB,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK5E,cAAcA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,qCAAqC;AACrF,CAAC,CAAA;;;ACpFM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAI/C,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKxC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK5C,IAAA,EAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,UAAA,EAAY,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,EAKjF,UAAUA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,SAAS,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKtD,cAAA,EAAgBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,IAIvB,IAAA,EAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,SAAA,EAAW,OAAA,EAAS,MAAM,CAAC,CAAA,CAAE,QAAA,CAAS,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMzE,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,oBAAoB;AAAA,GACxE,CAAA,CAAE,QAAA,CAAS,gBAAgB;AAC9B,CAAC;AAmBM,IAAM,0BAAA,GAA6BC,oBAAuB,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAItE,MAAMD,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjD,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,IAAI,CAAA,CAAE,QAAA,CAAS,iBAAiB;AAC3E,CAAC;AAoDM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,EAI3C,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA,EAK3C,UAAA,EAAY,wBAAA,CAAyB,QAAA,CAAS,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKpE,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,IAId,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,qBAAqB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMnD,MAAA,EAAQA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAO,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,KAAK,CAAA,CAAE,SAAS,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA,IAKhF,UAAA,EAAYA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,kBAAkB;AAAA,GACrF,CAAA,CAAE,QAAA,CAAS,qBAAqB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKjC,eAAeA,KAAAA,CAAE,KAAA,CAAM,0BAA0B,CAAA,CAAE,SAAS,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK5E,OAAA,EAASA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKhB,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,IAAI,CAAA,CAAE,QAAA,CAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMtE,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,OAAA,CAAQ,GAAG,CAAA,CAAE,QAAA,CAAS,qBAAqB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMtE,QAAA,EAAUA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAO,KAAA,EAAO,KAAK,CAAC,CAAA,CAAE,UAAS,CAAE,OAAA,CAAQ,KAAK,CAAA,CAAE,SAAS,gBAAgB;AAAA,GAC5F,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK9C,QAAA,EAAUA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKjB,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,IAAI,CAAA,CAAE,QAAA,CAAS,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA,IAKzE,cAAcA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMtE,SAAA,EAAWA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,OAAA,CAAQ,IAAI,CAAA,CAAE,QAAA,CAAS,oBAAoB;AAAA,GAC9E,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK/C,SAAA,EAAWA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA,IAIlB,iBAAA,EAAmBA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,2BAA2B,CAAA;AAAA;AAAA;AAAA;AAAA,IAKlE,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,YAAY;AAAA,GACvD,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBtC,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA;AAAA,IAEd,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA;AAAA,IAE1E,cAAA,EAAgBA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAI,CAAA,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA,IAEvF,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAK,CAAA,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA,IAEpF,iBAAA,EAAmBA,MAAE,MAAA,EAAO,CAAE,QAAQ,CAAC,CAAA,CAAE,SAAS,gCAAgC,CAAA;AAAA;AAAA,IAElF,sBAAsBA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,EAAK,KAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC,CAAA,CACxE,SAAS,sCAAsC;AAAA,GACnD,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrE,SAAA,EAAWA,MAAE,MAAA,CAAO;AAAA;AAAA,IAElB,OAAA,EAASA,MAAE,MAAA,CAAO;AAAA;AAAA,MAEhB,OAAA,EAASA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA;AAAA,MAE1F,WAAA,EAAaA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,6BAA6B;AAAA,KAChG,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA;AAAA,IAE/C,QAAA,EAAUA,MAAE,MAAA,CAAO;AAAA;AAAA,MAEjB,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA;AAAA,MAE5F,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wDAAwD;AAAA,KACnG,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,yBAAyB;AAAA,GACjD,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA;AAAA,EAGjE,UAAA,EAAYA,MAAE,MAAA,CAAO;AAAA;AAAA,IAEnB,IAAA,EAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,QAAA,EAAU,MAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,CAAE,SAAS,iBAAiB,CAAA;AAAA;AAAA,IAEvF,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAG,CAAA,CAAE,SAAS,gBAAgB,CAAA;AAAA;AAAA,IAE3D,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kCAAkC;AAAA,GAC5E,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,4CAA4C;AACrE,CAAC;ACvSM,IAAM,UAAA,GAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,8BAA8B;AAOrE,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,4CAA4C,CAAA;AAAA,EACpE,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mCAAmC,CAAA;AAAA,EAC9D,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO1B,YAAA,EAAcA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,0CAA0C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnG,cAAcA,KAAAA,CAAE,IAAA,CAAK,MAAM,sBAAsB,EAAE,QAAA;AACrD,CAAC;AAQM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7C,YAAA,EAAcA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOvC,YAAA,EAAcA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAGvC,iBAAA,EAAmBA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAG5C,YAAA,EAAcA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAGvC,eAAA,EAAiBA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAG1C,oBAAA,EAAsBA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAG/C,eAAA,EAAiBA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAG1C,KAAA,EAAOA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhC,cAAA,EAAgBA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAGzC,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAGnC,aAAA,EAAeA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK;AAC1C,CAAC;AAMM,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAEvC,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,MAAM,oBAAoB,CAAA,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA,EAGpF,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,eAAe,CAAA;AAAA;AAAA,EAGrD,MAAA,EAAQ,UAAA,CAAW,QAAA,CAAS,wBAAwB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpD,MAAA,EAAQA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlF,IAAA,EAAMA,MAAE,MAAA,CAAO;AAAA,IACb,GAAA,EAAKA,MAAE,MAAA,EAAO,CAAE,QAAQ,CAAC,CAAA,CAAE,SAAS,qBAAqB,CAAA;AAAA,IACzD,GAAA,EAAKA,MAAE,MAAA,EAAO,CAAE,QAAQ,EAAE,CAAA,CAAE,SAAS,qBAAqB,CAAA;AAAA,IAC1D,iBAAA,EAAmBA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAK,CAAA,CAAE,SAAS,cAAc,CAAA;AAAA,IACpE,uBAAA,EAAyBA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAI,CAAA,CAAE,SAAS,kCAAkC;AAAA,GAC9F,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjD,cAAcA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/G,YAAA,EAAc,sBAAA,CAAuB,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA;AAAA,EAG/E,WAAA,EAAaA,MAAE,MAAA,CAAO;AAAA,IACpB,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,8BAA8B,CAAA;AAAA,IAC1E,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAK,CAAA,CAAE,SAAS,uCAAuC,CAAA;AAAA,IACtF,SAAA,EAAWA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAI,CAAA,CAAE,SAAS,sCAAsC;AAAA,GACpF,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA;AAAA,EAG9D,GAAA,EAAKA,MAAE,MAAA,CAAO;AAAA,IACZ,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,wCAAwC,CAAA;AAAA,IACrF,kBAAA,EAAoBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,0DAA0D,CAAA;AAAA,IACjH,IAAIA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,IAChF,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iDAAiD,CAAA;AAAA,IACtF,KAAKA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iDAAiD;AAAA,GACtF,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,uDAAuD,CAAA;AAAA;AAAA,EAG9E,WAAA,EAAaA,MAAE,MAAA,CAAO;AAAA,IACpB,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,QAAQ,CAAC,CAAA,CAAE,SAAS,kCAAkC,CAAA;AAAA,IAC7E,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAI,CAAA,CAAE,SAAS,4CAA4C,CAAA;AAAA,IAC3F,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,QAAQ,GAAK,CAAA,CAAE,SAAS,+CAA+C,CAAA;AAAA,IAC9F,iBAAA,EAAmBA,MAAE,MAAA,EAAO,CAAE,QAAQ,CAAC,CAAA,CAAE,SAAS,gCAAgC;AAAA,GACnF,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA;AAAA,EAGvE,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA;AAAA,EAGlE,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,uBAAuB;AACpE,CAAC;ACjJM,IAAM,qBAAA,GAAwBA,MAAE,IAAA,CAAK;AAAA,EAC1C,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA,QAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAC;AAMM,IAAM,aAAA,GAAgBA,MAAE,IAAA,CAAK;AAAA,EAClC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAC;AAKM,IAAM,kBAAA,GAAqBA,MAAE,IAAA,CAAK;AAAA,EACvC,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,OAAA;AAAA,EAAS,SAAA;AAAA,EAAW;AACjE,CAAC;AAMM,IAAM,YAAA,GAAeA,MAAE,MAAA,CAAO;AAAA,EACnC,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,MAAM,oBAAoB,CAAA,CAAE,SAAS,kBAAkB,CAAA;AAAA,EACxE,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sBAAsB,CAAA;AAAA,EACjD,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAEjC,IAAA,EAAM,qBAAA;AAAA;AAAA,EAGN,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mCAAmC,CAAA;AAAA;AAAA,EAG5D,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAO;AAAA,IACxB,GAAA,EAAKA,MAAE,MAAA;AAAO,GACf,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAGb,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACrB,CAAC;AAMM,IAAM,eAAA,GAAkBA,MAAE,MAAA,CAAO;AAAA,EACtC,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,MAAM,oBAAoB,CAAA,CAAE,SAAS,qBAAqB,CAAA;AAAA,EAC3E,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sBAAsB,CAAA;AAAA,EACjD,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAEjC,IAAA,EAAM,aAAA;AAAA;AAAA,EAGN,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oCAAoC,CAAA;AAAA;AAAA,EAG7D,aAAA,EAAeA,KAAAA,CAAE,KAAA,CAAM,kBAAkB,EAAE,QAAA;AAC7C,CAAC;AAMM,IAAM,cAAA,GAAiBA,MAAE,MAAA,CAAO;AAAA,EACrC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kBAAkB,CAAA;AAAA,EAC5C,YAAA,EAAcA,KAAAA,CAAE,IAAA,CAAK,CAAC,YAAA,EAAc,eAAe,aAAa,CAAC,CAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,EACxF,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,4BAA4B;AACvD,CAAC;AAOM,IAAM,UAAA,GAAaA,MAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,MAAM,oBAAoB,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA,EAC9E,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAGjC,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kCAAkC,CAAA;AAAA;AAAA,EAG3D,QAAA,EAAUA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAG,YAAY,CAAA,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA,EAC5E,UAAA,EAAYA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAG,eAAe,CAAA,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA;AAAA,EAGnF,KAAA,EAAOA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAG,cAAc,EAAE,QAAA,EAAS;AAAA;AAAA,EAGrD,UAAA,EAAYA,MAAE,MAAA,CAAO;AAAA,IACnB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,IAC3B,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS;AAAA,GAC1B,EAAE,QAAA,EAAS;AAAA;AAAA,EAGZ,MAAA,EAAQA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK;AACnC,CAAC;AAMM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mFAAmF,CAAA;AAAA,EACxH,QAAA,EAAUA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACrE,UAAA,EAAYA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gCAAgC,CAAA;AAAA,EAEpF,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAO;AAAA,IACxB,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sBAAsB,CAAA;AAAA,IAClD,QAAA,EAAUA,KAAAA,CAAE,IAAA,CAAK,CAAC,UAAU,WAAA,EAAa,UAAA,EAAY,aAAA,EAAe,IAAA,EAAM,OAAO,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,aAAa,CAAC,CAAA;AAAA,IAC7H,QAAQA,KAAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA;AAAS,GACtC,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAEb,cAAA,EAAgBA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,CAAO;AAAA,IAC/B,SAAA,EAAWA,MAAE,MAAA,EAAO;AAAA,IACpB,WAAA,EAAa,mBAAmB,QAAA,EAAS;AAAA,IACzC,SAAA,EAAWA,MAAE,KAAA,CAAM;AAAA,MACjBA,MAAE,MAAA,EAAO;AAAA;AAAA,MACTA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ;AAAA;AAAA,KACnB,EAAE,QAAA;AAAS,GACb,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAEb,KAAA,EAAOA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,MAAM,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EAE9D,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAE5B,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAQ,KAAK;AAC/C,CAAC;ACvJM,IAAM,YAAA,GAAeA,MAAE,IAAA,CAAK;AAAA,EACjC,SAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAC;AAOM,IAAM,aAAA,GAAgBA,MAAE,MAAA,CAAO;AAAA,EACpC,IAAA,EAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,QAAQ,QAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,qBAAqB,CAAA;AAAA,EACvE,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,WAAW,CAAA;AAAA,EACnC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,4BAA4B,CAAA;AAAA,EACtD,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,EACxE,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,sCAAsC;AACjF,CAAC;AAOM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oBAAoB,CAAA;AAAA,EAC/C,YAAYA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,EAChE,UAAUA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,EAC1D,UAAUA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,WAAW,CAAA;AAAA,EACrD,iBAAiBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,EAC1E,iBAAiBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B;AAC5E,CAAC;AAOM,IAAM,cAAA,GAAiBA,MAAE,MAAA,CAAO;AAAA,EACrC,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gEAAyD,CAAA;AAAA,EACpF,OAAA,EAASA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA,CAAE,SAAS,mBAAmB,CAAA;AAAA,EACzD,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,sBAAsB;AAChE,CAAC;AAOM,IAAM,eAAA,GAAkBA,MAAE,MAAA,CAAO;AAAA,EACtC,IAAA,EAAMA,KAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,YAAY,CAAC,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA;AAAA,EAC/E,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,UAAU,CAAA;AAAA,EAClC,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,EACzD,SAAA,EAAWA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,kBAAkB,CAAA;AAAA,EAClE,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oDAAoD;AAC7F,CAAC;AAMM,IAAM,iBAAiBA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,UAAA,EAAY,SAAS,CAAC;AAiC/D,IAAM,cAAA,GAAiBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAErC,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,cAAc,CAAA;AAAA;AAAA,EAGtC,IAAA,EAAM,YAAA,CAAa,QAAA,CAAS,eAAe,CAAA;AAAA;AAAA,EAG3C,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+BAA+B,CAAA;AAAA,EAC3D,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA,EAGnE,KAAA,EAAO,eAAA,CAAgB,QAAA,CAAS,2BAA2B,CAAA;AAAA;AAAA,EAG3D,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA,EAG1E,QAAA,EAAUA,MAAE,KAAA,CAAM,aAAa,EAAE,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA;AAAA,EAGpF,OAAA,EAASA,MAAE,KAAA,CAAM,sBAAsB,EAAE,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA;AAAA,EAGlF,SAAA,EAAWA,MAAE,KAAA,CAAM,cAAc,EAAE,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA,EAGrF,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACnF,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,SAAS,mBAAmB,CAAA;AAAA;AAAA,EAG3E,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,4DAA4D,CAAA;AAAA,EACxG,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,UAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oCAAoC,CAAA;AAAA,EACxF,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,EACtE,OAAA,EAASA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iEAAiE,CAAA;AAAA,EAC9G,SAAA,EAAWA,MAAE,MAAA,EAAO,CAAE,UAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,qCAAqC,CAAA;AAAA;AAAA,EAG1F,YAAY,cAAA,CAAe,OAAA,CAAQ,QAAQ,CAAA,CACxC,SAAS,oFAAoF,CAAA;AAAA;AAAA,EAGhG,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,EAC9D,SAAA,EAAWA,MAAE,MAAA,EAAO,CAAE,UAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB,CAAA;AAAA,EAC5E,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,UAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,8BAA8B,CAAA;AAAA,EAClF,QAAA,EAAUA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,iCAAiC;AACjF,CAAC;AAOM,IAAM,cAAA,GAAiBA,MAAE,IAAA,CAAK;AAAA,EACnC,KAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAC;ACnKM,IAAM,qBAAA,GAAwBA,MAAE,IAAA,CAAK;AAAA,EAC1C,SAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAC;AAOM,IAAM,mBAAA,GAAsBA,MAAE,IAAA,CAAK;AAAA,EACxC,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAC;AAQM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE/C,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,aAAa,CAAA;AAAA,EACzC,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,WAAW,CAAA;AAAA;AAAA,EAGzC,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,qBAAqB,CAAA;AAAA;AAAA,EAGjD,MAAA,EAAQA,KAAAA,CAAE,KAAA,CAAM,qBAAqB,CAAA,CAClC,OAAA,CAAQ,CAAC,KAAK,CAAC,CAAA,CACf,QAAA,CAAS,0CAA0C,CAAA;AAAA;AAAA,EAGtD,QAAA,EAAUA,KAAAA,CAAE,KAAA,CAAM,mBAAmB,CAAA,CAClC,OAAA,CAAQ,CAAC,QAAQ,CAAC,CAAA,CAClB,QAAA,CAAS,gCAAgC,CAAA;AAAA;AAAA,EAG5C,MAAA,EAAQA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,oCAAoC,CAAA;AAAA;AAAA,EAG/E,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC;AAC7E,CAAC;AC/BM,IAAM,4BAAA,GAA+BA,MAAE,IAAA,CAAK;AAAA,EACjD,QAAA;AAAA;AAAA,EACA,WAAA;AAAA;AAAA,EACA,MAAA;AAAA;AAAA,EACA,OAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAC,CAAA,CAAE,SAAS,6DAA6D;AAelE,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvC,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,2BAA2B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5D,eAAA,EAAiBA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,iDAAiD,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7F,gBAAA,EAAkBA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAC,CAAC,EAAE,OAAA,CAAQ,EAAE,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnG,gBAAgBA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2CAA2C;AAC5F,CAAC,CAAA,CAAE,SAAS,oCAAoC;AAYzC,IAAM,6BAAA,GAAgCA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpD,cAAA,EAAgBA,MAAE,MAAA,CAAO;AAAA;AAAA,IAEvB,UAAA,EAAYA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,6CAA6C,CAAA;AAAA;AAAA,IAG5F,OAAOA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA;AAAA,IAGxE,gBAAA,EAAkBA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,gCAAgC,CAAA;AAAA;AAAA,IAGrF,QAAA,EAAUA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,gCAAgC;AAAA,GAC/E,CAAA,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlC,cAAA,EAAgBA,MAAE,MAAA,CAAO;AAAA;AAAA,IAEvB,SAAA,EAAWA,MAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA,IAG7E,gBAAA,EAAkBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA,CAAE,SAAS,wCAAwC,CAAA;AAAA;AAAA,IAGvG,YAAA,EAAcA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,+BAA+B;AAAA,GACjF,CAAA,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA,EAKlC,eAAA,EAAiBA,MAAE,MAAA,CAAO;AAAA;AAAA,IAExB,YAAA,EAAcA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,kCAAkC,CAAA;AAAA;AAAA,IAGnF,QAAA,EAAUA,MAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,yCAAyC;AAAA,GACvF,CAAA,CAAE,QAAA,CAAS,wBAAwB;AACtC,CAAC,CAAA,CAAE,SAAS,iCAAiC;AAoCtC,IAAM,4BAAA,GAA+BA,MAAE,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKnD,gBAAA,EAAkBA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,yBAAyB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtE,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,2CAA2C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnF,cAAA,EAAgBA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,gDAAgD,CAAA;AAAA;AAAA;AAAA;AAAA,EAK3F,sBAAA,EAAwB,4BAAA,CAA6B,OAAA,CAAQ,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA,EAKpE,KAAA,EAAO,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA;AAAA;AAAA;AAAA,EAK1E,SAAA,EAAW,6BAAA,CAA8B,QAAA,EAAS,CAAE,SAAS,iBAAiB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9E,oBAAA,EAAsBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,CAAE,SAAS,qCAAqC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzG,kBAAA,EAAoBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,CAAE,SAAS,iCAAiC;AACrG,CAAC,CAAA,CAAE,SAAS,yCAAyC","file":"index.js","sourcesContent":["// 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 */\nexport const FieldReferenceSchema = 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 = 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 = 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 = 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 = 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 = z.object({\n /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */\n $contains: 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 = 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 = 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 $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 = 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 $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', '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 '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', '$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 { FilterConditionSchema } from './filter.zod';\n\n/**\n * Sort Node\n * Represents \"Order By\".\n */\nexport const SortNodeSchema = 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 * 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 = 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 = 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 = 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 = 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(z.string()).optional().describe('GROUP BY fields'),\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\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> = BaseQuerySchema.extend({\n expand: z.lazy(() => z.record(z.string(), QuerySchema)).optional().describe('Recursive relation loading (nested queries)'),\n});\n\nexport type SortNode = z.infer<typeof SortNodeSchema>;\nexport type AggregationNode = z.infer<typeof AggregationNodeSchema>;\nexport type JoinNode = z.infer<typeof JoinNodeSchema>;\nexport type WindowFunctionNode = z.infer<typeof WindowFunctionNodeSchema>;\nexport type WindowSpec = z.infer<typeof WindowSpecSchema>;\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 */\nexport const SystemIdentifierSchema = 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 = 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 = 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 * Field-level encryption protocol\n * GDPR/HIPAA/PCI-DSS compliant\n */\nexport const EncryptionAlgorithmSchema = 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 = 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 = 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 = 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 = 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 */\nexport const MaskingStrategySchema = 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 = 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 = 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 { EncryptionConfigSchema } from '../system/encryption.zod';\nimport { MaskingRuleSchema } from '../system/masking.zod';\n\n/**\n * Field Type Enum\n */\nexport const FieldType = z.enum([\n // Core Text\n 'text', 'textarea', 'email', 'url', 'phone', 'password',\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 // Enhanced Types\n 'location', // GPS coordinates\n 'address', // Structured address\n 'code', // Code editor (JSON/SQL/JS)\n 'json', // Structured JSON data\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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 /** Relationship Config */\n reference: z.string().optional().describe('Target Object Name'),\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 /** Calculation */\n expression: z.string().optional().describe('Formula expression'),\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'),\n function: z.enum(['count', 'sum', 'min', 'max', 'avg']).describe('Aggregation function to apply'),\n }).optional().describe('Roll-up summary definition'),\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 /** Conditional Requirements */\n conditionalRequired: z.string().optional().describe('Formula expression that makes this field required when TRUE (e.g., \"status = \\'closed_won\\'\")'),\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 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 /**\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 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 * # ObjectStack Validation Protocol\n * \n * This module defines the validation schema protocol for ObjectStack, providing a comprehensive\n * type-safe validation system similar to Salesforce's validation rules but with enhanced capabilities.\n * \n * ## Overview\n * \n * Validation rules are applied at the data layer to ensure data integrity and enforce business logic.\n * The system supports multiple validation types:\n * \n * 1. **Script Validation**: Formula-based validation using expressions\n * 2. **Uniqueness Validation**: Enforce unique constraints across fields\n * 3. **State Machine Validation**: Control allowed state transitions\n * 4. **Format Validation**: Validate field formats (email, URL, regex, etc.)\n * 5. **Cross-Field Validation**: Validate relationships between multiple fields\n * 6. **Async Validation**: Remote validation via API calls\n * 7. **Custom Validation**: User-defined validation functions\n * 8. **Conditional Validation**: Apply validations based on conditions\n * \n * ## Salesforce Comparison\n * \n * ObjectStack validation rules are inspired by Salesforce validation rules but enhanced:\n * - Salesforce: Formula-based validation with `Error Condition Formula`\n * - ObjectStack: Multiple validation types with composable rules\n * \n * Example Salesforce validation rule:\n * ```\n * Rule Name: Discount_Cannot_Exceed_40_Percent\n * Error Condition Formula: Discount_Percent__c > 0.40\n * Error Message: Discount cannot exceed 40%.\n * ```\n * \n * Equivalent ObjectStack rule:\n * ```typescript\n * {\n * type: 'script',\n * name: 'discount_cannot_exceed_40_percent',\n * condition: 'discount_percent > 0.40',\n * message: 'Discount cannot exceed 40%',\n * severity: 'error'\n * }\n * ```\n */\n\n/**\n * Base Validation Rule\n * \n * All validation rules extend from this base schema with common properties.\n * \n * ## Industry Standard Enhancements\n * - **Label/Description**: Essential for governance in large systems with thousands of rules.\n * - **Events**: granular control over validation timing (Context-aware validation).\n * - **Tags**: categorization for reporting and management.\n */\nconst BaseValidationSchema = z.object({\n // Identification\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique rule name (snake_case)'),\n label: z.string().optional().describe('Human-readable label for the rule listing'),\n description: z.string().optional().describe('Administrative notes explaining the business reason'),\n \n // Execution Control\n active: z.boolean().default(true),\n events: z.array(z.enum(['insert', 'update', 'delete'])).default(['insert', 'update']).describe('Validation contexts'),\n priority: z.number().int().min(0).max(9999).default(100).describe('Execution priority (lower runs first, default: 100)'),\n \n // Classification\n tags: z.array(z.string()).optional().describe('Categorization tags (e.g., \"compliance\", \"billing\")'),\n \n // Feedback\n severity: z.enum(['error', 'warning', 'info']).default('error'),\n message: z.string().describe('Error message to display to the user'),\n});\n\n/**\n * 1. Script/Expression Validation\n * Generic formula-based validation.\n */\nexport const ScriptValidationSchema = BaseValidationSchema.extend({\n type: z.literal('script'),\n condition: z.string().describe('Formula expression. If TRUE, validation fails. (e.g. amount < 0)'),\n});\n\n/**\n * 2. Uniqueness Validation\n * specialized optimized check for unique constraints.\n */\nexport const UniquenessValidationSchema = BaseValidationSchema.extend({\n type: z.literal('unique'),\n fields: z.array(z.string()).describe('Fields that must be combined unique'),\n scope: z.string().optional().describe('Formula condition for scope (e.g. active = true)'),\n caseSensitive: z.boolean().default(true),\n});\n\n/**\n * 3. State Machine Validation\n * State transition logic.\n */\nexport const StateMachineValidationSchema = BaseValidationSchema.extend({\n type: z.literal('state_machine'),\n field: z.string().describe('State field (e.g. status)'),\n transitions: z.record(z.string(), z.array(z.string())).describe('Map of { OldState: [AllowedNewStates] }'),\n});\n\n/**\n * 4. Value Format Validation\n * Regex or specialized formats.\n */\nexport const FormatValidationSchema = BaseValidationSchema.extend({\n type: z.literal('format'),\n field: z.string(),\n regex: z.string().optional(),\n format: z.enum(['email', 'url', 'phone', 'json']).optional(),\n});\n\n/**\n * 5. Cross-Field Validation\n * Validates relationships between multiple fields.\n * \n * ## Use Cases\n * - Date range validations (end_date > start_date)\n * - Amount comparisons (discount < total)\n * - Complex business rules involving multiple fields\n * \n * ## Salesforce Examples\n * \n * ### Example 1: Close Date Must Be In Current or Future Month\n * **Salesforce Formula:**\n * ```\n * MONTH(CloseDate) < MONTH(TODAY()) ||\n * YEAR(CloseDate) < YEAR(TODAY())\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'close_date_future',\n * condition: 'MONTH(close_date) >= MONTH(TODAY()) AND YEAR(close_date) >= YEAR(TODAY())',\n * fields: ['close_date'],\n * message: 'Close Date must be in the current or a future month'\n * }\n * ```\n * \n * ### Example 2: Discount Validation\n * **Salesforce Formula:**\n * ```\n * Discount__c > (Amount__c * 0.40)\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'discount_limit',\n * condition: 'discount > (amount * 0.40)',\n * fields: ['discount', 'amount'],\n * message: 'Discount cannot exceed 40% of the amount'\n * }\n * ```\n * \n * ### Example 3: Opportunity Must Have Products\n * **Salesforce Formula:**\n * ```\n * ISBLANK(Products__c) && ISPICKVAL(StageName, \"Closed Won\")\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'products_required_for_won',\n * condition: 'products = null AND stage = \"closed_won\"',\n * fields: ['products', 'stage'],\n * message: 'Opportunity must have products to be marked as Closed Won'\n * }\n * ```\n */\nexport const CrossFieldValidationSchema = BaseValidationSchema.extend({\n type: z.literal('cross_field'),\n condition: z.string().describe('Formula expression comparing fields (e.g. \"end_date > start_date\")'),\n fields: z.array(z.string()).describe('Fields involved in the validation'),\n});\n\n/**\n * 6. JSON Structure Validation\n * Validates JSON fields against a JSON Schema.\n * \n * ## Use Cases\n * - Validating configuration objects stored in JSON fields\n * - Enforcing API payload structures\n * - Complex nested data validation\n */\nexport const JSONValidationSchema = BaseValidationSchema.extend({\n type: z.literal('json_schema'),\n field: z.string().describe('JSON field to validate'),\n schema: z.record(z.string(), z.unknown()).describe('JSON Schema object definition'),\n});\n\n/**\n * 7. Async Validation\n * Remote validation via API call or database query.\n * \n * ## Use Cases\n * \n * ### 1. Email Uniqueness Check\n * Check if an email address is already registered in the system.\n * ```typescript\n * {\n * type: 'async',\n * name: 'unique_email',\n * field: 'email',\n * validatorUrl: '/api/users/check-email',\n * message: 'This email address is already registered',\n * debounce: 500, // Wait 500ms after user stops typing\n * timeout: 3000\n * }\n * ```\n * \n * ### 2. Username Availability\n * Verify username is available before form submission.\n * ```typescript\n * {\n * type: 'async',\n * name: 'username_available',\n * field: 'username',\n * validatorUrl: '/api/users/check-username',\n * message: 'This username is already taken',\n * debounce: 300,\n * timeout: 2000\n * }\n * ```\n * \n * ### 3. Tax ID Validation\n * Validate tax ID with government API (e.g., IRS, HMRC).\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_tax_id',\n * field: 'tax_id',\n * validatorFunction: 'validateTaxIdWithIRS',\n * message: 'Invalid Tax ID number',\n * timeout: 10000, // Government APIs may be slow\n * params: { country: 'US', format: 'EIN' }\n * }\n * ```\n * \n * ### 4. Credit Card Validation\n * Verify credit card with payment gateway without charging.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_card',\n * field: 'card_number',\n * validatorUrl: 'https://api.stripe.com/v1/tokens/validate',\n * message: 'Invalid credit card number',\n * timeout: 5000,\n * params: { \n * mode: 'validate_only',\n * checkFunds: false \n * }\n * }\n * ```\n * \n * ### 5. Address Validation\n * Validate and standardize addresses using geocoding services.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_address',\n * field: 'street_address',\n * validatorFunction: 'validateAddressWithGoogleMaps',\n * message: 'Unable to verify address',\n * timeout: 4000,\n * params: {\n * includeFields: ['city', 'state', 'zip'],\n * strictMode: true,\n * country: 'US'\n * }\n * }\n * ```\n * \n * ### 6. Domain Name Availability\n * Check if domain name is available for registration.\n * ```typescript\n * {\n * type: 'async',\n * name: 'domain_available',\n * field: 'domain_name',\n * validatorUrl: '/api/domains/check-availability',\n * message: 'This domain is already taken or reserved',\n * debounce: 500,\n * timeout: 2000\n * }\n * ```\n * \n * ### 7. Coupon Code Validation\n * Verify coupon code is valid and not expired.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_coupon',\n * field: 'coupon_code',\n * validatorUrl: '/api/coupons/validate',\n * message: 'Invalid or expired coupon code',\n * timeout: 2000,\n * params: {\n * checkExpiration: true,\n * checkUsageLimit: true,\n * userId: '{{current_user_id}}'\n * }\n * }\n * ```\n */\nexport const AsyncValidationSchema = BaseValidationSchema.extend({\n type: z.literal('async'),\n field: z.string().describe('Field to validate'),\n validatorUrl: z.string().optional().describe('External API endpoint for validation'),\n method: z.enum(['GET', 'POST']).default('GET').describe('HTTP method for external call'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom headers for the request'),\n validatorFunction: z.string().optional().describe('Reference to custom validator function'),\n timeout: z.number().optional().default(5000).describe('Timeout in milliseconds'),\n debounce: z.number().optional().describe('Debounce delay in milliseconds'),\n params: z.record(z.string(), z.unknown()).optional().describe('Additional parameters to pass to validator'),\n});\n\n/**\n * 8. Custom Validator Function\n * User-defined validation logic with code reference.\n */\nexport const CustomValidatorSchema = BaseValidationSchema.extend({\n type: z.literal('custom'),\n handler: z.string().describe('Name of the custom validation function registered in the system'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the custom handler'),\n});\n\n/**\n * 9. Master Validation Rule Schema\n */\n/** Base type for validation rules - used for z.lazy() recursive type annotation */\nexport interface BaseValidationRuleShape {\n type: string;\n name: string;\n message: string;\n label?: string;\n description?: string;\n active?: boolean;\n events?: ('insert' | 'update' | 'delete')[];\n priority?: number;\n tags?: string[];\n severity?: 'error' | 'warning' | 'info';\n [key: string]: unknown;\n}\n\nexport const ValidationRuleSchema: z.ZodType<BaseValidationRuleShape> = z.lazy(() =>\n z.discriminatedUnion('type', [\n ScriptValidationSchema,\n UniquenessValidationSchema,\n StateMachineValidationSchema,\n FormatValidationSchema,\n CrossFieldValidationSchema,\n JSONValidationSchema,\n AsyncValidationSchema,\n CustomValidatorSchema,\n ConditionalValidationSchema,\n ])\n);\n\n/**\n * 8. Conditional Validation\n * Validation that only applies when a condition is met.\n * \n * ## Overview\n * Conditional validations follow the pattern: \"Validate X only if Y is true\"\n * This allows for context-aware validation rules that adapt to different scenarios.\n * \n * ## Use Cases\n * \n * ### 1. Validate Based on Record Type\n * Apply different validation rules based on the type of record.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'enterprise_approval_required',\n * when: 'account_type = \"enterprise\"',\n * message: 'Enterprise validation',\n * then: {\n * type: 'script',\n * name: 'require_approval',\n * message: 'Enterprise accounts require manager approval',\n * condition: 'approval_status = null'\n * }\n * }\n * ```\n * \n * ### 2. Conditional Field Requirements\n * Require certain fields only when specific conditions are met.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'shipping_address_when_required',\n * when: 'requires_shipping = true',\n * message: 'Shipping validation',\n * then: {\n * type: 'script',\n * name: 'shipping_address_required',\n * message: 'Shipping address is required for physical products',\n * condition: 'shipping_address = null OR shipping_address = \"\"'\n * }\n * }\n * ```\n * \n * ### 3. Amount-Based Validation\n * Apply different rules based on transaction amount.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'high_value_approval',\n * when: 'order_total > 10000',\n * message: 'High value order validation',\n * then: {\n * type: 'script',\n * name: 'manager_approval_required',\n * message: 'Orders over $10,000 require manager approval',\n * condition: 'manager_approval_id = null'\n * },\n * otherwise: {\n * type: 'script',\n * name: 'standard_validation',\n * message: 'Payment method is required',\n * condition: 'payment_method = null'\n * }\n * }\n * ```\n * \n * ### 4. Regional Compliance\n * Apply region-specific validation rules.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'regional_compliance',\n * when: 'region = \"EU\"',\n * message: 'EU compliance validation',\n * then: {\n * type: 'script',\n * name: 'gdpr_consent',\n * message: 'GDPR consent is required for EU customers',\n * condition: 'gdpr_consent_given = false'\n * },\n * otherwise: {\n * type: 'script',\n * name: 'tos_acceptance',\n * message: 'Terms of Service acceptance required',\n * condition: 'tos_accepted = false'\n * }\n * }\n * ```\n * \n * ### 5. Nested Conditional Validation\n * Create complex validation logic with nested conditions.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'country_state_validation',\n * when: 'country = \"US\"',\n * message: 'US-specific validation',\n * then: {\n * type: 'conditional',\n * name: 'california_validation',\n * when: 'state = \"CA\"',\n * message: 'California-specific validation',\n * then: {\n * type: 'script',\n * name: 'ca_tax_id_required',\n * message: 'California requires a valid tax ID',\n * condition: 'tax_id = null OR NOT(REGEX(tax_id, \"^\\\\d{2}-\\\\d{7}$\"))'\n * }\n * }\n * }\n * ```\n * \n * ### 6. Tax Validation for Taxable Items\n * Only validate tax fields when the item is taxable.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'tax_field_validation',\n * when: 'is_taxable = true',\n * message: 'Tax validation',\n * then: {\n * type: 'script',\n * name: 'tax_code_required',\n * message: 'Tax code is required for taxable items',\n * condition: 'tax_code = null OR tax_code = \"\"'\n * }\n * }\n * ```\n * \n * ### 7. Role-Based Validation\n * Apply validation based on user role.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'role_based_approval_limit',\n * when: 'user_role = \"manager\"',\n * message: 'Manager approval limits',\n * then: {\n * type: 'script',\n * name: 'manager_limit',\n * message: 'Managers can approve up to $50,000',\n * condition: 'approval_amount > 50000'\n * }\n * }\n * ```\n * \n * ## Salesforce Pattern Comparison\n * \n * Salesforce doesn't have explicit \"conditional validation\" rules but achieves similar\n * behavior using formula logic. ObjectStack makes this pattern explicit and composable.\n * \n * **Salesforce Approach:**\n * ```\n * IF(\n * ISPICKVAL(Type, \"Enterprise\"),\n * AND(Amount > 100000, ISBLANK(Approval__c)),\n * FALSE\n * )\n * ```\n * \n * **ObjectStack Approach:**\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'enterprise_high_value',\n * when: 'type = \"enterprise\"',\n * then: {\n * type: 'cross_field',\n * name: 'amount_approval',\n * condition: 'amount > 100000 AND approval = null',\n * fields: ['amount', 'approval']\n * }\n * }\n * ```\n */\nexport const ConditionalValidationSchema = BaseValidationSchema.extend({\n type: z.literal('conditional'),\n when: z.string().describe('Condition formula (e.g. \"type = \\'enterprise\\'\")'),\n then: ValidationRuleSchema.describe('Validation rule to apply when condition is true'),\n otherwise: ValidationRuleSchema.optional().describe('Validation rule to apply when condition is false'),\n});\n\nexport type ValidationRule = z.infer<typeof ValidationRuleSchema>;\nexport type ScriptValidation = z.infer<typeof ScriptValidationSchema>;\nexport type UniquenessValidation = z.infer<typeof UniquenessValidationSchema>;\nexport type StateMachineValidation = z.infer<typeof StateMachineValidationSchema>;\nexport type FormatValidation = z.infer<typeof FormatValidationSchema>;\nexport type CrossFieldValidation = z.infer<typeof CrossFieldValidationSchema>;\nexport type JSONValidation = z.infer<typeof JSONValidationSchema>;\nexport type AsyncValidation = z.infer<typeof AsyncValidationSchema>;\nexport type CustomValidation = z.infer<typeof CustomValidatorSchema>;\nexport type ConditionalValidation = z.infer<typeof ConditionalValidationSchema>;","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * XState-inspired State Machine Protocol\n * Used to define strict business logic constraints and lifecycle management.\n * Prevent AI \"hallucinations\" by enforcing valid valid transitions.\n */\n\n// --- Primitives ---\n\n/**\n * References a named action (side effect)\n * Can be a script, a webhook, or a field update.\n */\nexport const ActionRefSchema = z.union([\n z.string().describe('Action Name'),\n z.object({\n type: z.string(), // e.g., 'xstate.assign', 'log', 'email'\n params: z.record(z.string(), z.unknown()).optional()\n })\n]);\n\n/**\n * References a named condition (guard)\n * Must evaluate to true for the transition to occur.\n */\nexport const GuardRefSchema = z.union([\n z.string().describe('Guard Name (e.g., \"isManager\", \"amountGT1000\")'),\n z.object({\n type: z.string(),\n params: z.record(z.string(), z.unknown()).optional()\n })\n]);\n\n// --- Core Structure ---\n\n/**\n * State Transition Definition\n * \"When EVENT happens, if GUARD is true, go to TARGET and run ACTIONS\"\n */\nexport const TransitionSchema = z.object({\n target: z.string().optional().describe('Target State ID'),\n cond: GuardRefSchema.optional().describe('Condition (Guard) required to take this path'),\n actions: z.array(ActionRefSchema).optional().describe('Actions to execute during transition'),\n description: z.string().optional().describe('Human readable description of this rule'),\n});\n\n/**\n * Event Definition (Signals)\n */\nexport const EventSchema = z.object({\n type: z.string().describe('Event Type (e.g. \"APPROVE\", \"REJECT\", \"Submit\")'),\n // Payload validation schema could go here if we want deep validation\n schema: z.record(z.string(), z.unknown()).optional().describe('Expected event payload structure'),\n});\n\nexport type ActionRef = z.infer<typeof ActionRefSchema>;\nexport type Transition = z.infer<typeof TransitionSchema>;\n\nexport type StateNodeConfig = {\n type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';\n entry?: ActionRef[];\n exit?: ActionRef[];\n on?: Record<string, string | Transition | Transition[]>;\n always?: Transition[];\n initial?: string;\n states?: Record<string, StateNodeConfig>;\n meta?: {\n label?: string;\n description?: string;\n color?: string;\n aiInstructions?: string;\n };\n};\n\n/**\n * State Node Definition\n */\nexport const StateNodeSchema: z.ZodType<StateNodeConfig> = z.lazy(() => z.object({\n /** Type of state */\n type: z.enum(['atomic', 'compound', 'parallel', 'final', 'history']).default('atomic'),\n \n /** Entry/Exit Actions */\n entry: z.array(ActionRefSchema).optional().describe('Actions to run when entering this state'),\n exit: z.array(ActionRefSchema).optional().describe('Actions to run when leaving this state'),\n \n /** Transitions (Events) */\n on: z.record(z.string(), z.union([\n z.string(), // Shorthand target\n TransitionSchema, \n z.array(TransitionSchema)\n ])).optional().describe('Map of Event Type -> Transition Definition'),\n \n /** Always Transitions (Eventless) */\n always: z.array(TransitionSchema).optional(),\n\n /** Nesting (Hierarchical States) */\n initial: z.string().optional().describe('Initial child state (if compound)'),\n states: z.record(z.string(), StateNodeSchema).optional(),\n \n /** Metadata for UI/AI */\n meta: z.object({\n label: z.string().optional(),\n description: z.string().optional(),\n color: z.string().optional(), // For UI diagrams\n // Instructions for AI Agent when in this state\n aiInstructions: z.string().optional().describe('Specific instructions for AI when in this state'),\n }).optional(),\n}));\n\n/**\n * Top-Level State Machine Definition\n */\nexport const StateMachineSchema = z.object({\n id: SnakeCaseIdentifierSchema.describe('Unique Machine ID'),\n description: z.string().optional(),\n \n /** Context (Memory) Schema */\n contextSchema: z.record(z.string(), z.unknown()).optional().describe('Zod Schema for the machine context/memory'),\n \n /** Initial State */\n initial: z.string().describe('Initial State ID'),\n \n /** State Definitions */\n states: z.record(z.string(), StateNodeSchema).describe('State Nodes'),\n \n /** Global Listeners */\n on: z.record(z.string(), z.union([z.string(), TransitionSchema, z.array(TransitionSchema)])).optional(),\n});\n\nexport type StateMachineConfig = z.infer<typeof StateMachineSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldSchema } from './field.zod';\nimport { ValidationRuleSchema } from './validation.zod';\nimport { StateMachineSchema } from '../automation/state-machine.zod';\n\n/**\n * API Operations Enum\n */\nexport const ApiMethod = z.enum([\n 'get', 'list', // Read\n 'create', 'update', 'delete', // Write\n 'upsert', // Idempotent Write\n 'bulk', // Batch operations\n 'aggregate', // Analytics (count, sum)\n 'history', // Audit access\n 'search', // Search access\n 'restore', 'purge', // Trash management\n 'import', 'export', // Data portability\n]);\nexport type ApiMethod = z.infer<typeof ApiMethod>;\n\n/**\n * Capability Flags\n * Defines what system features are enabled for this object.\n * \n * Optimized based on industry standards (Salesforce, ServiceNow):\n * - Added `activities` (Tasks/Events)\n * - Added `mru` (Recent Items)\n * - Added `feeds` (Social/Chatter)\n * - Grouped API permissions\n * \n * @example\n * {\n * trackHistory: true,\n * searchable: true,\n * apiEnabled: true,\n * files: true\n * }\n */\nexport const ObjectCapabilities = z.object({\n /** Enable history tracking (Audit Trail) */\n trackHistory: z.boolean().default(false).describe('Enable field history tracking for audit compliance'),\n \n /** Enable global search indexing */\n searchable: z.boolean().default(true).describe('Index records for global search'),\n \n /** Enable REST/GraphQL API access */\n apiEnabled: z.boolean().default(true).describe('Expose object via automatic APIs'),\n\n /** \n * API Supported Operations\n * Granular control over API exposure.\n */\n apiMethods: z.array(ApiMethod).optional().describe('Whitelist of allowed API operations'),\n \n /** Enable standard attachments/files engine */\n files: z.boolean().default(false).describe('Enable file attachments and document management'),\n \n /** Enable social collaboration (Comments, Mentions, Feeds) */\n feeds: z.boolean().default(false).describe('Enable social feed, comments, and mentions (Chatter-like)'),\n \n /** Enable standard Activity suite (Tasks, Calendars, Events) */\n activities: z.boolean().default(false).describe('Enable standard tasks and events tracking'),\n \n /** Enable Recycle Bin / Soft Delete */\n trash: z.boolean().default(true).describe('Enable soft-delete with restore capability'),\n\n /** Enable \"Recently Viewed\" tracking */\n mru: z.boolean().default(true).describe('Track Most Recently Used (MRU) list for users'),\n \n /** Allow cloning records */\n clone: z.boolean().default(true).describe('Allow record deep cloning'),\n});\n\n/**\n * Schema for database indexes.\n * Enhanced with additional index types and configuration options\n * \n * @example\n * {\n * name: \"idx_account_name\",\n * fields: [\"name\"],\n * type: \"btree\",\n * unique: true\n * }\n */\nexport const IndexSchema = z.object({\n name: z.string().optional().describe('Index name (auto-generated if not provided)'),\n fields: z.array(z.string()).describe('Fields included in the index'),\n type: z.enum(['btree', 'hash', 'gin', 'gist', 'fulltext']).optional().default('btree').describe('Index algorithm type'),\n unique: z.boolean().optional().default(false).describe('Whether the index enforces uniqueness'),\n partial: z.string().optional().describe('Partial index condition (SQL WHERE clause for conditional indexes)'),\n});\n\n/**\n * Search Configuration\n * Defines how this object behaves in search results.\n * \n * @example\n * {\n * fields: [\"name\", \"email\", \"phone\"],\n * displayFields: [\"name\", \"title\"],\n * filters: [\"status = 'active'\"]\n * }\n */\nexport const SearchConfigSchema = z.object({\n fields: z.array(z.string()).describe('Fields to index for full-text search weighting'),\n displayFields: z.array(z.string()).optional().describe('Fields to display in search result cards'),\n filters: z.array(z.string()).optional().describe('Default filters for search results'),\n});\n\n/**\n * Multi-Tenancy Configuration Schema\n * Configures tenant isolation strategy for SaaS applications\n * \n * @example Shared database with tenant_id isolation\n * {\n * enabled: true,\n * strategy: 'shared',\n * tenantField: 'tenant_id',\n * crossTenantAccess: false\n * }\n */\nexport const TenancyConfigSchema = z.object({\n enabled: z.boolean().describe('Enable multi-tenancy for this object'),\n strategy: z.enum(['shared', 'isolated', 'hybrid']).describe('Tenant isolation strategy: shared (single DB, row-level), isolated (separate DB per tenant), hybrid (mix)'),\n tenantField: z.string().default('tenant_id').describe('Field name for tenant identifier'),\n crossTenantAccess: z.boolean().default(false).describe('Allow cross-tenant data access (with explicit permission)'),\n});\n\n/**\n * Soft Delete Configuration Schema\n * Implements recycle bin / trash functionality\n * \n * @example Standard soft delete with cascade\n * {\n * enabled: true,\n * field: 'deleted_at',\n * cascadeDelete: true\n * }\n */\nexport const SoftDeleteConfigSchema = z.object({\n enabled: z.boolean().describe('Enable soft delete (trash/recycle bin)'),\n field: z.string().default('deleted_at').describe('Field name for soft delete timestamp'),\n cascadeDelete: z.boolean().default(false).describe('Cascade soft delete to related records'),\n});\n\n/**\n * Versioning Configuration Schema\n * Implements record versioning and history tracking\n * \n * @example Snapshot versioning with 90-day retention\n * {\n * enabled: true,\n * strategy: 'snapshot',\n * retentionDays: 90,\n * versionField: 'version'\n * }\n */\nexport const VersioningConfigSchema = z.object({\n enabled: z.boolean().describe('Enable record versioning'),\n strategy: z.enum(['snapshot', 'delta', 'event-sourcing']).describe('Versioning strategy: snapshot (full copy), delta (changes only), event-sourcing (event log)'),\n retentionDays: z.number().min(1).optional().describe('Number of days to retain old versions (undefined = infinite)'),\n versionField: z.string().default('version').describe('Field name for version number/timestamp'),\n});\n\n/**\n * Partitioning Strategy Schema\n * Configures table partitioning for performance at scale\n * \n * @example Range partitioning by date (monthly)\n * {\n * enabled: true,\n * strategy: 'range',\n * key: 'created_at',\n * interval: '1 month'\n * }\n */\nexport const PartitioningConfigSchema = z.object({\n enabled: z.boolean().describe('Enable table partitioning'),\n strategy: z.enum(['range', 'hash', 'list']).describe('Partitioning strategy: range (date ranges), hash (consistent hashing), list (predefined values)'),\n key: z.string().describe('Field name to partition by'),\n interval: z.string().optional().describe('Partition interval for range strategy (e.g., \"1 month\", \"1 year\")'),\n}).refine((data) => {\n // If strategy is 'range', interval must be provided\n if (data.strategy === 'range' && !data.interval) {\n return false;\n }\n return true;\n}, {\n message: 'interval is required when strategy is \"range\"',\n});\n\n/**\n * Change Data Capture (CDC) Configuration Schema\n * Enables real-time data streaming to external systems\n * \n * @example Stream all changes to Kafka\n * {\n * enabled: true,\n * events: ['insert', 'update', 'delete'],\n * destination: 'kafka://events.objectstack'\n * }\n */\nexport const CDCConfigSchema = z.object({\n enabled: z.boolean().describe('Enable Change Data Capture'),\n events: z.array(z.enum(['insert', 'update', 'delete'])).describe('Event types to capture'),\n destination: z.string().describe('Destination endpoint (e.g., \"kafka://topic\", \"webhook://url\")'),\n});\n\n/**\n * Base Object Schema Definition\n * \n * The Blueprint of a Business Object.\n * Represents a table, a collection, or a virtual entity.\n * \n * @example\n * ```yaml\n * name: project_task\n * label: Project Task\n * icon: task\n * fields:\n * project:\n * type: lookup\n * reference: project\n * status:\n * type: select\n * options: [todo, in_progress, done]\n * enable:\n * trackHistory: true\n * files: true\n * ```\n */\nconst ObjectSchemaBase = z.object({\n /** \n * Identity & Metadata \n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine unique key (snake_case). Immutable.'),\n label: z.string().optional().describe('Human readable singular label (e.g. \"Account\")'),\n pluralLabel: z.string().optional().describe('Human readable plural label (e.g. \"Accounts\")'),\n description: z.string().optional().describe('Developer documentation / description'),\n icon: z.string().optional().describe('Icon name (Lucide/Material) for UI representation'),\n \n /**\n * Taxonomy & Organization\n */\n tags: z.array(z.string()).optional().describe('Categorization tags (e.g. \"sales\", \"system\", \"reference\")'),\n active: z.boolean().optional().default(true).describe('Is the object active and usable'),\n isSystem: z.boolean().optional().default(false).describe('Is system object (protected from deletion)'),\n abstract: z.boolean().optional().default(false).describe('Is abstract base object (cannot be instantiated)'),\n\n /** \n * Storage & Virtualization \n */\n datasource: z.string().optional().default('default').describe('Target Datasource ID. \"default\" is the primary DB.'),\n tableName: z.string().optional().describe('Physical table/collection name in the target datasource'),\n \n /** \n * Data Model \n */\n fields: z.record(z.string().regex(/^[a-z_][a-z0-9_]*$/, {\n message: 'Field names must be lowercase snake_case (e.g., \"first_name\", \"company\", \"annual_revenue\")',\n }), FieldSchema).describe('Field definitions map. Keys must be snake_case identifiers.'),\n indexes: z.array(IndexSchema).optional().describe('Database performance indexes'),\n \n /**\n * Advanced Data Management\n */\n \n // Multi-tenancy configuration\n tenancy: TenancyConfigSchema.optional().describe('Multi-tenancy configuration for SaaS applications'),\n \n // Soft delete configuration\n softDelete: SoftDeleteConfigSchema.optional().describe('Soft delete (trash/recycle bin) configuration'),\n \n // Versioning configuration\n versioning: VersioningConfigSchema.optional().describe('Record versioning and history tracking configuration'),\n \n // Partitioning strategy\n partitioning: PartitioningConfigSchema.optional().describe('Table partitioning configuration for performance'),\n \n // Change Data Capture\n cdc: CDCConfigSchema.optional().describe('Change Data Capture (CDC) configuration for real-time data streaming'),\n \n /**\n * Logic & Validation (Co-located)\n * Best Practice: Define rules close to data.\n */\n validations: z.array(ValidationRuleSchema).optional().describe('Object-level validation rules'),\n \n /**\n * State Machine(s)\n * Named record of state machines, where each key is a unique machine identifier.\n * Multiple machines allow parallel lifecycles (e.g., status + payment_status + approval_status).\n * \n * @example stateMachines: { lifecycle: {...}, payment: {...}, approval: {...} }\n */\n stateMachines: z.record(z.string(), StateMachineSchema).optional().describe('Named state machines for parallel lifecycles (e.g., status, payment, approval)'),\n\n /** \n * Display & UI Hints (Data-Layer)\n */\n displayNameField: z.string().optional().describe('Field to use as the record display name (e.g., \"name\", \"title\"). Defaults to \"name\" if present.'),\n recordName: z.object({\n type: z.enum(['text', 'autonumber']).describe('Record name type: text (user-entered) or autonumber (system-generated)'),\n displayFormat: z.string().optional().describe('Auto-number format pattern (e.g., \"CASE-{0000}\", \"INV-{YYYY}-{0000}\")'),\n startNumber: z.number().int().min(0).optional().describe('Starting number for autonumber (default: 1)'),\n }).optional().describe('Record name generation configuration (Salesforce pattern)'),\n titleFormat: z.string().optional().describe('Title expression (e.g. \"{name} - {code}\"). Overrides displayNameField.'),\n compactLayout: z.array(z.string()).optional().describe('Primary fields for hover/cards/lookups'),\n \n /** \n * Search Engine Config \n */\n search: SearchConfigSchema.optional().describe('Search engine configuration'),\n \n /** \n * System Capabilities \n */\n enable: ObjectCapabilities.optional().describe('Enabled system features modules'),\n\n /** Record Types */\n recordTypes: z.array(z.string()).optional().describe('Record type names for this object'),\n\n /** Sharing Model */\n sharingModel: z.enum(['private', 'read', 'read_write', 'full']).optional().describe('Default sharing model'),\n\n /** Key Prefix */\n keyPrefix: z.string().max(5).optional().describe('Short prefix for record IDs (e.g., \"001\" for Account)'),\n});\n\n/**\n * Converts a snake_case name to a human-readable Title Case label.\n * @example snakeCaseToLabel('project_task') → 'Project Task'\n */\nfunction snakeCaseToLabel(name: string): string {\n return name\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\n/**\n * Enhanced ObjectSchema with Factory\n */\nexport const ObjectSchema = Object.assign(ObjectSchemaBase, {\n /**\n * Type-safe factory for creating business object definitions.\n * \n * Enhancements over raw schema:\n * - **Auto-label**: Generates `label` from `name` if not provided (snake_case → Title Case).\n * - **Validation**: Runs Zod `.parse()` to validate the config at creation time.\n * \n * @example\n * ```ts\n * const Task = ObjectSchema.create({\n * name: 'project_task',\n * // label auto-generated as 'Project Task'\n * fields: {\n * subject: { type: 'text', label: 'Subject', required: true },\n * },\n * });\n * ```\n */\n create: (config: z.input<typeof ObjectSchemaBase>): ServiceObject => {\n const withDefaults = {\n ...config,\n label: config.label ?? snakeCaseToLabel(config.name),\n };\n return ObjectSchemaBase.parse(withDefaults);\n },\n});\n\nexport type ServiceObject = z.infer<typeof ObjectSchemaBase>;\nexport type ServiceObjectInput = z.input<typeof ObjectSchemaBase>;\nexport type ObjectCapabilities = z.infer<typeof ObjectCapabilities>;\nexport type ObjectIndex = z.infer<typeof IndexSchema>;\nexport type TenancyConfig = z.infer<typeof TenancyConfigSchema>;\nexport type SoftDeleteConfig = z.infer<typeof SoftDeleteConfigSchema>;\nexport type VersioningConfig = z.infer<typeof VersioningConfigSchema>;\nexport type PartitioningConfig = z.infer<typeof PartitioningConfigSchema>;\nexport type CDCConfig = z.infer<typeof CDCConfigSchema>;\n\n// =================================================================\n// Object Ownership Model\n// =================================================================\n\n/**\n * How a package relates to an object it references.\n * \n * - `own`: This package is the original author/owner of the object.\n * Only one package may own a given object name. The owner defines\n * the base schema (table name, primary key, core fields).\n * \n * - `extend`: This package adds fields, views, or actions to an\n * existing object owned by another package. Multiple packages\n * may extend the same object. Extensions are merged at boot time.\n * \n * Follows Salesforce/ServiceNow patterns:\n * object name = database table name, globally unique, no namespace prefix.\n */\nexport const ObjectOwnershipEnum = z.enum(['own', 'extend']);\nexport type ObjectOwnership = z.infer<typeof ObjectOwnershipEnum>;\n\n/**\n * Object Extension Entry — used in `objectExtensions` array.\n * Declares fields/config to merge into an existing object owned by another package.\n * \n * @example\n * ```ts\n * objectExtensions: [{\n * extend: 'contact', // target object FQN\n * fields: { sales_stage: Field.select([...]) },\n * }]\n * ```\n */\nexport const ObjectExtensionSchema = z.object({\n /** The target object name (FQN) to extend */\n extend: z.string().describe('Target object name (FQN) to extend'),\n \n /** Fields to merge into the target object (additive) */\n fields: z.record(z.string(), FieldSchema).optional().describe('Fields to add/override'),\n \n /** Override label */\n label: z.string().optional().describe('Override label for the extended object'),\n \n /** Override plural label */\n pluralLabel: z.string().optional().describe('Override plural label for the extended object'),\n \n /** Override description */\n description: z.string().optional().describe('Override description for the extended object'),\n \n /** Additional validation rules to add */\n validations: z.array(ValidationRuleSchema).optional().describe('Additional validation rules to merge into the target object'),\n \n /** Additional indexes to add */\n indexes: z.array(IndexSchema).optional().describe('Additional indexes to merge into the target object'),\n \n /** Merge priority. Higher number applied later (wins on conflict). Default: 200 */\n priority: z.number().int().min(0).max(999).default(200).describe('Merge priority (higher = applied later)'),\n});\n\nexport type ObjectExtension = z.infer<typeof ObjectExtensionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Hook Lifecycle Events\n * Defines the interception points in the ObjectQL execution pipeline.\n */\nexport const HookEvent = z.enum([\n // Read Operations\n 'beforeFind', 'afterFind',\n 'beforeFindOne', 'afterFindOne',\n 'beforeCount', 'afterCount',\n 'beforeAggregate', 'afterAggregate',\n\n // Write Operations\n 'beforeInsert', 'afterInsert',\n 'beforeUpdate', 'afterUpdate',\n 'beforeDelete', 'afterDelete',\n \n // Bulk Operations (Query-based)\n 'beforeUpdateMany', 'afterUpdateMany',\n 'beforeDeleteMany', 'afterDeleteMany',\n]);\n\n/**\n * Hook Definition Schema\n * \n * Hooks serve as the \"Logic Layer\" in ObjectStack, allowing developers to \n * inject custom code during the data access lifecycle.\n * \n * Use cases:\n * - Data Enrichment (Default values, Calculated fields)\n * - Validation (Complex business rules)\n * - Side Effects (Sending emails, Syncing to external systems)\n * - Security (Filtering data based on context)\n */\nexport const HookSchema = z.object({\n /**\n * Unique identifier for the hook\n * Required for debugging and overriding.\n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Hook unique name (snake_case)'),\n\n /**\n * Human readable label\n */\n label: z.string().optional().describe('Description of what this hook does'),\n\n /**\n * Target Object(s)\n * can be:\n * - Single object: \"account\"\n * - List of objects: [\"account\", \"contact\"]\n * - Wildcard: \"*\" (All objects)\n */\n object: z.union([z.string(), z.array(z.string())]).describe('Target object(s)'),\n\n /**\n * Events to subscribe to\n * Combinations of timing (before/after) and action (find/insert/update/delete/etc)\n */\n events: z.array(HookEvent).describe('Lifecycle events'),\n\n /**\n * Handler Logic\n * Reference to a registered function in the plugin system OR a direct function (runtime only).\n */\n handler: z.union([z.string(), z.function()]).optional().describe('Handler function name (string) or inline function reference'),\n\n /**\n * Execution Order\n * Lower numbers run first.\n * - System Hooks: 0-99\n * - App Hooks: 100-999\n * - User Hooks: 1000+\n */\n priority: z.number().default(100).describe('Execution priority'),\n\n /**\n * Async / Background Execution\n * If true, the hook runs in the background and does not block the transaction.\n * Only applicable for 'after*' events.\n * Default: false (Blocking)\n */\n async: z.boolean().default(false).describe('Run specifically as fire-and-forget'),\n\n /**\n * Declarative Condition\n * Formula expression evaluated before the handler runs.\n * If provided and evaluates to FALSE, the hook is skipped entirely.\n * Useful for filtering by record data without writing handler code.\n * \n * @example \"status = 'active' AND amount > 1000\"\n */\n condition: z.string().optional().describe('Formula expression; hook runs only when TRUE (e.g., \"status = \\'closed\\' AND amount > 1000\")'),\n\n /**\n * Human-readable description\n */\n description: z.string().optional().describe('Human-readable description of what this hook does'),\n\n /**\n * Retry Policy\n */\n retryPolicy: z.object({\n maxRetries: z.number().default(3).describe('Maximum retry attempts on failure'),\n backoffMs: z.number().default(1000).describe('Backoff delay between retries in milliseconds'),\n }).optional().describe('Retry policy for failed hook executions'),\n\n /**\n * Execution Timeout\n */\n timeout: z.number().optional().describe('Maximum execution time in milliseconds before the hook is aborted'),\n\n /**\n * Error Policy\n * What to do if the hook throws an exception?\n * - abort: Rollback transaction (if blocking)\n * - log: Log error and continue\n */\n onError: z.enum(['abort', 'log']).default('abort').describe('Error handling strategy'),\n});\n\n/**\n * Hook Runtime Context\n * Defines what is available to the hook handler during execution.\n * \n * Best Practices:\n * - **Immutability**: `object`, `event`, `id` are immutable.\n * - **Mutability**: `input` and `result` are mutable to allow transformation.\n * - **Encapsulation**: `session` isolates auth info; `transaction` ensures atomicity.\n */\nexport const HookContextSchema = z.object({\n /** Tracing ID */\n id: z.string().optional().describe('Unique execution ID for tracing'),\n\n /** Target Object Name */\n object: z.string(),\n \n /** Current Lifecycle Event */\n event: HookEvent,\n\n /** \n * Input Parameters (Mutable)\n * Modify this to change the behavior of the operation.\n * \n * - find: { query: QueryAST, options: DriverOptions }\n * - insert: { doc: Record, options: DriverOptions }\n * - update: { id: ID, doc: Record, options: DriverOptions }\n * - delete: { id: ID, options: DriverOptions }\n * - updateMany: { query: QueryAST, doc: Record, options: DriverOptions }\n * - deleteMany: { query: QueryAST, options: DriverOptions }\n */\n input: z.record(z.string(), z.unknown()).describe('Mutable input parameters'),\n\n /** \n * Operation Result (Mutable)\n * Available in 'after*' events. Modify this to transform the output.\n */\n result: z.unknown().optional().describe('Operation result (After hooks only)'),\n\n /**\n * Data Snapshot\n * The state of the record BEFORE the operation (for update/delete).\n */\n previous: z.record(z.string(), z.unknown()).optional().describe('Record state before operation'),\n\n /**\n * Execution Session\n * Contains authentication and tenancy information.\n */\n session: z.object({\n userId: z.string().optional(),\n tenantId: z.string().optional(),\n roles: z.array(z.string()).optional(),\n accessToken: z.string().optional(),\n }).optional().describe('Current session context'),\n \n /**\n * Transaction Handle\n * If the operation is part of a transaction, use this handle for side-effects.\n */\n transaction: z.unknown().optional().describe('Database transaction handle'),\n\n /**\n * Engine Access\n * Reference to the ObjectQL engine for performing side effects.\n */\n ql: z.unknown().describe('ObjectQL Engine Reference'),\n\n /**\n * Cross-Object API\n * Provides a scoped data access interface for performing CRUD operations\n * on other objects within hooks. Bound to the current execution context\n * (userId, tenantId, transaction).\n *\n * Usage in hooks:\n * const users = ctx.api.object('user');\n * const admin = await users.findOne({ filter: { role: 'admin' } });\n */\n api: z.unknown().optional().describe('Cross-object data access (ScopedContext)'),\n\n /**\n * Current User Info\n * Convenience shortcut for session.userId + additional user metadata.\n * Populated by the engine when available.\n */\n user: z.object({\n id: z.string().optional(),\n name: z.string().optional(),\n email: z.string().optional(),\n }).optional().describe('Current user info shortcut'),\n});\n\nexport type Hook = z.input<typeof HookSchema>;\nexport type ResolvedHook = z.output<typeof HookSchema>;\nexport type HookEventType = z.infer<typeof HookEvent>;\nexport type HookContext = z.infer<typeof HookContextSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { QuerySchema } from './query.zod';\n\n/**\n * Transformation Logic\n * Built-in helpers for converting data during import.\n */\nexport const TransformType = z.enum([\n 'none', // Direct copy\n 'constant', // Use a hardcoded value\n 'lookup', // Resolve FK (Name -> ID)\n 'split', // \"John Doe\" -> [\"John\", \"Doe\"]\n 'join', // [\"John\", \"Doe\"] -> \"John Doe\"\n 'javascript', // Custom script (Review security!)\n 'map' // Value mapping (e.g. \"Active\" -> \"active\")\n]);\n\n/**\n * Field Mapping Item\n */\nexport const FieldMappingSchema = z.object({\n /** Source Column */\n source: z.union([z.string(), z.array(z.string())]).describe('Source column header(s)'),\n \n /** Target Field */\n target: z.union([z.string(), z.array(z.string())]).describe('Target object field(s)'),\n \n /** Transformation */\n transform: TransformType.default('none'),\n \n /** Configuration for transform */\n params: z.object({\n // Constant\n value: z.unknown().optional(),\n \n // Lookup\n object: z.string().optional(), // Lookup Object\n fromField: z.string().optional(), // Match on (e.g. \"name\")\n toField: z.string().optional(), // Value to take (e.g. \"_id\")\n autoCreate: z.boolean().optional(), // Create if missing\n \n // Map\n valueMap: z.record(z.string(), z.unknown()).optional(), // { \"Open\": \"draft\" }\n \n // Split/Join\n separator: z.string().optional()\n }).optional()\n});\n\n/**\n * Data Mapping Schema\n * Defines a reusable data mapping configuration for ETL operations.\n * \n * **NAMING CONVENTION:**\n * Mapping names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good mapping names\n * - 'salesforce_to_crm'\n * - 'csv_import_contacts'\n * - 'api_sync_orders'\n * \n * @example Bad mapping names (will be rejected)\n * - 'SalesforceToCRM' (PascalCase)\n * - 'CSV Import' (spaces)\n */\nexport const MappingSchema = z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Mapping unique name (lowercase snake_case)'),\n label: z.string().optional(),\n \n /** Scope */\n sourceFormat: z.enum(['csv', 'json', 'xml', 'sql']).default('csv'),\n targetObject: z.string().describe('Target Object Name'),\n \n /** Column Mappings */\n fieldMapping: z.array(FieldMappingSchema),\n \n /** Upsert Logic */\n mode: z.enum(['insert', 'update', 'upsert']).default('insert'),\n upsertKey: z.array(z.string()).optional().describe('Fields to match for upsert (e.g. email)'),\n \n /** Extract Logic (For Export) */\n extractQuery: QuerySchema.optional().describe('Query to run for export only'),\n \n /** Error Handling */\n errorPolicy: z.enum(['skip', 'abort', 'retry']).default('skip'),\n batchSize: z.number().default(1000)\n});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Execution Context Schema\n * \n * Defines the runtime context that flows from HTTP request → data operations.\n * This is the \"identity + environment\" envelope that every data operation can carry.\n * \n * Design:\n * - All fields are optional for backward compatibility\n * - `isSystem` bypasses permission checks (for internal/migration operations)\n * - `transaction` carries the database transaction handle for atomicity\n * - `traceId` enables distributed tracing across microservices\n * \n * Usage:\n * engine.find('account', { context: { userId: '...', tenantId: '...' } })\n */\nexport const ExecutionContextSchema = z.object({\n /** Current user ID (resolved from session) */\n userId: z.string().optional(),\n \n /** Current organization/tenant ID (resolved from session.activeOrganizationId) */\n tenantId: z.string().optional(),\n \n /** User role names (resolved from Member + Role) */\n roles: z.array(z.string()).default([]),\n \n /** Aggregated permission names (resolved from PermissionSet) */\n permissions: z.array(z.string()).default([]),\n \n /** Whether this is a system-level operation (bypasses permission checks) */\n isSystem: z.boolean().default(false),\n \n /** Raw access token (for external API call pass-through) */\n accessToken: z.string().optional(),\n \n /** Database transaction handle */\n transaction: z.unknown().optional(),\n \n /** Request trace ID (for distributed tracing) */\n traceId: z.string().optional(),\n});\n\nexport type ExecutionContext = z.infer<typeof ExecutionContextSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from './filter.zod';\nimport { SortNodeSchema } from './query.zod';\nimport { ExecutionContextSchema } from '../kernel/execution-context.zod';\n\n/**\n * Data Engine Protocol\n * \n * Defines the standard interface for data persistence engines in ObjectStack.\n * This protocol abstracts the underlying storage mechanism (SQL, NoSQL, API, Memory),\n * allowing the ObjectQL engine to execute standardized CRUD and Aggregation operations\n * regardless of where the data resides.\n * \n * The Data Engine acts as the \"Driver\" layer in the Hexagonal Architecture.\n */\n\n// ==========================================================================\n// 1. Shared Definitions\n// ==========================================================================\n\n/**\n * Data Engine Query filter conditions\n * Supports simple key-value map or complex Logic/Field expressions (DSL)\n */\nexport const DataEngineFilterSchema = z.union([\n z.record(z.string(), z.unknown()),\n FilterConditionSchema\n]).describe('Data Engine query filter conditions');\n\n/**\n * Sort order definition\n * Supports:\n * - { name: 'asc' }\n * - { name: 1 }\n * - [{ field: 'name', order: 'asc' }]\n */\nexport const DataEngineSortSchema = z.union([\n z.record(z.string(), z.enum(['asc', 'desc'])), \n z.record(z.string(), z.union([z.literal(1), z.literal(-1)])),\n z.array(SortNodeSchema)\n]).describe('Sort order definition');\n\n// ==========================================================================\n// 1b. Base Engine Options (shared context)\n// ==========================================================================\n\n/**\n * Base Engine Options\n * \n * All Data Engine operation options extend this schema to carry\n * an optional ExecutionContext for identity, tenant, and transaction propagation.\n */\nexport const BaseEngineOptionsSchema = z.object({\n /** Execution context (identity, tenant, transaction) */\n context: ExecutionContextSchema.optional(),\n});\n\n// ==========================================================================\n// 2. method: FIND\n// ==========================================================================\n\nexport const DataEngineQueryOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions (WHERE) */\n filter: DataEngineFilterSchema.optional(),\n \n /** Fields to select (SELECT) */\n select: z.array(z.string()).optional(),\n \n /** Sort order (ORDER BY) */\n sort: DataEngineSortSchema.optional(),\n \n /** Limit number of results (LIMIT) */\n limit: z.number().int().min(1).optional(),\n \n /** Skip number of results (OFFSET) */\n skip: z.number().int().min(0).optional(),\n \n /** \n * Maximum number of results (OData style)\n * Takes precedence over limit if both specified\n */\n top: z.number().int().min(1).optional(),\n\n /**\n * Include related records (JOIN/Populate)\n * List of relationship field names to expand\n */\n populate: z.array(z.string()).optional(),\n}).describe('Query options for IDataEngine.find() operations');\n\n// ==========================================================================\n// 3. method: INSERT\n// ==========================================================================\n\nexport const DataEngineInsertOptionsSchema = BaseEngineOptionsSchema.extend({\n /** \n * Return the inserted record(s)? \n * Some drivers support RETURNING clause for efficiency.\n * Default: true\n */\n returning: z.boolean().default(true).optional(),\n}).describe('Options for DataEngine.insert operations');\n\n// ==========================================================================\n// 4. method: UPDATE\n// ==========================================================================\n\nexport const DataEngineUpdateOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions to identify records to update */\n filter: DataEngineFilterSchema.optional(),\n \n /** \n * Perform an upsert? \n * If true, insert if not found.\n */\n upsert: z.boolean().default(false).optional(),\n \n /**\n * Update multiple records?\n * If false, only the first match is updated.\n * Default: false\n */\n multi: z.boolean().default(false).optional(),\n \n /** \n * Return the updated record(s)? \n * Default: false (returns update count/status)\n */\n returning: z.boolean().default(false).optional(),\n}).describe('Options for DataEngine.update operations');\n\n// ==========================================================================\n// 5. method: DELETE\n// ==========================================================================\n\nexport const DataEngineDeleteOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions to identify records to delete */\n filter: DataEngineFilterSchema.optional(),\n \n /**\n * Delete multiple records?\n * If false, only the first match is deleted.\n * Default: false\n */\n multi: z.boolean().default(false).optional(),\n}).describe('Options for DataEngine.delete operations');\n\n// ==========================================================================\n// 6. method: AGGREGATE\n// ==========================================================================\n\nexport const DataEngineAggregateOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions (WHERE) */\n filter: DataEngineFilterSchema.optional(),\n \n /** Group By fields */\n groupBy: z.array(z.string()).optional(),\n \n /** \n * Aggregation definitions \n * e.g. [{ field: 'amount', method: 'sum', alias: 'total' }]\n */\n aggregations: z.array(z.object({\n field: z.string(),\n method: z.enum(['count', 'sum', 'avg', 'min', 'max', 'count_distinct']),\n alias: z.string().optional()\n })).optional(),\n}).describe('Options for DataEngine.aggregate operations');\n\n// ==========================================================================\n// 7. method: COUNT\n// ==========================================================================\n\nexport const DataEngineCountOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions */\n filter: DataEngineFilterSchema.optional(),\n}).describe('Options for DataEngine.count operations');\n\n// ==========================================================================\n// 8. Definition (Contract)\n// ==========================================================================\n\nexport const DataEngineContractSchema = z.object({\n find: z.function()\n .input(z.tuple([z.string(), DataEngineQueryOptionsSchema.optional()]))\n .output(z.promise(z.array(z.unknown()))),\n \n findOne: z.function()\n .input(z.tuple([z.string(), DataEngineQueryOptionsSchema.optional()]))\n .output(z.promise(z.unknown())),\n \n insert: z.function()\n .input(z.tuple([z.string(), z.union([z.record(z.string(), z.unknown()), z.array(z.record(z.string(), z.unknown()))]), DataEngineInsertOptionsSchema.optional()]))\n .output(z.promise(z.unknown())),\n \n update: z.function()\n .input(z.tuple([z.string(), z.record(z.string(), z.unknown()), DataEngineUpdateOptionsSchema.optional()]))\n .output(z.promise(z.unknown())),\n \n delete: z.function()\n .input(z.tuple([z.string(), DataEngineDeleteOptionsSchema.optional()]))\n .output(z.promise(z.unknown())),\n \n count: z.function()\n .input(z.tuple([z.string(), DataEngineCountOptionsSchema.optional()]))\n .output(z.promise(z.number())),\n \n aggregate: z.function()\n .input(z.tuple([z.string(), DataEngineAggregateOptionsSchema]))\n .output(z.promise(z.array(z.unknown())))\n}).describe('Standard Data Engine Contract');\n\n// ==========================================================================\n// 9. Virtualization & RPC Protocol\n// ==========================================================================\n\n/**\n * Data Engine RPC Request (Virtual ObjectQL)\n * \n * This schema defines the serialized format for executing Data Engine operations\n * via HTTP, Message Queue, or Plugin boundaries.\n * \n * It enables \"Virtual Data Engines\" where the implementation resides in a \n * separate microservice or plugin.\n */\n\nexport const DataEngineFindRequestSchema = z.object({\n method: z.literal('find'),\n object: z.string(),\n query: DataEngineQueryOptionsSchema.optional()\n});\n\nexport const DataEngineFindOneRequestSchema = z.object({\n method: z.literal('findOne'),\n object: z.string(),\n query: DataEngineQueryOptionsSchema.optional()\n});\n\nexport const DataEngineInsertRequestSchema = z.object({\n method: z.literal('insert'),\n object: z.string(),\n data: z.union([z.record(z.string(), z.unknown()), z.array(z.record(z.string(), z.unknown()))]),\n options: DataEngineInsertOptionsSchema.optional()\n});\n\nexport const DataEngineUpdateRequestSchema = z.object({\n method: z.literal('update'),\n object: z.string(),\n data: z.record(z.string(), z.unknown()),\n id: z.union([z.string(), z.number()]).optional().describe('ID for single update, or use filter in options'),\n options: DataEngineUpdateOptionsSchema.optional()\n});\n\nexport const DataEngineDeleteRequestSchema = z.object({\n method: z.literal('delete'),\n object: z.string(),\n id: z.union([z.string(), z.number()]).optional().describe('ID for single delete, or use filter in options'),\n options: DataEngineDeleteOptionsSchema.optional()\n});\n\nexport const DataEngineCountRequestSchema = z.object({\n method: z.literal('count'),\n object: z.string(),\n query: DataEngineCountOptionsSchema.optional()\n});\n\nexport const DataEngineAggregateRequestSchema = z.object({\n method: z.literal('aggregate'),\n object: z.string(),\n query: DataEngineAggregateOptionsSchema\n});\n\n/**\n * Data Engine Execute Request (Raw Command)\n * Execute a raw command/query native to the driver (e.g. SQL, Shell, Remote API).\n */\nexport const DataEngineExecuteRequestSchema = z.object({\n method: z.literal('execute'),\n /** The abstract command (string SQL, or JSON object) */\n command: z.unknown(),\n /** Optional options */\n options: z.record(z.string(), z.unknown()).optional()\n});\n\n/**\n * Data Engine Vector Find Request (AI/RAG)\n * Perform a similarity search using vector embeddings.\n */\nexport const DataEngineVectorFindRequestSchema = z.object({\n method: z.literal('vectorFind'),\n object: z.string(),\n /** The vector embedding to search for */\n vector: z.array(z.number()),\n /** Optional pre-filter (Metadata filtering) */\n filter: DataEngineFilterSchema.optional(),\n /** Fields to select */\n select: z.array(z.string()).optional(),\n /** Number of results */\n limit: z.number().int().default(5).optional(),\n /** Minimum similarity score (0-1) or distance threshold */\n threshold: z.number().optional()\n});\n\n/**\n * Data Engine Batch Request\n * Execute multiple operations in a single transaction/request efficiently.\n */\nexport const DataEngineBatchRequestSchema = z.object({\n method: z.literal('batch'),\n requests: z.array(z.discriminatedUnion('method', [\n DataEngineFindRequestSchema,\n DataEngineFindOneRequestSchema,\n DataEngineInsertRequestSchema,\n DataEngineUpdateRequestSchema,\n DataEngineDeleteRequestSchema,\n DataEngineCountRequestSchema,\n DataEngineAggregateRequestSchema,\n DataEngineExecuteRequestSchema,\n DataEngineVectorFindRequestSchema\n ])),\n /** \n * Transaction Mode\n * - true: All or nothing (Atomic)\n * - false: Best effort, continue on error\n */\n transaction: z.boolean().default(true).optional()\n});\n\n/**\n * Unified Data Engine Request Union\n * Use this to validate any incoming \"Virtual ObjectQL\" request.\n */\nexport const DataEngineRequestSchema = z.discriminatedUnion('method', [\n DataEngineFindRequestSchema,\n DataEngineFindOneRequestSchema,\n DataEngineInsertRequestSchema,\n DataEngineUpdateRequestSchema,\n DataEngineDeleteRequestSchema,\n DataEngineCountRequestSchema,\n DataEngineAggregateRequestSchema,\n DataEngineBatchRequestSchema,\n DataEngineExecuteRequestSchema,\n DataEngineVectorFindRequestSchema\n]).describe('Virtual ObjectQL Request Protocol');\n\n// ==========================================================================\n// 10. Type Exports\n// ==========================================================================\n\nexport type DataEngineFilter = z.infer<typeof DataEngineFilterSchema>;\nexport type DataEngineSort = z.infer<typeof DataEngineSortSchema>;\nexport type BaseEngineOptions = z.infer<typeof BaseEngineOptionsSchema>;\nexport type DataEngineQueryOptions = z.infer<typeof DataEngineQueryOptionsSchema>;\nexport type DataEngineInsertOptions = z.infer<typeof DataEngineInsertOptionsSchema>;\nexport type DataEngineUpdateOptions = z.infer<typeof DataEngineUpdateOptionsSchema>;\nexport type DataEngineDeleteOptions = z.infer<typeof DataEngineDeleteOptionsSchema>;\nexport type DataEngineAggregateOptions = z.infer<typeof DataEngineAggregateOptionsSchema>;\nexport type DataEngineCountOptions = z.infer<typeof DataEngineCountOptionsSchema>;\nexport type DataEngineRequest = z.infer<typeof DataEngineRequestSchema>;\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 */\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 = 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 { QuerySchema } from '../data/query.zod';\nimport { IsolationLevelEnum } from '../shared/enums.zod';\n\n/**\n * Common Driver Options\n * Passed to most driver methods to control behavior (transactions, timeouts, etc.)\n */\nexport const DriverOptionsSchema = z.object({\n /**\n * Transaction handle/identifier.\n * If provided, the operation must run within this transaction.\n */\n transaction: z.unknown().optional().describe('Transaction handle'),\n\n /**\n * Operation timeout in milliseconds.\n */\n timeout: z.number().optional().describe('Timeout in ms'),\n\n /**\n * Whether to bypass cache and force a fresh read.\n */\n skipCache: z.boolean().optional().describe('Bypass cache'),\n\n /**\n * Distributed Tracing Context.\n * Used for passing OpenTelemetry span context or request IDs for observability.\n */\n traceContext: z.record(z.string(), z.string()).optional().describe('OpenTelemetry context or request ID'),\n\n /**\n * Tenant Identifier.\n * For multi-tenant databases (row-level security or schema-per-tenant).\n */\n tenantId: z.string().optional().describe('Tenant Isolation identifier'),\n});\n\n/**\n * Driver Capabilities Schema\n * \n * Defines what features a database driver supports.\n * This allows ObjectQL to adapt its behavior based on underlying database capabilities.\n * Enhanced with granular capability flags for better feature detection.\n */\nexport const DriverCapabilitiesSchema = z.object({\n // ============================================================================\n // Basic CRUD Operations\n // ============================================================================\n \n /**\n * Whether the driver supports create operations.\n */\n create: z.boolean().default(true).describe('Supports CREATE operations'),\n \n /**\n * Whether the driver supports read operations.\n */\n read: z.boolean().default(true).describe('Supports READ operations'),\n \n /**\n * Whether the driver supports update operations.\n */\n update: z.boolean().default(true).describe('Supports UPDATE operations'),\n \n /**\n * Whether the driver supports delete operations.\n */\n delete: z.boolean().default(true).describe('Supports DELETE operations'),\n\n // ============================================================================\n // Bulk Operations\n // ============================================================================\n \n /**\n * Whether the driver supports bulk create operations.\n */\n bulkCreate: z.boolean().default(false).describe('Supports bulk CREATE operations'),\n \n /**\n * Whether the driver supports bulk update operations.\n */\n bulkUpdate: z.boolean().default(false).describe('Supports bulk UPDATE operations'),\n \n /**\n * Whether the driver supports bulk delete operations.\n */\n bulkDelete: z.boolean().default(false).describe('Supports bulk DELETE operations'),\n\n // ============================================================================\n // Transaction & Connection Management\n // ============================================================================\n \n /**\n * Whether the driver supports database transactions.\n * If true, beginTransaction, commit, and rollback must be implemented.\n */\n transactions: z.boolean().default(false).describe('Supports ACID transactions'),\n \n /**\n * Whether the driver supports savepoints within transactions.\n */\n savepoints: z.boolean().default(false).describe('Supports transaction savepoints'),\n \n /**\n * Supported transaction isolation levels.\n */\n isolationLevels: z.array(IsolationLevelEnum).optional().describe('Supported isolation levels'),\n\n // ============================================================================\n // Query Operations\n // ============================================================================\n \n /**\n * Whether the driver supports WHERE clause filters.\n * If false, ObjectQL will fetch all records and filter in memory.\n * \n * Example: Memory driver might not support complex filter conditions.\n */\n queryFilters: z.boolean().default(true).describe('Supports WHERE clause filtering'),\n\n /**\n * Whether the driver supports aggregation functions (COUNT, SUM, AVG, etc.).\n * If false, ObjectQL will compute aggregations in memory.\n */\n queryAggregations: z.boolean().default(false).describe('Supports GROUP BY and aggregation functions'),\n\n /**\n * Whether the driver supports ORDER BY sorting.\n * If false, ObjectQL will sort results in memory.\n */\n querySorting: z.boolean().default(true).describe('Supports ORDER BY sorting'),\n\n /**\n * Whether the driver supports LIMIT/OFFSET pagination.\n * If false, ObjectQL will fetch all records and paginate in memory.\n */\n queryPagination: z.boolean().default(true).describe('Supports LIMIT/OFFSET pagination'),\n\n /**\n * Whether the driver supports window functions (ROW_NUMBER, RANK, LAG, LEAD, etc.).\n * If false, ObjectQL will compute window functions in memory.\n */\n queryWindowFunctions: z.boolean().default(false).describe('Supports window functions with OVER clause'),\n\n /**\n * Whether the driver supports subqueries (nested SELECT statements).\n * If false, ObjectQL will execute queries separately and combine results.\n */\n querySubqueries: z.boolean().default(false).describe('Supports subqueries'),\n \n /**\n * Whether the driver supports Common Table Expressions (WITH clause).\n */\n queryCTE: z.boolean().default(false).describe('Supports Common Table Expressions (WITH clause)'),\n\n /**\n * Whether the driver supports SQL-style joins.\n * If false, ObjectQL will fetch related data separately and join in memory.\n */\n joins: z.boolean().default(false).describe('Supports SQL joins'),\n\n // ============================================================================\n // Advanced Features\n // ============================================================================\n \n /**\n * Whether the driver supports full-text search.\n * If true, text search queries can be pushed to the database.\n */\n fullTextSearch: z.boolean().default(false).describe('Supports full-text search'),\n \n /**\n * Whether the driver supports JSON querying capabilities.\n */\n jsonQuery: z.boolean().default(false).describe('Supports JSON field querying'),\n \n /**\n * Whether the driver supports geospatial queries.\n */\n geospatialQuery: z.boolean().default(false).describe('Supports geospatial queries'),\n \n /**\n * Whether the driver supports streaming large result sets.\n */\n streaming: z.boolean().default(false).describe('Supports result streaming (cursors/iterators)'),\n\n /**\n * Whether the driver supports JSON field types.\n * If false, JSON data will be serialized as strings.\n */\n jsonFields: z.boolean().default(false).describe('Supports JSON field types'),\n\n /**\n * Whether the driver supports array field types.\n * If false, arrays will be stored as JSON strings or in separate tables.\n */\n arrayFields: z.boolean().default(false).describe('Supports array field types'),\n\n /**\n * Whether the driver supports vector embeddings and similarity search.\n * Required for RAG (Retrieval-Augmented Generation) and AI features.\n */\n vectorSearch: z.boolean().default(false).describe('Supports vector embeddings and similarity search'),\n\n // ============================================================================\n // Schema Management\n // ============================================================================\n \n /**\n * Whether the driver supports automatic schema synchronization.\n */\n schemaSync: z.boolean().default(false).describe('Supports automatic schema synchronization'),\n \n /**\n * Whether the driver supports database migrations.\n */\n migrations: z.boolean().default(false).describe('Supports database migrations'),\n \n /**\n * Whether the driver supports index management.\n */\n indexes: z.boolean().default(false).describe('Supports index creation and management'),\n\n // ============================================================================\n // Performance & Optimization\n // ============================================================================\n \n /**\n * Whether the driver supports connection pooling.\n */\n connectionPooling: z.boolean().default(false).describe('Supports connection pooling'),\n \n /**\n * Whether the driver supports prepared statements.\n */\n preparedStatements: z.boolean().default(false).describe('Supports prepared statements (SQL injection prevention)'),\n \n /**\n * Whether the driver supports query result caching.\n */\n queryCache: z.boolean().default(false).describe('Supports query result caching'),\n});\n\n/**\n * Unified Database Driver Interface\n * \n * This is the contract that all storage adapters (Postgres, Mongo, Excel, Salesforce) must implement.\n * It abstracts the underlying engine, enabling ObjectStack to be \"Database Agnostic\".\n */\nexport const DriverInterfaceSchema = z.object({\n /**\n * Driver name (e.g., 'postgresql', 'mongodb', 'rest_api').\n */\n name: z.string().describe('Driver unique name'),\n\n /**\n * Driver version.\n */\n version: z.string().describe('Driver version'),\n\n /**\n * Capabilities descriptor.\n */\n supports: DriverCapabilitiesSchema,\n\n // ============================================================================\n // Lifecycle Management\n // ============================================================================\n\n /**\n * Initialize connection pool or authenticate.\n */\n connect: z.function()\n .input(z.tuple([]))\n .output(z.promise(z.void()))\n .describe('Establish connection'),\n\n /**\n * Close connections and cleanup resources.\n */\n disconnect: z.function()\n .input(z.tuple([]))\n .output(z.promise(z.void()))\n .describe('Close connection'),\n\n /**\n * Check connection health.\n * @returns true if healthy, false otherwise.\n */\n checkHealth: z.function()\n .input(z.tuple([]))\n .output(z.promise(z.boolean()))\n .describe('Health check'),\n \n /**\n * Get Connection Pool Statistics.\n * Useful for monitoring database load.\n */\n getPoolStats: z.function()\n .input(z.tuple([]))\n .output(z.object({\n total: z.number(),\n idle: z.number(),\n active: z.number(),\n waiting: z.number(),\n }).optional())\n .optional()\n .describe('Get connection pool statistics'),\n\n // ============================================================================\n // Raw Execution (Escape Hatch)\n // ============================================================================\n\n /**\n * Execute a raw command/query native to the driver.\n * Useful for complex reports, stored procedures, or DDL not covered by standard sync.\n * \n * @param command - The raw command (e.g., SQL string, shell command, or remote API payload).\n * @param parameters - Optional array of bound parameters for safe execution (prevention of injection).\n * @param options - Driver options (transaction context, timeout).\n * @returns Promise resolving to the raw result from the driver.\n * \n * @example\n * // SQL Driver\n * await driver.execute('SELECT * FROM complex_view WHERE id = ?', [123]);\n * \n * // Mongo Driver\n * await driver.execute({ aggregate: 'orders', pipeline: [...] });\n */\n execute: z.function()\n .input(z.tuple([z.unknown(), z.array(z.unknown()).optional(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.unknown()))\n .describe('Execute raw command'),\n\n // ============================================================================\n // CRUD Operations\n // ============================================================================\n\n /**\n * Find multiple records matching the structured query.\n * Parsing the QueryAST is the responsibility of the driver implementation.\n * \n * @param object - The name of the object/table to query (e.g. 'account').\n * @param query - The structured QueryAST (filters, sorts, joins, pagination).\n * @param options - Driver options.\n * @returns Array of records.\n * \n * @example\n * await driver.find('account', {\n * filters: [['status', '=', 'active'], 'and', ['amount', '>', 500]],\n * sort: [{ field: 'created_at', order: 'desc' }],\n * top: 10\n * });\n * @returns Array of records.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n find: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.promise(z.array(z.record(z.string(), z.unknown()))))\n .describe('Find records'),\n\n /**\n * Stream records matching the structured query.\n * Optimized for large datasets to avoid memory overflow.\n * \n * @param object - The name of the object.\n * @param query - The structured QueryAST.\n * @param options - Driver options.\n * @returns AsyncIterable/ReadableStream of records.\n */\n findStream: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.unknown())\n .describe('Stream records (AsyncIterable)'),\n\n /**\n * Find a single record by query.\n * Similar to find(), but returns only the first match or null.\n * \n * @param object - The name of the object.\n * @param query - QueryAST.\n * @param options - Driver options.\n * @returns The record or null.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n findOne: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.promise(z.record(z.string(), z.unknown()).nullable()))\n .describe('Find one record'),\n\n /**\n * Create a new record.\n * \n * @param object - The object name.\n * @param data - Key-value map of field data.\n * @param options - Driver options.\n * @returns The created record, including server-generated fields (id, created_at, etc.).\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n create: z.function()\n .input(z.tuple([z.string(), z.record(z.string(), z.unknown()), DriverOptionsSchema.optional()]))\n .output(z.promise(z.record(z.string(), z.unknown())))\n .describe('Create record'),\n\n /**\n * Update an existing record by ID.\n * \n * @param object - The object name.\n * @param id - The unique identifier of the record.\n * @param data - The fields to update.\n * @param options - Driver options.\n * @returns The updated record.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n update: z.function()\n .input(z.tuple([z.string(), z.string().or(z.number()), z.record(z.string(), z.unknown()), DriverOptionsSchema.optional()]))\n .output(z.promise(z.record(z.string(), z.unknown())))\n .describe('Update record'),\n\n /**\n * Upsert (Update or Insert) a record.\n * \n * @param object - The object name.\n * @param data - The data to upsert.\n * @param conflictKeys - Fields to check for conflict (uniqueness).\n * @param options - Driver options.\n * @returns The created or updated record.\n */\n upsert: z.function()\n .input(z.tuple([z.string(), z.record(z.string(), z.unknown()), z.array(z.string()).optional(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.record(z.string(), z.unknown())))\n .describe('Upsert record'),\n\n /**\n * Delete a record by ID.\n * \n * @param object - The object name.\n * @param id - The unique identifier of the record.\n * @param options - Driver options.\n * @returns True if deleted, false if not found.\n */\n delete: z.function()\n .input(z.tuple([z.string(), z.string().or(z.number()), DriverOptionsSchema.optional()]))\n .output(z.promise(z.boolean()))\n .describe('Delete record'),\n\n /**\n * Count records matching a query.\n * \n * @param object - The object name.\n * @param query - Optional filtering criteria.\n * @param options - Driver options.\n * @returns Total count.\n */\n count: z.function()\n .input(z.tuple([z.string(), QuerySchema.optional(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.number()))\n .describe('Count records'),\n\n // ============================================================================\n // Bulk Operations\n // ============================================================================\n\n /**\n * Create multiple records in a single batch.\n * Optimized for performance.\n * \n * @param object - The object name.\n * @param dataArray - Array of record data.\n * @returns Array of created records.\n */\n bulkCreate: z.function()\n .input(z.tuple([z.string(), z.array(z.record(z.string(), z.unknown())), DriverOptionsSchema.optional()]))\n .output(z.promise(z.array(z.record(z.string(), z.unknown())))),\n\n /**\n * Update multiple records in a single batch.\n * \n * @param object - The object name.\n * @param updates - Array of objects containing {id, data}.\n * @returns Array of updated records.\n */\n bulkUpdate: z.function()\n .input(z.tuple([z.string(), z.array(z.object({ id: z.string().or(z.number()), data: z.record(z.string(), z.unknown()) })), DriverOptionsSchema.optional()]))\n .output(z.promise(z.array(z.record(z.string(), z.unknown())))),\n\n /**\n * Delete multiple records in a single batch.\n * \n * @param object - The object name.\n * @param ids - Array of record IDs.\n */\n bulkDelete: z.function()\n .input(z.tuple([z.string(), z.array(z.string().or(z.number())), DriverOptionsSchema.optional()]))\n .output(z.promise(z.void())),\n\n /**\n * Update multiple records matching a query.\n * Direct database push-down. DOES NOT trigger per-record hooks.\n * \n * @param object - The object name.\n * @param query - The filtering criteria.\n * @param data - The data to update.\n * @returns Count of modified records.\n */\n updateMany: z.function()\n .input(z.tuple([z.string(), QuerySchema, z.record(z.string(), z.unknown()), DriverOptionsSchema.optional()]))\n .output(z.promise(z.number()))\n .optional(),\n\n /**\n * Delete multiple records matching a query.\n * Direct database push-down. DOES NOT trigger per-record hooks.\n * \n * @param object - The object name.\n * @param query - The filtering criteria.\n * @returns Count of deleted records.\n */\n deleteMany: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.promise(z.number()))\n .optional(),\n\n // ============================================================================\n // Transaction Management\n // ============================================================================\n\n /**\n * Begin a new database transaction.\n * @param options - Isolation level and other settings.\n * @returns A transaction handle to be passed to subsequent operations via `options.transaction`.\n */\n beginTransaction: z.function()\n .input(z.tuple([z.object({\n isolationLevel: IsolationLevelEnum.optional()\n }).optional()]))\n .output(z.promise(z.unknown()))\n .describe('Start transaction'),\n\n /**\n * Commit the transaction.\n * @param transaction - The transaction handle.\n */\n commit: z.function()\n .input(z.tuple([z.unknown()]))\n .output(z.promise(z.void()))\n .describe('Commit transaction'),\n\n /**\n * Rollback the transaction.\n * @param transaction - The transaction handle.\n */\n rollback: z.function()\n .input(z.tuple([z.unknown()]))\n .output(z.promise(z.void()))\n .describe('Rollback transaction'),\n\n // ============================================================================\n // Schema Management\n // ============================================================================\n\n /**\n * Synchronize the database schema with the Object definition.\n * This is an idempotent operation: it should create tables if missing, \n * add columns if missing, and update indexes.\n * \n * @param object - The object name.\n * @param schema - The full Object Schema (fields, indexes, etc).\n * @param options - Driver options.\n */\n syncSchema: z.function()\n .input(z.tuple([z.string(), z.unknown(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.void()))\n .describe('Sync object schema to DB'),\n \n /**\n * Drop the underlying table or collection for an object.\n * WARNING: Destructive operation.\n * \n * @param object - The object name.\n */\n dropTable: z.function()\n .input(z.tuple([z.string(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.void())),\n\n /**\n * Analyze query performance.\n * Returns execution plan without executing the query (where possible).\n * \n * @param object - The object name.\n * @param query - The query to explain.\n * @returns The execution plan details.\n */\n explain: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.promise(z.unknown()))\n .optional(),\n});\n\n/**\n * Connection Pool Configuration Schema\n * Manages database connection pooling for performance\n */\nexport const PoolConfigSchema = z.object({\n min: z.number().min(0).default(2).describe('Minimum number of connections in pool'),\n max: z.number().min(1).default(10).describe('Maximum number of connections in pool'),\n idleTimeoutMillis: z.number().min(0).default(30000).describe('Time in ms before idle connection is closed'),\n connectionTimeoutMillis: z.number().min(0).default(5000).describe('Time in ms to wait for available connection'),\n});\n\n/**\n * Driver Configuration Schema\n * Base configuration for database drivers\n */\nexport const DriverConfigSchema = z.object({\n name: z.string().describe('Driver instance name'),\n type: z.enum(['sql', 'nosql', 'cache', 'search', 'graph', 'timeseries']).describe('Driver type category'),\n capabilities: DriverCapabilitiesSchema.describe('Driver capability flags'),\n connectionString: z.string().optional().describe('Database connection string (driver-specific format)'),\n poolConfig: PoolConfigSchema.optional().describe('Connection pool configuration'),\n});\n\n/**\n * TypeScript types\n */\nexport type DriverOptions = z.infer<typeof DriverOptionsSchema>;\nexport type DriverCapabilities = z.infer<typeof DriverCapabilitiesSchema>;\nexport type DriverInterface = z.infer<typeof DriverInterfaceSchema>;\nexport type DriverConfig = z.infer<typeof DriverConfigSchema>;\nexport type PoolConfig = z.infer<typeof PoolConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { DriverConfigSchema } from './driver.zod';\n\n/**\n * SQL Dialect Enumeration\n * Supported SQL database dialects\n */\nexport const SQLDialectSchema = z.enum([\n 'postgresql',\n 'mysql',\n 'sqlite',\n 'mssql',\n 'oracle',\n 'mariadb',\n]);\n\nexport type SQLDialect = z.infer<typeof SQLDialectSchema>;\n\n/**\n * Data Type Mapping Schema\n * Maps ObjectStack field types to SQL-specific data types\n * \n * @example PostgreSQL data type mapping\n * {\n * text: 'VARCHAR(255)',\n * number: 'NUMERIC',\n * boolean: 'BOOLEAN',\n * date: 'DATE',\n * datetime: 'TIMESTAMP',\n * json: 'JSONB',\n * uuid: 'UUID',\n * binary: 'BYTEA'\n * }\n */\nexport const DataTypeMappingSchema = z.object({\n text: z.string().describe('SQL type for text fields (e.g., VARCHAR, TEXT)'),\n number: z.string().describe('SQL type for number fields (e.g., NUMERIC, DECIMAL, INT)'),\n boolean: z.string().describe('SQL type for boolean fields (e.g., BOOLEAN, BIT)'),\n date: z.string().describe('SQL type for date fields (e.g., DATE)'),\n datetime: z.string().describe('SQL type for datetime fields (e.g., TIMESTAMP, DATETIME)'),\n json: z.string().optional().describe('SQL type for JSON fields (e.g., JSON, JSONB)'),\n uuid: z.string().optional().describe('SQL type for UUID fields (e.g., UUID, CHAR(36))'),\n binary: z.string().optional().describe('SQL type for binary fields (e.g., BLOB, BYTEA)'),\n});\n\nexport type DataTypeMapping = z.infer<typeof DataTypeMappingSchema>;\n\n/**\n * SSL Configuration Schema\n * SSL/TLS connection configuration for secure database connections\n * \n * @example PostgreSQL SSL configuration\n * {\n * rejectUnauthorized: true,\n * ca: '/path/to/ca-cert.pem',\n * cert: '/path/to/client-cert.pem',\n * key: '/path/to/client-key.pem'\n * }\n */\nexport const SSLConfigSchema = z.object({\n rejectUnauthorized: z.boolean().default(true).describe('Reject connections with invalid certificates'),\n ca: z.string().optional().describe('CA certificate file path or content'),\n cert: z.string().optional().describe('Client certificate file path or content'),\n key: z.string().optional().describe('Client private key file path or content'),\n}).refine((data) => {\n // If cert is provided, key must also be provided, and vice versa\n const hasCert = data.cert !== undefined;\n const hasKey = data.key !== undefined;\n return hasCert === hasKey;\n}, {\n message: 'Client certificate (cert) and private key (key) must be provided together',\n});\n\nexport type SSLConfig = z.infer<typeof SSLConfigSchema>;\n\n/**\n * SQL Driver Configuration Schema\n * Extended driver configuration specific to SQL databases\n * \n * @example PostgreSQL driver configuration\n * {\n * name: 'primary-db',\n * type: 'sql',\n * dialect: 'postgresql',\n * connectionString: 'postgresql://user:pass@localhost:5432/mydb',\n * dataTypeMapping: {\n * text: 'VARCHAR(255)',\n * number: 'NUMERIC',\n * boolean: 'BOOLEAN',\n * date: 'DATE',\n * datetime: 'TIMESTAMP',\n * json: 'JSONB',\n * uuid: 'UUID',\n * binary: 'BYTEA'\n * },\n * ssl: true,\n * sslConfig: {\n * rejectUnauthorized: true,\n * ca: '/etc/ssl/certs/ca.pem'\n * },\n * poolConfig: {\n * min: 2,\n * max: 10,\n * idleTimeoutMillis: 30000,\n * connectionTimeoutMillis: 5000\n * },\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: true,\n * bulkDelete: true,\n * transactions: true,\n * savepoints: true,\n * isolationLevels: ['read-committed', 'repeatable-read', 'serializable'],\n * queryFilters: true,\n * queryAggregations: true,\n * querySorting: true,\n * queryPagination: true,\n * queryWindowFunctions: true,\n * querySubqueries: true,\n * queryCTE: true,\n * joins: true,\n * fullTextSearch: true,\n * jsonQuery: true,\n * geospatialQuery: false,\n * streaming: true,\n * jsonFields: true,\n * arrayFields: true,\n * vectorSearch: true,\n * schemaSync: true,\n * migrations: true,\n * indexes: true,\n * connectionPooling: true,\n * preparedStatements: true,\n * queryCache: false\n * }\n * }\n */\nexport const SQLDriverConfigSchema = DriverConfigSchema.extend({\n type: z.literal('sql').describe('Driver type must be \"sql\"'),\n dialect: SQLDialectSchema.describe('SQL database dialect'),\n dataTypeMapping: DataTypeMappingSchema.describe('SQL data type mapping configuration'),\n ssl: z.boolean().default(false).describe('Enable SSL/TLS connection'),\n sslConfig: SSLConfigSchema.optional().describe('SSL/TLS configuration (required when ssl is true)'),\n}).refine((data) => {\n // If ssl is enabled, sslConfig must be provided\n if (data.ssl && !data.sslConfig) {\n return false;\n }\n return true;\n}, {\n message: 'sslConfig is required when ssl is true',\n});\n\nexport type SQLDriverConfig = z.infer<typeof SQLDriverConfigSchema>;\n\n// ==========================================================================\n// SQLite-Specific Constants\n// ==========================================================================\n\n/**\n * Default data type mappings for SQLite/libSQL dialect.\n *\n * SQLite uses a simplified type system with type affinity:\n * - TEXT: strings, dates, UUIDs\n * - REAL: floating-point numbers\n * - INTEGER: integers, booleans\n * - BLOB: binary data\n *\n * @see https://www.sqlite.org/datatype3.html\n */\nexport const SQLiteDataTypeMappingDefaults: DataTypeMapping = {\n text: 'TEXT',\n number: 'REAL',\n boolean: 'INTEGER',\n date: 'TEXT',\n datetime: 'TEXT',\n json: 'TEXT',\n uuid: 'TEXT',\n binary: 'BLOB',\n};\n\n/**\n * SQLite ALTER TABLE Limitations.\n *\n * SQLite has limited ALTER TABLE support compared to other SQL databases.\n * This constant documents the known limitations that affect migration planning.\n * The schema diff service must use the \"table rebuild\" strategy for operations\n * that SQLite cannot perform natively.\n *\n * @see https://www.sqlite.org/lang_altertable.html\n */\nexport const SQLiteAlterTableLimitations = {\n /** SQLite supports ADD COLUMN */\n supportsAddColumn: true,\n /** SQLite supports RENAME COLUMN (3.25.0+) */\n supportsRenameColumn: true,\n /** SQLite supports DROP COLUMN (3.35.0+) */\n supportsDropColumn: true,\n /** SQLite does NOT support MODIFY/ALTER COLUMN type */\n supportsModifyColumn: false,\n /** SQLite does NOT support adding constraints to existing columns */\n supportsAddConstraint: false,\n /**\n * When an unsupported alteration is needed, the migration planner\n * must use the 12-step table rebuild strategy:\n * 1. CREATE new table with desired schema\n * 2. Copy data from old table\n * 3. DROP old table\n * 4. RENAME new table to old name\n */\n rebuildStrategy: 'create_copy_drop_rename',\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { DriverConfigSchema } from './driver.zod';\n\n/**\n * NoSQL Database Type Enumeration\n * Supported NoSQL database types\n */\nexport const NoSQLDatabaseTypeSchema = z.enum([\n 'mongodb',\n 'couchdb',\n 'dynamodb',\n 'cassandra',\n 'redis',\n 'elasticsearch',\n 'neo4j',\n 'orientdb',\n]);\n\nexport type NoSQLDatabaseType = z.infer<typeof NoSQLDatabaseTypeSchema>;\n\n/**\n * NoSQL Query Operation Types\n * Different types of operations supported by NoSQL databases\n */\nexport const NoSQLOperationTypeSchema = z.enum([\n 'find', // Query documents/records\n 'findOne', // Get single document\n 'insert', // Insert document\n 'update', // Update document\n 'delete', // Delete document\n 'aggregate', // Aggregation pipeline\n 'mapReduce', // MapReduce operation\n 'count', // Count documents\n 'distinct', // Get distinct values\n 'createIndex', // Create index\n 'dropIndex', // Drop index\n]);\n\nexport type NoSQLOperationType = z.infer<typeof NoSQLOperationTypeSchema>;\n\n/**\n * NoSQL Consistency Level\n * Consistency guarantees for distributed NoSQL databases\n * \n * Consistency levels (from strongest to weakest):\n * - **all**: All replicas must respond (strongest consistency, lowest availability)\n * - **quorum**: Majority of replicas must respond (balanced)\n * - **one**: Any single replica responds (weakest consistency, highest availability)\n * - **local_quorum**: Majority of replicas in local datacenter\n * - **each_quorum**: Quorum of replicas in each datacenter\n * - **eventual**: Eventual consistency (highest availability, weakest consistency)\n */\nexport const ConsistencyLevelSchema = z.enum([\n 'all',\n 'quorum',\n 'one',\n 'local_quorum',\n 'each_quorum',\n 'eventual',\n]);\n\nexport type ConsistencyLevel = z.infer<typeof ConsistencyLevelSchema>;\n\n/**\n * NoSQL Index Type\n * Types of indexes supported by NoSQL databases\n */\nexport const NoSQLIndexTypeSchema = z.enum([\n 'single', // Single field index\n 'compound', // Multiple fields index\n 'unique', // Unique constraint\n 'text', // Full-text search index\n 'geospatial', // Geospatial index (2d, 2dsphere)\n 'hashed', // Hashed index for sharding\n 'ttl', // Time-to-live index (auto-deletion)\n 'sparse', // Sparse index (only indexed documents with field)\n]);\n\nexport type NoSQLIndexType = z.infer<typeof NoSQLIndexTypeSchema>;\n\n/**\n * NoSQL Sharding Configuration\n * Configuration for horizontal partitioning across multiple nodes\n */\nexport const ShardingConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable sharding'),\n shardKey: z.string().optional().describe('Field to use as shard key'),\n shardingStrategy: z.enum(['hash', 'range', 'zone']).optional().describe('Sharding strategy'),\n numShards: z.number().int().positive().optional().describe('Number of shards'),\n});\n\nexport type ShardingConfig = z.infer<typeof ShardingConfigSchema>;\n\n/**\n * NoSQL Replication Configuration\n * Configuration for data replication across nodes\n */\nexport const ReplicationConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable replication'),\n replicaSetName: z.string().optional().describe('Replica set name'),\n replicas: z.number().int().positive().optional().describe('Number of replicas'),\n readPreference: z.enum(['primary', 'primaryPreferred', 'secondary', 'secondaryPreferred', 'nearest'])\n .optional()\n .describe('Read preference for replica set'),\n writeConcern: z.enum(['majority', 'acknowledged', 'unacknowledged'])\n .optional()\n .describe('Write concern level'),\n});\n\nexport type ReplicationConfig = z.infer<typeof ReplicationConfigSchema>;\n\n/**\n * Document Schema Validation\n * Schema validation rules for document-based NoSQL databases\n */\nexport const DocumentSchemaValidationSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable schema validation'),\n validationLevel: z.enum(['strict', 'moderate', 'off']).optional().describe('Validation strictness'),\n validationAction: z.enum(['error', 'warn']).optional().describe('Action on validation failure'),\n jsonSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for validation'),\n});\n\nexport type DocumentSchemaValidation = z.infer<typeof DocumentSchemaValidationSchema>;\n\n/**\n * NoSQL Data Type Mapping Schema\n * Maps ObjectStack field types to NoSQL-specific data types\n * \n * @example MongoDB data type mapping\n * {\n * text: 'string',\n * number: 'double',\n * boolean: 'bool',\n * date: 'date',\n * datetime: 'date',\n * json: 'object',\n * uuid: 'string',\n * binary: 'binData',\n * array: 'array',\n * objectId: 'objectId'\n * }\n */\nexport const NoSQLDataTypeMappingSchema = z.object({\n text: z.string().describe('NoSQL type for text fields'),\n number: z.string().describe('NoSQL type for number fields'),\n boolean: z.string().describe('NoSQL type for boolean fields'),\n date: z.string().describe('NoSQL type for date fields'),\n datetime: z.string().describe('NoSQL type for datetime fields'),\n json: z.string().optional().describe('NoSQL type for JSON/object fields'),\n uuid: z.string().optional().describe('NoSQL type for UUID fields'),\n binary: z.string().optional().describe('NoSQL type for binary fields'),\n array: z.string().optional().describe('NoSQL type for array fields'),\n objectId: z.string().optional().describe('NoSQL type for ObjectID fields (MongoDB)'),\n geopoint: z.string().optional().describe('NoSQL type for geospatial point fields'),\n});\n\nexport type NoSQLDataTypeMapping = z.infer<typeof NoSQLDataTypeMappingSchema>;\n\n/**\n * NoSQL Driver Configuration Schema\n * Extended driver configuration specific to NoSQL databases\n * \n * @example MongoDB driver configuration\n * {\n * name: 'primary-mongo',\n * type: 'nosql',\n * databaseType: 'mongodb',\n * connectionString: 'mongodb://user:pass@localhost:27017/mydb',\n * dataTypeMapping: {\n * text: 'string',\n * number: 'double',\n * boolean: 'bool',\n * date: 'date',\n * datetime: 'date',\n * json: 'object',\n * uuid: 'string',\n * binary: 'binData',\n * array: 'array',\n * objectId: 'objectId'\n * },\n * consistency: 'quorum',\n * replication: {\n * enabled: true,\n * replicaSetName: 'rs0',\n * replicas: 3,\n * readPreference: 'primaryPreferred',\n * writeConcern: 'majority'\n * },\n * sharding: {\n * enabled: true,\n * shardKey: '_id',\n * shardingStrategy: 'hash',\n * numShards: 4\n * },\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: true,\n * bulkDelete: true,\n * transactions: true,\n * savepoints: false,\n * queryFilters: true,\n * queryAggregations: true,\n * querySorting: true,\n * queryPagination: true,\n * queryWindowFunctions: false,\n * querySubqueries: false,\n * queryCTE: false,\n * joins: false,\n * fullTextSearch: true,\n * jsonQuery: true,\n * geospatialQuery: true,\n * streaming: true,\n * jsonFields: true,\n * arrayFields: true,\n * vectorSearch: false,\n * schemaSync: true,\n * migrations: false,\n * indexes: true,\n * connectionPooling: true,\n * preparedStatements: false,\n * queryCache: false\n * }\n * }\n * \n * @example DynamoDB driver configuration\n * {\n * name: 'dynamodb-main',\n * type: 'nosql',\n * databaseType: 'dynamodb',\n * region: 'us-east-1',\n * accessKeyId: 'AKIAIOSFODNN7EXAMPLE',\n * secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',\n * consistency: 'eventual',\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: false,\n * bulkDelete: false,\n * transactions: true,\n * queryFilters: true,\n * queryAggregations: false,\n * querySorting: true,\n * queryPagination: true,\n * fullTextSearch: false,\n * jsonQuery: true,\n * indexes: true\n * }\n * }\n */\nexport const NoSQLDriverConfigSchema = DriverConfigSchema.extend({\n type: z.literal('nosql').describe('Driver type must be \"nosql\"'),\n databaseType: NoSQLDatabaseTypeSchema.describe('Specific NoSQL database type'),\n dataTypeMapping: NoSQLDataTypeMappingSchema.describe('NoSQL data type mapping configuration'),\n \n /**\n * Consistency level for reads/writes\n */\n consistency: ConsistencyLevelSchema.optional().describe('Consistency level for operations'),\n \n /**\n * Replication configuration\n */\n replication: ReplicationConfigSchema.optional().describe('Replication configuration'),\n \n /**\n * Sharding configuration\n */\n sharding: ShardingConfigSchema.optional().describe('Sharding configuration'),\n \n /**\n * Schema validation rules (for document databases)\n */\n schemaValidation: DocumentSchemaValidationSchema.optional().describe('Document schema validation'),\n \n /**\n * AWS Region (for DynamoDB, DocumentDB, etc.)\n */\n region: z.string().optional().describe('AWS region (for managed NoSQL services)'),\n \n /**\n * AWS Access Key ID (for DynamoDB, DocumentDB, etc.)\n */\n accessKeyId: z.string().optional().describe('AWS access key ID'),\n \n /**\n * AWS Secret Access Key (for DynamoDB, DocumentDB, etc.)\n */\n secretAccessKey: z.string().optional().describe('AWS secret access key'),\n \n /**\n * Time-to-live (TTL) field name\n * Automatically delete documents after a specified time\n */\n ttlField: z.string().optional().describe('Field name for TTL (auto-deletion)'),\n \n /**\n * Maximum document size in bytes\n */\n maxDocumentSize: z.number().int().positive().optional().describe('Maximum document size in bytes'),\n \n /**\n * Collection/Table name prefix\n * Useful for multi-tenancy or environment isolation\n */\n collectionPrefix: z.string().optional().describe('Prefix for collection/table names'),\n});\n\nexport type NoSQLDriverConfig = z.infer<typeof NoSQLDriverConfigSchema>;\n\n/**\n * NoSQL Query Options\n * Additional options for NoSQL queries\n */\nexport const NoSQLQueryOptionsSchema = z.object({\n /**\n * Consistency level for this query\n */\n consistency: ConsistencyLevelSchema.optional().describe('Consistency level override'),\n \n /**\n * Read from secondary replicas\n */\n readFromSecondary: z.boolean().optional().describe('Allow reading from secondary replicas'),\n \n /**\n * Projection (fields to include/exclude)\n */\n projection: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional().describe('Field projection'),\n \n /**\n * Query timeout in milliseconds\n */\n timeout: z.number().int().positive().optional().describe('Query timeout (ms)'),\n \n /**\n * Use cursor for large result sets\n */\n useCursor: z.boolean().optional().describe('Use cursor instead of loading all results'),\n \n /**\n * Batch size for cursor iteration\n */\n batchSize: z.number().int().positive().optional().describe('Cursor batch size'),\n \n /**\n * Enable query profiling\n */\n profile: z.boolean().optional().describe('Enable query profiling'),\n \n /**\n * Use hinted index\n */\n hint: z.string().optional().describe('Index hint for query optimization'),\n});\n\nexport type NoSQLQueryOptions = z.infer<typeof NoSQLQueryOptionsSchema>;\n\n/**\n * NoSQL Aggregation Pipeline Stage\n * Represents a single stage in an aggregation pipeline (MongoDB-style)\n */\nexport const AggregationStageSchema = z.object({\n /**\n * Stage operator (e.g., $match, $group, $sort, $project)\n */\n operator: z.string().describe('Aggregation operator (e.g., $match, $group, $sort)'),\n \n /**\n * Stage parameters/options\n */\n options: z.record(z.string(), z.unknown()).describe('Stage-specific options'),\n});\n\nexport type AggregationStage = z.infer<typeof AggregationStageSchema>;\n\n/**\n * NoSQL Aggregation Pipeline\n * Sequence of aggregation stages for complex data transformations\n */\nexport const AggregationPipelineSchema = z.object({\n /**\n * Collection/Table to aggregate\n */\n collection: z.string().describe('Collection/table name'),\n \n /**\n * Pipeline stages\n */\n stages: z.array(AggregationStageSchema).describe('Aggregation pipeline stages'),\n \n /**\n * Additional options\n */\n options: NoSQLQueryOptionsSchema.optional().describe('Query options'),\n});\n\nexport type AggregationPipeline = z.infer<typeof AggregationPipelineSchema>;\n\n/**\n * NoSQL Index Definition\n * Definition for creating indexes in NoSQL databases\n */\nexport const NoSQLIndexSchema = z.object({\n /**\n * Index name\n */\n name: z.string().describe('Index name'),\n \n /**\n * Index type\n */\n type: NoSQLIndexTypeSchema.describe('Index type'),\n \n /**\n * Fields to index\n * For compound indexes, order matters\n */\n fields: z.array(z.object({\n field: z.string().describe('Field name'),\n order: z.enum(['asc', 'desc', 'text', '2dsphere']).optional().describe('Index order or type'),\n })).describe('Fields to index'),\n \n /**\n * Unique constraint\n */\n unique: z.boolean().default(false).describe('Enforce uniqueness'),\n \n /**\n * Sparse index (only index documents with the field)\n */\n sparse: z.boolean().default(false).describe('Sparse index'),\n \n /**\n * TTL in seconds (for TTL indexes)\n */\n expireAfterSeconds: z.number().int().positive().optional().describe('TTL in seconds'),\n \n /**\n * Partial index filter\n */\n partialFilterExpression: z.record(z.string(), z.unknown()).optional().describe('Partial index filter'),\n \n /**\n * Background index creation\n */\n background: z.boolean().default(false).describe('Create index in background'),\n});\n\nexport type NoSQLIndex = z.infer<typeof NoSQLIndexSchema>;\n\n/**\n * NoSQL Transaction Options\n * Options for NoSQL transactions (where supported)\n */\nexport const NoSQLTransactionOptionsSchema = z.object({\n /**\n * Read concern level\n */\n readConcern: z.enum(['local', 'majority', 'linearizable', 'snapshot']).optional().describe('Read concern level'),\n \n /**\n * Write concern level\n */\n writeConcern: z.enum(['majority', 'acknowledged', 'unacknowledged']).optional().describe('Write concern level'),\n \n /**\n * Read preference\n */\n readPreference: z.enum(['primary', 'primaryPreferred', 'secondary', 'secondaryPreferred', 'nearest'])\n .optional()\n .describe('Read preference'),\n \n /**\n * Transaction timeout in milliseconds\n */\n maxCommitTimeMS: z.number().int().positive().optional().describe('Transaction commit timeout (ms)'),\n});\n\nexport type NoSQLTransactionOptions = z.infer<typeof NoSQLTransactionOptionsSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Data Import Strategy\n * Defines how the engine handles existing records.\n */\nexport const DatasetMode = z.enum([\n 'insert', // Try to insert, fail on duplicate\n 'update', // Only update found records, ignore new\n 'upsert', // Create new or Update existing (Standard)\n 'replace', // Delete ALL records in object then insert (Dangerous - use for cache tables)\n 'ignore' // Try to insert, silently skip duplicates\n]);\n\n/**\n * Dataset Schema (Seed Data / Fixtures)\n * \n * Standardized format for transporting data.\n * Used for:\n * 1. System Bootstrapping (Admin accounts, Standard Roles)\n * 2. Reference Data (Countries, Currencies)\n * 3. Demo/Test Data\n */\nexport const DatasetSchema = z.object({\n /** \n * Target Object \n * The machine name of the object to populate.\n */\n object: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Target Object Name'),\n\n /** \n * Idempotency Key (The \"Upsert\" Key)\n * The field used to check if a record already exists.\n * Best Practice: Use a natural key like 'code', 'slug', 'username' or 'external_id'.\n * Standard: '_id' (internal ID) is rarely used for portable seed data.\n */\n externalId: z.string().default('name').describe('Field match for uniqueness check'),\n\n /** \n * Import Strategy\n */\n mode: DatasetMode.default('upsert').describe('Conflict resolution strategy'),\n\n /**\n * Environment Scope\n * - 'all': Always load\n * - 'dev': Only for development/demo\n * - 'test': Only for CI/CD tests\n */\n env: z.array(z.enum(['prod', 'dev', 'test'])).default(['prod', 'dev', 'test']).describe('Applicable environments'),\n\n /** \n * The Payload\n * Array of raw JSON objects matching the Object Schema.\n */\n records: z.array(z.record(z.string(), z.unknown())).describe('Data records'),\n});\n\n/** Parsed/output type — all defaults are applied (env, mode, externalId always present) */\nexport type Dataset = z.infer<typeof DatasetSchema>;\n\n/** Input type — fields with defaults (env, mode, externalId) are optional */\nexport type DatasetInput = z.input<typeof DatasetSchema>;\n\nexport type DatasetImportMode = z.infer<typeof DatasetMode>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Document Version Schema\n * \n * Represents a single version of a document in a version-controlled system.\n * Each version is immutable and maintains its own metadata and download URL.\n * \n * @example\n * ```json\n * {\n * \"versionNumber\": 2,\n * \"createdAt\": 1704067200000,\n * \"createdBy\": \"user_123\",\n * \"size\": 2048576,\n * \"checksum\": \"a1b2c3d4e5f6\",\n * \"downloadUrl\": \"https://storage.example.com/docs/v2/file.pdf\",\n * \"isLatest\": true\n * }\n * ```\n */\nexport const DocumentVersionSchema = z.object({\n /**\n * Sequential version number (increments with each new version)\n */\n versionNumber: z.number().describe('Version number'),\n\n /**\n * Timestamp when this version was created (Unix milliseconds)\n */\n createdAt: z.number().describe('Creation timestamp'),\n\n /**\n * User ID who created this version\n */\n createdBy: z.string().describe('Creator user ID'),\n\n /**\n * File size in bytes\n */\n size: z.number().describe('File size in bytes'),\n\n /**\n * Checksum/hash of the file content (for integrity verification)\n */\n checksum: z.string().describe('File checksum'),\n\n /**\n * URL to download this specific version\n */\n downloadUrl: z.string().url().describe('Download URL'),\n\n /**\n * Whether this is the latest version\n * @default false\n */\n isLatest: z.boolean().optional().default(false).describe('Is latest version'),\n});\n\n/**\n * Document Template Schema\n * \n * Defines a reusable document template with dynamic placeholders.\n * Templates can be used to generate documents with variable content.\n * \n * @example\n * ```json\n * {\n * \"id\": \"contract-template\",\n * \"name\": \"Service Agreement\",\n * \"description\": \"Standard service agreement template\",\n * \"fileUrl\": \"https://example.com/templates/contract.docx\",\n * \"fileType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n * \"placeholders\": [\n * {\n * \"key\": \"client_name\",\n * \"label\": \"Client Name\",\n * \"type\": \"text\",\n * \"required\": true\n * },\n * {\n * \"key\": \"contract_date\",\n * \"label\": \"Contract Date\",\n * \"type\": \"date\",\n * \"required\": true\n * }\n * ]\n * }\n * ```\n */\nexport const DocumentTemplateSchema = z.object({\n /**\n * Unique identifier for the template\n */\n id: z.string().describe('Template ID'),\n\n /**\n * Human-readable name of the template\n */\n name: z.string().describe('Template name'),\n\n /**\n * Optional description of the template's purpose\n */\n description: z.string().optional().describe('Template description'),\n\n /**\n * URL to the template file\n */\n fileUrl: z.string().url().describe('Template file URL'),\n\n /**\n * MIME type of the template file\n */\n fileType: z.string().describe('File MIME type'),\n\n /**\n * List of dynamic placeholders in the template\n */\n placeholders: z.array(z.object({\n /**\n * Placeholder identifier (used in template)\n */\n key: z.string().describe('Placeholder key'),\n\n /**\n * Human-readable label for the placeholder\n */\n label: z.string().describe('Placeholder label'),\n\n /**\n * Data type of the placeholder value\n */\n type: z.enum(['text', 'number', 'date', 'image']).describe('Placeholder type'),\n\n /**\n * Whether this placeholder must be filled\n * @default false\n */\n required: z.boolean().optional().default(false).describe('Is required'),\n })).describe('Template placeholders'),\n});\n\n/**\n * E-Signature Configuration Schema\n * \n * Configuration for electronic signature workflows.\n * Supports integration with popular e-signature providers.\n * \n * @example\n * ```json\n * {\n * \"provider\": \"docusign\",\n * \"enabled\": true,\n * \"signers\": [\n * {\n * \"email\": \"client@example.com\",\n * \"name\": \"John Doe\",\n * \"role\": \"Client\",\n * \"order\": 1\n * },\n * {\n * \"email\": \"manager@example.com\",\n * \"name\": \"Jane Smith\",\n * \"role\": \"Manager\",\n * \"order\": 2\n * }\n * ],\n * \"expirationDays\": 30,\n * \"reminderDays\": 7\n * }\n * ```\n */\nexport const ESignatureConfigSchema = z.object({\n /**\n * E-signature service provider\n */\n provider: z.enum(['docusign', 'adobe-sign', 'hellosign', 'custom']).describe('E-signature provider'),\n\n /**\n * Whether e-signature is enabled for this document\n * @default false\n */\n enabled: z.boolean().optional().default(false).describe('E-signature enabled'),\n\n /**\n * List of signers in signing order\n */\n signers: z.array(z.object({\n /**\n * Signer's email address\n */\n email: z.string().email().describe('Signer email'),\n\n /**\n * Signer's full name\n */\n name: z.string().describe('Signer name'),\n\n /**\n * Signer's role in the document\n */\n role: z.string().describe('Signer role'),\n\n /**\n * Signing order (lower numbers sign first)\n */\n order: z.number().describe('Signing order'),\n })).describe('Document signers'),\n\n /**\n * Days until signature request expires\n * @default 30\n */\n expirationDays: z.number().optional().default(30).describe('Expiration days'),\n\n /**\n * Days between reminder emails\n * @default 7\n */\n reminderDays: z.number().optional().default(7).describe('Reminder interval days'),\n});\n\n/**\n * Document Schema\n * \n * Comprehensive document management protocol supporting versioning,\n * templates, e-signatures, and access control.\n * \n * @example\n * ```json\n * {\n * \"id\": \"doc_123\",\n * \"name\": \"Service Agreement 2024\",\n * \"description\": \"Annual service agreement\",\n * \"fileType\": \"application/pdf\",\n * \"fileSize\": 1048576,\n * \"category\": \"contracts\",\n * \"tags\": [\"legal\", \"2024\", \"services\"],\n * \"versioning\": {\n * \"enabled\": true,\n * \"versions\": [\n * {\n * \"versionNumber\": 1,\n * \"createdAt\": 1704067200000,\n * \"createdBy\": \"user_123\",\n * \"size\": 1048576,\n * \"checksum\": \"abc123\",\n * \"downloadUrl\": \"https://example.com/docs/v1.pdf\",\n * \"isLatest\": true\n * }\n * ],\n * \"majorVersion\": 1,\n * \"minorVersion\": 0\n * },\n * \"access\": {\n * \"isPublic\": false,\n * \"sharedWith\": [\"user_456\", \"team_789\"],\n * \"expiresAt\": 1735689600000\n * },\n * \"metadata\": {\n * \"author\": \"John Doe\",\n * \"department\": \"Legal\"\n * }\n * }\n * ```\n */\nexport const DocumentSchema = z.object({\n /**\n * Unique document identifier\n */\n id: z.string().describe('Document ID'),\n\n /**\n * Document name\n */\n name: z.string().describe('Document name'),\n\n /**\n * Optional document description\n */\n description: z.string().optional().describe('Document description'),\n\n /**\n * MIME type of the document\n */\n fileType: z.string().describe('File MIME type'),\n\n /**\n * File size in bytes\n */\n fileSize: z.number().describe('File size in bytes'),\n\n /**\n * Document category for organization\n */\n category: z.string().optional().describe('Document category'),\n\n /**\n * Tags for searchability and organization\n */\n tags: z.array(z.string()).optional().describe('Document tags'),\n\n /**\n * Version control configuration\n */\n versioning: z.object({\n /**\n * Whether versioning is enabled\n */\n enabled: z.boolean().describe('Versioning enabled'),\n\n /**\n * List of all document versions\n */\n versions: z.array(DocumentVersionSchema).describe('Version history'),\n\n /**\n * Current major version number\n */\n majorVersion: z.number().describe('Major version'),\n\n /**\n * Current minor version number\n */\n minorVersion: z.number().describe('Minor version'),\n }).optional().describe('Version control'),\n\n /**\n * Template configuration (if document is generated from template)\n */\n template: DocumentTemplateSchema.optional().describe('Document template'),\n\n /**\n * E-signature configuration\n */\n eSignature: ESignatureConfigSchema.optional().describe('E-signature config'),\n\n /**\n * Access control settings\n */\n access: z.object({\n /**\n * Whether document is publicly accessible\n * @default false\n */\n isPublic: z.boolean().optional().default(false).describe('Public access'),\n\n /**\n * List of user/team IDs with access\n */\n sharedWith: z.array(z.string()).optional().describe('Shared with'),\n\n /**\n * Timestamp when access expires (Unix milliseconds)\n */\n expiresAt: z.number().optional().describe('Access expiration'),\n }).optional().describe('Access control'),\n\n /**\n * Custom metadata fields\n */\n metadata: z.record(z.string(), z.unknown()).optional().describe('Custom metadata'),\n});\n\n// Type exports\nexport type Document = z.infer<typeof DocumentSchema>;\nexport type DocumentVersion = z.infer<typeof DocumentVersionSchema>;\nexport type DocumentTemplate = z.infer<typeof DocumentTemplateSchema>;\nexport type ESignatureConfig = z.infer<typeof ESignatureConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Base Field Mapping Protocol\n * \n * Shared by: ETL, Sync, Connector, External Lookup\n * \n * This module provides the canonical field mapping schema used across\n * ObjectStack for data transformation and synchronization.\n * \n * **Use Cases:**\n * - ETL pipelines (data/mapping.zod.ts)\n * - Data synchronization (automation/sync.zod.ts)\n * - Integration connectors (integration/connector.zod.ts)\n * - External lookups (data/external-lookup.zod.ts)\n * \n * @example Basic field mapping\n * ```typescript\n * const mapping: FieldMapping = {\n * source: 'external_user_id',\n * target: 'user_id',\n * };\n * ```\n * \n * @example With transformation\n * ```typescript\n * const mapping: FieldMapping = {\n * source: 'user_name',\n * target: 'name',\n * transform: { type: 'cast', targetType: 'string' },\n * defaultValue: 'Unknown'\n * };\n * ```\n */\n\n/**\n * Transform Type Schema\n * \n * Defines the type of transformation to apply to a field value.\n * Implementations can extend this for domain-specific transforms.\n */\nexport const TransformTypeSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('constant'),\n value: z.unknown().describe('Constant value to use'),\n }).describe('Set a constant value'),\n \n z.object({\n type: z.literal('cast'),\n targetType: z.enum(['string', 'number', 'boolean', 'date']).describe('Target data type'),\n }).describe('Cast to a specific data type'),\n \n z.object({\n type: z.literal('lookup'),\n table: z.string().describe('Lookup table name'),\n keyField: z.string().describe('Field to match on'),\n valueField: z.string().describe('Field to retrieve'),\n }).describe('Lookup value from another table'),\n \n z.object({\n type: z.literal('javascript'),\n expression: z.string().describe('JavaScript expression (e.g., \"value.toUpperCase()\")'),\n }).describe('Custom JavaScript transformation'),\n \n z.object({\n type: z.literal('map'),\n mappings: z.record(z.string(), z.unknown()).describe('Value mappings (e.g., {\"Active\": \"active\"})'),\n }).describe('Map values using a dictionary'),\n]);\n\nexport type TransformType = z.infer<typeof TransformTypeSchema>;\n\n/**\n * Field Mapping Schema\n * \n * Base schema for mapping fields between source and target systems.\n * \n * **NAMING CONVENTION:**\n * - source: Field name in the source system\n * - target: Field name in the target system (should be snake_case for ObjectStack)\n * \n * @example\n * ```typescript\n * {\n * source: 'FirstName',\n * target: 'first_name',\n * transform: { type: 'cast', targetType: 'string' },\n * defaultValue: ''\n * }\n * ```\n */\nexport const FieldMappingSchema = z.object({\n /**\n * Source field name\n */\n source: z.string().describe('Source field name'),\n \n /**\n * Target field name (should be snake_case for ObjectStack)\n */\n target: z.string().describe('Target field name'),\n \n /**\n * Transformation to apply\n */\n transform: TransformTypeSchema.optional().describe('Transformation to apply'),\n \n /**\n * Default value if source is null/undefined\n */\n defaultValue: z.unknown().optional().describe('Default if source is null/undefined'),\n});\n\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldMappingSchema as BaseFieldMappingSchema } from '../shared/mapping.zod';\n\n/**\n * External Data Source Schema\n * \n * Configuration for connecting to external data systems.\n * Similar to Salesforce External Objects for real-time data integration.\n * \n * @example\n * ```json\n * {\n * \"id\": \"salesforce-accounts\",\n * \"name\": \"Salesforce Account Data\",\n * \"type\": \"rest-api\",\n * \"endpoint\": \"https://api.salesforce.com/services/data/v58.0\",\n * \"authentication\": {\n * \"type\": \"oauth2\",\n * \"config\": {\n * \"clientId\": \"...\",\n * \"clientSecret\": \"...\",\n * \"tokenUrl\": \"https://login.salesforce.com/services/oauth2/token\"\n * }\n * }\n * }\n * ```\n */\nexport const ExternalDataSourceSchema = z.object({\n /**\n * Unique identifier for the external data source\n */\n id: z.string().describe('Data source ID'),\n\n /**\n * Human-readable name of the data source\n */\n name: z.string().describe('Data source name'),\n\n /**\n * Protocol type for connecting to the data source\n */\n type: z.enum(['odata', 'rest-api', 'graphql', 'custom']).describe('Protocol type'),\n\n /**\n * Base URL endpoint for the external system\n */\n endpoint: z.string().url().describe('API endpoint URL'),\n\n /**\n * Authentication configuration\n */\n authentication: z.object({\n /**\n * Authentication method\n */\n type: z.enum(['oauth2', 'api-key', 'basic', 'none']).describe('Auth type'),\n\n /**\n * Authentication-specific configuration\n * Structure varies based on auth type\n */\n config: z.record(z.string(), z.unknown()).describe('Auth configuration'),\n }).describe('Authentication'),\n});\n\n/**\n * Field Mapping Schema for External Lookups\n * \n * Extends the base field mapping with external lookup specific features.\n * Uses the canonical field mapping protocol from shared/mapping.zod.ts.\n * \n * @see {@link BaseFieldMappingSchema} for the base field mapping schema\n * \n * @example\n * ```json\n * {\n * \"source\": \"AccountName\",\n * \"target\": \"name\",\n * \"readonly\": true\n * }\n * ```\n */\nexport const ExternalFieldMappingSchema = BaseFieldMappingSchema.extend({\n /**\n * Field data type\n */\n type: z.string().optional().describe('Field type'),\n\n /**\n * Whether the field is read-only\n * @default true\n */\n readonly: z.boolean().optional().default(true).describe('Read-only field'),\n});\n\n/**\n * External Lookup Schema\n * \n * Real-time data lookup protocol for external systems.\n * Enables querying external data sources without replication.\n * Inspired by Salesforce External Objects and OData protocols.\n * \n * @example\n * ```json\n * {\n * \"fieldName\": \"external_account\",\n * \"dataSource\": {\n * \"id\": \"salesforce-api\",\n * \"name\": \"Salesforce\",\n * \"type\": \"rest-api\",\n * \"endpoint\": \"https://api.salesforce.com/services/data/v58.0\",\n * \"authentication\": {\n * \"type\": \"oauth2\",\n * \"config\": {\"clientId\": \"...\"}\n * }\n * },\n * \"query\": {\n * \"endpoint\": \"/sobjects/Account\",\n * \"method\": \"GET\",\n * \"parameters\": {\"limit\": 100}\n * },\n * \"fieldMappings\": [\n * {\n * \"externalField\": \"Name\",\n * \"localField\": \"account_name\",\n * \"type\": \"text\",\n * \"readonly\": true\n * }\n * ],\n * \"caching\": {\n * \"enabled\": true,\n * \"ttl\": 300,\n * \"strategy\": \"ttl\"\n * },\n * \"fallback\": {\n * \"enabled\": true,\n * \"showError\": true\n * },\n * \"rateLimit\": {\n * \"requestsPerSecond\": 10,\n * \"burstSize\": 20\n * }\n * }\n * ```\n */\nexport const ExternalLookupSchema = z.object({\n /**\n * Name of the field that uses external lookup\n */\n fieldName: z.string().describe('Field name'),\n\n /**\n * External data source configuration\n */\n dataSource: ExternalDataSourceSchema.describe('External data source'),\n\n /**\n * Query configuration for fetching external data\n */\n query: z.object({\n /**\n * API endpoint path (relative to base endpoint)\n */\n endpoint: z.string().describe('Query endpoint path'),\n\n /**\n * HTTP method for the query\n * @default 'GET'\n */\n method: z.enum(['GET', 'POST']).optional().default('GET').describe('HTTP method'),\n\n /**\n * Query parameters or request body\n */\n parameters: z.record(z.string(), z.unknown()).optional().describe('Query parameters'),\n }).describe('Query configuration'),\n\n /**\n * Mapping between external and local fields\n */\n fieldMappings: z.array(ExternalFieldMappingSchema).describe('Field mappings'),\n\n /**\n * Cache configuration for external data\n */\n caching: z.object({\n /**\n * Whether caching is enabled\n * @default true\n */\n enabled: z.boolean().optional().default(true).describe('Cache enabled'),\n\n /**\n * Time-to-live in seconds\n * @default 300\n */\n ttl: z.number().optional().default(300).describe('Cache TTL (seconds)'),\n\n /**\n * Cache eviction strategy\n * @default 'ttl'\n */\n strategy: z.enum(['lru', 'lfu', 'ttl']).optional().default('ttl').describe('Cache strategy'),\n }).optional().describe('Caching configuration'),\n\n /**\n * Fallback behavior when external system is unavailable\n */\n fallback: z.object({\n /**\n * Whether fallback is enabled\n * @default true\n */\n enabled: z.boolean().optional().default(true).describe('Fallback enabled'),\n\n /**\n * Default value to use when external system fails\n */\n defaultValue: z.unknown().optional().describe('Default fallback value'),\n\n /**\n * Whether to show error message to user\n * @default true\n */\n showError: z.boolean().optional().default(true).describe('Show error to user'),\n }).optional().describe('Fallback configuration'),\n\n /**\n * Rate limiting to prevent overwhelming external system\n */\n rateLimit: z.object({\n /**\n * Maximum requests per second\n */\n requestsPerSecond: z.number().describe('Requests per second limit'),\n\n /**\n * Burst size for handling spikes\n */\n burstSize: z.number().optional().describe('Burst size'),\n }).optional().describe('Rate limiting'),\n\n /**\n * Retry configuration with exponential backoff\n *\n * @example\n * ```json\n * {\n * \"maxRetries\": 3,\n * \"initialDelayMs\": 1000,\n * \"maxDelayMs\": 30000,\n * \"backoffMultiplier\": 2,\n * \"retryableStatusCodes\": [429, 500, 502, 503, 504]\n * }\n * ```\n */\n retry: z.object({\n /** Maximum number of retry attempts */\n maxRetries: z.number().min(0).default(3).describe('Maximum retry attempts'),\n /** Initial delay before first retry (ms) */\n initialDelayMs: z.number().default(1000).describe('Initial retry delay in milliseconds'),\n /** Maximum delay between retries (ms) */\n maxDelayMs: z.number().default(30000).describe('Maximum retry delay in milliseconds'),\n /** Backoff multiplier for exponential backoff */\n backoffMultiplier: z.number().default(2).describe('Exponential backoff multiplier'),\n /** HTTP status codes that trigger a retry */\n retryableStatusCodes: z.array(z.number()).default([429, 500, 502, 503, 504])\n .describe('HTTP status codes that are retryable'),\n }).optional().describe('Retry configuration with exponential backoff'),\n\n /**\n * Request/response transformation pipeline\n *\n * Allows transforming request parameters and response data\n * before they are processed by the external lookup system.\n */\n transform: z.object({\n /** Transform request parameters before sending */\n request: z.object({\n /** Header transformations (key-value additions) */\n headers: z.record(z.string(), z.string()).optional().describe('Additional request headers'),\n /** Query parameter transformations */\n queryParams: z.record(z.string(), z.string()).optional().describe('Additional query parameters'),\n }).optional().describe('Request transformation'),\n /** Transform response data after receiving */\n response: z.object({\n /** JSONPath expression to extract data from response */\n dataPath: z.string().optional().describe('JSONPath to extract data (e.g., \"$.data.results\")'),\n /** JSONPath expression to extract total count for pagination */\n totalPath: z.string().optional().describe('JSONPath to extract total count (e.g., \"$.meta.total\")'),\n }).optional().describe('Response transformation'),\n }).optional().describe('Request/response transformation pipeline'),\n\n /** Pagination support for external data sources */\n pagination: z.object({\n /** Pagination type */\n type: z.enum(['offset', 'cursor', 'page']).default('offset').describe('Pagination type'),\n /** Page size */\n pageSize: z.number().default(100).describe('Items per page'),\n /** Maximum pages to fetch */\n maxPages: z.number().optional().describe('Maximum number of pages to fetch'),\n }).optional().describe('Pagination configuration for external data'),\n});\n\n// Type exports\nexport type ExternalLookup = z.infer<typeof ExternalLookupSchema>;\nexport type ExternalDataSource = z.infer<typeof ExternalDataSourceSchema>;\nexport type ExternalFieldMapping = z.infer<typeof ExternalFieldMappingSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n\n/**\n * Driver Identifier\n * Can be a built-in driver or a plugin-contributed driver (e.g., \"com.vendor.snowflake\").\n */\nexport const DriverType = z.string().describe('Underlying driver identifier');\n\n/**\n * Driver Definition Schema\n * Metadata describing a Database Driver.\n * Plugins use this to register new connectivity options.\n */\nexport const DriverDefinitionSchema = z.object({\n id: z.string().describe('Unique driver identifier (e.g. \"postgres\")'),\n label: z.string().describe('Display label (e.g. \"PostgreSQL\")'),\n description: z.string().optional(),\n icon: z.string().optional(),\n \n /**\n * Configuration Schema (JSON Schema)\n * Describes the structure of the `config` object needed for this driver.\n * Used by the UI to generate the connection form.\n */\n configSchema: z.record(z.string(), z.unknown()).describe('JSON Schema for connection configuration'),\n \n /**\n * Default Capabilities\n * What this driver supports out-of-the-box.\n */\n capabilities: z.lazy(() => DatasourceCapabilities).optional(),\n});\n\n/**\n * Datasource Capabilities Schema\n * Declares what this datasource naturally supports.\n * The ObjectQL engine uses this to determine what logic to push down\n * and what to compute in memory.\n */\nexport const DatasourceCapabilities = z.object({\n // ============================================================================\n // Transaction & Connection Management\n // ============================================================================\n \n /** Can handle ACID transactions? */\n transactions: z.boolean().default(false),\n \n // ============================================================================\n // Query Operations\n // ============================================================================\n \n /** Can execute WHERE clause filters natively? */\n queryFilters: z.boolean().default(false),\n \n /** Can perform aggregation (group by, sum, avg)? */\n queryAggregations: z.boolean().default(false),\n \n /** Can perform ORDER BY sorting? */\n querySorting: z.boolean().default(false),\n \n /** Can perform LIMIT/OFFSET pagination? */\n queryPagination: z.boolean().default(false),\n \n /** Can perform window functions? */\n queryWindowFunctions: z.boolean().default(false),\n \n /** Can perform subqueries? */\n querySubqueries: z.boolean().default(false),\n \n /** Can execute SQL-like joins natively? */\n joins: z.boolean().default(false),\n \n // ============================================================================\n // Advanced Features\n // ============================================================================\n \n /** Can perform full-text search? */\n fullTextSearch: z.boolean().default(false),\n \n /** Is read-only? */\n readOnly: z.boolean().default(false),\n \n /** Is scheme-less (needs schema inference)? */\n dynamicSchema: z.boolean().default(false),\n});\n\n/**\n * Datasource Schema\n * Represents a connection to an external data store.\n */\nexport const DatasourceSchema = z.object({\n /** Machine Name */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique datasource identifier'),\n \n /** Human Label */\n label: z.string().optional().describe('Display label'),\n \n /** Driver */\n driver: DriverType.describe('Underlying driver type'),\n \n /** \n * Connection Configuration \n * Specific to the driver (e.g., host, port, user, password, bucket, etc.)\n * Stored securely (passwords usually interpolated from ENV).\n */\n config: z.record(z.string(), z.unknown()).describe('Driver specific configuration'),\n \n /**\n * Connection Pool Configuration\n * Standard connection pooling settings.\n */\n pool: z.object({\n min: z.number().default(0).describe('Minimum connections'),\n max: z.number().default(10).describe('Maximum connections'),\n idleTimeoutMillis: z.number().default(30000).describe('Idle timeout'),\n connectionTimeoutMillis: z.number().default(3000).describe('Connection establishment timeout'),\n }).optional().describe('Connection pool settings'),\n\n /**\n * Read Replicas\n * Optional list of duplicate configurations for read-only operations.\n * Useful for scaling read throughput.\n */\n readReplicas: z.array(z.record(z.string(), z.unknown())).optional().describe('Read-only replica configurations'),\n\n /**\n * Capability Overrides\n * Manually override what the driver claims to support.\n */\n capabilities: DatasourceCapabilities.optional().describe('Capability overrides'),\n \n /** Health Check */\n healthCheck: z.object({\n enabled: z.boolean().default(true).describe('Enable health check endpoint'),\n intervalMs: z.number().default(30000).describe('Health check interval in milliseconds'),\n timeoutMs: z.number().default(5000).describe('Health check timeout in milliseconds'),\n }).optional().describe('Datasource health check configuration'),\n\n /** SSL/TLS Configuration */\n ssl: z.object({\n enabled: z.boolean().default(false).describe('Enable SSL/TLS for database connection'),\n rejectUnauthorized: z.boolean().default(true).describe('Reject connections with invalid/self-signed certificates'),\n ca: z.string().optional().describe('CA certificate (PEM format or path to file)'),\n cert: z.string().optional().describe('Client certificate (PEM format or path to file)'),\n key: z.string().optional().describe('Client private key (PEM format or path to file)'),\n }).optional().describe('SSL/TLS configuration for secure database connections'),\n\n /** Retry Policy */\n retryPolicy: z.object({\n maxRetries: z.number().default(3).describe('Maximum number of retry attempts'),\n baseDelayMs: z.number().default(1000).describe('Base delay between retries in milliseconds'),\n maxDelayMs: z.number().default(30000).describe('Maximum delay between retries in milliseconds'),\n backoffMultiplier: z.number().default(2).describe('Exponential backoff multiplier'),\n }).optional().describe('Connection retry policy for transient failures'),\n\n /** Description */\n description: z.string().optional().describe('Internal description'),\n \n /** Is enabled? */\n active: z.boolean().default(true).describe('Is datasource enabled'),\n});\n\nexport type Datasource = z.infer<typeof DatasourceSchema>;\nexport type DatasourceCapabilitiesType = z.infer<typeof DatasourceCapabilities>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Analytics/Semantic Layer Protocol\n * \n * Defines the \"Business Logic\" for data analysis.\n * Inspired by Cube.dev, LookML, and dbt MetricFlow.\n * \n * This layer decouples the \"Physical Data\" (Tables/Columns) from the \n * \"Business Data\" (Metrics/Dimensions).\n */\n\n/**\n * Aggregation Metric Type\n * The mathematical operation to perform on a metric.\n */\nexport const AggregationMetricType = z.enum([\n 'count', \n 'sum', \n 'avg', \n 'min', \n 'max', \n 'count_distinct', \n 'number', // Custom SQL expression returning a number\n 'string', // Custom SQL expression returning a string\n 'boolean' // Custom SQL expression returning a boolean\n]);\n\n/**\n * Dimension Type\n * The nature of the grouping field.\n */\nexport const DimensionType = z.enum([\n 'string', \n 'number', \n 'boolean', \n 'time', \n 'geo'\n]);\n\n/**\n * Time Interval for Time Dimensions\n */\nexport const TimeUpdateInterval = z.enum([\n 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'\n]);\n\n/**\n * Metric Schema\n * A quantitative measurement (e.g., \"Total Revenue\", \"Average Order Value\").\n */\nexport const MetricSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique metric ID'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n \n type: AggregationMetricType,\n \n /** Source Calculation */\n sql: z.string().describe('SQL expression or field reference'),\n \n /** Filtering for this specific metric (e.g. \"Revenue from Premium Users\") */\n filters: z.array(z.object({\n sql: z.string()\n })).optional(),\n \n /** Format for display (e.g. \"currency\", \"percent\") */\n format: z.string().optional(),\n});\n\n/**\n * Dimension Schema\n * A categorical attribute to group by (e.g., \"Product Category\", \"Order Date\").\n */\nexport const DimensionSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique dimension ID'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n \n type: DimensionType,\n \n /** Source Column */\n sql: z.string().describe('SQL expression or column reference'),\n \n /** For Time Dimensions: Supported Granularities */\n granularities: z.array(TimeUpdateInterval).optional(),\n});\n\n/**\n * Join Schema\n * Defines how this cube relates to others.\n */\nexport const CubeJoinSchema = z.object({\n name: z.string().describe('Target cube name'),\n relationship: z.enum(['one_to_one', 'one_to_many', 'many_to_one']).default('many_to_one'),\n sql: z.string().describe('Join condition (ON clause)'),\n});\n\n/**\n * Cube Schema\n * A logical data model representing a business entity or process for analysis.\n * Maps physical tables to business metrics and dimensions.\n */\nexport const CubeSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Cube name (snake_case)'),\n title: z.string().optional(),\n description: z.string().optional(),\n \n /** Physical Data Source */\n sql: z.string().describe('Base SQL statement or Table Name'),\n \n /** Semantic Definitions */\n measures: z.record(z.string(), MetricSchema).describe('Quantitative metrics'),\n dimensions: z.record(z.string(), DimensionSchema).describe('Qualitative attributes'),\n \n /** Relationships */\n joins: z.record(z.string(), CubeJoinSchema).optional(),\n \n /** Pre-aggregations / Caching */\n refreshKey: z.object({\n every: z.string().optional(), // e.g. \"1 hour\"\n sql: z.string().optional(), // SQL to check for data changes\n }).optional(),\n \n /** Access Control */\n public: z.boolean().default(false),\n});\n\n/**\n * Analytics Query Schema\n * The request format for the Analytics API.\n */\nexport const AnalyticsQuerySchema = z.object({\n cube: z.string().optional().describe('Target cube name (optional when provided externally, e.g. in API request wrapper)'),\n measures: z.array(z.string()).describe('List of metrics to calculate'),\n dimensions: z.array(z.string()).optional().describe('List of dimensions to group by'),\n \n filters: z.array(z.object({\n member: z.string().describe('Dimension or Measure'),\n operator: z.enum(['equals', 'notEquals', 'contains', 'notContains', 'gt', 'gte', 'lt', 'lte', 'set', 'notSet', 'inDateRange']),\n values: z.array(z.string()).optional(),\n })).optional(),\n \n timeDimensions: z.array(z.object({\n dimension: z.string(),\n granularity: TimeUpdateInterval.optional(),\n dateRange: z.union([\n z.string(), // \"Last 7 days\"\n z.array(z.string()) // [\"2023-01-01\", \"2023-01-31\"]\n ]).optional(),\n })).optional(),\n \n order: z.record(z.string(), z.enum(['asc', 'desc'])).optional(),\n \n limit: z.number().optional(),\n offset: z.number().optional(),\n \n timezone: z.string().optional().default('UTC'),\n});\n\nexport type Metric = z.infer<typeof MetricSchema>;\nexport type Dimension = z.infer<typeof DimensionSchema>;\nexport type CubeJoin = z.infer<typeof CubeJoinSchema>;\nexport type Cube = z.infer<typeof CubeSchema>;\nexport type AnalyticsQuery = z.infer<typeof AnalyticsQuerySchema>;\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 */\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 = 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 = 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 = 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 = 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 = 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';\n\n/**\n * Subscription Event Type\n * Event types that can be subscribed to for record-level notifications.\n */\nexport const SubscriptionEventType = z.enum([\n 'comment',\n 'mention',\n 'field_change',\n 'task',\n 'approval',\n 'all',\n]);\nexport type SubscriptionEventType = z.infer<typeof SubscriptionEventType>;\n\n/**\n * Notification Channel\n * Delivery channels for record subscription notifications.\n */\nexport const NotificationChannel = z.enum([\n 'in_app',\n 'email',\n 'push',\n 'slack',\n]);\nexport type NotificationChannel = z.infer<typeof NotificationChannel>;\n\n/**\n * Record Subscription Schema\n * Defines a user's subscription to record-level notifications.\n * Enables Airtable-style bell icon for record change notifications.\n */\nexport const RecordSubscriptionSchema = z.object({\n /** Target */\n object: z.string().describe('Object name'),\n recordId: z.string().describe('Record ID'),\n\n /** Subscriber */\n userId: z.string().describe('Subscribing user ID'),\n\n /** Events to subscribe to */\n events: z.array(SubscriptionEventType)\n .default(['all'])\n .describe('Event types to receive notifications for'),\n\n /** Notification channels */\n channels: z.array(NotificationChannel)\n .default(['in_app'])\n .describe('Notification delivery channels'),\n\n /** Active */\n active: z.boolean().default(true).describe('Whether the subscription is active'),\n\n /** Timestamps */\n createdAt: z.string().datetime().describe('Subscription creation timestamp'),\n});\nexport type RecordSubscription = z.infer<typeof RecordSubscriptionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Turso Multi-Tenant Router Schema\n *\n * Defines the configuration for Turso DB-per-Tenant architectures where each\n * tenant receives an independent Turso/libSQL database. The router resolves\n * the correct database URL and auth token per request based on the current\n * tenant context.\n *\n * Architecture: Shared Compute + Isolated Data\n * - Serverless functions are shared across tenants\n * - Each tenant has a physically isolated Turso database\n * - Turso Platform API manages database lifecycle (create/delete/suspend)\n *\n * @see https://docs.turso.tech/features/multi-db-schemas\n */\n\n// ==========================================================================\n// 1. Tenant Resolver Strategy\n// ==========================================================================\n\n/**\n * Strategy for resolving which tenant database to connect to.\n */\nexport const TenantResolverStrategySchema = z.enum([\n 'header', // Resolve from X-Tenant-ID request header\n 'subdomain', // Resolve from subdomain (e.g., acme.app.com → acme)\n 'path', // Resolve from URL path segment (e.g., /api/acme/...)\n 'token', // Resolve from JWT claim (e.g., tenant_id in access token)\n 'lookup', // Resolve from control-plane database lookup\n]).describe('Strategy for resolving tenant identity from request context');\n\nexport type TenantResolverStrategy = z.infer<typeof TenantResolverStrategySchema>;\n\n// ==========================================================================\n// 2. Turso Group Configuration\n// ==========================================================================\n\n/**\n * Turso Database Group Configuration.\n * Groups allow databases to share schema and be managed as a unit.\n * All databases in a group are deployed to the same set of locations.\n *\n * @see https://docs.turso.tech/features/multi-db-schemas\n */\nexport const TursoGroupSchema = z.object({\n /**\n * Group name identifier.\n * Used to reference the group when creating new tenant databases.\n */\n name: z.string().min(1).describe('Turso database group name'),\n\n /**\n * Primary location for the group (Turso region code).\n * Example: 'iad' (US East), 'lhr' (London), 'nrt' (Tokyo)\n */\n primaryLocation: z.string().min(2).describe('Primary Turso region code (e.g., iad, lhr, nrt)'),\n\n /**\n * Additional replica locations for read performance.\n * Databases in this group will have read replicas in these regions.\n */\n replicaLocations: z.array(z.string().min(2)).default([]).describe('Additional replica region codes'),\n\n /**\n * Schema database name within the group.\n * When using multi-db schemas, this is the \"parent\" database\n * whose schema is shared by all child (tenant) databases.\n */\n schemaDatabase: z.string().optional().describe('Schema database name for multi-db schemas'),\n}).describe('Turso database group configuration');\n\nexport type TursoGroup = z.infer<typeof TursoGroupSchema>;\n\n// ==========================================================================\n// 3. Tenant Database Lifecycle Hooks\n// ==========================================================================\n\n/**\n * Database Lifecycle Hook Schema.\n * Defines what happens at each tenant lifecycle event.\n */\nexport const TenantDatabaseLifecycleSchema = z.object({\n /**\n * Hook executed when a new tenant is created.\n * Defines how the tenant database is provisioned.\n */\n onTenantCreate: z.object({\n /** Whether to automatically create a Turso database */\n autoCreate: z.boolean().default(true).describe('Auto-create database on tenant registration'),\n\n /** Database group to create the database in */\n group: z.string().optional().describe('Turso group for the new database'),\n\n /** Whether to apply schema from the group schema database */\n applyGroupSchema: z.boolean().default(true).describe('Apply shared schema from group'),\n\n /** Seed data to populate on creation */\n seedData: z.boolean().default(false).describe('Populate seed data on creation'),\n }).describe('Tenant creation hook'),\n\n /**\n * Hook executed when a tenant is deleted/destroyed.\n */\n onTenantDelete: z.object({\n /** Whether to destroy the database immediately or schedule for deletion */\n immediate: z.boolean().default(false).describe('Destroy database immediately'),\n\n /** Grace period in hours before permanent deletion (soft-delete) */\n gracePeriodHours: z.number().int().min(0).default(72).describe('Grace period before permanent deletion'),\n\n /** Whether to create a final backup before deletion */\n createBackup: z.boolean().default(true).describe('Create backup before deletion'),\n }).describe('Tenant deletion hook'),\n\n /**\n * Hook executed when a tenant is suspended (e.g., unpaid, policy violation).\n */\n onTenantSuspend: z.object({\n /** Whether to revoke auth tokens on suspension */\n revokeTokens: z.boolean().default(true).describe('Revoke auth tokens on suspension'),\n\n /** Whether to set database to read-only mode */\n readOnly: z.boolean().default(true).describe('Set database to read-only on suspension'),\n }).describe('Tenant suspension hook'),\n}).describe('Tenant database lifecycle hooks');\n\nexport type TenantDatabaseLifecycle = z.infer<typeof TenantDatabaseLifecycleSchema>;\n\n// ==========================================================================\n// 4. Multi-Tenant Router Configuration\n// ==========================================================================\n\n/**\n * Turso Multi-Tenant Configuration Schema.\n *\n * Configures the DB-per-Tenant router that resolves the correct Turso\n * database for each request. Works with the Turso Platform API to manage\n * database lifecycle.\n *\n * @example\n * ```ts\n * const config = TursoMultiTenantConfigSchema.parse({\n * organizationSlug: 'myorg',\n * urlTemplate: 'libsql://{tenant_id}-myorg.turso.io',\n * groupAuthToken: process.env.TURSO_GROUP_AUTH_TOKEN,\n * tenantResolverStrategy: 'token',\n * group: {\n * name: 'production',\n * primaryLocation: 'iad',\n * replicaLocations: ['lhr', 'nrt'],\n * schemaDatabase: 'schema-db',\n * },\n * lifecycle: {\n * onTenantCreate: { autoCreate: true, applyGroupSchema: true },\n * onTenantDelete: { gracePeriodHours: 168 },\n * onTenantSuspend: { revokeTokens: true },\n * },\n * });\n * ```\n */\nexport const TursoMultiTenantConfigSchema = z.object({\n /**\n * Turso organization slug.\n * Used for Platform API calls and URL construction.\n */\n organizationSlug: z.string().min(1).describe('Turso organization slug'),\n\n /**\n * URL template for constructing tenant database URLs.\n * Use `{tenant_id}` as placeholder for the tenant identifier.\n *\n * Example: 'libsql://{tenant_id}-myorg.turso.io'\n */\n urlTemplate: z.string().min(1).describe('URL template with {tenant_id} placeholder'),\n\n /**\n * Group-level auth token for Turso Platform API operations.\n * Used for database creation, deletion, and management.\n * This token has full access to all databases in the group.\n */\n groupAuthToken: z.string().min(1).describe('Group-level auth token for platform operations'),\n\n /**\n * Strategy for resolving tenant identity from the request context.\n */\n tenantResolverStrategy: TenantResolverStrategySchema.default('token'),\n\n /**\n * Turso database group configuration.\n */\n group: TursoGroupSchema.optional().describe('Database group configuration'),\n\n /**\n * Lifecycle hooks for tenant database management.\n */\n lifecycle: TenantDatabaseLifecycleSchema.optional().describe('Lifecycle hooks'),\n\n /**\n * Maximum number of cached tenant database connections.\n * Connections are evicted using LRU strategy when the limit is reached.\n */\n maxCachedConnections: z.number().int().min(1).default(100).describe('Max cached tenant connections (LRU)'),\n\n /**\n * Connection cache TTL in seconds.\n * Cached connections are refreshed after this period.\n */\n connectionCacheTTL: z.number().int().min(0).default(300).describe('Connection cache TTL in seconds'),\n}).describe('Turso multi-tenant router configuration');\n\nexport type TursoMultiTenantConfig = z.infer<typeof TursoMultiTenantConfigSchema>;\n"]}
1
+ {"version":3,"sources":["../../src/data/filter.zod.ts","../../src/data/query.zod.ts","../../src/shared/identifiers.zod.ts","../../src/system/encryption.zod.ts","../../src/system/masking.zod.ts","../../src/data/field.zod.ts","../../src/data/validation.zod.ts","../../src/automation/state-machine.zod.ts","../../src/data/object.zod.ts","../../src/data/hook.zod.ts","../../src/data/mapping.zod.ts","../../src/kernel/execution-context.zod.ts","../../src/data/data-engine.zod.ts","../../src/shared/enums.zod.ts","../../src/data/driver.zod.ts","../../src/data/driver-sql.zod.ts","../../src/data/driver-nosql.zod.ts","../../src/data/dataset.zod.ts","../../src/data/document.zod.ts","../../src/shared/mapping.zod.ts","../../src/data/external-lookup.zod.ts","../../src/data/datasource.zod.ts","../../src/data/analytics.zod.ts","../../src/data/feed.zod.ts","../../src/data/subscription.zod.ts","../../src/data/driver/turso-multi-tenant.zod.ts"],"names":["z","FieldMappingSchema"],"mappings":"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","file":"index.js","sourcesContent":["// 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 */\nexport const FieldReferenceSchema = 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 = 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 = 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 = 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 = 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 = z.object({\n /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */\n $contains: 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 = 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 = 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 $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 = 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 $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', '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 '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', '$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 { FilterConditionSchema } from './filter.zod';\n\n/**\n * Sort Node\n * Represents \"Order By\".\n */\nexport const SortNodeSchema = 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 * 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 = 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 = 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 = 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 = 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(z.string()).optional().describe('GROUP BY fields'),\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> = 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 JoinNode = z.infer<typeof JoinNodeSchema>;\nexport type WindowFunctionNode = z.infer<typeof WindowFunctionNodeSchema>;\nexport type WindowSpec = z.infer<typeof WindowSpecSchema>;\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 */\nexport const SystemIdentifierSchema = 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 = 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 = 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 * Field-level encryption protocol\n * GDPR/HIPAA/PCI-DSS compliant\n */\nexport const EncryptionAlgorithmSchema = 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 = 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 = 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 = 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 = 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 */\nexport const MaskingStrategySchema = 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 = 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 = 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 { EncryptionConfigSchema } from '../system/encryption.zod';\nimport { MaskingRuleSchema } from '../system/masking.zod';\n\n/**\n * Field Type Enum\n */\nexport const FieldType = z.enum([\n // Core Text\n 'text', 'textarea', 'email', 'url', 'phone', 'password',\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 // Enhanced Types\n 'location', // GPS coordinates\n 'address', // Structured address\n 'code', // Code editor (JSON/SQL/JS)\n 'json', // Structured JSON data\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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 /** Calculation */\n expression: z.string().optional().describe('Formula expression'),\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'),\n function: z.enum(['count', 'sum', 'min', 'max', 'avg']).describe('Aggregation function to apply'),\n }).optional().describe('Roll-up summary definition'),\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 /** Conditional Requirements */\n conditionalRequired: z.string().optional().describe('Formula expression that makes this field required when TRUE (e.g., \"status = \\'closed_won\\'\")'),\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 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 /**\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 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 * # ObjectStack Validation Protocol\n * \n * This module defines the validation schema protocol for ObjectStack, providing a comprehensive\n * type-safe validation system similar to Salesforce's validation rules but with enhanced capabilities.\n * \n * ## Overview\n * \n * Validation rules are applied at the data layer to ensure data integrity and enforce business logic.\n * The system supports multiple validation types:\n * \n * 1. **Script Validation**: Formula-based validation using expressions\n * 2. **Uniqueness Validation**: Enforce unique constraints across fields\n * 3. **State Machine Validation**: Control allowed state transitions\n * 4. **Format Validation**: Validate field formats (email, URL, regex, etc.)\n * 5. **Cross-Field Validation**: Validate relationships between multiple fields\n * 6. **Async Validation**: Remote validation via API calls\n * 7. **Custom Validation**: User-defined validation functions\n * 8. **Conditional Validation**: Apply validations based on conditions\n * \n * ## Salesforce Comparison\n * \n * ObjectStack validation rules are inspired by Salesforce validation rules but enhanced:\n * - Salesforce: Formula-based validation with `Error Condition Formula`\n * - ObjectStack: Multiple validation types with composable rules\n * \n * Example Salesforce validation rule:\n * ```\n * Rule Name: Discount_Cannot_Exceed_40_Percent\n * Error Condition Formula: Discount_Percent__c > 0.40\n * Error Message: Discount cannot exceed 40%.\n * ```\n * \n * Equivalent ObjectStack rule:\n * ```typescript\n * {\n * type: 'script',\n * name: 'discount_cannot_exceed_40_percent',\n * condition: 'discount_percent > 0.40',\n * message: 'Discount cannot exceed 40%',\n * severity: 'error'\n * }\n * ```\n */\n\n/**\n * Base Validation Rule\n * \n * All validation rules extend from this base schema with common properties.\n * \n * ## Industry Standard Enhancements\n * - **Label/Description**: Essential for governance in large systems with thousands of rules.\n * - **Events**: granular control over validation timing (Context-aware validation).\n * - **Tags**: categorization for reporting and management.\n */\nconst BaseValidationSchema = z.object({\n // Identification\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique rule name (snake_case)'),\n label: z.string().optional().describe('Human-readable label for the rule listing'),\n description: z.string().optional().describe('Administrative notes explaining the business reason'),\n \n // Execution Control\n active: z.boolean().default(true),\n events: z.array(z.enum(['insert', 'update', 'delete'])).default(['insert', 'update']).describe('Validation contexts'),\n priority: z.number().int().min(0).max(9999).default(100).describe('Execution priority (lower runs first, default: 100)'),\n \n // Classification\n tags: z.array(z.string()).optional().describe('Categorization tags (e.g., \"compliance\", \"billing\")'),\n \n // Feedback\n severity: z.enum(['error', 'warning', 'info']).default('error'),\n message: z.string().describe('Error message to display to the user'),\n});\n\n/**\n * 1. Script/Expression Validation\n * Generic formula-based validation.\n */\nexport const ScriptValidationSchema = BaseValidationSchema.extend({\n type: z.literal('script'),\n condition: z.string().describe('Formula expression. If TRUE, validation fails. (e.g. amount < 0)'),\n});\n\n/**\n * 2. Uniqueness Validation\n * specialized optimized check for unique constraints.\n */\nexport const UniquenessValidationSchema = BaseValidationSchema.extend({\n type: z.literal('unique'),\n fields: z.array(z.string()).describe('Fields that must be combined unique'),\n scope: z.string().optional().describe('Formula condition for scope (e.g. active = true)'),\n caseSensitive: z.boolean().default(true),\n});\n\n/**\n * 3. State Machine Validation\n * State transition logic.\n */\nexport const StateMachineValidationSchema = BaseValidationSchema.extend({\n type: z.literal('state_machine'),\n field: z.string().describe('State field (e.g. status)'),\n transitions: z.record(z.string(), z.array(z.string())).describe('Map of { OldState: [AllowedNewStates] }'),\n});\n\n/**\n * 4. Value Format Validation\n * Regex or specialized formats.\n */\nexport const FormatValidationSchema = BaseValidationSchema.extend({\n type: z.literal('format'),\n field: z.string(),\n regex: z.string().optional(),\n format: z.enum(['email', 'url', 'phone', 'json']).optional(),\n});\n\n/**\n * 5. Cross-Field Validation\n * Validates relationships between multiple fields.\n * \n * ## Use Cases\n * - Date range validations (end_date > start_date)\n * - Amount comparisons (discount < total)\n * - Complex business rules involving multiple fields\n * \n * ## Salesforce Examples\n * \n * ### Example 1: Close Date Must Be In Current or Future Month\n * **Salesforce Formula:**\n * ```\n * MONTH(CloseDate) < MONTH(TODAY()) ||\n * YEAR(CloseDate) < YEAR(TODAY())\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'close_date_future',\n * condition: 'MONTH(close_date) >= MONTH(TODAY()) AND YEAR(close_date) >= YEAR(TODAY())',\n * fields: ['close_date'],\n * message: 'Close Date must be in the current or a future month'\n * }\n * ```\n * \n * ### Example 2: Discount Validation\n * **Salesforce Formula:**\n * ```\n * Discount__c > (Amount__c * 0.40)\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'discount_limit',\n * condition: 'discount > (amount * 0.40)',\n * fields: ['discount', 'amount'],\n * message: 'Discount cannot exceed 40% of the amount'\n * }\n * ```\n * \n * ### Example 3: Opportunity Must Have Products\n * **Salesforce Formula:**\n * ```\n * ISBLANK(Products__c) && ISPICKVAL(StageName, \"Closed Won\")\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'products_required_for_won',\n * condition: 'products = null AND stage = \"closed_won\"',\n * fields: ['products', 'stage'],\n * message: 'Opportunity must have products to be marked as Closed Won'\n * }\n * ```\n */\nexport const CrossFieldValidationSchema = BaseValidationSchema.extend({\n type: z.literal('cross_field'),\n condition: z.string().describe('Formula expression comparing fields (e.g. \"end_date > start_date\")'),\n fields: z.array(z.string()).describe('Fields involved in the validation'),\n});\n\n/**\n * 6. JSON Structure Validation\n * Validates JSON fields against a JSON Schema.\n * \n * ## Use Cases\n * - Validating configuration objects stored in JSON fields\n * - Enforcing API payload structures\n * - Complex nested data validation\n */\nexport const JSONValidationSchema = BaseValidationSchema.extend({\n type: z.literal('json_schema'),\n field: z.string().describe('JSON field to validate'),\n schema: z.record(z.string(), z.unknown()).describe('JSON Schema object definition'),\n});\n\n/**\n * 7. Async Validation\n * Remote validation via API call or database query.\n * \n * ## Use Cases\n * \n * ### 1. Email Uniqueness Check\n * Check if an email address is already registered in the system.\n * ```typescript\n * {\n * type: 'async',\n * name: 'unique_email',\n * field: 'email',\n * validatorUrl: '/api/users/check-email',\n * message: 'This email address is already registered',\n * debounce: 500, // Wait 500ms after user stops typing\n * timeout: 3000\n * }\n * ```\n * \n * ### 2. Username Availability\n * Verify username is available before form submission.\n * ```typescript\n * {\n * type: 'async',\n * name: 'username_available',\n * field: 'username',\n * validatorUrl: '/api/users/check-username',\n * message: 'This username is already taken',\n * debounce: 300,\n * timeout: 2000\n * }\n * ```\n * \n * ### 3. Tax ID Validation\n * Validate tax ID with government API (e.g., IRS, HMRC).\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_tax_id',\n * field: 'tax_id',\n * validatorFunction: 'validateTaxIdWithIRS',\n * message: 'Invalid Tax ID number',\n * timeout: 10000, // Government APIs may be slow\n * params: { country: 'US', format: 'EIN' }\n * }\n * ```\n * \n * ### 4. Credit Card Validation\n * Verify credit card with payment gateway without charging.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_card',\n * field: 'card_number',\n * validatorUrl: 'https://api.stripe.com/v1/tokens/validate',\n * message: 'Invalid credit card number',\n * timeout: 5000,\n * params: { \n * mode: 'validate_only',\n * checkFunds: false \n * }\n * }\n * ```\n * \n * ### 5. Address Validation\n * Validate and standardize addresses using geocoding services.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_address',\n * field: 'street_address',\n * validatorFunction: 'validateAddressWithGoogleMaps',\n * message: 'Unable to verify address',\n * timeout: 4000,\n * params: {\n * includeFields: ['city', 'state', 'zip'],\n * strictMode: true,\n * country: 'US'\n * }\n * }\n * ```\n * \n * ### 6. Domain Name Availability\n * Check if domain name is available for registration.\n * ```typescript\n * {\n * type: 'async',\n * name: 'domain_available',\n * field: 'domain_name',\n * validatorUrl: '/api/domains/check-availability',\n * message: 'This domain is already taken or reserved',\n * debounce: 500,\n * timeout: 2000\n * }\n * ```\n * \n * ### 7. Coupon Code Validation\n * Verify coupon code is valid and not expired.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_coupon',\n * field: 'coupon_code',\n * validatorUrl: '/api/coupons/validate',\n * message: 'Invalid or expired coupon code',\n * timeout: 2000,\n * params: {\n * checkExpiration: true,\n * checkUsageLimit: true,\n * userId: '{{current_user_id}}'\n * }\n * }\n * ```\n */\nexport const AsyncValidationSchema = BaseValidationSchema.extend({\n type: z.literal('async'),\n field: z.string().describe('Field to validate'),\n validatorUrl: z.string().optional().describe('External API endpoint for validation'),\n method: z.enum(['GET', 'POST']).default('GET').describe('HTTP method for external call'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom headers for the request'),\n validatorFunction: z.string().optional().describe('Reference to custom validator function'),\n timeout: z.number().optional().default(5000).describe('Timeout in milliseconds'),\n debounce: z.number().optional().describe('Debounce delay in milliseconds'),\n params: z.record(z.string(), z.unknown()).optional().describe('Additional parameters to pass to validator'),\n});\n\n/**\n * 8. Custom Validator Function\n * User-defined validation logic with code reference.\n */\nexport const CustomValidatorSchema = BaseValidationSchema.extend({\n type: z.literal('custom'),\n handler: z.string().describe('Name of the custom validation function registered in the system'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the custom handler'),\n});\n\n/**\n * 9. Master Validation Rule Schema\n */\n/** Base type for validation rules - used for z.lazy() recursive type annotation */\nexport interface BaseValidationRuleShape {\n type: string;\n name: string;\n message: string;\n label?: string;\n description?: string;\n active?: boolean;\n events?: ('insert' | 'update' | 'delete')[];\n priority?: number;\n tags?: string[];\n severity?: 'error' | 'warning' | 'info';\n [key: string]: unknown;\n}\n\nexport const ValidationRuleSchema: z.ZodType<BaseValidationRuleShape> = z.lazy(() =>\n z.discriminatedUnion('type', [\n ScriptValidationSchema,\n UniquenessValidationSchema,\n StateMachineValidationSchema,\n FormatValidationSchema,\n CrossFieldValidationSchema,\n JSONValidationSchema,\n AsyncValidationSchema,\n CustomValidatorSchema,\n ConditionalValidationSchema,\n ])\n);\n\n/**\n * 8. Conditional Validation\n * Validation that only applies when a condition is met.\n * \n * ## Overview\n * Conditional validations follow the pattern: \"Validate X only if Y is true\"\n * This allows for context-aware validation rules that adapt to different scenarios.\n * \n * ## Use Cases\n * \n * ### 1. Validate Based on Record Type\n * Apply different validation rules based on the type of record.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'enterprise_approval_required',\n * when: 'account_type = \"enterprise\"',\n * message: 'Enterprise validation',\n * then: {\n * type: 'script',\n * name: 'require_approval',\n * message: 'Enterprise accounts require manager approval',\n * condition: 'approval_status = null'\n * }\n * }\n * ```\n * \n * ### 2. Conditional Field Requirements\n * Require certain fields only when specific conditions are met.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'shipping_address_when_required',\n * when: 'requires_shipping = true',\n * message: 'Shipping validation',\n * then: {\n * type: 'script',\n * name: 'shipping_address_required',\n * message: 'Shipping address is required for physical products',\n * condition: 'shipping_address = null OR shipping_address = \"\"'\n * }\n * }\n * ```\n * \n * ### 3. Amount-Based Validation\n * Apply different rules based on transaction amount.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'high_value_approval',\n * when: 'order_total > 10000',\n * message: 'High value order validation',\n * then: {\n * type: 'script',\n * name: 'manager_approval_required',\n * message: 'Orders over $10,000 require manager approval',\n * condition: 'manager_approval_id = null'\n * },\n * otherwise: {\n * type: 'script',\n * name: 'standard_validation',\n * message: 'Payment method is required',\n * condition: 'payment_method = null'\n * }\n * }\n * ```\n * \n * ### 4. Regional Compliance\n * Apply region-specific validation rules.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'regional_compliance',\n * when: 'region = \"EU\"',\n * message: 'EU compliance validation',\n * then: {\n * type: 'script',\n * name: 'gdpr_consent',\n * message: 'GDPR consent is required for EU customers',\n * condition: 'gdpr_consent_given = false'\n * },\n * otherwise: {\n * type: 'script',\n * name: 'tos_acceptance',\n * message: 'Terms of Service acceptance required',\n * condition: 'tos_accepted = false'\n * }\n * }\n * ```\n * \n * ### 5. Nested Conditional Validation\n * Create complex validation logic with nested conditions.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'country_state_validation',\n * when: 'country = \"US\"',\n * message: 'US-specific validation',\n * then: {\n * type: 'conditional',\n * name: 'california_validation',\n * when: 'state = \"CA\"',\n * message: 'California-specific validation',\n * then: {\n * type: 'script',\n * name: 'ca_tax_id_required',\n * message: 'California requires a valid tax ID',\n * condition: 'tax_id = null OR NOT(REGEX(tax_id, \"^\\\\d{2}-\\\\d{7}$\"))'\n * }\n * }\n * }\n * ```\n * \n * ### 6. Tax Validation for Taxable Items\n * Only validate tax fields when the item is taxable.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'tax_field_validation',\n * when: 'is_taxable = true',\n * message: 'Tax validation',\n * then: {\n * type: 'script',\n * name: 'tax_code_required',\n * message: 'Tax code is required for taxable items',\n * condition: 'tax_code = null OR tax_code = \"\"'\n * }\n * }\n * ```\n * \n * ### 7. Role-Based Validation\n * Apply validation based on user role.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'role_based_approval_limit',\n * when: 'user_role = \"manager\"',\n * message: 'Manager approval limits',\n * then: {\n * type: 'script',\n * name: 'manager_limit',\n * message: 'Managers can approve up to $50,000',\n * condition: 'approval_amount > 50000'\n * }\n * }\n * ```\n * \n * ## Salesforce Pattern Comparison\n * \n * Salesforce doesn't have explicit \"conditional validation\" rules but achieves similar\n * behavior using formula logic. ObjectStack makes this pattern explicit and composable.\n * \n * **Salesforce Approach:**\n * ```\n * IF(\n * ISPICKVAL(Type, \"Enterprise\"),\n * AND(Amount > 100000, ISBLANK(Approval__c)),\n * FALSE\n * )\n * ```\n * \n * **ObjectStack Approach:**\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'enterprise_high_value',\n * when: 'type = \"enterprise\"',\n * then: {\n * type: 'cross_field',\n * name: 'amount_approval',\n * condition: 'amount > 100000 AND approval = null',\n * fields: ['amount', 'approval']\n * }\n * }\n * ```\n */\nexport const ConditionalValidationSchema = BaseValidationSchema.extend({\n type: z.literal('conditional'),\n when: z.string().describe('Condition formula (e.g. \"type = \\'enterprise\\'\")'),\n then: ValidationRuleSchema.describe('Validation rule to apply when condition is true'),\n otherwise: ValidationRuleSchema.optional().describe('Validation rule to apply when condition is false'),\n});\n\nexport type ValidationRule = z.infer<typeof ValidationRuleSchema>;\nexport type ScriptValidation = z.infer<typeof ScriptValidationSchema>;\nexport type UniquenessValidation = z.infer<typeof UniquenessValidationSchema>;\nexport type StateMachineValidation = z.infer<typeof StateMachineValidationSchema>;\nexport type FormatValidation = z.infer<typeof FormatValidationSchema>;\nexport type CrossFieldValidation = z.infer<typeof CrossFieldValidationSchema>;\nexport type JSONValidation = z.infer<typeof JSONValidationSchema>;\nexport type AsyncValidation = z.infer<typeof AsyncValidationSchema>;\nexport type CustomValidation = z.infer<typeof CustomValidatorSchema>;\nexport type ConditionalValidation = z.infer<typeof ConditionalValidationSchema>;","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * XState-inspired State Machine Protocol\n * Used to define strict business logic constraints and lifecycle management.\n * Prevent AI \"hallucinations\" by enforcing valid valid transitions.\n */\n\n// --- Primitives ---\n\n/**\n * References a named action (side effect)\n * Can be a script, a webhook, or a field update.\n */\nexport const ActionRefSchema = z.union([\n z.string().describe('Action Name'),\n z.object({\n type: z.string(), // e.g., 'xstate.assign', 'log', 'email'\n params: z.record(z.string(), z.unknown()).optional()\n })\n]);\n\n/**\n * References a named condition (guard)\n * Must evaluate to true for the transition to occur.\n */\nexport const GuardRefSchema = z.union([\n z.string().describe('Guard Name (e.g., \"isManager\", \"amountGT1000\")'),\n z.object({\n type: z.string(),\n params: z.record(z.string(), z.unknown()).optional()\n })\n]);\n\n// --- Core Structure ---\n\n/**\n * State Transition Definition\n * \"When EVENT happens, if GUARD is true, go to TARGET and run ACTIONS\"\n */\nexport const TransitionSchema = z.object({\n target: z.string().optional().describe('Target State ID'),\n cond: GuardRefSchema.optional().describe('Condition (Guard) required to take this path'),\n actions: z.array(ActionRefSchema).optional().describe('Actions to execute during transition'),\n description: z.string().optional().describe('Human readable description of this rule'),\n});\n\n/**\n * Event Definition (Signals)\n */\nexport const EventSchema = z.object({\n type: z.string().describe('Event Type (e.g. \"APPROVE\", \"REJECT\", \"Submit\")'),\n // Payload validation schema could go here if we want deep validation\n schema: z.record(z.string(), z.unknown()).optional().describe('Expected event payload structure'),\n});\n\nexport type ActionRef = z.infer<typeof ActionRefSchema>;\nexport type Transition = z.infer<typeof TransitionSchema>;\n\nexport type StateNodeConfig = {\n type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';\n entry?: ActionRef[];\n exit?: ActionRef[];\n on?: Record<string, string | Transition | Transition[]>;\n always?: Transition[];\n initial?: string;\n states?: Record<string, StateNodeConfig>;\n meta?: {\n label?: string;\n description?: string;\n color?: string;\n aiInstructions?: string;\n };\n};\n\n/**\n * State Node Definition\n */\nexport const StateNodeSchema: z.ZodType<StateNodeConfig> = z.lazy(() => z.object({\n /** Type of state */\n type: z.enum(['atomic', 'compound', 'parallel', 'final', 'history']).default('atomic'),\n \n /** Entry/Exit Actions */\n entry: z.array(ActionRefSchema).optional().describe('Actions to run when entering this state'),\n exit: z.array(ActionRefSchema).optional().describe('Actions to run when leaving this state'),\n \n /** Transitions (Events) */\n on: z.record(z.string(), z.union([\n z.string(), // Shorthand target\n TransitionSchema, \n z.array(TransitionSchema)\n ])).optional().describe('Map of Event Type -> Transition Definition'),\n \n /** Always Transitions (Eventless) */\n always: z.array(TransitionSchema).optional(),\n\n /** Nesting (Hierarchical States) */\n initial: z.string().optional().describe('Initial child state (if compound)'),\n states: z.record(z.string(), StateNodeSchema).optional(),\n \n /** Metadata for UI/AI */\n meta: z.object({\n label: z.string().optional(),\n description: z.string().optional(),\n color: z.string().optional(), // For UI diagrams\n // Instructions for AI Agent when in this state\n aiInstructions: z.string().optional().describe('Specific instructions for AI when in this state'),\n }).optional(),\n}));\n\n/**\n * Top-Level State Machine Definition\n */\nexport const StateMachineSchema = z.object({\n id: SnakeCaseIdentifierSchema.describe('Unique Machine ID'),\n description: z.string().optional(),\n \n /** Context (Memory) Schema */\n contextSchema: z.record(z.string(), z.unknown()).optional().describe('Zod Schema for the machine context/memory'),\n \n /** Initial State */\n initial: z.string().describe('Initial State ID'),\n \n /** State Definitions */\n states: z.record(z.string(), StateNodeSchema).describe('State Nodes'),\n \n /** Global Listeners */\n on: z.record(z.string(), z.union([z.string(), TransitionSchema, z.array(TransitionSchema)])).optional(),\n});\n\nexport type StateMachineConfig = z.infer<typeof StateMachineSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldSchema } from './field.zod';\nimport { ValidationRuleSchema } from './validation.zod';\nimport { StateMachineSchema } from '../automation/state-machine.zod';\n\n/**\n * API Operations Enum\n */\nexport const ApiMethod = z.enum([\n 'get', 'list', // Read\n 'create', 'update', 'delete', // Write\n 'upsert', // Idempotent Write\n 'bulk', // Batch operations\n 'aggregate', // Analytics (count, sum)\n 'history', // Audit access\n 'search', // Search access\n 'restore', 'purge', // Trash management\n 'import', 'export', // Data portability\n]);\nexport type ApiMethod = z.infer<typeof ApiMethod>;\n\n/**\n * Capability Flags\n * Defines what system features are enabled for this object.\n * \n * Optimized based on industry standards (Salesforce, ServiceNow):\n * - Added `activities` (Tasks/Events)\n * - Added `mru` (Recent Items)\n * - Added `feeds` (Social/Chatter)\n * - Grouped API permissions\n * \n * @example\n * {\n * trackHistory: true,\n * searchable: true,\n * apiEnabled: true,\n * files: true\n * }\n */\nexport const ObjectCapabilities = z.object({\n /** Enable history tracking (Audit Trail) */\n trackHistory: z.boolean().default(false).describe('Enable field history tracking for audit compliance'),\n \n /** Enable global search indexing */\n searchable: z.boolean().default(true).describe('Index records for global search'),\n \n /** Enable REST/GraphQL API access */\n apiEnabled: z.boolean().default(true).describe('Expose object via automatic APIs'),\n\n /** \n * API Supported Operations\n * Granular control over API exposure.\n */\n apiMethods: z.array(ApiMethod).optional().describe('Whitelist of allowed API operations'),\n \n /** Enable standard attachments/files engine */\n files: z.boolean().default(false).describe('Enable file attachments and document management'),\n \n /** Enable social collaboration (Comments, Mentions, Feeds) */\n feeds: z.boolean().default(false).describe('Enable social feed, comments, and mentions (Chatter-like)'),\n \n /** Enable standard Activity suite (Tasks, Calendars, Events) */\n activities: z.boolean().default(false).describe('Enable standard tasks and events tracking'),\n \n /** Enable Recycle Bin / Soft Delete */\n trash: z.boolean().default(true).describe('Enable soft-delete with restore capability'),\n\n /** Enable \"Recently Viewed\" tracking */\n mru: z.boolean().default(true).describe('Track Most Recently Used (MRU) list for users'),\n \n /** Allow cloning records */\n clone: z.boolean().default(true).describe('Allow record deep cloning'),\n});\n\n/**\n * Schema for database indexes.\n * Enhanced with additional index types and configuration options\n * \n * @example\n * {\n * name: \"idx_account_name\",\n * fields: [\"name\"],\n * type: \"btree\",\n * unique: true\n * }\n */\nexport const IndexSchema = z.object({\n name: z.string().optional().describe('Index name (auto-generated if not provided)'),\n fields: z.array(z.string()).describe('Fields included in the index'),\n type: z.enum(['btree', 'hash', 'gin', 'gist', 'fulltext']).optional().default('btree').describe('Index algorithm type'),\n unique: z.boolean().optional().default(false).describe('Whether the index enforces uniqueness'),\n partial: z.string().optional().describe('Partial index condition (SQL WHERE clause for conditional indexes)'),\n});\n\n/**\n * Search Configuration\n * Defines how this object behaves in search results.\n * \n * @example\n * {\n * fields: [\"name\", \"email\", \"phone\"],\n * displayFields: [\"name\", \"title\"],\n * filters: [\"status = 'active'\"]\n * }\n */\nexport const SearchConfigSchema = z.object({\n fields: z.array(z.string()).describe('Fields to index for full-text search weighting'),\n displayFields: z.array(z.string()).optional().describe('Fields to display in search result cards'),\n filters: z.array(z.string()).optional().describe('Default filters for search results'),\n});\n\n/**\n * Multi-Tenancy Configuration Schema\n * Configures tenant isolation strategy for SaaS applications\n * \n * @example Shared database with tenant_id isolation\n * {\n * enabled: true,\n * strategy: 'shared',\n * tenantField: 'tenant_id',\n * crossTenantAccess: false\n * }\n */\nexport const TenancyConfigSchema = z.object({\n enabled: z.boolean().describe('Enable multi-tenancy for this object'),\n strategy: z.enum(['shared', 'isolated', 'hybrid']).describe('Tenant isolation strategy: shared (single DB, row-level), isolated (separate DB per tenant), hybrid (mix)'),\n tenantField: z.string().default('tenant_id').describe('Field name for tenant identifier'),\n crossTenantAccess: z.boolean().default(false).describe('Allow cross-tenant data access (with explicit permission)'),\n});\n\n/**\n * Soft Delete Configuration Schema\n * Implements recycle bin / trash functionality\n * \n * @example Standard soft delete with cascade\n * {\n * enabled: true,\n * field: 'deleted_at',\n * cascadeDelete: true\n * }\n */\nexport const SoftDeleteConfigSchema = z.object({\n enabled: z.boolean().describe('Enable soft delete (trash/recycle bin)'),\n field: z.string().default('deleted_at').describe('Field name for soft delete timestamp'),\n cascadeDelete: z.boolean().default(false).describe('Cascade soft delete to related records'),\n});\n\n/**\n * Versioning Configuration Schema\n * Implements record versioning and history tracking\n * \n * @example Snapshot versioning with 90-day retention\n * {\n * enabled: true,\n * strategy: 'snapshot',\n * retentionDays: 90,\n * versionField: 'version'\n * }\n */\nexport const VersioningConfigSchema = z.object({\n enabled: z.boolean().describe('Enable record versioning'),\n strategy: z.enum(['snapshot', 'delta', 'event-sourcing']).describe('Versioning strategy: snapshot (full copy), delta (changes only), event-sourcing (event log)'),\n retentionDays: z.number().min(1).optional().describe('Number of days to retain old versions (undefined = infinite)'),\n versionField: z.string().default('version').describe('Field name for version number/timestamp'),\n});\n\n/**\n * Partitioning Strategy Schema\n * Configures table partitioning for performance at scale\n * \n * @example Range partitioning by date (monthly)\n * {\n * enabled: true,\n * strategy: 'range',\n * key: 'created_at',\n * interval: '1 month'\n * }\n */\nexport const PartitioningConfigSchema = z.object({\n enabled: z.boolean().describe('Enable table partitioning'),\n strategy: z.enum(['range', 'hash', 'list']).describe('Partitioning strategy: range (date ranges), hash (consistent hashing), list (predefined values)'),\n key: z.string().describe('Field name to partition by'),\n interval: z.string().optional().describe('Partition interval for range strategy (e.g., \"1 month\", \"1 year\")'),\n}).refine((data) => {\n // If strategy is 'range', interval must be provided\n if (data.strategy === 'range' && !data.interval) {\n return false;\n }\n return true;\n}, {\n message: 'interval is required when strategy is \"range\"',\n});\n\n/**\n * Change Data Capture (CDC) Configuration Schema\n * Enables real-time data streaming to external systems\n * \n * @example Stream all changes to Kafka\n * {\n * enabled: true,\n * events: ['insert', 'update', 'delete'],\n * destination: 'kafka://events.objectstack'\n * }\n */\nexport const CDCConfigSchema = z.object({\n enabled: z.boolean().describe('Enable Change Data Capture'),\n events: z.array(z.enum(['insert', 'update', 'delete'])).describe('Event types to capture'),\n destination: z.string().describe('Destination endpoint (e.g., \"kafka://topic\", \"webhook://url\")'),\n});\n\n/**\n * Base Object Schema Definition\n * \n * The Blueprint of a Business Object.\n * Represents a table, a collection, or a virtual entity.\n * \n * @example\n * ```yaml\n * name: project_task\n * label: Project Task\n * icon: task\n * fields:\n * project:\n * type: lookup\n * reference: project\n * status:\n * type: select\n * options: [todo, in_progress, done]\n * enable:\n * trackHistory: true\n * files: true\n * ```\n */\nconst ObjectSchemaBase = z.object({\n /** \n * Identity & Metadata \n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine unique key (snake_case). Immutable.'),\n label: z.string().optional().describe('Human readable singular label (e.g. \"Account\")'),\n pluralLabel: z.string().optional().describe('Human readable plural label (e.g. \"Accounts\")'),\n description: z.string().optional().describe('Developer documentation / description'),\n icon: z.string().optional().describe('Icon name (Lucide/Material) for UI representation'),\n \n /**\n * Taxonomy & Organization\n */\n tags: z.array(z.string()).optional().describe('Categorization tags (e.g. \"sales\", \"system\", \"reference\")'),\n active: z.boolean().optional().default(true).describe('Is the object active and usable'),\n isSystem: z.boolean().optional().default(false).describe('Is system object (protected from deletion)'),\n abstract: z.boolean().optional().default(false).describe('Is abstract base object (cannot be instantiated)'),\n\n /** \n * Storage & Virtualization \n */\n datasource: z.string().optional().default('default').describe('Target Datasource ID. \"default\" is the primary DB.'),\n tableName: z.string().optional().describe('Physical table/collection name in the target datasource'),\n \n /** \n * Data Model \n */\n fields: z.record(z.string().regex(/^[a-z_][a-z0-9_]*$/, {\n message: 'Field names must be lowercase snake_case (e.g., \"first_name\", \"company\", \"annual_revenue\")',\n }), FieldSchema).describe('Field definitions map. Keys must be snake_case identifiers.'),\n indexes: z.array(IndexSchema).optional().describe('Database performance indexes'),\n \n /**\n * Advanced Data Management\n */\n \n // Multi-tenancy configuration\n tenancy: TenancyConfigSchema.optional().describe('Multi-tenancy configuration for SaaS applications'),\n \n // Soft delete configuration\n softDelete: SoftDeleteConfigSchema.optional().describe('Soft delete (trash/recycle bin) configuration'),\n \n // Versioning configuration\n versioning: VersioningConfigSchema.optional().describe('Record versioning and history tracking configuration'),\n \n // Partitioning strategy\n partitioning: PartitioningConfigSchema.optional().describe('Table partitioning configuration for performance'),\n \n // Change Data Capture\n cdc: CDCConfigSchema.optional().describe('Change Data Capture (CDC) configuration for real-time data streaming'),\n \n /**\n * Logic & Validation (Co-located)\n * Best Practice: Define rules close to data.\n */\n validations: z.array(ValidationRuleSchema).optional().describe('Object-level validation rules'),\n \n /**\n * State Machine(s)\n * Named record of state machines, where each key is a unique machine identifier.\n * Multiple machines allow parallel lifecycles (e.g., status + payment_status + approval_status).\n * \n * @example stateMachines: { lifecycle: {...}, payment: {...}, approval: {...} }\n */\n stateMachines: z.record(z.string(), StateMachineSchema).optional().describe('Named state machines for parallel lifecycles (e.g., status, payment, approval)'),\n\n /** \n * Display & UI Hints (Data-Layer)\n */\n displayNameField: z.string().optional().describe('Field to use as the record display name (e.g., \"name\", \"title\"). Defaults to \"name\" if present.'),\n recordName: z.object({\n type: z.enum(['text', 'autonumber']).describe('Record name type: text (user-entered) or autonumber (system-generated)'),\n displayFormat: z.string().optional().describe('Auto-number format pattern (e.g., \"CASE-{0000}\", \"INV-{YYYY}-{0000}\")'),\n startNumber: z.number().int().min(0).optional().describe('Starting number for autonumber (default: 1)'),\n }).optional().describe('Record name generation configuration (Salesforce pattern)'),\n titleFormat: z.string().optional().describe('Title expression (e.g. \"{name} - {code}\"). Overrides displayNameField.'),\n compactLayout: z.array(z.string()).optional().describe('Primary fields for hover/cards/lookups'),\n \n /** \n * Search Engine Config \n */\n search: SearchConfigSchema.optional().describe('Search engine configuration'),\n \n /** \n * System Capabilities \n */\n enable: ObjectCapabilities.optional().describe('Enabled system features modules'),\n\n /** Record Types */\n recordTypes: z.array(z.string()).optional().describe('Record type names for this object'),\n\n /** Sharing Model */\n sharingModel: z.enum(['private', 'read', 'read_write', 'full']).optional().describe('Default sharing model'),\n\n /** Key Prefix */\n keyPrefix: z.string().max(5).optional().describe('Short prefix for record IDs (e.g., \"001\" for Account)'),\n});\n\n/**\n * Converts a snake_case name to a human-readable Title Case label.\n * @example snakeCaseToLabel('project_task') → 'Project Task'\n */\nfunction snakeCaseToLabel(name: string): string {\n return name\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\n/**\n * Enhanced ObjectSchema with Factory\n */\nexport const ObjectSchema = Object.assign(ObjectSchemaBase, {\n /**\n * Type-safe factory for creating business object definitions.\n * \n * Enhancements over raw schema:\n * - **Auto-label**: Generates `label` from `name` if not provided (snake_case → Title Case).\n * - **Validation**: Runs Zod `.parse()` to validate the config at creation time.\n * \n * @example\n * ```ts\n * const Task = ObjectSchema.create({\n * name: 'project_task',\n * // label auto-generated as 'Project Task'\n * fields: {\n * subject: { type: 'text', label: 'Subject', required: true },\n * },\n * });\n * ```\n */\n create: (config: z.input<typeof ObjectSchemaBase>): ServiceObject => {\n const withDefaults = {\n ...config,\n label: config.label ?? snakeCaseToLabel(config.name),\n };\n return ObjectSchemaBase.parse(withDefaults);\n },\n});\n\nexport type ServiceObject = z.infer<typeof ObjectSchemaBase>;\nexport type ServiceObjectInput = z.input<typeof ObjectSchemaBase>;\nexport type ObjectCapabilities = z.infer<typeof ObjectCapabilities>;\nexport type ObjectIndex = z.infer<typeof IndexSchema>;\nexport type TenancyConfig = z.infer<typeof TenancyConfigSchema>;\nexport type SoftDeleteConfig = z.infer<typeof SoftDeleteConfigSchema>;\nexport type VersioningConfig = z.infer<typeof VersioningConfigSchema>;\nexport type PartitioningConfig = z.infer<typeof PartitioningConfigSchema>;\nexport type CDCConfig = z.infer<typeof CDCConfigSchema>;\n\n// =================================================================\n// Object Ownership Model\n// =================================================================\n\n/**\n * How a package relates to an object it references.\n * \n * - `own`: This package is the original author/owner of the object.\n * Only one package may own a given object name. The owner defines\n * the base schema (table name, primary key, core fields).\n * \n * - `extend`: This package adds fields, views, or actions to an\n * existing object owned by another package. Multiple packages\n * may extend the same object. Extensions are merged at boot time.\n * \n * Follows Salesforce/ServiceNow patterns:\n * object name = database table name, globally unique, no namespace prefix.\n */\nexport const ObjectOwnershipEnum = z.enum(['own', 'extend']);\nexport type ObjectOwnership = z.infer<typeof ObjectOwnershipEnum>;\n\n/**\n * Object Extension Entry — used in `objectExtensions` array.\n * Declares fields/config to merge into an existing object owned by another package.\n * \n * @example\n * ```ts\n * objectExtensions: [{\n * extend: 'contact', // target object FQN\n * fields: { sales_stage: Field.select([...]) },\n * }]\n * ```\n */\nexport const ObjectExtensionSchema = z.object({\n /** The target object name (FQN) to extend */\n extend: z.string().describe('Target object name (FQN) to extend'),\n \n /** Fields to merge into the target object (additive) */\n fields: z.record(z.string(), FieldSchema).optional().describe('Fields to add/override'),\n \n /** Override label */\n label: z.string().optional().describe('Override label for the extended object'),\n \n /** Override plural label */\n pluralLabel: z.string().optional().describe('Override plural label for the extended object'),\n \n /** Override description */\n description: z.string().optional().describe('Override description for the extended object'),\n \n /** Additional validation rules to add */\n validations: z.array(ValidationRuleSchema).optional().describe('Additional validation rules to merge into the target object'),\n \n /** Additional indexes to add */\n indexes: z.array(IndexSchema).optional().describe('Additional indexes to merge into the target object'),\n \n /** Merge priority. Higher number applied later (wins on conflict). Default: 200 */\n priority: z.number().int().min(0).max(999).default(200).describe('Merge priority (higher = applied later)'),\n});\n\nexport type ObjectExtension = z.infer<typeof ObjectExtensionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Hook Lifecycle Events\n * Defines the interception points in the ObjectQL execution pipeline.\n */\nexport const HookEvent = z.enum([\n // Read Operations\n 'beforeFind', 'afterFind',\n 'beforeFindOne', 'afterFindOne',\n 'beforeCount', 'afterCount',\n 'beforeAggregate', 'afterAggregate',\n\n // Write Operations\n 'beforeInsert', 'afterInsert',\n 'beforeUpdate', 'afterUpdate',\n 'beforeDelete', 'afterDelete',\n \n // Bulk Operations (Query-based)\n 'beforeUpdateMany', 'afterUpdateMany',\n 'beforeDeleteMany', 'afterDeleteMany',\n]);\n\n/**\n * Hook Definition Schema\n * \n * Hooks serve as the \"Logic Layer\" in ObjectStack, allowing developers to \n * inject custom code during the data access lifecycle.\n * \n * Use cases:\n * - Data Enrichment (Default values, Calculated fields)\n * - Validation (Complex business rules)\n * - Side Effects (Sending emails, Syncing to external systems)\n * - Security (Filtering data based on context)\n */\nexport const HookSchema = z.object({\n /**\n * Unique identifier for the hook\n * Required for debugging and overriding.\n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Hook unique name (snake_case)'),\n\n /**\n * Human readable label\n */\n label: z.string().optional().describe('Description of what this hook does'),\n\n /**\n * Target Object(s)\n * can be:\n * - Single object: \"account\"\n * - List of objects: [\"account\", \"contact\"]\n * - Wildcard: \"*\" (All objects)\n */\n object: z.union([z.string(), z.array(z.string())]).describe('Target object(s)'),\n\n /**\n * Events to subscribe to\n * Combinations of timing (before/after) and action (find/insert/update/delete/etc)\n */\n events: z.array(HookEvent).describe('Lifecycle events'),\n\n /**\n * Handler Logic\n * Reference to a registered function in the plugin system OR a direct function (runtime only).\n */\n handler: z.union([z.string(), z.function()]).optional().describe('Handler function name (string) or inline function reference'),\n\n /**\n * Execution Order\n * Lower numbers run first.\n * - System Hooks: 0-99\n * - App Hooks: 100-999\n * - User Hooks: 1000+\n */\n priority: z.number().default(100).describe('Execution priority'),\n\n /**\n * Async / Background Execution\n * If true, the hook runs in the background and does not block the transaction.\n * Only applicable for 'after*' events.\n * Default: false (Blocking)\n */\n async: z.boolean().default(false).describe('Run specifically as fire-and-forget'),\n\n /**\n * Declarative Condition\n * Formula expression evaluated before the handler runs.\n * If provided and evaluates to FALSE, the hook is skipped entirely.\n * Useful for filtering by record data without writing handler code.\n * \n * @example \"status = 'active' AND amount > 1000\"\n */\n condition: z.string().optional().describe('Formula expression; hook runs only when TRUE (e.g., \"status = \\'closed\\' AND amount > 1000\")'),\n\n /**\n * Human-readable description\n */\n description: z.string().optional().describe('Human-readable description of what this hook does'),\n\n /**\n * Retry Policy\n */\n retryPolicy: z.object({\n maxRetries: z.number().default(3).describe('Maximum retry attempts on failure'),\n backoffMs: z.number().default(1000).describe('Backoff delay between retries in milliseconds'),\n }).optional().describe('Retry policy for failed hook executions'),\n\n /**\n * Execution Timeout\n */\n timeout: z.number().optional().describe('Maximum execution time in milliseconds before the hook is aborted'),\n\n /**\n * Error Policy\n * What to do if the hook throws an exception?\n * - abort: Rollback transaction (if blocking)\n * - log: Log error and continue\n */\n onError: z.enum(['abort', 'log']).default('abort').describe('Error handling strategy'),\n});\n\n/**\n * Hook Runtime Context\n * Defines what is available to the hook handler during execution.\n * \n * Best Practices:\n * - **Immutability**: `object`, `event`, `id` are immutable.\n * - **Mutability**: `input` and `result` are mutable to allow transformation.\n * - **Encapsulation**: `session` isolates auth info; `transaction` ensures atomicity.\n */\nexport const HookContextSchema = z.object({\n /** Tracing ID */\n id: z.string().optional().describe('Unique execution ID for tracing'),\n\n /** Target Object Name */\n object: z.string(),\n \n /** Current Lifecycle Event */\n event: HookEvent,\n\n /** \n * Input Parameters (Mutable)\n * Modify this to change the behavior of the operation.\n * \n * - find: { query: QueryAST, options: DriverOptions }\n * - insert: { doc: Record, options: DriverOptions }\n * - update: { id: ID, doc: Record, options: DriverOptions }\n * - delete: { id: ID, options: DriverOptions }\n * - updateMany: { query: QueryAST, doc: Record, options: DriverOptions }\n * - deleteMany: { query: QueryAST, options: DriverOptions }\n */\n input: z.record(z.string(), z.unknown()).describe('Mutable input parameters'),\n\n /** \n * Operation Result (Mutable)\n * Available in 'after*' events. Modify this to transform the output.\n */\n result: z.unknown().optional().describe('Operation result (After hooks only)'),\n\n /**\n * Data Snapshot\n * The state of the record BEFORE the operation (for update/delete).\n */\n previous: z.record(z.string(), z.unknown()).optional().describe('Record state before operation'),\n\n /**\n * Execution Session\n * Contains authentication and tenancy information.\n */\n session: z.object({\n userId: z.string().optional(),\n tenantId: z.string().optional(),\n roles: z.array(z.string()).optional(),\n accessToken: z.string().optional(),\n }).optional().describe('Current session context'),\n \n /**\n * Transaction Handle\n * If the operation is part of a transaction, use this handle for side-effects.\n */\n transaction: z.unknown().optional().describe('Database transaction handle'),\n\n /**\n * Engine Access\n * Reference to the ObjectQL engine for performing side effects.\n */\n ql: z.unknown().describe('ObjectQL Engine Reference'),\n\n /**\n * Cross-Object API\n * Provides a scoped data access interface for performing CRUD operations\n * on other objects within hooks. Bound to the current execution context\n * (userId, tenantId, transaction).\n *\n * Usage in hooks:\n * const users = ctx.api.object('user');\n * const admin = await users.findOne({ filter: { role: 'admin' } });\n */\n api: z.unknown().optional().describe('Cross-object data access (ScopedContext)'),\n\n /**\n * Current User Info\n * Convenience shortcut for session.userId + additional user metadata.\n * Populated by the engine when available.\n */\n user: z.object({\n id: z.string().optional(),\n name: z.string().optional(),\n email: z.string().optional(),\n }).optional().describe('Current user info shortcut'),\n});\n\nexport type Hook = z.input<typeof HookSchema>;\nexport type ResolvedHook = z.output<typeof HookSchema>;\nexport type HookEventType = z.infer<typeof HookEvent>;\nexport type HookContext = z.infer<typeof HookContextSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { QuerySchema } from './query.zod';\n\n/**\n * Transformation Logic\n * Built-in helpers for converting data during import.\n */\nexport const TransformType = z.enum([\n 'none', // Direct copy\n 'constant', // Use a hardcoded value\n 'lookup', // Resolve FK (Name -> ID)\n 'split', // \"John Doe\" -> [\"John\", \"Doe\"]\n 'join', // [\"John\", \"Doe\"] -> \"John Doe\"\n 'javascript', // Custom script (Review security!)\n 'map' // Value mapping (e.g. \"Active\" -> \"active\")\n]);\n\n/**\n * Field Mapping Item\n */\nexport const FieldMappingSchema = z.object({\n /** Source Column */\n source: z.union([z.string(), z.array(z.string())]).describe('Source column header(s)'),\n \n /** Target Field */\n target: z.union([z.string(), z.array(z.string())]).describe('Target object field(s)'),\n \n /** Transformation */\n transform: TransformType.default('none'),\n \n /** Configuration for transform */\n params: z.object({\n // Constant\n value: z.unknown().optional(),\n \n // Lookup\n object: z.string().optional(), // Lookup Object\n fromField: z.string().optional(), // Match on (e.g. \"name\")\n toField: z.string().optional(), // Value to take (e.g. \"_id\")\n autoCreate: z.boolean().optional(), // Create if missing\n \n // Map\n valueMap: z.record(z.string(), z.unknown()).optional(), // { \"Open\": \"draft\" }\n \n // Split/Join\n separator: z.string().optional()\n }).optional()\n});\n\n/**\n * Data Mapping Schema\n * Defines a reusable data mapping configuration for ETL operations.\n * \n * **NAMING CONVENTION:**\n * Mapping names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good mapping names\n * - 'salesforce_to_crm'\n * - 'csv_import_contacts'\n * - 'api_sync_orders'\n * \n * @example Bad mapping names (will be rejected)\n * - 'SalesforceToCRM' (PascalCase)\n * - 'CSV Import' (spaces)\n */\nexport const MappingSchema = z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Mapping unique name (lowercase snake_case)'),\n label: z.string().optional(),\n \n /** Scope */\n sourceFormat: z.enum(['csv', 'json', 'xml', 'sql']).default('csv'),\n targetObject: z.string().describe('Target Object Name'),\n \n /** Column Mappings */\n fieldMapping: z.array(FieldMappingSchema),\n \n /** Upsert Logic */\n mode: z.enum(['insert', 'update', 'upsert']).default('insert'),\n upsertKey: z.array(z.string()).optional().describe('Fields to match for upsert (e.g. email)'),\n \n /** Extract Logic (For Export) */\n extractQuery: QuerySchema.optional().describe('Query to run for export only'),\n \n /** Error Handling */\n errorPolicy: z.enum(['skip', 'abort', 'retry']).default('skip'),\n batchSize: z.number().default(1000)\n});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Execution Context Schema\n * \n * Defines the runtime context that flows from HTTP request → data operations.\n * This is the \"identity + environment\" envelope that every data operation can carry.\n * \n * Design:\n * - All fields are optional for backward compatibility\n * - `isSystem` bypasses permission checks (for internal/migration operations)\n * - `transaction` carries the database transaction handle for atomicity\n * - `traceId` enables distributed tracing across microservices\n * \n * Usage:\n * engine.find('account', { context: { userId: '...', tenantId: '...' } })\n */\nexport const ExecutionContextSchema = z.object({\n /** Current user ID (resolved from session) */\n userId: z.string().optional(),\n \n /** Current organization/tenant ID (resolved from session.activeOrganizationId) */\n tenantId: z.string().optional(),\n \n /** User role names (resolved from Member + Role) */\n roles: z.array(z.string()).default([]),\n \n /** Aggregated permission names (resolved from PermissionSet) */\n permissions: z.array(z.string()).default([]),\n \n /** Whether this is a system-level operation (bypasses permission checks) */\n isSystem: z.boolean().default(false),\n \n /** Raw access token (for external API call pass-through) */\n accessToken: z.string().optional(),\n \n /** Database transaction handle */\n transaction: z.unknown().optional(),\n \n /** Request trace ID (for distributed tracing) */\n traceId: z.string().optional(),\n});\n\nexport type ExecutionContext = z.infer<typeof ExecutionContextSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from './filter.zod';\nimport { SortNodeSchema } from './query.zod';\nimport { ExecutionContextSchema } from '../kernel/execution-context.zod';\n\n/**\n * Data Engine Protocol\n * \n * Defines the standard interface for data persistence engines in ObjectStack.\n * This protocol abstracts the underlying storage mechanism (SQL, NoSQL, API, Memory),\n * allowing the ObjectQL engine to execute standardized CRUD and Aggregation operations\n * regardless of where the data resides.\n * \n * The Data Engine acts as the \"Driver\" layer in the Hexagonal Architecture.\n */\n\n// ==========================================================================\n// 1. Shared Definitions\n// ==========================================================================\n\n/**\n * Data Engine Query filter conditions\n * Supports simple key-value map or complex Logic/Field expressions (DSL)\n */\nexport const DataEngineFilterSchema = z.union([\n z.record(z.string(), z.unknown()),\n FilterConditionSchema\n]).describe('Data Engine query filter conditions');\n\n/**\n * Sort order definition\n * Supports:\n * - { name: 'asc' }\n * - { name: 1 }\n * - [{ field: 'name', order: 'asc' }]\n */\nexport const DataEngineSortSchema = z.union([\n z.record(z.string(), z.enum(['asc', 'desc'])), \n z.record(z.string(), z.union([z.literal(1), z.literal(-1)])),\n z.array(SortNodeSchema)\n]).describe('Sort order definition');\n\n// ==========================================================================\n// 1b. Base Engine Options (shared context)\n// ==========================================================================\n\n/**\n * Base Engine Options\n * \n * All Data Engine operation options extend this schema to carry\n * an optional ExecutionContext for identity, tenant, and transaction propagation.\n */\nexport const BaseEngineOptionsSchema = z.object({\n /** Execution context (identity, tenant, transaction) */\n context: ExecutionContextSchema.optional(),\n});\n\n// ==========================================================================\n// 2. method: FIND\n// ==========================================================================\n\nexport const DataEngineQueryOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions (WHERE) */\n filter: DataEngineFilterSchema.optional(),\n \n /** Fields to select (SELECT) */\n select: z.array(z.string()).optional(),\n \n /** Sort order (ORDER BY) */\n sort: DataEngineSortSchema.optional(),\n \n /** Limit number of results (LIMIT) */\n limit: z.number().int().min(1).optional(),\n \n /** Skip number of results (OFFSET) */\n skip: z.number().int().min(0).optional(),\n \n /** \n * Maximum number of results (OData style)\n * Takes precedence over limit if both specified\n */\n top: z.number().int().min(1).optional(),\n\n /**\n * Include related records ($expand / Populate)\n * \n * List of relationship field names (lookup or master_detail) to expand.\n * The engine resolves these by batch-loading referenced records using $in\n * queries and replacing foreign key IDs with full objects in the result.\n * \n * This is driver-agnostic — expand is handled at the engine layer via\n * secondary queries, not via SQL JOINs or driver-specific features.\n * Fields without a valid `reference` in the schema are silently skipped.\n */\n populate: z.array(z.string()).optional(),\n}).describe('Query options for IDataEngine.find() operations');\n\n// ==========================================================================\n// 3. method: INSERT\n// ==========================================================================\n\nexport const DataEngineInsertOptionsSchema = BaseEngineOptionsSchema.extend({\n /** \n * Return the inserted record(s)? \n * Some drivers support RETURNING clause for efficiency.\n * Default: true\n */\n returning: z.boolean().default(true).optional(),\n}).describe('Options for DataEngine.insert operations');\n\n// ==========================================================================\n// 4. method: UPDATE\n// ==========================================================================\n\nexport const DataEngineUpdateOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions to identify records to update */\n filter: DataEngineFilterSchema.optional(),\n \n /** \n * Perform an upsert? \n * If true, insert if not found.\n */\n upsert: z.boolean().default(false).optional(),\n \n /**\n * Update multiple records?\n * If false, only the first match is updated.\n * Default: false\n */\n multi: z.boolean().default(false).optional(),\n \n /** \n * Return the updated record(s)? \n * Default: false (returns update count/status)\n */\n returning: z.boolean().default(false).optional(),\n}).describe('Options for DataEngine.update operations');\n\n// ==========================================================================\n// 5. method: DELETE\n// ==========================================================================\n\nexport const DataEngineDeleteOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions to identify records to delete */\n filter: DataEngineFilterSchema.optional(),\n \n /**\n * Delete multiple records?\n * If false, only the first match is deleted.\n * Default: false\n */\n multi: z.boolean().default(false).optional(),\n}).describe('Options for DataEngine.delete operations');\n\n// ==========================================================================\n// 6. method: AGGREGATE\n// ==========================================================================\n\nexport const DataEngineAggregateOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions (WHERE) */\n filter: DataEngineFilterSchema.optional(),\n \n /** Group By fields */\n groupBy: z.array(z.string()).optional(),\n \n /** \n * Aggregation definitions \n * e.g. [{ field: 'amount', method: 'sum', alias: 'total' }]\n */\n aggregations: z.array(z.object({\n field: z.string(),\n method: z.enum(['count', 'sum', 'avg', 'min', 'max', 'count_distinct']),\n alias: z.string().optional()\n })).optional(),\n}).describe('Options for DataEngine.aggregate operations');\n\n// ==========================================================================\n// 7. method: COUNT\n// ==========================================================================\n\nexport const DataEngineCountOptionsSchema = BaseEngineOptionsSchema.extend({\n /** Filter conditions */\n filter: DataEngineFilterSchema.optional(),\n}).describe('Options for DataEngine.count operations');\n\n// ==========================================================================\n// 8. Definition (Contract)\n// ==========================================================================\n\nexport const DataEngineContractSchema = z.object({\n find: z.function()\n .input(z.tuple([z.string(), DataEngineQueryOptionsSchema.optional()]))\n .output(z.promise(z.array(z.unknown()))),\n \n findOne: z.function()\n .input(z.tuple([z.string(), DataEngineQueryOptionsSchema.optional()]))\n .output(z.promise(z.unknown())),\n \n insert: z.function()\n .input(z.tuple([z.string(), z.union([z.record(z.string(), z.unknown()), z.array(z.record(z.string(), z.unknown()))]), DataEngineInsertOptionsSchema.optional()]))\n .output(z.promise(z.unknown())),\n \n update: z.function()\n .input(z.tuple([z.string(), z.record(z.string(), z.unknown()), DataEngineUpdateOptionsSchema.optional()]))\n .output(z.promise(z.unknown())),\n \n delete: z.function()\n .input(z.tuple([z.string(), DataEngineDeleteOptionsSchema.optional()]))\n .output(z.promise(z.unknown())),\n \n count: z.function()\n .input(z.tuple([z.string(), DataEngineCountOptionsSchema.optional()]))\n .output(z.promise(z.number())),\n \n aggregate: z.function()\n .input(z.tuple([z.string(), DataEngineAggregateOptionsSchema]))\n .output(z.promise(z.array(z.unknown())))\n}).describe('Standard Data Engine Contract');\n\n// ==========================================================================\n// 9. Virtualization & RPC Protocol\n// ==========================================================================\n\n/**\n * Data Engine RPC Request (Virtual ObjectQL)\n * \n * This schema defines the serialized format for executing Data Engine operations\n * via HTTP, Message Queue, or Plugin boundaries.\n * \n * It enables \"Virtual Data Engines\" where the implementation resides in a \n * separate microservice or plugin.\n */\n\nexport const DataEngineFindRequestSchema = z.object({\n method: z.literal('find'),\n object: z.string(),\n query: DataEngineQueryOptionsSchema.optional()\n});\n\nexport const DataEngineFindOneRequestSchema = z.object({\n method: z.literal('findOne'),\n object: z.string(),\n query: DataEngineQueryOptionsSchema.optional()\n});\n\nexport const DataEngineInsertRequestSchema = z.object({\n method: z.literal('insert'),\n object: z.string(),\n data: z.union([z.record(z.string(), z.unknown()), z.array(z.record(z.string(), z.unknown()))]),\n options: DataEngineInsertOptionsSchema.optional()\n});\n\nexport const DataEngineUpdateRequestSchema = z.object({\n method: z.literal('update'),\n object: z.string(),\n data: z.record(z.string(), z.unknown()),\n id: z.union([z.string(), z.number()]).optional().describe('ID for single update, or use filter in options'),\n options: DataEngineUpdateOptionsSchema.optional()\n});\n\nexport const DataEngineDeleteRequestSchema = z.object({\n method: z.literal('delete'),\n object: z.string(),\n id: z.union([z.string(), z.number()]).optional().describe('ID for single delete, or use filter in options'),\n options: DataEngineDeleteOptionsSchema.optional()\n});\n\nexport const DataEngineCountRequestSchema = z.object({\n method: z.literal('count'),\n object: z.string(),\n query: DataEngineCountOptionsSchema.optional()\n});\n\nexport const DataEngineAggregateRequestSchema = z.object({\n method: z.literal('aggregate'),\n object: z.string(),\n query: DataEngineAggregateOptionsSchema\n});\n\n/**\n * Data Engine Execute Request (Raw Command)\n * Execute a raw command/query native to the driver (e.g. SQL, Shell, Remote API).\n */\nexport const DataEngineExecuteRequestSchema = z.object({\n method: z.literal('execute'),\n /** The abstract command (string SQL, or JSON object) */\n command: z.unknown(),\n /** Optional options */\n options: z.record(z.string(), z.unknown()).optional()\n});\n\n/**\n * Data Engine Vector Find Request (AI/RAG)\n * Perform a similarity search using vector embeddings.\n */\nexport const DataEngineVectorFindRequestSchema = z.object({\n method: z.literal('vectorFind'),\n object: z.string(),\n /** The vector embedding to search for */\n vector: z.array(z.number()),\n /** Optional pre-filter (Metadata filtering) */\n filter: DataEngineFilterSchema.optional(),\n /** Fields to select */\n select: z.array(z.string()).optional(),\n /** Number of results */\n limit: z.number().int().default(5).optional(),\n /** Minimum similarity score (0-1) or distance threshold */\n threshold: z.number().optional()\n});\n\n/**\n * Data Engine Batch Request\n * Execute multiple operations in a single transaction/request efficiently.\n */\nexport const DataEngineBatchRequestSchema = z.object({\n method: z.literal('batch'),\n requests: z.array(z.discriminatedUnion('method', [\n DataEngineFindRequestSchema,\n DataEngineFindOneRequestSchema,\n DataEngineInsertRequestSchema,\n DataEngineUpdateRequestSchema,\n DataEngineDeleteRequestSchema,\n DataEngineCountRequestSchema,\n DataEngineAggregateRequestSchema,\n DataEngineExecuteRequestSchema,\n DataEngineVectorFindRequestSchema\n ])),\n /** \n * Transaction Mode\n * - true: All or nothing (Atomic)\n * - false: Best effort, continue on error\n */\n transaction: z.boolean().default(true).optional()\n});\n\n/**\n * Unified Data Engine Request Union\n * Use this to validate any incoming \"Virtual ObjectQL\" request.\n */\nexport const DataEngineRequestSchema = z.discriminatedUnion('method', [\n DataEngineFindRequestSchema,\n DataEngineFindOneRequestSchema,\n DataEngineInsertRequestSchema,\n DataEngineUpdateRequestSchema,\n DataEngineDeleteRequestSchema,\n DataEngineCountRequestSchema,\n DataEngineAggregateRequestSchema,\n DataEngineBatchRequestSchema,\n DataEngineExecuteRequestSchema,\n DataEngineVectorFindRequestSchema\n]).describe('Virtual ObjectQL Request Protocol');\n\n// ==========================================================================\n// 10. Type Exports\n// ==========================================================================\n\nexport type DataEngineFilter = z.infer<typeof DataEngineFilterSchema>;\nexport type DataEngineSort = z.infer<typeof DataEngineSortSchema>;\nexport type BaseEngineOptions = z.infer<typeof BaseEngineOptionsSchema>;\nexport type DataEngineQueryOptions = z.infer<typeof DataEngineQueryOptionsSchema>;\nexport type DataEngineInsertOptions = z.infer<typeof DataEngineInsertOptionsSchema>;\nexport type DataEngineUpdateOptions = z.infer<typeof DataEngineUpdateOptionsSchema>;\nexport type DataEngineDeleteOptions = z.infer<typeof DataEngineDeleteOptionsSchema>;\nexport type DataEngineAggregateOptions = z.infer<typeof DataEngineAggregateOptionsSchema>;\nexport type DataEngineCountOptions = z.infer<typeof DataEngineCountOptionsSchema>;\nexport type DataEngineRequest = z.infer<typeof DataEngineRequestSchema>;\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 */\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 = 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 { QuerySchema } from '../data/query.zod';\nimport { IsolationLevelEnum } from '../shared/enums.zod';\n\n/**\n * Common Driver Options\n * Passed to most driver methods to control behavior (transactions, timeouts, etc.)\n */\nexport const DriverOptionsSchema = z.object({\n /**\n * Transaction handle/identifier.\n * If provided, the operation must run within this transaction.\n */\n transaction: z.unknown().optional().describe('Transaction handle'),\n\n /**\n * Operation timeout in milliseconds.\n */\n timeout: z.number().optional().describe('Timeout in ms'),\n\n /**\n * Whether to bypass cache and force a fresh read.\n */\n skipCache: z.boolean().optional().describe('Bypass cache'),\n\n /**\n * Distributed Tracing Context.\n * Used for passing OpenTelemetry span context or request IDs for observability.\n */\n traceContext: z.record(z.string(), z.string()).optional().describe('OpenTelemetry context or request ID'),\n\n /**\n * Tenant Identifier.\n * For multi-tenant databases (row-level security or schema-per-tenant).\n */\n tenantId: z.string().optional().describe('Tenant Isolation identifier'),\n});\n\n/**\n * Driver Capabilities Schema\n * \n * Defines what features a database driver supports.\n * This allows ObjectQL to adapt its behavior based on underlying database capabilities.\n * Enhanced with granular capability flags for better feature detection.\n */\nexport const DriverCapabilitiesSchema = z.object({\n // ============================================================================\n // Basic CRUD Operations\n // ============================================================================\n \n /**\n * Whether the driver supports create operations.\n */\n create: z.boolean().default(true).describe('Supports CREATE operations'),\n \n /**\n * Whether the driver supports read operations.\n */\n read: z.boolean().default(true).describe('Supports READ operations'),\n \n /**\n * Whether the driver supports update operations.\n */\n update: z.boolean().default(true).describe('Supports UPDATE operations'),\n \n /**\n * Whether the driver supports delete operations.\n */\n delete: z.boolean().default(true).describe('Supports DELETE operations'),\n\n // ============================================================================\n // Bulk Operations\n // ============================================================================\n \n /**\n * Whether the driver supports bulk create operations.\n */\n bulkCreate: z.boolean().default(false).describe('Supports bulk CREATE operations'),\n \n /**\n * Whether the driver supports bulk update operations.\n */\n bulkUpdate: z.boolean().default(false).describe('Supports bulk UPDATE operations'),\n \n /**\n * Whether the driver supports bulk delete operations.\n */\n bulkDelete: z.boolean().default(false).describe('Supports bulk DELETE operations'),\n\n // ============================================================================\n // Transaction & Connection Management\n // ============================================================================\n \n /**\n * Whether the driver supports database transactions.\n * If true, beginTransaction, commit, and rollback must be implemented.\n */\n transactions: z.boolean().default(false).describe('Supports ACID transactions'),\n \n /**\n * Whether the driver supports savepoints within transactions.\n */\n savepoints: z.boolean().default(false).describe('Supports transaction savepoints'),\n \n /**\n * Supported transaction isolation levels.\n */\n isolationLevels: z.array(IsolationLevelEnum).optional().describe('Supported isolation levels'),\n\n // ============================================================================\n // Query Operations\n // ============================================================================\n \n /**\n * Whether the driver supports WHERE clause filters.\n * If false, ObjectQL will fetch all records and filter in memory.\n * \n * Example: Memory driver might not support complex filter conditions.\n */\n queryFilters: z.boolean().default(true).describe('Supports WHERE clause filtering'),\n\n /**\n * Whether the driver supports aggregation functions (COUNT, SUM, AVG, etc.).\n * If false, ObjectQL will compute aggregations in memory.\n */\n queryAggregations: z.boolean().default(false).describe('Supports GROUP BY and aggregation functions'),\n\n /**\n * Whether the driver supports ORDER BY sorting.\n * If false, ObjectQL will sort results in memory.\n */\n querySorting: z.boolean().default(true).describe('Supports ORDER BY sorting'),\n\n /**\n * Whether the driver supports LIMIT/OFFSET pagination.\n * If false, ObjectQL will fetch all records and paginate in memory.\n */\n queryPagination: z.boolean().default(true).describe('Supports LIMIT/OFFSET pagination'),\n\n /**\n * Whether the driver supports window functions (ROW_NUMBER, RANK, LAG, LEAD, etc.).\n * If false, ObjectQL will compute window functions in memory.\n */\n queryWindowFunctions: z.boolean().default(false).describe('Supports window functions with OVER clause'),\n\n /**\n * Whether the driver supports subqueries (nested SELECT statements).\n * If false, ObjectQL will execute queries separately and combine results.\n */\n querySubqueries: z.boolean().default(false).describe('Supports subqueries'),\n \n /**\n * Whether the driver supports Common Table Expressions (WITH clause).\n */\n queryCTE: z.boolean().default(false).describe('Supports Common Table Expressions (WITH clause)'),\n\n /**\n * Whether the driver supports SQL-style joins.\n * If false, ObjectQL will fetch related data separately and join in memory.\n */\n joins: z.boolean().default(false).describe('Supports SQL joins'),\n\n // ============================================================================\n // Advanced Features\n // ============================================================================\n \n /**\n * Whether the driver supports full-text search.\n * If true, text search queries can be pushed to the database.\n */\n fullTextSearch: z.boolean().default(false).describe('Supports full-text search'),\n \n /**\n * Whether the driver supports JSON querying capabilities.\n */\n jsonQuery: z.boolean().default(false).describe('Supports JSON field querying'),\n \n /**\n * Whether the driver supports geospatial queries.\n */\n geospatialQuery: z.boolean().default(false).describe('Supports geospatial queries'),\n \n /**\n * Whether the driver supports streaming large result sets.\n */\n streaming: z.boolean().default(false).describe('Supports result streaming (cursors/iterators)'),\n\n /**\n * Whether the driver supports JSON field types.\n * If false, JSON data will be serialized as strings.\n */\n jsonFields: z.boolean().default(false).describe('Supports JSON field types'),\n\n /**\n * Whether the driver supports array field types.\n * If false, arrays will be stored as JSON strings or in separate tables.\n */\n arrayFields: z.boolean().default(false).describe('Supports array field types'),\n\n /**\n * Whether the driver supports vector embeddings and similarity search.\n * Required for RAG (Retrieval-Augmented Generation) and AI features.\n */\n vectorSearch: z.boolean().default(false).describe('Supports vector embeddings and similarity search'),\n\n // ============================================================================\n // Schema Management\n // ============================================================================\n \n /**\n * Whether the driver supports automatic schema synchronization.\n */\n schemaSync: z.boolean().default(false).describe('Supports automatic schema synchronization'),\n \n /**\n * Whether the driver supports database migrations.\n */\n migrations: z.boolean().default(false).describe('Supports database migrations'),\n \n /**\n * Whether the driver supports index management.\n */\n indexes: z.boolean().default(false).describe('Supports index creation and management'),\n\n // ============================================================================\n // Performance & Optimization\n // ============================================================================\n \n /**\n * Whether the driver supports connection pooling.\n */\n connectionPooling: z.boolean().default(false).describe('Supports connection pooling'),\n \n /**\n * Whether the driver supports prepared statements.\n */\n preparedStatements: z.boolean().default(false).describe('Supports prepared statements (SQL injection prevention)'),\n \n /**\n * Whether the driver supports query result caching.\n */\n queryCache: z.boolean().default(false).describe('Supports query result caching'),\n});\n\n/**\n * Unified Database Driver Interface\n * \n * This is the contract that all storage adapters (Postgres, Mongo, Excel, Salesforce) must implement.\n * It abstracts the underlying engine, enabling ObjectStack to be \"Database Agnostic\".\n */\nexport const DriverInterfaceSchema = z.object({\n /**\n * Driver name (e.g., 'postgresql', 'mongodb', 'rest_api').\n */\n name: z.string().describe('Driver unique name'),\n\n /**\n * Driver version.\n */\n version: z.string().describe('Driver version'),\n\n /**\n * Capabilities descriptor.\n */\n supports: DriverCapabilitiesSchema,\n\n // ============================================================================\n // Lifecycle Management\n // ============================================================================\n\n /**\n * Initialize connection pool or authenticate.\n */\n connect: z.function()\n .input(z.tuple([]))\n .output(z.promise(z.void()))\n .describe('Establish connection'),\n\n /**\n * Close connections and cleanup resources.\n */\n disconnect: z.function()\n .input(z.tuple([]))\n .output(z.promise(z.void()))\n .describe('Close connection'),\n\n /**\n * Check connection health.\n * @returns true if healthy, false otherwise.\n */\n checkHealth: z.function()\n .input(z.tuple([]))\n .output(z.promise(z.boolean()))\n .describe('Health check'),\n \n /**\n * Get Connection Pool Statistics.\n * Useful for monitoring database load.\n */\n getPoolStats: z.function()\n .input(z.tuple([]))\n .output(z.object({\n total: z.number(),\n idle: z.number(),\n active: z.number(),\n waiting: z.number(),\n }).optional())\n .optional()\n .describe('Get connection pool statistics'),\n\n // ============================================================================\n // Raw Execution (Escape Hatch)\n // ============================================================================\n\n /**\n * Execute a raw command/query native to the driver.\n * Useful for complex reports, stored procedures, or DDL not covered by standard sync.\n * \n * @param command - The raw command (e.g., SQL string, shell command, or remote API payload).\n * @param parameters - Optional array of bound parameters for safe execution (prevention of injection).\n * @param options - Driver options (transaction context, timeout).\n * @returns Promise resolving to the raw result from the driver.\n * \n * @example\n * // SQL Driver\n * await driver.execute('SELECT * FROM complex_view WHERE id = ?', [123]);\n * \n * // Mongo Driver\n * await driver.execute({ aggregate: 'orders', pipeline: [...] });\n */\n execute: z.function()\n .input(z.tuple([z.unknown(), z.array(z.unknown()).optional(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.unknown()))\n .describe('Execute raw command'),\n\n // ============================================================================\n // CRUD Operations\n // ============================================================================\n\n /**\n * Find multiple records matching the structured query.\n * Parsing the QueryAST is the responsibility of the driver implementation.\n * \n * @param object - The name of the object/table to query (e.g. 'account').\n * @param query - The structured QueryAST (filters, sorts, joins, pagination).\n * @param options - Driver options.\n * @returns Array of records.\n * \n * @example\n * await driver.find('account', {\n * filters: [['status', '=', 'active'], 'and', ['amount', '>', 500]],\n * sort: [{ field: 'created_at', order: 'desc' }],\n * top: 10\n * });\n * @returns Array of records.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n find: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.promise(z.array(z.record(z.string(), z.unknown()))))\n .describe('Find records'),\n\n /**\n * Stream records matching the structured query.\n * Optimized for large datasets to avoid memory overflow.\n * \n * @param object - The name of the object.\n * @param query - The structured QueryAST.\n * @param options - Driver options.\n * @returns AsyncIterable/ReadableStream of records.\n */\n findStream: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.unknown())\n .describe('Stream records (AsyncIterable)'),\n\n /**\n * Find a single record by query.\n * Similar to find(), but returns only the first match or null.\n * \n * @param object - The name of the object.\n * @param query - QueryAST.\n * @param options - Driver options.\n * @returns The record or null.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n findOne: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.promise(z.record(z.string(), z.unknown()).nullable()))\n .describe('Find one record'),\n\n /**\n * Create a new record.\n * \n * @param object - The object name.\n * @param data - Key-value map of field data.\n * @param options - Driver options.\n * @returns The created record, including server-generated fields (id, created_at, etc.).\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n create: z.function()\n .input(z.tuple([z.string(), z.record(z.string(), z.unknown()), DriverOptionsSchema.optional()]))\n .output(z.promise(z.record(z.string(), z.unknown())))\n .describe('Create record'),\n\n /**\n * Update an existing record by ID.\n * \n * @param object - The object name.\n * @param id - The unique identifier of the record.\n * @param data - The fields to update.\n * @param options - Driver options.\n * @returns The updated record.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n update: z.function()\n .input(z.tuple([z.string(), z.string().or(z.number()), z.record(z.string(), z.unknown()), DriverOptionsSchema.optional()]))\n .output(z.promise(z.record(z.string(), z.unknown())))\n .describe('Update record'),\n\n /**\n * Upsert (Update or Insert) a record.\n * \n * @param object - The object name.\n * @param data - The data to upsert.\n * @param conflictKeys - Fields to check for conflict (uniqueness).\n * @param options - Driver options.\n * @returns The created or updated record.\n */\n upsert: z.function()\n .input(z.tuple([z.string(), z.record(z.string(), z.unknown()), z.array(z.string()).optional(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.record(z.string(), z.unknown())))\n .describe('Upsert record'),\n\n /**\n * Delete a record by ID.\n * \n * @param object - The object name.\n * @param id - The unique identifier of the record.\n * @param options - Driver options.\n * @returns True if deleted, false if not found.\n */\n delete: z.function()\n .input(z.tuple([z.string(), z.string().or(z.number()), DriverOptionsSchema.optional()]))\n .output(z.promise(z.boolean()))\n .describe('Delete record'),\n\n /**\n * Count records matching a query.\n * \n * @param object - The object name.\n * @param query - Optional filtering criteria.\n * @param options - Driver options.\n * @returns Total count.\n */\n count: z.function()\n .input(z.tuple([z.string(), QuerySchema.optional(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.number()))\n .describe('Count records'),\n\n // ============================================================================\n // Bulk Operations\n // ============================================================================\n\n /**\n * Create multiple records in a single batch.\n * Optimized for performance.\n * \n * @param object - The object name.\n * @param dataArray - Array of record data.\n * @returns Array of created records.\n */\n bulkCreate: z.function()\n .input(z.tuple([z.string(), z.array(z.record(z.string(), z.unknown())), DriverOptionsSchema.optional()]))\n .output(z.promise(z.array(z.record(z.string(), z.unknown())))),\n\n /**\n * Update multiple records in a single batch.\n * \n * @param object - The object name.\n * @param updates - Array of objects containing {id, data}.\n * @returns Array of updated records.\n */\n bulkUpdate: z.function()\n .input(z.tuple([z.string(), z.array(z.object({ id: z.string().or(z.number()), data: z.record(z.string(), z.unknown()) })), DriverOptionsSchema.optional()]))\n .output(z.promise(z.array(z.record(z.string(), z.unknown())))),\n\n /**\n * Delete multiple records in a single batch.\n * \n * @param object - The object name.\n * @param ids - Array of record IDs.\n */\n bulkDelete: z.function()\n .input(z.tuple([z.string(), z.array(z.string().or(z.number())), DriverOptionsSchema.optional()]))\n .output(z.promise(z.void())),\n\n /**\n * Update multiple records matching a query.\n * Direct database push-down. DOES NOT trigger per-record hooks.\n * \n * @param object - The object name.\n * @param query - The filtering criteria.\n * @param data - The data to update.\n * @returns Count of modified records.\n */\n updateMany: z.function()\n .input(z.tuple([z.string(), QuerySchema, z.record(z.string(), z.unknown()), DriverOptionsSchema.optional()]))\n .output(z.promise(z.number()))\n .optional(),\n\n /**\n * Delete multiple records matching a query.\n * Direct database push-down. DOES NOT trigger per-record hooks.\n * \n * @param object - The object name.\n * @param query - The filtering criteria.\n * @returns Count of deleted records.\n */\n deleteMany: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.promise(z.number()))\n .optional(),\n\n // ============================================================================\n // Transaction Management\n // ============================================================================\n\n /**\n * Begin a new database transaction.\n * @param options - Isolation level and other settings.\n * @returns A transaction handle to be passed to subsequent operations via `options.transaction`.\n */\n beginTransaction: z.function()\n .input(z.tuple([z.object({\n isolationLevel: IsolationLevelEnum.optional()\n }).optional()]))\n .output(z.promise(z.unknown()))\n .describe('Start transaction'),\n\n /**\n * Commit the transaction.\n * @param transaction - The transaction handle.\n */\n commit: z.function()\n .input(z.tuple([z.unknown()]))\n .output(z.promise(z.void()))\n .describe('Commit transaction'),\n\n /**\n * Rollback the transaction.\n * @param transaction - The transaction handle.\n */\n rollback: z.function()\n .input(z.tuple([z.unknown()]))\n .output(z.promise(z.void()))\n .describe('Rollback transaction'),\n\n // ============================================================================\n // Schema Management\n // ============================================================================\n\n /**\n * Synchronize the database schema with the Object definition.\n * This is an idempotent operation: it should create tables if missing, \n * add columns if missing, and update indexes.\n * \n * @param object - The object name.\n * @param schema - The full Object Schema (fields, indexes, etc).\n * @param options - Driver options.\n */\n syncSchema: z.function()\n .input(z.tuple([z.string(), z.unknown(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.void()))\n .describe('Sync object schema to DB'),\n \n /**\n * Drop the underlying table or collection for an object.\n * WARNING: Destructive operation.\n * \n * @param object - The object name.\n */\n dropTable: z.function()\n .input(z.tuple([z.string(), DriverOptionsSchema.optional()]))\n .output(z.promise(z.void())),\n\n /**\n * Analyze query performance.\n * Returns execution plan without executing the query (where possible).\n * \n * @param object - The object name.\n * @param query - The query to explain.\n * @returns The execution plan details.\n */\n explain: z.function()\n .input(z.tuple([z.string(), QuerySchema, DriverOptionsSchema.optional()]))\n .output(z.promise(z.unknown()))\n .optional(),\n});\n\n/**\n * Connection Pool Configuration Schema\n * Manages database connection pooling for performance\n */\nexport const PoolConfigSchema = z.object({\n min: z.number().min(0).default(2).describe('Minimum number of connections in pool'),\n max: z.number().min(1).default(10).describe('Maximum number of connections in pool'),\n idleTimeoutMillis: z.number().min(0).default(30000).describe('Time in ms before idle connection is closed'),\n connectionTimeoutMillis: z.number().min(0).default(5000).describe('Time in ms to wait for available connection'),\n});\n\n/**\n * Driver Configuration Schema\n * Base configuration for database drivers\n */\nexport const DriverConfigSchema = z.object({\n name: z.string().describe('Driver instance name'),\n type: z.enum(['sql', 'nosql', 'cache', 'search', 'graph', 'timeseries']).describe('Driver type category'),\n capabilities: DriverCapabilitiesSchema.describe('Driver capability flags'),\n connectionString: z.string().optional().describe('Database connection string (driver-specific format)'),\n poolConfig: PoolConfigSchema.optional().describe('Connection pool configuration'),\n});\n\n/**\n * TypeScript types\n */\nexport type DriverOptions = z.infer<typeof DriverOptionsSchema>;\nexport type DriverCapabilities = z.infer<typeof DriverCapabilitiesSchema>;\nexport type DriverInterface = z.infer<typeof DriverInterfaceSchema>;\nexport type DriverConfig = z.infer<typeof DriverConfigSchema>;\nexport type PoolConfig = z.infer<typeof PoolConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { DriverConfigSchema } from './driver.zod';\n\n/**\n * SQL Dialect Enumeration\n * Supported SQL database dialects\n */\nexport const SQLDialectSchema = z.enum([\n 'postgresql',\n 'mysql',\n 'sqlite',\n 'mssql',\n 'oracle',\n 'mariadb',\n]);\n\nexport type SQLDialect = z.infer<typeof SQLDialectSchema>;\n\n/**\n * Data Type Mapping Schema\n * Maps ObjectStack field types to SQL-specific data types\n * \n * @example PostgreSQL data type mapping\n * {\n * text: 'VARCHAR(255)',\n * number: 'NUMERIC',\n * boolean: 'BOOLEAN',\n * date: 'DATE',\n * datetime: 'TIMESTAMP',\n * json: 'JSONB',\n * uuid: 'UUID',\n * binary: 'BYTEA'\n * }\n */\nexport const DataTypeMappingSchema = z.object({\n text: z.string().describe('SQL type for text fields (e.g., VARCHAR, TEXT)'),\n number: z.string().describe('SQL type for number fields (e.g., NUMERIC, DECIMAL, INT)'),\n boolean: z.string().describe('SQL type for boolean fields (e.g., BOOLEAN, BIT)'),\n date: z.string().describe('SQL type for date fields (e.g., DATE)'),\n datetime: z.string().describe('SQL type for datetime fields (e.g., TIMESTAMP, DATETIME)'),\n json: z.string().optional().describe('SQL type for JSON fields (e.g., JSON, JSONB)'),\n uuid: z.string().optional().describe('SQL type for UUID fields (e.g., UUID, CHAR(36))'),\n binary: z.string().optional().describe('SQL type for binary fields (e.g., BLOB, BYTEA)'),\n});\n\nexport type DataTypeMapping = z.infer<typeof DataTypeMappingSchema>;\n\n/**\n * SSL Configuration Schema\n * SSL/TLS connection configuration for secure database connections\n * \n * @example PostgreSQL SSL configuration\n * {\n * rejectUnauthorized: true,\n * ca: '/path/to/ca-cert.pem',\n * cert: '/path/to/client-cert.pem',\n * key: '/path/to/client-key.pem'\n * }\n */\nexport const SSLConfigSchema = z.object({\n rejectUnauthorized: z.boolean().default(true).describe('Reject connections with invalid certificates'),\n ca: z.string().optional().describe('CA certificate file path or content'),\n cert: z.string().optional().describe('Client certificate file path or content'),\n key: z.string().optional().describe('Client private key file path or content'),\n}).refine((data) => {\n // If cert is provided, key must also be provided, and vice versa\n const hasCert = data.cert !== undefined;\n const hasKey = data.key !== undefined;\n return hasCert === hasKey;\n}, {\n message: 'Client certificate (cert) and private key (key) must be provided together',\n});\n\nexport type SSLConfig = z.infer<typeof SSLConfigSchema>;\n\n/**\n * SQL Driver Configuration Schema\n * Extended driver configuration specific to SQL databases\n * \n * @example PostgreSQL driver configuration\n * {\n * name: 'primary-db',\n * type: 'sql',\n * dialect: 'postgresql',\n * connectionString: 'postgresql://user:pass@localhost:5432/mydb',\n * dataTypeMapping: {\n * text: 'VARCHAR(255)',\n * number: 'NUMERIC',\n * boolean: 'BOOLEAN',\n * date: 'DATE',\n * datetime: 'TIMESTAMP',\n * json: 'JSONB',\n * uuid: 'UUID',\n * binary: 'BYTEA'\n * },\n * ssl: true,\n * sslConfig: {\n * rejectUnauthorized: true,\n * ca: '/etc/ssl/certs/ca.pem'\n * },\n * poolConfig: {\n * min: 2,\n * max: 10,\n * idleTimeoutMillis: 30000,\n * connectionTimeoutMillis: 5000\n * },\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: true,\n * bulkDelete: true,\n * transactions: true,\n * savepoints: true,\n * isolationLevels: ['read-committed', 'repeatable-read', 'serializable'],\n * queryFilters: true,\n * queryAggregations: true,\n * querySorting: true,\n * queryPagination: true,\n * queryWindowFunctions: true,\n * querySubqueries: true,\n * queryCTE: true,\n * joins: true,\n * fullTextSearch: true,\n * jsonQuery: true,\n * geospatialQuery: false,\n * streaming: true,\n * jsonFields: true,\n * arrayFields: true,\n * vectorSearch: true,\n * schemaSync: true,\n * migrations: true,\n * indexes: true,\n * connectionPooling: true,\n * preparedStatements: true,\n * queryCache: false\n * }\n * }\n */\nexport const SQLDriverConfigSchema = DriverConfigSchema.extend({\n type: z.literal('sql').describe('Driver type must be \"sql\"'),\n dialect: SQLDialectSchema.describe('SQL database dialect'),\n dataTypeMapping: DataTypeMappingSchema.describe('SQL data type mapping configuration'),\n ssl: z.boolean().default(false).describe('Enable SSL/TLS connection'),\n sslConfig: SSLConfigSchema.optional().describe('SSL/TLS configuration (required when ssl is true)'),\n}).refine((data) => {\n // If ssl is enabled, sslConfig must be provided\n if (data.ssl && !data.sslConfig) {\n return false;\n }\n return true;\n}, {\n message: 'sslConfig is required when ssl is true',\n});\n\nexport type SQLDriverConfig = z.infer<typeof SQLDriverConfigSchema>;\n\n// ==========================================================================\n// SQLite-Specific Constants\n// ==========================================================================\n\n/**\n * Default data type mappings for SQLite/libSQL dialect.\n *\n * SQLite uses a simplified type system with type affinity:\n * - TEXT: strings, dates, UUIDs\n * - REAL: floating-point numbers\n * - INTEGER: integers, booleans\n * - BLOB: binary data\n *\n * @see https://www.sqlite.org/datatype3.html\n */\nexport const SQLiteDataTypeMappingDefaults: DataTypeMapping = {\n text: 'TEXT',\n number: 'REAL',\n boolean: 'INTEGER',\n date: 'TEXT',\n datetime: 'TEXT',\n json: 'TEXT',\n uuid: 'TEXT',\n binary: 'BLOB',\n};\n\n/**\n * SQLite ALTER TABLE Limitations.\n *\n * SQLite has limited ALTER TABLE support compared to other SQL databases.\n * This constant documents the known limitations that affect migration planning.\n * The schema diff service must use the \"table rebuild\" strategy for operations\n * that SQLite cannot perform natively.\n *\n * @see https://www.sqlite.org/lang_altertable.html\n */\nexport const SQLiteAlterTableLimitations = {\n /** SQLite supports ADD COLUMN */\n supportsAddColumn: true,\n /** SQLite supports RENAME COLUMN (3.25.0+) */\n supportsRenameColumn: true,\n /** SQLite supports DROP COLUMN (3.35.0+) */\n supportsDropColumn: true,\n /** SQLite does NOT support MODIFY/ALTER COLUMN type */\n supportsModifyColumn: false,\n /** SQLite does NOT support adding constraints to existing columns */\n supportsAddConstraint: false,\n /**\n * When an unsupported alteration is needed, the migration planner\n * must use the 12-step table rebuild strategy:\n * 1. CREATE new table with desired schema\n * 2. Copy data from old table\n * 3. DROP old table\n * 4. RENAME new table to old name\n */\n rebuildStrategy: 'create_copy_drop_rename',\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { DriverConfigSchema } from './driver.zod';\n\n/**\n * NoSQL Database Type Enumeration\n * Supported NoSQL database types\n */\nexport const NoSQLDatabaseTypeSchema = z.enum([\n 'mongodb',\n 'couchdb',\n 'dynamodb',\n 'cassandra',\n 'redis',\n 'elasticsearch',\n 'neo4j',\n 'orientdb',\n]);\n\nexport type NoSQLDatabaseType = z.infer<typeof NoSQLDatabaseTypeSchema>;\n\n/**\n * NoSQL Query Operation Types\n * Different types of operations supported by NoSQL databases\n */\nexport const NoSQLOperationTypeSchema = z.enum([\n 'find', // Query documents/records\n 'findOne', // Get single document\n 'insert', // Insert document\n 'update', // Update document\n 'delete', // Delete document\n 'aggregate', // Aggregation pipeline\n 'mapReduce', // MapReduce operation\n 'count', // Count documents\n 'distinct', // Get distinct values\n 'createIndex', // Create index\n 'dropIndex', // Drop index\n]);\n\nexport type NoSQLOperationType = z.infer<typeof NoSQLOperationTypeSchema>;\n\n/**\n * NoSQL Consistency Level\n * Consistency guarantees for distributed NoSQL databases\n * \n * Consistency levels (from strongest to weakest):\n * - **all**: All replicas must respond (strongest consistency, lowest availability)\n * - **quorum**: Majority of replicas must respond (balanced)\n * - **one**: Any single replica responds (weakest consistency, highest availability)\n * - **local_quorum**: Majority of replicas in local datacenter\n * - **each_quorum**: Quorum of replicas in each datacenter\n * - **eventual**: Eventual consistency (highest availability, weakest consistency)\n */\nexport const ConsistencyLevelSchema = z.enum([\n 'all',\n 'quorum',\n 'one',\n 'local_quorum',\n 'each_quorum',\n 'eventual',\n]);\n\nexport type ConsistencyLevel = z.infer<typeof ConsistencyLevelSchema>;\n\n/**\n * NoSQL Index Type\n * Types of indexes supported by NoSQL databases\n */\nexport const NoSQLIndexTypeSchema = z.enum([\n 'single', // Single field index\n 'compound', // Multiple fields index\n 'unique', // Unique constraint\n 'text', // Full-text search index\n 'geospatial', // Geospatial index (2d, 2dsphere)\n 'hashed', // Hashed index for sharding\n 'ttl', // Time-to-live index (auto-deletion)\n 'sparse', // Sparse index (only indexed documents with field)\n]);\n\nexport type NoSQLIndexType = z.infer<typeof NoSQLIndexTypeSchema>;\n\n/**\n * NoSQL Sharding Configuration\n * Configuration for horizontal partitioning across multiple nodes\n */\nexport const ShardingConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable sharding'),\n shardKey: z.string().optional().describe('Field to use as shard key'),\n shardingStrategy: z.enum(['hash', 'range', 'zone']).optional().describe('Sharding strategy'),\n numShards: z.number().int().positive().optional().describe('Number of shards'),\n});\n\nexport type ShardingConfig = z.infer<typeof ShardingConfigSchema>;\n\n/**\n * NoSQL Replication Configuration\n * Configuration for data replication across nodes\n */\nexport const ReplicationConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable replication'),\n replicaSetName: z.string().optional().describe('Replica set name'),\n replicas: z.number().int().positive().optional().describe('Number of replicas'),\n readPreference: z.enum(['primary', 'primaryPreferred', 'secondary', 'secondaryPreferred', 'nearest'])\n .optional()\n .describe('Read preference for replica set'),\n writeConcern: z.enum(['majority', 'acknowledged', 'unacknowledged'])\n .optional()\n .describe('Write concern level'),\n});\n\nexport type ReplicationConfig = z.infer<typeof ReplicationConfigSchema>;\n\n/**\n * Document Schema Validation\n * Schema validation rules for document-based NoSQL databases\n */\nexport const DocumentSchemaValidationSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable schema validation'),\n validationLevel: z.enum(['strict', 'moderate', 'off']).optional().describe('Validation strictness'),\n validationAction: z.enum(['error', 'warn']).optional().describe('Action on validation failure'),\n jsonSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for validation'),\n});\n\nexport type DocumentSchemaValidation = z.infer<typeof DocumentSchemaValidationSchema>;\n\n/**\n * NoSQL Data Type Mapping Schema\n * Maps ObjectStack field types to NoSQL-specific data types\n * \n * @example MongoDB data type mapping\n * {\n * text: 'string',\n * number: 'double',\n * boolean: 'bool',\n * date: 'date',\n * datetime: 'date',\n * json: 'object',\n * uuid: 'string',\n * binary: 'binData',\n * array: 'array',\n * objectId: 'objectId'\n * }\n */\nexport const NoSQLDataTypeMappingSchema = z.object({\n text: z.string().describe('NoSQL type for text fields'),\n number: z.string().describe('NoSQL type for number fields'),\n boolean: z.string().describe('NoSQL type for boolean fields'),\n date: z.string().describe('NoSQL type for date fields'),\n datetime: z.string().describe('NoSQL type for datetime fields'),\n json: z.string().optional().describe('NoSQL type for JSON/object fields'),\n uuid: z.string().optional().describe('NoSQL type for UUID fields'),\n binary: z.string().optional().describe('NoSQL type for binary fields'),\n array: z.string().optional().describe('NoSQL type for array fields'),\n objectId: z.string().optional().describe('NoSQL type for ObjectID fields (MongoDB)'),\n geopoint: z.string().optional().describe('NoSQL type for geospatial point fields'),\n});\n\nexport type NoSQLDataTypeMapping = z.infer<typeof NoSQLDataTypeMappingSchema>;\n\n/**\n * NoSQL Driver Configuration Schema\n * Extended driver configuration specific to NoSQL databases\n * \n * @example MongoDB driver configuration\n * {\n * name: 'primary-mongo',\n * type: 'nosql',\n * databaseType: 'mongodb',\n * connectionString: 'mongodb://user:pass@localhost:27017/mydb',\n * dataTypeMapping: {\n * text: 'string',\n * number: 'double',\n * boolean: 'bool',\n * date: 'date',\n * datetime: 'date',\n * json: 'object',\n * uuid: 'string',\n * binary: 'binData',\n * array: 'array',\n * objectId: 'objectId'\n * },\n * consistency: 'quorum',\n * replication: {\n * enabled: true,\n * replicaSetName: 'rs0',\n * replicas: 3,\n * readPreference: 'primaryPreferred',\n * writeConcern: 'majority'\n * },\n * sharding: {\n * enabled: true,\n * shardKey: '_id',\n * shardingStrategy: 'hash',\n * numShards: 4\n * },\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: true,\n * bulkDelete: true,\n * transactions: true,\n * savepoints: false,\n * queryFilters: true,\n * queryAggregations: true,\n * querySorting: true,\n * queryPagination: true,\n * queryWindowFunctions: false,\n * querySubqueries: false,\n * queryCTE: false,\n * joins: false,\n * fullTextSearch: true,\n * jsonQuery: true,\n * geospatialQuery: true,\n * streaming: true,\n * jsonFields: true,\n * arrayFields: true,\n * vectorSearch: false,\n * schemaSync: true,\n * migrations: false,\n * indexes: true,\n * connectionPooling: true,\n * preparedStatements: false,\n * queryCache: false\n * }\n * }\n * \n * @example DynamoDB driver configuration\n * {\n * name: 'dynamodb-main',\n * type: 'nosql',\n * databaseType: 'dynamodb',\n * region: 'us-east-1',\n * accessKeyId: 'AKIAIOSFODNN7EXAMPLE',\n * secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',\n * consistency: 'eventual',\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: false,\n * bulkDelete: false,\n * transactions: true,\n * queryFilters: true,\n * queryAggregations: false,\n * querySorting: true,\n * queryPagination: true,\n * fullTextSearch: false,\n * jsonQuery: true,\n * indexes: true\n * }\n * }\n */\nexport const NoSQLDriverConfigSchema = DriverConfigSchema.extend({\n type: z.literal('nosql').describe('Driver type must be \"nosql\"'),\n databaseType: NoSQLDatabaseTypeSchema.describe('Specific NoSQL database type'),\n dataTypeMapping: NoSQLDataTypeMappingSchema.describe('NoSQL data type mapping configuration'),\n \n /**\n * Consistency level for reads/writes\n */\n consistency: ConsistencyLevelSchema.optional().describe('Consistency level for operations'),\n \n /**\n * Replication configuration\n */\n replication: ReplicationConfigSchema.optional().describe('Replication configuration'),\n \n /**\n * Sharding configuration\n */\n sharding: ShardingConfigSchema.optional().describe('Sharding configuration'),\n \n /**\n * Schema validation rules (for document databases)\n */\n schemaValidation: DocumentSchemaValidationSchema.optional().describe('Document schema validation'),\n \n /**\n * AWS Region (for DynamoDB, DocumentDB, etc.)\n */\n region: z.string().optional().describe('AWS region (for managed NoSQL services)'),\n \n /**\n * AWS Access Key ID (for DynamoDB, DocumentDB, etc.)\n */\n accessKeyId: z.string().optional().describe('AWS access key ID'),\n \n /**\n * AWS Secret Access Key (for DynamoDB, DocumentDB, etc.)\n */\n secretAccessKey: z.string().optional().describe('AWS secret access key'),\n \n /**\n * Time-to-live (TTL) field name\n * Automatically delete documents after a specified time\n */\n ttlField: z.string().optional().describe('Field name for TTL (auto-deletion)'),\n \n /**\n * Maximum document size in bytes\n */\n maxDocumentSize: z.number().int().positive().optional().describe('Maximum document size in bytes'),\n \n /**\n * Collection/Table name prefix\n * Useful for multi-tenancy or environment isolation\n */\n collectionPrefix: z.string().optional().describe('Prefix for collection/table names'),\n});\n\nexport type NoSQLDriverConfig = z.infer<typeof NoSQLDriverConfigSchema>;\n\n/**\n * NoSQL Query Options\n * Additional options for NoSQL queries\n */\nexport const NoSQLQueryOptionsSchema = z.object({\n /**\n * Consistency level for this query\n */\n consistency: ConsistencyLevelSchema.optional().describe('Consistency level override'),\n \n /**\n * Read from secondary replicas\n */\n readFromSecondary: z.boolean().optional().describe('Allow reading from secondary replicas'),\n \n /**\n * Projection (fields to include/exclude)\n */\n projection: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional().describe('Field projection'),\n \n /**\n * Query timeout in milliseconds\n */\n timeout: z.number().int().positive().optional().describe('Query timeout (ms)'),\n \n /**\n * Use cursor for large result sets\n */\n useCursor: z.boolean().optional().describe('Use cursor instead of loading all results'),\n \n /**\n * Batch size for cursor iteration\n */\n batchSize: z.number().int().positive().optional().describe('Cursor batch size'),\n \n /**\n * Enable query profiling\n */\n profile: z.boolean().optional().describe('Enable query profiling'),\n \n /**\n * Use hinted index\n */\n hint: z.string().optional().describe('Index hint for query optimization'),\n});\n\nexport type NoSQLQueryOptions = z.infer<typeof NoSQLQueryOptionsSchema>;\n\n/**\n * NoSQL Aggregation Pipeline Stage\n * Represents a single stage in an aggregation pipeline (MongoDB-style)\n */\nexport const AggregationStageSchema = z.object({\n /**\n * Stage operator (e.g., $match, $group, $sort, $project)\n */\n operator: z.string().describe('Aggregation operator (e.g., $match, $group, $sort)'),\n \n /**\n * Stage parameters/options\n */\n options: z.record(z.string(), z.unknown()).describe('Stage-specific options'),\n});\n\nexport type AggregationStage = z.infer<typeof AggregationStageSchema>;\n\n/**\n * NoSQL Aggregation Pipeline\n * Sequence of aggregation stages for complex data transformations\n */\nexport const AggregationPipelineSchema = z.object({\n /**\n * Collection/Table to aggregate\n */\n collection: z.string().describe('Collection/table name'),\n \n /**\n * Pipeline stages\n */\n stages: z.array(AggregationStageSchema).describe('Aggregation pipeline stages'),\n \n /**\n * Additional options\n */\n options: NoSQLQueryOptionsSchema.optional().describe('Query options'),\n});\n\nexport type AggregationPipeline = z.infer<typeof AggregationPipelineSchema>;\n\n/**\n * NoSQL Index Definition\n * Definition for creating indexes in NoSQL databases\n */\nexport const NoSQLIndexSchema = z.object({\n /**\n * Index name\n */\n name: z.string().describe('Index name'),\n \n /**\n * Index type\n */\n type: NoSQLIndexTypeSchema.describe('Index type'),\n \n /**\n * Fields to index\n * For compound indexes, order matters\n */\n fields: z.array(z.object({\n field: z.string().describe('Field name'),\n order: z.enum(['asc', 'desc', 'text', '2dsphere']).optional().describe('Index order or type'),\n })).describe('Fields to index'),\n \n /**\n * Unique constraint\n */\n unique: z.boolean().default(false).describe('Enforce uniqueness'),\n \n /**\n * Sparse index (only index documents with the field)\n */\n sparse: z.boolean().default(false).describe('Sparse index'),\n \n /**\n * TTL in seconds (for TTL indexes)\n */\n expireAfterSeconds: z.number().int().positive().optional().describe('TTL in seconds'),\n \n /**\n * Partial index filter\n */\n partialFilterExpression: z.record(z.string(), z.unknown()).optional().describe('Partial index filter'),\n \n /**\n * Background index creation\n */\n background: z.boolean().default(false).describe('Create index in background'),\n});\n\nexport type NoSQLIndex = z.infer<typeof NoSQLIndexSchema>;\n\n/**\n * NoSQL Transaction Options\n * Options for NoSQL transactions (where supported)\n */\nexport const NoSQLTransactionOptionsSchema = z.object({\n /**\n * Read concern level\n */\n readConcern: z.enum(['local', 'majority', 'linearizable', 'snapshot']).optional().describe('Read concern level'),\n \n /**\n * Write concern level\n */\n writeConcern: z.enum(['majority', 'acknowledged', 'unacknowledged']).optional().describe('Write concern level'),\n \n /**\n * Read preference\n */\n readPreference: z.enum(['primary', 'primaryPreferred', 'secondary', 'secondaryPreferred', 'nearest'])\n .optional()\n .describe('Read preference'),\n \n /**\n * Transaction timeout in milliseconds\n */\n maxCommitTimeMS: z.number().int().positive().optional().describe('Transaction commit timeout (ms)'),\n});\n\nexport type NoSQLTransactionOptions = z.infer<typeof NoSQLTransactionOptionsSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Data Import Strategy\n * Defines how the engine handles existing records.\n */\nexport const DatasetMode = z.enum([\n 'insert', // Try to insert, fail on duplicate\n 'update', // Only update found records, ignore new\n 'upsert', // Create new or Update existing (Standard)\n 'replace', // Delete ALL records in object then insert (Dangerous - use for cache tables)\n 'ignore' // Try to insert, silently skip duplicates\n]);\n\n/**\n * Dataset Schema (Seed Data / Fixtures)\n * \n * Standardized format for transporting data.\n * Used for:\n * 1. System Bootstrapping (Admin accounts, Standard Roles)\n * 2. Reference Data (Countries, Currencies)\n * 3. Demo/Test Data\n */\nexport const DatasetSchema = z.object({\n /** \n * Target Object \n * The machine name of the object to populate.\n */\n object: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Target Object Name'),\n\n /** \n * Idempotency Key (The \"Upsert\" Key)\n * The field used to check if a record already exists.\n * Best Practice: Use a natural key like 'code', 'slug', 'username' or 'external_id'.\n * Standard: '_id' (internal ID) is rarely used for portable seed data.\n */\n externalId: z.string().default('name').describe('Field match for uniqueness check'),\n\n /** \n * Import Strategy\n */\n mode: DatasetMode.default('upsert').describe('Conflict resolution strategy'),\n\n /**\n * Environment Scope\n * - 'all': Always load\n * - 'dev': Only for development/demo\n * - 'test': Only for CI/CD tests\n */\n env: z.array(z.enum(['prod', 'dev', 'test'])).default(['prod', 'dev', 'test']).describe('Applicable environments'),\n\n /** \n * The Payload\n * Array of raw JSON objects matching the Object Schema.\n */\n records: z.array(z.record(z.string(), z.unknown())).describe('Data records'),\n});\n\n/** Parsed/output type — all defaults are applied (env, mode, externalId always present) */\nexport type Dataset = z.infer<typeof DatasetSchema>;\n\n/** Input type — fields with defaults (env, mode, externalId) are optional */\nexport type DatasetInput = z.input<typeof DatasetSchema>;\n\nexport type DatasetImportMode = z.infer<typeof DatasetMode>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Document Version Schema\n * \n * Represents a single version of a document in a version-controlled system.\n * Each version is immutable and maintains its own metadata and download URL.\n * \n * @example\n * ```json\n * {\n * \"versionNumber\": 2,\n * \"createdAt\": 1704067200000,\n * \"createdBy\": \"user_123\",\n * \"size\": 2048576,\n * \"checksum\": \"a1b2c3d4e5f6\",\n * \"downloadUrl\": \"https://storage.example.com/docs/v2/file.pdf\",\n * \"isLatest\": true\n * }\n * ```\n */\nexport const DocumentVersionSchema = z.object({\n /**\n * Sequential version number (increments with each new version)\n */\n versionNumber: z.number().describe('Version number'),\n\n /**\n * Timestamp when this version was created (Unix milliseconds)\n */\n createdAt: z.number().describe('Creation timestamp'),\n\n /**\n * User ID who created this version\n */\n createdBy: z.string().describe('Creator user ID'),\n\n /**\n * File size in bytes\n */\n size: z.number().describe('File size in bytes'),\n\n /**\n * Checksum/hash of the file content (for integrity verification)\n */\n checksum: z.string().describe('File checksum'),\n\n /**\n * URL to download this specific version\n */\n downloadUrl: z.string().url().describe('Download URL'),\n\n /**\n * Whether this is the latest version\n * @default false\n */\n isLatest: z.boolean().optional().default(false).describe('Is latest version'),\n});\n\n/**\n * Document Template Schema\n * \n * Defines a reusable document template with dynamic placeholders.\n * Templates can be used to generate documents with variable content.\n * \n * @example\n * ```json\n * {\n * \"id\": \"contract-template\",\n * \"name\": \"Service Agreement\",\n * \"description\": \"Standard service agreement template\",\n * \"fileUrl\": \"https://example.com/templates/contract.docx\",\n * \"fileType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n * \"placeholders\": [\n * {\n * \"key\": \"client_name\",\n * \"label\": \"Client Name\",\n * \"type\": \"text\",\n * \"required\": true\n * },\n * {\n * \"key\": \"contract_date\",\n * \"label\": \"Contract Date\",\n * \"type\": \"date\",\n * \"required\": true\n * }\n * ]\n * }\n * ```\n */\nexport const DocumentTemplateSchema = z.object({\n /**\n * Unique identifier for the template\n */\n id: z.string().describe('Template ID'),\n\n /**\n * Human-readable name of the template\n */\n name: z.string().describe('Template name'),\n\n /**\n * Optional description of the template's purpose\n */\n description: z.string().optional().describe('Template description'),\n\n /**\n * URL to the template file\n */\n fileUrl: z.string().url().describe('Template file URL'),\n\n /**\n * MIME type of the template file\n */\n fileType: z.string().describe('File MIME type'),\n\n /**\n * List of dynamic placeholders in the template\n */\n placeholders: z.array(z.object({\n /**\n * Placeholder identifier (used in template)\n */\n key: z.string().describe('Placeholder key'),\n\n /**\n * Human-readable label for the placeholder\n */\n label: z.string().describe('Placeholder label'),\n\n /**\n * Data type of the placeholder value\n */\n type: z.enum(['text', 'number', 'date', 'image']).describe('Placeholder type'),\n\n /**\n * Whether this placeholder must be filled\n * @default false\n */\n required: z.boolean().optional().default(false).describe('Is required'),\n })).describe('Template placeholders'),\n});\n\n/**\n * E-Signature Configuration Schema\n * \n * Configuration for electronic signature workflows.\n * Supports integration with popular e-signature providers.\n * \n * @example\n * ```json\n * {\n * \"provider\": \"docusign\",\n * \"enabled\": true,\n * \"signers\": [\n * {\n * \"email\": \"client@example.com\",\n * \"name\": \"John Doe\",\n * \"role\": \"Client\",\n * \"order\": 1\n * },\n * {\n * \"email\": \"manager@example.com\",\n * \"name\": \"Jane Smith\",\n * \"role\": \"Manager\",\n * \"order\": 2\n * }\n * ],\n * \"expirationDays\": 30,\n * \"reminderDays\": 7\n * }\n * ```\n */\nexport const ESignatureConfigSchema = z.object({\n /**\n * E-signature service provider\n */\n provider: z.enum(['docusign', 'adobe-sign', 'hellosign', 'custom']).describe('E-signature provider'),\n\n /**\n * Whether e-signature is enabled for this document\n * @default false\n */\n enabled: z.boolean().optional().default(false).describe('E-signature enabled'),\n\n /**\n * List of signers in signing order\n */\n signers: z.array(z.object({\n /**\n * Signer's email address\n */\n email: z.string().email().describe('Signer email'),\n\n /**\n * Signer's full name\n */\n name: z.string().describe('Signer name'),\n\n /**\n * Signer's role in the document\n */\n role: z.string().describe('Signer role'),\n\n /**\n * Signing order (lower numbers sign first)\n */\n order: z.number().describe('Signing order'),\n })).describe('Document signers'),\n\n /**\n * Days until signature request expires\n * @default 30\n */\n expirationDays: z.number().optional().default(30).describe('Expiration days'),\n\n /**\n * Days between reminder emails\n * @default 7\n */\n reminderDays: z.number().optional().default(7).describe('Reminder interval days'),\n});\n\n/**\n * Document Schema\n * \n * Comprehensive document management protocol supporting versioning,\n * templates, e-signatures, and access control.\n * \n * @example\n * ```json\n * {\n * \"id\": \"doc_123\",\n * \"name\": \"Service Agreement 2024\",\n * \"description\": \"Annual service agreement\",\n * \"fileType\": \"application/pdf\",\n * \"fileSize\": 1048576,\n * \"category\": \"contracts\",\n * \"tags\": [\"legal\", \"2024\", \"services\"],\n * \"versioning\": {\n * \"enabled\": true,\n * \"versions\": [\n * {\n * \"versionNumber\": 1,\n * \"createdAt\": 1704067200000,\n * \"createdBy\": \"user_123\",\n * \"size\": 1048576,\n * \"checksum\": \"abc123\",\n * \"downloadUrl\": \"https://example.com/docs/v1.pdf\",\n * \"isLatest\": true\n * }\n * ],\n * \"majorVersion\": 1,\n * \"minorVersion\": 0\n * },\n * \"access\": {\n * \"isPublic\": false,\n * \"sharedWith\": [\"user_456\", \"team_789\"],\n * \"expiresAt\": 1735689600000\n * },\n * \"metadata\": {\n * \"author\": \"John Doe\",\n * \"department\": \"Legal\"\n * }\n * }\n * ```\n */\nexport const DocumentSchema = z.object({\n /**\n * Unique document identifier\n */\n id: z.string().describe('Document ID'),\n\n /**\n * Document name\n */\n name: z.string().describe('Document name'),\n\n /**\n * Optional document description\n */\n description: z.string().optional().describe('Document description'),\n\n /**\n * MIME type of the document\n */\n fileType: z.string().describe('File MIME type'),\n\n /**\n * File size in bytes\n */\n fileSize: z.number().describe('File size in bytes'),\n\n /**\n * Document category for organization\n */\n category: z.string().optional().describe('Document category'),\n\n /**\n * Tags for searchability and organization\n */\n tags: z.array(z.string()).optional().describe('Document tags'),\n\n /**\n * Version control configuration\n */\n versioning: z.object({\n /**\n * Whether versioning is enabled\n */\n enabled: z.boolean().describe('Versioning enabled'),\n\n /**\n * List of all document versions\n */\n versions: z.array(DocumentVersionSchema).describe('Version history'),\n\n /**\n * Current major version number\n */\n majorVersion: z.number().describe('Major version'),\n\n /**\n * Current minor version number\n */\n minorVersion: z.number().describe('Minor version'),\n }).optional().describe('Version control'),\n\n /**\n * Template configuration (if document is generated from template)\n */\n template: DocumentTemplateSchema.optional().describe('Document template'),\n\n /**\n * E-signature configuration\n */\n eSignature: ESignatureConfigSchema.optional().describe('E-signature config'),\n\n /**\n * Access control settings\n */\n access: z.object({\n /**\n * Whether document is publicly accessible\n * @default false\n */\n isPublic: z.boolean().optional().default(false).describe('Public access'),\n\n /**\n * List of user/team IDs with access\n */\n sharedWith: z.array(z.string()).optional().describe('Shared with'),\n\n /**\n * Timestamp when access expires (Unix milliseconds)\n */\n expiresAt: z.number().optional().describe('Access expiration'),\n }).optional().describe('Access control'),\n\n /**\n * Custom metadata fields\n */\n metadata: z.record(z.string(), z.unknown()).optional().describe('Custom metadata'),\n});\n\n// Type exports\nexport type Document = z.infer<typeof DocumentSchema>;\nexport type DocumentVersion = z.infer<typeof DocumentVersionSchema>;\nexport type DocumentTemplate = z.infer<typeof DocumentTemplateSchema>;\nexport type ESignatureConfig = z.infer<typeof ESignatureConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Base Field Mapping Protocol\n * \n * Shared by: ETL, Sync, Connector, External Lookup\n * \n * This module provides the canonical field mapping schema used across\n * ObjectStack for data transformation and synchronization.\n * \n * **Use Cases:**\n * - ETL pipelines (data/mapping.zod.ts)\n * - Data synchronization (automation/sync.zod.ts)\n * - Integration connectors (integration/connector.zod.ts)\n * - External lookups (data/external-lookup.zod.ts)\n * \n * @example Basic field mapping\n * ```typescript\n * const mapping: FieldMapping = {\n * source: 'external_user_id',\n * target: 'user_id',\n * };\n * ```\n * \n * @example With transformation\n * ```typescript\n * const mapping: FieldMapping = {\n * source: 'user_name',\n * target: 'name',\n * transform: { type: 'cast', targetType: 'string' },\n * defaultValue: 'Unknown'\n * };\n * ```\n */\n\n/**\n * Transform Type Schema\n * \n * Defines the type of transformation to apply to a field value.\n * Implementations can extend this for domain-specific transforms.\n */\nexport const TransformTypeSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('constant'),\n value: z.unknown().describe('Constant value to use'),\n }).describe('Set a constant value'),\n \n z.object({\n type: z.literal('cast'),\n targetType: z.enum(['string', 'number', 'boolean', 'date']).describe('Target data type'),\n }).describe('Cast to a specific data type'),\n \n z.object({\n type: z.literal('lookup'),\n table: z.string().describe('Lookup table name'),\n keyField: z.string().describe('Field to match on'),\n valueField: z.string().describe('Field to retrieve'),\n }).describe('Lookup value from another table'),\n \n z.object({\n type: z.literal('javascript'),\n expression: z.string().describe('JavaScript expression (e.g., \"value.toUpperCase()\")'),\n }).describe('Custom JavaScript transformation'),\n \n z.object({\n type: z.literal('map'),\n mappings: z.record(z.string(), z.unknown()).describe('Value mappings (e.g., {\"Active\": \"active\"})'),\n }).describe('Map values using a dictionary'),\n]);\n\nexport type TransformType = z.infer<typeof TransformTypeSchema>;\n\n/**\n * Field Mapping Schema\n * \n * Base schema for mapping fields between source and target systems.\n * \n * **NAMING CONVENTION:**\n * - source: Field name in the source system\n * - target: Field name in the target system (should be snake_case for ObjectStack)\n * \n * @example\n * ```typescript\n * {\n * source: 'FirstName',\n * target: 'first_name',\n * transform: { type: 'cast', targetType: 'string' },\n * defaultValue: ''\n * }\n * ```\n */\nexport const FieldMappingSchema = z.object({\n /**\n * Source field name\n */\n source: z.string().describe('Source field name'),\n \n /**\n * Target field name (should be snake_case for ObjectStack)\n */\n target: z.string().describe('Target field name'),\n \n /**\n * Transformation to apply\n */\n transform: TransformTypeSchema.optional().describe('Transformation to apply'),\n \n /**\n * Default value if source is null/undefined\n */\n defaultValue: z.unknown().optional().describe('Default if source is null/undefined'),\n});\n\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldMappingSchema as BaseFieldMappingSchema } from '../shared/mapping.zod';\n\n/**\n * External Data Source Schema\n * \n * Configuration for connecting to external data systems.\n * Similar to Salesforce External Objects for real-time data integration.\n * \n * @example\n * ```json\n * {\n * \"id\": \"salesforce-accounts\",\n * \"name\": \"Salesforce Account Data\",\n * \"type\": \"rest-api\",\n * \"endpoint\": \"https://api.salesforce.com/services/data/v58.0\",\n * \"authentication\": {\n * \"type\": \"oauth2\",\n * \"config\": {\n * \"clientId\": \"...\",\n * \"clientSecret\": \"...\",\n * \"tokenUrl\": \"https://login.salesforce.com/services/oauth2/token\"\n * }\n * }\n * }\n * ```\n */\nexport const ExternalDataSourceSchema = z.object({\n /**\n * Unique identifier for the external data source\n */\n id: z.string().describe('Data source ID'),\n\n /**\n * Human-readable name of the data source\n */\n name: z.string().describe('Data source name'),\n\n /**\n * Protocol type for connecting to the data source\n */\n type: z.enum(['odata', 'rest-api', 'graphql', 'custom']).describe('Protocol type'),\n\n /**\n * Base URL endpoint for the external system\n */\n endpoint: z.string().url().describe('API endpoint URL'),\n\n /**\n * Authentication configuration\n */\n authentication: z.object({\n /**\n * Authentication method\n */\n type: z.enum(['oauth2', 'api-key', 'basic', 'none']).describe('Auth type'),\n\n /**\n * Authentication-specific configuration\n * Structure varies based on auth type\n */\n config: z.record(z.string(), z.unknown()).describe('Auth configuration'),\n }).describe('Authentication'),\n});\n\n/**\n * Field Mapping Schema for External Lookups\n * \n * Extends the base field mapping with external lookup specific features.\n * Uses the canonical field mapping protocol from shared/mapping.zod.ts.\n * \n * @see {@link BaseFieldMappingSchema} for the base field mapping schema\n * \n * @example\n * ```json\n * {\n * \"source\": \"AccountName\",\n * \"target\": \"name\",\n * \"readonly\": true\n * }\n * ```\n */\nexport const ExternalFieldMappingSchema = BaseFieldMappingSchema.extend({\n /**\n * Field data type\n */\n type: z.string().optional().describe('Field type'),\n\n /**\n * Whether the field is read-only\n * @default true\n */\n readonly: z.boolean().optional().default(true).describe('Read-only field'),\n});\n\n/**\n * External Lookup Schema\n * \n * Real-time data lookup protocol for external systems.\n * Enables querying external data sources without replication.\n * Inspired by Salesforce External Objects and OData protocols.\n * \n * @example\n * ```json\n * {\n * \"fieldName\": \"external_account\",\n * \"dataSource\": {\n * \"id\": \"salesforce-api\",\n * \"name\": \"Salesforce\",\n * \"type\": \"rest-api\",\n * \"endpoint\": \"https://api.salesforce.com/services/data/v58.0\",\n * \"authentication\": {\n * \"type\": \"oauth2\",\n * \"config\": {\"clientId\": \"...\"}\n * }\n * },\n * \"query\": {\n * \"endpoint\": \"/sobjects/Account\",\n * \"method\": \"GET\",\n * \"parameters\": {\"limit\": 100}\n * },\n * \"fieldMappings\": [\n * {\n * \"externalField\": \"Name\",\n * \"localField\": \"account_name\",\n * \"type\": \"text\",\n * \"readonly\": true\n * }\n * ],\n * \"caching\": {\n * \"enabled\": true,\n * \"ttl\": 300,\n * \"strategy\": \"ttl\"\n * },\n * \"fallback\": {\n * \"enabled\": true,\n * \"showError\": true\n * },\n * \"rateLimit\": {\n * \"requestsPerSecond\": 10,\n * \"burstSize\": 20\n * }\n * }\n * ```\n */\nexport const ExternalLookupSchema = z.object({\n /**\n * Name of the field that uses external lookup\n */\n fieldName: z.string().describe('Field name'),\n\n /**\n * External data source configuration\n */\n dataSource: ExternalDataSourceSchema.describe('External data source'),\n\n /**\n * Query configuration for fetching external data\n */\n query: z.object({\n /**\n * API endpoint path (relative to base endpoint)\n */\n endpoint: z.string().describe('Query endpoint path'),\n\n /**\n * HTTP method for the query\n * @default 'GET'\n */\n method: z.enum(['GET', 'POST']).optional().default('GET').describe('HTTP method'),\n\n /**\n * Query parameters or request body\n */\n parameters: z.record(z.string(), z.unknown()).optional().describe('Query parameters'),\n }).describe('Query configuration'),\n\n /**\n * Mapping between external and local fields\n */\n fieldMappings: z.array(ExternalFieldMappingSchema).describe('Field mappings'),\n\n /**\n * Cache configuration for external data\n */\n caching: z.object({\n /**\n * Whether caching is enabled\n * @default true\n */\n enabled: z.boolean().optional().default(true).describe('Cache enabled'),\n\n /**\n * Time-to-live in seconds\n * @default 300\n */\n ttl: z.number().optional().default(300).describe('Cache TTL (seconds)'),\n\n /**\n * Cache eviction strategy\n * @default 'ttl'\n */\n strategy: z.enum(['lru', 'lfu', 'ttl']).optional().default('ttl').describe('Cache strategy'),\n }).optional().describe('Caching configuration'),\n\n /**\n * Fallback behavior when external system is unavailable\n */\n fallback: z.object({\n /**\n * Whether fallback is enabled\n * @default true\n */\n enabled: z.boolean().optional().default(true).describe('Fallback enabled'),\n\n /**\n * Default value to use when external system fails\n */\n defaultValue: z.unknown().optional().describe('Default fallback value'),\n\n /**\n * Whether to show error message to user\n * @default true\n */\n showError: z.boolean().optional().default(true).describe('Show error to user'),\n }).optional().describe('Fallback configuration'),\n\n /**\n * Rate limiting to prevent overwhelming external system\n */\n rateLimit: z.object({\n /**\n * Maximum requests per second\n */\n requestsPerSecond: z.number().describe('Requests per second limit'),\n\n /**\n * Burst size for handling spikes\n */\n burstSize: z.number().optional().describe('Burst size'),\n }).optional().describe('Rate limiting'),\n\n /**\n * Retry configuration with exponential backoff\n *\n * @example\n * ```json\n * {\n * \"maxRetries\": 3,\n * \"initialDelayMs\": 1000,\n * \"maxDelayMs\": 30000,\n * \"backoffMultiplier\": 2,\n * \"retryableStatusCodes\": [429, 500, 502, 503, 504]\n * }\n * ```\n */\n retry: z.object({\n /** Maximum number of retry attempts */\n maxRetries: z.number().min(0).default(3).describe('Maximum retry attempts'),\n /** Initial delay before first retry (ms) */\n initialDelayMs: z.number().default(1000).describe('Initial retry delay in milliseconds'),\n /** Maximum delay between retries (ms) */\n maxDelayMs: z.number().default(30000).describe('Maximum retry delay in milliseconds'),\n /** Backoff multiplier for exponential backoff */\n backoffMultiplier: z.number().default(2).describe('Exponential backoff multiplier'),\n /** HTTP status codes that trigger a retry */\n retryableStatusCodes: z.array(z.number()).default([429, 500, 502, 503, 504])\n .describe('HTTP status codes that are retryable'),\n }).optional().describe('Retry configuration with exponential backoff'),\n\n /**\n * Request/response transformation pipeline\n *\n * Allows transforming request parameters and response data\n * before they are processed by the external lookup system.\n */\n transform: z.object({\n /** Transform request parameters before sending */\n request: z.object({\n /** Header transformations (key-value additions) */\n headers: z.record(z.string(), z.string()).optional().describe('Additional request headers'),\n /** Query parameter transformations */\n queryParams: z.record(z.string(), z.string()).optional().describe('Additional query parameters'),\n }).optional().describe('Request transformation'),\n /** Transform response data after receiving */\n response: z.object({\n /** JSONPath expression to extract data from response */\n dataPath: z.string().optional().describe('JSONPath to extract data (e.g., \"$.data.results\")'),\n /** JSONPath expression to extract total count for pagination */\n totalPath: z.string().optional().describe('JSONPath to extract total count (e.g., \"$.meta.total\")'),\n }).optional().describe('Response transformation'),\n }).optional().describe('Request/response transformation pipeline'),\n\n /** Pagination support for external data sources */\n pagination: z.object({\n /** Pagination type */\n type: z.enum(['offset', 'cursor', 'page']).default('offset').describe('Pagination type'),\n /** Page size */\n pageSize: z.number().default(100).describe('Items per page'),\n /** Maximum pages to fetch */\n maxPages: z.number().optional().describe('Maximum number of pages to fetch'),\n }).optional().describe('Pagination configuration for external data'),\n});\n\n// Type exports\nexport type ExternalLookup = z.infer<typeof ExternalLookupSchema>;\nexport type ExternalDataSource = z.infer<typeof ExternalDataSourceSchema>;\nexport type ExternalFieldMapping = z.infer<typeof ExternalFieldMappingSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n\n/**\n * Driver Identifier\n * Can be a built-in driver or a plugin-contributed driver (e.g., \"com.vendor.snowflake\").\n */\nexport const DriverType = z.string().describe('Underlying driver identifier');\n\n/**\n * Driver Definition Schema\n * Metadata describing a Database Driver.\n * Plugins use this to register new connectivity options.\n */\nexport const DriverDefinitionSchema = z.object({\n id: z.string().describe('Unique driver identifier (e.g. \"postgres\")'),\n label: z.string().describe('Display label (e.g. \"PostgreSQL\")'),\n description: z.string().optional(),\n icon: z.string().optional(),\n \n /**\n * Configuration Schema (JSON Schema)\n * Describes the structure of the `config` object needed for this driver.\n * Used by the UI to generate the connection form.\n */\n configSchema: z.record(z.string(), z.unknown()).describe('JSON Schema for connection configuration'),\n \n /**\n * Default Capabilities\n * What this driver supports out-of-the-box.\n */\n capabilities: z.lazy(() => DatasourceCapabilities).optional(),\n});\n\n/**\n * Datasource Capabilities Schema\n * Declares what this datasource naturally supports.\n * The ObjectQL engine uses this to determine what logic to push down\n * and what to compute in memory.\n */\nexport const DatasourceCapabilities = z.object({\n // ============================================================================\n // Transaction & Connection Management\n // ============================================================================\n \n /** Can handle ACID transactions? */\n transactions: z.boolean().default(false),\n \n // ============================================================================\n // Query Operations\n // ============================================================================\n \n /** Can execute WHERE clause filters natively? */\n queryFilters: z.boolean().default(false),\n \n /** Can perform aggregation (group by, sum, avg)? */\n queryAggregations: z.boolean().default(false),\n \n /** Can perform ORDER BY sorting? */\n querySorting: z.boolean().default(false),\n \n /** Can perform LIMIT/OFFSET pagination? */\n queryPagination: z.boolean().default(false),\n \n /** Can perform window functions? */\n queryWindowFunctions: z.boolean().default(false),\n \n /** Can perform subqueries? */\n querySubqueries: z.boolean().default(false),\n \n /** Can execute SQL-like joins natively? */\n joins: z.boolean().default(false),\n \n // ============================================================================\n // Advanced Features\n // ============================================================================\n \n /** Can perform full-text search? */\n fullTextSearch: z.boolean().default(false),\n \n /** Is read-only? */\n readOnly: z.boolean().default(false),\n \n /** Is scheme-less (needs schema inference)? */\n dynamicSchema: z.boolean().default(false),\n});\n\n/**\n * Datasource Schema\n * Represents a connection to an external data store.\n */\nexport const DatasourceSchema = z.object({\n /** Machine Name */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique datasource identifier'),\n \n /** Human Label */\n label: z.string().optional().describe('Display label'),\n \n /** Driver */\n driver: DriverType.describe('Underlying driver type'),\n \n /** \n * Connection Configuration \n * Specific to the driver (e.g., host, port, user, password, bucket, etc.)\n * Stored securely (passwords usually interpolated from ENV).\n */\n config: z.record(z.string(), z.unknown()).describe('Driver specific configuration'),\n \n /**\n * Connection Pool Configuration\n * Standard connection pooling settings.\n */\n pool: z.object({\n min: z.number().default(0).describe('Minimum connections'),\n max: z.number().default(10).describe('Maximum connections'),\n idleTimeoutMillis: z.number().default(30000).describe('Idle timeout'),\n connectionTimeoutMillis: z.number().default(3000).describe('Connection establishment timeout'),\n }).optional().describe('Connection pool settings'),\n\n /**\n * Read Replicas\n * Optional list of duplicate configurations for read-only operations.\n * Useful for scaling read throughput.\n */\n readReplicas: z.array(z.record(z.string(), z.unknown())).optional().describe('Read-only replica configurations'),\n\n /**\n * Capability Overrides\n * Manually override what the driver claims to support.\n */\n capabilities: DatasourceCapabilities.optional().describe('Capability overrides'),\n \n /** Health Check */\n healthCheck: z.object({\n enabled: z.boolean().default(true).describe('Enable health check endpoint'),\n intervalMs: z.number().default(30000).describe('Health check interval in milliseconds'),\n timeoutMs: z.number().default(5000).describe('Health check timeout in milliseconds'),\n }).optional().describe('Datasource health check configuration'),\n\n /** SSL/TLS Configuration */\n ssl: z.object({\n enabled: z.boolean().default(false).describe('Enable SSL/TLS for database connection'),\n rejectUnauthorized: z.boolean().default(true).describe('Reject connections with invalid/self-signed certificates'),\n ca: z.string().optional().describe('CA certificate (PEM format or path to file)'),\n cert: z.string().optional().describe('Client certificate (PEM format or path to file)'),\n key: z.string().optional().describe('Client private key (PEM format or path to file)'),\n }).optional().describe('SSL/TLS configuration for secure database connections'),\n\n /** Retry Policy */\n retryPolicy: z.object({\n maxRetries: z.number().default(3).describe('Maximum number of retry attempts'),\n baseDelayMs: z.number().default(1000).describe('Base delay between retries in milliseconds'),\n maxDelayMs: z.number().default(30000).describe('Maximum delay between retries in milliseconds'),\n backoffMultiplier: z.number().default(2).describe('Exponential backoff multiplier'),\n }).optional().describe('Connection retry policy for transient failures'),\n\n /** Description */\n description: z.string().optional().describe('Internal description'),\n \n /** Is enabled? */\n active: z.boolean().default(true).describe('Is datasource enabled'),\n});\n\nexport type Datasource = z.infer<typeof DatasourceSchema>;\nexport type DatasourceCapabilitiesType = z.infer<typeof DatasourceCapabilities>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Analytics/Semantic Layer Protocol\n * \n * Defines the \"Business Logic\" for data analysis.\n * Inspired by Cube.dev, LookML, and dbt MetricFlow.\n * \n * This layer decouples the \"Physical Data\" (Tables/Columns) from the \n * \"Business Data\" (Metrics/Dimensions).\n */\n\n/**\n * Aggregation Metric Type\n * The mathematical operation to perform on a metric.\n */\nexport const AggregationMetricType = z.enum([\n 'count', \n 'sum', \n 'avg', \n 'min', \n 'max', \n 'count_distinct', \n 'number', // Custom SQL expression returning a number\n 'string', // Custom SQL expression returning a string\n 'boolean' // Custom SQL expression returning a boolean\n]);\n\n/**\n * Dimension Type\n * The nature of the grouping field.\n */\nexport const DimensionType = z.enum([\n 'string', \n 'number', \n 'boolean', \n 'time', \n 'geo'\n]);\n\n/**\n * Time Interval for Time Dimensions\n */\nexport const TimeUpdateInterval = z.enum([\n 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'\n]);\n\n/**\n * Metric Schema\n * A quantitative measurement (e.g., \"Total Revenue\", \"Average Order Value\").\n */\nexport const MetricSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique metric ID'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n \n type: AggregationMetricType,\n \n /** Source Calculation */\n sql: z.string().describe('SQL expression or field reference'),\n \n /** Filtering for this specific metric (e.g. \"Revenue from Premium Users\") */\n filters: z.array(z.object({\n sql: z.string()\n })).optional(),\n \n /** Format for display (e.g. \"currency\", \"percent\") */\n format: z.string().optional(),\n});\n\n/**\n * Dimension Schema\n * A categorical attribute to group by (e.g., \"Product Category\", \"Order Date\").\n */\nexport const DimensionSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique dimension ID'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n \n type: DimensionType,\n \n /** Source Column */\n sql: z.string().describe('SQL expression or column reference'),\n \n /** For Time Dimensions: Supported Granularities */\n granularities: z.array(TimeUpdateInterval).optional(),\n});\n\n/**\n * Join Schema\n * Defines how this cube relates to others.\n */\nexport const CubeJoinSchema = z.object({\n name: z.string().describe('Target cube name'),\n relationship: z.enum(['one_to_one', 'one_to_many', 'many_to_one']).default('many_to_one'),\n sql: z.string().describe('Join condition (ON clause)'),\n});\n\n/**\n * Cube Schema\n * A logical data model representing a business entity or process for analysis.\n * Maps physical tables to business metrics and dimensions.\n */\nexport const CubeSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Cube name (snake_case)'),\n title: z.string().optional(),\n description: z.string().optional(),\n \n /** Physical Data Source */\n sql: z.string().describe('Base SQL statement or Table Name'),\n \n /** Semantic Definitions */\n measures: z.record(z.string(), MetricSchema).describe('Quantitative metrics'),\n dimensions: z.record(z.string(), DimensionSchema).describe('Qualitative attributes'),\n \n /** Relationships */\n joins: z.record(z.string(), CubeJoinSchema).optional(),\n \n /** Pre-aggregations / Caching */\n refreshKey: z.object({\n every: z.string().optional(), // e.g. \"1 hour\"\n sql: z.string().optional(), // SQL to check for data changes\n }).optional(),\n \n /** Access Control */\n public: z.boolean().default(false),\n});\n\n/**\n * Analytics Query Schema\n * The request format for the Analytics API.\n */\nexport const AnalyticsQuerySchema = z.object({\n cube: z.string().optional().describe('Target cube name (optional when provided externally, e.g. in API request wrapper)'),\n measures: z.array(z.string()).describe('List of metrics to calculate'),\n dimensions: z.array(z.string()).optional().describe('List of dimensions to group by'),\n \n filters: z.array(z.object({\n member: z.string().describe('Dimension or Measure'),\n operator: z.enum(['equals', 'notEquals', 'contains', 'notContains', 'gt', 'gte', 'lt', 'lte', 'set', 'notSet', 'inDateRange']),\n values: z.array(z.string()).optional(),\n })).optional(),\n \n timeDimensions: z.array(z.object({\n dimension: z.string(),\n granularity: TimeUpdateInterval.optional(),\n dateRange: z.union([\n z.string(), // \"Last 7 days\"\n z.array(z.string()) // [\"2023-01-01\", \"2023-01-31\"]\n ]).optional(),\n })).optional(),\n \n order: z.record(z.string(), z.enum(['asc', 'desc'])).optional(),\n \n limit: z.number().optional(),\n offset: z.number().optional(),\n \n timezone: z.string().optional().default('UTC'),\n});\n\nexport type Metric = z.infer<typeof MetricSchema>;\nexport type Dimension = z.infer<typeof DimensionSchema>;\nexport type CubeJoin = z.infer<typeof CubeJoinSchema>;\nexport type Cube = z.infer<typeof CubeSchema>;\nexport type AnalyticsQuery = z.infer<typeof AnalyticsQuerySchema>;\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 */\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 = 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 = 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 = 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 = 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 = 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';\n\n/**\n * Subscription Event Type\n * Event types that can be subscribed to for record-level notifications.\n */\nexport const SubscriptionEventType = z.enum([\n 'comment',\n 'mention',\n 'field_change',\n 'task',\n 'approval',\n 'all',\n]);\nexport type SubscriptionEventType = z.infer<typeof SubscriptionEventType>;\n\n/**\n * Notification Channel\n * Delivery channels for record subscription notifications.\n */\nexport const NotificationChannel = z.enum([\n 'in_app',\n 'email',\n 'push',\n 'slack',\n]);\nexport type NotificationChannel = z.infer<typeof NotificationChannel>;\n\n/**\n * Record Subscription Schema\n * Defines a user's subscription to record-level notifications.\n * Enables Airtable-style bell icon for record change notifications.\n */\nexport const RecordSubscriptionSchema = z.object({\n /** Target */\n object: z.string().describe('Object name'),\n recordId: z.string().describe('Record ID'),\n\n /** Subscriber */\n userId: z.string().describe('Subscribing user ID'),\n\n /** Events to subscribe to */\n events: z.array(SubscriptionEventType)\n .default(['all'])\n .describe('Event types to receive notifications for'),\n\n /** Notification channels */\n channels: z.array(NotificationChannel)\n .default(['in_app'])\n .describe('Notification delivery channels'),\n\n /** Active */\n active: z.boolean().default(true).describe('Whether the subscription is active'),\n\n /** Timestamps */\n createdAt: z.string().datetime().describe('Subscription creation timestamp'),\n});\nexport type RecordSubscription = z.infer<typeof RecordSubscriptionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Turso Multi-Tenant Router Schema\n *\n * Defines the configuration for Turso DB-per-Tenant architectures where each\n * tenant receives an independent Turso/libSQL database. The router resolves\n * the correct database URL and auth token per request based on the current\n * tenant context.\n *\n * Architecture: Shared Compute + Isolated Data\n * - Serverless functions are shared across tenants\n * - Each tenant has a physically isolated Turso database\n * - Turso Platform API manages database lifecycle (create/delete/suspend)\n *\n * @see https://docs.turso.tech/features/multi-db-schemas\n */\n\n// ==========================================================================\n// 1. Tenant Resolver Strategy\n// ==========================================================================\n\n/**\n * Strategy for resolving which tenant database to connect to.\n */\nexport const TenantResolverStrategySchema = z.enum([\n 'header', // Resolve from X-Tenant-ID request header\n 'subdomain', // Resolve from subdomain (e.g., acme.app.com → acme)\n 'path', // Resolve from URL path segment (e.g., /api/acme/...)\n 'token', // Resolve from JWT claim (e.g., tenant_id in access token)\n 'lookup', // Resolve from control-plane database lookup\n]).describe('Strategy for resolving tenant identity from request context');\n\nexport type TenantResolverStrategy = z.infer<typeof TenantResolverStrategySchema>;\n\n// ==========================================================================\n// 2. Turso Group Configuration\n// ==========================================================================\n\n/**\n * Turso Database Group Configuration.\n * Groups allow databases to share schema and be managed as a unit.\n * All databases in a group are deployed to the same set of locations.\n *\n * @see https://docs.turso.tech/features/multi-db-schemas\n */\nexport const TursoGroupSchema = z.object({\n /**\n * Group name identifier.\n * Used to reference the group when creating new tenant databases.\n */\n name: z.string().min(1).describe('Turso database group name'),\n\n /**\n * Primary location for the group (Turso region code).\n * Example: 'iad' (US East), 'lhr' (London), 'nrt' (Tokyo)\n */\n primaryLocation: z.string().min(2).describe('Primary Turso region code (e.g., iad, lhr, nrt)'),\n\n /**\n * Additional replica locations for read performance.\n * Databases in this group will have read replicas in these regions.\n */\n replicaLocations: z.array(z.string().min(2)).default([]).describe('Additional replica region codes'),\n\n /**\n * Schema database name within the group.\n * When using multi-db schemas, this is the \"parent\" database\n * whose schema is shared by all child (tenant) databases.\n */\n schemaDatabase: z.string().optional().describe('Schema database name for multi-db schemas'),\n}).describe('Turso database group configuration');\n\nexport type TursoGroup = z.infer<typeof TursoGroupSchema>;\n\n// ==========================================================================\n// 3. Tenant Database Lifecycle Hooks\n// ==========================================================================\n\n/**\n * Database Lifecycle Hook Schema.\n * Defines what happens at each tenant lifecycle event.\n */\nexport const TenantDatabaseLifecycleSchema = z.object({\n /**\n * Hook executed when a new tenant is created.\n * Defines how the tenant database is provisioned.\n */\n onTenantCreate: z.object({\n /** Whether to automatically create a Turso database */\n autoCreate: z.boolean().default(true).describe('Auto-create database on tenant registration'),\n\n /** Database group to create the database in */\n group: z.string().optional().describe('Turso group for the new database'),\n\n /** Whether to apply schema from the group schema database */\n applyGroupSchema: z.boolean().default(true).describe('Apply shared schema from group'),\n\n /** Seed data to populate on creation */\n seedData: z.boolean().default(false).describe('Populate seed data on creation'),\n }).describe('Tenant creation hook'),\n\n /**\n * Hook executed when a tenant is deleted/destroyed.\n */\n onTenantDelete: z.object({\n /** Whether to destroy the database immediately or schedule for deletion */\n immediate: z.boolean().default(false).describe('Destroy database immediately'),\n\n /** Grace period in hours before permanent deletion (soft-delete) */\n gracePeriodHours: z.number().int().min(0).default(72).describe('Grace period before permanent deletion'),\n\n /** Whether to create a final backup before deletion */\n createBackup: z.boolean().default(true).describe('Create backup before deletion'),\n }).describe('Tenant deletion hook'),\n\n /**\n * Hook executed when a tenant is suspended (e.g., unpaid, policy violation).\n */\n onTenantSuspend: z.object({\n /** Whether to revoke auth tokens on suspension */\n revokeTokens: z.boolean().default(true).describe('Revoke auth tokens on suspension'),\n\n /** Whether to set database to read-only mode */\n readOnly: z.boolean().default(true).describe('Set database to read-only on suspension'),\n }).describe('Tenant suspension hook'),\n}).describe('Tenant database lifecycle hooks');\n\nexport type TenantDatabaseLifecycle = z.infer<typeof TenantDatabaseLifecycleSchema>;\n\n// ==========================================================================\n// 4. Multi-Tenant Router Configuration\n// ==========================================================================\n\n/**\n * Turso Multi-Tenant Configuration Schema.\n *\n * Configures the DB-per-Tenant router that resolves the correct Turso\n * database for each request. Works with the Turso Platform API to manage\n * database lifecycle.\n *\n * @example\n * ```ts\n * const config = TursoMultiTenantConfigSchema.parse({\n * organizationSlug: 'myorg',\n * urlTemplate: 'libsql://{tenant_id}-myorg.turso.io',\n * groupAuthToken: process.env.TURSO_GROUP_AUTH_TOKEN,\n * tenantResolverStrategy: 'token',\n * group: {\n * name: 'production',\n * primaryLocation: 'iad',\n * replicaLocations: ['lhr', 'nrt'],\n * schemaDatabase: 'schema-db',\n * },\n * lifecycle: {\n * onTenantCreate: { autoCreate: true, applyGroupSchema: true },\n * onTenantDelete: { gracePeriodHours: 168 },\n * onTenantSuspend: { revokeTokens: true },\n * },\n * });\n * ```\n */\nexport const TursoMultiTenantConfigSchema = z.object({\n /**\n * Turso organization slug.\n * Used for Platform API calls and URL construction.\n */\n organizationSlug: z.string().min(1).describe('Turso organization slug'),\n\n /**\n * URL template for constructing tenant database URLs.\n * Use `{tenant_id}` as placeholder for the tenant identifier.\n *\n * Example: 'libsql://{tenant_id}-myorg.turso.io'\n */\n urlTemplate: z.string().min(1).describe('URL template with {tenant_id} placeholder'),\n\n /**\n * Group-level auth token for Turso Platform API operations.\n * Used for database creation, deletion, and management.\n * This token has full access to all databases in the group.\n */\n groupAuthToken: z.string().min(1).describe('Group-level auth token for platform operations'),\n\n /**\n * Strategy for resolving tenant identity from the request context.\n */\n tenantResolverStrategy: TenantResolverStrategySchema.default('token'),\n\n /**\n * Turso database group configuration.\n */\n group: TursoGroupSchema.optional().describe('Database group configuration'),\n\n /**\n * Lifecycle hooks for tenant database management.\n */\n lifecycle: TenantDatabaseLifecycleSchema.optional().describe('Lifecycle hooks'),\n\n /**\n * Maximum number of cached tenant database connections.\n * Connections are evicted using LRU strategy when the limit is reached.\n */\n maxCachedConnections: z.number().int().min(1).default(100).describe('Max cached tenant connections (LRU)'),\n\n /**\n * Connection cache TTL in seconds.\n * Cached connections are refreshed after this period.\n */\n connectionCacheTTL: z.number().int().min(0).default(300).describe('Connection cache TTL in seconds'),\n}).describe('Turso multi-tenant router configuration');\n\nexport type TursoMultiTenantConfig = z.infer<typeof TursoMultiTenantConfigSchema>;\n"]}