@objectstack/spec 4.1.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/index.d.mts +41 -1
- package/dist/ai/index.d.ts +41 -1
- package/dist/ai/index.js +24 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/index.mjs +24 -0
- package/dist/ai/index.mjs.map +1 -1
- package/dist/api/index.d.mts +17 -1
- package/dist/api/index.d.ts +17 -1
- package/dist/api/index.js +45 -3
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +45 -3
- package/dist/api/index.mjs.map +1 -1
- package/dist/{app-install.zod-DinLO6YM.d.mts → app-install.zod-DQMghJne.d.mts} +12 -0
- package/dist/{app-install.zod-DinLO6YM.d.ts → app-install.zod-DQMghJne.d.ts} +12 -0
- package/dist/cloud/index.d.mts +15 -1
- package/dist/cloud/index.d.ts +15 -1
- package/dist/cloud/index.js +37 -1
- package/dist/cloud/index.js.map +1 -1
- package/dist/cloud/index.mjs +37 -1
- package/dist/cloud/index.mjs.map +1 -1
- package/dist/contracts/index.d.mts +2 -2
- package/dist/contracts/index.d.ts +2 -2
- package/dist/data/index.d.mts +1 -1
- package/dist/data/index.d.ts +1 -1
- package/dist/data/index.js +24 -0
- package/dist/data/index.js.map +1 -1
- package/dist/data/index.mjs +24 -0
- package/dist/data/index.mjs.map +1 -1
- package/dist/index.d.mts +29 -1
- package/dist/index.d.ts +29 -1
- package/dist/index.js +37 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +37 -1
- package/dist/index.mjs.map +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/index.mjs +1 -1
- package/dist/kernel/index.mjs.map +1 -1
- package/dist/{object.zod-CL0g64iK.d.mts → object.zod-C1LgUxxT.d.mts} +10 -0
- package/dist/{object.zod-Db-5y0N9.d.ts → object.zod-EVK2XtHP.d.ts} +10 -0
- package/dist/system/index.d.mts +43 -3
- package/dist/system/index.d.ts +43 -3
- package/dist/system/index.js +51 -5
- package/dist/system/index.js.map +1 -1
- package/dist/system/index.mjs +51 -5
- package/dist/system/index.mjs.map +1 -1
- package/json-schema/ai/AICodeReviewResult.json +2 -2
- package/json-schema/ai/AIKnowledge.json +2 -2
- package/json-schema/ai/AIModelConfig.json +2 -2
- package/json-schema/ai/AIOperationCost.json +2 -2
- package/json-schema/ai/AIOrchestrationExecutionResult.json +2 -2
- package/json-schema/ai/AIOrchestrationTrigger.json +2 -2
- package/json-schema/ai/AITaskType.json +2 -2
- package/json-schema/ai/AITool.json +2 -2
- package/json-schema/ai/Agent.json +2 -2
- package/json-schema/ai/AgentActionResult.json +2 -2
- package/json-schema/ai/AgentActionSequenceResult.json +2 -2
- package/json-schema/ai/AgentCommunicationProtocol.json +2 -2
- package/json-schema/ai/AgentGroupMember.json +2 -2
- package/json-schema/ai/AgentGroupRole.json +2 -2
- package/json-schema/ai/AnomalyDetectionConfig.json +2 -2
- package/json-schema/ai/AutoScalingPolicy.json +2 -2
- package/json-schema/ai/BatchAIOrchestrationExecution.json +2 -2
- package/json-schema/ai/BillingPeriod.json +2 -2
- package/json-schema/ai/BudgetLimit.json +2 -2
- package/json-schema/ai/BudgetStatus.json +2 -2
- package/json-schema/ai/BudgetType.json +2 -2
- package/json-schema/ai/CICDPipelineConfig.json +2 -2
- package/json-schema/ai/ChunkingStrategy.json +2 -2
- package/json-schema/ai/CodeContent.json +2 -2
- package/json-schema/ai/CodeGenerationConfig.json +2 -2
- package/json-schema/ai/CodeGenerationRequest.json +2 -2
- package/json-schema/ai/CodeGenerationTarget.json +2 -2
- package/json-schema/ai/ComponentActionParams.json +2 -2
- package/json-schema/ai/ComponentActionType.json +2 -2
- package/json-schema/ai/ComponentAgentAction.json +2 -2
- package/json-schema/ai/ConversationAnalytics.json +2 -2
- package/json-schema/ai/ConversationContext.json +2 -2
- package/json-schema/ai/ConversationMessage.json +2 -2
- package/json-schema/ai/ConversationSession.json +2 -2
- package/json-schema/ai/ConversationSummary.json +2 -2
- package/json-schema/ai/CostAlert.json +2 -2
- package/json-schema/ai/CostAlertType.json +2 -2
- package/json-schema/ai/CostAnalytics.json +2 -2
- package/json-schema/ai/CostBreakdownDimension.json +2 -2
- package/json-schema/ai/CostBreakdownEntry.json +2 -2
- package/json-schema/ai/CostEntry.json +2 -2
- package/json-schema/ai/CostMetricType.json +2 -2
- package/json-schema/ai/CostOptimizationRecommendation.json +2 -2
- package/json-schema/ai/CostQueryFilters.json +2 -2
- package/json-schema/ai/CostReport.json +2 -2
- package/json-schema/ai/DataActionParams.json +2 -2
- package/json-schema/ai/DataActionType.json +2 -2
- package/json-schema/ai/DataAgentAction.json +2 -2
- package/json-schema/ai/DeploymentStrategy.json +2 -2
- package/json-schema/ai/DevOpsTool.json +2 -2
- package/json-schema/ai/DevelopmentConfig.json +2 -2
- package/json-schema/ai/DocumentChunk.json +2 -2
- package/json-schema/ai/DocumentLoaderConfig.json +2 -2
- package/json-schema/ai/DocumentMetadata.json +2 -2
- package/json-schema/ai/EmbeddingModel.json +2 -2
- package/json-schema/ai/Entity.json +2 -2
- package/json-schema/ai/EvaluationMetrics.json +2 -2
- package/json-schema/ai/FieldSynonymConfig.json +2 -2
- package/json-schema/ai/FileContent.json +2 -2
- package/json-schema/ai/FilterExpression.json +2 -2
- package/json-schema/ai/FilterGroup.json +2 -2
- package/json-schema/ai/FormActionParams.json +2 -2
- package/json-schema/ai/FormActionType.json +2 -2
- package/json-schema/ai/FormAgentAction.json +2 -2
- package/json-schema/ai/FunctionCall.json +2 -2
- package/json-schema/ai/GeneratedCode.json +2 -2
- package/json-schema/ai/GitHubIntegration.json +2 -2
- package/json-schema/ai/Hyperparameters.json +2 -2
- package/json-schema/ai/ImageContent.json +2 -2
- package/json-schema/ai/IntegrationConfig.json +2 -2
- package/json-schema/ai/Issue.json +2 -2
- package/json-schema/ai/MCPCapability.json +2 -2
- package/json-schema/ai/MCPPrompt.json +2 -2
- package/json-schema/ai/MCPPromptArgument.json +2 -2
- package/json-schema/ai/MCPPromptMessage.json +2 -2
- package/json-schema/ai/MCPPromptRequest.json +2 -2
- package/json-schema/ai/MCPPromptResponse.json +2 -2
- package/json-schema/ai/MCPResource.json +2 -2
- package/json-schema/ai/MCPResourceRequest.json +2 -2
- package/json-schema/ai/MCPResourceResponse.json +2 -2
- package/json-schema/ai/MCPResourceTemplate.json +2 -2
- package/json-schema/ai/MCPResourceType.json +2 -2
- package/json-schema/ai/MCPRootEntry.json +2 -2
- package/json-schema/ai/MCPRootsConfig.json +2 -2
- package/json-schema/ai/MCPServerInfo.json +2 -2
- package/json-schema/ai/MCPStreamingConfig.json +2 -2
- package/json-schema/ai/MCPTool.json +2 -2
- package/json-schema/ai/MCPToolApproval.json +2 -2
- package/json-schema/ai/MCPToolCallRequest.json +2 -2
- package/json-schema/ai/MCPToolCallResponse.json +2 -2
- package/json-schema/ai/MCPToolParameter.json +2 -2
- package/json-schema/ai/MCPTransportConfig.json +2 -2
- package/json-schema/ai/MCPTransportType.json +2 -2
- package/json-schema/ai/MessageContent.json +2 -2
- package/json-schema/ai/MessageContentType.json +2 -2
- package/json-schema/ai/MessagePruningEvent.json +2 -2
- package/json-schema/ai/MessageRole.json +2 -2
- package/json-schema/ai/MetadataFilter.json +2 -2
- package/json-schema/ai/MetadataSource.json +2 -2
- package/json-schema/ai/ModelCapability.json +2 -2
- package/json-schema/ai/ModelConfig.json +2 -2
- package/json-schema/ai/ModelDrift.json +2 -2
- package/json-schema/ai/ModelFeature.json +2 -2
- package/json-schema/ai/ModelLimits.json +2 -2
- package/json-schema/ai/ModelPricing.json +2 -2
- package/json-schema/ai/ModelProvider.json +2 -2
- package/json-schema/ai/ModelRegistryEntry.json +2 -2
- package/json-schema/ai/ModelSelectionCriteria.json +2 -2
- package/json-schema/ai/MonitoringConfig.json +2 -2
- package/json-schema/ai/MultiAgentGroup.json +2 -2
- package/json-schema/ai/NLQAnalytics.json +2 -2
- package/json-schema/ai/NLQFieldMapping.json +2 -2
- package/json-schema/ai/NLQParseResult.json +2 -2
- package/json-schema/ai/NLQRequest.json +2 -2
- package/json-schema/ai/NLQResponse.json +2 -2
- package/json-schema/ai/NLQTrainingExample.json +2 -2
- package/json-schema/ai/NavigationActionParams.json +2 -2
- package/json-schema/ai/NavigationActionType.json +2 -2
- package/json-schema/ai/NavigationAgentAction.json +2 -2
- package/json-schema/ai/PerformanceOptimization.json +2 -2
- package/json-schema/ai/PipelineStage.json +2 -2
- package/json-schema/ai/PluginCompositionRequest.json +2 -2
- package/json-schema/ai/PluginCompositionResult.json +2 -2
- package/json-schema/ai/PluginRecommendation.json +2 -2
- package/json-schema/ai/PluginRecommendationRequest.json +2 -2
- package/json-schema/ai/PluginScaffoldingTemplate.json +2 -2
- package/json-schema/ai/PredictionRequest.json +2 -2
- package/json-schema/ai/PredictionResult.json +2 -2
- package/json-schema/ai/PredictiveModelType.json +2 -2
- package/json-schema/ai/PromptVariable.json +2 -2
- package/json-schema/ai/QueryContext.json +2 -2
- package/json-schema/ai/QueryIntent.json +2 -2
- package/json-schema/ai/QueryTemplate.json +2 -2
- package/json-schema/ai/RAGPipelineConfig.json +2 -2
- package/json-schema/ai/RAGPipelineStatus.json +2 -2
- package/json-schema/ai/RAGQueryRequest.json +2 -2
- package/json-schema/ai/RAGQueryResponse.json +2 -2
- package/json-schema/ai/RerankingConfig.json +2 -2
- package/json-schema/ai/RetrievalStrategy.json +2 -2
- package/json-schema/ai/RootCauseAnalysisRequest.json +2 -2
- package/json-schema/ai/RootCauseAnalysisResult.json +2 -2
- package/json-schema/ai/Skill.json +2 -2
- package/json-schema/ai/SkillTriggerCondition.json +2 -2
- package/json-schema/ai/StructuredOutputConfig.json +2 -2
- package/json-schema/ai/StructuredOutputFormat.json +2 -2
- package/json-schema/ai/TestingConfig.json +2 -2
- package/json-schema/ai/TextContent.json +2 -2
- package/json-schema/ai/Timeframe.json +2 -2
- package/json-schema/ai/TokenBudgetConfig.json +2 -2
- package/json-schema/ai/TokenBudgetStrategy.json +2 -2
- package/json-schema/ai/TokenUsage.json +2 -2
- package/json-schema/ai/TokenUsageStats.json +2 -2
- package/json-schema/ai/Tool.json +2 -2
- package/json-schema/ai/ToolCall.json +2 -2
- package/json-schema/ai/ToolCategory.json +2 -2
- package/json-schema/ai/TransformPipelineStep.json +2 -2
- package/json-schema/ai/UIActionType.json +2 -2
- package/json-schema/ai/VectorStoreConfig.json +2 -2
- package/json-schema/ai/VectorStoreProvider.json +2 -2
- package/json-schema/ai/VercelIntegration.json +2 -2
- package/json-schema/ai/VersionManagement.json +2 -2
- package/json-schema/ai/ViewActionParams.json +2 -2
- package/json-schema/ai/ViewActionType.json +2 -2
- package/json-schema/ai/ViewAgentAction.json +2 -2
- package/json-schema/ai/WorkflowActionType.json +2 -2
- package/json-schema/ai/WorkflowFieldCondition.json +2 -2
- package/json-schema/api/AckMessage.json +2 -2
- package/json-schema/api/AddReactionRequest.json +2 -2
- package/json-schema/api/AddReactionResponse.json +2 -2
- package/json-schema/api/AiInsightsRequest.json +2 -2
- package/json-schema/api/AiInsightsResponse.json +2 -2
- package/json-schema/api/AiNlqRequest.json +2 -2
- package/json-schema/api/AiNlqResponse.json +2 -2
- package/json-schema/api/AiSuggestRequest.json +2 -2
- package/json-schema/api/AiSuggestResponse.json +2 -2
- package/json-schema/api/AnalyticsEndpoint.json +2 -2
- package/json-schema/api/AnalyticsMetadataResponse.json +2 -2
- package/json-schema/api/AnalyticsQueryRequest.json +2 -2
- package/json-schema/api/AnalyticsResultResponse.json +2 -2
- package/json-schema/api/AnalyticsSqlResponse.json +2 -2
- package/json-schema/api/ApiChangelogEntry.json +2 -2
- package/json-schema/api/ApiDiscoveryQuery.json +2 -2
- package/json-schema/api/ApiDiscoveryResponse.json +2 -2
- package/json-schema/api/ApiDocumentationConfig.json +2 -2
- package/json-schema/api/ApiEndpoint.json +2 -2
- package/json-schema/api/ApiEndpointRegistration.json +2 -2
- package/json-schema/api/ApiError.json +2 -2
- package/json-schema/api/ApiMapping.json +2 -2
- package/json-schema/api/ApiMetadata.json +2 -2
- package/json-schema/api/ApiParameter.json +2 -2
- package/json-schema/api/ApiProtocolType.json +2 -2
- package/json-schema/api/ApiRegistry.json +2 -2
- package/json-schema/api/ApiRegistryEntry.json +2 -2
- package/json-schema/api/ApiResponse.json +2 -2
- package/json-schema/api/ApiRoutes.json +2 -2
- package/json-schema/api/ApiTestCollection.json +2 -2
- package/json-schema/api/ApiTestRequest.json +2 -2
- package/json-schema/api/ApiTestingUiConfig.json +2 -2
- package/json-schema/api/ApiTestingUiType.json +2 -2
- package/json-schema/api/AuthEndpoint.json +2 -2
- package/json-schema/api/AuthFeaturesConfig.json +2 -2
- package/json-schema/api/AuthProvider.json +2 -2
- package/json-schema/api/AuthProviderInfo.json +2 -2
- package/json-schema/api/AutomationApiErrorCode.json +2 -2
- package/json-schema/api/AutomationFlowPathParams.json +2 -2
- package/json-schema/api/AutomationRunPathParams.json +2 -2
- package/json-schema/api/AutomationTriggerRequest.json +2 -2
- package/json-schema/api/AutomationTriggerResponse.json +2 -2
- package/json-schema/api/BasePresence.json +2 -2
- package/json-schema/api/BaseResponse.json +2 -2
- package/json-schema/api/BatchConfig.json +2 -2
- package/json-schema/api/BatchDataRequest.json +2 -2
- package/json-schema/api/BatchDataResponse.json +2 -2
- package/json-schema/api/BatchEndpointsConfig.json +2 -2
- package/json-schema/api/BatchLoadingStrategy.json +2 -2
- package/json-schema/api/BatchOperationResult.json +2 -2
- package/json-schema/api/BatchOperationType.json +2 -2
- package/json-schema/api/BatchOptions.json +2 -2
- package/json-schema/api/BatchRecord.json +2 -2
- package/json-schema/api/BatchUpdateRequest.json +2 -2
- package/json-schema/api/BatchUpdateResponse.json +2 -2
- package/json-schema/api/BulkRequest.json +2 -2
- package/json-schema/api/BulkResponse.json +2 -2
- package/json-schema/api/CacheControl.json +2 -2
- package/json-schema/api/CacheDirective.json +2 -2
- package/json-schema/api/CacheInvalidationRequest.json +2 -2
- package/json-schema/api/CacheInvalidationResponse.json +2 -2
- package/json-schema/api/CacheInvalidationTarget.json +2 -2
- package/json-schema/api/Callback.json +2 -2
- package/json-schema/api/ChangelogEntry.json +2 -2
- package/json-schema/api/CheckPermissionRequest.json +2 -2
- package/json-schema/api/CheckPermissionResponse.json +2 -2
- package/json-schema/api/CodeGenerationTemplate.json +2 -2
- package/json-schema/api/CompleteChunkedUploadRequest.json +2 -2
- package/json-schema/api/CompleteChunkedUploadResponse.json +2 -2
- package/json-schema/api/CompleteUploadRequest.json +2 -2
- package/json-schema/api/ConceptListResponse.json +2 -2
- package/json-schema/api/ConflictResolutionStrategy.json +2 -2
- package/json-schema/api/CreateDataRequest.json +2 -2
- package/json-schema/api/CreateDataResponse.json +2 -2
- package/json-schema/api/CreateExportJobRequest.json +2 -2
- package/json-schema/api/CreateExportJobResponse.json +2 -2
- package/json-schema/api/CreateFeedItemRequest.json +2 -2
- package/json-schema/api/CreateFeedItemResponse.json +2 -2
- package/json-schema/api/CreateManyDataRequest.json +2 -2
- package/json-schema/api/CreateManyDataResponse.json +2 -2
- package/json-schema/api/CreateRequest.json +2 -2
- package/json-schema/api/CrudEndpointPattern.json +2 -2
- package/json-schema/api/CrudEndpointsConfig.json +2 -2
- package/json-schema/api/CrudOperation.json +2 -2
- package/json-schema/api/CursorMessage.json +2 -2
- package/json-schema/api/CursorPosition.json +2 -2
- package/json-schema/api/DataEvent.json +2 -2
- package/json-schema/api/DataEventType.json +2 -2
- package/json-schema/api/DataLoaderConfig.json +2 -2
- package/json-schema/api/DeduplicationStrategy.json +2 -2
- package/json-schema/api/DeleteDataRequest.json +6 -2
- package/json-schema/api/DeleteDataResponse.json +2 -2
- package/json-schema/api/DeleteFeedItemRequest.json +2 -2
- package/json-schema/api/DeleteFeedItemResponse.json +2 -2
- package/json-schema/api/DeleteFlowRequest.json +2 -2
- package/json-schema/api/DeleteFlowResponse.json +2 -2
- package/json-schema/api/DeleteManyDataRequest.json +2 -2
- package/json-schema/api/DeleteManyDataResponse.json +2 -2
- package/json-schema/api/DeleteManyRequest.json +2 -2
- package/json-schema/api/DeleteMetaItemRequest.json +2 -2
- package/json-schema/api/DeleteMetaItemResponse.json +2 -2
- package/json-schema/api/DeleteResponse.json +2 -2
- package/json-schema/api/DeleteViewRequest.json +2 -2
- package/json-schema/api/DeleteViewResponse.json +2 -2
- package/json-schema/api/DeviceRequestResponse.json +2 -2
- package/json-schema/api/DeviceTokenResponse.json +2 -2
- package/json-schema/api/DisablePackageRequest.json +2 -2
- package/json-schema/api/DisablePackageResponse.json +2 -2
- package/json-schema/api/Discovery.json +2 -2
- package/json-schema/api/DispatcherConfig.json +2 -2
- package/json-schema/api/DispatcherErrorCode.json +2 -2
- package/json-schema/api/DispatcherErrorResponse.json +2 -2
- package/json-schema/api/DispatcherRoute.json +2 -2
- package/json-schema/api/DocumentState.json +2 -2
- package/json-schema/api/ETag.json +2 -2
- package/json-schema/api/EditMessage.json +2 -2
- package/json-schema/api/EditOperation.json +2 -2
- package/json-schema/api/EditOperationType.json +2 -2
- package/json-schema/api/EmailPasswordConfigPublic.json +2 -2
- package/json-schema/api/EnablePackageRequest.json +2 -2
- package/json-schema/api/EnablePackageResponse.json +2 -2
- package/json-schema/api/EndpointRegistry.json +2 -2
- package/json-schema/api/EnhancedApiError.json +2 -2
- package/json-schema/api/ErrorCategory.json +2 -2
- package/json-schema/api/ErrorHandlingConfig.json +2 -2
- package/json-schema/api/ErrorMessage.json +2 -2
- package/json-schema/api/ErrorResponse.json +2 -2
- package/json-schema/api/EventFilter.json +2 -2
- package/json-schema/api/EventFilterCondition.json +2 -2
- package/json-schema/api/EventMessage.json +2 -2
- package/json-schema/api/EventPattern.json +2 -2
- package/json-schema/api/EventSubscription.json +2 -2
- package/json-schema/api/ExportFormat.json +2 -2
- package/json-schema/api/ExportImportTemplate.json +2 -2
- package/json-schema/api/ExportJobProgress.json +2 -2
- package/json-schema/api/ExportJobStatus.json +2 -2
- package/json-schema/api/ExportJobSummary.json +2 -2
- package/json-schema/api/ExportRequest.json +2 -2
- package/json-schema/api/FederationEntity.json +2 -2
- package/json-schema/api/FederationEntityKey.json +2 -2
- package/json-schema/api/FederationExternalField.json +2 -2
- package/json-schema/api/FederationGateway.json +2 -2
- package/json-schema/api/FederationProvides.json +2 -2
- package/json-schema/api/FederationRequires.json +2 -2
- package/json-schema/api/FeedApiErrorCode.json +2 -2
- package/json-schema/api/FeedItemPathParams.json +2 -2
- package/json-schema/api/FeedListFilterType.json +2 -2
- package/json-schema/api/FeedPathParams.json +2 -2
- package/json-schema/api/FeedUnsubscribeRequest.json +2 -2
- package/json-schema/api/FieldError.json +2 -2
- package/json-schema/api/FieldMappingEntry.json +2 -2
- package/json-schema/api/FileTypeValidation.json +2 -2
- package/json-schema/api/FileUploadResponse.json +2 -2
- package/json-schema/api/FilterOperator.json +2 -2
- package/json-schema/api/FindDataRequest.json +2 -2
- package/json-schema/api/FindDataResponse.json +2 -2
- package/json-schema/api/FlowSummary.json +2 -2
- package/json-schema/api/GeneratedApiDocumentation.json +2 -2
- package/json-schema/api/GeneratedEndpoint.json +2 -2
- package/json-schema/api/GetAnalyticsMetaRequest.json +2 -2
- package/json-schema/api/GetAuthConfigResponse.json +2 -2
- package/json-schema/api/GetChangelogRequest.json +2 -2
- package/json-schema/api/GetChangelogResponse.json +2 -2
- package/json-schema/api/GetDataRequest.json +2 -2
- package/json-schema/api/GetDataResponse.json +2 -2
- package/json-schema/api/GetDiscoveryRequest.json +2 -2
- package/json-schema/api/GetDiscoveryResponse.json +2 -2
- package/json-schema/api/GetEffectivePermissionsRequest.json +2 -2
- package/json-schema/api/GetEffectivePermissionsResponse.json +2 -2
- package/json-schema/api/GetExportJobDownloadRequest.json +2 -2
- package/json-schema/api/GetExportJobDownloadResponse.json +2 -2
- package/json-schema/api/GetFeedRequest.json +2 -2
- package/json-schema/api/GetFeedResponse.json +2 -2
- package/json-schema/api/GetFieldLabelsRequest.json +2 -2
- package/json-schema/api/GetFieldLabelsResponse.json +2 -2
- package/json-schema/api/GetFlowRequest.json +2 -2
- package/json-schema/api/GetInstalledPackageRequest.json +2 -2
- package/json-schema/api/GetInstalledPackageResponse.json +2 -2
- package/json-schema/api/GetLocalesRequest.json +2 -2
- package/json-schema/api/GetLocalesResponse.json +2 -2
- package/json-schema/api/GetMetaItemCachedRequest.json +2 -2
- package/json-schema/api/GetMetaItemCachedResponse.json +2 -2
- package/json-schema/api/GetMetaItemRequest.json +2 -2
- package/json-schema/api/GetMetaItemResponse.json +2 -2
- package/json-schema/api/GetMetaItemsRequest.json +2 -2
- package/json-schema/api/GetMetaItemsResponse.json +2 -2
- package/json-schema/api/GetMetaTypesRequest.json +2 -2
- package/json-schema/api/GetMetaTypesResponse.json +2 -2
- package/json-schema/api/GetNotificationPreferencesRequest.json +2 -2
- package/json-schema/api/GetNotificationPreferencesResponse.json +2 -2
- package/json-schema/api/GetObjectPermissionsRequest.json +2 -2
- package/json-schema/api/GetObjectPermissionsResponse.json +2 -2
- package/json-schema/api/GetPackageRequest.json +2 -2
- package/json-schema/api/GetPackageResponse.json +2 -2
- package/json-schema/api/GetPresenceRequest.json +2 -2
- package/json-schema/api/GetPresenceResponse.json +2 -2
- package/json-schema/api/GetPresignedUrlRequest.json +2 -2
- package/json-schema/api/GetRunRequest.json +2 -2
- package/json-schema/api/GetRunResponse.json +2 -2
- package/json-schema/api/GetTranslationsRequest.json +2 -2
- package/json-schema/api/GetTranslationsResponse.json +23 -2
- package/json-schema/api/GetUiViewRequest.json +2 -2
- package/json-schema/api/GetViewRequest.json +2 -2
- package/json-schema/api/GetWorkflowConfigRequest.json +2 -2
- package/json-schema/api/GetWorkflowStateRequest.json +2 -2
- package/json-schema/api/GetWorkflowStateResponse.json +2 -2
- package/json-schema/api/GraphQLDataLoaderConfig.json +2 -2
- package/json-schema/api/GraphQLDirectiveConfig.json +2 -2
- package/json-schema/api/GraphQLDirectiveLocation.json +2 -2
- package/json-schema/api/GraphQLMutationConfig.json +2 -2
- package/json-schema/api/GraphQLPersistedQuery.json +2 -2
- package/json-schema/api/GraphQLQueryAdapter.json +2 -2
- package/json-schema/api/GraphQLQueryComplexity.json +2 -2
- package/json-schema/api/GraphQLQueryDepthLimit.json +2 -2
- package/json-schema/api/GraphQLRateLimit.json +2 -2
- package/json-schema/api/GraphQLScalarType.json +2 -2
- package/json-schema/api/GraphQLSubscriptionConfig.json +2 -2
- package/json-schema/api/GraphQLTypeConfig.json +2 -2
- package/json-schema/api/HandlerStatus.json +2 -2
- package/json-schema/api/HttpFindQueryParams.json +2 -2
- package/json-schema/api/HttpMethod.json +2 -2
- package/json-schema/api/HttpStatusCode.json +2 -2
- package/json-schema/api/IdRequest.json +2 -2
- package/json-schema/api/ImportValidationConfig.json +2 -2
- package/json-schema/api/ImportValidationMode.json +2 -2
- package/json-schema/api/ImportValidationResult.json +2 -2
- package/json-schema/api/InitiateChunkedUploadRequest.json +2 -2
- package/json-schema/api/InitiateChunkedUploadResponse.json +2 -2
- package/json-schema/api/InstallPackageRequest.json +2 -2
- package/json-schema/api/InstallPackageResponse.json +2 -2
- package/json-schema/api/ListExportJobsRequest.json +2 -2
- package/json-schema/api/ListExportJobsResponse.json +2 -2
- package/json-schema/api/ListFlowsRequest.json +2 -2
- package/json-schema/api/ListFlowsResponse.json +2 -2
- package/json-schema/api/ListInstalledPackagesRequest.json +2 -2
- package/json-schema/api/ListInstalledPackagesResponse.json +2 -2
- package/json-schema/api/ListNotificationsRequest.json +2 -2
- package/json-schema/api/ListNotificationsResponse.json +2 -2
- package/json-schema/api/ListPackagesRequest.json +2 -2
- package/json-schema/api/ListPackagesResponse.json +2 -2
- package/json-schema/api/ListRecordResponse.json +2 -2
- package/json-schema/api/ListRunsRequest.json +2 -2
- package/json-schema/api/ListRunsResponse.json +2 -2
- package/json-schema/api/ListViewsRequest.json +2 -2
- package/json-schema/api/LoginRequest.json +2 -2
- package/json-schema/api/LoginType.json +2 -2
- package/json-schema/api/MarkAllNotificationsReadRequest.json +2 -2
- package/json-schema/api/MarkAllNotificationsReadResponse.json +2 -2
- package/json-schema/api/MarkNotificationsReadRequest.json +2 -2
- package/json-schema/api/MarkNotificationsReadResponse.json +2 -2
- package/json-schema/api/MetadataBulkRegisterRequest.json +2 -2
- package/json-schema/api/MetadataBulkResponse.json +2 -2
- package/json-schema/api/MetadataBulkUnregisterRequest.json +2 -2
- package/json-schema/api/MetadataCacheRequest.json +2 -2
- package/json-schema/api/MetadataCacheResponse.json +2 -2
- package/json-schema/api/MetadataDeleteResponse.json +2 -2
- package/json-schema/api/MetadataDependenciesResponse.json +2 -2
- package/json-schema/api/MetadataDependentsResponse.json +2 -2
- package/json-schema/api/MetadataEffectiveResponse.json +2 -2
- package/json-schema/api/MetadataEndpointsConfig.json +2 -2
- package/json-schema/api/MetadataEvent.json +2 -2
- package/json-schema/api/MetadataEventType.json +2 -2
- package/json-schema/api/MetadataExistsResponse.json +2 -2
- package/json-schema/api/MetadataExportRequest.json +2 -2
- package/json-schema/api/MetadataExportResponse.json +2 -2
- package/json-schema/api/MetadataImportRequest.json +2 -2
- package/json-schema/api/MetadataImportResponse.json +2 -2
- package/json-schema/api/MetadataItemResponse.json +2 -2
- package/json-schema/api/MetadataListResponse.json +2 -2
- package/json-schema/api/MetadataNamesResponse.json +2 -2
- package/json-schema/api/MetadataOverlayResponse.json +2 -2
- package/json-schema/api/MetadataOverlaySaveRequest.json +2 -2
- package/json-schema/api/MetadataQueryRequest.json +2 -2
- package/json-schema/api/MetadataQueryResponse.json +2 -2
- package/json-schema/api/MetadataRegisterRequest.json +2 -2
- package/json-schema/api/MetadataTypeInfoResponse.json +2 -2
- package/json-schema/api/MetadataTypesResponse.json +2 -2
- package/json-schema/api/MetadataValidateRequest.json +2 -2
- package/json-schema/api/MetadataValidateResponse.json +2 -2
- package/json-schema/api/ModificationResult.json +2 -2
- package/json-schema/api/Notification.json +2 -2
- package/json-schema/api/NotificationPreferences.json +2 -2
- package/json-schema/api/ODataConfig.json +2 -2
- package/json-schema/api/ODataError.json +2 -2
- package/json-schema/api/ODataFilterFunction.json +2 -2
- package/json-schema/api/ODataFilterOperator.json +2 -2
- package/json-schema/api/ODataMetadata.json +2 -2
- package/json-schema/api/ODataQuery.json +2 -2
- package/json-schema/api/ODataQueryAdapter.json +2 -2
- package/json-schema/api/ODataResponse.json +2 -2
- package/json-schema/api/ObjectQLReference.json +2 -2
- package/json-schema/api/OpenApi31Extensions.json +2 -2
- package/json-schema/api/OpenApiGenerationConfig.json +2 -2
- package/json-schema/api/OpenApiSecurityScheme.json +2 -2
- package/json-schema/api/OpenApiServer.json +2 -2
- package/json-schema/api/OpenApiSpec.json +2 -2
- package/json-schema/api/OperatorMapping.json +2 -2
- package/json-schema/api/PackageApiErrorCode.json +2 -2
- package/json-schema/api/PackageInstallRequest.json +2 -2
- package/json-schema/api/PackageInstallResponse.json +2 -2
- package/json-schema/api/PackagePathParams.json +2 -2
- package/json-schema/api/PackageRollbackRequest.json +2 -2
- package/json-schema/api/PackageRollbackResponse.json +2 -2
- package/json-schema/api/PackageUpgradeRequest.json +2 -2
- package/json-schema/api/PackageUpgradeResponse.json +2 -2
- package/json-schema/api/PinFeedItemRequest.json +2 -2
- package/json-schema/api/PinFeedItemResponse.json +2 -2
- package/json-schema/api/PingMessage.json +2 -2
- package/json-schema/api/PongMessage.json +2 -2
- package/json-schema/api/PresenceMessage.json +2 -2
- package/json-schema/api/PresenceState.json +2 -2
- package/json-schema/api/PresenceStatus.json +2 -2
- package/json-schema/api/PresenceUpdate.json +2 -2
- package/json-schema/api/PresignedUrlResponse.json +2 -2
- package/json-schema/api/QueryAdapterConfig.json +2 -2
- package/json-schema/api/QueryAdapterTarget.json +2 -2
- package/json-schema/api/QueryOptimizationConfig.json +2 -2
- package/json-schema/api/RealtimeConfig.json +2 -2
- package/json-schema/api/RealtimeConnectRequest.json +2 -2
- package/json-schema/api/RealtimeConnectResponse.json +2 -2
- package/json-schema/api/RealtimeDisconnectRequest.json +2 -2
- package/json-schema/api/RealtimeDisconnectResponse.json +2 -2
- package/json-schema/api/RealtimeEvent.json +2 -2
- package/json-schema/api/RealtimeEventType.json +2 -2
- package/json-schema/api/RealtimePresence.json +2 -2
- package/json-schema/api/RealtimeRecordAction.json +2 -2
- package/json-schema/api/RealtimeSubscribeRequest.json +2 -2
- package/json-schema/api/RealtimeSubscribeResponse.json +2 -2
- package/json-schema/api/RealtimeUnsubscribeRequest.json +2 -2
- package/json-schema/api/RealtimeUnsubscribeResponse.json +2 -2
- package/json-schema/api/RecordData.json +2 -2
- package/json-schema/api/RefreshTokenRequest.json +2 -2
- package/json-schema/api/RegisterDeviceRequest.json +2 -2
- package/json-schema/api/RegisterDeviceResponse.json +2 -2
- package/json-schema/api/RegisterRequest.json +2 -2
- package/json-schema/api/RemoveReactionRequest.json +2 -2
- package/json-schema/api/RemoveReactionResponse.json +2 -2
- package/json-schema/api/RequestValidationConfig.json +2 -2
- package/json-schema/api/ResolveDependenciesRequest.json +2 -2
- package/json-schema/api/ResolveDependenciesResponse.json +2 -2
- package/json-schema/api/ResponseEnvelopeConfig.json +2 -2
- package/json-schema/api/RestApiConfig.json +2 -2
- package/json-schema/api/RestApiEndpoint.json +2 -2
- package/json-schema/api/RestApiPluginConfig.json +2 -2
- package/json-schema/api/RestApiRouteCategory.json +2 -2
- package/json-schema/api/RestApiRouteRegistration.json +2 -2
- package/json-schema/api/RestQueryAdapter.json +2 -2
- package/json-schema/api/RestServerConfig.json +2 -2
- package/json-schema/api/RetryStrategy.json +2 -2
- package/json-schema/api/RouteCategory.json +2 -2
- package/json-schema/api/RouteCoverageEntry.json +2 -2
- package/json-schema/api/RouteCoverageReport.json +2 -2
- package/json-schema/api/RouteDefinition.json +2 -2
- package/json-schema/api/RouteGenerationConfig.json +2 -2
- package/json-schema/api/RouteHealthEntry.json +2 -2
- package/json-schema/api/RouteHealthReport.json +2 -2
- package/json-schema/api/RouterConfig.json +2 -2
- package/json-schema/api/SaveMetaItemRequest.json +2 -2
- package/json-schema/api/SaveMetaItemResponse.json +2 -2
- package/json-schema/api/ScheduleExportResponse.json +2 -2
- package/json-schema/api/SchemaDefinition.json +2 -2
- package/json-schema/api/SearchFeedRequest.json +2 -2
- package/json-schema/api/SearchFeedResponse.json +2 -2
- package/json-schema/api/ServiceInfo.json +2 -2
- package/json-schema/api/ServiceStatus.json +2 -2
- package/json-schema/api/Session.json +2 -2
- package/json-schema/api/SessionResponse.json +2 -2
- package/json-schema/api/SessionUser.json +2 -2
- package/json-schema/api/SetPresenceRequest.json +2 -2
- package/json-schema/api/SetPresenceResponse.json +2 -2
- package/json-schema/api/SimpleCursorPosition.json +2 -2
- package/json-schema/api/SimplePresenceState.json +2 -2
- package/json-schema/api/SingleRecordResponse.json +2 -2
- package/json-schema/api/StandardErrorCode.json +2 -2
- package/json-schema/api/StarFeedItemRequest.json +2 -2
- package/json-schema/api/StarFeedItemResponse.json +2 -2
- package/json-schema/api/SubgraphConfig.json +2 -2
- package/json-schema/api/SubscribeMessage.json +2 -2
- package/json-schema/api/SubscribeRequest.json +2 -2
- package/json-schema/api/SubscribeResponse.json +2 -2
- package/json-schema/api/Subscription.json +2 -2
- package/json-schema/api/SubscriptionEvent.json +2 -2
- package/json-schema/api/ToggleFlowRequest.json +2 -2
- package/json-schema/api/ToggleFlowResponse.json +2 -2
- package/json-schema/api/TransportProtocol.json +2 -2
- package/json-schema/api/TriggerFlowRequest.json +2 -2
- package/json-schema/api/TriggerFlowResponse.json +2 -2
- package/json-schema/api/UninstallPackageApiRequest.json +2 -2
- package/json-schema/api/UninstallPackageApiResponse.json +2 -2
- package/json-schema/api/UninstallPackageRequest.json +2 -2
- package/json-schema/api/UninstallPackageResponse.json +2 -2
- package/json-schema/api/UnpinFeedItemRequest.json +2 -2
- package/json-schema/api/UnpinFeedItemResponse.json +2 -2
- package/json-schema/api/UnregisterDeviceRequest.json +2 -2
- package/json-schema/api/UnregisterDeviceResponse.json +2 -2
- package/json-schema/api/UnstarFeedItemRequest.json +2 -2
- package/json-schema/api/UnstarFeedItemResponse.json +2 -2
- package/json-schema/api/UnsubscribeMessage.json +2 -2
- package/json-schema/api/UnsubscribeRequest.json +2 -2
- package/json-schema/api/UnsubscribeResponse.json +2 -2
- package/json-schema/api/UpdateDataRequest.json +6 -2
- package/json-schema/api/UpdateDataResponse.json +2 -2
- package/json-schema/api/UpdateFeedItemRequest.json +2 -2
- package/json-schema/api/UpdateFeedItemResponse.json +2 -2
- package/json-schema/api/UpdateManyDataRequest.json +2 -2
- package/json-schema/api/UpdateManyDataResponse.json +2 -2
- package/json-schema/api/UpdateManyRequest.json +2 -2
- package/json-schema/api/UpdateNotificationPreferencesRequest.json +2 -2
- package/json-schema/api/UpdateNotificationPreferencesResponse.json +2 -2
- package/json-schema/api/UpdateRequest.json +2 -2
- package/json-schema/api/UploadArtifactRequest.json +2 -2
- package/json-schema/api/UploadArtifactResponse.json +2 -2
- package/json-schema/api/UploadChunkRequest.json +2 -2
- package/json-schema/api/UploadChunkResponse.json +2 -2
- package/json-schema/api/UploadProgress.json +2 -2
- package/json-schema/api/UserProfileResponse.json +2 -2
- package/json-schema/api/ValidationMode.json +2 -2
- package/json-schema/api/VersionDefinition.json +2 -2
- package/json-schema/api/VersionNegotiationResponse.json +2 -2
- package/json-schema/api/VersionStatus.json +2 -2
- package/json-schema/api/VersioningConfig.json +2 -2
- package/json-schema/api/VersioningStrategy.json +2 -2
- package/json-schema/api/WebSocketConfig.json +2 -2
- package/json-schema/api/WebSocketEvent.json +2 -2
- package/json-schema/api/WebSocketMessage.json +2 -2
- package/json-schema/api/WebSocketMessageType.json +2 -2
- package/json-schema/api/WebSocketPresenceStatus.json +2 -2
- package/json-schema/api/WebSocketServerConfig.json +2 -2
- package/json-schema/api/WebhookConfig.json +2 -2
- package/json-schema/api/WebhookEvent.json +2 -2
- package/json-schema/api/WellKnownCapabilities.json +2 -2
- package/json-schema/api/WorkflowApproveRequest.json +2 -2
- package/json-schema/api/WorkflowApproveResponse.json +2 -2
- package/json-schema/api/WorkflowRejectRequest.json +2 -2
- package/json-schema/api/WorkflowRejectResponse.json +2 -2
- package/json-schema/api/WorkflowState.json +2 -2
- package/json-schema/api/WorkflowTransitionRequest.json +2 -2
- package/json-schema/api/WorkflowTransitionResponse.json +2 -2
- package/json-schema/automation/ActionRef.json +2 -2
- package/json-schema/automation/ApprovalAction.json +2 -2
- package/json-schema/automation/ApprovalActionType.json +2 -2
- package/json-schema/automation/ApproverType.json +2 -2
- package/json-schema/automation/AuthField.json +2 -2
- package/json-schema/automation/Authentication.json +2 -2
- package/json-schema/automation/AuthenticationType.json +2 -2
- package/json-schema/automation/BpmnDiagnostic.json +2 -2
- package/json-schema/automation/BpmnElementMapping.json +2 -2
- package/json-schema/automation/BpmnExportOptions.json +2 -2
- package/json-schema/automation/BpmnImportOptions.json +2 -2
- package/json-schema/automation/BpmnInteropResult.json +2 -2
- package/json-schema/automation/BpmnUnmappedStrategy.json +2 -2
- package/json-schema/automation/BpmnVersion.json +2 -2
- package/json-schema/automation/Checkpoint.json +2 -2
- package/json-schema/automation/ConcurrencyPolicy.json +2 -2
- package/json-schema/automation/ConflictResolution.json +2 -2
- package/json-schema/automation/Connector.json +2 -2
- package/json-schema/automation/ConnectorActionRef.json +2 -2
- package/json-schema/automation/ConnectorCategory.json +2 -2
- package/json-schema/automation/ConnectorInstance.json +2 -2
- package/json-schema/automation/ConnectorOperation.json +2 -2
- package/json-schema/automation/ConnectorTrigger.json +2 -2
- package/json-schema/automation/CustomScriptAction.json +2 -2
- package/json-schema/automation/DataSourceConfig.json +2 -2
- package/json-schema/automation/ETLDestination.json +2 -2
- package/json-schema/automation/ETLEndpointType.json +2 -2
- package/json-schema/automation/ETLPipelineRun.json +2 -2
- package/json-schema/automation/ETLRunStatus.json +2 -2
- package/json-schema/automation/ETLSource.json +2 -2
- package/json-schema/automation/ETLSyncMode.json +2 -2
- package/json-schema/automation/ETLTransformation.json +2 -2
- package/json-schema/automation/ETLTransformationType.json +2 -2
- package/json-schema/automation/EmailAlertAction.json +2 -2
- package/json-schema/automation/Event.json +2 -2
- package/json-schema/automation/ExecutionError.json +2 -2
- package/json-schema/automation/ExecutionErrorSeverity.json +2 -2
- package/json-schema/automation/ExecutionLog.json +2 -2
- package/json-schema/automation/ExecutionStatus.json +2 -2
- package/json-schema/automation/ExecutionStepLog.json +2 -2
- package/json-schema/automation/FieldUpdateAction.json +2 -2
- package/json-schema/automation/FlowNode.json +2 -2
- package/json-schema/automation/FlowNodeAction.json +2 -2
- package/json-schema/automation/FlowVariable.json +2 -2
- package/json-schema/automation/GuardRef.json +2 -2
- package/json-schema/automation/HttpCallAction.json +2 -2
- package/json-schema/automation/NodeExecutorDescriptor.json +2 -2
- package/json-schema/automation/OAuth2Config.json +2 -2
- package/json-schema/automation/OperationParameter.json +2 -2
- package/json-schema/automation/OperationType.json +2 -2
- package/json-schema/automation/PushNotificationAction.json +2 -2
- package/json-schema/automation/StateMachine.json +2 -2
- package/json-schema/automation/StateNode.json +2 -2
- package/json-schema/automation/SyncDirection.json +2 -2
- package/json-schema/automation/SyncExecutionResult.json +2 -2
- package/json-schema/automation/SyncExecutionStatus.json +2 -2
- package/json-schema/automation/SyncMode.json +2 -2
- package/json-schema/automation/Transition.json +2 -2
- package/json-schema/automation/WaitEventType.json +2 -2
- package/json-schema/automation/WaitExecutorConfig.json +2 -2
- package/json-schema/automation/WaitResumePayload.json +2 -2
- package/json-schema/automation/WaitTimeoutBehavior.json +2 -2
- package/json-schema/automation/Webhook.json +2 -2
- package/json-schema/automation/WebhookReceiver.json +2 -2
- package/json-schema/automation/WebhookTriggerType.json +2 -2
- package/json-schema/automation/WorkflowTriggerType.json +2 -2
- package/json-schema/cloud/AnalyticsTimeRange.json +2 -2
- package/json-schema/cloud/AppDiscoveryRequest.json +2 -2
- package/json-schema/cloud/AppDiscoveryResponse.json +2 -2
- package/json-schema/cloud/AppSubscription.json +2 -2
- package/json-schema/cloud/ArtifactDownloadResponse.json +2 -2
- package/json-schema/cloud/ArtifactReference.json +2 -2
- package/json-schema/cloud/CreateListingRequest.json +2 -2
- package/json-schema/cloud/CreatePackageRequest.json +2 -2
- package/json-schema/cloud/CreatePackageVersionRequest.json +2 -2
- package/json-schema/cloud/CuratedCollection.json +2 -2
- package/json-schema/cloud/Environment.json +2 -2
- package/json-schema/cloud/EnvironmentCredential.json +2 -2
- package/json-schema/cloud/EnvironmentCredentialStatus.json +2 -2
- package/json-schema/cloud/EnvironmentDriver.json +2 -2
- package/json-schema/cloud/EnvironmentMember.json +2 -2
- package/json-schema/cloud/EnvironmentPackageInstallation.json +2 -2
- package/json-schema/cloud/EnvironmentPackageStatus.json +2 -2
- package/json-schema/cloud/EnvironmentRole.json +2 -2
- package/json-schema/cloud/EnvironmentStatus.json +2 -2
- package/json-schema/cloud/EnvironmentType.json +2 -2
- package/json-schema/cloud/EnvironmentVisibility.json +2 -2
- package/json-schema/cloud/FeaturedListing.json +2 -2
- package/json-schema/cloud/InstallPackageToEnvironmentRequest.json +2 -2
- package/json-schema/cloud/InstalledAppSummary.json +2 -2
- package/json-schema/cloud/ListEnvironmentPackagesResponse.json +2 -2
- package/json-schema/cloud/ListInstalledAppsRequest.json +2 -2
- package/json-schema/cloud/ListInstalledAppsResponse.json +2 -2
- package/json-schema/cloud/ListReviewsRequest.json +2 -2
- package/json-schema/cloud/ListReviewsResponse.json +2 -2
- package/json-schema/cloud/ListingActionRequest.json +2 -2
- package/json-schema/cloud/ListingStatus.json +2 -2
- package/json-schema/cloud/MarketplaceCategory.json +2 -2
- package/json-schema/cloud/MarketplaceHealthMetrics.json +2 -2
- package/json-schema/cloud/MarketplaceInstallRequest.json +2 -2
- package/json-schema/cloud/MarketplaceInstallResponse.json +2 -2
- package/json-schema/cloud/MarketplaceListing.json +2 -2
- package/json-schema/cloud/MarketplaceSearchRequest.json +2 -2
- package/json-schema/cloud/MarketplaceSearchResponse.json +2 -2
- package/json-schema/cloud/Package.json +2 -2
- package/json-schema/cloud/PackageCategory.json +2 -2
- package/json-schema/cloud/PackageDependency.json +2 -2
- package/json-schema/cloud/PackageInstallation.json +2 -2
- package/json-schema/cloud/PackageInstallationStatus.json +2 -2
- package/json-schema/cloud/PackageManifest.json +2 -2
- package/json-schema/cloud/PackagePublisher.json +2 -2
- package/json-schema/cloud/PackageSubmission.json +2 -2
- package/json-schema/cloud/PackageVersion.json +2 -2
- package/json-schema/cloud/PackageVersionStatus.json +2 -2
- package/json-schema/cloud/PackageVisibility.json +2 -2
- package/json-schema/cloud/PolicyAction.json +2 -2
- package/json-schema/cloud/PolicyViolationType.json +2 -2
- package/json-schema/cloud/PricingModel.json +2 -2
- package/json-schema/cloud/ProvisionEnvironmentRequest.json +2 -2
- package/json-schema/cloud/ProvisionEnvironmentResponse.json +2 -2
- package/json-schema/cloud/ProvisionOrganizationRequest.json +2 -2
- package/json-schema/cloud/ProvisionOrganizationResponse.json +2 -2
- package/json-schema/cloud/ProvisionTenantRequest.json +2 -2
- package/json-schema/cloud/ProvisionTenantResponse.json +2 -2
- package/json-schema/cloud/PublishPackageVersionRequest.json +2 -2
- package/json-schema/cloud/Publisher.json +2 -2
- package/json-schema/cloud/PublisherProfile.json +2 -2
- package/json-schema/cloud/PublisherVerification.json +2 -2
- package/json-schema/cloud/PublishingAnalyticsRequest.json +2 -2
- package/json-schema/cloud/PublishingAnalyticsResponse.json +2 -2
- package/json-schema/cloud/RecommendationReason.json +2 -2
- package/json-schema/cloud/RecommendedApp.json +2 -2
- package/json-schema/cloud/RejectionReason.json +2 -2
- package/json-schema/cloud/ReleaseChannel.json +2 -2
- package/json-schema/cloud/ReviewCriterion.json +2 -2
- package/json-schema/cloud/ReviewDecision.json +2 -2
- package/json-schema/cloud/ReviewModerationStatus.json +2 -2
- package/json-schema/cloud/RollbackEnvironmentPackageRequest.json +2 -2
- package/json-schema/cloud/Sha256Digest.json +2 -2
- package/json-schema/cloud/SubmissionReview.json +2 -2
- package/json-schema/cloud/SubmitReviewRequest.json +2 -2
- package/json-schema/cloud/SubscriptionStatus.json +2 -2
- package/json-schema/cloud/TenantContext.json +2 -2
- package/json-schema/cloud/TenantDatabase.json +2 -2
- package/json-schema/cloud/TenantDatabaseStatus.json +2 -2
- package/json-schema/cloud/TenantIdentificationSource.json +2 -2
- package/json-schema/cloud/TenantPlan.json +2 -2
- package/json-schema/cloud/TenantRoutingConfig.json +2 -2
- package/json-schema/cloud/TimeSeriesPoint.json +2 -2
- package/json-schema/cloud/TrendingListing.json +2 -2
- package/json-schema/cloud/UpdateListingRequest.json +2 -2
- package/json-schema/cloud/UpdatePackageRequest.json +2 -2
- package/json-schema/cloud/UpdatePackageVersionRequest.json +2 -2
- package/json-schema/cloud/UpgradeEnvironmentPackageRequest.json +2 -2
- package/json-schema/cloud/UserReview.json +2 -2
- package/json-schema/cloud/VersionRelease.json +2 -2
- package/json-schema/data/Address.json +2 -2
- package/json-schema/data/AggregationFunction.json +2 -2
- package/json-schema/data/AggregationMetricType.json +2 -2
- package/json-schema/data/AggregationNode.json +2 -2
- package/json-schema/data/AggregationPipeline.json +2 -2
- package/json-schema/data/AggregationStage.json +2 -2
- package/json-schema/data/AnalyticsQuery.json +2 -2
- package/json-schema/data/ApiMethod.json +2 -2
- package/json-schema/data/AsyncValidation.json +2 -2
- package/json-schema/data/BaseEngineOptions.json +2 -2
- package/json-schema/data/CDCConfig.json +2 -2
- package/json-schema/data/ComputedFieldCache.json +2 -2
- package/json-schema/data/ConsistencyLevel.json +2 -2
- package/json-schema/data/Cube.json +2 -2
- package/json-schema/data/CubeJoin.json +2 -2
- package/json-schema/data/CurrencyConfig.json +2 -2
- package/json-schema/data/CurrencyValue.json +2 -2
- package/json-schema/data/CustomValidator.json +2 -2
- package/json-schema/data/DataEngineAggregateOptions.json +2 -2
- package/json-schema/data/DataEngineAggregateRequest.json +2 -2
- package/json-schema/data/DataEngineBatchRequest.json +2 -2
- package/json-schema/data/DataEngineCountOptions.json +2 -2
- package/json-schema/data/DataEngineCountRequest.json +2 -2
- package/json-schema/data/DataEngineDeleteOptions.json +2 -2
- package/json-schema/data/DataEngineDeleteRequest.json +2 -2
- package/json-schema/data/DataEngineExecuteRequest.json +2 -2
- package/json-schema/data/DataEngineFilter.json +2 -2
- package/json-schema/data/DataEngineFindOneRequest.json +2 -2
- package/json-schema/data/DataEngineFindRequest.json +2 -2
- package/json-schema/data/DataEngineInsertOptions.json +2 -2
- package/json-schema/data/DataEngineInsertRequest.json +2 -2
- package/json-schema/data/DataEngineQueryOptions.json +2 -2
- package/json-schema/data/DataEngineRequest.json +2 -2
- package/json-schema/data/DataEngineSort.json +2 -2
- package/json-schema/data/DataEngineUpdateOptions.json +2 -2
- package/json-schema/data/DataEngineUpdateRequest.json +2 -2
- package/json-schema/data/DataEngineVectorFindRequest.json +2 -2
- package/json-schema/data/DataQualityRules.json +2 -2
- package/json-schema/data/DataTypeMapping.json +2 -2
- package/json-schema/data/Dataset.json +2 -2
- package/json-schema/data/DatasetLoadResult.json +2 -2
- package/json-schema/data/DatasetMode.json +2 -2
- package/json-schema/data/Datasource.json +2 -2
- package/json-schema/data/DatasourceCapabilities.json +2 -2
- package/json-schema/data/DateGranularity.json +2 -2
- package/json-schema/data/Dimension.json +2 -2
- package/json-schema/data/DimensionType.json +2 -2
- package/json-schema/data/Document.json +2 -2
- package/json-schema/data/DocumentTemplate.json +2 -2
- package/json-schema/data/DocumentValidationSchema.json +2 -2
- package/json-schema/data/DocumentVersion.json +2 -2
- package/json-schema/data/DriverCapabilities.json +2 -2
- package/json-schema/data/DriverConfig.json +2 -2
- package/json-schema/data/DriverDefinition.json +2 -2
- package/json-schema/data/DriverOptions.json +2 -2
- package/json-schema/data/DriverType.json +2 -2
- package/json-schema/data/ESignatureConfig.json +2 -2
- package/json-schema/data/EngineAggregateOptions.json +2 -2
- package/json-schema/data/EngineCountOptions.json +2 -2
- package/json-schema/data/EngineDeleteOptions.json +2 -2
- package/json-schema/data/EngineQueryOptions.json +2 -2
- package/json-schema/data/EngineUpdateOptions.json +2 -2
- package/json-schema/data/EqualityOperator.json +2 -2
- package/json-schema/data/ExpressionBody.json +2 -2
- package/json-schema/data/ExternalDataSource.json +2 -2
- package/json-schema/data/FeedActor.json +2 -2
- package/json-schema/data/FeedFilterMode.json +2 -2
- package/json-schema/data/FeedItem.json +2 -2
- package/json-schema/data/FeedItemType.json +2 -2
- package/json-schema/data/FeedVisibility.json +2 -2
- package/json-schema/data/FieldChangeEntry.json +2 -2
- package/json-schema/data/FieldMapping.json +2 -2
- package/json-schema/data/FieldNode.json +2 -2
- package/json-schema/data/FieldReference.json +2 -2
- package/json-schema/data/FieldType.json +2 -2
- package/json-schema/data/FileAttachmentConfig.json +2 -2
- package/json-schema/data/FilterCondition.json +2 -2
- package/json-schema/data/FormatValidation.json +2 -2
- package/json-schema/data/FullTextSearch.json +2 -2
- package/json-schema/data/GroupByNode.json +2 -2
- package/json-schema/data/HookBody.json +2 -2
- package/json-schema/data/HookBodyCapability.json +2 -2
- package/json-schema/data/HookContext.json +2 -2
- package/json-schema/data/HookEvent.json +2 -2
- package/json-schema/data/Index.json +2 -2
- package/json-schema/data/JSONValidation.json +2 -2
- package/json-schema/data/JoinNode.json +2 -2
- package/json-schema/data/JoinStrategy.json +2 -2
- package/json-schema/data/JoinType.json +2 -2
- package/json-schema/data/LocationCoordinates.json +2 -2
- package/json-schema/data/Mapping.json +2 -2
- package/json-schema/data/Mention.json +2 -2
- package/json-schema/data/Metric.json +2 -2
- package/json-schema/data/NoSQLDataTypeMapping.json +2 -2
- package/json-schema/data/NoSQLDatabaseType.json +2 -2
- package/json-schema/data/NoSQLDriverConfig.json +2 -2
- package/json-schema/data/NoSQLIndex.json +2 -2
- package/json-schema/data/NoSQLIndexType.json +2 -2
- package/json-schema/data/NoSQLOperationType.json +2 -2
- package/json-schema/data/NoSQLQueryOptions.json +2 -2
- package/json-schema/data/NoSQLTransactionOptions.json +2 -2
- package/json-schema/data/NotificationChannel.json +2 -2
- package/json-schema/data/ObjectCapabilities.json +2 -2
- package/json-schema/data/ObjectDependencyGraph.json +2 -2
- package/json-schema/data/ObjectDependencyNode.json +2 -2
- package/json-schema/data/ObjectOwnershipEnum.json +2 -2
- package/json-schema/data/PartitioningConfig.json +2 -2
- package/json-schema/data/PoolConfig.json +2 -2
- package/json-schema/data/Query.json +2 -2
- package/json-schema/data/QueryFilter.json +2 -2
- package/json-schema/data/Reaction.json +2 -2
- package/json-schema/data/RecordSubscription.json +2 -2
- package/json-schema/data/ReferenceResolution.json +2 -2
- package/json-schema/data/ReferenceResolutionError.json +2 -2
- package/json-schema/data/ReplicationConfig.json +2 -2
- package/json-schema/data/SQLDialect.json +2 -2
- package/json-schema/data/SQLDriverConfig.json +2 -2
- package/json-schema/data/SSLConfig.json +2 -2
- package/json-schema/data/ScriptBody.json +2 -2
- package/json-schema/data/SearchConfig.json +2 -2
- package/json-schema/data/SeedLoaderConfig.json +2 -2
- package/json-schema/data/SeedLoaderRequest.json +2 -2
- package/json-schema/data/SeedLoaderResult.json +2 -2
- package/json-schema/data/SelectOption.json +2 -2
- package/json-schema/data/SetOperator.json +2 -2
- package/json-schema/data/ShardingConfig.json +2 -2
- package/json-schema/data/SoftDeleteConfig.json +2 -2
- package/json-schema/data/SortNode.json +2 -2
- package/json-schema/data/SpecialOperator.json +2 -2
- package/json-schema/data/StateMachineValidation.json +2 -2
- package/json-schema/data/StringOperator.json +2 -2
- package/json-schema/data/SubscriptionEventType.json +2 -2
- package/json-schema/data/TenancyConfig.json +2 -2
- package/json-schema/data/TenantDatabaseLifecycle.json +2 -2
- package/json-schema/data/TenantResolverStrategy.json +2 -2
- package/json-schema/data/TimeUpdateInterval.json +2 -2
- package/json-schema/data/TransformType.json +2 -2
- package/json-schema/data/TursoGroup.json +2 -2
- package/json-schema/data/TursoMultiTenantConfig.json +2 -2
- package/json-schema/data/VectorConfig.json +2 -2
- package/json-schema/data/VersioningConfig.json +2 -2
- package/json-schema/data/WindowFunction.json +2 -2
- package/json-schema/data/WindowFunctionNode.json +2 -2
- package/json-schema/data/WindowSpec.json +2 -2
- package/json-schema/identity/Account.json +2 -2
- package/json-schema/identity/ApiKey.json +2 -2
- package/json-schema/identity/Invitation.json +2 -2
- package/json-schema/identity/InvitationStatus.json +2 -2
- package/json-schema/identity/Member.json +2 -2
- package/json-schema/identity/Organization.json +2 -2
- package/json-schema/identity/Role.json +2 -2
- package/json-schema/identity/SCIMAddress.json +2 -2
- package/json-schema/identity/SCIMBulkOperation.json +2 -2
- package/json-schema/identity/SCIMBulkRequest.json +2 -2
- package/json-schema/identity/SCIMBulkResponse.json +2 -2
- package/json-schema/identity/SCIMBulkResponseOperation.json +2 -2
- package/json-schema/identity/SCIMEmail.json +2 -2
- package/json-schema/identity/SCIMEnterpriseUser.json +2 -2
- package/json-schema/identity/SCIMError.json +2 -2
- package/json-schema/identity/SCIMGroup.json +2 -2
- package/json-schema/identity/SCIMGroupReference.json +2 -2
- package/json-schema/identity/SCIMListResponse.json +2 -2
- package/json-schema/identity/SCIMMemberReference.json +2 -2
- package/json-schema/identity/SCIMMeta.json +2 -2
- package/json-schema/identity/SCIMName.json +2 -2
- package/json-schema/identity/SCIMPatchOperation.json +2 -2
- package/json-schema/identity/SCIMPatchRequest.json +2 -2
- package/json-schema/identity/SCIMPhoneNumber.json +2 -2
- package/json-schema/identity/SCIMUser.json +2 -2
- package/json-schema/identity/Session.json +2 -2
- package/json-schema/identity/User.json +2 -2
- package/json-schema/identity/VerificationToken.json +2 -2
- package/json-schema/integration/AckMode.json +2 -2
- package/json-schema/integration/ApiVersionConfig.json +2 -2
- package/json-schema/integration/BuildConfig.json +2 -2
- package/json-schema/integration/CdcConfig.json +2 -2
- package/json-schema/integration/CircuitBreakerConfig.json +2 -2
- package/json-schema/integration/ConflictResolution.json +2 -2
- package/json-schema/integration/ConnectorAction.json +2 -2
- package/json-schema/integration/ConnectorHealth.json +2 -2
- package/json-schema/integration/ConnectorStatus.json +2 -2
- package/json-schema/integration/ConnectorTrigger.json +2 -2
- package/json-schema/integration/ConnectorType.json +2 -2
- package/json-schema/integration/ConsumerConfig.json +2 -2
- package/json-schema/integration/DatabasePoolConfig.json +2 -2
- package/json-schema/integration/DatabaseProvider.json +2 -2
- package/json-schema/integration/DeliveryGuarantee.json +2 -2
- package/json-schema/integration/DeploymentConfig.json +2 -2
- package/json-schema/integration/DlqConfig.json +2 -2
- package/json-schema/integration/DomainConfig.json +2 -2
- package/json-schema/integration/EdgeFunctionConfig.json +2 -2
- package/json-schema/integration/EnvironmentVariables.json +2 -2
- package/json-schema/integration/ErrorCategory.json +2 -2
- package/json-schema/integration/ErrorMappingConfig.json +2 -2
- package/json-schema/integration/ErrorMappingRule.json +2 -2
- package/json-schema/integration/FileAccessPattern.json +2 -2
- package/json-schema/integration/FileFilterConfig.json +2 -2
- package/json-schema/integration/FileMetadataConfig.json +2 -2
- package/json-schema/integration/FileStorageProvider.json +2 -2
- package/json-schema/integration/FileVersioningConfig.json +2 -2
- package/json-schema/integration/GitHubActionsWorkflow.json +2 -2
- package/json-schema/integration/GitHubCommitConfig.json +2 -2
- package/json-schema/integration/GitHubIssueTracking.json +2 -2
- package/json-schema/integration/GitHubProvider.json +2 -2
- package/json-schema/integration/GitHubReleaseConfig.json +2 -2
- package/json-schema/integration/GitHubRepository.json +2 -2
- package/json-schema/integration/GitRepositoryConfig.json +2 -2
- package/json-schema/integration/HealthCheckConfig.json +2 -2
- package/json-schema/integration/MessageFormat.json +2 -2
- package/json-schema/integration/MessageQueueProvider.json +2 -2
- package/json-schema/integration/MultipartUploadConfig.json +2 -2
- package/json-schema/integration/ProducerConfig.json +2 -2
- package/json-schema/integration/RateLimitConfig.json +2 -2
- package/json-schema/integration/RateLimitStrategy.json +2 -2
- package/json-schema/integration/RetryConfig.json +2 -2
- package/json-schema/integration/RetryStrategy.json +2 -2
- package/json-schema/integration/SaasProvider.json +2 -2
- package/json-schema/integration/SslConfig.json +2 -2
- package/json-schema/integration/StorageBucket.json +2 -2
- package/json-schema/integration/SyncStrategy.json +2 -2
- package/json-schema/integration/TopicQueue.json +2 -2
- package/json-schema/integration/VercelFramework.json +2 -2
- package/json-schema/integration/VercelMonitoring.json +2 -2
- package/json-schema/integration/VercelProject.json +2 -2
- package/json-schema/integration/VercelProvider.json +2 -2
- package/json-schema/integration/VercelTeam.json +2 -2
- package/json-schema/integration/WebhookConfig.json +2 -2
- package/json-schema/integration/WebhookEvent.json +2 -2
- package/json-schema/integration/WebhookSignatureAlgorithm.json +2 -2
- package/json-schema/kernel/ActivationEvent.json +2 -2
- package/json-schema/kernel/AdvancedPluginLifecycleConfig.json +2 -2
- package/json-schema/kernel/ArtifactChecksum.json +2 -2
- package/json-schema/kernel/ArtifactFileEntry.json +2 -2
- package/json-schema/kernel/ArtifactSignature.json +2 -2
- package/json-schema/kernel/BreakingChange.json +2 -2
- package/json-schema/kernel/CLICommandContribution.json +2 -2
- package/json-schema/kernel/CapabilityConformanceLevel.json +2 -2
- package/json-schema/kernel/CompatibilityLevel.json +2 -2
- package/json-schema/kernel/CompatibilityMatrixEntry.json +2 -2
- package/json-schema/kernel/CustomizationOrigin.json +2 -2
- package/json-schema/kernel/CustomizationPolicy.json +2 -2
- package/json-schema/kernel/DeadLetterQueueEntry.json +2 -2
- package/json-schema/kernel/DependencyConflict.json +2 -2
- package/json-schema/kernel/DependencyGraph.json +2 -2
- package/json-schema/kernel/DependencyGraphNode.json +2 -2
- package/json-schema/kernel/DependencyResolutionResult.json +2 -2
- package/json-schema/kernel/DependencyStatusEnum.json +2 -2
- package/json-schema/kernel/DeprecationNotice.json +2 -2
- package/json-schema/kernel/DevFixtureConfig.json +2 -2
- package/json-schema/kernel/DevPluginConfig.json +2 -2
- package/json-schema/kernel/DevPluginPreset.json +2 -2
- package/json-schema/kernel/DevServiceOverride.json +2 -2
- package/json-schema/kernel/DevToolsConfig.json +2 -2
- package/json-schema/kernel/DisablePackageRequest.json +2 -2
- package/json-schema/kernel/DisablePackageResponse.json +2 -2
- package/json-schema/kernel/DistributedStateConfig.json +2 -2
- package/json-schema/kernel/DynamicLoadRequest.json +2 -2
- package/json-schema/kernel/DynamicLoadingConfig.json +2 -2
- package/json-schema/kernel/DynamicPluginOperation.json +2 -2
- package/json-schema/kernel/DynamicPluginResult.json +2 -2
- package/json-schema/kernel/DynamicUnloadRequest.json +2 -2
- package/json-schema/kernel/EnablePackageRequest.json +2 -2
- package/json-schema/kernel/EnablePackageResponse.json +2 -2
- package/json-schema/kernel/Event.json +2 -2
- package/json-schema/kernel/EventBusConfig.json +2 -2
- package/json-schema/kernel/EventHandler.json +2 -2
- package/json-schema/kernel/EventLogEntry.json +2 -2
- package/json-schema/kernel/EventMessageQueueConfig.json +2 -2
- package/json-schema/kernel/EventMetadata.json +2 -2
- package/json-schema/kernel/EventPersistence.json +2 -2
- package/json-schema/kernel/EventPhase.json +2 -2
- package/json-schema/kernel/EventPriority.json +2 -2
- package/json-schema/kernel/EventQueueConfig.json +2 -2
- package/json-schema/kernel/EventReplayConfig.json +2 -2
- package/json-schema/kernel/EventRoute.json +2 -2
- package/json-schema/kernel/EventSourcingConfig.json +2 -2
- package/json-schema/kernel/EventTypeDefinition.json +2 -2
- package/json-schema/kernel/EventWebhookConfig.json +2 -2
- package/json-schema/kernel/ExecutionContext.json +2 -2
- package/json-schema/kernel/ExtensionPoint.json +2 -2
- package/json-schema/kernel/FeatureStrategy.json +2 -2
- package/json-schema/kernel/FieldChange.json +2 -2
- package/json-schema/kernel/GetPackageRequest.json +2 -2
- package/json-schema/kernel/GetPackageResponse.json +2 -2
- package/json-schema/kernel/GracefulDegradation.json +2 -2
- package/json-schema/kernel/HealthStatus.json +2 -2
- package/json-schema/kernel/HookRegisteredEvent.json +2 -2
- package/json-schema/kernel/HookTriggeredEvent.json +2 -2
- package/json-schema/kernel/HotReloadConfig.json +2 -2
- package/json-schema/kernel/InstallPackageRequest.json +2 -2
- package/json-schema/kernel/InstallPackageResponse.json +2 -2
- package/json-schema/kernel/InstalledPackage.json +2 -2
- package/json-schema/kernel/KernelContext.json +2 -2
- package/json-schema/kernel/KernelEventBase.json +2 -2
- package/json-schema/kernel/KernelReadyEvent.json +2 -2
- package/json-schema/kernel/KernelSecurityPolicy.json +2 -2
- package/json-schema/kernel/KernelSecurityScanResult.json +2 -2
- package/json-schema/kernel/KernelSecurityVulnerability.json +2 -2
- package/json-schema/kernel/KernelShutdownEvent.json +2 -2
- package/json-schema/kernel/ListPackagesRequest.json +2 -2
- package/json-schema/kernel/ListPackagesResponse.json +2 -2
- package/json-schema/kernel/Manifest.json +2 -2
- package/json-schema/kernel/MergeConflict.json +2 -2
- package/json-schema/kernel/MergeResult.json +2 -2
- package/json-schema/kernel/MergeStrategyConfig.json +2 -2
- package/json-schema/kernel/MetadataBulkRegisterRequest.json +2 -2
- package/json-schema/kernel/MetadataBulkResult.json +2 -2
- package/json-schema/kernel/MetadataCategoryEnum.json +2 -2
- package/json-schema/kernel/MetadataChangeType.json +2 -2
- package/json-schema/kernel/MetadataCollectionInfo.json +2 -2
- package/json-schema/kernel/MetadataDependency.json +2 -2
- package/json-schema/kernel/MetadataDiffItem.json +2 -2
- package/json-schema/kernel/MetadataEvent.json +2 -2
- package/json-schema/kernel/MetadataFallbackStrategy.json +2 -2
- package/json-schema/kernel/MetadataFormat.json +2 -2
- package/json-schema/kernel/MetadataImportOptions.json +2 -2
- package/json-schema/kernel/MetadataLoadResult.json +2 -2
- package/json-schema/kernel/MetadataLoaderContract.json +2 -2
- package/json-schema/kernel/MetadataManagerConfig.json +2 -2
- package/json-schema/kernel/MetadataOverlay.json +2 -2
- package/json-schema/kernel/MetadataPluginConfig.json +2 -2
- package/json-schema/kernel/MetadataPluginManifest.json +2 -2
- package/json-schema/kernel/MetadataQuery.json +2 -2
- package/json-schema/kernel/MetadataQueryResult.json +2 -2
- package/json-schema/kernel/MetadataSaveOptions.json +2 -2
- package/json-schema/kernel/MetadataSaveResult.json +2 -2
- package/json-schema/kernel/MetadataStats.json +2 -2
- package/json-schema/kernel/MetadataType.json +2 -2
- package/json-schema/kernel/MetadataTypeRegistryEntry.json +2 -2
- package/json-schema/kernel/MetadataValidationResult.json +2 -2
- package/json-schema/kernel/MetadataWatchEvent.json +2 -2
- package/json-schema/kernel/NamespaceConflictError.json +2 -2
- package/json-schema/kernel/NamespaceRegistryEntry.json +2 -2
- package/json-schema/kernel/OclifPluginConfig.json +2 -2
- package/json-schema/kernel/OpsDomainModule.json +2 -2
- package/json-schema/kernel/OpsFilePath.json +2 -2
- package/json-schema/kernel/OpsPluginStructure.json +2 -2
- package/json-schema/kernel/PackageArtifact.json +2 -2
- package/json-schema/kernel/PackageDependency.json +2 -2
- package/json-schema/kernel/PackageDependencyConflict.json +2 -2
- package/json-schema/kernel/PackageDependencyResolutionResult.json +2 -2
- package/json-schema/kernel/PackageStatusEnum.json +2 -2
- package/json-schema/kernel/PermissionAction.json +2 -2
- package/json-schema/kernel/PermissionScope.json +2 -2
- package/json-schema/kernel/PluginCaching.json +2 -2
- package/json-schema/kernel/PluginCapability.json +2 -2
- package/json-schema/kernel/PluginCapabilityManifest.json +2 -2
- package/json-schema/kernel/PluginCodeSplitting.json +2 -2
- package/json-schema/kernel/PluginCompatibilityMatrix.json +2 -2
- package/json-schema/kernel/PluginDependency.json +2 -2
- package/json-schema/kernel/PluginDependencyResolution.json +2 -2
- package/json-schema/kernel/PluginDependencyResolutionResult.json +2 -2
- package/json-schema/kernel/PluginDiscoveryConfig.json +2 -2
- package/json-schema/kernel/PluginDiscoverySource.json +2 -2
- package/json-schema/kernel/PluginDynamicImport.json +2 -2
- package/json-schema/kernel/PluginErrorEvent.json +2 -2
- package/json-schema/kernel/PluginEventBase.json +2 -2
- package/json-schema/kernel/PluginHealthCheck.json +2 -2
- package/json-schema/kernel/PluginHealthReport.json +2 -2
- package/json-schema/kernel/PluginHealthStatus.json +2 -2
- package/json-schema/kernel/PluginHotReload.json +2 -2
- package/json-schema/kernel/PluginInitialization.json +2 -2
- package/json-schema/kernel/PluginInstallConfig.json +2 -2
- package/json-schema/kernel/PluginInterface.json +2 -2
- package/json-schema/kernel/PluginLifecycleEventType.json +2 -2
- package/json-schema/kernel/PluginLifecyclePhaseEvent.json +2 -2
- package/json-schema/kernel/PluginLoadingConfig.json +2 -2
- package/json-schema/kernel/PluginLoadingEvent.json +2 -2
- package/json-schema/kernel/PluginLoadingState.json +2 -2
- package/json-schema/kernel/PluginLoadingStrategy.json +2 -2
- package/json-schema/kernel/PluginMetadata.json +2 -2
- package/json-schema/kernel/PluginPerformanceMonitoring.json +2 -2
- package/json-schema/kernel/PluginPreloadConfig.json +2 -2
- package/json-schema/kernel/PluginProvenance.json +2 -2
- package/json-schema/kernel/PluginQualityMetrics.json +2 -2
- package/json-schema/kernel/PluginRegisteredEvent.json +2 -2
- package/json-schema/kernel/PluginRegistryEntry.json +2 -2
- package/json-schema/kernel/PluginSandboxing.json +2 -2
- package/json-schema/kernel/PluginSearchFilters.json +2 -2
- package/json-schema/kernel/PluginSource.json +2 -2
- package/json-schema/kernel/PluginStartupResult.json +2 -2
- package/json-schema/kernel/PluginStateSnapshot.json +2 -2
- package/json-schema/kernel/PluginStatistics.json +2 -2
- package/json-schema/kernel/PluginTrustLevel.json +2 -2
- package/json-schema/kernel/PluginTrustScore.json +2 -2
- package/json-schema/kernel/PluginUpdateStrategy.json +2 -2
- package/json-schema/kernel/PluginVendor.json +2 -2
- package/json-schema/kernel/PluginVersionMetadata.json +2 -2
- package/json-schema/kernel/PreviewModeConfig.json +2 -2
- package/json-schema/kernel/ProtocolFeature.json +2 -2
- package/json-schema/kernel/ProtocolReference.json +2 -2
- package/json-schema/kernel/ProtocolVersion.json +2 -2
- package/json-schema/kernel/RealTimeNotificationConfig.json +2 -2
- package/json-schema/kernel/RequiredAction.json +2 -2
- package/json-schema/kernel/ResolvedDependency.json +2 -2
- package/json-schema/kernel/ResourceType.json +2 -2
- package/json-schema/kernel/RollbackPackageRequest.json +2 -2
- package/json-schema/kernel/RollbackPackageResponse.json +2 -2
- package/json-schema/kernel/RuntimeConfig.json +2 -2
- package/json-schema/kernel/RuntimeMode.json +2 -2
- package/json-schema/kernel/SBOM.json +2 -2
- package/json-schema/kernel/SBOMEntry.json +2 -2
- package/json-schema/kernel/SandboxConfig.json +2 -2
- package/json-schema/kernel/ScopeConfig.json +2 -2
- package/json-schema/kernel/ScopeInfo.json +2 -2
- package/json-schema/kernel/SecurityPolicy.json +2 -2
- package/json-schema/kernel/SecurityScanResult.json +2 -2
- package/json-schema/kernel/SecurityVulnerability.json +2 -2
- package/json-schema/kernel/SemanticVersion.json +2 -2
- package/json-schema/kernel/ServiceFactoryRegistration.json +2 -2
- package/json-schema/kernel/ServiceMetadata.json +2 -2
- package/json-schema/kernel/ServiceRegisteredEvent.json +2 -2
- package/json-schema/kernel/ServiceRegistryConfig.json +2 -2
- package/json-schema/kernel/ServiceScopeType.json +2 -2
- package/json-schema/kernel/ServiceUnregisteredEvent.json +2 -2
- package/json-schema/kernel/StartupOptions.json +2 -2
- package/json-schema/kernel/StartupOrchestrationResult.json +2 -2
- package/json-schema/kernel/TenantRuntimeContext.json +2 -2
- package/json-schema/kernel/UninstallPackageRequest.json +2 -2
- package/json-schema/kernel/UninstallPackageResponse.json +2 -2
- package/json-schema/kernel/UpgradeContext.json +2 -2
- package/json-schema/kernel/UpgradeImpactLevel.json +2 -2
- package/json-schema/kernel/UpgradePackageRequest.json +2 -2
- package/json-schema/kernel/UpgradePackageResponse.json +2 -2
- package/json-schema/kernel/UpgradePhase.json +2 -2
- package/json-schema/kernel/UpgradePlan.json +2 -2
- package/json-schema/kernel/UpgradeSnapshot.json +2 -2
- package/json-schema/kernel/ValidationError.json +2 -2
- package/json-schema/kernel/ValidationResult.json +2 -2
- package/json-schema/kernel/ValidationWarning.json +2 -2
- package/json-schema/kernel/VersionConstraint.json +2 -2
- package/json-schema/kernel/VulnerabilitySeverity.json +2 -2
- package/json-schema/objectstack.json +3580 -3488
- package/json-schema/openapi.json +1 -1
- package/json-schema/qa/TestAction.json +2 -2
- package/json-schema/qa/TestActionType.json +2 -2
- package/json-schema/qa/TestAssertion.json +2 -2
- package/json-schema/qa/TestAssertionType.json +2 -2
- package/json-schema/qa/TestContext.json +2 -2
- package/json-schema/qa/TestScenario.json +2 -2
- package/json-schema/qa/TestStep.json +2 -2
- package/json-schema/qa/TestSuite.json +2 -2
- package/json-schema/security/AuditPolicy.json +2 -2
- package/json-schema/security/FieldPermission.json +2 -2
- package/json-schema/security/NetworkPolicy.json +2 -2
- package/json-schema/security/OWDModel.json +2 -2
- package/json-schema/security/ObjectPermission.json +2 -2
- package/json-schema/security/OwnerSharingRule.json +2 -2
- package/json-schema/security/PasswordPolicy.json +2 -2
- package/json-schema/security/PermissionSet.json +2 -2
- package/json-schema/security/Policy.json +2 -2
- package/json-schema/security/RLSAuditConfig.json +2 -2
- package/json-schema/security/RLSAuditEvent.json +2 -2
- package/json-schema/security/RLSConfig.json +2 -2
- package/json-schema/security/RLSEvaluationResult.json +2 -2
- package/json-schema/security/RLSOperation.json +2 -2
- package/json-schema/security/RLSUserContext.json +2 -2
- package/json-schema/security/RowLevelSecurityPolicy.json +2 -2
- package/json-schema/security/SessionPolicy.json +2 -2
- package/json-schema/security/ShareRecipientType.json +2 -2
- package/json-schema/security/SharingLevel.json +2 -2
- package/json-schema/security/SharingRuleType.json +2 -2
- package/json-schema/security/Territory.json +2 -2
- package/json-schema/security/TerritoryModel.json +2 -2
- package/json-schema/security/TerritoryType.json +2 -2
- package/json-schema/shared/AggregationFunctionEnum.json +2 -2
- package/json-schema/shared/AppName.json +2 -2
- package/json-schema/shared/BaseMetadataRecord.json +2 -2
- package/json-schema/shared/CacheStrategyEnum.json +2 -2
- package/json-schema/shared/CorsConfig.json +2 -2
- package/json-schema/shared/EventName.json +2 -2
- package/json-schema/shared/Expression.json +2 -2
- package/json-schema/shared/ExpressionDialect.json +2 -2
- package/json-schema/shared/ExpressionMeta.json +2 -2
- package/json-schema/shared/FieldName.json +2 -2
- package/json-schema/shared/FlowName.json +2 -2
- package/json-schema/shared/HttpMethod.json +2 -2
- package/json-schema/shared/HttpRequest.json +2 -2
- package/json-schema/shared/IsolationLevelEnum.json +2 -2
- package/json-schema/shared/MetadataFormat.json +2 -2
- package/json-schema/shared/MutationEventEnum.json +2 -2
- package/json-schema/shared/ObjectName.json +2 -2
- package/json-schema/shared/Predicate.json +2 -2
- package/json-schema/shared/RateLimitConfig.json +2 -2
- package/json-schema/shared/RoleName.json +2 -2
- package/json-schema/shared/SnakeCaseIdentifier.json +2 -2
- package/json-schema/shared/SortDirectionEnum.json +2 -2
- package/json-schema/shared/SortItem.json +2 -2
- package/json-schema/shared/StaticMount.json +2 -2
- package/json-schema/shared/SystemIdentifier.json +2 -2
- package/json-schema/shared/ViewName.json +2 -2
- package/json-schema/studio/ActionContribution.json +2 -2
- package/json-schema/studio/ActionLocation.json +2 -2
- package/json-schema/studio/ActivationEvent.json +2 -2
- package/json-schema/studio/CanvasSnapSettings.json +2 -2
- package/json-schema/studio/CanvasZoomSettings.json +2 -2
- package/json-schema/studio/CommandContribution.json +2 -2
- package/json-schema/studio/ERDiagramConfig.json +2 -2
- package/json-schema/studio/ERLayoutAlgorithm.json +2 -2
- package/json-schema/studio/ERNodeDisplay.json +2 -2
- package/json-schema/studio/ElementPaletteItem.json +2 -2
- package/json-schema/studio/FieldEditorConfig.json +2 -2
- package/json-schema/studio/FieldGroup.json +2 -2
- package/json-schema/studio/FieldPropertySection.json +2 -2
- package/json-schema/studio/FlowBuilderConfig.json +2 -2
- package/json-schema/studio/FlowCanvasEdge.json +2 -2
- package/json-schema/studio/FlowCanvasEdgeStyle.json +2 -2
- package/json-schema/studio/FlowCanvasNode.json +2 -2
- package/json-schema/studio/FlowLayoutAlgorithm.json +2 -2
- package/json-schema/studio/FlowLayoutDirection.json +2 -2
- package/json-schema/studio/FlowNodeRenderDescriptor.json +2 -2
- package/json-schema/studio/FlowNodeShape.json +2 -2
- package/json-schema/studio/InterfaceBuilderConfig.json +2 -2
- package/json-schema/studio/MetadataIconContribution.json +2 -2
- package/json-schema/studio/MetadataViewerContribution.json +2 -2
- package/json-schema/studio/ObjectDesignerConfig.json +2 -2
- package/json-schema/studio/ObjectDesignerDefaultView.json +2 -2
- package/json-schema/studio/ObjectFilter.json +2 -2
- package/json-schema/studio/ObjectListDisplayMode.json +2 -2
- package/json-schema/studio/ObjectManagerConfig.json +2 -2
- package/json-schema/studio/ObjectPreviewConfig.json +2 -2
- package/json-schema/studio/ObjectPreviewTab.json +2 -2
- package/json-schema/studio/ObjectSortField.json +2 -2
- package/json-schema/studio/PageBuilderConfig.json +2 -2
- package/json-schema/studio/PanelContribution.json +2 -2
- package/json-schema/studio/PanelLocation.json +2 -2
- package/json-schema/studio/RelationshipDisplay.json +2 -2
- package/json-schema/studio/RelationshipMapperConfig.json +2 -2
- package/json-schema/studio/SidebarGroupContribution.json +2 -2
- package/json-schema/studio/StudioPluginContributions.json +2 -2
- package/json-schema/studio/StudioPluginManifest.json +2 -2
- package/json-schema/studio/ViewMode.json +2 -2
- package/json-schema/system/AccessControlConfig.json +2 -2
- package/json-schema/system/AdvancedAuthConfig.json +2 -2
- package/json-schema/system/AnalyzerConfig.json +2 -2
- package/json-schema/system/AppCompatibilityCheck.json +2 -2
- package/json-schema/system/AppInstallRequest.json +2 -2
- package/json-schema/system/AppInstallResult.json +2 -2
- package/json-schema/system/AppManifest.json +2 -2
- package/json-schema/system/AppTranslationBundle.json +2 -2
- package/json-schema/system/AuditEvent.json +2 -2
- package/json-schema/system/AuditEventActor.json +2 -2
- package/json-schema/system/AuditEventChange.json +2 -2
- package/json-schema/system/AuditEventFilter.json +2 -2
- package/json-schema/system/AuditEventSeverity.json +2 -2
- package/json-schema/system/AuditEventTarget.json +2 -2
- package/json-schema/system/AuditEventType.json +2 -2
- package/json-schema/system/AuditFinding.json +2 -2
- package/json-schema/system/AuditFindingSeverity.json +2 -2
- package/json-schema/system/AuditFindingStatus.json +2 -2
- package/json-schema/system/AuditLogConfig.json +2 -2
- package/json-schema/system/AuditRetentionPolicy.json +2 -2
- package/json-schema/system/AuditSchedule.json +2 -2
- package/json-schema/system/AuditStorageConfig.json +2 -2
- package/json-schema/system/AuthConfig.json +2 -2
- package/json-schema/system/AuthPluginConfig.json +2 -2
- package/json-schema/system/AuthProviderConfig.json +2 -2
- package/json-schema/system/AwarenessEvent.json +2 -2
- package/json-schema/system/AwarenessSession.json +2 -2
- package/json-schema/system/AwarenessUpdate.json +2 -2
- package/json-schema/system/AwarenessUserState.json +2 -2
- package/json-schema/system/BackupRetention.json +2 -2
- package/json-schema/system/BackupStrategy.json +2 -2
- package/json-schema/system/BatchProgress.json +2 -2
- package/json-schema/system/BucketConfig.json +2 -2
- package/json-schema/system/CRDTMergeResult.json +2 -2
- package/json-schema/system/CRDTState.json +2 -2
- package/json-schema/system/CRDTType.json +2 -2
- package/json-schema/system/CacheAvalanchePrevention.json +2 -2
- package/json-schema/system/CacheConfig.json +2 -2
- package/json-schema/system/CacheConsistency.json +2 -2
- package/json-schema/system/CacheInvalidation.json +2 -2
- package/json-schema/system/CacheStrategy.json +2 -2
- package/json-schema/system/CacheTier.json +2 -2
- package/json-schema/system/ChangeImpact.json +2 -2
- package/json-schema/system/ChangePriority.json +2 -2
- package/json-schema/system/ChangeRequest.json +2 -2
- package/json-schema/system/ChangeSchema.json +2 -2
- package/json-schema/system/ChangeStatus.json +2 -2
- package/json-schema/system/ChangeType.json +2 -2
- package/json-schema/system/CollaborationMode.json +2 -2
- package/json-schema/system/CollaborationSession.json +2 -2
- package/json-schema/system/CollaborationSessionConfig.json +2 -2
- package/json-schema/system/CollaborativeCursor.json +2 -2
- package/json-schema/system/ComplianceAuditRequirement.json +2 -2
- package/json-schema/system/ComplianceConfig.json +2 -2
- package/json-schema/system/ComplianceEncryptionRequirement.json +2 -2
- package/json-schema/system/ComplianceFramework.json +2 -2
- package/json-schema/system/ConsoleDestinationConfig.json +2 -2
- package/json-schema/system/ConsumerConfig.json +2 -2
- package/json-schema/system/CoreServiceName.json +2 -2
- package/json-schema/system/CounterOperation.json +2 -2
- package/json-schema/system/CoverageBreakdownEntry.json +2 -2
- package/json-schema/system/CursorColorPreset.json +2 -2
- package/json-schema/system/CursorSelection.json +2 -2
- package/json-schema/system/CursorStyle.json +2 -2
- package/json-schema/system/CursorUpdate.json +2 -2
- package/json-schema/system/DataClassification.json +2 -2
- package/json-schema/system/DataClassificationPolicy.json +2 -2
- package/json-schema/system/DatabaseLevelIsolationStrategy.json +2 -2
- package/json-schema/system/DatabaseProvider.json +2 -2
- package/json-schema/system/DeadLetterQueue.json +2 -2
- package/json-schema/system/DeleteObjectOperation.json +2 -2
- package/json-schema/system/DeployBundle.json +2 -2
- package/json-schema/system/DeployDiff.json +2 -2
- package/json-schema/system/DeployManifest.json +2 -2
- package/json-schema/system/DeployStatusEnum.json +2 -2
- package/json-schema/system/DeployValidationIssue.json +2 -2
- package/json-schema/system/DeployValidationResult.json +2 -2
- package/json-schema/system/EmailAddressConfig.json +2 -2
- package/json-schema/system/EmailAndPasswordConfig.json +2 -2
- package/json-schema/system/EmailProvider.json +2 -2
- package/json-schema/system/EmailServiceConfig.json +2 -2
- package/json-schema/system/EmailTemplateDefinition.json +2 -2
- package/json-schema/system/EmailTemplateDefinitionCategory.json +2 -2
- package/json-schema/system/EmailTemplateDefinitionVariable.json +2 -2
- package/json-schema/system/EmailVerificationConfig.json +2 -2
- package/json-schema/system/EncryptionAlgorithm.json +2 -2
- package/json-schema/system/EncryptionConfig.json +2 -2
- package/json-schema/system/ExecuteSqlOperation.json +2 -2
- package/json-schema/system/ExtendedLogLevel.json +2 -2
- package/json-schema/system/ExternalServiceDestinationConfig.json +2 -2
- package/json-schema/system/FacetConfig.json +2 -2
- package/json-schema/system/FailoverConfig.json +2 -2
- package/json-schema/system/FailoverMode.json +2 -2
- package/json-schema/system/Feature.json +2 -2
- package/json-schema/system/FieldEncryption.json +2 -2
- package/json-schema/system/FieldTranslation.json +2 -2
- package/json-schema/system/FileDestinationConfig.json +2 -2
- package/json-schema/system/FileMetadata.json +2 -2
- package/json-schema/system/GCounter.json +2 -2
- package/json-schema/system/GDPRConfig.json +2 -2
- package/json-schema/system/HIPAAConfig.json +2 -2
- package/json-schema/system/HistogramBucketConfig.json +2 -2
- package/json-schema/system/HttpDestinationConfig.json +2 -2
- package/json-schema/system/HttpServerConfig.json +2 -2
- package/json-schema/system/Incident.json +2 -2
- package/json-schema/system/IncidentCategory.json +2 -2
- package/json-schema/system/IncidentNotificationMatrix.json +2 -2
- package/json-schema/system/IncidentNotificationRule.json +2 -2
- package/json-schema/system/IncidentResponsePhase.json +2 -2
- package/json-schema/system/IncidentResponsePolicy.json +2 -2
- package/json-schema/system/IncidentSeverity.json +2 -2
- package/json-schema/system/IncidentStatus.json +2 -2
- package/json-schema/system/IntervalSchedule.json +2 -2
- package/json-schema/system/JobExecution.json +2 -2
- package/json-schema/system/JobExecutionStatus.json +2 -2
- package/json-schema/system/KernelServiceMap.json +2 -2
- package/json-schema/system/KeyManagementProvider.json +2 -2
- package/json-schema/system/KeyRotationPolicy.json +2 -2
- package/json-schema/system/LWWRegister.json +2 -2
- package/json-schema/system/LevelIsolationStrategySchema.json +2 -2
- package/json-schema/system/License.json +2 -2
- package/json-schema/system/LicenseMetricType.json +2 -2
- package/json-schema/system/LifecycleAction.json +2 -2
- package/json-schema/system/LifecyclePolicyConfig.json +2 -2
- package/json-schema/system/LifecyclePolicyRule.json +2 -2
- package/json-schema/system/Locale.json +2 -2
- package/json-schema/system/LogDestination.json +2 -2
- package/json-schema/system/LogDestinationType.json +2 -2
- package/json-schema/system/LogEnrichmentConfig.json +2 -2
- package/json-schema/system/LogEntry.json +2 -2
- package/json-schema/system/LogFormat.json +2 -2
- package/json-schema/system/LogLevel.json +2 -2
- package/json-schema/system/LoggerConfig.json +2 -2
- package/json-schema/system/LoggingConfig.json +2 -2
- package/json-schema/system/MaskingConfig.json +2 -2
- package/json-schema/system/MaskingRule.json +2 -2
- package/json-schema/system/MaskingStrategy.json +2 -2
- package/json-schema/system/MaskingVisibilityRule.json +2 -2
- package/json-schema/system/MessageFormat.json +2 -2
- package/json-schema/system/MessageQueueConfig.json +2 -2
- package/json-schema/system/MessageQueueProvider.json +2 -2
- package/json-schema/system/MetadataCollectionInfo.json +2 -2
- package/json-schema/system/MetadataDiffResult.json +2 -2
- package/json-schema/system/MetadataExportOptions.json +2 -2
- package/json-schema/system/MetadataFallbackStrategy.json +2 -2
- package/json-schema/system/MetadataFormat.json +2 -2
- package/json-schema/system/MetadataHistoryQueryOptions.json +2 -2
- package/json-schema/system/MetadataHistoryQueryResult.json +3 -3
- package/json-schema/system/MetadataHistoryRecord.json +3 -3
- package/json-schema/system/MetadataHistoryRetentionPolicy.json +2 -2
- package/json-schema/system/MetadataImportOptions.json +2 -2
- package/json-schema/system/MetadataLoadOptions.json +2 -2
- package/json-schema/system/MetadataLoadResult.json +2 -2
- package/json-schema/system/MetadataLoaderContract.json +2 -2
- package/json-schema/system/MetadataManagerConfig.json +2 -2
- package/json-schema/system/MetadataRecord.json +3 -3
- package/json-schema/system/MetadataSaveOptions.json +2 -2
- package/json-schema/system/MetadataSaveResult.json +2 -2
- package/json-schema/system/MetadataScope.json +2 -2
- package/json-schema/system/MetadataSource.json +2 -2
- package/json-schema/system/MetadataState.json +2 -2
- package/json-schema/system/MetadataStats.json +2 -2
- package/json-schema/system/MetadataWatchEvent.json +2 -2
- package/json-schema/system/MetricAggregationConfig.json +2 -2
- package/json-schema/system/MetricAggregationType.json +2 -2
- package/json-schema/system/MetricDataPoint.json +2 -2
- package/json-schema/system/MetricDefinition.json +2 -2
- package/json-schema/system/MetricExportConfig.json +2 -2
- package/json-schema/system/MetricLabels.json +2 -2
- package/json-schema/system/MetricType.json +2 -2
- package/json-schema/system/MetricUnit.json +2 -2
- package/json-schema/system/MiddlewareConfig.json +2 -2
- package/json-schema/system/MiddlewareType.json +2 -2
- package/json-schema/system/MigrationDependency.json +2 -2
- package/json-schema/system/MigrationPlan.json +2 -2
- package/json-schema/system/MigrationStatement.json +2 -2
- package/json-schema/system/ModifyFieldOperation.json +2 -2
- package/json-schema/system/MultipartUploadConfig.json +2 -2
- package/json-schema/system/MutualTLSConfig.json +2 -2
- package/json-schema/system/NotificationChannel.json +2 -2
- package/json-schema/system/ORSet.json +2 -2
- package/json-schema/system/ORSetElement.json +2 -2
- package/json-schema/system/OTComponent.json +2 -2
- package/json-schema/system/OTOperation.json +2 -2
- package/json-schema/system/OTOperationType.json +2 -2
- package/json-schema/system/OTTransformResult.json +2 -2
- package/json-schema/system/ObjectMetadata.json +2 -2
- package/json-schema/system/ObjectStorageConfig.json +2 -2
- package/json-schema/system/ObjectTranslationData.json +23 -2
- package/json-schema/system/ObjectTranslationNode.json +2 -2
- package/json-schema/system/OidcProviderConfig.json +2 -2
- package/json-schema/system/OidcProvidersConfig.json +2 -2
- package/json-schema/system/OnceSchedule.json +2 -2
- package/json-schema/system/OpenTelemetryCompatibility.json +2 -2
- package/json-schema/system/OtelExporterType.json +2 -2
- package/json-schema/system/PCIDSSConfig.json +2 -2
- package/json-schema/system/PNCounter.json +2 -2
- package/json-schema/system/PackagePublishResult.json +2 -2
- package/json-schema/system/Plan.json +2 -2
- package/json-schema/system/PresignedUrlConfig.json +2 -2
- package/json-schema/system/ProjectArtifact.json +2 -2
- package/json-schema/system/ProjectArtifactChecksum.json +2 -2
- package/json-schema/system/ProjectArtifactFunction.json +2 -2
- package/json-schema/system/ProjectArtifactFunctionLanguageEnum.json +2 -2
- package/json-schema/system/ProjectArtifactHashAlgorithmEnum.json +2 -2
- package/json-schema/system/ProjectArtifactManifest.json +2 -2
- package/json-schema/system/ProjectArtifactMetadata.json +2 -2
- package/json-schema/system/ProjectArtifactPayloadRef.json +2 -2
- package/json-schema/system/ProjectArtifactRequirement.json +2 -2
- package/json-schema/system/ProvisioningStep.json +2 -2
- package/json-schema/system/QueueConfig.json +2 -2
- package/json-schema/system/QuotaEnforcementResult.json +2 -2
- package/json-schema/system/RPO.json +2 -2
- package/json-schema/system/RTO.json +2 -2
- package/json-schema/system/RegistryConfig.json +2 -2
- package/json-schema/system/RegistrySyncPolicy.json +2 -2
- package/json-schema/system/RegistryUpstream.json +2 -2
- package/json-schema/system/RemoveFieldOperation.json +2 -2
- package/json-schema/system/RenameObjectOperation.json +2 -2
- package/json-schema/system/ResolvedSettingValue.json +2 -2
- package/json-schema/system/RetryPolicy.json +2 -2
- package/json-schema/system/RollbackPlan.json +2 -2
- package/json-schema/system/RouteHandlerMetadata.json +2 -2
- package/json-schema/system/RowLevelIsolationStrategy.json +2 -2
- package/json-schema/system/SamplingDecision.json +2 -2
- package/json-schema/system/SamplingStrategyType.json +2 -2
- package/json-schema/system/SearchConfig.json +2 -2
- package/json-schema/system/SearchIndexConfig.json +2 -2
- package/json-schema/system/SearchProvider.json +2 -2
- package/json-schema/system/SecurityContextConfig.json +2 -2
- package/json-schema/system/SecurityEventCorrelation.json +2 -2
- package/json-schema/system/ServerCapabilities.json +2 -2
- package/json-schema/system/ServerEvent.json +2 -2
- package/json-schema/system/ServerEventType.json +2 -2
- package/json-schema/system/ServerStatus.json +2 -2
- package/json-schema/system/ServiceConfig.json +2 -2
- package/json-schema/system/ServiceCriticality.json +2 -2
- package/json-schema/system/ServiceLevelObjective.json +2 -2
- package/json-schema/system/ServiceStatus.json +2 -2
- package/json-schema/system/SettingsActionResult.json +2 -2
- package/json-schema/system/SettingsChangeEvent.json +2 -2
- package/json-schema/system/SocialProviderConfig.json +2 -2
- package/json-schema/system/Span.json +2 -2
- package/json-schema/system/SpanAttributeValue.json +2 -2
- package/json-schema/system/SpanAttributes.json +2 -2
- package/json-schema/system/SpanEvent.json +2 -2
- package/json-schema/system/SpanKind.json +2 -2
- package/json-schema/system/SpanLink.json +2 -2
- package/json-schema/system/SpanStatus.json +2 -2
- package/json-schema/system/SpecifierHandler.json +2 -2
- package/json-schema/system/SpecifierOption.json +2 -2
- package/json-schema/system/SpecifierScope.json +2 -2
- package/json-schema/system/SpecifierType.json +2 -2
- package/json-schema/system/StorageAcl.json +2 -2
- package/json-schema/system/StorageClass.json +2 -2
- package/json-schema/system/StorageConnection.json +2 -2
- package/json-schema/system/StorageProvider.json +2 -2
- package/json-schema/system/StorageScope.json +2 -2
- package/json-schema/system/StructuredLogEntry.json +2 -2
- package/json-schema/system/SupplierAssessmentStatus.json +2 -2
- package/json-schema/system/SupplierRiskLevel.json +2 -2
- package/json-schema/system/SupplierSecurityAssessment.json +2 -2
- package/json-schema/system/SupplierSecurityPolicy.json +2 -2
- package/json-schema/system/SupplierSecurityRequirement.json +2 -2
- package/json-schema/system/Task.json +2 -2
- package/json-schema/system/TaskExecutionResult.json +2 -2
- package/json-schema/system/TaskPriority.json +2 -2
- package/json-schema/system/TaskRetryPolicy.json +2 -2
- package/json-schema/system/TaskStatus.json +2 -2
- package/json-schema/system/Tenant.json +2 -2
- package/json-schema/system/TenantConnectionConfig.json +2 -2
- package/json-schema/system/TenantIsolationConfig.json +2 -2
- package/json-schema/system/TenantIsolationLevel.json +2 -2
- package/json-schema/system/TenantPlan.json +2 -2
- package/json-schema/system/TenantProvisioningRequest.json +2 -2
- package/json-schema/system/TenantProvisioningResult.json +2 -2
- package/json-schema/system/TenantProvisioningStatusEnum.json +2 -2
- package/json-schema/system/TenantQuota.json +2 -2
- package/json-schema/system/TenantRegion.json +2 -2
- package/json-schema/system/TenantSecurityPolicy.json +2 -2
- package/json-schema/system/TenantUsage.json +2 -2
- package/json-schema/system/TextCRDTOperation.json +2 -2
- package/json-schema/system/TextCRDTState.json +2 -2
- package/json-schema/system/TimeSeries.json +2 -2
- package/json-schema/system/TimeSeriesDataPoint.json +2 -2
- package/json-schema/system/TopicConfig.json +2 -2
- package/json-schema/system/TraceContext.json +2 -2
- package/json-schema/system/TraceContextPropagation.json +2 -2
- package/json-schema/system/TraceFlags.json +2 -2
- package/json-schema/system/TracePropagationFormat.json +2 -2
- package/json-schema/system/TraceState.json +2 -2
- package/json-schema/system/TrainingCategory.json +2 -2
- package/json-schema/system/TrainingCompletionStatus.json +2 -2
- package/json-schema/system/TrainingCourse.json +2 -2
- package/json-schema/system/TrainingPlan.json +2 -2
- package/json-schema/system/TrainingRecord.json +2 -2
- package/json-schema/system/TranslationBundle.json +23 -2
- package/json-schema/system/TranslationConfig.json +2 -2
- package/json-schema/system/TranslationCoverageResult.json +2 -2
- package/json-schema/system/TranslationData.json +23 -2
- package/json-schema/system/TranslationDiffItem.json +2 -2
- package/json-schema/system/TranslationDiffStatus.json +2 -2
- package/json-schema/system/TranslationFileOrganization.json +2 -2
- package/json-schema/system/UserActivityStatus.json +2 -2
- package/json-schema/system/VectorClock.json +2 -2
- package/json-schema/system/WorkerStats.json +2 -2
- package/json-schema/ui/AIChatWindowProps.json +2 -2
- package/json-schema/ui/ActionParam.json +2 -2
- package/json-schema/ui/ActionType.json +2 -2
- package/json-schema/ui/AddRecordConfig.json +2 -2
- package/json-schema/ui/Animation.json +2 -2
- package/json-schema/ui/AnimationTrigger.json +2 -2
- package/json-schema/ui/AppBranding.json +2 -2
- package/json-schema/ui/AppearanceConfig.json +2 -2
- package/json-schema/ui/AriaProps.json +2 -2
- package/json-schema/ui/BlankPageLayout.json +2 -2
- package/json-schema/ui/BlankPageLayoutItem.json +2 -2
- package/json-schema/ui/BorderRadius.json +2 -2
- package/json-schema/ui/BreakpointColumnMap.json +2 -2
- package/json-schema/ui/BreakpointName.json +2 -2
- package/json-schema/ui/BreakpointOrderMap.json +2 -2
- package/json-schema/ui/Breakpoints.json +2 -2
- package/json-schema/ui/CalendarConfig.json +2 -2
- package/json-schema/ui/ChartAnnotation.json +2 -2
- package/json-schema/ui/ChartAxis.json +2 -2
- package/json-schema/ui/ChartConfig.json +2 -2
- package/json-schema/ui/ChartInteraction.json +2 -2
- package/json-schema/ui/ChartSeries.json +2 -2
- package/json-schema/ui/ChartType.json +2 -2
- package/json-schema/ui/ColorPalette.json +2 -2
- package/json-schema/ui/ColumnSummary.json +2 -2
- package/json-schema/ui/ComponentAnimation.json +2 -2
- package/json-schema/ui/ConflictResolution.json +2 -2
- package/json-schema/ui/Dashboard.json +2 -2
- package/json-schema/ui/DashboardHeader.json +2 -2
- package/json-schema/ui/DashboardHeaderAction.json +2 -2
- package/json-schema/ui/DashboardWidget.json +2 -2
- package/json-schema/ui/DateFormat.json +2 -2
- package/json-schema/ui/DensityMode.json +2 -2
- package/json-schema/ui/DndConfig.json +2 -2
- package/json-schema/ui/DragConstraint.json +2 -2
- package/json-schema/ui/DragHandle.json +2 -2
- package/json-schema/ui/DragItem.json +2 -2
- package/json-schema/ui/DropEffect.json +2 -2
- package/json-schema/ui/DropZone.json +2 -2
- package/json-schema/ui/EasingFunction.json +2 -2
- package/json-schema/ui/ElementButtonProps.json +2 -2
- package/json-schema/ui/ElementDataSource.json +2 -2
- package/json-schema/ui/ElementFilterProps.json +2 -2
- package/json-schema/ui/ElementImageProps.json +2 -2
- package/json-schema/ui/ElementNumberProps.json +2 -2
- package/json-schema/ui/ElementRecordPickerProps.json +2 -2
- package/json-schema/ui/ElementTextProps.json +2 -2
- package/json-schema/ui/EmbedConfig.json +2 -2
- package/json-schema/ui/EvictionPolicy.json +2 -2
- package/json-schema/ui/FocusManagement.json +2 -2
- package/json-schema/ui/FocusTrapConfig.json +2 -2
- package/json-schema/ui/GalleryConfig.json +2 -2
- package/json-schema/ui/GanttConfig.json +2 -2
- package/json-schema/ui/GestureConfig.json +2 -2
- package/json-schema/ui/GestureType.json +2 -2
- package/json-schema/ui/GlobalFilter.json +2 -2
- package/json-schema/ui/GlobalFilterOptionsFrom.json +2 -2
- package/json-schema/ui/GroupingConfig.json +2 -2
- package/json-schema/ui/GroupingField.json +2 -2
- package/json-schema/ui/HttpMethod.json +2 -2
- package/json-schema/ui/HttpRequest.json +2 -2
- package/json-schema/ui/I18nLabel.json +2 -2
- package/json-schema/ui/I18nObject.json +2 -2
- package/json-schema/ui/InterfacePageConfig.json +2 -2
- package/json-schema/ui/JoinedReportBlock.json +2 -2
- package/json-schema/ui/KanbanConfig.json +2 -2
- package/json-schema/ui/KeyboardNavigationConfig.json +2 -2
- package/json-schema/ui/KeyboardShortcut.json +2 -2
- package/json-schema/ui/ListChartConfig.json +2 -2
- package/json-schema/ui/ListColumn.json +2 -2
- package/json-schema/ui/LocaleConfig.json +2 -2
- package/json-schema/ui/LongPressGestureConfig.json +2 -2
- package/json-schema/ui/MotionConfig.json +2 -2
- package/json-schema/ui/NavigationConfig.json +2 -2
- package/json-schema/ui/NavigationMode.json +2 -2
- package/json-schema/ui/Notification.json +2 -2
- package/json-schema/ui/NotificationAction.json +2 -2
- package/json-schema/ui/NotificationConfig.json +2 -2
- package/json-schema/ui/NotificationPosition.json +2 -2
- package/json-schema/ui/NotificationSeverity.json +2 -2
- package/json-schema/ui/NotificationType.json +2 -2
- package/json-schema/ui/NumberFormat.json +2 -2
- package/json-schema/ui/OfflineCacheConfig.json +2 -2
- package/json-schema/ui/OfflineConfig.json +2 -2
- package/json-schema/ui/OfflineStrategy.json +2 -2
- package/json-schema/ui/PageAccordionProps.json +2 -2
- package/json-schema/ui/PageCardProps.json +2 -2
- package/json-schema/ui/PageComponentType.json +2 -2
- package/json-schema/ui/PageHeaderProps.json +2 -2
- package/json-schema/ui/PageTabsProps.json +2 -2
- package/json-schema/ui/PageTransition.json +2 -2
- package/json-schema/ui/PageType.json +2 -2
- package/json-schema/ui/PageVariable.json +2 -2
- package/json-schema/ui/PaginationConfig.json +2 -2
- package/json-schema/ui/PerformanceConfig.json +2 -2
- package/json-schema/ui/PersistStorage.json +2 -2
- package/json-schema/ui/PinchGestureConfig.json +2 -2
- package/json-schema/ui/PluralRule.json +2 -2
- package/json-schema/ui/RecordActivityProps.json +2 -2
- package/json-schema/ui/RecordChatterProps.json +2 -2
- package/json-schema/ui/RecordDetailsProps.json +2 -2
- package/json-schema/ui/RecordHighlightsField.json +2 -2
- package/json-schema/ui/RecordHighlightsProps.json +2 -2
- package/json-schema/ui/RecordPathProps.json +2 -2
- package/json-schema/ui/RecordRelatedListProps.json +2 -2
- package/json-schema/ui/RecordReviewConfig.json +2 -2
- package/json-schema/ui/Report.json +2 -2
- package/json-schema/ui/ReportChart.json +2 -2
- package/json-schema/ui/ReportColumn.json +2 -2
- package/json-schema/ui/ReportGrouping.json +2 -2
- package/json-schema/ui/ReportType.json +2 -2
- package/json-schema/ui/ResponsiveConfig.json +2 -2
- package/json-schema/ui/RowColorConfig.json +2 -2
- package/json-schema/ui/RowHeight.json +2 -2
- package/json-schema/ui/SelectionConfig.json +2 -2
- package/json-schema/ui/Shadow.json +2 -2
- package/json-schema/ui/SharingConfig.json +2 -2
- package/json-schema/ui/Spacing.json +2 -2
- package/json-schema/ui/SwipeDirection.json +2 -2
- package/json-schema/ui/SwipeGestureConfig.json +2 -2
- package/json-schema/ui/SyncConfig.json +2 -2
- package/json-schema/ui/Theme.json +2 -2
- package/json-schema/ui/ThemeMode.json +2 -2
- package/json-schema/ui/TimelineConfig.json +2 -2
- package/json-schema/ui/TouchInteraction.json +2 -2
- package/json-schema/ui/TouchTargetConfig.json +2 -2
- package/json-schema/ui/TransitionConfig.json +2 -2
- package/json-schema/ui/TransitionPreset.json +2 -2
- package/json-schema/ui/Typography.json +2 -2
- package/json-schema/ui/UserActionsConfig.json +2 -2
- package/json-schema/ui/ViewData.json +2 -2
- package/json-schema/ui/ViewFilterRule.json +2 -2
- package/json-schema/ui/ViewSharing.json +2 -2
- package/json-schema/ui/ViewTab.json +2 -2
- package/json-schema/ui/VisualizationType.json +2 -2
- package/json-schema/ui/WcagContrastLevel.json +2 -2
- package/json-schema/ui/WidgetActionType.json +2 -2
- package/json-schema/ui/WidgetColorVariant.json +2 -2
- package/json-schema/ui/WidgetEvent.json +2 -2
- package/json-schema/ui/WidgetLifecycle.json +2 -2
- package/json-schema/ui/WidgetManifest.json +2 -2
- package/json-schema/ui/WidgetMeasure.json +2 -2
- package/json-schema/ui/WidgetProperty.json +2 -2
- package/json-schema/ui/WidgetSource.json +2 -2
- package/json-schema/ui/ZIndex.json +2 -2
- package/package.json +2 -2
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/lazy-schema.ts","../src/kernel/plugin-capability.zod.ts","../src/kernel/plugin-loading.zod.ts","../src/kernel/plugin.zod.ts","../src/data/dataset.zod.ts","../src/kernel/manifest.zod.ts","../src/data/datasource.zod.ts","../src/system/translation.zod.ts","../src/shared/identifiers.zod.ts","../src/shared/expression.zod.ts","../src/system/encryption.zod.ts","../src/system/masking.zod.ts","../src/data/field.zod.ts","../src/shared/suggestions.zod.ts","../src/shared/error-map.zod.ts","../src/shared/metadata-collection.zod.ts","../src/data/validation.zod.ts","../src/automation/state-machine.zod.ts","../src/ui/i18n.zod.ts","../src/data/hook-body.zod.ts","../src/ui/action.zod.ts","../src/ui/sharing.zod.ts","../src/ui/responsive.zod.ts","../src/shared/http.zod.ts","../src/ui/view.zod.ts","../src/data/object.zod.ts","../src/ui/app.zod.ts","../src/shared/enums.zod.ts","../src/data/filter.zod.ts","../src/ui/page.zod.ts","../src/ui/chart.zod.ts","../src/ui/dashboard.zod.ts","../src/ui/report.zod.ts","../src/ui/touch.zod.ts","../src/ui/keyboard.zod.ts","../src/ui/theme.zod.ts","../src/automation/approval.zod.ts","../src/automation/workflow.zod.ts","../src/automation/flow.zod.ts","../src/identity/role.zod.ts","../src/security/rls.zod.ts","../src/security/permission.zod.ts","../src/security/sharing.zod.ts","../src/security/policy.zod.ts","../src/api/endpoint.zod.ts","../src/kernel/feature.zod.ts","../src/ai/agent.zod.ts","../src/ai/skill.zod.ts","../src/ai/cost.zod.ts","../src/ai/rag-pipeline.zod.ts","../src/data/hook.zod.ts","../src/data/query.zod.ts","../src/data/mapping.zod.ts","../src/data/analytics.zod.ts","../src/automation/webhook.zod.ts","../src/shared/connector-auth.zod.ts","../src/shared/mapping.zod.ts","../src/integration/connector.zod.ts","../src/stack.zod.ts","../src/ai/tool.zod.ts"],"names":["z","suggestions","suggestion","base","FieldMappingSchema","RateLimitConfigSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { z } from 'zod';\n\n/**\n * Wrap a Zod schema constructor so its body is only evaluated on first use.\n *\n * Why: building Zod schemas at module-load creates millions of closures that\n * dominate dev-server RSS even though most schemas are never parsed in a\n * given session. Wrapping the constructor in a Proxy defers allocation until\n * the first property access (`.parse`, `.shape`, `._def`, etc.) and reuses\n * a single cached instance thereafter.\n *\n * Type system: the returned Proxy is structurally indistinguishable from the\n * underlying ZodType, so `z.infer<typeof X>` and `.parse()` callers do not\n * need to change.\n *\n * Emergency rollback: set `OS_EAGER_SCHEMAS=1` to evaluate the\n * factory immediately and bypass the Proxy entirely.\n */\nexport function lazySchema<T extends z.ZodTypeAny>(factory: () => T): T {\n if (typeof process !== 'undefined' && process.env?.OS_EAGER_SCHEMAS === '1') {\n return factory();\n }\n\n let cached: T | undefined;\n const resolve = (): T => {\n if (cached === undefined) cached = factory();\n return cached;\n };\n\n const target = function lazyZod() {} as unknown as T;\n\n const proxy = new Proxy(target as object, {\n get(_t, prop) {\n const real = resolve() as unknown as Record<PropertyKey, unknown>;\n const value = real[prop];\n if (typeof value === 'function') {\n return (value as (...a: unknown[]) => unknown).bind(real);\n }\n return value;\n },\n set(_t, prop, value) {\n const real = resolve() as unknown as Record<PropertyKey, unknown>;\n real[prop] = value;\n return true;\n },\n has(_t, prop) {\n return prop in (resolve() as object);\n },\n ownKeys() {\n return Reflect.ownKeys(resolve() as object);\n },\n getOwnPropertyDescriptor(_t, prop) {\n return Reflect.getOwnPropertyDescriptor(resolve() as object, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(resolve() as object);\n },\n });\n\n return proxy as T;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Plugin Capability Protocol\n * \n * Defines the standard way plugins declare their capabilities, implementations,\n * and conformance levels to ensure interoperability across vendors.\n * \n * Based on the Protocol-Oriented Architecture pattern similar to:\n * - Kubernetes CRDs (Custom Resource Definitions)\n * - OSGi Service Registry\n * - Eclipse Extension Points\n */\n\n/**\n * Capability Conformance Level\n * Indicates how completely a plugin implements a given protocol.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const CapabilityConformanceLevelSchema = lazySchema(() => z.enum([\n 'full', // Complete implementation of all protocol features\n 'partial', // Subset implementation with specific features listed\n 'experimental', // Unstable/preview implementation\n 'deprecated', // Still supported but scheduled for removal\n]).describe('Level of protocol conformance'));\n\n/**\n * Protocol Version Schema\n * Uses semantic versioning to track protocol evolution.\n */\nexport const ProtocolVersionSchema = lazySchema(() => z.object({\n major: z.number().int().min(0),\n minor: z.number().int().min(0),\n patch: z.number().int().min(0),\n}).describe('Semantic version of the protocol'));\n\n/**\n * Protocol Reference\n * Uniquely identifies a protocol/interface that a plugin can implement.\n * \n * Examples:\n * - com.objectstack.protocol.storage.v1\n * - com.objectstack.protocol.auth.oauth2.v2\n * - com.acme.protocol.payment.stripe.v1\n */\nexport const ProtocolReferenceSchema = lazySchema(() => z.object({\n /**\n * Protocol identifier using reverse domain notation.\n * Format: {domain}.protocol.{category}.{name}[.{subcategory}].v{major}\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+protocol\\.[a-z][a-z0-9._]*\\.v\\d+$/)\n .describe('Unique protocol identifier (e.g., com.objectstack.protocol.storage.v1)'),\n \n /**\n * Human-readable protocol name\n */\n label: z.string(),\n \n /**\n * Protocol version\n */\n version: ProtocolVersionSchema,\n \n /**\n * Detailed protocol specification URL or file reference\n */\n specification: z.string().optional().describe('URL or path to protocol specification'),\n \n /**\n * Brief description of what this protocol defines\n */\n description: z.string().optional(),\n}));\n\n/**\n * Protocol Feature\n * Represents a specific capability within a protocol.\n */\nexport const ProtocolFeatureSchema = lazySchema(() => z.object({\n name: z.string().describe('Feature identifier within the protocol'),\n enabled: z.boolean().default(true),\n description: z.string().optional(),\n sinceVersion: z.string().optional().describe('Version when this feature was added'),\n deprecatedSince: z.string().optional().describe('Version when deprecated'),\n}));\n\n/**\n * Plugin Capability Declaration\n * Documents what protocols a plugin implements and to what extent.\n */\nexport const PluginCapabilitySchema = lazySchema(() => z.object({\n /**\n * The protocol being implemented\n */\n protocol: ProtocolReferenceSchema,\n \n /**\n * Conformance level\n */\n conformance: CapabilityConformanceLevelSchema.default('full'),\n \n /**\n * Specific features implemented (required if conformance is 'partial')\n */\n implementedFeatures: z.array(z.string()).optional().describe('List of implemented feature names'),\n \n /**\n * Optional feature flags indicating advanced capabilities\n */\n features: z.array(ProtocolFeatureSchema).optional(),\n \n /**\n * Custom metadata for vendor-specific information\n */\n metadata: z.record(z.string(), z.unknown()).optional(),\n \n /**\n * Testing/Certification status\n */\n certified: z.boolean().default(false).describe('Has passed official conformance tests'),\n certificationDate: z.string().datetime().optional(),\n}));\n\n/**\n * Plugin Interface Declaration\n * Defines the contract for services this plugin provides to other plugins.\n */\nexport const PluginInterfaceSchema = lazySchema(() => z.object({\n /**\n * Unique interface identifier\n * Format: {plugin-id}.interface.{name}\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+interface\\.[a-z][a-z0-9._]+$/)\n .describe('Unique interface identifier'),\n \n /**\n * Interface name\n */\n name: z.string(),\n \n /**\n * Description of what this interface provides\n */\n description: z.string().optional(),\n \n /**\n * Interface version\n */\n version: ProtocolVersionSchema,\n \n /**\n * Methods exposed by this interface\n */\n methods: z.array(z.object({\n name: z.string().describe('Method name'),\n description: z.string().optional(),\n parameters: z.array(z.object({\n name: z.string(),\n type: z.string().describe('Type notation (e.g., string, number, User)'),\n required: z.boolean().default(true),\n description: z.string().optional(),\n })).optional(),\n returnType: z.string().optional().describe('Return value type'),\n async: z.boolean().default(false).describe('Whether method returns a Promise'),\n })),\n \n /**\n * Events emitted by this interface\n */\n events: z.array(z.object({\n name: z.string().describe('Event name'),\n description: z.string().optional(),\n payload: z.string().optional().describe('Event payload type'),\n })).optional(),\n \n /**\n * Stability level\n */\n stability: z.enum(['stable', 'beta', 'alpha', 'experimental']).default('stable'),\n}));\n\n/**\n * Plugin Dependency Declaration\n * Specifies what other plugins or capabilities this plugin requires.\n */\nexport const PluginDependencySchema = lazySchema(() => z.object({\n /**\n * Plugin ID using reverse domain notation\n */\n pluginId: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+[a-z][a-z0-9-]+$/)\n .describe('Required plugin identifier'),\n \n /**\n * Version constraint (supports semver ranges)\n * Examples: \"1.0.0\", \"^1.2.3\", \">=2.0.0 <3.0.0\"\n */\n version: z.string().describe('Semantic version constraint'),\n \n /**\n * Whether this dependency is optional\n */\n optional: z.boolean().default(false),\n \n /**\n * Reason for the dependency\n */\n reason: z.string().optional(),\n \n /**\n * Minimum required capabilities from the dependency\n */\n requiredCapabilities: z.array(z.string()).optional().describe('Protocol IDs the dependency must support'),\n}));\n\n/**\n * Extension Point Declaration\n * Defines hooks where other plugins can extend this plugin's functionality.\n */\nexport const ExtensionPointSchema = lazySchema(() => z.object({\n /**\n * Extension point identifier\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+extension\\.[a-z][a-z0-9._]+$/)\n .describe('Unique extension point identifier'),\n \n /**\n * Extension point name\n */\n name: z.string(),\n \n /**\n * Description\n */\n description: z.string().optional(),\n \n /**\n * Type of extension point\n */\n type: z.enum([\n 'action', // Plugins can register executable actions\n 'hook', // Plugins can listen to lifecycle events\n 'widget', // Plugins can contribute UI widgets\n 'provider', // Plugins can provide data/services\n 'transformer', // Plugins can transform data\n 'validator', // Plugins can validate data\n 'decorator', // Plugins can enhance/wrap functionality\n ]),\n \n /**\n * Expected interface contract for extensions\n */\n contract: z.object({\n input: z.string().optional().describe('Input type/schema'),\n output: z.string().optional().describe('Output type/schema'),\n signature: z.string().optional().describe('Function signature if applicable'),\n }).optional(),\n \n /**\n * Cardinality\n */\n cardinality: z.enum(['single', 'multiple']).default('multiple')\n .describe('Whether multiple extensions can register to this point'),\n}));\n\n/**\n * Complete Plugin Capability Manifest\n * This is included in the main plugin manifest to declare all capabilities.\n */\nexport const PluginCapabilityManifestSchema = lazySchema(() => z.object({\n /**\n * Protocols this plugin implements\n */\n implements: z.array(PluginCapabilitySchema).optional()\n .describe('List of protocols this plugin conforms to'),\n \n /**\n * Interfaces this plugin exposes to other plugins\n */\n provides: z.array(PluginInterfaceSchema).optional()\n .describe('Services/APIs this plugin offers to others'),\n \n /**\n * Dependencies on other plugins\n */\n requires: z.array(PluginDependencySchema).optional()\n .describe('Required plugins and their capabilities'),\n \n /**\n * Extension points this plugin defines\n */\n extensionPoints: z.array(ExtensionPointSchema).optional()\n .describe('Points where other plugins can extend this plugin'),\n \n /**\n * Extensions this plugin contributes to other plugins\n */\n extensions: z.array(z.object({\n targetPluginId: z.string().describe('Plugin ID being extended'),\n extensionPointId: z.string().describe('Extension point identifier'),\n implementation: z.string().describe('Path to implementation module'),\n priority: z.number().int().default(100).describe('Registration priority (lower = higher priority)'),\n })).optional().describe('Extensions contributed to other plugins'),\n}));\n\n// Export types\nexport type CapabilityConformanceLevel = z.infer<typeof CapabilityConformanceLevelSchema>;\nexport type ProtocolVersion = z.infer<typeof ProtocolVersionSchema>;\nexport type ProtocolReference = z.infer<typeof ProtocolReferenceSchema>;\nexport type ProtocolFeature = z.infer<typeof ProtocolFeatureSchema>;\nexport type PluginCapability = z.infer<typeof PluginCapabilitySchema>;\nexport type PluginInterface = z.infer<typeof PluginInterfaceSchema>;\nexport type PluginDependency = z.infer<typeof PluginDependencySchema>;\nexport type ExtensionPoint = z.infer<typeof ExtensionPointSchema>;\nexport type PluginCapabilityManifest = z.infer<typeof PluginCapabilityManifestSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Plugin Loading Protocol\n * \n * Defines the enhanced plugin loading mechanism for the microkernel architecture.\n * Inspired by industry best practices from:\n * - Kubernetes CRDs and Operators\n * - OSGi Dynamic Module System\n * - Eclipse Plugin Framework\n * - Webpack Module Federation\n * \n * This protocol enables:\n * - Lazy loading and code splitting\n * - Dynamic imports and parallel initialization\n * - Capability-based discovery\n * - Hot reload in development\n * - Advanced caching strategies\n */\n\n/**\n * Plugin Loading Strategy\n * Determines how and when a plugin is loaded into memory\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PluginLoadingStrategySchema = lazySchema(() => z.enum([\n 'eager', // Load immediately during bootstrap (critical plugins)\n 'lazy', // Load on first use (feature plugins)\n 'parallel', // Load in parallel with other plugins\n 'deferred', // Load after initial bootstrap complete\n 'on-demand', // Load only when explicitly requested\n]).describe('Plugin loading strategy'));\n\n/**\n * Plugin Preloading Configuration\n * Configures preloading behavior for faster activation\n */\nexport const PluginPreloadConfigSchema = lazySchema(() => z.object({\n /**\n * Enable preloading for this plugin\n */\n enabled: z.boolean().default(false),\n \n /**\n * Preload priority (lower = higher priority)\n */\n priority: z.number().int().min(0).default(100),\n \n /**\n * Resources to preload\n */\n resources: z.array(z.enum([\n 'metadata', // Plugin manifest and metadata\n 'dependencies', // Plugin dependencies\n 'assets', // Static assets (icons, translations)\n 'code', // JavaScript code chunks\n 'services', // Service definitions\n ])).optional(),\n \n /**\n * Conditions for preloading\n */\n conditions: z.object({\n /**\n * Preload only on specific routes\n */\n routes: z.array(z.string()).optional(),\n \n /**\n * Preload only for specific user roles\n */\n roles: z.array(z.string()).optional(),\n \n /**\n * Preload based on device type\n */\n deviceType: z.array(z.enum(['desktop', 'mobile', 'tablet'])).optional(),\n \n /**\n * Network connection quality threshold\n */\n minNetworkSpeed: z.enum(['slow-2g', '2g', '3g', '4g']).optional(),\n }).optional(),\n}).describe('Plugin preloading configuration'));\n\n/**\n * Plugin Code Splitting Configuration\n * Configures how plugin code is split for optimal loading\n */\nexport const PluginCodeSplittingSchema = lazySchema(() => z.object({\n /**\n * Enable code splitting for this plugin\n */\n enabled: z.boolean().default(true),\n \n /**\n * Split strategy\n */\n strategy: z.enum([\n 'route', // Split by UI routes\n 'feature', // Split by feature modules\n 'size', // Split by bundle size threshold\n 'custom', // Custom split points defined by plugin\n ]).default('feature'),\n \n /**\n * Chunk naming strategy\n */\n chunkNaming: z.enum(['hashed', 'named', 'sequential']).default('hashed'),\n \n /**\n * Maximum chunk size in KB\n */\n maxChunkSize: z.number().int().min(10).optional().describe('Max chunk size in KB'),\n \n /**\n * Shared dependencies optimization\n */\n sharedDependencies: z.object({\n enabled: z.boolean().default(true),\n /**\n * Minimum times a module must be shared before extraction\n */\n minChunks: z.number().int().min(1).default(2),\n }).optional(),\n}).describe('Plugin code splitting configuration'));\n\n/**\n * Plugin Dynamic Import Configuration\n * Configures dynamic import behavior for runtime module loading\n */\nexport const PluginDynamicImportSchema = lazySchema(() => z.object({\n /**\n * Enable dynamic imports\n */\n enabled: z.boolean().default(true),\n \n /**\n * Import mode\n */\n mode: z.enum([\n 'async', // Asynchronous import (recommended)\n 'sync', // Synchronous import (blocking)\n 'eager', // Eager evaluation\n 'lazy', // Lazy evaluation\n ]).default('async'),\n \n /**\n * Prefetch strategy\n */\n prefetch: z.boolean().default(false).describe('Prefetch module in idle time'),\n \n /**\n * Preload strategy\n */\n preload: z.boolean().default(false).describe('Preload module in parallel with parent'),\n \n /**\n * Webpack magic comments support\n */\n webpackChunkName: z.string().optional().describe('Custom chunk name for webpack'),\n \n /**\n * Import timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000).describe('Dynamic import timeout (ms)'),\n \n /**\n * Retry configuration on import failure\n */\n retry: z.object({\n enabled: z.boolean().default(true),\n maxAttempts: z.number().int().min(1).max(10).default(3),\n backoffMs: z.number().int().min(0).default(1000).describe('Exponential backoff base delay'),\n }).optional(),\n}).describe('Plugin dynamic import configuration'));\n\n/**\n * Plugin Initialization Configuration\n * Configures how plugin initialization is executed\n */\nexport const PluginInitializationSchema = lazySchema(() => z.object({\n /**\n * Initialization mode\n */\n mode: z.enum([\n 'sync', // Synchronous initialization\n 'async', // Asynchronous initialization\n 'parallel', // Parallel with other plugins\n 'sequential', // Must complete before next plugin\n ]).default('async'),\n \n /**\n * Initialization timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000),\n \n /**\n * Startup priority (lower = higher priority, earlier initialization)\n */\n priority: z.number().int().min(0).default(100),\n \n /**\n * Whether to continue bootstrap if this plugin fails\n */\n critical: z.boolean().default(false).describe('If true, kernel bootstrap fails if plugin fails'),\n \n /**\n * Retry configuration on initialization failure\n */\n retry: z.object({\n enabled: z.boolean().default(false),\n maxAttempts: z.number().int().min(1).max(5).default(3),\n backoffMs: z.number().int().min(0).default(1000),\n }).optional(),\n \n /**\n * Health check interval for monitoring\n */\n healthCheckInterval: z.number().int().min(0).optional().describe('Health check interval in ms (0 = disabled)'),\n}).describe('Plugin initialization configuration'));\n\n/**\n * Plugin Dependency Resolution Configuration\n * Advanced dependency resolution using semantic versioning\n */\nexport const PluginDependencyResolutionSchema = lazySchema(() => z.object({\n /**\n * Dependency resolution strategy\n */\n strategy: z.enum([\n 'strict', // Exact version match required\n 'compatible', // Semver compatible versions (^)\n 'latest', // Always use latest compatible\n 'pinned', // Lock to specific version\n ]).default('compatible'),\n \n /**\n * Peer dependency handling\n */\n peerDependencies: z.object({\n /**\n * Whether to resolve peer dependencies\n */\n resolve: z.boolean().default(true),\n \n /**\n * Action on missing peer dependency\n */\n onMissing: z.enum(['error', 'warn', 'ignore']).default('warn'),\n \n /**\n * Action on peer version mismatch\n */\n onMismatch: z.enum(['error', 'warn', 'ignore']).default('warn'),\n }).optional(),\n \n /**\n * Optional dependency handling\n */\n optionalDependencies: z.object({\n /**\n * Whether to attempt loading optional dependencies\n */\n load: z.boolean().default(true),\n \n /**\n * Action on optional dependency load failure\n */\n onFailure: z.enum(['warn', 'ignore']).default('warn'),\n }).optional(),\n \n /**\n * Conflict resolution\n */\n conflictResolution: z.enum([\n 'fail', // Fail on any version conflict\n 'latest', // Use latest version\n 'oldest', // Use oldest version\n 'manual', // Require manual resolution\n ]).default('latest'),\n \n /**\n * Circular dependency handling\n */\n circularDependencies: z.enum([\n 'error', // Throw error on circular dependency\n 'warn', // Warn but continue\n 'allow', // Allow circular dependencies\n ]).default('warn'),\n}).describe('Plugin dependency resolution configuration'));\n\n/**\n * Plugin Hot Reload Configuration\n * Enables hot module replacement for development and production environments.\n * \n * Production mode adds safety features: health validation, rollback on failure,\n * connection draining, and concurrency control for zero-downtime reloads.\n */\nexport const PluginHotReloadSchema = lazySchema(() => z.object({\n /**\n * Enable hot reload\n */\n enabled: z.boolean().default(false),\n \n /**\n * Target environment for hot reload behavior\n */\n environment: z.enum([\n 'development', // Fast reload with relaxed safety (file watchers, no health validation)\n 'staging', // Production-like reload with validation but relaxed rollback\n 'production', // Full safety: health validation, rollback, connection draining\n ]).default('development').describe('Target environment controlling safety level'),\n \n /**\n * Hot reload strategy\n */\n strategy: z.enum([\n 'full', // Full plugin reload (destroy and reinitialize)\n 'partial', // Partial reload (update changed modules only)\n 'state-preserve', // Preserve plugin state during reload\n ]).default('full'),\n \n /**\n * Files to watch for changes\n */\n watchPatterns: z.array(z.string()).optional().describe('Glob patterns for files to watch'),\n \n /**\n * Files to ignore\n */\n ignorePatterns: z.array(z.string()).optional().describe('Glob patterns for files to ignore'),\n \n /**\n * Debounce delay in milliseconds\n */\n debounceMs: z.number().int().min(0).default(300),\n \n /**\n * Whether to preserve state during reload\n */\n preserveState: z.boolean().default(false),\n \n /**\n * State serialization\n */\n stateSerialization: z.object({\n enabled: z.boolean().default(false),\n /**\n * Path to state serialization handler\n */\n handler: z.string().optional(),\n }).optional(),\n \n /**\n * Hooks for hot reload lifecycle\n */\n hooks: z.object({\n beforeReload: z.string().optional().describe('Function to call before reload'),\n afterReload: z.string().optional().describe('Function to call after reload'),\n onError: z.string().optional().describe('Function to call on reload error'),\n }).optional(),\n \n /**\n * Production safety configuration\n * Applied when environment is 'staging' or 'production'\n */\n productionSafety: z.object({\n /**\n * Validate plugin health before completing reload\n */\n healthValidation: z.boolean().default(true)\n .describe('Run health checks after reload before accepting traffic'),\n \n /**\n * Automatically rollback to previous version on reload failure\n */\n rollbackOnFailure: z.boolean().default(true)\n .describe('Auto-rollback if reloaded plugin fails health check'),\n \n /**\n * Maximum time to wait for health validation after reload (ms)\n */\n healthTimeout: z.number().int().min(1000).default(30000)\n .describe('Health check timeout after reload in ms'),\n \n /**\n * Drain active connections before reload\n */\n drainConnections: z.boolean().default(true)\n .describe('Gracefully drain active requests before reloading'),\n \n /**\n * Maximum time to wait for connection draining (ms)\n */\n drainTimeout: z.number().int().min(0).default(15000)\n .describe('Max wait time for connection draining in ms'),\n \n /**\n * Maximum number of concurrent plugin reloads\n */\n maxConcurrentReloads: z.number().int().min(1).default(1)\n .describe('Limit concurrent reloads to prevent system instability'),\n \n /**\n * Minimum interval between reloads of the same plugin (ms)\n */\n minReloadInterval: z.number().int().min(1000).default(5000)\n .describe('Cooldown period between reloads of the same plugin'),\n }).optional(),\n}).describe('Plugin hot reload configuration'));\n\n/**\n * Plugin Caching Configuration\n * Configures caching strategy for faster subsequent loads\n */\nexport const PluginCachingSchema = lazySchema(() => z.object({\n /**\n * Enable caching\n */\n enabled: z.boolean().default(true),\n \n /**\n * Cache storage type\n */\n storage: z.enum([\n 'memory', // In-memory cache (fastest, not persistent)\n 'disk', // Disk cache (persistent)\n 'indexeddb', // Browser IndexedDB (persistent, browser only)\n 'hybrid', // Memory + Disk hybrid\n ]).default('memory'),\n \n /**\n * Cache key strategy\n */\n keyStrategy: z.enum([\n 'version', // Cache by plugin version\n 'hash', // Cache by content hash\n 'timestamp', // Cache by last modified timestamp\n ]).default('version'),\n \n /**\n * Cache TTL in seconds\n */\n ttl: z.number().int().min(0).optional().describe('Time to live in seconds (0 = infinite)'),\n \n /**\n * Maximum cache size in MB\n */\n maxSize: z.number().int().min(1).optional().describe('Max cache size in MB'),\n \n /**\n * Cache invalidation triggers\n */\n invalidateOn: z.array(z.enum([\n 'version-change',\n 'dependency-change',\n 'manual',\n 'error',\n ])).optional(),\n \n /**\n * Compression\n */\n compression: z.object({\n enabled: z.boolean().default(false),\n algorithm: z.enum(['gzip', 'brotli', 'deflate']).default('gzip'),\n }).optional(),\n}).describe('Plugin caching configuration'));\n\n/**\n * Plugin Sandboxing Configuration\n * Security isolation for plugins with configurable scope.\n * \n * Supports isolation beyond automation scripts: any plugin can be sandboxed\n * with process-level isolation and inter-plugin communication (IPC).\n */\nexport const PluginSandboxingSchema = lazySchema(() => z.object({\n /**\n * Enable sandboxing\n */\n enabled: z.boolean().default(false),\n \n /**\n * Isolation scope - which plugins are subject to sandboxing\n */\n scope: z.enum([\n 'automation-only', // Sandbox automation/scripting plugins only (current behavior)\n 'untrusted-only', // Sandbox plugins below a trust threshold\n 'all-plugins', // Sandbox all plugins (maximum isolation)\n ]).default('automation-only').describe('Which plugins are subject to isolation'),\n \n /**\n * Sandbox isolation level\n */\n isolationLevel: z.enum([\n 'none', // No isolation\n 'process', // Separate process (Node.js worker threads)\n 'vm', // VM context isolation\n 'iframe', // iframe isolation (browser)\n 'web-worker', // Web Worker (browser)\n ]).default('none'),\n \n /**\n * Allowed capabilities\n */\n allowedCapabilities: z.array(z.string()).optional().describe('List of allowed capability IDs'),\n \n /**\n * Resource quotas\n */\n resourceQuotas: z.object({\n /**\n * Maximum memory usage in MB\n */\n maxMemoryMB: z.number().int().min(1).optional(),\n \n /**\n * Maximum CPU time in milliseconds\n */\n maxCpuTimeMs: z.number().int().min(100).optional(),\n \n /**\n * Maximum number of file descriptors\n */\n maxFileDescriptors: z.number().int().min(1).optional(),\n \n /**\n * Maximum network bandwidth in KB/s\n */\n maxNetworkKBps: z.number().int().min(1).optional(),\n }).optional(),\n \n /**\n * Permissions\n */\n permissions: z.object({\n /**\n * Allowed API access\n */\n allowedAPIs: z.array(z.string()).optional(),\n \n /**\n * Allowed file system paths\n */\n allowedPaths: z.array(z.string()).optional(),\n \n /**\n * Allowed network endpoints\n */\n allowedEndpoints: z.array(z.string()).optional(),\n \n /**\n * Allowed environment variables\n */\n allowedEnvVars: z.array(z.string()).optional(),\n }).optional(),\n \n /**\n * Inter-Plugin Communication (IPC) configuration\n * Enables isolated plugins to communicate with the kernel and other plugins\n */\n ipc: z.object({\n /**\n * Enable IPC for sandboxed plugins\n */\n enabled: z.boolean().default(true)\n .describe('Allow sandboxed plugins to communicate via IPC'),\n \n /**\n * IPC transport mechanism\n */\n transport: z.enum([\n 'message-port', // MessagePort (worker threads / Web Workers)\n 'unix-socket', // Unix domain sockets (process isolation)\n 'tcp', // TCP sockets (container isolation)\n 'memory', // Shared memory channel (in-process VM)\n ]).default('message-port')\n .describe('IPC transport for cross-boundary communication'),\n \n /**\n * Maximum message size in bytes\n */\n maxMessageSize: z.number().int().min(1024).default(1048576)\n .describe('Maximum IPC message size in bytes (default 1MB)'),\n \n /**\n * Message timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000)\n .describe('IPC message response timeout in ms'),\n \n /**\n * Allowed service calls through IPC\n */\n allowedServices: z.array(z.string()).optional()\n .describe('Service names the sandboxed plugin may invoke via IPC'),\n }).optional(),\n}).describe('Plugin sandboxing configuration'));\n\n/**\n * Plugin Performance Monitoring Configuration\n * Telemetry and performance tracking\n */\nexport const PluginPerformanceMonitoringSchema = lazySchema(() => z.object({\n /**\n * Enable performance monitoring\n */\n enabled: z.boolean().default(false),\n \n /**\n * Metrics to collect\n */\n metrics: z.array(z.enum([\n 'load-time',\n 'init-time',\n 'memory-usage',\n 'cpu-usage',\n 'api-calls',\n 'error-rate',\n 'cache-hit-rate',\n ])).optional(),\n \n /**\n * Sampling rate (0-1, where 1 = 100%)\n */\n samplingRate: z.number().min(0).max(1).default(1),\n \n /**\n * Reporting interval in seconds\n */\n reportingInterval: z.number().int().min(1).default(60),\n \n /**\n * Performance budget thresholds\n */\n budgets: z.object({\n /**\n * Maximum load time in milliseconds\n */\n maxLoadTimeMs: z.number().int().min(0).optional(),\n \n /**\n * Maximum init time in milliseconds\n */\n maxInitTimeMs: z.number().int().min(0).optional(),\n \n /**\n * Maximum memory usage in MB\n */\n maxMemoryMB: z.number().int().min(0).optional(),\n }).optional(),\n \n /**\n * Action on budget violation\n */\n onBudgetViolation: z.enum(['warn', 'error', 'ignore']).default('warn'),\n}).describe('Plugin performance monitoring configuration'));\n\n/**\n * Complete Plugin Loading Configuration\n * Combines all loading-related configurations\n */\nexport const PluginLoadingConfigSchema = lazySchema(() => z.object({\n /**\n * Loading strategy\n */\n strategy: PluginLoadingStrategySchema.default('lazy'),\n \n /**\n * Preloading configuration\n */\n preload: PluginPreloadConfigSchema.optional(),\n \n /**\n * Code splitting configuration\n */\n codeSplitting: PluginCodeSplittingSchema.optional(),\n \n /**\n * Dynamic import configuration\n */\n dynamicImport: PluginDynamicImportSchema.optional(),\n \n /**\n * Initialization configuration\n */\n initialization: PluginInitializationSchema.optional(),\n \n /**\n * Dependency resolution configuration\n */\n dependencyResolution: PluginDependencyResolutionSchema.optional(),\n \n /**\n * Hot reload configuration (development and production)\n */\n hotReload: PluginHotReloadSchema.optional(),\n \n /**\n * Caching configuration\n */\n caching: PluginCachingSchema.optional(),\n \n /**\n * Sandboxing configuration\n */\n sandboxing: PluginSandboxingSchema.optional(),\n \n /**\n * Performance monitoring\n */\n monitoring: PluginPerformanceMonitoringSchema.optional(),\n}).describe('Complete plugin loading configuration'));\n\n/**\n * Plugin Loading Event\n * Emitted during plugin loading lifecycle\n */\nexport const PluginLoadingEventSchema = lazySchema(() => z.object({\n /**\n * Event type\n */\n type: z.enum([\n 'load-started',\n 'load-completed',\n 'load-failed',\n 'init-started',\n 'init-completed',\n 'init-failed',\n 'preload-started',\n 'preload-completed',\n 'cache-hit',\n 'cache-miss',\n 'hot-reload',\n 'dynamic-load', // Plugin loaded at runtime\n 'dynamic-unload', // Plugin unloaded at runtime\n 'dynamic-discover', // Plugin discovered via registry\n ]),\n \n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Timestamp\n */\n timestamp: z.number().int().min(0),\n \n /**\n * Duration in milliseconds\n */\n durationMs: z.number().int().min(0).optional(),\n \n /**\n * Additional metadata\n */\n metadata: z.record(z.string(), z.unknown()).optional(),\n \n /**\n * Error if event represents a failure\n */\n error: z.object({\n message: z.string(),\n code: z.string().optional(),\n stack: z.string().optional(),\n }).optional(),\n}).describe('Plugin loading lifecycle event'));\n\n/**\n * Plugin Loading State\n * Tracks the current loading state of a plugin\n */\nexport const PluginLoadingStateSchema = lazySchema(() => z.object({\n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Current state\n */\n state: z.enum([\n 'pending', // Not yet loaded\n 'loading', // Currently loading\n 'loaded', // Code loaded, not initialized\n 'initializing', // Currently initializing\n 'ready', // Fully initialized and ready\n 'failed', // Failed to load or initialize\n 'reloading', // Hot reloading in progress\n 'unloading', // Being unloaded at runtime\n 'unloaded', // Successfully unloaded (dynamic loading)\n ]),\n \n /**\n * Load progress (0-100)\n */\n progress: z.number().min(0).max(100).default(0),\n \n /**\n * Loading start time\n */\n startedAt: z.number().int().min(0).optional(),\n \n /**\n * Loading completion time\n */\n completedAt: z.number().int().min(0).optional(),\n \n /**\n * Last error\n */\n lastError: z.string().optional(),\n \n /**\n * Retry count\n */\n retryCount: z.number().int().min(0).default(0),\n}).describe('Plugin loading state'));\n\n// Export types\nexport type PluginLoadingStrategy = z.infer<typeof PluginLoadingStrategySchema>;\nexport type PluginPreloadConfig = z.infer<typeof PluginPreloadConfigSchema>;\nexport type PluginCodeSplitting = z.infer<typeof PluginCodeSplittingSchema>;\nexport type PluginDynamicImport = z.infer<typeof PluginDynamicImportSchema>;\nexport type PluginInitialization = z.infer<typeof PluginInitializationSchema>;\nexport type PluginDependencyResolution = z.infer<typeof PluginDependencyResolutionSchema>;\nexport type PluginHotReload = z.infer<typeof PluginHotReloadSchema>;\nexport type PluginCaching = z.infer<typeof PluginCachingSchema>;\nexport type PluginSandboxing = z.infer<typeof PluginSandboxingSchema>;\nexport type PluginPerformanceMonitoring = z.infer<typeof PluginPerformanceMonitoringSchema>;\nexport type PluginLoadingConfig = z.infer<typeof PluginLoadingConfigSchema>;\nexport type PluginLoadingEvent = z.infer<typeof PluginLoadingEventSchema>;\nexport type PluginLoadingState = z.infer<typeof PluginLoadingStateSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// Service method interfaces use z.function() instead of z.any() for type safety.\n// Generic data fields use z.unknown() for type safety.\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PluginContextSchema = lazySchema(() => z.object({\n ql: z.object({\n object: z.function().describe('Get object handle for method chaining'),\n query: z.function().describe('Execute a query'),\n }).passthrough().describe('ObjectQL Engine Interface'),\n\n os: z.object({\n getCurrentUser: z.function().describe('Get the current authenticated user'),\n getConfig: z.function().describe('Get platform configuration'),\n }).passthrough().describe('ObjectStack Kernel Interface'),\n\n logger: z.object({\n debug: z.function().describe('Log debug message'),\n info: z.function().describe('Log info message'),\n warn: z.function().describe('Log warning message'),\n error: z.function().describe('Log error message'),\n }).passthrough().describe('Logger Interface'),\n\n storage: z.object({\n get: z.function().describe('Get a value from storage'),\n set: z.function().describe('Set a value in storage'),\n delete: z.function().describe('Delete a value from storage'),\n }).passthrough().describe('Storage Interface'),\n\n i18n: z.object({\n t: z.function().describe('Translate a key'),\n getLocale: z.function().describe('Get current locale'),\n }).passthrough().describe('Internationalization Interface'),\n\n metadata: z.record(z.string(), z.unknown()),\n events: z.record(z.string(), z.unknown()),\n \n app: z.object({\n router: z.object({\n get: z.function().describe('Register GET route handler'),\n post: z.function().describe('Register POST route handler'),\n use: z.function().describe('Register middleware'),\n }).passthrough()\n }).passthrough().describe('App Framework Interface'),\n\n drivers: z.object({\n register: z.function().describe('Register a driver'),\n }).passthrough().describe('Driver Registry'),\n}));\n\nexport type PluginContextData = z.infer<typeof PluginContextSchema>;\nexport type PluginContext = PluginContextData;\n\n/**\n * Upgrade Context Schema\n *\n * Provides version migration context to the `onUpgrade` lifecycle hook.\n * Enables developers to write conditional migration logic based on\n * the previous and new versions.\n */\nexport const UpgradeContextSchema = lazySchema(() => z.object({\n /** Version before upgrade */\n previousVersion: z.string().describe('Version before upgrade'),\n\n /** Version after upgrade */\n newVersion: z.string().describe('Version after upgrade'),\n\n /** Whether this is a major version bump */\n isMajorUpgrade: z.boolean().describe('Whether this is a major version bump'),\n\n /** Metadata snapshot before upgrade (for migration logic) */\n previousMetadata: z.record(z.string(), z.unknown()).optional()\n .describe('Metadata snapshot before upgrade'),\n}).describe('Version migration context for onUpgrade hook'));\n\nexport type UpgradeContext = z.infer<typeof UpgradeContextSchema>;\n\nexport const PluginLifecycleSchema = lazySchema(() => z.object({\n onInstall: z.function().optional().describe('Called when plugin is installed'),\n \n onEnable: z.function().optional().describe('Called when plugin is enabled'),\n \n onDisable: z.function().optional().describe('Called when plugin is disabled'),\n \n onUninstall: z.function().optional().describe('Called when plugin is uninstalled'),\n \n onUpgrade: z.function().optional().describe('Called when plugin is upgraded. Receives UpgradeContext with previousVersion, newVersion, and isMajorUpgrade'),\n}));\n\nexport type PluginLifecycleHooks = z.infer<typeof PluginLifecycleSchema>;\n\n/**\n * Shared Plugin Types\n * These are the specialized plugin types common between Manifest (Package) and Plugin (Runtime).\n */\nexport const CORE_PLUGIN_TYPES = [\n 'ui', // Frontend: Serves static assets/SPA (e.g. Console, Studio)\n 'driver', // Connectivity: Database or Storage adapters (e.g. SQL, S3)\n 'server', // Protocol: HTTP/RPC Servers (e.g. Hono, GraphQL)\n 'app', // Business: Vertical Solution Bundle (Metadata + Logic)\n 'theme', // Appearance: UI Overrides & CSS Variables\n 'agent', // AI: Autonomous Agent & Tool Definitions\n 'objectql' // Core: ObjectQL Engine Data Provider\n] as const;\n\nexport const PluginSchema = lazySchema(() => PluginLifecycleSchema.extend({\n id: z.string().min(1).optional().describe('Unique Plugin ID (e.g. com.example.crm)'),\n type: z.enum([\n 'standard', // Default: General purpose backend logic (Service, Hook, etc.)\n ...CORE_PLUGIN_TYPES\n ]).default('standard').optional().describe('Plugin Type categorization for runtime behavior'),\n \n staticPath: z.string().optional().describe('Absolute path to static assets (Required for type=\"ui-plugin\")'),\n slug: z.string().regex(/^[a-z0-9-_]+$/).optional().describe('URL path segment (Required for type=\"ui-plugin\")'),\n default: z.boolean().optional().describe('Serve at root path (Only one \"ui-plugin\" can be default)'),\n \n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/).optional().describe('Semantic Version'),\n description: z.string().optional(),\n author: z.string().optional(),\n homepage: z.string().url().optional(),\n}));\n\nexport type PluginDefinition = z.infer<typeof PluginSchema>;\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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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' is rarely used for portable seed data — prefer natural keys.\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\n/**\n * Type-safe factory for creating seed dataset definitions.\n * Infers valid field keys from the object definition passed in,\n * so typos in record field names are caught at compile time.\n *\n * @example\n * ```ts\n * export const leadSeed = defineDataset(Lead, {\n * externalId: 'email',\n * records: [\n * { first_name: 'Alice', lead_source: 'web' }, // ✅ type-checked\n * { source: 'web' }, // ❌ compile error\n * ],\n * });\n * ```\n */\nexport function defineDataset<\n const TObj extends { name: string; fields: Record<string, unknown> }\n>(\n objectDef: TObj,\n config: Omit<DatasetInput, 'object' | 'records'> & {\n records: Array<Partial<Record<keyof TObj['fields'], unknown>>>;\n }\n): Dataset {\n return DatasetSchema.parse({ ...config, object: objectDef.name });\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { PluginCapabilityManifestSchema } from './plugin-capability.zod';\nimport { PluginLoadingConfigSchema } from './plugin-loading.zod';\nimport { CORE_PLUGIN_TYPES } from './plugin.zod';\nimport { DatasetSchema } from '../data/dataset.zod';\n\n/**\n * Schema for the ObjectStack Manifest.\n * This defines the structure of a package configuration in the ObjectStack ecosystem.\n * All packages (apps, plugins, drivers, modules) must conform to this schema.\n * \n * @example App Package\n * ```yaml\n * id: com.acme.crm\n * version: 1.0.0\n * type: app\n * name: Acme CRM\n * description: Customer Relationship Management system\n * permissions:\n * - system.user.read\n * - system.object.create\n * objects:\n * - \"./src/objects/*.object.yml\"\n * ```\n */\nexport const ManifestSchema = z.object({\n /** \n * Unique package identifier using reverse domain notation.\n * Must be unique across the entire ecosystem.\n * \n * @example \"com.steedos.crm\"\n * @example \"org.apache.superset\"\n */\n id: z.string().describe('Unique package identifier (reverse domain style)'),\n \n /**\n * Short namespace identifier for metadata scoping.\n *\n * **Internal mechanic only.** Users and AI write objects using **short names**\n * (e.g. `account`, `deal`). The namespace is used internally by the registry\n * to compute a Fully Qualified Name (FQN, `{namespace}__{shortName}`) for\n * cross-package disambiguation, marketplace publishing, and customization\n * baseName references. It is **not** part of the physical table name and\n * should not appear in user-facing code, queries, REST URLs, or formulas.\n *\n * Rules:\n * - 2-20 characters, lowercase letters, digits, and underscores only.\n * - Must be unique within a running instance.\n * - Platform-reserved namespaces: \"base\", \"system\".\n */\n namespace: z.string()\n .regex(/^[a-z][a-z0-9_]{1,19}$/, 'Namespace must be 2-20 chars, lowercase alphanumeric + underscore')\n .optional()\n .describe('Short namespace identifier for metadata scoping (e.g. \"crm\", \"todo\")'),\n\n /**\n * Default datasource for all objects in this package.\n *\n * When set, all objects defined in this package will use this datasource\n * by default unless they explicitly override it with their own `datasource` field.\n *\n * This provides package-level datasource configuration without needing to\n * specify it on every individual object.\n *\n * @example \"memory\" // Use in-memory driver for all package objects\n * @example \"turso\" // Use Turso/LibSQL for all package objects\n */\n defaultDatasource: z.string().optional().default('default')\n .describe('Default datasource for all objects in this package'),\n\n /**\n * Package version following semantic versioning (major.minor.patch).\n *\n * @example \"1.0.0\"\n * @example \"2.1.0-beta.1\"\n */\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/).describe('Package version (semantic versioning)'),\n \n /** \n * Type of the package in the ObjectStack ecosystem.\n * - plugin: General-purpose functionality extension (Runtime: standard)\n * - app: Business application package\n * - driver: Connectivity adapter\n * - server: Protocol gateway (Hono, GraphQL)\n * - ui: Frontend package (Static/SPA)\n * - theme: UI Theme\n * - agent: AI Agent\n * - module: Reusable code library/shared module\n * - objectql: Core engine\n * - adapter: Host adapter (Express, Fastify)\n */\n type: z.enum([\n 'plugin',\n ...CORE_PLUGIN_TYPES,\n 'module',\n 'gateway', // Deprecated: use 'server'\n 'adapter'\n ]).describe('Type of package'),\n\n /**\n * Deployment scope of this package.\n *\n * - `cloud`: Control-plane exclusive (tenant management, credentials, package registry…).\n * Never registered into a project kernel; accessible only via `/api/v1/cloud/*`.\n * - `system`: Cross-project shared identity (user, org, role, i18n…).\n * In a project kernel, objects are transparently proxied to the control-plane DB\n * with an automatic `organization_id` filter for org-scoped tables.\n * Packages with this scope should also set `defaultDatasource: 'cloud'`.\n * - `project`: Per-project business objects (CRM, custom apps…).\n * Registered normally into the project DB.\n */\n scope: z.enum(['cloud', 'system', 'project']).default('project')\n .describe('Deployment scope: cloud | system | project'),\n\n /**\n * Human-readable name of the package.\n * Displayed in the UI for users.\n *\n * @example \"Project Management\"\n */\n name: z.string().describe('Human-readable package name'),\n \n /** \n * Brief description of the package functionality.\n * Displayed in the marketplace and plugin manager.\n */\n description: z.string().optional().describe('Package description'),\n \n /** \n * Array of permission strings that the package requires.\n * These form the \"Scope\" requested by the package at installation.\n * \n * @example [\"system.user.read\", \"system.data.write\"]\n */\n permissions: z.array(z.string()).optional().describe('Array of required permission strings'),\n \n /** \n * Glob patterns specifying ObjectQL schemas files.\n * Matches `*.object.yml` or `*.object.ts` files to load business objects.\n * \n * @example [\"./src/objects/*.object.yml\"]\n */\n objects: z.array(z.string()).optional().describe('Glob patterns for ObjectQL schemas files'),\n\n /**\n * Defines system level DataSources.\n * Matches `*.datasource.yml` files.\n * \n * @example [\"./src/datasources/*.datasource.mongo.yml\"]\n */\n datasources: z.array(z.string()).optional().describe('Glob patterns for Datasource definitions'),\n\n /**\n * Package Dependencies.\n * Map of package IDs to version requirements.\n * \n * @example { \"@steedos/plugin-auth\": \"^2.0.0\" }\n */\n dependencies: z.record(z.string(), z.string()).optional().describe('Package dependencies'),\n\n /**\n * Plugin Configuration Schema.\n * Defines the settings this plugin exposes to the user via UI/ENV.\n * Uses a simplified JSON Schema format.\n * \n * @example\n * {\n * \"title\": \"Stripe Config\",\n * \"properties\": {\n * \"apiKey\": { \"type\": \"string\", \"secret\": true },\n * \"currency\": { \"type\": \"string\", \"default\": \"USD\" }\n * }\n * }\n */\n configuration: z.object({\n title: z.string().optional(),\n properties: z.record(z.string(), z.object({\n type: z.enum(['string', 'number', 'boolean', 'array', 'object']).describe('Data type of the setting'),\n default: z.unknown().optional().describe('Default value'),\n description: z.string().optional().describe('Tooltip description'),\n required: z.boolean().optional().describe('Is this setting required?'),\n secret: z.boolean().optional().describe('If true, value is encrypted/masked (e.g. API Keys)'),\n enum: z.array(z.string()).optional().describe('Allowed values for select inputs'),\n })).describe('Map of configuration keys to their definitions')\n }).optional().describe('Plugin configuration settings'),\n\n /**\n * Contribution Points (VS Code Style).\n * formalized way to extend the platform capabilities.\n */\n contributes: z.object({\n /**\n * Register new Metadata Kinds (CRDs).\n * Enables the system to parse and validate new file types.\n * Example: Registering a BI plugin to handle *.report.ts\n */\n kinds: z.array(z.object({\n id: z.string().describe('The generic identifier of the kind (e.g., \"sys.bi.report\")'),\n globs: z.array(z.string()).describe('File patterns to watch (e.g., [\"**/*.report.ts\"])'),\n description: z.string().optional().describe('Description of what this kind represents'),\n })).optional().describe('New Metadata Types to recognize'),\n\n /**\n * Register System Hooks.\n * Declares that this plugin listens to specific system events.\n */\n events: z.array(z.string()).optional().describe('Events this plugin listens to'),\n\n /**\n * Register UI Menus.\n */\n menus: z.record(z.string(), z.array(z.object({\n id: z.string(),\n label: z.string(),\n command: z.string().optional(),\n }))).optional().describe('UI Menu contributions'),\n\n /**\n * Register Custom Themes.\n */\n themes: z.array(z.object({\n id: z.string(),\n label: z.string(),\n path: z.string(),\n })).optional().describe('Theme contributions'),\n\n /**\n * Register Translations.\n * Path to translation files (e.g. \"locales/en.json\").\n */\n translations: z.array(z.object({\n locale: z.string(),\n path: z.string(),\n })).optional().describe('Translation resources'),\n\n /**\n * Register Server Actions.\n * Invocable functions exposed to Flows or API.\n */\n actions: z.array(z.object({\n name: z.string().describe('Unique action name'),\n label: z.string().optional(),\n description: z.string().optional(),\n input: z.unknown().optional().describe('Input validation schema'),\n output: z.unknown().optional().describe('Output schema'),\n })).optional().describe('Exposed server actions'),\n\n /**\n * Register Storage Drivers.\n * Enables connecting to new types of datasources.\n */\n drivers: z.array(z.object({\n id: z.string().describe('Driver unique identifier (e.g. \"postgres\", \"mongo\")'),\n label: z.string().describe('Human readable name'),\n description: z.string().optional(),\n })).optional().describe('Driver contributions'),\n\n /**\n * Register Custom Field Types.\n * Extends the data model with new widget types.\n */\n fieldTypes: z.array(z.object({\n name: z.string().describe('Unique field type name (e.g. \"vector\")'),\n label: z.string().describe('Display label'),\n description: z.string().optional(),\n })).optional().describe('Field Type contributions'),\n \n /**\n * Register Custom Query Operators/Functions.\n * Extends ObjectQL with new functions (e.g. distance()).\n */\n functions: z.array(z.object({\n name: z.string().describe('Function name (e.g. \"distance\")'),\n description: z.string().optional(),\n args: z.array(z.string()).optional().describe('Argument types'),\n returnType: z.string().optional(),\n })).optional().describe('Query Function contributions'),\n\n /**\n * Register API Route Namespaces.\n * Declares the API endpoints this plugin provides to the HttpDispatcher.\n * The kernel routes matching prefixes to this plugin's handler.\n * \n * @example\n * routes: [\n * { prefix: '/api/v1/ai', service: 'ai', methods: ['aiNlq', 'aiChat'] }\n * ]\n */\n routes: z.array(z.object({\n /** URL path prefix (e.g. \"/api/v1/ai\") */\n prefix: z.string().regex(/^\\//).describe('API path prefix'),\n /** Service name this plugin provides */\n service: z.string().describe('Service name this plugin provides'),\n /** Protocol method names implemented */\n methods: z.array(z.string()).optional()\n .describe('Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])'),\n })).optional().describe('API route contributions to HttpDispatcher'),\n\n /**\n * Register CLI Commands.\n * Allows plugins to extend the ObjectStack CLI with custom commands.\n * Each command entry declares metadata; the actual Commander.js command\n * is resolved at runtime by importing the plugin's module.\n * \n * The plugin package must export a `commands` array of Commander.js `Command` instances\n * from its main entry point or from the path specified in `module`.\n * \n * @example\n * ```yaml\n * commands:\n * - name: marketplace\n * description: \"Manage marketplace apps\"\n * module: \"./cli\" # optional, defaults to package main\n * - name: deploy\n * description: \"Deploy to cloud\"\n * ```\n */\n commands: z.array(z.object({\n /** CLI command name (e.g., \"marketplace\", \"deploy\"). Must be a valid CLI identifier. */\n name: z.string()\n .regex(/^[a-z][a-z0-9-]*$/, 'Command name must be lowercase alphanumeric with hyphens')\n .describe('CLI command name'),\n /** Brief description shown in `os --help` */\n description: z.string().optional().describe('Command description for help text'),\n /** \n * Optional module path (relative to package root) that exports the Commander.js commands.\n * If omitted, the CLI will import from the package's main entry point.\n * The module must export a `commands` array of Commander.js `Command` instances,\n * or a single `Command` instance as default export.\n */\n module: z.string().optional().describe('Module path exporting Commander.js commands'),\n })).optional().describe('CLI command contributions'),\n }).optional().describe('Platform contributions'),\n\n /** \n * Initial data seeding configuration.\n * Defines default records to be inserted when the package is installed.\n * \n * Uses the standard DatasetSchema which supports idempotent upsert via\n * `externalId`, environment scoping via `env`, and multiple conflict\n * resolution modes.\n * \n * @deprecated Prefer using the top-level `data` field on the Stack Definition\n * (defineStack({ data: [...] })) for better visibility and metadata registration.\n * This field is retained for backward compatibility with manifest-only packages.\n */\n data: z.array(DatasetSchema).optional().describe('Initial seed data (prefer top-level data field)'),\n\n /**\n * Plugin Capability Manifest.\n * Declares protocols implemented, interfaces provided, dependencies, and extension points.\n * This enables plugin interoperability and automatic discovery.\n */\n capabilities: PluginCapabilityManifestSchema.optional()\n .describe('Plugin capability declarations for interoperability'),\n\n /** \n * Extension points contributed by this package.\n * Allows packages to extend UI components, add functionality, etc.\n */\n extensions: z.record(z.string(), z.unknown()).optional().describe('Extension points and contributions'),\n\n /**\n * Plugin Loading Configuration.\n * Configures how the plugin is loaded, initialized, and managed at runtime.\n * Includes strategies for lazy loading, code splitting, caching, and hot reload.\n */\n loading: PluginLoadingConfigSchema.optional()\n .describe('Plugin loading and runtime behavior configuration'),\n\n /**\n * Platform Compatibility Requirements.\n * Specifies the minimum ObjectStack platform version required to run this package.\n * Used at install time to prevent incompatible packages from being installed.\n *\n * @example\n * ```yaml\n * engine:\n * objectstack: \">=3.0.0\"\n * ```\n */\n engine: z.object({\n /** ObjectStack platform version requirement (SemVer range) */\n objectstack: z.string()\n .regex(/^[><=~^]*\\d+\\.\\d+\\.\\d+/)\n .describe('ObjectStack platform version requirement (SemVer range, e.g. \">=3.0.0\")'),\n }).optional().describe('Platform compatibility requirements'),\n});\n\n/**\n * TypeScript type inferred from the ManifestSchema.\n * Use this type for type-safe manifest handling in TypeScript code.\n */\nexport type ObjectStackManifest = z.infer<typeof ManifestSchema>;\nexport type ObjectStackManifestInput = z.input<typeof ManifestSchema>;\n\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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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 = lazySchema(() => 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// Locale\n// ────────────────────────────────────────────────────────────────────────────\n\nimport { lazySchema } from '../shared/lazy-schema';\nexport const LocaleSchema = lazySchema(() => z.string().describe('BCP-47 Language Tag (e.g. en-US, zh-CN)'));\n\n// ────────────────────────────────────────────────────────────────────────────\n// Object-level Translation (per-object file)\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Field Translation Schema\n * Translation data for a single field.\n */\nexport const FieldTranslationSchema = lazySchema(() => z.object({\n label: z.string().optional().describe('Translated field label'),\n help: z.string().optional().describe('Translated help text'),\n placeholder: z.string().optional().describe('Translated placeholder text for form inputs'),\n options: z.record(z.string(), z.string()).optional().describe('Option value to translated label map'),\n}).describe('Translation data for a single field'));\n\nexport type FieldTranslation = z.infer<typeof FieldTranslationSchema>;\n\n/**\n * Object Translation Data Schema\n *\n * Translation data for a **single object** in a **single locale**.\n * Use this schema to validate per-object translation files.\n *\n * File convention: `i18n/{locale}/{object_name}.json`\n *\n * @example\n * ```json\n * // i18n/en/account.json\n * {\n * \"label\": \"Account\",\n * \"pluralLabel\": \"Accounts\",\n * \"fields\": {\n * \"name\": { \"label\": \"Account Name\", \"help\": \"Legal name\" },\n * \"type\": { \"label\": \"Type\", \"options\": { \"customer\": \"Customer\" } }\n * }\n * }\n * ```\n */\nexport const ObjectTranslationDataSchema = lazySchema(() => z.object({\n /** Translated singular label for the object */\n label: z.string().describe('Translated singular label'),\n /** Translated plural label for the object */\n pluralLabel: z.string().optional().describe('Translated plural label'),\n /** Translated description shown in list/detail headings */\n description: z.string().optional().describe('Translated object description'),\n /** Field-level translations keyed by field name (snake_case) */\n fields: z.record(z.string(), FieldTranslationSchema).optional().describe('Field-level translations'),\n\n /**\n * View translations keyed by view name (snake_case).\n * Convention (auto-resolved by `resolveViewLabel`):\n * objects.<object>._views.<view_name>.label\n * objects.<object>._views.<view_name>.description\n */\n _views: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated view label'),\n description: z.string().optional().describe('Translated view description'),\n })).optional().describe('View translations keyed by view name'),\n\n /**\n * Action translations keyed by action name (snake_case).\n * Convention (auto-resolved by `resolveActionLabel`/`resolveActionConfirm`/`resolveActionSuccess`):\n * objects.<object>._actions.<action_name>.label\n * objects.<object>._actions.<action_name>.confirmText\n * objects.<object>._actions.<action_name>.successMessage\n */\n _actions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated action label'),\n confirmText: z.string().optional().describe('Translated confirmation prompt'),\n successMessage: z.string().optional().describe('Translated success toast/message'),\n })).optional().describe('Action translations keyed by action name'),\n}).describe('Translation data for a single object'));\n\nexport type ObjectTranslationData = z.infer<typeof ObjectTranslationDataSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Locale-level Translation Data (per-locale aggregate)\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Translation Data Schema\n * Supports i18n for labels, messages, and options within a single locale.\n * Example structure:\n * ```json\n * {\n * \"objects\": { \"account\": { \"label\": \"Account\" } },\n * \"apps\": { \"crm\": { \"label\": \"CRM\" } },\n * \"messages\": { \"common.save\": \"Save\" }\n * }\n * ```\n */\nexport const TranslationDataSchema = lazySchema(() => z.object({\n /** Object translations */\n objects: z.record(z.string(), ObjectTranslationDataSchema).optional().describe('Object translations keyed by object name'),\n \n /** App/Menu translations */\n apps: z.record(z.string(), z.object({\n label: z.string().describe('Translated app label'),\n description: z.string().optional().describe('Translated app description'),\n navigation: z.record(z.string(), z.object({\n label: z.string().describe('Translated navigation group label'),\n })).optional().describe('Navigation group translations keyed by group ID'),\n })).optional().describe('App translations keyed by app name'),\n\n /** UI Messages */\n messages: z.record(z.string(), z.string()).optional().describe('UI message translations keyed by message ID'),\n \n /** Validation Error Messages */\n validationMessages: z.record(z.string(), z.string()).optional().describe('Translatable validation error messages keyed by rule name (e.g., {\"discount_limit\": \"折扣不能超过40%\"})'),\n\n /**\n * Global (object-less) action translations keyed by action name (snake_case).\n * Used for actions like `log_call` or `export_csv` that are not bound to a\n * specific object via `objectName`. Convention (auto-resolved by\n * `resolveActionLabel`/`resolveActionConfirm`/`resolveActionSuccess`):\n * globalActions.<action_name>.label\n * globalActions.<action_name>.confirmText\n * globalActions.<action_name>.successMessage\n */\n globalActions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated action label'),\n confirmText: z.string().optional().describe('Translated confirmation prompt'),\n successMessage: z.string().optional().describe('Translated success toast/message'),\n })).optional().describe('Global action translations keyed by action name'),\n\n /**\n * Dashboard translations keyed by dashboard name.\n * Convention (auto-resolved by ObjectUI's `useObjectLabel`):\n * dashboards.<name>.label\n * dashboards.<name>.description\n * dashboards.<name>.actions.<actionUrl>.label\n * dashboards.<name>.widgets.<widgetId>.title\n * dashboards.<name>.widgets.<widgetId>.description\n */\n dashboards: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated dashboard title'),\n description: z.string().optional().describe('Translated dashboard description'),\n actions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated header action label'),\n })).optional().describe('Header action label translations keyed by action url/key'),\n widgets: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated widget title'),\n description: z.string().optional().describe('Translated widget description'),\n })).optional().describe('Widget translations keyed by widget id'),\n })).optional().describe('Dashboard translations keyed by dashboard name'),\n\n /**\n * Settings manifest translations keyed by settings namespace\n * (matches `SettingsManifest.namespace`, e.g. \"mail\", \"branding\").\n *\n * Convention (auto-resolved by `resolveSettings*` helpers):\n * settings.<namespace>.title\n * settings.<namespace>.description\n * settings.<namespace>.groups.<group_key>.title\n * settings.<namespace>.groups.<group_key>.description\n * settings.<namespace>.keys.<setting_key>.label\n * settings.<namespace>.keys.<setting_key>.help\n * settings.<namespace>.keys.<setting_key>.placeholder\n * settings.<namespace>.keys.<setting_key>.options.<option_value>\n * settings.<namespace>.actions.<action_id>.label\n * settings.<namespace>.actions.<action_id>.confirmText\n * settings.<namespace>.actions.<action_id>.successMessage\n */\n settings: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated settings manifest title'),\n description: z.string().optional().describe('Translated settings manifest description'),\n groups: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated group title'),\n description: z.string().optional().describe('Translated group description'),\n })).optional().describe('Group translations keyed by group key'),\n keys: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated setting label'),\n help: z.string().optional().describe('Translated setting help text'),\n placeholder: z.string().optional().describe('Translated input placeholder'),\n options: z.record(z.string(), z.string()).optional()\n .describe('Enum option value → translated label'),\n })).optional().describe('Per-setting field translations keyed by setting key'),\n actions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated action label'),\n confirmText: z.string().optional().describe('Translated confirmation prompt'),\n successMessage: z.string().optional().describe('Translated success toast/message'),\n })).optional().describe('Action button translations keyed by action id'),\n })).optional().describe('Settings manifest translations keyed by namespace'),\n\n /**\n * Cross-namespace strings used by the Settings UI shell — source\n * badges, inheritance chips, lock reasons, common actions. Resolved\n * via the `resolveSettingsCommon*` helpers in `i18n-resolver.ts`.\n */\n settingsCommon: z.object({\n sourceLabels: z.object({\n env: z.string().optional(),\n global: z.string().optional(),\n tenant: z.string().optional(),\n user: z.string().optional(),\n default: z.string().optional(),\n }).optional().describe('Source badge labels by resolution layer'),\n }).optional().describe('Cross-namespace Settings UI strings'),\n}).describe('Translation data for objects, apps, and UI messages'));\n\nexport type TranslationData = z.infer<typeof TranslationDataSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Translation Bundle (all locales)\n// ────────────────────────────────────────────────────────────────────────────\n\nexport const TranslationBundleSchema = lazySchema(() => z.record(LocaleSchema, TranslationDataSchema).describe('Map of locale codes to translation data'));\n\nexport type TranslationBundle = z.infer<typeof TranslationBundleSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// File Organization Convention\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Translation File Organization Strategy\n *\n * Defines how translation files are organized on disk.\n *\n * - `bundled` — All locales in a single `TranslationBundle` file.\n * Best for small projects with few objects.\n * ```\n * src/translations/\n * crm.translation.ts # { en: {...}, \"zh-CN\": {...} }\n * ```\n *\n * - `per_locale` — One file per locale containing all namespaces.\n * Recommended when a single locale file stays under ~500 lines.\n * ```\n * src/translations/\n * en.ts # TranslationData for English\n * zh-CN.ts # TranslationData for Chinese\n * ```\n *\n * - `per_namespace` — One file per namespace (object) per locale.\n * Recommended for large projects with many objects/languages.\n * Aligns with Salesforce DX and ServiceNow conventions.\n * ```\n * i18n/\n * en/\n * account.json # ObjectTranslationData\n * contact.json\n * common.json # messages + app labels\n * zh-CN/\n * account.json\n * contact.json\n * common.json\n * ```\n */\nexport const TranslationFileOrganizationSchema = lazySchema(() => z.enum([\n 'bundled',\n 'per_locale',\n 'per_namespace',\n]).describe('Translation file organization strategy'));\n\nexport type TranslationFileOrganization = z.infer<typeof TranslationFileOrganizationSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Translation Configuration\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Translation Configuration Schema\n *\n * Defines internationalization settings for the stack.\n *\n * @example\n * ```typescript\n * export default defineStack({\n * i18n: {\n * defaultLocale: 'en',\n * supportedLocales: ['en', 'zh-CN', 'ja-JP'],\n * fallbackLocale: 'en',\n * fileOrganization: 'per_locale',\n * },\n * translations: [...],\n * });\n * ```\n */\n/**\n * Message format standard used for interpolation, pluralization, and\n * gender-aware translations.\n *\n * - `icu` — ICU MessageFormat (recommended for complex plurals, gender, select).\n * Strings may contain `{count, plural, one {# item} other {# items}}` patterns.\n * - `simple` — Simple `{variable}` interpolation only (default).\n */\nexport const MessageFormatSchema = lazySchema(() => z.enum([\n 'icu',\n 'simple',\n]).describe('Message interpolation format: ICU MessageFormat or simple {variable} replacement'));\n\nexport type MessageFormat = z.infer<typeof MessageFormatSchema>;\n\nexport const TranslationConfigSchema = lazySchema(() => z.object({\n /** Default locale for the application */\n defaultLocale: LocaleSchema.describe('Default locale (e.g., \"en\")'),\n /** Supported BCP-47 locale codes */\n supportedLocales: z.array(LocaleSchema).describe('Supported BCP-47 locale codes'),\n /** Fallback locale when translation is not found */\n fallbackLocale: LocaleSchema.optional().describe('Fallback locale code'),\n /** How translation files are organized on disk */\n fileOrganization: TranslationFileOrganizationSchema.default('per_locale')\n .describe('File organization strategy'),\n /**\n * Message interpolation format.\n * When set to `'icu'`, messages and validationMessages are expected to use\n * ICU MessageFormat syntax (plurals, select, number/date skeletons).\n * @default 'simple'\n */\n messageFormat: MessageFormatSchema.default('simple')\n .describe('Message interpolation format (ICU MessageFormat or simple)'),\n /** Load translations on demand instead of eagerly */\n lazyLoad: z.boolean().default(false).describe('Load translations on demand'),\n /** Cache loaded translations in memory */\n cache: z.boolean().default(true).describe('Cache loaded translations'),\n}).describe('Internationalization configuration'));\n\nexport type TranslationConfig = z.infer<typeof TranslationConfigSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Object-First Translation Node (object-first aggregated structure)\n// ────────────────────────────────────────────────────────────────────────────\n\n/** Translatable option map: option value → translated label */\nconst OptionTranslationMapSchema = z.record(z.string(), z.string())\n .describe('Option value to translated label map');\n\n/**\n * ObjectTranslationNodeSchema\n *\n * Object-first aggregated translation node that groups **all** translatable\n * content for a single object under one key. Aligns with Salesforce / Dynamics\n * conventions where translations are organized per-object rather than per-category.\n *\n * Located at `o.{object_name}` inside an {@link AppTranslationBundle}.\n *\n * @example\n * ```typescript\n * const accountNode: ObjectTranslationNode = {\n * label: '客户',\n * pluralLabel: '客户',\n * description: '客户管理对象',\n * fields: {\n * name: { label: '客户名称', help: '公司或组织的法定名称' },\n * industry: { label: '行业', options: { tech: '科技', finance: '金融' } },\n * },\n * _options: { status: { active: '活跃', inactive: '停用' } },\n * _views: { all_accounts: { label: '全部客户' } },\n * _sections: { basic_info: { label: '基本信息' } },\n * _actions: {\n * convert_lead: { label: '转换线索', confirmMessage: '确认转换?' },\n * },\n * };\n * ```\n */\nexport const ObjectTranslationNodeSchema = lazySchema(() => z.object({\n /** Translated singular label */\n label: z.string().describe('Translated singular label'),\n /** Translated plural label */\n pluralLabel: z.string().optional().describe('Translated plural label'),\n /** Translated object description */\n description: z.string().optional().describe('Translated object description'),\n /** Translated help text shown in tooltips or guidance panels */\n helpText: z.string().optional().describe('Translated help text for the object'),\n\n /** Field-level translations keyed by field name (snake_case) */\n fields: z.record(z.string(), FieldTranslationSchema).optional()\n .describe('Field translations keyed by field name'),\n\n /**\n * Global picklist / select option overrides scoped to this object.\n * Keyed by field name → { optionValue: translatedLabel }.\n */\n _options: z.record(z.string(), OptionTranslationMapSchema).optional()\n .describe('Object-scoped picklist option translations keyed by field name'),\n\n /** View translations keyed by view name */\n _views: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated view label'),\n description: z.string().optional().describe('Translated view description'),\n })).optional().describe('View translations keyed by view name'),\n\n /** Section (form section / tab) translations keyed by section name */\n _sections: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated section label'),\n })).optional().describe('Section translations keyed by section name'),\n\n /** Action translations keyed by action name */\n _actions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated action label'),\n confirmMessage: z.string().optional().describe('Translated confirmation message'),\n })).optional().describe('Action translations keyed by action name'),\n\n /** Notification message translations keyed by notification name */\n _notifications: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated notification title'),\n body: z.string().optional().describe('Translated notification body (supports ICU MessageFormat when enabled)'),\n })).optional().describe('Notification translations keyed by notification name'),\n\n /** Error message translations keyed by error code */\n _errors: z.record(z.string(), z.string()).optional()\n .describe('Error message translations keyed by error code'),\n}).describe('Object-first aggregated translation node'));\n\nexport type ObjectTranslationNode = z.infer<typeof ObjectTranslationNodeSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// App Translation Bundle (object-first, full application)\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * AppTranslationBundleSchema\n *\n * Complete application translation bundle for a **single locale** using\n * the **object-first** convention. All per-object translatable content\n * is aggregated under `o.{object_name}`, while global (non-object-bound)\n * translations are kept in dedicated top-level groups.\n *\n * This schema is designed for:\n * - Translation workbench UIs (object-level editing & coverage)\n * - CLI skeleton generation (`objectstack i18n extract`)\n * - Automated diff/coverage detection\n *\n * @example\n * ```typescript\n * const zh: AppTranslationBundle = {\n * o: {\n * account: {\n * label: '客户',\n * fields: { name: { label: '客户名称' } },\n * _options: { industry: { tech: '科技' } },\n * _views: { all_accounts: { label: '全部客户' } },\n * _sections: { basic_info: { label: '基本信息' } },\n * _actions: { convert: { label: '转换' } },\n * },\n * },\n * _globalOptions: { currency: { usd: '美元', eur: '欧元' } },\n * app: { crm: { label: '客户关系管理', description: '管理销售流程' } },\n * nav: { home: '首页', settings: '设置' },\n * dashboard: { sales_overview: { label: '销售概览' } },\n * reports: { pipeline_report: { label: '管道报表' } },\n * pages: { landing: { title: '欢迎' } },\n * messages: { 'common.save': '保存' },\n * validationMessages: { 'discount_limit': '折扣不能超过40%' },\n * };\n * ```\n */\nexport const AppTranslationBundleSchema = lazySchema(() => z.object({\n /**\n * Bundle-level metadata.\n * Provides locale-aware rendering hints such as text direction (bidi)\n * and the canonical locale code this bundle represents.\n */\n _meta: z.object({\n /** BCP-47 locale code this bundle represents */\n locale: z.string().optional().describe('BCP-47 locale code for this bundle'),\n /** Text direction for the locale */\n direction: z.enum(['ltr', 'rtl']).optional().describe('Text direction: left-to-right or right-to-left'),\n }).optional().describe('Bundle-level metadata (locale, bidi direction)'),\n\n /**\n * Namespace for plugin/extension isolation.\n * When multiple plugins contribute translations, each should use a unique\n * namespace to avoid key collisions (e.g. \"crm\", \"helpdesk\", \"plugin-xyz\").\n */\n namespace: z.string().optional()\n .describe('Namespace for plugin isolation to avoid translation key collisions'),\n\n /** Object-first translations keyed by object name (snake_case) */\n o: z.record(z.string(), ObjectTranslationNodeSchema).optional()\n .describe('Object-first translations keyed by object name'),\n\n /** Global picklist options not bound to any specific object */\n _globalOptions: z.record(z.string(), OptionTranslationMapSchema).optional()\n .describe('Global picklist option translations keyed by option set name'),\n\n /** App-level translations */\n app: z.record(z.string(), z.object({\n label: z.string().describe('Translated app label'),\n description: z.string().optional().describe('Translated app description'),\n })).optional().describe('App translations keyed by app name'),\n\n /** Navigation menu translations */\n nav: z.record(z.string(), z.string()).optional()\n .describe('Navigation item translations keyed by nav item name'),\n\n /** Dashboard translations keyed by dashboard name */\n dashboard: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated dashboard label'),\n description: z.string().optional().describe('Translated dashboard description'),\n })).optional().describe('Dashboard translations keyed by dashboard name'),\n\n /** Report translations keyed by report name */\n reports: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated report label'),\n description: z.string().optional().describe('Translated report description'),\n })).optional().describe('Report translations keyed by report name'),\n\n /** Page translations keyed by page name */\n pages: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated page title'),\n description: z.string().optional().describe('Translated page description'),\n })).optional().describe('Page translations keyed by page name'),\n\n /** UI message translations (supports ICU MessageFormat when enabled) */\n messages: z.record(z.string(), z.string()).optional()\n .describe('UI message translations keyed by message ID (supports ICU MessageFormat)'),\n\n /** Validation error message translations (supports ICU MessageFormat when enabled) */\n validationMessages: z.record(z.string(), z.string()).optional()\n .describe('Validation error message translations keyed by rule name (supports ICU MessageFormat)'),\n\n /** Global notification translations not bound to a specific object */\n notifications: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated notification title'),\n body: z.string().optional().describe('Translated notification body (supports ICU MessageFormat when enabled)'),\n })).optional().describe('Global notification translations keyed by notification name'),\n\n /** Global error message translations not bound to a specific object */\n errors: z.record(z.string(), z.string()).optional()\n .describe('Global error message translations keyed by error code'),\n}).describe('Object-first application translation bundle for a single locale'));\n\nexport type AppTranslationBundle = z.infer<typeof AppTranslationBundleSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Translation Diff & Coverage\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Translation Diff Status\n *\n * Status of a single translation entry compared to the source metadata.\n */\nexport const TranslationDiffStatusSchema = lazySchema(() => z.enum([\n 'missing',\n 'redundant',\n 'stale',\n]).describe('Translation diff status: missing from bundle, redundant (no matching metadata), or stale (metadata changed)'));\n\nexport type TranslationDiffStatus = z.infer<typeof TranslationDiffStatusSchema>;\n\n/**\n * TranslationDiffItemSchema\n *\n * Describes a single translation key that is missing, redundant, or stale\n * relative to the source metadata. Used by CLI/API diff detection.\n *\n * @example\n * ```typescript\n * const item: TranslationDiffItem = {\n * key: 'o.account.fields.website.label',\n * status: 'missing',\n * objectName: 'account',\n * locale: 'zh-CN',\n * };\n * ```\n */\nexport const TranslationDiffItemSchema = lazySchema(() => z.object({\n /** Dot-path translation key (e.g. \"o.account.fields.website.label\") */\n key: z.string().describe('Dot-path translation key'),\n /** Diff status */\n status: TranslationDiffStatusSchema.describe('Diff status of this translation key'),\n /** Object name if the key belongs to an object translation node */\n objectName: z.string().optional().describe('Associated object name (snake_case)'),\n /** Locale code */\n locale: z.string().describe('BCP-47 locale code'),\n /**\n * Hash of the source metadata value at the time the translation was made.\n * Used by CLI/Workbench to detect stale translations without a full diff.\n */\n sourceHash: z.string().optional().describe('Hash of source metadata for precise stale detection'),\n /**\n * AI-suggested translation text for missing or stale entries.\n * Populated by AI translation hooks or TMS integrations.\n */\n aiSuggested: z.string().optional().describe('AI-suggested translation for this key'),\n /** Confidence score (0-1) for the AI suggestion */\n aiConfidence: z.number().min(0).max(1).optional().describe('AI suggestion confidence score (0–1)'),\n}).describe('A single translation diff item'));\n\nexport type TranslationDiffItem = z.infer<typeof TranslationDiffItemSchema>;\n\n/**\n * TranslationCoverageResultSchema\n *\n * Aggregated coverage result for a locale, optionally scoped to a single object.\n * Returned by the i18n diff detection API.\n *\n * @example\n * ```typescript\n * const result: TranslationCoverageResult = {\n * locale: 'zh-CN',\n * totalKeys: 120,\n * translatedKeys: 105,\n * missingKeys: 12,\n * redundantKeys: 3,\n * staleKeys: 0,\n * coveragePercent: 87.5,\n * items: [ ... ],\n * };\n * ```\n */\n/**\n * Per-group coverage breakdown entry.\n */\nexport const CoverageBreakdownEntrySchema = lazySchema(() => z.object({\n /** Group category (e.g. \"fields\", \"views\", \"actions\", \"messages\") */\n group: z.string().describe('Translation group category'),\n /** Total translatable keys in this group */\n totalKeys: z.number().int().nonnegative().describe('Total keys in this group'),\n /** Number of translated keys in this group */\n translatedKeys: z.number().int().nonnegative().describe('Translated keys in this group'),\n /** Coverage percentage for this group */\n coveragePercent: z.number().min(0).max(100).describe('Coverage percentage for this group'),\n}).describe('Coverage breakdown for a single translation group'));\n\nexport type CoverageBreakdownEntry = z.infer<typeof CoverageBreakdownEntrySchema>;\n\nexport const TranslationCoverageResultSchema = lazySchema(() => z.object({\n /** BCP-47 locale code */\n locale: z.string().describe('BCP-47 locale code'),\n /** Optional object name scope */\n objectName: z.string().optional().describe('Object name scope (omit for full bundle)'),\n /** Total translatable keys derived from metadata */\n totalKeys: z.number().int().nonnegative().describe('Total translatable keys from metadata'),\n /** Number of keys that have a translation */\n translatedKeys: z.number().int().nonnegative().describe('Number of translated keys'),\n /** Number of missing translations */\n missingKeys: z.number().int().nonnegative().describe('Number of missing translations'),\n /** Number of redundant (orphaned) translations */\n redundantKeys: z.number().int().nonnegative().describe('Number of redundant translations'),\n /** Number of stale translations */\n staleKeys: z.number().int().nonnegative().describe('Number of stale translations'),\n /** Coverage percentage (0-100) */\n coveragePercent: z.number().min(0).max(100).describe('Translation coverage percentage'),\n /** Individual diff items */\n items: z.array(TranslationDiffItemSchema).describe('Detailed diff items'),\n /**\n * Per-group coverage breakdown for translation project management.\n * Each entry represents a logical group (e.g. \"fields\", \"views\", \"actions\",\n * \"messages\") with its own coverage statistics.\n */\n breakdown: z.array(CoverageBreakdownEntrySchema).optional()\n .describe('Per-group coverage breakdown'),\n}).describe('Aggregated translation coverage result'));\n\nexport type TranslationCoverageResult = z.infer<typeof TranslationCoverageResultSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * System Identifier Schema\n * \n * Universal naming convention for all machine identifiers (API Names) in ObjectStack.\n * Enforces lowercase with underscores or dots to ensure:\n * - Cross-platform compatibility (case-insensitive filesystems)\n * - URL-friendliness (no encoding needed)\n * - Database consistency (no collation issues)\n * - Security (no case-sensitivity bugs in permission checks)\n * \n * **Applies to all metadata that acts as a machine identifier:**\n * - Object names (tables/collections)\n * - Field names\n * - Role names\n * - Permission set names\n * - Action/trigger names\n * - Event keys\n * - App IDs\n * - Menu/page IDs\n * - Select option values\n * - Workflow names\n * - Webhook names\n * \n * **Naming Convention Summary:**\n * | Type | Pattern | Example |\n * |------|---------|---------|\n * | Machine ID | snake_case | `crm_account`, `btn_submit`, `role_admin` |\n * | Event keys | dot.notation | `user.login`, `order.created` |\n * | Labels | Any case | `Client Account`, `Submit Form` |\n * \n * @example Valid identifiers\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * - 'order.created' (for events)\n * - 'api_v2_endpoint'\n * \n * @example Invalid identifiers (will be rejected)\n * - 'Account' (uppercase)\n * - 'CrmAccount' (camelCase)\n * - 'crm-account' (kebab-case - use underscore instead)\n * - 'user profile' (spaces)\n */\nimport { lazySchema } from './lazy-schema';\nexport const SystemIdentifierSchema = lazySchema(() => z\n .string()\n .min(2, { message: 'System identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'System identifier must be lowercase, starting with a letter, and may contain letters, numbers, underscores, or dots (e.g., \"user_profile\" or \"order.created\")',\n })\n .describe('System identifier (lowercase with underscores or dots)'));\n\n/**\n * Strict Snake Case Identifier\n * \n * More restrictive than SystemIdentifierSchema - only allows underscores (no dots).\n * Use this for identifiers that should NOT contain dots (e.g., database table/column names).\n * \n * @example Valid\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * \n * @example Invalid\n * - 'user.profile' (dots not allowed)\n * - 'UserProfile' (uppercase)\n */\nexport const SnakeCaseIdentifierSchema = lazySchema(() => z\n .string()\n .min(2, { message: 'Identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_]*$/, {\n message:\n 'Identifier must be lowercase snake_case, starting with a letter, and may contain only letters, numbers, and underscores (e.g., \"user_profile\")',\n })\n .describe('Snake case identifier (lowercase with underscores only)'));\n\n/**\n * Event Name Identifier\n * \n * Specialized identifier for event names that encourages dot notation.\n * Used in event-driven systems, message queues, and webhooks.\n * \n * Pattern: `namespace.action` or `entity.event_type`\n * \n * @example Valid\n * - 'user.created'\n * - 'order.paid'\n * - 'user.login_success'\n * - 'alarm.high_cpu'\n * \n * @example Invalid\n * - 'UserCreated' (camelCase)\n * - 'user_created' (should use dots for namespacing)\n */\nexport const EventNameSchema = lazySchema(() => z\n .string()\n .min(3, { message: 'Event name must be at least 3 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'Event name must be lowercase with dots for namespacing (e.g., \"user.created\", \"order.paid\")',\n })\n .describe('Event name (lowercase with dot notation for namespacing)'));\n\n/**\n * Type Exports\n */\nexport type SystemIdentifier = z.infer<typeof SystemIdentifierSchema>;\nexport type SnakeCaseIdentifier = z.infer<typeof SnakeCaseIdentifierSchema>;\nexport type EventName = z.infer<typeof EventNameSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Expression Protocol\n *\n * Canonical wire format for all \"expression\"-shaped metadata across ObjectStack\n * (formula fields, predicates, conditions, criteria, visibility rules, seed\n * dynamic values, …).\n *\n * The persisted form is `{ dialect, source }` (and, after `objectstack\n * compile` normalization, `{ dialect, ast }`). String-only shorthand is\n * accepted at *input* time for developer ergonomics; build emits the canonical\n * envelope.\n *\n * ## Dialects\n *\n * | dialect | engine | use |\n * |:---|:---|:---|\n * | `cel` | `@objectstack/formula` (cel-js + ObjectStack stdlib) | formulas, predicates, seed dynamic values |\n * | `js` | sandboxed L2 hook bodies (`isolated-vm` / `quickjs`) | mapping, hook bodies |\n * | `cron` | `cron-parser` | job schedules |\n *\n * SQL fragments (analytics joins, partial indexes) are intentionally **not**\n * routed through this schema — they stay driver-native because their security\n * posture and portability story differ.\n *\n * @see content/docs/concepts/north-star.mdx §8 \"No private expression DSL\"\n */\n\n/** Supported expression dialects. */\nexport const ExpressionDialect = z.enum(['cel', 'js', 'cron', 'template']);\nexport type ExpressionDialect = z.infer<typeof ExpressionDialect>;\n\n/**\n * Authorship metadata for an expression. Optional but encouraged for AI-\n * generated artifacts so audit/explanation tooling has something to render.\n */\nexport const ExpressionMetaSchema = z.object({\n /** Human-readable rationale (often AI-emitted). */\n rationale: z.string().optional(),\n /** Identifier of the agent / tool that produced this expression. */\n generatedBy: z.string().optional(),\n});\nexport type ExpressionMeta = z.infer<typeof ExpressionMetaSchema>;\n\n/**\n * Canonical Expression envelope.\n *\n * Phase 1 (M9.1): `source` is the canonical persisted form. `ast` is reserved\n * and accepted as opaque structured value — `objectstack compile` will fill it\n * in M9.2 with the engine's parsed AST so the artifact carries an AST-only\n * representation.\n *\n * Phase 2 (M9.2+): `ast` becomes required in build output; `source` is kept\n * only for round-trip / debug.\n */\nexport const ExpressionSchema = z.object({\n /** Which engine evaluates `source` / `ast`. */\n dialect: ExpressionDialect,\n /** Surface syntax. Required while `ast` is not yet populated. */\n source: z.string().min(1).optional(),\n /**\n * Engine-native AST. Opaque at the spec layer; each engine validates its own\n * shape. For `dialect: 'cel'` this is the cel-js parsed AST node.\n */\n ast: z.unknown().optional(),\n /** Optional authorship metadata. */\n meta: ExpressionMetaSchema.optional(),\n}).refine(e => e.source !== undefined || e.ast !== undefined, {\n message: 'Expression requires at least one of `source` or `ast`',\n});\nexport type Expression = z.infer<typeof ExpressionSchema>;\n\n/**\n * Author-time input shape: a bare string is shorthand for `{ dialect: 'cel',\n * source }`. Engines that need other dialects must use the full envelope.\n *\n * Build (`objectstack compile`) normalizes this union to `Expression` so the\n * persisted artifact never contains the bare-string form.\n */\nexport const ExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'cel', source })),\n ExpressionSchema,\n]);\nexport type ExpressionInput = z.input<typeof ExpressionInputSchema>;\n\n/**\n * Cron-typed input shape: a bare string is shorthand for `{ dialect: 'cron',\n * source }` (not `cel`). Use this for `schedule` / `cronExpression` fields so\n * authors can write `'0 9 * * 1-5'` without manually wrapping.\n */\nexport const CronExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'cron', source })),\n ExpressionSchema,\n]);\nexport type CronExpressionInput = z.input<typeof CronExpressionInputSchema>;\n\n/**\n * Template-typed input shape: a bare string is shorthand for\n * `{ dialect: 'template', source }`. Use this for notification subjects/bodies,\n * titleFormat, prompt templates — anything with `{{var}}` interpolation.\n */\nexport const TemplateExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'template', source })),\n ExpressionSchema,\n]);\nexport type TemplateExpressionInput = z.input<typeof TemplateExpressionInputSchema>;\n\n/**\n * Predicate — an Expression whose evaluation is expected to be boolean.\n * Spec layer cannot enforce return type at parse time; this alias exists for\n * intent documentation and future runtime type-check wiring.\n */\nexport const PredicateSchema = ExpressionSchema;\nexport type Predicate = z.infer<typeof PredicateSchema>;\n\nexport const PredicateInputSchema = ExpressionInputSchema;\nexport type PredicateInput = z.input<typeof PredicateInputSchema>;\n\n/**\n * Construct an Expression literal from a CEL source string. Used by DX\n * shorthand (`cel\\`...\\``) and by codegen tools.\n */\nexport function expression(source: string, dialect: ExpressionDialect = 'cel', meta?: ExpressionMeta): Expression {\n return { dialect, source, ...(meta ? { meta } : {}) };\n}\n\n/**\n * Tagged-template helpers for inline expression authoring.\n *\n * ```ts\n * import { cel, F, P } from '@objectstack/spec';\n *\n * const f = { formula: F`record.amount * 0.1` };\n * const v = { visible: P`record.status == \"open\"` };\n * const d = { close_date: cel`now() + duration(\"P30D\")` };\n * ```\n *\n * Each helper produces an {@link Expression} envelope with `dialect: 'cel'`\n * and the rendered template string as `source`. The CLI `objectstack compile`\n * step (M9.2) parses these into ASTs at build time so the persisted artifact\n * is dialect-AST only.\n */\nfunction renderTemplate(strings: TemplateStringsArray, values: readonly unknown[]): string {\n if (values.length === 0) return strings[0] ?? '';\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n // Inline literal substitution. Strings get JSON-escaped so `${name}` for\n // `name = 'O\\'Brien'` produces a valid CEL string literal. Numbers and\n // booleans render as their toString. Anything exotic should be passed via\n // the variable scope (record/input) rather than interpolated.\n if (typeof v === 'string') out += JSON.stringify(v);\n else if (typeof v === 'number' || typeof v === 'boolean') out += String(v);\n else if (v === null || v === undefined) out += 'null';\n else out += JSON.stringify(v);\n out += strings[i + 1] ?? '';\n }\n return out;\n}\n\n/** Tagged template — produces a CEL Expression envelope. */\nexport function cel(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n return { dialect: 'cel', source: renderTemplate(strings, values) };\n}\n\n/** Formula alias of {@link cel} — semantic shorthand for computed-field formulas. */\nexport const F = cel;\n\n/** Predicate alias of {@link cel} — semantic shorthand for boolean conditions. */\nexport const P = cel;\n\n/**\n * Tagged template — produces a Mustache-template Expression envelope. Use for\n * notification subjects, prompt bodies, titleFormat strings, etc. Variable\n * scope is the same as CEL (`{{record.x}}`, `{{os.user.id}}`).\n */\nexport function tmpl(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n // Templates do not get JSON.stringify on substitution — interpolation happens\n // at evaluate time via `{{path}}` markers, so we keep raw substitutions here.\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n out += String(values[i]);\n out += strings[i + 1] ?? '';\n }\n return { dialect: 'template', source: out };\n}\n\n/** Tagged template — produces a cron Expression envelope. */\nexport function cron(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n out += String(values[i]);\n out += strings[i + 1] ?? '';\n }\n return { dialect: 'cron', source: out };\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Field-level encryption protocol\n * GDPR/HIPAA/PCI-DSS compliant\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const EncryptionAlgorithmSchema = lazySchema(() => z.enum([\n 'aes-256-gcm',\n 'aes-256-cbc',\n 'chacha20-poly1305',\n]).describe('Supported encryption algorithm'));\n\nexport type EncryptionAlgorithm = z.infer<typeof EncryptionAlgorithmSchema>;\n\nexport const KeyManagementProviderSchema = lazySchema(() => z.enum([\n 'local',\n 'aws-kms',\n 'azure-key-vault',\n 'gcp-kms',\n 'hashicorp-vault',\n]).describe('Key management service provider'));\n\nexport type KeyManagementProvider = z.infer<typeof KeyManagementProviderSchema>;\n\nexport const KeyRotationPolicySchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable automatic key rotation'),\n frequencyDays: z.number().min(1).default(90).describe('Rotation frequency in days'),\n retainOldVersions: z.number().default(3).describe('Number of old key versions to retain'),\n autoRotate: z.boolean().default(true).describe('Automatically rotate without manual approval'),\n}).describe('Policy for automatic encryption key rotation'));\n\nexport type KeyRotationPolicy = z.infer<typeof KeyRotationPolicySchema>;\nexport type KeyRotationPolicyInput = z.input<typeof KeyRotationPolicySchema>;\n\nexport const EncryptionConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable field-level encryption'),\n algorithm: EncryptionAlgorithmSchema.default('aes-256-gcm').describe('Encryption algorithm'),\n keyManagement: z.object({\n provider: KeyManagementProviderSchema.describe('Key management service provider'),\n keyId: z.string().optional().describe('Key identifier in the provider'),\n rotationPolicy: KeyRotationPolicySchema.optional().describe('Key rotation policy'),\n }).describe('Key management configuration'),\n scope: z.enum(['field', 'record', 'table', 'database']).describe('Encryption scope level'),\n deterministicEncryption: z.boolean().default(false).describe('Allows equality queries on encrypted data'),\n searchableEncryption: z.boolean().default(false).describe('Allows search on encrypted data'),\n}).describe('Field-level encryption configuration'));\n\nexport type EncryptionConfig = z.infer<typeof EncryptionConfigSchema>;\nexport type EncryptionConfigInput = z.input<typeof EncryptionConfigSchema>;\n\nexport const FieldEncryptionSchema = lazySchema(() => z.object({\n fieldName: z.string().describe('Name of the field to encrypt'),\n encryptionConfig: EncryptionConfigSchema.describe('Encryption settings for this field'),\n indexable: z.boolean().default(false).describe('Allow indexing on encrypted field'),\n}).describe('Per-field encryption assignment'));\n\nexport type FieldEncryption = z.infer<typeof FieldEncryptionSchema>;\nexport type FieldEncryptionInput = z.input<typeof FieldEncryptionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Data masking protocol for PII protection\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const MaskingStrategySchema = lazySchema(() => z.enum([\n 'redact', // Complete redaction: ****\n 'partial', // Partial masking: 138****5678\n 'hash', // Hash value: sha256(value)\n 'tokenize', // Tokenization: token-12345\n 'randomize', // Randomize: generate random value\n 'nullify', // Null value: null\n 'substitute', // Substitute with dummy data\n]).describe('Data masking strategy for PII protection'));\n\nexport type MaskingStrategy = z.infer<typeof MaskingStrategySchema>;\n\nexport const MaskingRuleSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to apply masking to'),\n strategy: MaskingStrategySchema.describe('Masking strategy to use'),\n pattern: z.string().optional().describe('Regex pattern for partial masking'),\n preserveFormat: z.boolean().default(true).describe('Keep the original data format after masking'),\n preserveLength: z.boolean().default(true).describe('Keep the original data length after masking'),\n roles: z.array(z.string()).optional().describe('Roles that see masked data'),\n exemptRoles: z.array(z.string()).optional().describe('Roles that see unmasked data'),\n}).describe('Masking rule for a single field'));\n\nexport type MaskingRule = z.infer<typeof MaskingRuleSchema>;\nexport type MaskingRuleInput = z.input<typeof MaskingRuleSchema>;\n\nexport const MaskingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable data masking'),\n rules: z.array(MaskingRuleSchema).describe('List of field-level masking rules'),\n auditUnmasking: z.boolean().default(true).describe('Log when masked data is accessed unmasked'),\n}).describe('Top-level data masking configuration for PII protection'));\n\nexport type MaskingConfig = z.infer<typeof MaskingConfigSchema>;\nexport type MaskingConfigInput = z.input<typeof MaskingConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SystemIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { EncryptionConfigSchema } from '../system/encryption.zod';\nimport { MaskingRuleSchema } from '../system/masking.zod';\n\n/**\n * Field Type Enum\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldType = z.enum([\n // Core Text\n 'text', 'textarea', 'email', 'url', 'phone', 'password',\n // 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 = lazySchema(() => z.object({\n label: z.string().describe('Display label (human-readable, any case allowed)'),\n value: SystemIdentifierSchema.describe('Stored value (lowercase machine identifier)'),\n color: z.string().optional().describe('Color code for badges/charts'),\n default: z.boolean().optional().describe('Is default option'),\n}));\n\n/**\n * Location Coordinates Schema\n * GPS coordinates for location field type\n */\nexport const LocationCoordinatesSchema = lazySchema(() => z.object({\n latitude: z.number().min(-90).max(90).describe('Latitude coordinate'),\n longitude: z.number().min(-180).max(180).describe('Longitude coordinate'),\n altitude: z.number().optional().describe('Altitude in meters'),\n accuracy: z.number().optional().describe('Accuracy in meters'),\n}));\n\n/**\n * Currency Configuration Schema\n * Configuration for currency field type supporting multi-currency\n * \n * Note: Currency codes are validated by length only (3 characters) to support:\n * - Standard ISO 4217 codes (USD, EUR, CNY, etc.)\n * - Cryptocurrency codes (BTC, ETH, etc.)\n * - Custom business-specific codes\n * Stricter validation can be implemented at the application layer based on business requirements.\n */\nexport const CurrencyConfigSchema = lazySchema(() => z.object({\n precision: z.number().int().min(0).max(10).default(2).describe('Decimal precision (default: 2)'),\n currencyMode: z.enum(['dynamic', 'fixed']).default('dynamic').describe('Currency mode: dynamic (user selectable) or fixed (single currency)'),\n defaultCurrency: z.string().length(3).default('CNY').describe('Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)'),\n}));\n\n/**\n * Currency Value Schema\n * Runtime value structure for currency fields\n * \n * Note: Currency codes are validated by length only (3 characters) to support flexibility.\n * See CurrencyConfigSchema for details on currency code validation strategy.\n */\nexport const CurrencyValueSchema = lazySchema(() => z.object({\n value: z.number().describe('Monetary amount'),\n currency: z.string().length(3).describe('Currency code (ISO 4217)'),\n}));\n\n/**\n * Address Schema\n * Structured address for address field type\n */\nexport const AddressSchema = lazySchema(() => z.object({\n street: z.string().optional().describe('Street address'),\n city: z.string().optional().describe('City name'),\n state: z.string().optional().describe('State/Province'),\n postalCode: z.string().optional().describe('Postal/ZIP code'),\n country: z.string().optional().describe('Country name or code'),\n countryCode: z.string().optional().describe('ISO country code (e.g., US, GB)'),\n formatted: z.string().optional().describe('Formatted address string'),\n}));\n\n/**\n * Vector Configuration Schema\n * Configuration for vector field type supporting AI/ML embeddings\n * \n * Vector fields store numerical embeddings for semantic search, similarity matching,\n * and Retrieval-Augmented Generation (RAG) workflows.\n * \n * @example\n * // Text embeddings for semantic search\n * {\n * dimensions: 1536, // OpenAI text-embedding-ada-002\n * distanceMetric: 'cosine',\n * indexed: true\n * }\n * \n * @example\n * // Image embeddings with normalization\n * {\n * dimensions: 512, // ResNet-50\n * distanceMetric: 'euclidean',\n * normalized: true,\n * indexed: true\n * }\n */\nexport const VectorConfigSchema = lazySchema(() => z.object({\n dimensions: z.number().int().min(1).max(10000).describe('Vector dimensionality (e.g., 1536 for OpenAI embeddings)'),\n distanceMetric: z.enum(['cosine', 'euclidean', 'dotProduct', 'manhattan']).default('cosine').describe('Distance/similarity metric for vector search'),\n normalized: z.boolean().default(false).describe('Whether vectors are normalized (unit length)'),\n indexed: z.boolean().default(true).describe('Whether to create a vector index for fast similarity search'),\n indexType: z.enum(['hnsw', 'ivfflat', 'flat']).optional().describe('Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)'),\n}));\n\n/**\n * File Attachment Configuration Schema\n * Configuration for file and attachment field types\n * \n * Provides comprehensive file upload capabilities with:\n * - File type restrictions (allowed/blocked)\n * - File size limits (min/max)\n * - Virus scanning integration\n * - Storage provider integration\n * - Image-specific features (dimensions, thumbnails)\n * \n * @example Basic file upload with size limit\n * {\n * maxSize: 10485760, // 10MB\n * allowedTypes: ['.pdf', '.docx', '.xlsx'],\n * virusScan: true\n * }\n * \n * @example Image upload with validation\n * {\n * maxSize: 5242880, // 5MB\n * allowedTypes: ['.jpg', '.jpeg', '.png', '.webp'],\n * imageValidation: {\n * maxWidth: 4096,\n * maxHeight: 4096,\n * generateThumbnails: true\n * }\n * }\n */\nexport const FileAttachmentConfigSchema = lazySchema(() => z.object({\n /** File Size Limits */\n minSize: z.number().min(0).optional().describe('Minimum file size in bytes'),\n maxSize: z.number().min(1).optional().describe('Maximum file size in bytes (e.g., 10485760 = 10MB)'),\n \n /** File Type Restrictions */\n allowedTypes: z.array(z.string()).optional().describe('Allowed file extensions (e.g., [\".pdf\", \".docx\", \".jpg\"])'),\n blockedTypes: z.array(z.string()).optional().describe('Blocked file extensions (e.g., [\".exe\", \".bat\", \".sh\"])'),\n allowedMimeTypes: z.array(z.string()).optional().describe('Allowed MIME types (e.g., [\"image/jpeg\", \"application/pdf\"])'),\n blockedMimeTypes: z.array(z.string()).optional().describe('Blocked MIME types'),\n \n /** Virus Scanning */\n virusScan: z.boolean().default(false).describe('Enable virus scanning for uploaded files'),\n virusScanProvider: z.enum(['clamav', 'virustotal', 'metadefender', 'custom']).optional().describe('Virus scanning service provider'),\n virusScanOnUpload: z.boolean().default(true).describe('Scan files immediately on upload'),\n quarantineOnThreat: z.boolean().default(true).describe('Quarantine files if threat detected'),\n \n /** Storage Configuration */\n storageProvider: z.string().optional().describe('Object storage provider name (references ObjectStorageConfig)'),\n storageBucket: z.string().optional().describe('Target bucket name'),\n storagePrefix: z.string().optional().describe('Storage path prefix (e.g., \"uploads/documents/\")'),\n \n /** Image-Specific Validation */\n imageValidation: z.object({\n minWidth: z.number().min(1).optional().describe('Minimum image width in pixels'),\n maxWidth: z.number().min(1).optional().describe('Maximum image width in pixels'),\n minHeight: z.number().min(1).optional().describe('Minimum image height in pixels'),\n maxHeight: z.number().min(1).optional().describe('Maximum image height in pixels'),\n aspectRatio: z.string().optional().describe('Required aspect ratio (e.g., \"16:9\", \"1:1\")'),\n generateThumbnails: z.boolean().default(false).describe('Auto-generate thumbnails'),\n thumbnailSizes: z.array(z.object({\n name: z.string().describe('Thumbnail variant name (e.g., \"small\", \"medium\", \"large\")'),\n width: z.number().min(1).describe('Thumbnail width in pixels'),\n height: z.number().min(1).describe('Thumbnail height in pixels'),\n crop: z.boolean().default(false).describe('Crop to exact dimensions'),\n })).optional().describe('Thumbnail size configurations'),\n preserveMetadata: z.boolean().default(false).describe('Preserve EXIF metadata'),\n autoRotate: z.boolean().default(true).describe('Auto-rotate based on EXIF orientation'),\n }).optional().describe('Image-specific validation rules'),\n \n /** Upload Behavior */\n allowMultiple: z.boolean().default(false).describe('Allow multiple file uploads (overrides field.multiple)'),\n allowReplace: z.boolean().default(true).describe('Allow replacing existing files'),\n allowDelete: z.boolean().default(true).describe('Allow deleting uploaded files'),\n requireUpload: z.boolean().default(false).describe('Require at least one file when field is required'),\n \n /** Metadata Extraction */\n extractMetadata: z.boolean().default(true).describe('Extract file metadata (name, size, type, etc.)'),\n extractText: z.boolean().default(false).describe('Extract text content from documents (OCR/parsing)'),\n \n /** Versioning */\n versioningEnabled: z.boolean().default(false).describe('Keep previous versions of replaced files'),\n maxVersions: z.number().min(1).optional().describe('Maximum number of versions to retain'),\n \n /** Access Control */\n publicRead: z.boolean().default(false).describe('Allow public read access to uploaded files'),\n presignedUrlExpiry: z.number().min(60).max(604800).default(3600).describe('Presigned URL expiration in seconds (default: 1 hour)'),\n}).refine((data) => {\n // Validate minSize is less than or equal to maxSize\n if (data.minSize !== undefined && data.maxSize !== undefined && data.minSize > data.maxSize) {\n return false;\n }\n return true;\n}, {\n message: 'minSize must be less than or equal to maxSize',\n}).refine((data) => {\n // Validate virusScanProvider requires virusScan to be enabled\n if (data.virusScanProvider !== undefined && data.virusScan !== true) {\n return false;\n }\n return true;\n}, {\n message: 'virusScanProvider requires virusScan to be enabled',\n}));\n\n/**\n * Data Quality Rules Schema\n * Defines data quality validation and monitoring for fields\n * \n * @example Unique SSN field with completeness requirement\n * {\n * uniqueness: true,\n * completeness: 0.95, // 95% of records must have this field\n * accuracy: {\n * source: 'government_db',\n * threshold: 0.98\n * }\n * }\n */\nexport const DataQualityRulesSchema = lazySchema(() => z.object({\n /** Enforce uniqueness constraint */\n uniqueness: z.boolean().default(false).describe('Enforce unique values across all records'),\n \n /** Completeness ratio (0-1) indicating minimum percentage of non-null values */\n completeness: z.number().min(0).max(1).default(0).describe('Minimum ratio of non-null values (0-1, default: 0 = no requirement)'),\n \n /** Accuracy validation against authoritative source */\n accuracy: z.object({\n source: z.string().describe('Reference data source for validation (e.g., \"api.verify.com\", \"master_data\")'),\n threshold: z.number().min(0).max(1).describe('Minimum accuracy threshold (0-1, e.g., 0.95 = 95% match required)'),\n }).optional().describe('Accuracy validation configuration'),\n}));\n\n/**\n * Computed Field Caching Schema\n * Configuration for caching computed/formula field results\n * \n * @example Cache product price with 1-hour TTL, invalidate on inventory changes\n * {\n * enabled: true,\n * ttl: 3600,\n * invalidateOn: ['inventory.quantity', 'pricing.discount']\n * }\n */\nexport const ComputedFieldCacheSchema = lazySchema(() => z.object({\n /** Enable caching for this computed field */\n enabled: z.boolean().describe('Enable caching for computed field results'),\n \n /** Time-to-live in seconds */\n ttl: z.number().min(0).describe('Cache TTL in seconds (0 = no expiration)'),\n \n /** Array of field paths that trigger cache invalidation when changed */\n invalidateOn: z.array(z.string()).describe('Field paths that invalidate cache (e.g., [\"inventory.quantity\", \"pricing.base_price\"])'),\n}));\n\n/**\n * Field Schema - Best Practice Enterprise Pattern\n */\n/**\n * Field Definition Schema\n * Defines the properties, type, and behavior of a single field (column) on an object.\n * \n * @example Lookup Field\n * {\n * name: \"account_id\",\n * label: \"Account\",\n * type: \"lookup\",\n * reference: \"accounts\",\n * required: true\n * }\n * \n * @example Select Field\n * {\n * name: \"status\",\n * label: \"Status\",\n * type: \"select\",\n * options: [\n * { label: \"Open\", value: \"open\" },\n * { label: \"Closed\", value: \"closed\" }\n * ],\n * defaultValue: \"open\"\n * }\n */\nexport const FieldSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine name (snake_case)').optional(),\n label: z.string().optional().describe('Human readable label'),\n type: FieldType.describe('Field Data Type'),\n description: z.string().optional().describe('Tooltip/Help text'),\n format: z.string().optional().describe('Format string (e.g. email, phone)'),\n\n /** Storage Layer Mapping */\n columnName: z.string().optional().describe('Physical column name in the target datasource. Defaults to the field key when not set.'),\n\n /** Database Constraints */\n required: z.boolean().default(false).describe('Is required'),\n searchable: z.boolean().default(false).describe('Is searchable'),\n multiple: z.boolean().default(false).describe('Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image.'),\n unique: z.boolean().default(false).describe('Is unique constraint'),\n defaultValue: z.unknown().optional().describe('Default value'),\n \n /** Text/String Constraints */\n maxLength: z.number().optional().describe('Max character length'),\n minLength: z.number().optional().describe('Min character length'),\n \n /** Number Constraints */\n precision: z.number().optional().describe('Total digits'),\n scale: z.number().optional().describe('Decimal places'),\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n\n /** Selection Options */\n options: z.array(SelectOptionSchema).optional().describe('Static options for select/multiselect'),\n\n /**\n * Relationship Config\n * \n * Used by `lookup` and `master_detail` field types to define cross-object references.\n * The `reference` property is **required** for these types — it identifies the target\n * object whose records this field links to. The engine uses `reference` during $expand\n * post-processing to resolve foreign key IDs into full related objects via batch queries.\n * \n * For `master_detail` fields, the parent record controls the lifecycle of child records\n * (e.g., cascade delete). For `lookup` fields, the reference is a soft link.\n */\n reference: z.string().optional().describe(\n 'Target object name (snake_case) for lookup/master_detail fields. '\n + 'Required for relationship types. Used by $expand to resolve foreign key IDs into full objects.'\n ),\n referenceFilters: z.array(z.string()).optional().describe('Filters applied to lookup dialogs (e.g. \"active = true\")'),\n writeRequiresMasterRead: z.boolean().optional().describe('If true, user needs read access to master record to edit this field'),\n deleteBehavior: z.enum(['set_null', 'cascade', 'restrict']).optional().default('set_null').describe('What happens if referenced record is deleted'),\n\n /** Calculation — CEL formula. Plain string accepted for back-compat; build emits canonical envelope. */\n expression: ExpressionInputSchema.optional().describe('Formula expression (CEL). e.g. F`record.amount * 0.1`'),\n summaryOperations: z.object({\n object: z.string().describe('Source child object name for roll-up'),\n field: z.string().describe('Field on child object to aggregate'),\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: ExpressionInputSchema.optional().describe('Predicate (CEL) — field is required when TRUE. e.g. P`record.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 system: z.boolean().optional().describe('Auto-injected system/audit field (e.g. created_at, updated_by, organization_id). Tools that surface system fields separately from author-declared business fields should branch on this flag.'),\n sortable: z.boolean().optional().default(true).describe('Whether field is sortable in list views'),\n inlineHelpText: z.string().optional().describe('Help text displayed below the field in forms'),\n trackFeedHistory: z.boolean().optional().describe('Track field changes in Chatter/activity feed (Salesforce pattern)'),\n caseSensitive: z.boolean().optional().describe('Whether text comparisons are case-sensitive'),\n autonumberFormat: z.string().optional().describe('Auto-number display format pattern (e.g., \"CASE-{0000}\")'),\n /** Indexing */\n index: z.boolean().default(false).describe('Create standard database index'),\n externalId: z.boolean().default(false).describe('Is external ID for upsert operations'),\n}));\n\nexport type Field = z.infer<typeof FieldSchema>;\nexport type SelectOption = z.infer<typeof SelectOptionSchema>;\nexport type LocationCoordinates = z.infer<typeof LocationCoordinatesSchema>;\nexport type Address = z.infer<typeof AddressSchema>;\nexport type CurrencyConfig = z.infer<typeof CurrencyConfigSchema>;\nexport type CurrencyConfigInput = z.input<typeof CurrencyConfigSchema>;\nexport type CurrencyValue = z.infer<typeof CurrencyValueSchema>;\nexport type VectorConfig = z.infer<typeof VectorConfigSchema>;\nexport type VectorConfigInput = z.input<typeof VectorConfigSchema>;\nexport type FileAttachmentConfig = z.infer<typeof FileAttachmentConfigSchema>;\nexport type FileAttachmentConfigInput = z.input<typeof FileAttachmentConfigSchema>;\nexport type DataQualityRules = z.infer<typeof DataQualityRulesSchema>;\nexport type DataQualityRulesInput = z.input<typeof DataQualityRulesSchema>;\nexport type ComputedFieldCache = z.infer<typeof ComputedFieldCacheSchema>;\n\n/**\n * Field Factory Helper\n */\nexport type FieldInput = Omit<Partial<Field>, 'type'>;\n\nexport const Field = {\n text: (config: FieldInput = {}) => ({ type: 'text', ...config } as const),\n textarea: (config: FieldInput = {}) => ({ type: 'textarea', ...config } as const),\n number: (config: FieldInput = {}) => ({ type: 'number', ...config } as const),\n boolean: (config: FieldInput = {}) => ({ type: 'boolean', ...config } as const),\n date: (config: FieldInput = {}) => ({ type: 'date', ...config } as const),\n datetime: (config: FieldInput = {}) => ({ type: 'datetime', ...config } as const),\n currency: (config: FieldInput = {}) => ({ type: 'currency', ...config } as const),\n percent: (config: FieldInput = {}) => ({ type: 'percent', ...config } as const),\n url: (config: FieldInput = {}) => ({ type: 'url', ...config } as const),\n email: (config: FieldInput = {}) => ({ type: 'email', ...config } as const),\n phone: (config: FieldInput = {}) => ({ type: 'phone', ...config } as const),\n image: (config: FieldInput = {}) => ({ type: 'image', ...config } as const),\n file: (config: FieldInput = {}) => ({ type: 'file', ...config } as const),\n avatar: (config: FieldInput = {}) => ({ type: 'avatar', ...config } as const),\n formula: (config: FieldInput = {}) => ({ type: 'formula', ...config } as const),\n summary: (config: FieldInput = {}) => ({ type: 'summary', ...config } as const),\n autonumber: (config: FieldInput = {}) => ({ type: 'autonumber', ...config } as const),\n markdown: (config: FieldInput = {}) => ({ type: 'markdown', ...config } as const),\n html: (config: FieldInput = {}) => ({ type: 'html', ...config } as const),\n password: (config: FieldInput = {}) => ({ type: 'password', ...config } as const),\n \n /**\n * Select field helper with backward-compatible API\n * \n * Automatically converts option values to lowercase to enforce naming conventions.\n * \n * @example Old API (array first) - auto-converts to lowercase\n * Field.select(['High', 'Low'], { label: 'Priority' })\n * // Results in: [{ label: 'High', value: 'high' }, { label: 'Low', value: 'low' }]\n * \n * @example New API (config object) - enforces lowercase\n * Field.select({ options: [{label: 'High', value: 'high'}], label: 'Priority' })\n * \n * @example Multi-word values - converts to snake_case\n * Field.select(['In Progress', 'Closed Won'], { label: 'Status' })\n * // Results in: [{ label: 'In Progress', value: 'in_progress' }, { label: 'Closed Won', value: 'closed_won' }]\n */\n select: (optionsOrConfig: SelectOption[] | string[] | FieldInput & { options: SelectOption[] | string[] }, config?: FieldInput) => {\n // Helper function to convert string to lowercase snake_case\n const toSnakeCase = (str: string): string => {\n return str\n .toLowerCase()\n .replace(/\\s+/g, '_') // Replace spaces with underscores\n .replace(/[^a-z0-9_]/g, ''); // Remove invalid characters (keeping underscores only)\n };\n\n // Support both old and new signatures:\n // Old: Field.select(['a', 'b'], { label: 'X' })\n // New: Field.select({ options: [{label: 'A', value: 'a'}], label: 'X' })\n let options: SelectOption[];\n let finalConfig: FieldInput;\n \n if (Array.isArray(optionsOrConfig)) {\n // Old signature: array as first param\n options = optionsOrConfig.map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n finalConfig = config || {};\n } else {\n // New signature: config object with options\n options = (optionsOrConfig.options || []).map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n // Remove options from config to avoid confusion\n const { options: _, ...restConfig } = optionsOrConfig;\n finalConfig = restConfig;\n }\n \n return { type: 'select', options, ...finalConfig } as const;\n },\n\n \n lookup: (reference: string, config: FieldInput = {}) => ({ \n type: 'lookup', \n reference, \n ...config \n } as const),\n \n masterDetail: (reference: string, config: FieldInput = {}) => ({ \n type: 'master_detail', \n reference, \n ...config \n } as const),\n\n // Enhanced Field Type Helpers\n location: (config: FieldInput = {}) => ({ \n type: 'location', \n ...config \n } as const),\n \n address: (config: FieldInput = {}) => ({ \n type: 'address', \n ...config \n } as const),\n \n richtext: (config: FieldInput = {}) => ({ \n type: 'richtext', \n ...config \n } as const),\n \n code: (language?: string, config: FieldInput = {}) => ({ \n type: 'code', \n language,\n ...config \n } as const),\n \n color: (config: FieldInput = {}) => ({ \n type: 'color', \n ...config \n } as const),\n \n rating: (maxRating: number = 5, config: FieldInput = {}) => ({ \n type: 'rating', \n maxRating,\n ...config \n } as const),\n \n signature: (config: FieldInput = {}) => ({ \n type: 'signature', \n ...config \n } as const),\n \n slider: (config: FieldInput = {}) => ({ \n type: 'slider', \n ...config \n } as const),\n \n qrcode: (config: FieldInput = {}) => ({ \n type: 'qrcode', \n ...config \n } as const),\n \n json: (config: FieldInput = {}) => ({ \n type: 'json', \n ...config \n } as const),\n \n vector: (dimensions: number, config: FieldInput = {}) => ({ \n type: 'vector', \n vectorConfig: {\n dimensions,\n distanceMetric: 'cosine' as const,\n normalized: false,\n indexed: true,\n ...config.vectorConfig\n },\n ...config \n } as const),\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { FieldType } from '../data/field.zod';\n\n/**\n * \"Did you mean?\" Suggestion Utilities\n *\n * Provides fuzzy matching for common ObjectStack identifiers.\n * Used by the custom error map to suggest corrections for typos.\n *\n * @example\n * ```ts\n * suggestFieldType('text_area'); // ['textarea']\n * suggestFieldType('String'); // ['text']\n * suggestFieldType('int'); // ['number']\n * ```\n */\n\n/**\n * Compute Levenshtein edit distance between two strings.\n * Uses space-optimized two-row approach (O(min(m,n)) space).\n */\nexport function levenshteinDistance(a: string, b: string): number {\n const la = a.length;\n const lb = b.length;\n\n if (la === 0) return lb;\n if (lb === 0) return la;\n\n // Use only two rows for space efficiency\n let prev = new Array<number>(lb + 1);\n let curr = new Array<number>(lb + 1);\n\n for (let j = 0; j <= lb; j++) {\n prev[j] = j;\n }\n\n for (let i = 1; i <= la; i++) {\n curr[0] = i;\n for (let j = 1; j <= lb; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n curr[j] = Math.min(\n prev[j] + 1, // deletion\n curr[j - 1] + 1, // insertion\n prev[j - 1] + cost, // substitution\n );\n }\n [prev, curr] = [curr, prev];\n }\n\n return prev[lb];\n}\n\n/**\n * Find the closest matches from a list of candidates.\n *\n * @param input - The user-provided (possibly invalid) value\n * @param candidates - Array of valid values to compare against\n * @param maxDistance - Maximum edit distance to consider (default: 3)\n * @param maxResults - Maximum number of suggestions to return (default: 3)\n * @returns Array of suggested values, sorted by similarity\n */\nexport function findClosestMatches(\n input: string,\n candidates: readonly string[],\n maxDistance = 3,\n maxResults = 3,\n): string[] {\n const normalized = input.toLowerCase().replace(/[-\\s]/g, '_');\n\n const scored = candidates\n .map((candidate) => ({\n value: candidate,\n distance: levenshteinDistance(normalized, candidate),\n }))\n .filter((s) => s.distance <= maxDistance && s.distance > 0)\n .sort((a, b) => a.distance - b.distance);\n\n return scored.slice(0, maxResults).map((s) => s.value);\n}\n\n/**\n * Well-known aliases that map common typos / alternative names to valid FieldTypes.\n */\nconst FIELD_TYPE_ALIASES: Record<string, string> = {\n // Common alternative names\n string: 'text',\n str: 'text',\n varchar: 'text',\n char: 'text',\n int: 'number',\n integer: 'number',\n float: 'number',\n double: 'number',\n decimal: 'number',\n numeric: 'number',\n bool: 'boolean',\n checkbox: 'boolean',\n check: 'boolean',\n date_time: 'datetime',\n timestamp: 'datetime',\n // Common typos\n text_area: 'textarea',\n textarea_: 'textarea',\n textfield: 'text',\n dropdown: 'select',\n picklist: 'select',\n enum: 'select',\n multi_select: 'multiselect',\n multiselect_: 'multiselect',\n reference: 'lookup',\n ref: 'lookup',\n foreign_key: 'lookup',\n fk: 'lookup',\n relation: 'lookup',\n master: 'master_detail',\n richtext_: 'richtext',\n rich_text: 'richtext',\n upload: 'file',\n attachment: 'file',\n photo: 'image',\n picture: 'image',\n img: 'image',\n percent_: 'percent',\n percentage: 'percent',\n money: 'currency',\n price: 'currency',\n auto_number: 'autonumber',\n auto_increment: 'autonumber',\n sequence: 'autonumber',\n markdown_: 'markdown',\n md: 'markdown',\n barcode: 'qrcode',\n tag: 'tags',\n star: 'rating',\n stars: 'rating',\n geo: 'location',\n gps: 'location',\n coordinates: 'location',\n embed: 'vector',\n embedding: 'vector',\n embeddings: 'vector',\n};\n\n/**\n * Suggest valid FieldType values for an invalid input.\n *\n * First checks known aliases, then falls back to fuzzy matching.\n *\n * @param input - Invalid field type string\n * @returns Array of suggested valid FieldType values\n *\n * @example\n * ```ts\n * suggestFieldType('text_area'); // ['textarea']\n * suggestFieldType('String'); // ['text']\n * suggestFieldType('int'); // ['number']\n * suggestFieldType('dropdown'); // ['select']\n * ```\n */\nexport function suggestFieldType(input: string): string[] {\n const normalized = input.toLowerCase().replace(/[-\\s]/g, '_');\n\n // Check alias map first\n const alias = FIELD_TYPE_ALIASES[normalized];\n if (alias) {\n return [alias];\n }\n\n // Fall back to fuzzy matching\n return findClosestMatches(normalized, FieldType.options);\n}\n\n/**\n * Format a \"Did you mean?\" message for display.\n *\n * @param suggestions - Array of suggested values\n * @returns Formatted string or empty string if no suggestions\n */\nexport function formatSuggestion(suggestions: string[]): string {\n if (suggestions.length === 0) return '';\n if (suggestions.length === 1) return `Did you mean '${suggestions[0]}'?`;\n return `Did you mean one of: ${suggestions.map((s) => `'${s}'`).join(', ')}?`;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { suggestFieldType, formatSuggestion, findClosestMatches } from './suggestions.zod';\nimport { FieldType } from '../data/field.zod';\n\n/**\n * Zod v4 raw issue type used by the error map.\n */\nexport type ObjectStackRawIssue = z.core.$ZodRawIssue;\n\n/**\n * ObjectStack Custom Zod Error Map\n *\n * Provides contextual, actionable error messages for ObjectStack schema validation.\n * Instead of generic Zod messages like \"Invalid option\", this error map returns\n * messages that explain the ObjectStack context and suggest fixes.\n *\n * In Zod v4, the error map is a function `(issue) => { message: string } | string | null`.\n * Pass it via the `error` option on `.safeParse()` / `.parse()`.\n *\n * @example\n * ```ts\n * import { objectStackErrorMap } from '@objectstack/spec';\n *\n * // Per-parse usage\n * SomeSchema.safeParse(data, { error: objectStackErrorMap });\n * ```\n */\nexport const objectStackErrorMap = (issue: ObjectStackRawIssue): { message: string } | null => {\n // --- Invalid value (enum) with suggestions ---\n if (issue.code === 'invalid_value') {\n const values = issue.values as unknown[];\n const input = issue.input;\n const received = String(input ?? '');\n const options = values.map(String);\n\n // Check if this looks like a FieldType enum\n const fieldTypeOptions = FieldType.options as readonly string[];\n const isFieldTypeEnum = options.length > 10 &&\n fieldTypeOptions.every((ft) => options.includes(ft));\n\n if (isFieldTypeEnum) {\n const suggestions = suggestFieldType(received);\n const suggestion = formatSuggestion(suggestions);\n const base = `Invalid field type '${received}'.`;\n return {\n message: suggestion ? `${base} ${suggestion}` : `${base} Valid types: ${options.slice(0, 10).join(', ')}...`,\n };\n }\n\n // Generic enum suggestion\n const suggestions = findClosestMatches(received, options);\n const suggestion = formatSuggestion(suggestions);\n const base = `Invalid value '${received}'.`;\n return {\n message: suggestion\n ? `${base} ${suggestion}`\n : `${base} Expected one of: ${options.join(', ')}.`,\n };\n }\n\n // --- String/array/number size validation ---\n if (issue.code === 'too_small') {\n const origin = issue.origin as string;\n const minimum = issue.minimum as number;\n if (origin === 'string') {\n return {\n message: `Must be at least ${minimum} character${minimum === 1 ? '' : 's'} long.`,\n };\n }\n }\n\n if (issue.code === 'too_big') {\n const origin = issue.origin as string;\n const maximum = issue.maximum as number;\n if (origin === 'string') {\n return {\n message: `Must be at most ${maximum} character${maximum === 1 ? '' : 's'} long.`,\n };\n }\n }\n\n // --- String format validation (regex) ---\n if (issue.code === 'invalid_format') {\n const format = issue.format as string;\n const input = issue.input as string | undefined;\n if (format === 'regex' && input) {\n const pathArr = issue.path as (string | number)[] | undefined;\n const pathStr = pathArr?.join('.') ?? '';\n if (pathStr.endsWith('name') || pathStr === 'name') {\n return {\n message: `Invalid identifier '${input}'. Must be lowercase snake_case (e.g., 'my_object', 'task_name'). No uppercase, spaces, or hyphens allowed.`,\n };\n }\n }\n }\n\n // --- Missing required / type mismatch ---\n if (issue.code === 'invalid_type') {\n const expected = issue.expected as string;\n const input = issue.input;\n if (input === undefined) {\n const pathArr = issue.path as (string | number)[] | undefined;\n const field = pathArr?.[pathArr.length - 1] ?? '';\n return {\n message: `Required property '${field}' is missing.`,\n };\n }\n const receivedType = input === null ? 'null' : typeof input;\n return {\n message: `Expected ${expected} but received ${receivedType}.`,\n };\n }\n\n // --- Unrecognized keys ---\n if (issue.code === 'unrecognized_keys') {\n const keys = issue.keys as string[];\n const keyStr = keys.join(', ');\n return {\n message: `Unrecognized key${keys.length > 1 ? 's' : ''}: ${keyStr}. Check for typos in property names.`,\n };\n }\n\n // Fallback to Zod default\n return null;\n};\n\n/**\n * Zod Issue interface (subset needed for formatting).\n */\ninterface ZodIssueMinimal {\n path: PropertyKey[];\n message: string;\n code?: string;\n}\n\n/**\n * Format a single Zod issue into a human-readable line.\n *\n * @param issue - A single Zod issue\n * @returns Formatted string with path and message\n */\nexport function formatZodIssue(issue: ZodIssueMinimal): string {\n const path = issue.path.length > 0\n ? issue.path.join('.')\n : '(root)';\n return ` ✗ ${path}: ${issue.message}`;\n}\n\n/**\n * Pretty-print Zod validation errors for CLI output.\n *\n * Formats a ZodError into a readable block suitable for terminal display.\n * Groups errors by path depth and includes a summary count.\n *\n * @param error - A ZodError to format\n * @param label - Optional label for the error block (e.g., 'Stack validation failed')\n * @returns Formatted multi-line string\n *\n * @example\n * ```ts\n * import { formatZodError, ObjectStackDefinitionSchema } from '@objectstack/spec';\n *\n * const result = ObjectStackDefinitionSchema.safeParse(data);\n * if (!result.success) {\n * console.error(formatZodError(result.error, 'Stack validation failed'));\n * }\n * ```\n *\n * Output:\n * ```\n * Stack validation failed (3 issues):\n *\n * ✗ manifest.name: Required property 'name' is missing.\n * ✗ objects[0].fields.status.type: Invalid field type 'dropdown'. Did you mean 'select'?\n * ✗ views[0].object: Invalid identifier 'MyTasks'. Must be lowercase snake_case.\n * ```\n */\nexport function formatZodError(error: z.ZodError, label?: string): string {\n const count = error.issues.length;\n const header = label\n ? `${label} (${count} issue${count === 1 ? '' : 's'}):`\n : `Validation failed (${count} issue${count === 1 ? '' : 's'}):`;\n\n const lines = error.issues.map(formatZodIssue);\n\n return `${header}\\n\\n${lines.join('\\n')}`;\n}\n\n/**\n * Parse with the ObjectStack error map and return formatted errors.\n *\n * A convenience function that combines parsing with the custom error map\n * and pretty-print formatting. Returns a discriminated union result.\n *\n * @param schema - Any Zod schema to parse with\n * @param data - Data to validate\n * @param label - Optional label for error formatting\n * @returns Object with `success`, `data`, and optional `formatted` error string\n *\n * @example\n * ```ts\n * const result = safeParsePretty(ObjectStackDefinitionSchema, config, 'objectstack.config.ts');\n * if (!result.success) {\n * console.error(result.formatted);\n * process.exit(1);\n * }\n * ```\n */\nexport function safeParsePretty<T extends z.ZodTypeAny>(\n schema: T,\n data: unknown,\n label?: string,\n): { success: true; data: z.infer<T> } | { success: false; error: z.ZodError; formatted: string } {\n const result = schema.safeParse(data, { error: objectStackErrorMap });\n if (result.success) {\n return { success: true, data: result.data };\n }\n return {\n success: false,\n error: result.error,\n formatted: formatZodError(result.error, label),\n };\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Metadata Collection Utilities\n * \n * Provides support for defining metadata collections in either array or map (Record) format.\n * Map format automatically injects the key as the `name` field, following the same pattern\n * used by `fields` in ObjectSchema (which already uses `z.record(key, FieldSchema)`).\n * \n * ## Usage\n * \n * Both formats are accepted and normalized to arrays:\n * \n * ```ts\n * // Array format (traditional)\n * defineStack({\n * objects: [\n * { name: 'account', fields: { ... } },\n * { name: 'contact', fields: { ... } },\n * ]\n * });\n * \n * // Map format (key becomes `name`)\n * defineStack({\n * objects: {\n * account: { fields: { ... } },\n * contact: { fields: { ... } },\n * }\n * });\n * ```\n * \n * @module\n */\n\n/**\n * Input type for metadata collections: accepts either an array or a named map.\n * When using map format, the key is injected as the `name` field of each item.\n * \n * @typeParam T - The metadata item type (e.g., `ObjectSchema`, `AppSchema`)\n * \n * @example\n * ```ts\n * // Array format — name is required in each item\n * const apps: MetadataCollectionInput<App> = [\n * { name: 'sales', label: 'Sales' },\n * { name: 'service', label: 'Service' },\n * ];\n * \n * // Map format — key serves as name, so name is optional in value\n * const apps: MetadataCollectionInput<App> = {\n * sales: { label: 'Sales' },\n * service: { label: 'Service' },\n * };\n * ```\n */\nexport type MetadataCollectionInput<T> =\n | T[]\n | Record<string, Omit<T, 'name'> & { name?: string }>;\n\n/**\n * List of metadata fields in ObjectStackDefinitionSchema that support map format.\n * These are fields where each item has a `name` field that can be inferred from the map key.\n * \n * Excluded fields:\n * - `views` — ViewSchema has no `name` field (it's a container with `list`/`form`)\n * - `objectExtensions` — uses `extend` as its identifier, not `name`\n * - `data` — DatasetSchema uses `object` as its identifier\n * - `translations` — TranslationBundleSchema is a record, not a named object\n * - `plugins` / `devPlugins` — not named metadata schemas\n */\nexport const MAP_SUPPORTED_FIELDS = [\n 'objects',\n 'apps',\n 'pages',\n 'dashboards',\n 'reports',\n 'actions',\n 'themes',\n 'workflows',\n 'approvals',\n 'flows',\n 'roles',\n 'permissions',\n 'sharingRules',\n 'policies',\n 'apis',\n 'webhooks',\n 'agents',\n 'ragPipelines',\n 'hooks',\n 'mappings',\n 'analyticsCubes',\n 'connectors',\n 'datasources',\n] as const;\n\nexport type MapSupportedField = (typeof MAP_SUPPORTED_FIELDS)[number];\n\n/**\n * Mapping from plural manifest field names to singular metadata type names.\n *\n * Manifest / `defineStack()` uses plural property names because they are\n * collection fields (e.g. `objects: [...]`, `apps: [...]`). The metadata\n * registry and `MetadataTypeSchema` use singular names as the canonical form.\n *\n * Use this mapping at the boundary where manifest fields are fed into the\n * metadata registry to ensure a consistent singular naming convention.\n */\nexport const PLURAL_TO_SINGULAR: Record<string, string> = {\n objects: 'object',\n apps: 'app',\n pages: 'page',\n dashboards: 'dashboard',\n reports: 'report',\n actions: 'action',\n themes: 'theme',\n workflows: 'workflow',\n approvals: 'approval',\n flows: 'flow',\n roles: 'role',\n permissions: 'permission',\n profiles: 'profile',\n sharingRules: 'sharingRule',\n policies: 'policy',\n apis: 'api',\n webhooks: 'webhook',\n agents: 'agent',\n ragPipelines: 'ragPipeline',\n hooks: 'hook',\n mappings: 'mapping',\n analyticsCubes: 'analyticsCube',\n connectors: 'connector',\n datasources: 'datasource',\n views: 'view',\n};\n\n/** Reverse mapping: singular metadata type → plural manifest field name. */\nexport const SINGULAR_TO_PLURAL: Record<string, string> = Object.fromEntries(\n Object.entries(PLURAL_TO_SINGULAR).map(([plural, singular]) => [singular, plural]),\n);\n\n/** Convert a plural manifest field name to its singular metadata type name. Returns the input unchanged if no mapping exists. */\nexport function pluralToSingular(key: string): string {\n return PLURAL_TO_SINGULAR[key] ?? key;\n}\n\n/** Convert a singular metadata type name to its plural manifest field name. Returns the input unchanged if no mapping exists. */\nexport function singularToPlural(key: string): string {\n return SINGULAR_TO_PLURAL[key] ?? key;\n}\n\n\n/**\n * Normalize a single metadata collection value from map format to array format.\n * If the input is already an array (or nullish), it is returned unchanged.\n * If the input is a plain object (map), it is converted to an array where\n * each key is injected as the `name` field of the corresponding item.\n * \n * **Precedence:** If an item already has a `name` property, it is preserved\n * (the map key is only used as a fallback).\n * \n * @param value - The raw input value (array, map, or nullish)\n * @param keyField - The field name to inject the key into (default: `'name'`)\n * @returns The normalized array, or the original value if already an array/nullish\n * \n * @example\n * ```ts\n * // Map input\n * normalizeMetadataCollection({\n * account: { fields: { name: { type: 'text' } } },\n * contact: { fields: { email: { type: 'email' } } },\n * });\n * // → [\n * // { name: 'account', fields: { name: { type: 'text' } } },\n * // { name: 'contact', fields: { email: { type: 'email' } } },\n * // ]\n * \n * // Array input (pass-through)\n * normalizeMetadataCollection([{ name: 'account', fields: {} }]);\n * // → [{ name: 'account', fields: {} }]\n * ```\n */\nexport function normalizeMetadataCollection(value: unknown, keyField = 'name'): unknown {\n // Nullish or already an array — pass through\n if (value == null || Array.isArray(value)) return value;\n\n // Plain object — treat as map and convert to array\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([key, item]) => {\n if (item && typeof item === 'object' && !Array.isArray(item)) {\n const obj = item as Record<string, unknown>;\n // Only inject key if the item doesn't already have the field set\n if (!(keyField in obj) || obj[keyField] === undefined) {\n return { ...obj, [keyField]: key };\n }\n return obj;\n }\n // Non-object values (shouldn't happen, but let Zod handle the error)\n return item;\n });\n }\n\n // Other types — return as-is and let Zod validation handle the error\n return value;\n}\n\n/**\n * Normalize all metadata collections in a stack definition input.\n * Converts any map-formatted collections to arrays with key→name injection.\n * \n * This function is applied to the raw input before Zod validation,\n * ensuring the canonical internal format is always arrays.\n * \n * @param input - The raw stack definition input\n * @returns A new object with all map collections normalized to arrays\n */\nexport function normalizeStackInput<T extends Record<string, unknown>>(input: T): T {\n const result = { ...input };\n for (const field of MAP_SUPPORTED_FIELDS) {\n if (field in result) {\n (result as Record<string, unknown>)[field] = normalizeMetadataCollection(result[field]);\n }\n }\n return result;\n}\n\n/**\n * Mapping of legacy / alternative field names to their canonical names\n * in `ObjectStackDefinitionSchema`.\n *\n * Plugins may use legacy names (e.g., `triggers` instead of `hooks`).\n * This map lets `normalizePluginMetadata()` rewrite them automatically.\n */\nexport const METADATA_ALIASES: Record<string, MapSupportedField> = {\n triggers: 'hooks',\n};\n\n/**\n * Normalize plugin metadata so it matches the canonical format expected by the runtime.\n *\n * This handles two issues that commonly arise when loading third-party plugin metadata:\n *\n * 1. **Map → Array conversion** — plugins often define metadata as maps\n * (e.g., `actions: { convert_lead: { ... } }`), but the runtime expects arrays.\n * Every key listed in {@link MAP_SUPPORTED_FIELDS} is normalized via\n * {@link normalizeMetadataCollection}.\n *\n * 2. **Field aliasing** — plugins may use legacy or alternative field names\n * (e.g., `triggers` instead of `hooks`). {@link METADATA_ALIASES} maps them\n * to their canonical counterparts.\n *\n * 3. **Recursive normalization** — if the plugin itself contains nested `plugins`,\n * each nested plugin is normalized recursively.\n *\n * @param metadata - Raw plugin metadata object\n * @returns A new object with all collections normalized to arrays, aliases resolved,\n * and nested plugins recursively normalized\n *\n * @example\n * ```ts\n * const raw = {\n * actions: { lead_convert: { type: 'custom', label: 'Convert' } },\n * triggers: { lead_scoring: { object: 'lead', event: 'afterInsert' } },\n * };\n * const normalized = normalizePluginMetadata(raw);\n * // normalized.actions → [{ name: 'lead_convert', type: 'custom', label: 'Convert' }]\n * // normalized.hooks → [{ name: 'lead_scoring', object: 'lead', event: 'afterInsert' }]\n * // normalized.triggers → removed (merged into hooks)\n * ```\n */\nexport function normalizePluginMetadata<T extends Record<string, unknown>>(metadata: T): T {\n const result = { ...metadata };\n\n // 1. Resolve aliases (e.g. triggers → hooks), merging with any existing canonical values\n for (const [alias, canonical] of Object.entries(METADATA_ALIASES)) {\n if (alias in result) {\n const aliasValue = normalizeMetadataCollection(result[alias]);\n const canonicalValue = normalizeMetadataCollection(result[canonical]);\n\n // Merge: canonical array wins; alias values are appended\n if (Array.isArray(aliasValue)) {\n (result as Record<string, unknown>)[canonical] = Array.isArray(canonicalValue)\n ? [...canonicalValue, ...aliasValue]\n : aliasValue;\n }\n\n delete (result as Record<string, unknown>)[alias];\n }\n }\n\n // 2. Normalize map-formatted collections → arrays\n for (const field of MAP_SUPPORTED_FIELDS) {\n if (field in result) {\n (result as Record<string, unknown>)[field] = normalizeMetadataCollection(result[field]);\n }\n }\n\n // 3. Recursively normalize nested plugins\n if (Array.isArray(result.plugins)) {\n (result as Record<string, unknown>).plugins = result.plugins.map((p: unknown) => {\n if (p && typeof p === 'object' && !Array.isArray(p)) {\n return normalizePluginMetadata(p as Record<string, unknown>);\n }\n return p;\n });\n }\n\n return result;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from '../shared/expression.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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => BaseValidationSchema.extend({\n type: z.literal('script'),\n condition: ExpressionInputSchema.describe('Predicate (CEL). If TRUE, validation fails. e.g. P`record.amount < 0`'),\n}));\n\n/**\n * 2. Uniqueness Validation\n * specialized optimized check for unique constraints.\n */\nexport const UniquenessValidationSchema = lazySchema(() => BaseValidationSchema.extend({\n type: z.literal('unique'),\n fields: z.array(z.string()).describe('Fields that must be combined unique'),\n scope: ExpressionInputSchema.optional().describe('Predicate (CEL) limiting uniqueness scope. e.g. P`record.active == true`'),\n caseSensitive: z.boolean().default(true),\n}));\n\n/**\n * 3. State Machine Validation\n * State transition logic.\n */\nexport const StateMachineValidationSchema = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => BaseValidationSchema.extend({\n type: z.literal('cross_field'),\n condition: ExpressionInputSchema.describe('Predicate (CEL) comparing fields. e.g. P`record.end_date > record.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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => BaseValidationSchema.extend({\n type: z.literal('conditional'),\n when: ExpressionInputSchema.describe('Predicate (CEL). e.g. P`record.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 */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ActionRefSchema = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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';\n\n/**\n * I18n Object Schema\n * Structured internationalization label with translation key and parameters.\n * \n * @example\n * ```typescript\n * const label: I18nObject = {\n * key: 'views.task_list.label',\n * defaultValue: 'Task List',\n * params: { count: 5 },\n * };\n * ```\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const I18nObjectSchema = lazySchema(() => z.object({\n /** Translation key (e.g., \"views.task_list.label\", \"apps.crm.description\") */\n key: z.string().describe('Translation key (e.g., \"views.task_list.label\")'),\n\n /** Default value when translation is not available */\n defaultValue: z.string().optional().describe('Fallback value when translation key is not found'),\n\n /** Interpolation parameters for dynamic translations */\n params: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional().describe('Interpolation parameters (e.g., { count: 5 })'),\n}));\n\nexport type I18nObject = z.infer<typeof I18nObjectSchema>;\n\n/**\n * I18n Label Schema\n * \n * A plain string label for display purposes.\n * i18n translation keys are auto-generated by the framework at registration time\n * based on a standardized naming convention (e.g., `apps.<packageId>.<name>.label`).\n * Developers only need to provide the default-language string; translations are\n * managed through translation files, not inline i18n objects.\n * \n * @example\n * ```typescript\n * const label: I18nLabel = \"All Active\";\n * ```\n */\nexport const I18nLabelSchema = lazySchema(() => z.string().describe('Display label (plain string; i18n keys are auto-generated by the framework)'));\n\nexport type I18nLabel = z.infer<typeof I18nLabelSchema>;\n\n/**\n * ARIA Accessibility Properties Schema\n * \n * Common ARIA attributes for UI components to support screen readers\n * and assistive technologies.\n * \n * Aligned with WAI-ARIA 1.2 specification.\n * \n * @see https://www.w3.org/TR/wai-aria-1.2/\n * \n * @example\n * ```typescript\n * const aria: AriaProps = {\n * ariaLabel: 'Close dialog',\n * ariaDescribedBy: 'dialog-description',\n * role: 'dialog',\n * };\n * ```\n */\nexport const AriaPropsSchema = lazySchema(() => z.object({\n /** Accessible label for screen readers */\n ariaLabel: I18nLabelSchema.optional().describe('Accessible label for screen readers (WAI-ARIA aria-label)'),\n\n /** ID of element that describes this component */\n ariaDescribedBy: z.string().optional().describe('ID of element providing additional description (WAI-ARIA aria-describedby)'),\n\n /** WAI-ARIA role override */\n role: z.string().optional().describe('WAI-ARIA role attribute (e.g., \"dialog\", \"navigation\", \"alert\")'),\n}).describe('ARIA accessibility attributes'));\n\nexport type AriaProps = z.infer<typeof AriaPropsSchema>;\n\n/**\n * Plural Rule Schema\n *\n * Defines plural forms for a translation key, following ICU MessageFormat / i18next conventions.\n * Supports zero, one, two, few, many, other forms per CLDR plural rules.\n *\n * @see https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules\n *\n * @example\n * ```typescript\n * const plural: PluralRule = {\n * key: 'items.count',\n * zero: 'No items',\n * one: '{count} item',\n * other: '{count} items',\n * };\n * ```\n */\nexport const PluralRuleSchema = lazySchema(() => z.object({\n /** Translation key for the plural form */\n key: z.string().describe('Translation key'),\n /** Form for zero quantity */\n zero: z.string().optional().describe('Zero form (e.g., \"No items\")'),\n /** Form for singular (1) */\n one: z.string().optional().describe('Singular form (e.g., \"{count} item\")'),\n /** Form for dual (2) — used in Arabic, Welsh, etc. */\n two: z.string().optional().describe('Dual form (e.g., \"{count} items\" for exactly 2)'),\n /** Form for few (2-4 in Slavic languages) */\n few: z.string().optional().describe('Few form (e.g., for 2-4 in some languages)'),\n /** Form for many (5+ in Slavic languages) */\n many: z.string().optional().describe('Many form (e.g., for 5+ in some languages)'),\n /** Default/fallback form */\n other: z.string().describe('Default plural form (e.g., \"{count} items\")'),\n}).describe('ICU plural rules for a translation key'));\n\nexport type PluralRule = z.infer<typeof PluralRuleSchema>;\n\n/**\n * Number Format Schema\n *\n * Defines number formatting rules for localization.\n *\n * @example\n * ```typescript\n * const format: NumberFormat = {\n * style: 'currency',\n * currency: 'USD',\n * minimumFractionDigits: 2,\n * };\n * ```\n */\nexport const NumberFormatSchema = lazySchema(() => z.object({\n style: z.enum(['decimal', 'currency', 'percent', 'unit']).default('decimal')\n .describe('Number formatting style'),\n currency: z.string().optional().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n unit: z.string().optional().describe('Unit for unit formatting (e.g., \"kilometer\", \"liter\")'),\n minimumFractionDigits: z.number().optional().describe('Minimum number of fraction digits'),\n maximumFractionDigits: z.number().optional().describe('Maximum number of fraction digits'),\n useGrouping: z.boolean().optional().describe('Whether to use grouping separators (e.g., 1,000)'),\n}).describe('Number formatting rules'));\n\nexport type NumberFormat = z.infer<typeof NumberFormatSchema>;\n\n/**\n * Date Format Schema\n *\n * Defines date/time formatting rules for localization.\n *\n * @example\n * ```typescript\n * const format: DateFormat = {\n * dateStyle: 'medium',\n * timeStyle: 'short',\n * timeZone: 'America/New_York',\n * };\n * ```\n */\nexport const DateFormatSchema = lazySchema(() => z.object({\n dateStyle: z.enum(['full', 'long', 'medium', 'short']).optional()\n .describe('Date display style'),\n timeStyle: z.enum(['full', 'long', 'medium', 'short']).optional()\n .describe('Time display style'),\n timeZone: z.string().optional().describe('IANA time zone (e.g., \"America/New_York\")'),\n hour12: z.boolean().optional().describe('Use 12-hour format'),\n}).describe('Date/time formatting rules'));\n\nexport type DateFormat = z.infer<typeof DateFormatSchema>;\n\n/**\n * Locale Configuration Schema\n *\n * Defines a complete locale configuration including language code,\n * fallback chain, and formatting preferences.\n *\n * @example\n * ```typescript\n * const locale: LocaleConfig = {\n * code: 'zh-CN',\n * fallbackChain: ['zh-TW', 'en'],\n * direction: 'ltr',\n * numberFormat: { style: 'decimal', useGrouping: true },\n * dateFormat: { dateStyle: 'medium', timeStyle: 'short' },\n * };\n * ```\n */\nexport const LocaleConfigSchema = lazySchema(() => z.object({\n /** BCP 47 language code (e.g., \"en-US\", \"zh-CN\", \"ar-SA\") */\n code: z.string().describe('BCP 47 language code (e.g., \"en-US\", \"zh-CN\")'),\n\n /** Ordered fallback chain for missing translations */\n fallbackChain: z.array(z.string()).optional()\n .describe('Fallback language codes in priority order (e.g., [\"zh-TW\", \"en\"])'),\n\n /** Text direction */\n direction: z.enum(['ltr', 'rtl']).default('ltr')\n .describe('Text direction: left-to-right or right-to-left'),\n\n /** Default number formatting */\n numberFormat: NumberFormatSchema.optional().describe('Default number formatting rules'),\n\n /** Default date formatting */\n dateFormat: DateFormatSchema.optional().describe('Default date/time formatting rules'),\n}).describe('Locale configuration'));\n\nexport type LocaleConfig = z.infer<typeof LocaleConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Capability tokens a script body may request.\n *\n * The runtime sandbox enforces these — if a body uses a `ctx` API that requires\n * a capability it did not declare, the call throws at invocation time.\n *\n * - `api.read` — `ctx.api.object(...).find / findOne / count / aggregate`\n * - `api.write` — `ctx.api.object(...).insert / update / delete`\n * - `crypto.uuid` — `ctx.crypto.randomUUID()`\n * - `crypto.hash` — `ctx.crypto.hash(algo, data)`\n * - `log` — `ctx.log.info / warn / error`\n *\n * `http.fetch` is intentionally absent — outbound calls go through Connector\n * recipes (separate spec) so they remain auditable and replayable.\n */\nexport const HookBodyCapability = z.enum([\n 'api.read',\n 'api.write',\n 'crypto.uuid',\n 'crypto.hash',\n 'log',\n]);\nexport type HookBodyCapability = z.infer<typeof HookBodyCapability>;\n\n/**\n * L1 — Pure expression body.\n *\n * Evaluated by the formula engine. No IO, no mutation. Used for predicates\n * (`condition`-style) and simple computed values.\n *\n * @example\n * ```json\n * { \"language\": \"expression\", \"source\": \"input.amount > 1000 && input.status == 'open'\" }\n * ```\n */\nexport const ExpressionBodySchema = z.object({\n language: z.literal('expression'),\n /** Formula-engine expression. Pure, side-effect-free. */\n source: z.string().min(1).describe('Formula expression source'),\n}).describe('L1 expression body — pure formula, no IO');\nexport type ExpressionBody = z.infer<typeof ExpressionBodySchema>;\n\n/**\n * L2 — Sandboxed JavaScript source.\n *\n * The `source` is the **function body only** (not a full module). The runtime\n * wraps it in `new AsyncFunction('ctx', source)` for hooks, or\n * `new AsyncFunction('input', 'ctx', source)` for actions, then executes\n * inside an isolated VM.\n *\n * Forbidden inside `source` (CLI build will reject):\n * - `import` / `require` / dynamic `import()`\n * - `process`, `globalThis`, `eval`, `new Function`\n * - any identifier resolved from a value-only top-level import\n *\n * @example\n * ```json\n * {\n * \"language\": \"js\",\n * \"source\": \"if (ctx.input.email) ctx.input.email = ctx.input.email.toLowerCase();\",\n * \"capabilities\": [],\n * \"timeoutMs\": 250\n * }\n * ```\n */\nexport const ScriptBodySchema = z.object({\n language: z.literal('js'),\n /** Function body source (NOT a full module — no top-level imports). */\n source: z.string().min(1).describe('Function body source'),\n /**\n * Capability tokens the body is allowed to use. Default: `[]`.\n * The sandbox throws if the body calls a `ctx` API not covered by these.\n */\n capabilities: z.array(HookBodyCapability).default([]).describe('Granted capability tokens'),\n /**\n * Per-invocation hard timeout in milliseconds.\n * Sandbox kills the script if it exceeds this; smaller of this and the\n * enclosing hook/action `timeout` wins.\n */\n timeoutMs: z.number().int().positive().max(30_000).optional().describe('Per-invocation timeout (ms)'),\n /**\n * Per-invocation memory cap in MB.\n * Subject to engine support (isolated-vm enforces, quickjs approximates).\n */\n memoryMb: z.number().int().positive().max(256).optional().describe('Per-invocation memory cap (MB)'),\n}).describe('L2 sandboxed JS body — runs inside an isolated VM with declared capabilities');\nexport type ScriptBody = z.infer<typeof ScriptBodySchema>;\n\n/**\n * Hook / Action body — discriminated by `language`.\n *\n * Two and only two forms are accepted:\n * - `expression` — L1, pure formula evaluated by the formula engine.\n * - `js` — L2, sandboxed JavaScript source string.\n *\n * The compiled-module path (`.mjs` envelope) is intentionally **not** part of\n * this union. All bodies are pure metadata and travel inside the project\n * artifact JSON — no separate runtime module is required.\n *\n * @see content/docs/concepts/north-star.mdx — \"Metadata-only runtime\"\n */\nexport const HookBodySchema = z.discriminatedUnion('language', [\n ExpressionBodySchema,\n ScriptBodySchema,\n]).describe('Hook/Action body — expression (L1) or sandboxed JS (L2)');\nexport type HookBody = z.infer<typeof HookBodySchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldType } from '../data/field.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { HookBodySchema } from '../data/hook-body.zod';\n\n/**\n * Action Parameter Schema\n *\n * Defines inputs required before executing an action.\n *\n * Two declaration modes:\n *\n * 1. **Field-backed** (preferred) — reference an existing object field; the\n * runtime resolves the field's label (i18n), type, validation rules,\n * options, placeholder, help text, and widget mapping from object\n * metadata. Cross-object references use `objectOverride`.\n *\n * ```ts\n * params: [\n * { field: 'email' }, // same object\n * { field: 'role', objectOverride: 'sys_member' }, // different object\n * ]\n * ```\n *\n * 2. **Inline** (legacy / bespoke) — declare `name`, `label`, `type` etc.\n * inline when no matching object field exists. Inline values may also be\n * used alongside `field` to override individual properties.\n *\n * `name` is required unless `field` is provided (in which case it defaults\n * to the field name and is used as the request-body key).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ActionParamSchema = lazySchema(() => z.object({\n /** Request-body key. Defaults to `field` when `field` is set. */\n name: z.string().optional(),\n /** Reference an existing object field for label/type/validation/options. */\n field: SnakeCaseIdentifierSchema.optional(),\n /** Object that owns the referenced field (defaults to the action's parent object). */\n objectOverride: SnakeCaseIdentifierSchema.optional(),\n /** Overrides the resolved field label (or sets it for inline params). */\n label: I18nLabelSchema.optional(),\n /** Overrides the resolved field type (or sets it for inline params). */\n type: FieldType.optional(),\n /**\n * Required override; when omitted defaults to `false`. Consumers that wish\n * to inherit the underlying field's `required` flag should leave this\n * undefined in the source schema and resolve at runtime (the dialog\n * renderers check truthiness, so `false === undefined` for UI purposes).\n */\n required: z.boolean().optional().default(false),\n /** Select/picklist options override. */\n options: z.array(z.object({ label: I18nLabelSchema, value: z.string() })).optional(),\n /** Placeholder override. */\n placeholder: z.string().optional(),\n /** Help/description override. */\n helpText: z.string().optional(),\n /** Default value for the dialog input. */\n defaultValue: z.unknown().optional(),\n /**\n * When true, the param's default value is pulled from the current row record\n * (key = the resolved field name) when the action runs from a list_item\n * context. Useful for edit dialogs that pre-fill from the selected row.\n */\n defaultFromRow: z.boolean().optional(),\n}).refine(\n (p) => Boolean(p.name) || Boolean(p.field),\n { message: 'ActionParam requires either \"name\" or \"field\"' },\n));\n\n/**\n * Action type enum values.\n */\nexport const ActionType = z.enum(['script', 'url', 'modal', 'flow', 'api', 'form']);\n\n/**\n * Action types that require a `target` field.\n * Derived from ActionType, excluding 'script' which allows inline handlers.\n * These types reference an external resource (URL, flow, modal, or API endpoint)\n * and cannot function without a target binding.\n */\nconst TARGET_REQUIRED_TYPES: ReadonlySet<string> = new Set(\n ActionType.options.filter((t) => t !== 'script'),\n);\n\n/**\n * Action Schema\n * \n * **NAMING CONVENTION:**\n * Action names are machine identifiers used in code and must be lowercase snake_case.\n * \n * **TARGET BINDING:**\n * The `target` field is the canonical way to bind an action to its handler.\n * - `type: 'script'` — `target` is recommended (references a script/function name).\n * - `type: 'url'` — `target` is **required** (the URL to navigate to).\n * - `type: 'flow'` — `target` is **required** (the flow name to invoke).\n * - `type: 'modal'` — `target` is **required** (the modal/page name to open).\n * - `type: 'api'` — `target` is **required** (the API endpoint to call).\n * - `type: 'form'` — `target` is **required** (the FormView name to open, routed to `/console/forms/:name`).\n * \n * The `execute` field is **deprecated** and will be removed in a future version.\n * If `execute` is provided without `target`, it is automatically migrated to `target`.\n * \n * @example Good action names\n * - 'on_close_deal'\n * - 'send_welcome_email'\n * - 'approve_contract'\n * - 'export_report'\n * \n * @example Bad action names (will be rejected)\n * - 'OnCloseDeal' (PascalCase)\n * - 'sendEmail' (camelCase)\n * - 'Send Email' (spaces)\n * \n * Note: The action name is the configuration ID. JavaScript function names can use camelCase,\n * but the metadata ID must be lowercase snake_case.\n */\nexport const ActionSchema = lazySchema(() => z.object({\n /** Machine name of the action */\n name: SnakeCaseIdentifierSchema.describe('Machine name (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Display label'),\n\n /** Target object this action belongs to (optional, snake_case) */\n objectName: z.string().regex(/^[a-z_][a-z0-9_]*$/).optional().describe('Target object this action belongs to. When set, the action is auto-merged into the object\\'s actions array by defineStack().'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** Where does this action appear? */\n locations: z.array(z.enum([\n 'list_toolbar', 'list_item', \n 'record_header', 'record_more', 'record_related',\n 'global_nav'\n ])).optional().describe('Locations where this action is visible'),\n\n /** \n * Visual Component Type\n * Defaults to 'button' or 'menu_item' based on location,\n * but can be overridden.\n */\n component: z.enum([\n 'action:button', // Standard Button\n 'action:icon', // Icon only\n 'action:menu', // Dropdown menu\n 'action:group' // Button Group\n ]).optional().describe('Visual component override'),\n \n /** What type of interaction? */\n type: ActionType.default('script').describe('Action functionality type'),\n \n /** \n * Payload / Target — the canonical binding for the action handler.\n * Required for url, flow, modal, and api types.\n * For `script` type: prefer `body` over `target`. `target` is kept only for\n * legacy bundle.functions[name] references.\n */\n target: z.string().optional().describe('URL, Script Name, Flow ID, or API Endpoint'),\n\n /**\n * Action Body (L1 expression or L2 sandboxed JS).\n *\n * Only meaningful when `type === 'script'`. When set, the runtime invokes\n * the body inside the sandbox as `(input, ctx) => Promise<output>` and\n * ignores `target`.\n *\n * - `{ language: 'expression', source: '...' }` — pure formula (L1).\n * - `{ language: 'js', source: '...', capabilities: [...] }` — sandboxed JS (L2).\n *\n * Compiled-module bodies are not supported. Outbound IO (HTTP, etc.) goes\n * through Connector recipes (separate spec).\n */\n body: HookBodySchema.optional().describe('Action body — expression (L1) or sandboxed JS (L2). Only used when type is `script`.'),\n\n /** \n * @deprecated Use `target` instead. This field is auto-migrated to `target` during parsing.\n */\n execute: z.string().optional().describe('@deprecated — Use target instead. Auto-migrated to target during parsing.'),\n \n /** User Input Requirements */\n params: z.array(ActionParamSchema).optional().describe('Input parameters required from user'),\n \n /** Visual Style */\n variant: z.enum(['primary', 'secondary', 'danger', 'ghost', 'link']).optional().describe('Button visual variant for styling (primary = highlighted, danger = destructive, ghost = transparent)'),\n\n /** UX Behavior */\n confirmText: I18nLabelSchema.optional().describe('Confirmation message before execution'),\n successMessage: I18nLabelSchema.optional().describe('Success message to show after execution'),\n refreshAfter: z.boolean().default(false).describe('Refresh view after execution'),\n \n /** Access */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n disabled: z.union([z.boolean(), ExpressionInputSchema]).optional().describe('Boolean or predicate (CEL) — action is disabled when TRUE.'),\n\n /** Keyboard Shortcut */\n shortcut: z.string().optional().describe('Keyboard shortcut to trigger this action (e.g., \"Ctrl+S\")'),\n\n /** Bulk Operations */\n bulkEnabled: z.boolean().optional().describe('Whether this action can be applied to multiple selected records'),\n\n /**\n * Row-context: when the action runs from a list_item location, this body key\n * receives the row's id (or the field named by `recordIdField`). Defaults to\n * `id` when omitted but `recordIdField` is set; otherwise no injection.\n */\n recordIdParam: z.string().optional().describe('Body key to inject the row id into when running from a list_item context.'),\n /**\n * Row field whose value seeds `recordIdParam`. Defaults to `'id'` when\n * `recordIdParam` is set. Use this when the body key expects a non-id value\n * (e.g. `token` for `revoke-session`).\n */\n recordIdField: z.string().optional().describe('Row field whose value seeds recordIdParam. Defaults to \"id\".'),\n /**\n * Request-body shape. `'flat'` (default) sends collected params at the top\n * level. `{ wrap: 'data' }` nests the user-collected params under that key\n * (used by better-auth `organization/update`), while `recordIdParam` and\n * other top-level keys stay flat.\n */\n bodyShape: z.union([\n z.literal('flat'),\n z.object({ wrap: z.string() }),\n ]).optional().describe('Body wrapping: flat (default) or { wrap: key } to nest user-collected params under a key.'),\n /**\n * HTTP method to use when `type: 'api'`. Defaults to `POST`. Use `PATCH` to\n * call data-API update endpoints (e.g. `/api/v1/sys_api_key/{id}` with\n * `bodyExtra: { revoked: true }`).\n */\n method: z.enum(['POST', 'PATCH', 'PUT', 'DELETE']).optional().describe('HTTP method for type:\"api\" actions. Defaults to POST.'),\n /**\n * Static body fragment merged into the outgoing request body for `type:'api'`\n * actions. Useful for constants the user shouldn't (or can't) edit, e.g.\n * `bodyExtra: { resend: true }` on a resend-invitation action that reuses\n * better-auth's `invite-member` endpoint. Applied after user-collected\n * params and `recordIdParam` so constants always win.\n */\n bodyExtra: z.record(z.string(), z.unknown()).optional().describe('Constant body fields merged into the API request (applied last; overrides user params).'),\n /**\n * Semantic mode hint — UI / runtime can use this to pick confirm copy,\n * default variants, success messaging. Pure metadata; no runtime branching.\n */\n mode: z.enum(['create', 'edit', 'delete', 'custom']).optional().describe('Semantic mode of the action.'),\n\n /** Execution */\n timeout: z.number().optional().describe('Maximum execution time in milliseconds for the action'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}).transform((data) => {\n // Auto-migrate deprecated `execute` → `target` for backward compatibility\n if (data.execute && !data.target) {\n return { ...data, target: data.execute };\n }\n return data;\n}).refine((data) => {\n // Require `target` for types that reference an external resource\n if (TARGET_REQUIRED_TYPES.has(data.type) && !data.target) {\n return false;\n }\n return true;\n}, {\n message: \"Action 'target' is required when type is 'url', 'flow', 'modal', 'api', or 'form'.\",\n path: ['target'],\n}));\n\nexport type Action = z.infer<typeof ActionSchema>;\nexport type ActionParam = z.infer<typeof ActionParamSchema>;\nexport type ActionInput = z.input<typeof ActionSchema>;\n\n/**\n * Action Factory Helper\n */\nexport const Action = {\n create: (config: z.input<typeof ActionSchema>): Action => ActionSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * @module ui/sharing\n *\n * Sharing & Embedding Protocol\n *\n * Defines schemas for public link sharing, embed configuration,\n * domain restrictions, and password protection for apps, pages, and forms.\n */\n\nimport { z } from 'zod';\n\n/**\n * Sharing Config Schema\n * Configuration for public sharing of an app, page, or form.\n * Supports public links, password protection, domain restrictions, and expiration.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SharingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable public sharing'),\n publicLink: z.string().optional().describe('Generated public share URL'),\n password: z.string().optional().describe('Password required to access shared link'),\n allowedDomains: z.array(z.string()).optional()\n .describe('Restrict access to specific email domains (e.g. [\"example.com\"])'),\n expiresAt: z.string().optional()\n .describe('Expiration date/time in ISO 8601 format'),\n allowAnonymous: z.boolean().optional().default(false)\n .describe('Allow access without authentication'),\n}));\n\n/**\n * Embed Config Schema\n * Configuration for iframe embedding of an app, page, or form.\n * Supports origin restrictions, display options, and responsive sizing.\n */\nexport const EmbedConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable iframe embedding'),\n allowedOrigins: z.array(z.string()).optional()\n .describe('Allowed iframe parent origins (e.g. [\"https://example.com\"])'),\n width: z.string().optional().default('100%').describe('Embed width (CSS value)'),\n height: z.string().optional().default('600px').describe('Embed height (CSS value)'),\n showHeader: z.boolean().optional().default(true).describe('Show interface header in embed'),\n showNavigation: z.boolean().optional().default(false).describe('Show navigation in embed'),\n responsive: z.boolean().optional().default(true).describe('Enable responsive resizing'),\n}));\n\n// Type Exports\nexport type SharingConfig = z.infer<typeof SharingConfigSchema>;\nexport type EmbedConfig = z.infer<typeof EmbedConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Breakpoint Name Enum\n * Matches the breakpoint names defined in theme.zod.ts BreakpointsSchema.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const BreakpointName = z.enum(['xs', 'sm', 'md', 'lg', 'xl', '2xl']);\n\nexport type BreakpointName = z.infer<typeof BreakpointName>;\n\n/**\n * Responsive Configuration Schema\n *\n * Provides responsive layout configuration for UI components.\n * Maps breakpoint names to layout behavior (columns, visibility, order).\n *\n * Aligned with theme.zod.ts BreakpointsSchema for a unified responsive system.\n *\n * @example\n * ```typescript\n * const config: ResponsiveConfig = {\n * columns: { xs: 12, sm: 6, lg: 4 },\n * hiddenOn: ['xs'],\n * order: { xs: 2, lg: 1 },\n * };\n * ```\n */\n/**\n * Breakpoint Column Map Schema\n * Maps breakpoint names to grid column counts (1-12).\n * All entries are optional — only specified breakpoints are configured.\n */\nexport const BreakpointColumnMapSchema = lazySchema(() => z.object({\n xs: z.number().min(1).max(12).optional(),\n sm: z.number().min(1).max(12).optional(),\n md: z.number().min(1).max(12).optional(),\n lg: z.number().min(1).max(12).optional(),\n xl: z.number().min(1).max(12).optional(),\n '2xl': z.number().min(1).max(12).optional(),\n}).describe('Grid columns per breakpoint (1-12)'));\n\n/**\n * Breakpoint Order Map Schema\n * Maps breakpoint names to display order numbers.\n * All entries are optional — only specified breakpoints are configured.\n */\nexport const BreakpointOrderMapSchema = lazySchema(() => z.object({\n xs: z.number().optional(),\n sm: z.number().optional(),\n md: z.number().optional(),\n lg: z.number().optional(),\n xl: z.number().optional(),\n '2xl': z.number().optional(),\n}).describe('Display order per breakpoint'));\n\nexport const ResponsiveConfigSchema = lazySchema(() => z.object({\n /** Minimum breakpoint for visibility */\n breakpoint: BreakpointName.optional()\n .describe('Minimum breakpoint for visibility'),\n\n /** Hide on specific breakpoints */\n hiddenOn: z.array(BreakpointName).optional()\n .describe('Hide on these breakpoints'),\n\n /** Grid columns per breakpoint (1-12 column grid) */\n columns: BreakpointColumnMapSchema.optional().describe('Grid columns per breakpoint'),\n\n /** Display order per breakpoint */\n order: BreakpointOrderMapSchema.optional().describe('Display order per breakpoint'),\n}).describe('Responsive layout configuration'));\n\nexport type ResponsiveConfig = z.infer<typeof ResponsiveConfigSchema>;\n\n/**\n * Performance Configuration Schema\n *\n * Defines performance optimization settings for UI components\n * such as lazy loading, virtual scrolling, and caching.\n *\n * @example\n * ```typescript\n * const perf: PerformanceConfig = {\n * lazyLoad: true,\n * virtualScroll: { enabled: true, itemHeight: 40, overscan: 5 },\n * cacheStrategy: 'stale-while-revalidate',\n * prefetch: true,\n * };\n * ```\n */\nexport const PerformanceConfigSchema = lazySchema(() => z.object({\n /** Enable lazy loading for this component */\n lazyLoad: z.boolean().optional()\n .describe('Enable lazy loading (defer rendering until visible)'),\n\n /** Virtual scrolling configuration for large datasets */\n virtualScroll: z.object({\n enabled: z.boolean().default(false).describe('Enable virtual scrolling'),\n itemHeight: z.number().optional().describe('Fixed item height in pixels (for estimation)'),\n overscan: z.number().optional().describe('Number of extra items to render outside viewport'),\n }).optional().describe('Virtual scrolling configuration'),\n\n /** Client-side caching strategy */\n cacheStrategy: z.enum([\n 'none',\n 'cache-first',\n 'network-first',\n 'stale-while-revalidate',\n ]).optional().describe('Client-side data caching strategy'),\n\n /** Enable data prefetching */\n prefetch: z.boolean().optional()\n .describe('Prefetch data before component is visible'),\n\n /** Maximum number of items to render before pagination */\n pageSize: z.number().optional()\n .describe('Number of items per page for pagination'),\n\n /** Debounce interval for user interactions (ms) */\n debounceMs: z.number().optional()\n .describe('Debounce interval for user interactions in milliseconds'),\n}).describe('Performance optimization configuration'));\n\nexport type PerformanceConfig = z.infer<typeof PerformanceConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Shared HTTP Schemas\n * \n * Common HTTP-related schemas used across API and System protocols.\n * These schemas ensure consistency across different parts of the stack.\n */\n\n// ==========================================\n// Basic HTTP Types\n// ==========================================\n\n/**\n * HTTP Method Enum\n */\nimport { lazySchema } from './lazy-schema';\nexport const HttpMethod = z.enum([\n 'GET', \n 'POST', \n 'PUT', \n 'DELETE', \n 'PATCH', \n 'HEAD', \n 'OPTIONS'\n]);\n\nexport type HttpMethod = z.infer<typeof HttpMethod>;\n\n/**\n * HTTP Method Schema (subset for UI/View data sources)\n * Common HTTP methods used in view data source configurations.\n * Migrated from ui/view.zod.ts to shared for reuse across modules.\n */\nexport const HttpMethodSchema = lazySchema(() => z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']));\n\nexport type HttpMethodType = z.infer<typeof HttpMethodSchema>;\n\n/**\n * HTTP Request Configuration Schema\n * Defines a complete HTTP request configuration used by API data providers.\n * Migrated from ui/view.zod.ts to shared for reuse across modules.\n */\nexport const HttpRequestSchema = lazySchema(() => z.object({\n url: z.string().describe('API endpoint URL'),\n method: HttpMethodSchema.optional().default('GET').describe('HTTP method'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),\n params: z.record(z.string(), z.unknown()).optional().describe('Query parameters'),\n body: z.unknown().optional().describe('Request body for POST/PUT/PATCH'),\n}));\n\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\n\n// ==========================================\n// CORS Configuration\n// ==========================================\n\n/**\n * CORS Configuration Schema\n * Cross-Origin Resource Sharing configuration\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"origins\": [\"http://localhost:3000\", \"https://app.example.com\"],\n * \"methods\": [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n * \"credentials\": true,\n * \"maxAge\": 86400\n * }\n */\nexport const CorsConfigSchema = lazySchema(() => z.object({\n /**\n * Enable CORS\n */\n enabled: z.boolean().default(true).describe('Enable CORS'),\n \n /**\n * Allowed origins (* for all)\n */\n origins: z.union([\n z.string(),\n z.array(z.string())\n ]).default('*').describe('Allowed origins (* for all)'),\n \n /**\n * Allowed HTTP methods\n */\n methods: z.array(HttpMethod).optional().describe('Allowed HTTP methods'),\n \n /**\n * Allow credentials (cookies, authorization headers)\n */\n credentials: z.boolean().default(false).describe('Allow credentials (cookies, authorization headers)'),\n \n /**\n * Preflight cache duration in seconds\n */\n maxAge: z.number().int().optional().describe('Preflight cache duration in seconds'),\n}));\n\nexport type CorsConfig = z.infer<typeof CorsConfigSchema>;\n\n// ==========================================\n// Rate Limiting\n// ==========================================\n\n/**\n * Rate Limit Configuration Schema\n * \n * Used by:\n * - api/endpoint.zod.ts (ApiEndpointSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"windowMs\": 60000,\n * \"maxRequests\": 100\n * }\n */\nexport const RateLimitConfigSchema = lazySchema(() => z.object({\n /**\n * Enable rate limiting\n */\n enabled: z.boolean().default(false).describe('Enable rate limiting'),\n \n /**\n * Time window in milliseconds\n */\n windowMs: z.number().int().default(60000).describe('Time window in milliseconds'),\n \n /**\n * Max requests per window\n */\n maxRequests: z.number().int().default(100).describe('Max requests per window'),\n}));\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\n\n// ==========================================\n// Static File Serving\n// ==========================================\n\n/**\n * Static Mount Configuration Schema\n * Configuration for serving static files\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"path\": \"/static\",\n * \"directory\": \"./public\",\n * \"cacheControl\": \"public, max-age=31536000\"\n * }\n */\nexport const StaticMountSchema = lazySchema(() => z.object({\n /**\n * URL path to serve from\n */\n path: z.string().describe('URL path to serve from'),\n \n /**\n * Physical directory to serve\n */\n directory: z.string().describe('Physical directory to serve'),\n \n /**\n * Cache-Control header value\n */\n cacheControl: z.string().optional().describe('Cache-Control header value'),\n}));\n\nexport type StaticMount = z.infer<typeof StaticMountSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { SharingConfigSchema } from './sharing.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * HTTP Method Enum & HTTP Request Schema\n * Migrated to shared/http.zod.ts. Re-exported here for backward compatibility.\n */\nimport { HttpMethodSchema, HttpRequestSchema } from '../shared/http.zod';\nimport { lazySchema } from '../shared/lazy-schema';\nexport { HttpMethodSchema, HttpRequestSchema };\n\n/**\n * View Data Source Configuration\n * Supports three modes:\n * 1. 'object': Standard Protocol - Auto-connects to ObjectStack Metadata and Data APIs\n * 2. 'api': Custom API - Explicitly provided API URLs\n * 3. 'value': Static Data - Hardcoded data array\n */\nexport const ViewDataSchema = lazySchema(() => z.discriminatedUnion('provider', [\n z.object({\n provider: z.literal('object'),\n object: z.string().describe('Target object name'),\n }),\n z.object({\n provider: z.literal('api'),\n read: HttpRequestSchema.optional().describe('Configuration for fetching data'),\n write: HttpRequestSchema.optional().describe('Configuration for submitting data (for forms/editable tables)'),\n }),\n z.object({\n provider: z.literal('value'),\n items: z.array(z.unknown()).describe('Static data array'),\n }),\n]));\n\n/**\n * View Filter Rule Schema\n * Standardized filter condition used in list views, tabs, and page-level filters.\n * Uses a declarative array-of-objects format: [{ field, operator, value }].\n *\n * @example\n * ```ts\n * filter: [\n * { field: 'status', operator: 'equals', value: 'active' },\n * { field: 'close_date', operator: 'this_quarter' },\n * ]\n * ```\n */\nexport const ViewFilterRuleSchema = lazySchema(() => z.object({\n /** Field name to filter on */\n field: z.string().describe('Field name to filter on'),\n /** Filter operator */\n operator: z.string().describe('Filter operator (e.g. equals, not_equals, contains, this_quarter)'),\n /** Filter value (optional for unary operators like is_null, this_quarter) */\n value: z.union([z.string(), z.number(), z.boolean(), z.null(), z.array(z.union([z.string(), z.number()]))])\n .optional().describe('Filter value'),\n}).describe('View filter rule'));\n\nexport type ViewFilterRule = z.infer<typeof ViewFilterRuleSchema>;\n\n/**\n * Column Summary Function Schema\n * Aggregation function for column footer (Airtable-style column summaries)\n */\nexport const ColumnSummarySchema = lazySchema(() => z.enum([\n 'none',\n 'count',\n 'count_empty',\n 'count_filled',\n 'count_unique',\n 'percent_empty',\n 'percent_filled',\n 'sum',\n 'avg',\n 'min',\n 'max',\n]).describe('Aggregation function for column footer summary'));\n\n/**\n * List Column Configuration Schema\n * Detailed configuration for individual list view columns\n */\nexport const ListColumnSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label override'),\n width: z.number().positive().optional().describe('Column width in pixels'),\n align: z.enum(['left', 'center', 'right']).optional().describe('Text alignment'),\n hidden: z.boolean().optional().describe('Hide column by default'),\n sortable: z.boolean().optional().describe('Allow sorting by this column'),\n resizable: z.boolean().optional().describe('Allow resizing this column'),\n wrap: z.boolean().optional().describe('Allow text wrapping'),\n type: z.string().optional().describe('Renderer type override (e.g., \"currency\", \"date\")'),\n\n /** Pinning (Airtable-style frozen columns) */\n pinned: z.enum(['left', 'right']).optional().describe('Pin/freeze column to left or right side'),\n\n /** Column Footer Summary (Airtable-style aggregation) */\n summary: ColumnSummarySchema.optional().describe('Footer aggregation function for this column'),\n\n /** Interaction */\n link: z.boolean().optional().describe('Functions as the primary navigation link (triggers View navigation)'),\n action: z.string().optional().describe('Registered Action ID to execute when clicked'),\n}));\n\n/**\n * List View Selection Configuration\n */\nexport const SelectionConfigSchema = lazySchema(() => z.object({\n type: z.enum(['none', 'single', 'multiple']).default('none').describe('Selection mode'),\n}));\n\n/**\n * List View Pagination Configuration\n */\nexport const PaginationConfigSchema = lazySchema(() => z.object({\n pageSize: z.number().int().positive().default(25).describe('Number of records per page'),\n pageSizeOptions: z.array(z.number().int().positive()).optional().describe('Available page size options'),\n}));\n\n/**\n * Row Height / Density Schema (Airtable-style)\n * Controls the visual density of rows in a list view.\n */\nexport const RowHeightSchema = lazySchema(() => z.enum([\n 'compact', // Minimal padding, single line\n 'short', // Reduced padding\n 'medium', // Default padding\n 'tall', // Extra padding, multi-line preview\n 'extra_tall', // Maximum padding, rich content preview\n]).describe('Row height / density setting for list view'));\n\n/**\n * Grouping Field Configuration\n * Defines a single grouping level for record grouping.\n */\nexport const GroupingFieldSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to group by'),\n order: z.enum(['asc', 'desc']).default('asc').describe('Group sort order'),\n collapsed: z.boolean().default(false).describe('Collapse groups by default'),\n}));\n\n/**\n * Grouping Configuration Schema (Airtable-style)\n * Supports multi-level grouping for grid/gallery views.\n */\nexport const GroupingConfigSchema = lazySchema(() => z.object({\n fields: z.array(GroupingFieldSchema).min(1).describe('Fields to group by (supports up to 3 levels)'),\n}).describe('Record grouping configuration'));\n\n/**\n * Gallery View Configuration (Airtable-style)\n * Configures card layout for gallery/card views.\n */\nexport const GalleryConfigSchema = lazySchema(() => z.object({\n coverField: z.string().optional().describe('Attachment/image field to display as card cover'),\n coverFit: z.enum(['cover', 'contain']).default('cover').describe('Image fit mode for card cover'),\n cardSize: z.enum(['small', 'medium', 'large']).default('medium').describe('Card size in gallery view'),\n titleField: z.string().optional().describe('Field to display as card title'),\n visibleFields: z.array(z.string()).optional().describe('Fields to display on card body'),\n}).describe('Gallery/card view configuration'));\n\n/**\n * Timeline View Configuration (Airtable-style)\n * Configures timeline/chronological views.\n */\nexport const TimelineConfigSchema = lazySchema(() => z.object({\n startDateField: z.string().describe('Field for timeline item start date'),\n endDateField: z.string().optional().describe('Field for timeline item end date'),\n titleField: z.string().describe('Field to display as timeline item title'),\n groupByField: z.string().optional().describe('Field to group timeline rows'),\n colorField: z.string().optional().describe('Field to determine item color'),\n scale: z.enum(['hour', 'day', 'week', 'month', 'quarter', 'year']).default('week').describe('Default timeline scale'),\n}).describe('Timeline view configuration'));\n\n/**\n * View Sharing Configuration (Airtable-style)\n * Defines who can see and modify a view.\n */\nexport const ViewSharingSchema = lazySchema(() => z.object({\n type: z.enum(['personal', 'collaborative']).default('collaborative').describe('View ownership type'),\n lockedBy: z.string().optional().describe('User who locked the view configuration'),\n}).describe('View sharing and access configuration'));\n\n/**\n * Row Color Configuration (Airtable-style)\n * Defines how rows are colored based on field values.\n */\nexport const RowColorConfigSchema = lazySchema(() => z.object({\n field: z.string().describe('Field to derive color from (typically a select/status field)'),\n colors: z.record(z.string(), z.string()).optional().describe('Map of field value to color (hex/token)'),\n}).describe('Row color configuration based on field values'));\n\n/**\n * Visualization Type Schema\n * Whitelist of visualization types the user can switch between.\n * Maps to Airtable's \"Visualizations\" setting in Appearance panel.\n */\nexport const VisualizationTypeSchema = lazySchema(() => z.enum([\n 'grid',\n 'kanban',\n 'gallery',\n 'calendar',\n 'timeline',\n 'gantt',\n 'map',\n]).describe('Visualization type that users can switch to'));\n\n/**\n * User Actions Configuration Schema (Airtable Interface parity)\n * Controls which interactive actions are available to users in the view toolbar.\n * Each boolean toggles the corresponding toolbar element on/off.\n *\n * @see Airtable Interface → \"User actions\" panel\n */\nexport const UserActionsConfigSchema = lazySchema(() => z.object({\n sort: z.boolean().default(true).describe('Allow users to sort records'),\n search: z.boolean().default(true).describe('Allow users to search records'),\n filter: z.boolean().default(true).describe('Allow users to filter records'),\n rowHeight: z.boolean().default(true).describe('Allow users to toggle row height/density'),\n addRecordForm: z.boolean().default(false).describe('Add records through a form instead of inline'),\n buttons: z.array(z.string()).optional().describe('Custom action button IDs to show in the toolbar'),\n}).describe('User action toggles for the view toolbar'));\n\n/**\n * Appearance Configuration Schema (Airtable Interface parity)\n * Controls visual presentation options for the view.\n *\n * @see Airtable Interface → \"Appearance\" panel\n */\nexport const AppearanceConfigSchema = lazySchema(() => z.object({\n showDescription: z.boolean().default(true).describe('Show the view description text'),\n allowedVisualizations: z.array(VisualizationTypeSchema).optional()\n .describe('Whitelist of visualization types users can switch between (e.g. [\"grid\", \"gallery\", \"kanban\"])'),\n}).describe('Appearance and visualization configuration'));\n\n/**\n * View Tab Schema (Airtable Interface parity)\n * Defines a tab in a multi-tab view interface.\n * Each tab references a named list view and can be ordered, pinned, or set as default.\n *\n * @see Airtable Interface → \"Tabs\" panel\n */\nexport const ViewTabSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Tab identifier (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label'),\n icon: z.string().optional().describe('Tab icon name'),\n view: z.string().optional().describe('Referenced list view name from listViews'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Tab-specific filter criteria'),\n order: z.number().int().min(0).optional().describe('Tab display order'),\n pinned: z.boolean().default(false).describe('Pin tab (cannot be removed by users)'),\n isDefault: z.boolean().default(false).describe('Set as the default active tab'),\n visible: z.boolean().default(true).describe('Tab visibility'),\n}).describe('Tab configuration for multi-tab view interface'));\n\n/**\n * Add Record Configuration Schema (Airtable Interface parity)\n * Configures the \"Add Record\" entry point for a list view.\n *\n * @see Airtable Interface → \"+ Add record\" button\n */\nexport const AddRecordConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(true).describe('Show the add record entry point'),\n position: z.enum(['top', 'bottom', 'both']).default('bottom').describe('Position of the add record button'),\n mode: z.enum(['inline', 'form', 'modal']).default('inline').describe('How to add a new record'),\n formView: z.string().optional().describe('Named form view to use when mode is \"form\" or \"modal\"'),\n}).describe('Add record entry point configuration'));\n\n/**\n * Kanban Settings\n */\nexport const KanbanConfigSchema = lazySchema(() => z.object({\n groupByField: z.string().describe('Field to group columns by (usually status/select)'),\n summarizeField: z.string().optional().describe('Field to sum at top of column (e.g. amount)'),\n columns: z.array(z.string()).describe('Fields to show on cards'),\n}));\n\n/**\n * List Chart View Configuration (Airtable-style)\n * Configures aggregate chart visualizations (bar/line/pie/area/scatter)\n * when used as a `type: 'chart'` ListView. Distinct from the full-featured\n * `ChartConfigSchema` in `chart.zod.ts` (which is for embedded reports).\n */\nexport const ListChartConfigSchema = lazySchema(() => z.object({\n chartType: z.enum(['bar', 'line', 'pie', 'area', 'scatter']).default('bar').describe('Chart visualisation type'),\n xAxisField: z.string().describe('Field used as the X axis / category dimension'),\n yAxisFields: z.array(z.string()).min(1).describe('Field(s) used as the Y axis / measures'),\n aggregation: z.enum(['sum', 'avg', 'count', 'min', 'max']).optional().describe('Aggregation function applied to Y axis fields'),\n groupByField: z.string().optional().describe('Optional field used to split / stack the chart'),\n}).describe('List chart view configuration'));\n\n/**\n * Calendar Settings\n */\nexport const CalendarConfigSchema = lazySchema(() => z.object({\n startDateField: z.string(),\n endDateField: z.string().optional(),\n titleField: z.string(),\n colorField: z.string().optional(),\n}));\n\n/**\n * Gantt Settings\n */\nexport const GanttConfigSchema = lazySchema(() => z.object({\n startDateField: z.string(),\n endDateField: z.string(),\n titleField: z.string(),\n progressField: z.string().optional(),\n dependenciesField: z.string().optional(),\n}));\n\n/**\n * Navigation Mode Enum\n * Defines how to navigate to the detail view from a list item.\n */\nexport const NavigationModeSchema = lazySchema(() => z.enum([\n 'page', // Navigate to a new route (default)\n 'drawer', // Open details in a side drawer/panel\n 'modal', // Open details in a modal dialog\n 'split', // Show details side-by-side with the list (master-detail)\n 'popover', // Show details in a popover (lightweight)\n 'new_window', // Open in new browser tab/window\n 'none' // No navigation (read-only list)\n]));\n\n/**\n * Navigation Configuration Schema\n */\nexport const NavigationConfigSchema = lazySchema(() => z.object({\n mode: NavigationModeSchema.default('page'),\n \n /** Target View Config */\n view: z.string().optional().describe('Name of the form view to use for details (e.g. \"summary_view\", \"edit_form\")'),\n \n /** Interaction Triggers */\n preventNavigation: z.boolean().default(false).describe('Disable standard navigation entirely'),\n openNewTab: z.boolean().default(false).describe('Force open in new tab (applies to page mode)'),\n \n /** Dimensions (for modal/drawer) */\n width: z.union([z.string(), z.number()]).optional().describe('Width of the drawer/modal (e.g. \"600px\", \"50%\")'),\n}));\n\n/**\n * List View Schema (Expanded)\n * Defines how a collection of records is displayed to the user.\n * \n * **NAMING CONVENTION:**\n * View names (when provided) are machine identifiers and must be lowercase snake_case.\n * \n * @example Standard Grid\n * {\n * name: \"all_active\",\n * label: \"All Active\",\n * type: \"grid\",\n * columns: [\"name\", \"status\", \"created_at\"],\n * filter: [[\"status\", \"=\", \"active\"]]\n * }\n * \n * @example Kanban Board\n * {\n * type: \"kanban\",\n * columns: [\"name\", \"amount\"],\n * kanban: {\n * groupByField: \"stage\",\n * summarizeField: \"amount\",\n * columns: [\"name\", \"close_date\"]\n * }\n * }\n */\nexport const ListViewSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.optional().describe('Internal view name (lowercase snake_case)'),\n label: I18nLabelSchema.optional(), // Display label override (supports i18n)\n type: z.enum([\n 'grid', // Standard Data Table\n 'kanban', // Board / Columns\n 'gallery', // Card Deck / Masonry\n 'calendar', // Monthly/Weekly/Daily\n 'timeline', // Chronological Stream (Feed)\n 'gantt', // Project Timeline\n 'map', // Geospatial\n 'chart' // Aggregate visualisation\n ]).default('grid'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n /** Shared Query Config */\n columns: z.union([\n z.array(z.string()), // Legacy: simple field names\n z.array(ListColumnSchema), // Enhanced: detailed column config\n ]).describe('Fields to display as columns'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Filter criteria (JSON Rules)'),\n sort: z.union([\n z.string(), //Legacy \"field desc\"\n z.array(z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc'])\n }))\n ]).optional(),\n \n /** Search & Filter */\n searchableFields: z.array(z.string()).optional().describe('Fields enabled for search'),\n filterableFields: z.array(z.string()).optional().describe('Fields enabled for end-user filtering in the top bar'),\n\n /** Grid Features */\n resizable: z.boolean().optional().describe('Enable column resizing'),\n striped: z.boolean().optional().describe('Striped row styling'),\n bordered: z.boolean().optional().describe('Show borders'),\n compactToolbar: z.boolean().optional().describe('Collapse Group/Color/Density/Hide-fields into a single View settings popover'),\n\n /** Selection */\n selection: SelectionConfigSchema.optional().describe('Row selection configuration'),\n\n /** Navigation / Interaction */\n navigation: NavigationConfigSchema.optional().describe('Configuration for item click navigation (page, drawer, modal, etc.)'),\n\n /** Pagination */\n pagination: PaginationConfigSchema.optional().describe('Pagination configuration'),\n\n /** Type Specific Config */\n kanban: KanbanConfigSchema.optional(),\n calendar: CalendarConfigSchema.optional(),\n gantt: GanttConfigSchema.optional(),\n gallery: GalleryConfigSchema.optional(),\n timeline: TimelineConfigSchema.optional(),\n chart: ListChartConfigSchema.optional(),\n\n /** View Metadata (Airtable-style view management) */\n description: I18nLabelSchema.optional().describe('View description for documentation/tooltips'),\n sharing: ViewSharingSchema.optional().describe('View sharing and access configuration'),\n\n /** Row Height / Density (Airtable-style) */\n rowHeight: RowHeightSchema.optional().describe('Row height / density setting'),\n\n /** Record Grouping (Airtable-style) */\n grouping: GroupingConfigSchema.optional().describe('Group records by one or more fields'),\n\n /** Row Color (Airtable-style) */\n rowColor: RowColorConfigSchema.optional().describe('Color rows based on field value'),\n\n /** Field Visibility & Ordering per View (Airtable-style) */\n hiddenFields: z.array(z.string()).optional().describe('Fields to hide in this specific view'),\n fieldOrder: z.array(z.string()).optional().describe('Explicit field display order for this view'),\n\n /** Row & Bulk Actions */\n rowActions: z.array(z.string()).optional().describe('Actions available for individual row items'),\n bulkActions: z.array(z.string()).optional().describe('Actions available when multiple rows are selected'),\n bulkActionDefs: z.array(z.record(z.string(), z.any())).optional().describe('Rich bulk action definitions (schema-driven, executed via BulkActionDialog)'),\n\n /** Performance */\n virtualScroll: z.boolean().optional().describe('Enable virtual scrolling for large datasets'),\n\n /** Conditional Formatting */\n conditionalFormatting: z.array(z.object({\n condition: ExpressionInputSchema.describe('Predicate (CEL) to evaluate.'),\n style: z.record(z.string(), z.string()).describe('CSS styles to apply when condition is true'),\n })).optional().describe('Conditional formatting rules for list rows'),\n\n /** Inline Edit */\n inlineEdit: z.boolean().optional().describe('Allow inline editing of records directly in the list view'),\n\n /** Export */\n exportOptions: z.array(z.enum(['csv', 'xlsx', 'pdf', 'json'])).optional().describe('Available export format options'),\n\n /** User Actions (Airtable Interface parity) */\n userActions: UserActionsConfigSchema.optional().describe('User action toggles for the view toolbar'),\n\n /** Appearance (Airtable Interface parity) */\n appearance: AppearanceConfigSchema.optional().describe('Appearance and visualization configuration'),\n\n /** Tabs (Airtable Interface parity) */\n tabs: z.array(ViewTabSchema).optional().describe('Tab definitions for multi-tab view interface'),\n\n /** Add Record (Airtable Interface parity) */\n addRecord: AddRecordConfigSchema.optional().describe('Add record entry point configuration'),\n\n /** Record Count Display (Airtable Interface parity) */\n showRecordCount: z.boolean().optional().describe('Show record count at the bottom of the list'),\n\n /** Advanced: Allow Printing (Airtable Interface parity) */\n allowPrinting: z.boolean().optional().describe('Allow users to print the view'),\n\n /** Empty State */\n emptyState: z.object({\n title: I18nLabelSchema.optional(),\n message: I18nLabelSchema.optional(),\n icon: z.string().optional(),\n }).optional().describe('Empty state configuration when no records found'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the list view'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n}));\n\n/**\n * Form Field Configuration Schema\n * Detailed configuration for individual form fields\n */\nexport const FormFieldSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label override'),\n placeholder: I18nLabelSchema.optional().describe('Placeholder text'),\n helpText: I18nLabelSchema.optional().describe('Help/hint text'),\n readonly: z.boolean().optional().describe('Read-only override'),\n required: z.boolean().optional().describe('Required override'),\n hidden: z.boolean().optional().describe('Hidden override'),\n colSpan: z.number().int().min(1).max(4).optional().describe('Column span in grid layout (1-4)'),\n widget: z.string().optional().describe('Custom widget/component name'),\n dependsOn: z.string().optional().describe('Parent field name for cascading'),\n visibleOn: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n}));\n\n/**\n * Form Layout Section\n */\nexport const FormSectionSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.optional(),\n collapsible: z.boolean().default(false),\n collapsed: z.boolean().default(false),\n columns: z.union([\n z.enum(['1', '2', '3', '4']),\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n ]).default(2).transform(val => (typeof val === 'string' ? parseInt(val) : val) as 1 | 2 | 3 | 4),\n fields: z.array(z.union([\n z.string(), // Legacy: simple field name\n FormFieldSchema, // Enhanced: detailed field config\n ])),\n}));\n\n/**\n * Form View Schema\n * Defines the layout for creating or editing a single record.\n * \n * @example Simple Sectioned Form\n * {\n * type: \"simple\",\n * sections: [\n * {\n * label: \"General Info\",\n * columns: 2,\n * fields: [\"name\", \"status\"]\n * },\n * {\n * label: \"Details\",\n * fields: [\"description\", { field: \"priority\", widget: \"rating\" }]\n * }\n * ]\n * }\n */\nexport const FormViewSchema = lazySchema(() => z.object({\n type: z.enum([\n 'simple', // Single column or sections\n 'tabbed', // Tabs\n 'wizard', // Step by step\n 'split', // Master-Detail split\n 'drawer', // Side panel\n 'modal' // Dialog\n ]).default('simple'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n sections: z.array(FormSectionSchema).optional(), // For simple layout\n groups: z.array(FormSectionSchema).optional(), // Legacy support -> alias to sections\n\n /** Default Sort for Related Lists (e.g., sort child records by date) */\n defaultSort: z.array(z.object({\n field: z.string().describe('Field name to sort by'),\n order: z.enum(['asc', 'desc']).default('desc').describe('Sort direction'),\n })).optional().describe('Default sort order for related list views within this form'),\n\n /** Public form sharing configuration */\n sharing: SharingConfigSchema.optional().describe('Public sharing configuration for this form'),\n\n /**\n * What happens after a successful submit.\n *\n * - `thank-you` (default) — show a confirmation panel\n * - `redirect` — send the browser to a URL\n * - `continue` — reset the form so another response can be entered\n * - `next-record` — advance to the next record (internal queues only)\n */\n submitBehavior: z.union([\n z.object({\n kind: z.literal('thank-you'),\n title: z.string().optional(),\n message: z.string().optional(),\n }),\n z.object({\n kind: z.literal('redirect'),\n url: z.string(),\n delayMs: z.number().int().min(0).optional(),\n }),\n z.object({ kind: z.literal('continue') }),\n z.object({ kind: z.literal('next-record') }),\n ]).optional().describe('Post-submit behavior'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the form view'),\n}));\n\n/**\n * Master View Schema\n * Can define multiple named views.\n */\n/**\n * View Container Schema\n * Aggregates all view definitions for a specific object or context.\n * \n * @example\n * {\n * list: { type: \"grid\", columns: [\"name\"] },\n * form: { type: \"simple\", fields: [\"name\"] },\n * listViews: {\n * \"all\": { label: \"All\", filter: [] },\n * \"my\": { label: \"Mine\", filter: [[\"owner\", \"=\", \"{user_id}\"]] }\n * }\n * }\n */\nexport const ViewSchema = lazySchema(() => z.object({\n list: ListViewSchema.optional(), // Default list view\n form: FormViewSchema.optional(), // Default form view\n listViews: z.record(z.string(), ListViewSchema).optional().describe('Additional named list views'),\n formViews: z.record(z.string(), FormViewSchema).optional().describe('Additional named form views'),\n}));\n\n/**\n * Type-safe factory for creating view definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const taskViews = defineView({\n * list: {\n * type: 'grid',\n * data: { provider: 'object', object: 'task' },\n * columns: ['subject', 'status', 'priority', 'due_date'],\n * },\n * form: {\n * type: 'simple',\n * sections: [{ label: 'Details', fields: [{ field: 'subject' }] }],\n * },\n * });\n * ```\n */\nexport function defineView(config: z.input<typeof ViewSchema>): View {\n return ViewSchema.parse(config);\n}\n\nexport type View = z.infer<typeof ViewSchema>;\nexport type ListView = z.infer<typeof ListViewSchema>;\nexport type FormView = z.infer<typeof FormViewSchema>;\nexport type FormSection = z.infer<typeof FormSectionSchema>;\nexport type ListColumn = z.infer<typeof ListColumnSchema>;\nexport type FormField = z.infer<typeof FormFieldSchema>;\nexport type SelectionConfig = z.infer<typeof SelectionConfigSchema>;\nexport type NavigationConfig = z.infer<typeof NavigationConfigSchema>;\nexport type PaginationConfig = z.infer<typeof PaginationConfigSchema>;\nexport type ViewData = z.infer<typeof ViewDataSchema>;\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\nexport type HttpMethod = z.infer<typeof HttpMethodSchema>;\nexport type ColumnSummary = z.infer<typeof ColumnSummarySchema>;\nexport type RowHeight = z.infer<typeof RowHeightSchema>;\nexport type GroupingConfig = z.infer<typeof GroupingConfigSchema>;\nexport type GalleryConfig = z.infer<typeof GalleryConfigSchema>;\nexport type TimelineConfig = z.infer<typeof TimelineConfigSchema>;\nexport type ListChartConfig = z.infer<typeof ListChartConfigSchema>;\nexport type ViewSharing = z.infer<typeof ViewSharingSchema>;\nexport type RowColorConfig = z.infer<typeof RowColorConfigSchema>;\nexport type VisualizationType = z.infer<typeof VisualizationTypeSchema>;\nexport type UserActionsConfig = z.infer<typeof UserActionsConfigSchema>;\nexport type AppearanceConfig = z.infer<typeof AppearanceConfigSchema>;\nexport type ViewTab = z.infer<typeof ViewTabSchema>;\nexport type AddRecordConfig = z.infer<typeof AddRecordConfigSchema>;\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';\nimport { ActionSchema } from '../ui/action.zod';\nimport { ListViewSchema } from '../ui/view.zod';\n\n/**\n * API Operations Enum\n */\nimport { ExpressionInputSchema , TemplateExpressionInputSchema } from '../shared/expression.zod';\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 * Object Field Group Schema — MVP (data-layer protocol)\n * \n * Declares the set of logical field groups for an object. A group bundles\n * related fields together for presentation in forms, detail pages, and\n * editors (e.g., \"Contact Info\", \"Billing\", \"System\").\n * \n * Design rules (MVP):\n * - Group **order** is the declaration order of this array — no `order` property.\n * - Field → group mapping is derived automatically from `Field.group`\n * matching `ObjectFieldGroup.key`; the **in-group display order** equals\n * the traversal order of `ObjectSchema.fields`.\n * - Fields whose `group` is unset (or references an undeclared key) are\n * considered ungrouped and must be rendered by consumers in a default\n * bucket after the declared groups, preserving their field declaration order.\n * - Extension packages and runtime code use `Field.group` to assign fields\n * to an existing group — no per-field order property is introduced at this\n * layer.\n * \n * Migration operations supported by this MVP:\n * - add / rename / delete / reorder groups (via the array)\n * - assign an existing field to a group (via `Field.group`)\n * \n * Deferred (not part of MVP):\n * - explicit per-field in-group ordering\n * - nested groups / sub-groups\n * - permission-scoped group visibility beyond `visibleOn`\n * \n * @example\n * ```ts\n * fieldGroups: [\n * { key: 'contact_info', label: 'Contact Information', icon: 'user' },\n * { key: 'billing', label: 'Billing', defaultExpanded: false },\n * { key: 'system', label: 'System', visibleOn: '$user.isAdmin' },\n * ]\n * ```\n */\nexport const ObjectFieldGroupSchema = lazySchema(() => z.object({\n /** Group key — referenced by `Field.group` to assign a field to this group. Must be snake_case. */\n key: z.string().regex(/^[a-z_][a-z0-9_]*$/, {\n message: 'Field group key must be lowercase snake_case (e.g., \"contact_info\", \"billing\", \"system\")',\n }).describe('Group machine key (snake_case). Referenced by Field.group.'),\n\n /** Human-readable label displayed as the group header. */\n label: z.string().describe('Group display label'),\n\n /** Optional Lucide/Material icon name for the group header. */\n icon: z.string().optional().describe('Icon name (Lucide/Material) for the group header'),\n\n /** Optional description / help text shown under the group header. */\n description: z.string().optional().describe('Optional description shown under the group header'),\n\n /** Whether the group is expanded by default. Defaults to `true`. */\n defaultExpanded: z.boolean().optional().default(true).describe('Whether the group is expanded by default'),\n\n /** Optional visibility expression — when false, the entire group is hidden (e.g., \"$user.isAdmin\", \"status == \\'closed\\'\"). */\n visibleOn: ExpressionInputSchema.optional().describe('Visibility predicate (CEL); group is hidden when FALSE.'),\n}));\n\nexport type ObjectFieldGroup = z.infer<typeof ObjectFieldGroupSchema>;\nexport type ObjectFieldGroupInput = z.input<typeof ObjectFieldGroupSchema>;\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 * Managed-by hint — declares which lifecycle bucket the object belongs\n * to so UI clients render the appropriate set of CRUD affordances and\n * the security layer can enforce matching defaults. Modelled after the\n * way Salesforce / ServiceNow / Workday segregate user-owned business\n * data from admin-authored configuration, system-driven runtime rows,\n * and append-only audit trails.\n *\n * - `platform` — **Default.** User-owned business data. Generic\n * New / Import / Edit / Delete affordances are all shown. Example:\n * the user's own `sys_attachment`, `sys_comment`, `sys_saved_report`.\n * - `config` — Admin-authored metadata / configuration. Generic\n * New / Edit / Delete shown (admins author via wizard or form), but\n * CSV Import is suppressed (config rows have nested JSON envelopes\n * that don't round-trip through a flat sheet; clients should offer a\n * purpose-built \"Import definition (JSON)\" action instead). Example:\n * `sys_approval_process`, `sys_sharing_rule`, `sys_role`,\n * `sys_permission_set`, `sys_view`, `sys_app`.\n * - `system` — Runtime rows whose lifecycle is owned by a\n * platform service (the approval engine, the sharing engine, the\n * invitation service, …). Generic CRUD is hidden — users interact\n * with these via *domain actions* invoked from the source record\n * (e.g. \"Submit for Approval\" on an Opportunity creates an\n * `sys_approval_request`; \"Recall\" on the request changes its\n * state). Example: `sys_approval_request`, `sys_record_share`,\n * `sys_notification`, `sys_invitation`,\n * `sys_user_permission_set` / `sys_role_permission_set`.\n * - `append-only` — Immutable audit log. No New / Import / Edit /\n * Delete; only View and Export. Example: `sys_approval_action`,\n * `sys_audit_log`, `sys_activity`, `sys_email`, `sys_presence`.\n * - `better-auth` — Identity tables owned by the better-auth driver\n * (sys_user, sys_session, sys_account, sys_member, sys_organization,\n * sys_api_key, sys_jwks, sys_verification, sys_two_factor,\n * sys_oauth_*, sys_device_code). Mutations must flow through the\n * better-auth API so password hashing, token signing, email\n * verification, and invitation flows fire correctly. Generic CRUD\n * suppressed; replaced by purpose-built actions\n * (Invite User, Reset Password, Revoke Session, Rotate Key, …).\n *\n * The flag is purely declarative on the schema. Enforcement happens in\n * two places:\n * 1. Default permission sets ({@link packages/platform-objects/src/security/default-permission-sets.ts})\n * deny direct CRUD for `system` / `append-only` / `better-auth`.\n * 2. UI clients honour {@link resolveCrudAffordances} to gate the\n * New / Import / Edit / Delete / Export buttons accordingly.\n *\n * Use {@link userActions} to override the default matrix for a single\n * field (e.g. an \"append-only\" table that should still allow Export).\n */\n managedBy: z.enum(['platform', 'config', 'system', 'append-only', 'better-auth']).optional().describe(\n 'Lifecycle bucket — platform (user CRUD) | config (admin authored) | system (engine-managed) | append-only (audit) | better-auth (identity). UI clients honour the resolved affordance matrix.',\n ),\n\n /**\n * Per-object override of the generic CRUD affordances that the UI\n * surfaces. Each flag overrides the default derived from\n * {@link managedBy} via {@link resolveCrudAffordances}. Useful for the\n * handful of objects whose lifecycle doesn't cleanly fit a single\n * bucket — e.g. an `append-only` table that should still expose CSV\n * Export, or a `config` table that admins legitimately want to bulk\n * import via CSV.\n *\n * Omitting the block (or leaving individual flags `undefined`) keeps\n * the {@link managedBy}-derived default.\n */\n userActions: z.object({\n create: z.boolean().optional().describe('Show generic \"New\" button.'),\n import: z.boolean().optional().describe('Show CSV import wizard entry.'),\n edit: z.boolean().optional().describe('Allow inline / form edit of existing rows.'),\n delete: z.boolean().optional().describe('Show row-level delete + bulk delete.'),\n exportCsv: z.boolean().optional().describe('Show CSV export entry.'),\n }).optional().describe('Per-object override of the resolved CRUD affordance matrix.'),\n\n /**\n * System-field auto-injection control.\n *\n * The `SchemaRegistry` augments every user object with a small set of\n * implicit system fields at registration time so authors don't have to\n * declare them per-object (Salesforce-style). Currently injected:\n *\n * - `organization_id` — `lookup → sys_organization`. Injected only when\n * the kernel runs in multi-tenant mode (`OS_MULTI_TENANT !== 'false'`).\n * Required for the default `tenant_isolation` RLS policy and the\n * SecurityPlugin's auto-fill on insert to take effect.\n *\n * Author-declared fields with the same name always win over injection\n * (no overwrite). Objects with `managedBy` set are skipped entirely —\n * better-auth/system/platform tables already declare what they need.\n *\n * Set `systemFields: false` to opt the object out completely. Pass an\n * options object to selectively disable individual injections (currently\n * only `tenant`, but reserved keys `owner`/`audit` are pre-defined for\n * future expansion).\n *\n * @default undefined (= injection enabled, gated by kernel mode)\n */\n systemFields: z\n .union([\n z.literal(false),\n z.object({\n tenant: z.boolean().optional().describe('Inject organization_id (multi-tenant only). Default true.'),\n owner: z.boolean().optional().describe('Reserved for future owner_id auto-injection.'),\n audit: z.boolean().optional().describe('Reserved for future created_by/updated_by auto-injection.'),\n }),\n ])\n .optional()\n .describe('Opt out of, or selectively disable, registry-level system-field auto-injection.'),\n\n /** \n * Storage & Virtualization \n */\n datasource: z.string().optional().default('default').describe('Target Datasource ID. \"default\" is the primary DB.'),\n\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 * Field Groups (MVP)\n * \n * Declares logical groups for presenting fields in forms and detail\n * pages. The **array order is the group display order**. Each field's\n * `Field.group` references an entry's `key` to assign it to a group;\n * within a group, fields are displayed in their `ObjectSchema.fields`\n * declaration order.\n * \n * See {@link ObjectFieldGroupSchema} for the full MVP contract and\n * deferred features.\n */\n fieldGroups: z.array(ObjectFieldGroupSchema).refine(\n (groups) => new Set(groups.map(g => g.key)).size === groups.length,\n { message: 'fieldGroups[].key must be unique within an object' },\n ).optional().describe('Ordered list of field groups (array order = display order). See ObjectFieldGroupSchema.'),\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: TemplateExpressionInputSchema.optional().describe('Title template — supports {{record.field}} interpolation. Overrides displayNameField.'),\n compactLayout: z.array(z.string()).optional().describe('Primary fields for hover/cards/lookups'),\n\n /**\n * Built-in List Views\n *\n * Curated, platform-shipped list views (grid / kanban / calendar / …)\n * keyed by view name. Rendered as segmented tabs in the console list page\n * **before** any user-saved `sys_view` rows. Use this for system objects\n * (audit, runtime, config) where the default \"All records\" grid lacks\n * business context — e.g. an approval-request list should ship with\n * \"My pending\", \"I submitted\", \"Completed\" tabs out of the box.\n *\n * Each value is a `ListViewSchema` (see `@objectstack/spec/ui`) so authors\n * get the full tab/filter/sort/grouping vocabulary.\n *\n * @example\n * ```ts\n * listViews: {\n * my_pending: {\n * type: 'grid',\n * label: 'My Pending',\n * filter: [{ field: 'pending_approvers', operator: 'contains', value: '{current_user_id}' }],\n * sort: [{ field: 'updated_at', order: 'desc' }],\n * },\n * }\n * ```\n */\n listViews: z.record(z.string(), ListViewSchema).optional().describe('Built-in named list views (segmented tabs) shipped with the object schema'),\n\n /**\n * Default FormView used when displaying a single record's detail page.\n *\n * Matches the named FormView under the same object's `ViewSchema.formViews`.\n * When unset, the runtime falls back to the unnamed `form` view, then to\n * an auto-generated layout. This is the Airtable-style \"Interface form\"\n * binding — every record-detail screen renders through a FormView, so the\n * same metadata drives both the public collection form and the operator's\n * edit panel.\n */\n defaultDetailForm: z.string().optional().describe('Name of the default FormView for record detail / edit screens'),\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 * Object Actions\n * \n * Actions associated with this object. Populated automatically by `defineStack()`\n * when top-level actions specify `objectName` matching this object.\n * Can also be defined directly on the object.\n * \n * Aligns with Salesforce/ServiceNow patterns where actions are part of the\n * object schema, so API responses (e.g., `/api/v1/meta/objects/:name`)\n * include the action list without requiring downstream merge.\n */\n actions: z.array(ActionSchema).optional().describe('Actions associated with this object (auto-populated from top-level actions via objectName)'),\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 = lazySchema(() => 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: <const T extends z.input<typeof ObjectSchemaBase>>(config: T): Omit<ServiceObject, 'fields'> & Pick<T, 'fields'> => {\n const withDefaults = {\n ...config,\n label: config.label ?? snakeCaseToLabel(config.name),\n };\n return ObjectSchemaBase.parse(withDefaults) as Omit<ServiceObject, 'fields'> & Pick<T, 'fields'>;\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 * Resolved CRUD affordance matrix for an object — what generic\n * lifecycle actions UI clients should expose in their toolbars.\n *\n * Use {@link resolveCrudAffordances} to compute this from a schema; the\n * `managedBy` flag drives the defaults, and the optional `userActions`\n * block per-flag-overrides them. UI clients (`ObjectView`,\n * `RecordDetailView`, `RecordFormPage`, …) gate their buttons on this\n * matrix in combination with the user's permissions.\n *\n * The presence of an affordance here means \"the *object* permits this\n * action conceptually\"; the user still needs the matching permission\n * grant to execute it.\n */\nexport interface CrudAffordances {\n /** Generic \"New\" button (single record creation form). */\n create: boolean;\n /** CSV bulk-import wizard. Disabled for config / system / append-only / better-auth by default. */\n import: boolean;\n /** Inline + form editing of existing rows. */\n edit: boolean;\n /** Row-level + bulk delete. */\n delete: boolean;\n /** CSV / clipboard export. Allowed even on append-only audit tables by default. */\n exportCsv: boolean;\n}\n\n/**\n * Default affordance matrix per {@link ObjectSchemaBase.managedBy} bucket.\n * Mirrors how Salesforce / ServiceNow / Workday / Notion expose CRUD on\n * different categories of system tables.\n *\n * platform — full CRUD (user-owned business data)\n * config — admin authored: New/Edit/Delete OK, no CSV import\n * (definitions have nested envelopes; admins should use\n * a purpose-built \"Import definition\" action instead)\n * system — engine-managed runtime rows: no generic CRUD; users\n * interact via domain actions on the source record\n * append-only — audit log: View + Export only\n * better-auth — identity tables owned by better-auth driver; CRUD\n * routed through purpose-built actions (Invite, Reset\n * PW, Revoke, …)\n */\nconst CRUD_AFFORDANCE_DEFAULTS: Record<NonNullable<ServiceObject['managedBy']> | 'platform', CrudAffordances> = {\n platform: { create: true, import: true, edit: true, delete: true, exportCsv: true },\n config: { create: true, import: false, edit: true, delete: true, exportCsv: true },\n system: { create: false, import: false, edit: false, delete: false, exportCsv: true },\n 'append-only': { create: false, import: false, edit: false, delete: false, exportCsv: true },\n 'better-auth': { create: false, import: false, edit: false, delete: false, exportCsv: true },\n};\n\n/**\n * Resolve the effective CRUD affordance matrix for an object schema.\n *\n * Starts from the bucket default keyed off `managedBy` (defaulting to\n * `'platform'` if unset) and applies the per-flag overrides in\n * `userActions`. Returns a fresh object so callers can mutate safely.\n *\n * @example\n * ```ts\n * const aff = resolveCrudAffordances(sysApprovalRequestSchema);\n * // → { create:false, import:false, edit:false, delete:false, exportCsv:true }\n * ```\n */\nexport function resolveCrudAffordances(\n obj: Pick<ServiceObject, 'managedBy' | 'userActions'> | { managedBy?: string; userActions?: ServiceObject['userActions'] },\n): CrudAffordances {\n const bucket = (obj?.managedBy ?? 'platform') as keyof typeof CRUD_AFFORDANCE_DEFAULTS;\n const base = CRUD_AFFORDANCE_DEFAULTS[bucket] ?? CRUD_AFFORDANCE_DEFAULTS.platform;\n const overrides = obj?.userActions ?? {};\n return {\n create: overrides.create ?? base.create,\n import: overrides.import ?? base.import,\n edit: overrides.edit ?? base.edit,\n delete: overrides.delete ?? base.delete,\n exportCsv: overrides.exportCsv ?? base.exportCsv,\n };\n}\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 = lazySchema(() => 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';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { SharingConfigSchema, EmbedConfigSchema } from './sharing.zod';\n\n/**\n * Base Navigation Item Schema\n * Shared properties for all navigation types.\n * \n * **NAMING CONVENTION:**\n * Navigation item IDs are used in URLs and configuration and must be lowercase snake_case.\n * \n * @example Good IDs\n * - 'menu_accounts'\n * - 'page_dashboard'\n * - 'nav_settings'\n * \n * @example Bad IDs (will be rejected)\n * - 'MenuAccounts' (PascalCase)\n * - 'Page Dashboard' (spaces)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nconst BaseNavItemSchema = z.object({\n /** Unique identifier for the item */\n id: SnakeCaseIdentifierSchema.describe('Unique identifier for this navigation item (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Display proper label'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** Sort order within the same level (lower numbers appear first) */\n order: z.number().optional().describe('Sort order within the same level (lower = first)'),\n\n /** Badge text or count displayed on the navigation item (e.g. \"3\", \"New\") */\n badge: z.union([z.string(), z.number()]).optional().describe('Badge text or count displayed on the item'),\n\n /** \n * Visibility condition. \n * Formula expression returning boolean. \n * e.g. \"user.is_admin || user.department == 'sales'\"\n */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL). e.g. P`os.user.role == \"admin\"`'),\n\n /** Permissions required to see/access this navigation item */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this item'),\n\n /**\n * Capability gate — registered object name.\n *\n * When set, the frontend MUST hide (or render disabled) this navigation\n * entry if the named object is not registered in the runtime's\n * SchemaRegistry. Useful for cloud-only objects (e.g. `sys_app`,\n * `sys_package`, `sys_package_installation`) that don't exist in\n * single-project runtimes — declaring the dependency here avoids\n * 404-when-clicked traps without hard-coding environment checks in the\n * UI.\n *\n * Independent of `visible` (CEL) and `requiredPermissions` (RBAC) —\n * this gates on runtime *capability*, not user authorization.\n */\n requiresObject: z.string().optional().describe('Hide/disable this entry unless the named object is registered in the runtime'),\n\n /**\n * Capability gate — registered service name.\n *\n * Same idea as `requiresObject` but keyed on a kernel service\n * (e.g. `'ai'`, `'tenant'`, `'realtime'`). Hide the entry when the\n * service isn't installed.\n */\n requiresService: z.string().optional().describe('Hide/disable this entry unless the named kernel service is registered'),\n});\n\n/**\n * 1. Object Navigation Item\n * Navigates to an object's list view.\n */\nexport const ObjectNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('object'),\n objectName: z.string().describe('Target object name'),\n viewName: z.string().optional().describe('Default list view to open. Defaults to \"all\"'),\n}));\n\n/**\n * 2. Dashboard Navigation Item\n * Navigates to a specific dashboard.\n */\nexport const DashboardNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('dashboard'),\n dashboardName: z.string().describe('Target dashboard name'),\n}));\n\n/**\n * 3. Page Navigation Item\n * Navigates to a custom UI page/component.\n */\nexport const PageNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('page'),\n pageName: z.string().describe('Target custom page component name'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the page context'),\n}));\n\n/**\n * 4. URL Navigation Item\n * Navigates to an external or absolute URL.\n */\nexport const UrlNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('url'),\n url: z.string().describe('Target external URL'),\n target: z.enum(['_self', '_blank']).default('_self').describe('Link target window'),\n}));\n\n/**\n * 5. Report Navigation Item\n * Navigates to a specific report.\n */\nexport const ReportNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('report'),\n reportName: z.string().describe('Target report name'),\n}));\n\n/**\n * 6. Action Navigation Item\n * Triggers an action (e.g. opening a flow, running a script, or launching a screen action).\n */\nexport const ActionNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('action'),\n actionDef: z.object({\n actionName: z.string().describe('Action machine name to execute'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the action'),\n }).describe('Action definition to execute when clicked'),\n}));\n\n/**\n * 7. Group Navigation Item\n * A container for child navigation items (Sub-menu).\n * Does not perform navigation itself.\n */\nexport const GroupNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('group'),\n expanded: z.boolean().default(false).describe('Default expansion state in sidebar'),\n // children property is added in the recursive definition below\n}));\n\n/**\n * Recursive Union of all navigation item types.\n * Allows constructing an unlimited-depth navigation tree.\n */\nexport const NavigationItemSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n ObjectNavItemSchema.extend({\n children: z.array(NavigationItemSchema).optional().describe('Child navigation items (e.g. specific views)'),\n }),\n DashboardNavItemSchema,\n PageNavItemSchema,\n UrlNavItemSchema,\n ReportNavItemSchema,\n ActionNavItemSchema,\n GroupNavItemSchema.extend({\n children: z.array(NavigationItemSchema).describe('Child navigation items'),\n })\n ])\n);\n\n/**\n * App Branding Configuration\n * Allows configuring the look and feel of the specific app.\n */\nexport const AppBrandingSchema = lazySchema(() => z.object({\n primaryColor: z.string().optional().describe('Primary theme color hex code'),\n logo: z.string().optional().describe('Custom logo URL for this app'),\n favicon: z.string().optional().describe('Custom favicon URL for this app'),\n}));\n\n/**\n * Navigation Area Schema\n * \n * A logical grouping (zone/section) of navigation items, similar to Salesforce \"App Areas\"\n * or Dynamics 365 \"Site Map Areas\". Each area represents a business domain (e.g. Sales, Service, Settings)\n * and contains its own independent navigation tree.\n * \n * Areas allow large applications to partition navigation by business function while\n * keeping a single AppSchema definition. The runtime may render areas as top-level tabs,\n * sidebar sections, or a switchable navigation context.\n * \n * @example\n * ```ts\n * const salesArea: NavigationArea = {\n * id: 'area_sales',\n * label: 'Sales',\n * icon: 'briefcase',\n * order: 1,\n * navigation: [\n * { id: 'nav_leads', type: 'object', label: 'Leads', objectName: 'lead' },\n * { id: 'nav_opportunities', type: 'object', label: 'Opportunities', objectName: 'opportunity' },\n * ],\n * };\n * ```\n */\nexport const NavigationAreaSchema = lazySchema(() => z.object({\n /** Unique area identifier */\n id: SnakeCaseIdentifierSchema.describe('Unique area identifier (lowercase snake_case)'),\n\n /** Display label */\n label: I18nLabelSchema.describe('Area display label'),\n\n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Area icon name'),\n\n /** Sort order among areas (lower = first) */\n order: z.number().optional().describe('Sort order among areas (lower = first)'),\n\n /** Area description */\n description: I18nLabelSchema.optional().describe('Area description'),\n\n /** \n * Visibility condition.\n * Formula expression returning boolean.\n */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL) for this area.'),\n\n /** Permissions required to access this area */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this area'),\n\n /** Navigation items within this area */\n navigation: z.array(NavigationItemSchema).describe('Navigation items within this area'),\n}));\n\n/**\n * Schema for Applications (Apps).\n * A logical container for business functionality (e.g., \"Sales CRM\", \"HR Portal\").\n * \n * **NAMING CONVENTION:**\n * App names are used in URLs and routing and must be lowercase snake_case.\n * Prefix with 'app_' is recommended for clarity.\n * \n * @example Good app names\n * - 'app_crm'\n * - 'app_finance'\n * - 'app_portal'\n * - 'sales_app'\n * \n * @example Bad app names (will be rejected)\n * - 'CRM' (uppercase)\n * - 'FinanceApp' (mixed case)\n * - 'Sales App' (spaces)\n */\n/**\n * App Configuration Schema\n * Defines a business application container, including its navigation, branding, and permissions.\n * \n * The App is the top-level navigation shell. The `navigation[]` field holds the complete\n * sidebar tree with unlimited nesting depth via `type: 'group'` items. Pages are referenced\n * by name via `type: 'page'` items and defined independently.\n * \n * @example CRM App with nested navigation tree\n * {\n * name: \"crm\",\n * label: \"Sales CRM\",\n * icon: \"briefcase\",\n * navigation: [\n * { type: \"group\", id: \"grp_sales\", label: \"Sales Cloud\", expanded: true, children: [\n * { type: \"page\", id: \"nav_pipeline\", label: \"Pipeline\", pageName: \"page_pipeline\" },\n * { type: \"page\", id: \"nav_accounts\", label: \"Accounts\", pageName: \"page_accounts\" },\n * ]},\n * { type: \"page\", id: \"nav_settings\", label: \"Settings\", pageName: \"admin_settings\" },\n * ]\n * }\n */\nexport const AppSchema = lazySchema(() => z.object({\n /** Machine name (id) */\n name: SnakeCaseIdentifierSchema.describe('App unique machine name (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('App display label'),\n\n /** App version */\n version: z.string().optional().describe('App version'),\n \n /** Description */\n description: I18nLabelSchema.optional().describe('App description'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('App icon used in the App Launcher'),\n \n /** Branding/Theming Configuration */\n branding: AppBrandingSchema.optional().describe('App-specific branding'),\n \n /** Application status */\n active: z.boolean().optional().default(true).describe('Whether the app is enabled'),\n\n /** Is this the default app for new users? */\n isDefault: z.boolean().optional().default(false).describe('Is default app'),\n \n /** \n * Full Navigation Tree — supports unlimited nesting depth.\n * Pages are referenced by name via `type: 'page'` items.\n * Groups can contain other groups for arbitrary sidebar depth.\n * \n * For simple apps, use `navigation` directly.\n * For enterprise apps with multiple business domains, use `areas` instead.\n */\n navigation: z.array(NavigationItemSchema).optional()\n .describe('Full navigation tree for the app sidebar'),\n\n /**\n * Navigation Areas — partitions navigation by business domain.\n * Each area defines an independent navigation tree (e.g. Sales, Service, Settings).\n * When areas are defined, they take precedence over the top-level `navigation` array.\n * \n * @example\n * ```ts\n * areas: [\n * { id: 'area_sales', label: 'Sales', icon: 'briefcase', order: 1, navigation: [...] },\n * { id: 'area_service', label: 'Service', icon: 'headset', order: 2, navigation: [...] },\n * ]\n * ```\n */\n areas: z.array(NavigationAreaSchema).optional()\n .describe('Navigation areas for partitioning navigation by business domain'),\n \n /** \n * App-level Home Page Override\n * ID of the navigation item to act as the landing page.\n * If not set, usually defaults to the first navigation item.\n */\n homePageId: z.string().optional().describe('ID of the navigation item to serve as landing page'),\n\n /** \n * Access Control\n * List of permissions required to access this app.\n * Modern replacement for role/profile based assignment.\n * Example: [\"app.access.crm\"]\n */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this app'),\n \n /** \n * Package Components (For config file convenience)\n * In a real monorepo these might be auto-discovered, but here we allow explicit registration.\n */\n objects: z.array(z.unknown()).optional().describe('Objects belonging to this app'),\n apis: z.array(z.unknown()).optional().describe('Custom APIs belonging to this app'),\n\n /** Sharing configuration for public access */\n sharing: SharingConfigSchema.optional().describe('Public sharing configuration'),\n\n /** Embed configuration for iframe embedding */\n embed: EmbedConfigSchema.optional().describe('Iframe embedding configuration'),\n\n /** Mobile navigation mode */\n mobileNavigation: z.object({\n mode: z.enum(['drawer', 'bottom_nav', 'hamburger']).default('drawer')\n .describe('Mobile navigation mode: drawer sidebar, bottom navigation bar, or hamburger menu'),\n bottomNavItems: z.array(z.string()).optional()\n .describe('Navigation item IDs to show in bottom nav (max 5)'),\n }).optional().describe('Mobile-specific navigation configuration'),\n\n /**\n * Default AI Copilot for this app.\n *\n * When set, the ambient chat endpoint (`POST /api/v1/ai/chat` with\n * `context.appName`) auto-resolves to this agent without the user\n * having to pick from a list. The agent's `skills[]` are loaded\n * from the SkillRegistry and exposed to the LLM.\n *\n * Mirrors the Salesforce Agentforce / ServiceNow Now Assist pattern\n * where each application surface has one ambient copilot.\n *\n * @example\n * ```ts\n * defineApp({ name: 'crm', defaultAgent: 'sales_copilot', ... })\n * ```\n */\n defaultAgent: SnakeCaseIdentifierSchema.optional()\n .describe('Name of the default AI agent for this app (used by the ambient chat endpoint)'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the application'),\n}));\n\n/**\n * App Factory Helper\n */\nexport const App = {\n create: (config: z.input<typeof AppSchema>): App => AppSchema.parse(config),\n} as const;\n\n/**\n * Type-safe factory for creating application definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example CRM App with nested navigation tree\n * ```ts\n * const crmApp = defineApp({\n * name: 'crm',\n * label: 'Sales CRM',\n * navigation: [\n * { id: 'grp_sales', type: 'group', label: 'Sales Cloud', expanded: true, children: [\n * { id: 'nav_pipeline', type: 'page', label: 'Pipeline', pageName: 'page_pipeline' },\n * { id: 'nav_accounts', type: 'page', label: 'Accounts', pageName: 'page_accounts' },\n * ]},\n * { id: 'nav_settings', type: 'page', label: 'Settings', pageName: 'admin_settings' },\n * ],\n * });\n * ```\n */\nexport function defineApp(config: z.input<typeof AppSchema>): App {\n return AppSchema.parse(config);\n}\n\n// Main Types\nexport type App = z.infer<typeof AppSchema>;\nexport type AppInput = z.input<typeof AppSchema>;\nexport type AppBranding = z.infer<typeof AppBrandingSchema>;\nexport type NavigationItem = z.infer<typeof NavigationItemSchema>;\nexport type NavigationArea = z.infer<typeof NavigationAreaSchema>;\n\n// Discriminated Item Types (Helper exports)\nexport type ObjectNavItem = z.infer<typeof ObjectNavItemSchema>;\nexport type DashboardNavItem = z.infer<typeof DashboardNavItemSchema>;\nexport type PageNavItem = z.infer<typeof PageNavItemSchema>;\nexport type UrlNavItem = z.infer<typeof UrlNavItemSchema>;\nexport type ReportNavItem = z.infer<typeof ReportNavItemSchema>;\nexport type ActionNavItem = z.infer<typeof ActionNavItemSchema>;\nexport type GroupNavItem = z.infer<typeof GroupNavItemSchema> & { children: NavigationItem[] };\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Shared Enumerations\n// ============================================================================\n\n/** Aggregation functions used across query, data-engine, analytics, field */\nimport { lazySchema } from './lazy-schema';\nexport const AggregationFunctionEnum = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'percentile', 'median', 'stddev', 'variance',\n]).describe('Standard aggregation functions');\nexport type AggregationFunction = z.infer<typeof AggregationFunctionEnum>;\n\n/** Sort direction used across query, data-engine, analytics */\nexport const SortDirectionEnum = z.enum(['asc', 'desc'])\n .describe('Sort order direction');\nexport type SortDirection = z.infer<typeof SortDirectionEnum>;\n\n/** Reusable sort item — field + direction pair used across views, data sources, filters */\nexport const SortItemSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to sort by'),\n order: SortDirectionEnum.describe('Sort direction'),\n}).describe('Sort field and direction pair'));\nexport type SortItem = z.infer<typeof SortItemSchema>;\n\n/** CRUD mutation events used across hook, validation, object CDC */\nexport const MutationEventEnum = z.enum([\n 'insert', 'update', 'delete', 'upsert',\n]).describe('Data mutation event types');\nexport type MutationEvent = z.infer<typeof MutationEventEnum>;\n\n/** Database isolation levels — unified format */\nexport const IsolationLevelEnum = z.enum([\n 'read_uncommitted', 'read_committed', 'repeatable_read', 'serializable', 'snapshot',\n]).describe('Transaction isolation levels (snake_case standard)');\nexport type IsolationLevel = z.infer<typeof IsolationLevelEnum>;\n\n/** Cache eviction strategies */\nexport const CacheStrategyEnum = z.enum(['lru', 'lfu', 'ttl', 'fifo'])\n .describe('Cache eviction strategy');\nexport type CacheStrategy = z.infer<typeof CacheStrategyEnum>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Unified Query DSL Specification\n * \n * Based on industry best practices from:\n * - Prisma ORM\n * - Strapi CMS\n * - TypeORM\n * - LoopBack Framework\n * \n * Version: 1.0.0\n * Status: Draft\n * \n * Objective: Define a JSON-based, database-agnostic query syntax standard\n * for data filtering interactions between frontend and backend APIs.\n * \n * Design Principles:\n * 1. Declarative: Frontend describes \"what data to get\", not \"how to query\"\n * 2. Database Agnostic: Syntax contains no database-specific directives\n * 3. Type Safe: Structure can be statically inferred by TypeScript\n * 4. Convention over Configuration: Implicit syntax for common queries\n */\n\n/**\n * Field Reference\n * Represents a reference to another field/column instead of a literal value.\n * Used for joins (ON clause) and cross-field comparisons.\n * \n * @example\n * // user.id = order.owner_id\n * { \"$eq\": { \"$field\": \"order.owner_id\" } }\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldReferenceSchema = lazySchema(() => z.object({\n $field: z.string().describe('Field Reference/Column Name')\n}));\n\nexport type FieldReference = z.infer<typeof FieldReferenceSchema>;\n\n// ============================================================================\n// 3.1 Comparison Operators\n// ============================================================================\n\n/**\n * Comparison operators for equality and inequality checks.\n * Supported data types: Any\n */\nexport const EqualityOperatorSchema = lazySchema(() => z.object({\n /** Equal to (default) - SQL: = | MongoDB: $eq */\n $eq: z.any().optional(),\n \n /** Not equal to - SQL: <> or != | MongoDB: $ne */\n $ne: z.any().optional(),\n}));\n\n/**\n * Comparison operators for numeric and date comparisons.\n * Supported data types: Number, Date\n */\nexport const ComparisonOperatorSchema = lazySchema(() => z.object({\n /** Greater than - SQL: > | MongoDB: $gt */\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Greater than or equal to - SQL: >= | MongoDB: $gte */\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than - SQL: < | MongoDB: $lt */\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than or equal to - SQL: <= | MongoDB: $lte */\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n}));\n\n// ============================================================================\n// 3.2 Set & Range Operators\n// ============================================================================\n\n/**\n * Set operators for membership checks.\n */\nexport const SetOperatorSchema = lazySchema(() => z.object({\n /** In list - SQL: IN (?, ?, ?) | MongoDB: $in */\n $in: z.array(z.any()).optional(),\n \n /** Not in list - SQL: NOT IN (...) | MongoDB: $nin */\n $nin: z.array(z.any()).optional(),\n}));\n\n/**\n * Range operator for interval checks (closed interval).\n * SQL: BETWEEN ? AND ? | MongoDB: $gte AND $lte\n */\nexport const RangeOperatorSchema = lazySchema(() => z.object({\n /** Between (inclusive) - takes [min, max] array */\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n}));\n\n// ============================================================================\n// 3.3 String-Specific Operators\n// ============================================================================\n\n/**\n * String pattern matching operators.\n * Note: Case sensitivity should be handled at backend level.\n */\nexport const StringOperatorSchema = lazySchema(() => z.object({\n /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */\n $contains: z.string().optional(),\n \n /** Does not contain substring - SQL: NOT LIKE %?% | MongoDB: $not: $regex */\n $notContains: z.string().optional(),\n \n /** Starts with prefix - SQL: LIKE ?% | MongoDB: $regex */\n $startsWith: z.string().optional(),\n \n /** Ends with suffix - SQL: LIKE %? | MongoDB: $regex */\n $endsWith: z.string().optional(),\n}));\n\n// ============================================================================\n// 3.5 Special Operators\n// ============================================================================\n\n/**\n * Special check operators for null and existence.\n */\nexport const SpecialOperatorSchema = lazySchema(() => z.object({\n /** Is null check - SQL: IS NULL (true) / IS NOT NULL (false) | MongoDB: field: null */\n $null: z.boolean().optional(),\n \n /** Field exists check (primarily for NoSQL) - MongoDB: $exists */\n $exists: z.boolean().optional(),\n}));\n\n// ============================================================================\n// Combined Field Operators\n// ============================================================================\n\n/**\n * All field-level operators combined.\n * These can be applied to individual fields in a filter.\n */\nexport const FieldOperatorsSchema = lazySchema(() => z.object({\n // Equality\n $eq: z.any().optional(),\n $ne: z.any().optional(),\n \n // Comparison (numeric/date)\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n // Set & Range\n $in: z.array(z.any()).optional(),\n $nin: z.array(z.any()).optional(),\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n \n // String-specific\n $contains: z.string().optional(),\n $notContains: z.string().optional(),\n $startsWith: z.string().optional(),\n $endsWith: z.string().optional(),\n \n // Special\n $null: z.boolean().optional(),\n $exists: z.boolean().optional(),\n}));\n\n// ============================================================================\n// 3.4 Logical Operators & Recursive Filter Structure\n// ============================================================================\n\n/**\n * Recursive filter type that supports:\n * 1. Implicit equality: { field: value }\n * 2. Explicit operators: { field: { $op: value } }\n * 3. Logical combinations: { $and: [...], $or: [...], $not: {...} }\n * 4. Nested relations: { relation: { field: value } }\n */\nexport type FilterCondition = {\n [key: string]: \n | any // Implicit equality: key: value\n | z.infer<typeof FieldOperatorsSchema> // Explicit operators: key: { $op: value }\n | FilterCondition; // Nested relation: key: { nested: ... }\n} & {\n /** Logical AND - combines all conditions that must be true */\n $and?: FilterCondition[];\n \n /** Logical OR - at least one condition must be true */\n $or?: FilterCondition[];\n \n /** Logical NOT - negates the condition */\n $not?: FilterCondition;\n};\n\n/**\n * Zod schema for recursive filter validation.\n * Uses z.lazy() to handle recursive structure.\n */\nexport const FilterConditionSchema: z.ZodType<FilterCondition> = z.lazy(() =>\n z.record(z.string(), z.unknown()).and(\n z.object({\n $and: z.array(FilterConditionSchema).optional(),\n $or: z.array(FilterConditionSchema).optional(),\n $not: FilterConditionSchema.optional(),\n })\n )\n);\n\n// ============================================================================\n// Query Filter Wrapper\n// ============================================================================\n\n/**\n * Top-level query filter wrapper.\n * This is typically used as the \"where\" clause in a query.\n * \n * @example\n * ```typescript\n * const filter: QueryFilter = {\n * where: {\n * status: \"active\", // Implicit equality\n * age: { $gte: 18 }, // Explicit operator\n * $or: [ // Logical combination\n * { role: \"admin\" },\n * { email: { $contains: \"@company.com\" } }\n * ],\n * profile: { // Nested relation\n * verified: true\n * }\n * }\n * }\n * ```\n */\nexport const QueryFilterSchema = lazySchema(() => z.object({\n where: FilterConditionSchema.optional(),\n}));\n\n// ============================================================================\n// TypeScript Type Exports\n// ============================================================================\n\n/**\n * Type-safe filter operators for use in TypeScript.\n * \n * @example\n * ```typescript\n * type UserFilter = Filter<User>;\n * \n * const filter: UserFilter = {\n * age: { $gte: 18 },\n * email: { $contains: \"@example.com\" }\n * };\n * ```\n */\nexport type Filter<T = any> = {\n [K in keyof T]?: \n | T[K] // Implicit equality\n | {\n $eq?: T[K];\n $ne?: T[K];\n $gt?: T[K] extends number | Date ? T[K] : never;\n $gte?: T[K] extends number | Date ? T[K] : never;\n $lt?: T[K] extends number | Date ? T[K] : never;\n $lte?: T[K] extends number | Date ? T[K] : never;\n $in?: T[K][];\n $nin?: T[K][];\n $between?: T[K] extends number | Date ? [T[K], T[K]] : never;\n $contains?: T[K] extends string ? string : never;\n $notContains?: T[K] extends string ? string : never;\n $startsWith?: T[K] extends string ? string : never;\n $endsWith?: T[K] extends string ? string : never;\n $null?: boolean;\n $exists?: boolean;\n }\n | (T[K] extends object ? Filter<T[K]> : never); // Nested relation\n} & {\n $and?: Filter<T>[];\n $or?: Filter<T>[];\n $not?: Filter<T>;\n};\n\n/**\n * Scalar types supported by the filter system.\n */\nexport type Scalar = string | number | boolean | Date | null;\n\n// Export inferred types\nexport type FieldOperators = z.infer<typeof FieldOperatorsSchema>;\nexport type QueryFilter = z.infer<typeof QueryFilterSchema>;\n\n// ============================================================================\n// Normalization Utilities (Internal Representation)\n// ============================================================================\n\n/**\n * Normalized filter AST structure.\n * This is the internal representation after converting all syntactic sugar\n * to explicit operators.\n * \n * Stage 1: Normalization Pass\n * Input: { age: 18, role: \"admin\" }\n * Output: { $and: [{ age: { $eq: 18 } }, { role: { $eq: \"admin\" } }] }\n * \n * This simplifies adapter implementation by providing a consistent structure.\n */\nexport const NormalizedFilterSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n $and: z.array(\n z.union([\n // Field condition: { field: { $op: value } }\n z.record(z.string(), FieldOperatorsSchema),\n // Nested logical group\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $or: z.array(\n z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $not: z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ]).optional(),\n })\n);\n\nexport type NormalizedFilter = z.infer<typeof NormalizedFilterSchema>;\n\n// ============================================================================\n// AST Array Format Detection & Validation\n// ============================================================================\n\n/**\n * Set of valid AST comparison operators (case-insensitive).\n * Used by `isFilterAST()` to validate AST structure beyond `Array.isArray`.\n */\nexport const VALID_AST_OPERATORS = new Set([\n '=', '==', '!=', '<>', '>', '>=', '<', '<=',\n 'in', 'nin', 'not_in',\n 'contains', 'notcontains', 'not_contains', 'like',\n 'startswith', 'starts_with',\n 'endswith', 'ends_with',\n 'between',\n 'is_null', 'is_not_null',\n]);\n\n/**\n * Detect whether a value is a valid Filter AST array structure.\n *\n * A valid AST is one of:\n * - Comparison node: `[field: string, operator: string, value: unknown]` where operator is a known operator\n * - Logical node: `[\"and\" | \"or\", ...children]` where children are valid AST nodes\n * - Legacy flat array: `[[cond], [cond], ...]` where all elements are sub-arrays (each a valid AST node)\n *\n * This replaces the naïve `Array.isArray(filter)` check, preventing accidental\n * misidentification of arbitrary arrays as filter ASTs.\n *\n * @example\n * isFilterAST([\"status\", \"=\", \"active\"]) // true\n * isFilterAST([\"and\", [\"a\", \"=\", 1], [\"b\", \">\", 2]]) // true\n * isFilterAST([[\"a\", \"=\", 1], [\"b\", \"=\", 2]]) // true (legacy)\n * isFilterAST([1, 2, 3]) // false\n * isFilterAST(\"not an array\") // false\n * isFilterAST({ status: \"active\" }) // false\n */\nexport function isFilterAST(filter: unknown): boolean {\n if (!Array.isArray(filter) || filter.length === 0) return false;\n\n const first = filter[0];\n\n // Logical node: [\"and\", ...] or [\"or\", ...]\n if (typeof first === 'string') {\n const lower = first.toLowerCase();\n if (lower === 'and' || lower === 'or') {\n return filter.length >= 2 && filter.slice(1).every((child: unknown) => isFilterAST(child));\n }\n\n // Comparison node: [field, operator, value]\n if (filter.length >= 2 && typeof filter[1] === 'string') {\n return VALID_AST_OPERATORS.has(filter[1].toLowerCase());\n }\n }\n\n // Legacy flat array: [[cond], [cond], ...]\n if (filter.every((item: unknown) => isFilterAST(item))) {\n return filter.length > 0;\n }\n\n return false;\n}\n\n// ============================================================================\n// AST Array → FilterCondition Conversion\n// ============================================================================\n\n/**\n * Operator mapping from AST infix operators to FilterCondition `$`-prefixed operators.\n */\nconst AST_OPERATOR_MAP: Record<string, string> = {\n '=': '$eq',\n '==': '$eq',\n '!=': '$ne',\n '<>': '$ne',\n '>': '$gt',\n '>=': '$gte',\n '<': '$lt',\n '<=': '$lte',\n 'in': '$in',\n 'nin': '$nin',\n 'not_in': '$nin',\n 'contains': '$contains',\n 'notcontains': '$notContains',\n 'not_contains': '$notContains',\n 'like': '$contains',\n 'startswith': '$startsWith',\n 'starts_with': '$startsWith',\n 'endswith': '$endsWith',\n 'ends_with': '$endsWith',\n 'between': '$between',\n 'is_null': '$null',\n 'is_not_null': '$null',\n};\n\n/**\n * Convert a single AST comparison node `[field, operator, value]` to a FilterCondition object.\n */\nfunction convertComparison(node: [string, string, unknown]): FilterCondition {\n const [field, operator, value] = node;\n const op = operator.toLowerCase();\n\n // Special case: equality shorthand\n if (op === '=' || op === '==') {\n return { [field]: value } as FilterCondition;\n }\n\n // Null check operators\n if (op === 'is_null') {\n return { [field]: { $null: true } } as FilterCondition;\n }\n if (op === 'is_not_null') {\n return { [field]: { $null: false } } as FilterCondition;\n }\n\n const mapped = AST_OPERATOR_MAP[op];\n if (mapped) {\n return { [field]: { [mapped]: value } } as FilterCondition;\n }\n\n // Fallback: use the operator as-is with $ prefix\n return { [field]: { [`$${op}`]: value } } as FilterCondition;\n}\n\n/**\n * Parse a filter from AST array format to FilterCondition object format.\n *\n * The AST array format is used by the ObjectUI client and the `FilterBuilder`:\n * - Comparison: `[field, operator, value]` → `{ field: value }` or `{ field: { $op: value } }`\n * - Logical AND: `[\"and\", cond1, cond2, ...]` → `{ $and: [...] }`\n * - Logical OR: `[\"or\", cond1, cond2, ...]` → `{ $or: [...] }`\n *\n * If the input is already a FilterCondition object (not an array), it is returned as-is.\n * If the input is `null` or `undefined`, it is returned as-is.\n *\n * @example\n * // Simple condition\n * parseFilterAST([\"status\", \"=\", \"active\"])\n * // → { status: \"active\" }\n *\n * @example\n * // Compound AND\n * parseFilterAST([\"and\", [\"priority\", \"=\", \"high\"], [\"status\", \"=\", \"active\"]])\n * // → { $and: [{ priority: \"high\" }, { status: \"active\" }] }\n *\n * @example\n * // Object passthrough\n * parseFilterAST({ status: \"active\" })\n * // → { status: \"active\" }\n */\nexport function parseFilterAST(filter: unknown): FilterCondition | undefined {\n if (filter == null) return undefined;\n if (!Array.isArray(filter)) return filter as FilterCondition;\n if (filter.length === 0) return undefined;\n\n const first = filter[0];\n\n // Logical node: [\"and\", cond1, cond2, ...] or [\"or\", cond1, cond2, ...]\n if (typeof first === 'string' && (first.toLowerCase() === 'and' || first.toLowerCase() === 'or')) {\n const logicOp = `$${first.toLowerCase()}` as '$and' | '$or';\n const children = filter.slice(1).map((child: unknown) => parseFilterAST(child)).filter(Boolean) as FilterCondition[];\n if (children.length === 0) return undefined;\n if (children.length === 1) return children[0];\n return { [logicOp]: children } as FilterCondition;\n }\n\n // Comparison node: [field, operator, value]\n if (filter.length >= 2 && typeof first === 'string') {\n return convertComparison(filter as [string, string, unknown]);\n }\n\n // Legacy flat array: [[field, op, val], [field, op, val], ...]\n // All elements are sub-arrays → treat as implicit AND\n if (filter.every((item: unknown) => Array.isArray(item))) {\n const children = filter.map((child: unknown) => parseFilterAST(child)).filter(Boolean) as FilterCondition[];\n if (children.length === 0) return undefined;\n if (children.length === 1) return children[0];\n return { $and: children } as FilterCondition;\n }\n\n return undefined;\n}\n\n// ============================================================================\n// Constants & Metadata\n// ============================================================================\n\n/**\n * All supported operator keys.\n * Useful for validation and parsing.\n */\nexport const FILTER_OPERATORS = [\n // Equality\n '$eq', '$ne',\n // Comparison\n '$gt', '$gte', '$lt', '$lte',\n // Set & Range\n '$in', '$nin', '$between',\n // String\n '$contains', '$notContains', '$startsWith', '$endsWith',\n // Special\n '$null', '$exists',\n] as const;\n\n/**\n * Logical operator keys.\n */\nexport const LOGICAL_OPERATORS = ['$and', '$or', '$not'] as const;\n\n/**\n * All operator keys (field + logical).\n */\nexport const ALL_OPERATORS = [...FILTER_OPERATORS, ...LOGICAL_OPERATORS] as const;\n\nexport type FilterOperatorKey = typeof FILTER_OPERATORS[number];\nexport type LogicalOperatorKey = typeof LOGICAL_OPERATORS[number];\nexport type OperatorKey = typeof ALL_OPERATORS[number];\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { SortItemSchema } from '../shared/enums.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema } from './responsive.zod';\nimport {\n UserActionsConfigSchema,\n AppearanceConfigSchema,\n ViewTabSchema,\n ViewFilterRuleSchema,\n AddRecordConfigSchema,\n} from './view.zod';\n\n/**\n * Page Region Schema\n * A named region in the template where components are dropped.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PageRegionSchema = lazySchema(() => z.object({\n name: z.string().describe('Region name (e.g. \"sidebar\", \"main\", \"header\")'),\n width: z.enum(['small', 'medium', 'large', 'full']).optional(),\n components: z.array(z.lazy(() => PageComponentSchema)).describe('Components in this region')\n}));\n\n/**\n * Standard Page Component Types\n */\nexport const PageComponentType = z.enum([\n // Structure\n 'page:header', 'page:footer', 'page:sidebar', 'page:tabs', 'page:accordion', 'page:card', 'page:section',\n // Record Context\n 'record:details', 'record:highlights', 'record:related_list', 'record:activity', 'record:chatter', 'record:path',\n // Navigation\n 'app:launcher', 'nav:menu', 'nav:breadcrumb',\n // Utility\n 'global:search', 'global:notifications', 'user:profile',\n // AI\n 'ai:chat_window', 'ai:suggestion',\n // Content Elements (Airtable Interface parity)\n 'element:text', 'element:number', 'element:image', 'element:divider',\n // Interactive Elements (Phase B — Element Library)\n 'element:button', 'element:filter', 'element:form', 'element:record_picker'\n]);\n\n/**\n * Element Data Source Schema\n * Per-element data binding for multi-object pages.\n * Overrides page-level object context so each element can query a different object.\n */\nexport const ElementDataSourceSchema = lazySchema(() => z.object({\n object: z.string().describe('Object to query'),\n view: z.string().optional().describe('Named view to apply'),\n filter: FilterConditionSchema.optional().describe('Additional filter criteria'),\n sort: z.array(SortItemSchema).optional().describe('Sort order'),\n limit: z.number().int().positive().optional().describe('Max records to display'),\n}));\n\n/**\n * Page Component Schema\n * A configured instance of a UI component.\n */\nexport const PageComponentSchema = lazySchema(() => z.object({\n /** Definition */\n type: z.union([\n PageComponentType,\n z.string()\n ]).describe('Component Type (Standard enum or custom string)'),\n id: z.string().optional().describe('Unique instance ID'),\n \n /** Configuration */\n label: I18nLabelSchema.optional(),\n properties: z.record(z.string(), z.unknown()).describe('Component props passed to the widget. See component.zod.ts for schemas.'),\n \n /** \n * Event Handlers \n * Map event names to Action expressions.\n * \"onClick\": \"set_variable('userId', $event.id)\"\n * \"onRowSelect\": \"navigate_to('page_detail', { id: $event.id })\"\n */\n events: z.record(z.string(), z.string()).optional().describe('Event handlers map'),\n\n /** Appearance */\n style: z.record(z.string(), z.string()).optional().describe('Inline styles or utility classes'),\n className: z.string().optional().describe('CSS class names'),\n\n /** Visibility Rule */\n visibility: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n\n /** Per-element data binding, overrides page-level object context */\n dataSource: ElementDataSourceSchema.optional().describe('Per-element data binding for multi-object pages'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * Page Variable Schema\n * Defines local state for the page.\n * Variables can be bound to interactive elements (e.g. element:record_picker, element:filter).\n */\nexport const PageVariableSchema = lazySchema(() => z.object({\n name: z.string().describe('Variable name'),\n type: z.enum(['string', 'number', 'boolean', 'object', 'array', 'record_id']).default('string'),\n defaultValue: z.unknown().optional(),\n /** Source element binding (e.g. element:record_picker writes to this variable) */\n source: z.string().optional().describe('Component ID that writes to this variable'),\n}));\n\n/**\n * Blank Page Layout Item Schema\n * Positions a component on a free-form grid canvas.\n */\nexport const BlankPageLayoutItemSchema = lazySchema(() => z.object({\n componentId: z.string().describe('Reference to a PageComponent.id in the page'),\n x: z.number().int().min(0).describe('Grid column position (0-based)'),\n y: z.number().int().min(0).describe('Grid row position (0-based)'),\n width: z.number().int().min(1).describe('Width in grid columns'),\n height: z.number().int().min(1).describe('Height in grid rows'),\n}));\n\n/**\n * Blank Page Layout Schema\n * Free-form canvas composition with grid-based positioning.\n * Used when page type is 'blank' to enable drag-and-drop element placement.\n */\nexport const BlankPageLayoutSchema = lazySchema(() => z.object({\n columns: z.number().int().min(1).default(12).describe('Number of grid columns'),\n rowHeight: z.number().int().min(1).default(40).describe('Height of each grid row in pixels'),\n gap: z.number().int().min(0).default(8).describe('Gap between grid items in pixels'),\n items: z.array(BlankPageLayoutItemSchema).describe('Positioned components on the canvas'),\n}));\n\n/**\n * Page Type Schema\n * Unified page type enum covering both platform pages (Salesforce FlexiPage style)\n * and Airtable-inspired interface page types.\n *\n * **Disambiguation of similar types:**\n * - `record` vs `record_detail`: `record` is a component-based layout page (FlexiPage style with regions),\n * `record_detail` is a field-display page showing all fields of a single record (Airtable style).\n * Use `record` for custom record pages with regions/components, `record_detail` for auto-generated detail views.\n * - `home` vs `overview`: `home` is the platform-level landing page (tab landing),\n * `overview` is an interface-level navigation hub with links/instructions.\n * Use `home` for app-level landing, `overview` for in-interface navigation hubs.\n * - `app` vs `utility` vs `blank`: `app` is an app-level page with navigation context,\n * `utility` is a floating utility panel (e.g. notes, phone), `blank` is a free-form canvas\n * for custom composition. They serve distinct layout purposes.\n */\nexport const PageTypeSchema = lazySchema(() => z.enum([\n // Platform page types (Salesforce FlexiPage style)\n 'record', // Component-based record layout page with regions\n 'home', // Platform-level home/landing page\n 'app', // App-level page with navigation context\n 'utility', // Floating utility panel (e.g. notes, phone dialer)\n // Interface page types (Airtable Interface parity)\n 'dashboard', // KPI summary with charts/metrics\n 'grid', // Spreadsheet-like data table\n 'list', // Record list with quick actions\n 'gallery', // Card-based visual browsing\n 'kanban', // Status-based board\n 'calendar', // Date-based scheduling\n 'timeline', // Gantt-like project timeline\n 'form', // Data entry form\n 'record_detail', // Auto-generated single record field display\n 'record_review', // Sequential record review/approval\n 'overview', // Interface-level navigation/landing hub\n 'blank', // Free-form canvas for custom composition\n]).describe('Page type — platform or interface page types'));\n\n/**\n * Record Review Config Schema\n * Configuration for a sequential record review/approval page.\n * Users navigate through records one-by-one, taking actions (approve/reject/skip).\n * Only applicable when page type is 'record_review'.\n */\nexport const RecordReviewConfigSchema = lazySchema(() => z.object({\n object: z.string().describe('Target object for review'),\n filter: FilterConditionSchema.optional().describe('Filter criteria for review queue'),\n sort: z.array(SortItemSchema).optional().describe('Sort order for review queue'),\n displayFields: z.array(z.string()).optional()\n .describe('Fields to display on the review page'),\n actions: z.array(z.object({\n label: z.string().describe('Action button label'),\n type: z.enum(['approve', 'reject', 'skip', 'custom'])\n .describe('Action type'),\n field: z.string().optional()\n .describe('Field to update on action'),\n value: z.union([z.string(), z.number(), z.boolean()]).optional()\n .describe('Value to set on action'),\n nextRecord: z.boolean().optional().default(true)\n .describe('Auto-advance to next record after action'),\n })).describe('Review actions'),\n navigation: z.enum(['sequential', 'random', 'filtered'])\n .optional().default('sequential')\n .describe('Record navigation mode'),\n showProgress: z.boolean().optional().default(true)\n .describe('Show review progress indicator'),\n}));\n\n/**\n * Interface Page Configuration Schema (Airtable Interface parity)\n * Page-level declarative configuration for Airtable-style interface pages.\n * Covers title/data binding, levels, filter by, appearance, user actions,\n * tabs, record count, add record, and advanced options (printing).\n *\n * @see Airtable Interface → right panel (Page / Data / Appearance / User filters / User actions / Advanced)\n */\nexport const InterfacePageConfigSchema = lazySchema(() => z.object({\n /** Data binding */\n source: z.string().optional().describe('Source object name for the page'),\n levels: z.number().int().min(1).optional().describe('Number of hierarchy levels to display'),\n filterBy: z.array(ViewFilterRuleSchema).optional().describe('Page-level filter criteria'),\n\n /** Appearance */\n appearance: AppearanceConfigSchema.optional().describe('Appearance and visualization configuration'),\n\n /** User filters */\n userFilters: z.object({\n elements: z.array(z.enum(['grid', 'gallery', 'kanban'])).optional()\n .describe('Visualization element types available in user filter bar'),\n tabs: z.array(ViewTabSchema).optional().describe('User-configurable tabs'),\n }).optional().describe('User filter configuration'),\n\n /** User actions */\n userActions: UserActionsConfigSchema.optional().describe('User action toggles'),\n\n /** Add record */\n addRecord: AddRecordConfigSchema.optional().describe('Add record entry point configuration'),\n\n /** Record count */\n showRecordCount: z.boolean().optional().describe('Show record count at page bottom'),\n\n /** Advanced */\n allowPrinting: z.boolean().optional().describe('Allow users to print the page'),\n}).describe('Interface-level page configuration (Airtable parity)'));\n\n/**\n * Page Schema\n * Defines a composition of components for a specific context.\n * Supports both platform pages (Salesforce FlexiPage style: record, home, app, utility)\n * and interface pages (Airtable Interface style: dashboard, grid, kanban, record_review, etc.).\n * \n * **NAMING CONVENTION:**\n * Page names are used in routing and must be lowercase snake_case.\n * Prefix with 'page_' is recommended for clarity.\n * \n * @example Good page names\n * - 'page_dashboard'\n * - 'page_settings'\n * - 'home_page'\n * - 'record_detail'\n * \n * @example Bad page names (will be rejected)\n * - 'PageDashboard' (PascalCase)\n * - 'Settings Page' (spaces)\n */\nexport const PageSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Page unique name (lowercase snake_case)'),\n label: I18nLabelSchema,\n description: I18nLabelSchema.optional(),\n\n /** Icon (used in interface navigation) */\n icon: z.string().optional().describe('Page icon name'),\n \n /** Page Type */\n type: PageTypeSchema.default('record').describe('Page type'),\n \n /** Page State Definitions */\n variables: z.array(PageVariableSchema).optional().describe('Local page state variables'),\n\n /** Context */\n object: z.string().optional().describe('Bound object (for Record pages)'),\n\n /** Record Review Configuration (only for record_review pages) */\n recordReview: RecordReviewConfigSchema.optional()\n .describe('Record review configuration (required when type is \"record_review\")'),\n\n /** Blank Page Layout (only for blank pages) */\n blankLayout: BlankPageLayoutSchema.optional()\n .describe('Free-form grid layout for blank pages (used when type is \"blank\")'),\n \n /** Layout Template */\n template: z.string().default('default').describe('Layout template name (e.g. \"header-sidebar-main\")'),\n \n /** Regions & Content */\n regions: z.array(PageRegionSchema).describe('Defined regions with components'),\n \n /** Activation */\n isDefault: z.boolean().default(false),\n assignedProfiles: z.array(z.string()).optional(),\n\n /** Interface Page Configuration (Airtable Interface parity) */\n interfaceConfig: InterfacePageConfigSchema.optional()\n .describe('Interface-level page configuration (for Airtable-style interface pages)'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /**\n * Override semantics for record pages.\n *\n * - `\"full\"` (default): the schema fully describes the page.\n * - `\"slotted\"`: the schema only provides overrides for one or more\n * named slots (see `slots`). The default-page synthesizer fills\n * in every slot the author did NOT override. Useful when you want\n * to customize just the header / actions / one tab without\n * re-authoring the rest of the page.\n *\n * Only meaningful when `type === 'record'`. Ignored otherwise.\n */\n kind: z.enum(['full', 'slotted']).default('full')\n .describe('Page override mode: full (default) or slotted (partial overrides)'),\n\n /**\n * Slot override map for slotted record pages.\n *\n * Each slot accepts a single PageComponent or an array. Slots not\n * provided fall through to the synthesized default.\n *\n * Slot menu (v1): header | actions | highlights | details | tabs |\n * discussion. Each slot is a full replacement at the slot boundary —\n * no deep merge, no patch operations. To compose default + custom,\n * call the corresponding `buildDefault*` sub-builder from the\n * renderer runtime (e.g. @object-ui/plugin-detail).\n *\n * Only honored when `kind === 'slotted'`.\n */\n slots: z.object({\n header: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n actions: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n highlights: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n details: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n tabs: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n discussion: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n }).optional().describe('Slot override map for slotted pages'),\n}).superRefine((data, ctx) => {\n if (data.type === 'record_review' && !data.recordReview) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['recordReview'],\n message: 'recordReview is required when type is \"record_review\"',\n });\n }\n if (data.type === 'blank' && !data.blankLayout) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['blankLayout'],\n message: 'blankLayout is required when type is \"blank\"',\n });\n }\n if (data.kind === 'slotted' && !data.slots) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['slots'],\n message: 'slots is required when kind is \"slotted\"',\n });\n }\n}));\n\nexport type Page = z.infer<typeof PageSchema>;\nexport type PageType = z.infer<typeof PageTypeSchema>;\nexport type PageComponent = z.infer<typeof PageComponentSchema>;\nexport type PageRegion = z.infer<typeof PageRegionSchema>;\nexport type PageVariable = z.infer<typeof PageVariableSchema>;\nexport type ElementDataSource = z.infer<typeof ElementDataSourceSchema>;\nexport type RecordReviewConfig = z.infer<typeof RecordReviewConfigSchema>;\nexport type BlankPageLayoutItem = z.infer<typeof BlankPageLayoutItemSchema>;\nexport type BlankPageLayout = z.infer<typeof BlankPageLayoutSchema>;\nexport type InterfacePageConfig = z.infer<typeof InterfacePageConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Unified Chart Type Taxonomy\n * \n * Shared by Dashboard and Report widgets.\n * Provides a comprehensive set of chart types for data visualization.\n */\n\n/**\n * Chart Type Enum\n * Categorized by visualization purpose\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ChartTypeSchema = lazySchema(() => z.enum([\n // Comparison\n 'bar',\n 'horizontal-bar',\n 'column',\n 'grouped-bar',\n 'stacked-bar',\n 'bi-polar-bar',\n \n // Trend\n 'line',\n 'area',\n 'stacked-area',\n 'step-line',\n 'spline',\n \n // Distribution\n 'pie',\n 'donut',\n 'funnel',\n 'pyramid',\n \n // Relationship\n 'scatter',\n 'bubble',\n \n // Composition\n 'treemap',\n 'sunburst',\n 'sankey',\n 'word-cloud',\n \n // Performance\n 'gauge',\n 'solid-gauge',\n 'metric',\n 'kpi',\n 'bullet',\n \n // Geo\n 'choropleth',\n 'bubble-map',\n 'gl-map',\n \n // Advanced\n 'heatmap',\n 'radar',\n 'waterfall',\n 'box-plot',\n 'violin',\n 'candlestick',\n 'stock',\n \n // Tabular\n 'table',\n 'pivot',\n]));\n\nexport type ChartType = z.infer<typeof ChartTypeSchema>;\n\n/**\n * Chart Axis Schema\n * Definition for X and Y axes\n */\nexport const ChartAxisSchema = lazySchema(() => z.object({\n /** Data field to map to this axis */\n field: z.string().describe('Data field key'),\n \n /** Axis title */\n title: I18nLabelSchema.optional().describe('Axis display title'),\n\n /** Value formatting (d3-format or similar) */\n format: z.string().optional().describe('Value format string (e.g., \"$0,0.00\")'),\n \n /** Axis scale settings */\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n stepSize: z.number().optional().describe('Step size for ticks'),\n \n /** Appearance */\n showGridLines: z.boolean().default(true),\n position: z.enum(['left', 'right', 'top', 'bottom']).optional().describe('Axis position'),\n \n /** Logarithmic scale */\n logarithmic: z.boolean().default(false),\n}));\n\n/**\n * Chart Series Schema\n * Defines a single data series in the chart\n */\nexport const ChartSeriesSchema = lazySchema(() => z.object({\n /** Field name for values */\n name: z.string().describe('Field name or series identifier'),\n \n /** Display label */\n label: I18nLabelSchema.optional().describe('Series display label'),\n \n /** Series type override (combo charts) */\n type: ChartTypeSchema.optional().describe('Override chart type for this series'),\n \n /** Specific color */\n color: z.string().optional().describe('Series color (hex/rgb/token)'),\n \n /** Stacking group */\n stack: z.string().optional().describe('Stack identifier to group series'),\n \n /** Axis binding */\n yAxis: z.enum(['left', 'right']).default('left').describe('Bind to specific Y-Axis'),\n}));\n\n/**\n * Chart Annotation Schema\n * Static lines or regions to highlight data\n */\nexport const ChartAnnotationSchema = lazySchema(() => z.object({\n type: z.enum(['line', 'region']).default('line'),\n axis: z.enum(['x', 'y']).default('y'),\n value: z.union([z.number(), z.string()]).describe('Start value'),\n endValue: z.union([z.number(), z.string()]).optional().describe('End value for regions'),\n color: z.string().optional(),\n label: I18nLabelSchema.optional(),\n style: z.enum(['solid', 'dashed', 'dotted']).default('dashed'),\n}));\n\n/**\n * Chart Interaction Schema\n */\nexport const ChartInteractionSchema = lazySchema(() => z.object({\n tooltips: z.boolean().default(true),\n zoom: z.boolean().default(false),\n brush: z.boolean().default(false),\n clickAction: z.string().optional().describe('Action ID to trigger on click'),\n}));\n\n/**\n * Chart Configuration Base\n * Common configuration for all chart types\n */\nexport const ChartConfigSchema = lazySchema(() => z.object({\n /** Chart Type */\n type: ChartTypeSchema,\n \n /** Titles */\n title: I18nLabelSchema.optional().describe('Chart title'),\n subtitle: I18nLabelSchema.optional().describe('Chart subtitle'),\n description: I18nLabelSchema.optional().describe('Accessibility description'),\n \n /** Axes Mapping */\n xAxis: ChartAxisSchema.optional().describe('X-Axis configuration'),\n yAxis: z.array(ChartAxisSchema).optional().describe('Y-Axis configuration (support dual axis)'),\n \n /** Series Configuration */\n series: z.array(ChartSeriesSchema).optional().describe('Defined series configuration'),\n \n /** Appearance */\n colors: z.array(z.string()).optional().describe('Color palette'),\n height: z.number().optional().describe('Fixed height in pixels'),\n \n /** Components */\n showLegend: z.boolean().default(true).describe('Display legend'),\n showDataLabels: z.boolean().default(false).describe('Display data labels'),\n \n /** Annotations & Reference Lines */\n annotations: z.array(ChartAnnotationSchema).optional(),\n \n /** Interactions */\n interaction: ChartInteractionSchema.optional(),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport type ChartConfig = z.infer<typeof ChartConfigSchema>;\nexport type ChartAxis = z.infer<typeof ChartAxisSchema>;\nexport type ChartSeries = z.infer<typeof ChartSeriesSchema>;\nexport type ChartAnnotation = z.infer<typeof ChartAnnotationSchema>;\nexport type ChartInteraction = z.infer<typeof ChartInteractionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ChartTypeSchema, ChartConfigSchema } from './chart.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Color variant for dashboard widgets (e.g., KPI cards).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WidgetColorVariantSchema = lazySchema(() => z.enum([\n 'default',\n 'blue',\n 'teal',\n 'orange',\n 'purple',\n 'success',\n 'warning',\n 'danger',\n]).describe('Widget color variant'));\n\n/**\n * Action type for widget action buttons.\n */\nexport const WidgetActionTypeSchema = lazySchema(() => z.enum([\n 'script',\n 'url',\n 'modal',\n 'flow',\n 'api',\n]).describe('Widget action type'));\n\n/**\n * Dashboard Header Action Schema\n * An action button displayed in the dashboard header area.\n */\nexport const DashboardHeaderActionSchema = lazySchema(() => z.object({\n /** Action label */\n label: I18nLabelSchema.describe('Action button label'),\n\n /** Action URL or target */\n actionUrl: z.string().describe('URL or target for the action'),\n\n /** Action type */\n actionType: WidgetActionTypeSchema.optional().describe('Type of action'),\n\n /** Icon identifier */\n icon: z.string().optional().describe('Icon identifier for the action button'),\n}).describe('Dashboard header action'));\n\n/**\n * Dashboard Header Schema\n * Structured header configuration for the dashboard.\n */\nexport const DashboardHeaderSchema = lazySchema(() => z.object({\n /** Whether to show the dashboard title in the header */\n showTitle: z.boolean().default(true).describe('Show dashboard title in header'),\n\n /** Whether to show the dashboard description in the header */\n showDescription: z.boolean().default(true).describe('Show dashboard description in header'),\n\n /** Action buttons displayed in the header */\n actions: z.array(DashboardHeaderActionSchema).optional().describe('Header action buttons'),\n}).describe('Dashboard header configuration'));\n\n/**\n * Widget Measure Schema\n * A single measure definition for multi-measure pivot/matrix widgets.\n */\nexport const WidgetMeasureSchema = lazySchema(() => z.object({\n /** Value field to aggregate */\n valueField: z.string().describe('Field to aggregate'),\n\n /** Aggregate function */\n aggregate: z.enum(['count', 'sum', 'avg', 'min', 'max']).default('count').describe('Aggregate function'),\n\n /** Display label for the measure */\n label: I18nLabelSchema.optional().describe('Measure display label'),\n\n /** Number format string (e.g., \"$0,0.00\", \"0.0%\") */\n format: z.string().optional().describe('Number format string'),\n}).describe('Widget measure definition'));\n\n/**\n * Dashboard Widget Schema\n * A single component on the dashboard grid.\n */\nexport const DashboardWidgetSchema = lazySchema(() => z.object({\n /** Unique widget identifier (snake_case, used for targetWidgets references) */\n id: SnakeCaseIdentifierSchema.describe('Unique widget identifier (snake_case)'),\n\n /** Widget Title */\n title: I18nLabelSchema.optional().describe('Widget title'),\n\n /** Widget Description (displayed below the title) */\n description: I18nLabelSchema.optional().describe('Widget description text below the header'),\n \n /** Visualization Type */\n type: ChartTypeSchema.default('metric').describe('Visualization type'),\n \n /** Chart Configuration */\n chartConfig: ChartConfigSchema.optional().describe('Chart visualization configuration'),\n\n /** Color variant for the widget (e.g., KPI card accent color) */\n colorVariant: WidgetColorVariantSchema.optional().describe('Widget color variant for theming'),\n\n /**\n * Runtime capability gate — widget is hidden when the named object is\n * not registered in the runtime's SchemaRegistry. Mirrors\n * `NavigationItem.requiresObject` so cloud-only widgets (e.g. those\n * keyed on `sys_app` / `sys_package_installation`) silently disappear\n * in single-project runtimes instead of rendering a 404 error.\n *\n * Defaults to the widget's `object` field when not explicitly set —\n * any widget that targets an object will be gated on that object's\n * registration. Set this to a different value (or empty string to\n * disable) when the widget should appear even if its `object` is\n * unavailable.\n */\n requiresObject: z.string().optional().describe('Hide the widget unless the named object is registered'),\n\n /**\n * Runtime capability gate — widget is hidden when the named kernel\n * service is not registered. Mirrors `NavigationItem.requiresService`.\n */\n requiresService: z.string().optional().describe('Hide the widget unless the named kernel service is registered'),\n\n /** Action URL for the widget header action button */\n actionUrl: z.string().optional().describe('URL or target for the widget action button'),\n\n /** Action type for the widget header action button */\n actionType: WidgetActionTypeSchema.optional().describe('Type of action for the widget action button'),\n\n /** Icon for the widget header action button */\n actionIcon: z.string().optional().describe('Icon identifier for the widget action button'),\n \n /** Data Source Object */\n object: z.string().optional().describe('Data source object name'),\n \n /** Data Filter (MongoDB-style FilterCondition) */\n filter: FilterConditionSchema.optional().describe('Data filter criteria'),\n \n /** Category Field (X-Axis / Group By) */\n categoryField: z.string().optional().describe('Field for grouping (X-Axis)'),\n \n /** Value Field (Y-Axis) */\n valueField: z.string().optional().describe('Field for values (Y-Axis)'),\n \n /** Aggregate operation */\n aggregate: z.enum(['count', 'sum', 'avg', 'min', 'max']).optional().default('count').describe('Aggregate function'),\n \n /** Multi-measure definitions for pivot/matrix widgets */\n measures: z.array(WidgetMeasureSchema).optional().describe('Multiple measures for pivot/matrix analysis'),\n \n /** \n * Layout Position (React-Grid-Layout style)\n * x: column (0-11)\n * y: row\n * w: width (1-12)\n * h: height\n */\n layout: z.object({\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n }).describe('Grid layout position'),\n \n /** Widget specific options (colors, legend, etc.) */\n options: z.unknown().optional().describe('Widget specific configuration'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * Dynamic options binding for global filters.\n * Allows dropdown options to be fetched from an object at runtime.\n */\nexport const GlobalFilterOptionsFromSchema = lazySchema(() => z.object({\n /** Source object name to fetch options from */\n object: z.string().describe('Source object name'),\n\n /** Field to use as option value */\n valueField: z.string().describe('Field to use as option value'),\n\n /** Field to use as option label */\n labelField: z.string().describe('Field to use as option label'),\n\n /** Optional filter to apply when fetching options */\n filter: FilterConditionSchema.optional().describe('Filter to apply to source object'),\n}).describe('Dynamic filter options from object'));\n\n/**\n * Global Filter Schema\n * Defines a single global filter control for the dashboard filter bar.\n */\nexport const GlobalFilterSchema = lazySchema(() => z.object({\n /** Field name to filter on */\n field: z.string().describe('Field name to filter on'),\n\n /** Display label for the filter */\n label: I18nLabelSchema.optional().describe('Display label for the filter'),\n\n /** Filter input type */\n type: z.enum(['text', 'select', 'date', 'number', 'lookup']).optional().describe('Filter input type'),\n\n /** Static options for select/lookup filters */\n options: z.array(z.object({\n value: z.union([z.string(), z.number(), z.boolean()]).describe('Option value'),\n label: I18nLabelSchema,\n })).optional().describe('Static filter options'),\n\n /** Dynamic data binding for filter options */\n optionsFrom: GlobalFilterOptionsFromSchema.optional().describe('Dynamic filter options from object'),\n\n /** Default filter value */\n defaultValue: z.union([z.string(), z.number(), z.boolean()]).optional().describe('Default filter value'),\n\n /** Filter application scope */\n scope: z.enum(['dashboard', 'widget']).default('dashboard').describe('Filter application scope'),\n\n /** Widget IDs to apply this filter to (when scope is widget) */\n targetWidgets: z.array(z.string()).optional().describe('Widget IDs to apply this filter to'),\n}));\n\n/**\n * Dashboard Schema\n * Represents a page containing multiple visualizations.\n * \n * @example Sales Executive Dashboard\n * {\n * name: \"sales_overview\",\n * label: \"Sales Executive Overview\",\n * widgets: [\n * {\n * title: \"Total Pipe\",\n * type: \"metric\",\n * object: \"opportunity\",\n * valueField: \"amount\",\n * aggregate: \"sum\",\n * layout: { x: 0, y: 0, w: 3, h: 2 }\n * },\n * {\n * title: \"Revenue by Region\",\n * type: \"bar\",\n * object: \"order\",\n * categoryField: \"region\",\n * valueField: \"total\",\n * aggregate: \"sum\",\n * layout: { x: 3, y: 0, w: 6, h: 4 }\n * }\n * ]\n * }\n */\nexport const DashboardSchema = lazySchema(() => z.object({\n /** Machine name */\n name: SnakeCaseIdentifierSchema.describe('Dashboard unique name'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Dashboard label'),\n \n /** Description */\n description: I18nLabelSchema.optional().describe('Dashboard description'),\n\n /** Structured header configuration */\n header: DashboardHeaderSchema.optional().describe('Dashboard header configuration'),\n \n /** Collection of widgets */\n widgets: z.array(DashboardWidgetSchema).describe('Widgets to display'),\n\n /** Grid column count — defaults to 12 for a standard 12-column grid */\n columns: z.number().int().min(1).max(24).optional().describe('Number of grid columns (default 12)'),\n\n /** Grid gap in Tailwind spacing units (e.g. 4 = 1rem) */\n gap: z.number().int().min(0).optional().describe('Grid gap in Tailwind spacing units'),\n\n /** Auto-refresh */\n refreshInterval: z.number().optional().describe('Auto-refresh interval in seconds'),\n\n /** Dashboard Date Range (Global time filter) */\n dateRange: z.object({\n field: z.string().optional().describe('Default date field name for time-based filtering'),\n defaultRange: z.enum(['today', 'yesterday', 'this_week', 'last_week', 'this_month', 'last_month', 'this_quarter', 'last_quarter', 'this_year', 'last_year', 'last_7_days', 'last_30_days', 'last_90_days', 'custom']).default('this_month').describe('Default date range preset'),\n allowCustomRange: z.boolean().default(true).describe('Allow users to pick a custom date range'),\n }).optional().describe('Global dashboard date range filter configuration'),\n\n /** Global Filters */\n globalFilters: z.array(GlobalFilterSchema).optional().describe('Global filters that apply to all widgets in the dashboard'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n}));\n\nexport type Dashboard = z.infer<typeof DashboardSchema>;\nexport type DashboardInput = z.input<typeof DashboardSchema>;\nexport type DashboardWidget = z.infer<typeof DashboardWidgetSchema>;\nexport type DashboardHeader = z.infer<typeof DashboardHeaderSchema>;\nexport type DashboardHeaderAction = z.infer<typeof DashboardHeaderActionSchema>;\nexport type WidgetMeasure = z.infer<typeof WidgetMeasureSchema>;\nexport type WidgetColorVariant = z.infer<typeof WidgetColorVariantSchema>;\nexport type WidgetActionType = z.infer<typeof WidgetActionTypeSchema>;\nexport type GlobalFilter = z.infer<typeof GlobalFilterSchema>;\nexport type GlobalFilterOptionsFrom = z.infer<typeof GlobalFilterOptionsFromSchema>;\n\n/**\n * Dashboard Factory Helper\n */\nexport const Dashboard = {\n create: (config: z.input<typeof DashboardSchema>): Dashboard => DashboardSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ChartConfigSchema } from './chart.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Report Type Enum\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ReportType = z.enum([\n 'tabular', // Simple list\n 'summary', // Grouped by row\n 'matrix', // Grouped by row and column\n 'joined' // Joined multiple blocks\n]);\n\n/**\n * Report Column Schema\n */\nexport const ReportColumnSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name'),\n label: I18nLabelSchema.optional().describe('Override label'),\n aggregate: z.enum(['sum', 'avg', 'max', 'min', 'count', 'unique']).optional().describe('Aggregation function'),\n /** Responsive visibility/priority per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive visibility for this column'),\n}));\n\n/**\n * Report Grouping Schema\n */\nexport const ReportGroupingSchema = lazySchema(() => z.object({\n field: z.string().describe('Field to group by'),\n sortOrder: z.enum(['asc', 'desc']).default('asc'),\n dateGranularity: z.enum(['day', 'week', 'month', 'quarter', 'year']).optional().describe('For date fields'),\n}));\n\n/**\n * Report Chart Schema\n * Embedded visualization configuration using unified chart taxonomy.\n */\nexport const ReportChartSchema = lazySchema(() => ChartConfigSchema.extend({\n /** Report-specific chart configuration */\n xAxis: z.string().describe('Grouping field for X-Axis'),\n yAxis: z.string().describe('Summary field for Y-Axis'),\n groupBy: z.string().optional().describe('Additional grouping field'),\n}));\n\n/**\n * Joined Report Block Schema\n *\n * Represents a single sub-report inside a `type: 'joined'` report. Each block\n * is a self-contained, independently-queried report stacked vertically (or\n * arranged in a grid) inside the joined container. Blocks are used for\n * comparative dashboards where each panel is a different slice of the same\n * domain — e.g. \"new customers / churned / silent\" in a customer-churn\n * report, or \"new / qualified / closed\" in a lead-funnel report.\n *\n * Blocks may declare their own filter (combined with the container filter\n * via `$and` at render time) and their own grouping / aggregation.\n *\n * Notes for implementers:\n * - `type` defaults to `tabular` — leave a block's type implicit if the\n * sub-report is just a list. Set explicitly to `summary` or `matrix` for\n * aggregated blocks.\n * - The schema is intentionally permissive about the column shape: blocks\n * are not allowed to be themselves `joined` (no recursion).\n */\nexport const JoinedReportBlockSchema: z.ZodTypeAny = lazySchema(() => z.object({\n /** Stable id for the block (used as react key, telemetry, deeplinks). */\n name: SnakeCaseIdentifierSchema,\n /** Human label shown above the block. Falls back to `name`. */\n label: I18nLabelSchema.optional(),\n /** Optional description rendered below the label. */\n description: I18nLabelSchema.optional(),\n /** Block report type — `joined` is intentionally excluded (no recursion). */\n type: z.enum(['tabular', 'summary', 'matrix']).default('tabular'),\n /** Object queried by this block. Defaults to the container's objectName. */\n objectName: z.string().optional(),\n /** Columns to display / aggregate. Same shape as `Report.columns`. */\n columns: z.array(ReportColumnSchema),\n /** Row groupings (same shape as `Report.groupingsDown`). */\n groupingsDown: z.array(ReportGroupingSchema).optional(),\n /** Column groupings — only meaningful when `type: matrix`. */\n groupingsAcross: z.array(ReportGroupingSchema).optional(),\n /** Block-specific filter, ANDed with the container filter at render time. */\n filter: FilterConditionSchema.optional(),\n /** Optional inline chart configuration. */\n chart: ReportChartSchema.optional(),\n}));\n\n/**\n * Report Schema\n * Deep data analysis definition.\n */\nexport const ReportSchema = lazySchema(() => z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Report unique name'),\n label: I18nLabelSchema.describe('Report label'),\n description: I18nLabelSchema.optional(),\n \n /** Data Source */\n objectName: z.string().describe('Primary object'),\n \n /** Report Configuration */\n type: ReportType.default('tabular').describe('Report format type'),\n \n columns: z.array(ReportColumnSchema).describe('Columns to display'),\n \n /** Grouping (for Summary/Matrix) */\n groupingsDown: z.array(ReportGroupingSchema).optional().describe('Row groupings'),\n groupingsAcross: z.array(ReportGroupingSchema).optional().describe('Column groupings (Matrix only)'),\n \n /** Filtering (MongoDB-style FilterCondition) */\n filter: FilterConditionSchema.optional().describe('Filter criteria'),\n \n /** Visualization */\n chart: ReportChartSchema.optional().describe('Embedded chart configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n\n /**\n * Joined report blocks — only meaningful when `type: 'joined'`.\n *\n * A joined report renders multiple independent sub-reports stacked\n * vertically in the same view. Each block declares its own object,\n * columns, groupings and filter. The container-level `filter` is ANDed\n * into every block at query time so a top-level scope (e.g. \"this\n * quarter\") flows down without per-block duplication.\n *\n * Renderers must ignore `blocks` when `type !== 'joined'`.\n */\n blocks: z.array(JoinedReportBlockSchema).optional().describe('Sub-reports for type=joined'),\n}));\n\nexport type JoinedReportBlock = z.infer<typeof JoinedReportBlockSchema>;\nexport type JoinedReportBlockInput = z.input<typeof JoinedReportBlockSchema>;\n\n/**\n * Report Types\n * \n * Note: For configuration/definition contexts, use the Input types (e.g., ReportInput)\n * which allow optional fields with defaults to be omitted.\n */\nexport type Report = z.infer<typeof ReportSchema>;\nexport type ReportColumn = z.infer<typeof ReportColumnSchema>;\nexport type ReportGrouping = z.infer<typeof ReportGroupingSchema>;\nexport type ReportChart = z.infer<typeof ReportChartSchema>;\n\n/**\n * Input Types for Report Configuration\n * Use these when defining reports in configuration files.\n */\nexport type ReportInput = z.input<typeof ReportSchema>;\nexport type ReportColumnInput = z.input<typeof ReportColumnSchema>;\nexport type ReportGroupingInput = z.input<typeof ReportGroupingSchema>;\nexport type ReportChartInput = z.input<typeof ReportChartSchema>;\n\n/**\n * Report Factory Helper\n */\nexport const Report = {\n create: (config: ReportInput): Report => ReportSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Touch Target Configuration Schema\n * Ensures touch targets meet WCAG 2.5.5 minimum size requirements (44x44px).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const TouchTargetConfigSchema = lazySchema(() => z.object({\n minWidth: z.number().default(44).describe('Minimum touch target width in pixels (WCAG 2.5.5: 44px)'),\n minHeight: z.number().default(44).describe('Minimum touch target height in pixels (WCAG 2.5.5: 44px)'),\n padding: z.number().optional().describe('Additional padding around touch target in pixels'),\n hitSlop: z.object({\n top: z.number().optional().describe('Extra hit area above the element'),\n right: z.number().optional().describe('Extra hit area to the right of the element'),\n bottom: z.number().optional().describe('Extra hit area below the element'),\n left: z.number().optional().describe('Extra hit area to the left of the element'),\n }).optional().describe('Invisible hit area extension beyond the visible bounds'),\n}).describe('Touch target sizing configuration (WCAG accessible)'));\n\nexport type TouchTargetConfig = z.infer<typeof TouchTargetConfigSchema>;\n\n/**\n * Gesture Type Enum\n * Supported touch gesture types.\n */\nexport const GestureTypeSchema = lazySchema(() => z.enum([\n 'swipe',\n 'pinch',\n 'long_press',\n 'double_tap',\n 'drag',\n 'rotate',\n 'pan',\n]).describe('Touch gesture type'));\n\nexport type GestureType = z.infer<typeof GestureTypeSchema>;\n\n/**\n * Swipe Direction Enum\n */\nexport const SwipeDirectionSchema = lazySchema(() => z.enum(['up', 'down', 'left', 'right']));\n\nexport type SwipeDirection = z.infer<typeof SwipeDirectionSchema>;\n\n/**\n * Swipe Gesture Configuration Schema\n */\nexport const SwipeGestureConfigSchema = lazySchema(() => z.object({\n direction: z.array(SwipeDirectionSchema).describe('Allowed swipe directions'),\n threshold: z.number().optional().describe('Minimum distance in pixels to recognize swipe'),\n velocity: z.number().optional().describe('Minimum velocity (px/ms) to trigger swipe'),\n}).describe('Swipe gesture recognition settings'));\n\nexport type SwipeGestureConfig = z.infer<typeof SwipeGestureConfigSchema>;\n\n/**\n * Pinch Gesture Configuration Schema\n */\nexport const PinchGestureConfigSchema = lazySchema(() => z.object({\n minScale: z.number().optional().describe('Minimum scale factor (e.g., 0.5 for 50%)'),\n maxScale: z.number().optional().describe('Maximum scale factor (e.g., 3.0 for 300%)'),\n}).describe('Pinch/zoom gesture recognition settings'));\n\nexport type PinchGestureConfig = z.infer<typeof PinchGestureConfigSchema>;\n\n/**\n * Long Press Gesture Configuration Schema\n */\nexport const LongPressGestureConfigSchema = lazySchema(() => z.object({\n duration: z.number().default(500).describe('Hold duration in milliseconds to trigger long press'),\n moveTolerance: z.number().optional().describe('Max movement in pixels allowed during press'),\n}).describe('Long press gesture recognition settings'));\n\nexport type LongPressGestureConfig = z.infer<typeof LongPressGestureConfigSchema>;\n\n/**\n * Gesture Configuration Schema\n * Unified configuration for all supported gesture types.\n */\nexport const GestureConfigSchema = lazySchema(() => z.object({\n type: GestureTypeSchema.describe('Gesture type to configure'),\n label: I18nLabelSchema.optional().describe('Descriptive label for the gesture action'),\n enabled: z.boolean().default(true).describe('Whether this gesture is active'),\n swipe: SwipeGestureConfigSchema.optional().describe('Swipe gesture settings (when type is swipe)'),\n pinch: PinchGestureConfigSchema.optional().describe('Pinch gesture settings (when type is pinch)'),\n longPress: LongPressGestureConfigSchema.optional().describe('Long press settings (when type is long_press)'),\n}).describe('Per-gesture configuration'));\n\nexport type GestureConfig = z.infer<typeof GestureConfigSchema>;\n\n/**\n * Touch Interaction Schema\n * Top-level touch and gesture interaction configuration for a component.\n */\nexport const TouchInteractionSchema = lazySchema(() => z.object({\n gestures: z.array(GestureConfigSchema).optional().describe('Configured gesture recognizers'),\n touchTarget: TouchTargetConfigSchema.optional().describe('Touch target sizing and hit area'),\n hapticFeedback: z.boolean().optional().describe('Enable haptic feedback on touch interactions'),\n}).merge(AriaPropsSchema.partial()).describe('Touch and gesture interaction configuration'));\n\nexport type TouchInteraction = z.infer<typeof TouchInteractionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Focus Trap Configuration Schema\n * Constrains keyboard focus within a specific container (e.g., modals, dialogs).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FocusTrapConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable focus trapping within this container'),\n initialFocus: z.string().optional().describe('CSS selector for the element to focus on activation'),\n returnFocus: z.boolean().default(true).describe('Return focus to trigger element on deactivation'),\n escapeDeactivates: z.boolean().default(true).describe('Allow Escape key to deactivate the focus trap'),\n}).describe('Focus trap configuration for modal-like containers'));\n\nexport type FocusTrapConfig = z.infer<typeof FocusTrapConfigSchema>;\n\n/**\n * Keyboard Shortcut Schema\n * Defines a single keyboard shortcut binding.\n */\nexport const KeyboardShortcutSchema = lazySchema(() => z.object({\n key: z.string().describe('Key combination (e.g., \"Ctrl+S\", \"Alt+N\", \"Escape\")'),\n action: z.string().describe('Action identifier to invoke when shortcut is triggered'),\n description: I18nLabelSchema.optional().describe('Human-readable description of what the shortcut does'),\n scope: z.enum(['global', 'view', 'form', 'modal', 'list']).default('global')\n .describe('Scope in which this shortcut is active'),\n}).describe('Keyboard shortcut binding'));\n\nexport type KeyboardShortcut = z.infer<typeof KeyboardShortcutSchema>;\n\n/**\n * Focus Management Schema\n * Controls tab order, focus visibility, and navigation behavior.\n */\nexport const FocusManagementSchema = lazySchema(() => z.object({\n tabOrder: z.enum(['auto', 'manual']).default('auto')\n .describe('Tab order strategy: auto (DOM order) or manual (explicit tabIndex)'),\n skipLinks: z.boolean().default(false).describe('Provide skip-to-content navigation links'),\n focusVisible: z.boolean().default(true).describe('Show visible focus indicators for keyboard users'),\n focusTrap: FocusTrapConfigSchema.optional().describe('Focus trap settings'),\n arrowNavigation: z.boolean().default(false)\n .describe('Enable arrow key navigation between focusable items'),\n}).describe('Focus and tab navigation management'));\n\nexport type FocusManagement = z.infer<typeof FocusManagementSchema>;\n\n/**\n * Keyboard Navigation Configuration Schema\n * Top-level keyboard navigation and shortcut configuration.\n */\nexport const KeyboardNavigationConfigSchema = lazySchema(() => z.object({\n shortcuts: z.array(KeyboardShortcutSchema).optional().describe('Registered keyboard shortcuts'),\n focusManagement: FocusManagementSchema.optional().describe('Focus and tab order management'),\n rovingTabindex: z.boolean().default(false)\n .describe('Enable roving tabindex pattern for composite widgets'),\n}).merge(AriaPropsSchema.partial()).describe('Keyboard navigation and shortcut configuration'));\n\nexport type KeyboardNavigationConfig = z.infer<typeof KeyboardNavigationConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { TouchTargetConfigSchema } from './touch.zod';\nimport { FocusManagementSchema } from './keyboard.zod';\n\n/**\n * Color Palette Schema\n * Defines brand colors and their variants.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ColorPaletteSchema = lazySchema(() => z.object({\n primary: z.string().describe('Primary brand color (hex, rgb, or hsl)'),\n secondary: z.string().optional().describe('Secondary brand color'),\n accent: z.string().optional().describe('Accent color for highlights'),\n success: z.string().optional().describe('Success state color (default: green)'),\n warning: z.string().optional().describe('Warning state color (default: yellow)'),\n error: z.string().optional().describe('Error state color (default: red)'),\n info: z.string().optional().describe('Info state color (default: blue)'),\n \n // Neutral colors\n background: z.string().optional().describe('Background color'),\n surface: z.string().optional().describe('Surface/card background color'),\n text: z.string().optional().describe('Primary text color'),\n textSecondary: z.string().optional().describe('Secondary text color'),\n border: z.string().optional().describe('Border color'),\n disabled: z.string().optional().describe('Disabled state color'),\n \n // Color variants (shades)\n primaryLight: z.string().optional().describe('Lighter shade of primary'),\n primaryDark: z.string().optional().describe('Darker shade of primary'),\n secondaryLight: z.string().optional().describe('Lighter shade of secondary'),\n secondaryDark: z.string().optional().describe('Darker shade of secondary'),\n}));\n\n/**\n * Typography Settings Schema\n * Font families, sizes, weights, and line heights.\n */\nexport const TypographySchema = lazySchema(() => z.object({\n fontFamily: z.object({\n base: z.string().optional().describe('Base font family (default: system fonts)'),\n heading: z.string().optional().describe('Heading font family'),\n mono: z.string().optional().describe('Monospace font family for code'),\n }).optional(),\n \n fontSize: z.object({\n xs: z.string().optional().describe('Extra small font size (e.g., 0.75rem)'),\n sm: z.string().optional().describe('Small font size (e.g., 0.875rem)'),\n base: z.string().optional().describe('Base font size (e.g., 1rem)'),\n lg: z.string().optional().describe('Large font size (e.g., 1.125rem)'),\n xl: z.string().optional().describe('Extra large font size (e.g., 1.25rem)'),\n '2xl': z.string().optional().describe('2X large font size (e.g., 1.5rem)'),\n '3xl': z.string().optional().describe('3X large font size (e.g., 1.875rem)'),\n '4xl': z.string().optional().describe('4X large font size (e.g., 2.25rem)'),\n }).optional(),\n \n fontWeight: z.object({\n light: z.number().optional().describe('Light weight (default: 300)'),\n normal: z.number().optional().describe('Normal weight (default: 400)'),\n medium: z.number().optional().describe('Medium weight (default: 500)'),\n semibold: z.number().optional().describe('Semibold weight (default: 600)'),\n bold: z.number().optional().describe('Bold weight (default: 700)'),\n }).optional(),\n \n lineHeight: z.object({\n tight: z.string().optional().describe('Tight line height (e.g., 1.25)'),\n normal: z.string().optional().describe('Normal line height (e.g., 1.5)'),\n relaxed: z.string().optional().describe('Relaxed line height (e.g., 1.75)'),\n loose: z.string().optional().describe('Loose line height (e.g., 2)'),\n }).optional(),\n \n letterSpacing: z.object({\n tighter: z.string().optional().describe('Tighter letter spacing (e.g., -0.05em)'),\n tight: z.string().optional().describe('Tight letter spacing (e.g., -0.025em)'),\n normal: z.string().optional().describe('Normal letter spacing (e.g., 0)'),\n wide: z.string().optional().describe('Wide letter spacing (e.g., 0.025em)'),\n wider: z.string().optional().describe('Wider letter spacing (e.g., 0.05em)'),\n }).optional(),\n}));\n\n/**\n * Spacing Units Schema\n * Defines spacing scale for margins, padding, gaps.\n */\nexport const SpacingSchema = lazySchema(() => z.object({\n '0': z.string().optional().describe('0 spacing (0)'),\n '1': z.string().optional().describe('Spacing unit 1 (e.g., 0.25rem)'),\n '2': z.string().optional().describe('Spacing unit 2 (e.g., 0.5rem)'),\n '3': z.string().optional().describe('Spacing unit 3 (e.g., 0.75rem)'),\n '4': z.string().optional().describe('Spacing unit 4 (e.g., 1rem)'),\n '5': z.string().optional().describe('Spacing unit 5 (e.g., 1.25rem)'),\n '6': z.string().optional().describe('Spacing unit 6 (e.g., 1.5rem)'),\n '8': z.string().optional().describe('Spacing unit 8 (e.g., 2rem)'),\n '10': z.string().optional().describe('Spacing unit 10 (e.g., 2.5rem)'),\n '12': z.string().optional().describe('Spacing unit 12 (e.g., 3rem)'),\n '16': z.string().optional().describe('Spacing unit 16 (e.g., 4rem)'),\n '20': z.string().optional().describe('Spacing unit 20 (e.g., 5rem)'),\n '24': z.string().optional().describe('Spacing unit 24 (e.g., 6rem)'),\n}));\n\n/**\n * Border Radius Schema\n * Rounded corners configuration.\n */\nexport const BorderRadiusSchema = lazySchema(() => z.object({\n none: z.string().optional().describe('No border radius (0)'),\n sm: z.string().optional().describe('Small border radius (e.g., 0.125rem)'),\n base: z.string().optional().describe('Base border radius (e.g., 0.25rem)'),\n md: z.string().optional().describe('Medium border radius (e.g., 0.375rem)'),\n lg: z.string().optional().describe('Large border radius (e.g., 0.5rem)'),\n xl: z.string().optional().describe('Extra large border radius (e.g., 0.75rem)'),\n '2xl': z.string().optional().describe('2X large border radius (e.g., 1rem)'),\n full: z.string().optional().describe('Full border radius (50%)'),\n}));\n\n/**\n * Shadow Schema\n * Box shadow effects.\n */\nexport const ShadowSchema = lazySchema(() => z.object({\n none: z.string().optional().describe('No shadow'),\n sm: z.string().optional().describe('Small shadow'),\n base: z.string().optional().describe('Base shadow'),\n md: z.string().optional().describe('Medium shadow'),\n lg: z.string().optional().describe('Large shadow'),\n xl: z.string().optional().describe('Extra large shadow'),\n '2xl': z.string().optional().describe('2X large shadow'),\n inner: z.string().optional().describe('Inner shadow (inset)'),\n}));\n\n/**\n * Breakpoints Schema\n * Responsive design breakpoints.\n */\nexport const BreakpointsSchema = lazySchema(() => z.object({\n xs: z.string().optional().describe('Extra small breakpoint (e.g., 480px)'),\n sm: z.string().optional().describe('Small breakpoint (e.g., 640px)'),\n md: z.string().optional().describe('Medium breakpoint (e.g., 768px)'),\n lg: z.string().optional().describe('Large breakpoint (e.g., 1024px)'),\n xl: z.string().optional().describe('Extra large breakpoint (e.g., 1280px)'),\n '2xl': z.string().optional().describe('2X large breakpoint (e.g., 1536px)'),\n}));\n\n/**\n * Animation Schema\n * Animation timing and duration settings.\n */\nexport const AnimationSchema = lazySchema(() => z.object({\n duration: z.object({\n fast: z.string().optional().describe('Fast animation (e.g., 150ms)'),\n base: z.string().optional().describe('Base animation (e.g., 300ms)'),\n slow: z.string().optional().describe('Slow animation (e.g., 500ms)'),\n }).optional(),\n \n timing: z.object({\n linear: z.string().optional().describe('Linear timing function'),\n ease: z.string().optional().describe('Ease timing function'),\n ease_in: z.string().optional().describe('Ease-in timing function'),\n ease_out: z.string().optional().describe('Ease-out timing function'),\n ease_in_out: z.string().optional().describe('Ease-in-out timing function'),\n }).optional(),\n}));\n\n/**\n * Z-Index Scale Schema\n * Layering and stacking order.\n */\nexport const ZIndexSchema = lazySchema(() => z.object({\n base: z.number().optional().describe('Base z-index (e.g., 0)'),\n dropdown: z.number().optional().describe('Dropdown z-index (e.g., 1000)'),\n sticky: z.number().optional().describe('Sticky z-index (e.g., 1020)'),\n fixed: z.number().optional().describe('Fixed z-index (e.g., 1030)'),\n modalBackdrop: z.number().optional().describe('Modal backdrop z-index (e.g., 1040)'),\n modal: z.number().optional().describe('Modal z-index (e.g., 1050)'),\n popover: z.number().optional().describe('Popover z-index (e.g., 1060)'),\n tooltip: z.number().optional().describe('Tooltip z-index (e.g., 1070)'),\n}));\n\n/**\n * Theme Mode Schema\n */\nexport const ThemeModeSchema = lazySchema(() => z.enum(['light', 'dark', 'auto']));\n\n/** @deprecated Use ThemeModeSchema instead */\nexport const ThemeMode = ThemeModeSchema;\n\n/**\n * Density Mode Schema\n * Controls spacing and sizing for different use cases.\n */\nexport const DensityModeSchema = lazySchema(() => z.enum(['compact', 'regular', 'spacious']));\n\n/** @deprecated Use DensityModeSchema instead */\nexport const DensityMode = DensityModeSchema;\n\n/**\n * WCAG Contrast Level Schema\n * Web Content Accessibility Guidelines color contrast requirements.\n */\nexport const WcagContrastLevelSchema = lazySchema(() => z.enum(['AA', 'AAA']));\n\n/** @deprecated Use WcagContrastLevelSchema instead */\nexport const WcagContrastLevel = WcagContrastLevelSchema;\n\n/**\n * Theme Configuration Schema\n * Complete theme definition for brand customization.\n */\nexport const ThemeSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Unique theme identifier (snake_case)'),\n label: z.string().describe('Human-readable theme name'),\n description: z.string().optional().describe('Theme description'),\n \n /** Theme mode */\n mode: ThemeModeSchema.default('light').describe('Theme mode (light, dark, or auto)'),\n \n /** Color system */\n colors: ColorPaletteSchema.describe('Color palette configuration'),\n \n /** Typography */\n typography: TypographySchema.optional().describe('Typography settings'),\n \n /** Spacing */\n spacing: SpacingSchema.optional().describe('Spacing scale'),\n \n /** Border radius */\n borderRadius: BorderRadiusSchema.optional().describe('Border radius scale'),\n \n /** Shadows */\n shadows: ShadowSchema.optional().describe('Box shadow effects'),\n \n /** Breakpoints */\n breakpoints: BreakpointsSchema.optional().describe('Responsive breakpoints'),\n \n /** Animation */\n animation: AnimationSchema.optional().describe('Animation settings'),\n \n /** Z-Index */\n zIndex: ZIndexSchema.optional().describe('Z-index scale for layering'),\n \n /** Custom CSS variables */\n customVars: z.record(z.string(), z.string()).optional().describe('Custom CSS variables (key-value pairs)'),\n \n /** Logo */\n logo: z.object({\n light: z.string().optional().describe('Logo URL for light mode'),\n dark: z.string().optional().describe('Logo URL for dark mode'),\n favicon: z.string().optional().describe('Favicon URL'),\n }).optional().describe('Logo assets'),\n \n /** Extends another theme */\n extends: z.string().optional().describe('Base theme to extend from'),\n\n /** Display density mode */\n density: DensityModeSchema.optional().describe('Display density: compact, regular, or spacious'),\n\n /** WCAG contrast level requirement */\n wcagContrast: WcagContrastLevelSchema.optional().describe('WCAG color contrast level (AA or AAA)'),\n\n /** Right-to-left language support */\n rtl: z.boolean().optional().describe('Enable right-to-left layout direction'),\n\n /** Touch target accessibility configuration */\n touchTarget: TouchTargetConfigSchema.optional().describe('Touch target sizing defaults'),\n\n /** Keyboard navigation and focus management */\n keyboardNavigation: FocusManagementSchema.optional().describe('Keyboard focus management settings'),\n}));\n\nexport type Theme = z.infer<typeof ThemeSchema>;\nexport type ColorPalette = z.infer<typeof ColorPaletteSchema>;\nexport type Typography = z.infer<typeof TypographySchema>;\nexport type Spacing = z.infer<typeof SpacingSchema>;\nexport type BorderRadius = z.infer<typeof BorderRadiusSchema>;\nexport type Shadow = z.infer<typeof ShadowSchema>;\nexport type Breakpoints = z.infer<typeof BreakpointsSchema>;\nexport type Animation = z.infer<typeof AnimationSchema>;\nexport type ZIndex = z.infer<typeof ZIndexSchema>;\nexport type ThemeMode = z.infer<typeof ThemeModeSchema>;\nexport type DensityMode = z.infer<typeof DensityModeSchema>;\nexport type WcagContrastLevel = z.infer<typeof WcagContrastLevelSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Approval Step Approver Type\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ApproverType = z.enum([\n 'user', // Specific user(s)\n 'role', // Users with specific role (sys_member.role)\n 'team', // Members of a flat collaboration team (sys_team)\n 'department', // Members of a department + all descendant departments (sys_department)\n 'manager', // Submitter's manager (sys_user.manager_id)\n 'field', // User ID defined in a record field\n 'queue' // Data ownership queue\n]);\n\n/**\n * Approval Action Type\n * Actions to execute on transition\n */\nexport const ApprovalActionType = z.enum([\n 'field_update',\n 'email_alert',\n 'webhook',\n 'script',\n 'connector_action', // Added for Zapier-style integrations\n 'inbox_notify', // M11.C15.B — write a sys_notification row\n]);\n\n/**\n * definition of an action to perform\n */\nexport const ApprovalActionSchema = lazySchema(() => z.object({\n type: ApprovalActionType,\n name: z.string().describe('Action name'),\n config: z.record(z.string(), z.unknown()).describe('Action configuration'),\n \n /** For connector actions */\n connectorId: z.string().optional(),\n actionId: z.string().optional(),\n}));\n\n/**\n * Approval Process Step\n */\nexport const ApprovalStepSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Step machine name'),\n label: z.string().describe('Step display label'),\n description: z.string().optional(),\n \n /** Entry criteria for this step */\n entryCriteria: ExpressionInputSchema.optional().describe('Predicate (CEL) to enter this step.'),\n \n /** Who can approve */\n approvers: z.array(z.object({\n type: ApproverType,\n value: z.string().describe('User ID, Role Name, or Field Name')\n })).min(1).describe('List of allowed approvers'),\n \n /** Approval Logic */\n behavior: z.enum(['first_response', 'unanimous']).default('first_response')\n .describe('How to handle multiple approvers'),\n \n /** Rejection behavior */\n rejectionBehavior: z.enum(['reject_process', 'back_to_previous'])\n .default('reject_process').describe('What happens if rejected'),\n\n /** Actions */\n onApprove: z.array(ApprovalActionSchema).optional().describe('Actions on step approval'),\n onReject: z.array(ApprovalActionSchema).optional().describe('Actions on step rejection'),\n}));\n\n/**\n * Approval Process Protocol\n * \n * Defines a complex review and approval cycle for a record.\n * Manages state locking, notifications, and transition logic.\n */\nexport const ApprovalProcessSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Unique process name'),\n label: z.string().describe('Human readable label'),\n object: z.string().describe('Target Object Name'),\n \n active: z.boolean().default(false),\n description: z.string().optional(),\n \n /** Entry Criteria for the entire process */\n entryCriteria: ExpressionInputSchema.optional().describe('Predicate (CEL) to allow submission.'),\n \n /** Record Locking */\n lockRecord: z.boolean().default(true).describe('Lock record from editing during approval'),\n\n /**\n * M11.C15.B — name of a field on the business object where the\n * engine mirrors the request status (e.g. `'approval_status'`).\n * Values written: 'pending' | 'approved' | 'rejected' | 'recalled'\n * | 'not_submitted'. The field should be declared as readonly on\n * the object so users can filter / display it but not edit it.\n * If omitted, no status mirror is written and the engine only\n * exposes status via `sys_approval_request`.\n */\n approvalStatusField: z.string().optional().describe(\n 'Field name on the business object to mirror the request status.',\n ),\n \n /** Steps */\n steps: z.array(ApprovalStepSchema).min(1).describe('Sequence of approval steps'),\n\n /** Escalation Configuration (SLA-based auto-escalation) */\n escalation: z.object({\n enabled: z.boolean().default(false).describe('Enable SLA-based escalation'),\n timeoutHours: z.number().min(1).describe('Hours before escalation triggers'),\n action: z.enum(['reassign', 'auto_approve', 'auto_reject', 'notify']).default('notify').describe('Action to take on escalation timeout'),\n escalateTo: z.string().optional().describe('User ID, role, or manager level to escalate to'),\n notifySubmitter: z.boolean().default(true).describe('Notify the original submitter on escalation'),\n }).optional().describe('SLA escalation configuration for pending approval steps'),\n \n /** Global Actions */\n onSubmit: z.array(ApprovalActionSchema).optional().describe('Actions on initial submission'),\n onFinalApprove: z.array(ApprovalActionSchema).optional().describe('Actions on final approval'),\n onFinalReject: z.array(ApprovalActionSchema).optional().describe('Actions on final rejection'),\n onRecall: z.array(ApprovalActionSchema).optional().describe('Actions on recall'),\n}));\n\nexport const ApprovalProcess = Object.assign(ApprovalProcessSchema, {\n create: <T extends z.input<typeof ApprovalProcessSchema>>(config: T) => config,\n});\n\nexport type ApprovalProcess = z.infer<typeof ApprovalProcessSchema>;\nexport type ApprovalStep = z.infer<typeof ApprovalStepSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Trigger events for workflow automation\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WorkflowTriggerType = z.enum([\n 'on_create', // When record is created\n 'on_update', // When record is updated\n 'on_create_or_update', // Both\n 'on_delete', // When record is deleted\n 'schedule' // Time-based (cron)\n]);\n\n/**\n * Schema for Workflow Field Update Action\n * @example\n * {\n * name: \"update_status\",\n * type: \"field_update\",\n * field: \"status\",\n * value: \"approved\"\n * }\n */\nexport const FieldUpdateActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('field_update'),\n field: z.string().describe('Field to update'),\n value: z.unknown().describe('Value or Formula to set'),\n}));\n\n/**\n * Schema for Workflow Email Alert Action\n * @example\n * {\n * name: \"send_approval_email\",\n * type: \"email_alert\",\n * template: \"approval_request_email\",\n * recipients: [\"user_id_123\", \"manager_field\"]\n * }\n */\nexport const EmailAlertActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('email_alert'),\n template: z.string().describe('Email template ID/DevName'),\n recipients: z.array(z.string()).describe('List of recipient emails or user IDs'),\n}));\n\n/**\n * Schema for Connector Action Reference\n * Executes a capability defined in an integration connector.\n * Replaces hardcoded vendor actions (Slack, Twilio, etc).\n * \n * @example Send Slack Message\n * {\n * name: \"notify_slack\",\n * type: \"connector_action\",\n * connectorId: \"slack\",\n * actionId: \"post_message\",\n * input: {\n * channel: \"#general\",\n * text: \"New deal closed: {name}\"\n * }\n * }\n */\nexport const ConnectorActionRefSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('connector_action'),\n connectorId: z.string().describe('Target Connector ID (e.g. slack, twilio)'),\n actionId: z.string().describe('Target Action ID (e.g. send_message)'),\n input: z.record(z.string(), z.unknown()).describe('Input parameters matching the action schema'),\n}));\n\n/**\n * Schema for HTTP Callout Action\n * Makes a REST API call to an external service.\n * @example\n * {\n * name: \"sync_to_erp\",\n * type: \"http_call\",\n * url: \"https://erp.api/orders\",\n * method: \"POST\",\n * headers: { \"Authorization\": \"Bearer {token}\" },\n * body: \"{ ... }\"\n * }\n */\nexport const HttpCallActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('http_call'),\n url: z.string().describe('Target URL'),\n method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH']).default('POST').describe('HTTP Method'),\n headers: z.record(z.string(), z.string()).optional().describe('HTTP Headers'),\n body: z.string().optional().describe('Request body (JSON or text)'),\n}));\n\n/**\n * Schema for Workflow Task Creation Action\n * @example\n * {\n * name: \"create_followup_task\",\n * type: \"task_creation\",\n * taskObject: \"tasks\",\n * subject: \"Follow up with client\",\n * dueDate: \"TODAY() + 3\"\n * }\n */\nexport const TaskCreationActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('task_creation'),\n taskObject: z.string().describe('Task object name (e.g., \"task\", \"project_task\")'),\n subject: z.string().describe('Task subject/title'),\n description: z.string().optional().describe('Task description'),\n assignedTo: z.string().optional().describe('User ID or field reference for assignee'),\n dueDate: ExpressionInputSchema.optional().describe('Due date — CEL expression evaluated at task creation, e.g. cel`now() + duration(\"P3D\")`'),\n priority: z.string().optional().describe('Task priority'),\n relatedTo: z.string().optional().describe('Related record ID or field reference'),\n additionalFields: z.record(z.string(), z.unknown()).optional().describe('Additional custom fields'),\n}));\n\n/**\n * Schema for Workflow Push Notification Action\n */\nexport const PushNotificationActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('push_notification'),\n title: z.string().describe('Notification title'),\n body: z.string().describe('Notification body text'),\n recipients: z.array(z.string()).describe('User IDs or device tokens'),\n data: z.record(z.string(), z.unknown()).optional().describe('Additional data payload'),\n badge: z.number().optional().describe('Badge count (iOS)'),\n sound: z.string().optional().describe('Notification sound'),\n clickAction: z.string().optional().describe('Action/URL when notification is clicked'),\n}));\n\n/**\n * Schema for Workflow Custom Script Action\n */\nexport const CustomScriptActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('custom_script'),\n language: z.enum(['javascript', 'typescript', 'python']).default('javascript').describe('Script language'),\n code: z.string().describe('Script code to execute'),\n timeout: z.number().default(30000).describe('Execution timeout in milliseconds'),\n context: z.record(z.string(), z.unknown()).optional().describe('Additional context variables'),\n}));\n\n/**\n * Universal Workflow Action Schema\n * Union of all supported action types.\n */\nexport const WorkflowActionSchema = lazySchema(() => z.discriminatedUnion('type', [\n FieldUpdateActionSchema,\n EmailAlertActionSchema,\n HttpCallActionSchema,\n ConnectorActionRefSchema,\n TaskCreationActionSchema,\n PushNotificationActionSchema,\n CustomScriptActionSchema,\n]));\n\nexport type WorkflowAction = z.infer<typeof WorkflowActionSchema>;\n\n/**\n * Time Trigger Definition\n * Schedules actions to run relative to a specific time or date field.\n */\nexport const TimeTriggerSchema = lazySchema(() => z.object({\n id: z.string().optional().describe('Unique identifier'),\n \n /** Timing Logic */\n timeLength: z.number().int().describe('Duration amount (e.g. 1, 30)'),\n timeUnit: z.enum(['minutes', 'hours', 'days']).describe('Unit of time'),\n \n /** Reference Point */\n offsetDirection: z.enum(['before', 'after']).describe('Before or After the reference date'),\n offsetFrom: z.enum(['trigger_date', 'date_field']).describe('Basis for calculation'),\n dateField: z.string().optional().describe('Date field to calculate from (required if offsetFrom is date_field)'),\n \n /** Actions */\n actions: z.array(WorkflowActionSchema).describe('Actions to execute at the scheduled time'),\n}));\n\n/**\n * Schema for Workflow Rules (Automation)\n * \n * **NAMING CONVENTION:**\n * Workflow names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good workflow names\n * - 'send_welcome_email'\n * - 'update_lead_status'\n * - 'notify_manager_on_close'\n * - 'calculate_discount'\n * \n * @example Bad workflow names (will be rejected)\n * - 'SendWelcomeEmail' (PascalCase)\n * - 'updateLeadStatus' (camelCase)\n * - 'Send Welcome Email' (spaces)\n * \n * @example Complete Workflow\n * {\n * name: \"new_lead_process\",\n * objectName: \"lead\",\n * triggerType: \"on_create\",\n * criteria: \"amount > 1000\",\n * active: true,\n * actions: [\n * {\n * name: \"set_status\",\n * type: \"field_update\",\n * field: \"status\",\n * value: \"new\"\n * },\n * {\n * name: \"notify_team\",\n * type: \"connector_action\",\n * connectorId: \"slack\",\n * actionId: \"post_message\",\n * input: { channel: \"#sales\", text: \"New high value lead!\" }\n * }\n * ],\n * timeTriggers: [\n * {\n * timeLength: 2,\n * timeUnit: \"days\",\n * offsetDirection: \"after\",\n * offsetFrom: \"trigger_date\",\n * actions: [\n * {\n * name: \"followup_check\",\n * type: \"task_creation\",\n * taskObject: \"task\",\n * subject: \"Follow up lead\",\n * dueDate: \"TODAY()\"\n * }\n * ]\n * }\n * ]\n * }\n */\nexport const WorkflowRuleSchema = lazySchema(() => z.object({\n /** Machine name */\n name: SnakeCaseIdentifierSchema.describe('Unique workflow name (lowercase snake_case)'),\n \n /** Target Object */\n objectName: z.string().describe('Target Object'),\n \n /** When to evaluate the rule */\n triggerType: WorkflowTriggerType.describe('When to evaluate'),\n \n /** \n * Condition to start the workflow.\n * If empty, runs on every trigger event.\n */\n criteria: ExpressionInputSchema.optional().describe('Predicate (CEL). If TRUE, actions execute.'),\n \n /** Actions to execute immediately */\n actions: z.array(WorkflowActionSchema).optional().describe('Immediate actions'),\n \n /** \n * Time-Dependent Actions \n * Actions scheduled to run in the future.\n */\n timeTriggers: z.array(TimeTriggerSchema).optional().describe('Scheduled actions relative to trigger or date field'),\n \n /** Active status */\n active: z.boolean().default(true).describe('Whether this workflow is active'),\n\n /** Execution Order */\n executionOrder: z.number().int().min(0).default(100).describe('Deterministic execution order when multiple workflows match (lower runs first)'),\n \n /** Recursion Control */\n reevaluateOnChange: z.boolean().default(false).describe('Re-evaluate rule if field updates change the record validity'),\n}));\n\nexport type WorkflowRule = z.infer<typeof WorkflowRuleSchema>;\nexport type TimeTrigger = z.infer<typeof TimeTriggerSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Flow Node Types\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FlowNodeAction = z.enum([\n 'start', // Trigger\n 'end', // Return/Stop\n 'decision', // If/Else logic\n 'assignment', // Set Variable\n 'loop', // For Each\n 'create_record', // CRUD: Create\n 'update_record', // CRUD: Update\n 'delete_record', // CRUD: Delete\n 'get_record', // CRUD: Get/Query\n 'http_request', // Webhook/API Call\n 'script', // Custom Script (JS/TS)\n 'screen', // Screen / User-Input Element\n 'wait', // Delay/Sleep\n 'subflow', // Call another flow\n 'connector_action', // Zapier-style integration action\n 'parallel_gateway', // BPMN Parallel Gateway — AND-split (all outgoing branches execute concurrently)\n 'join_gateway', // BPMN Join Gateway — AND-join (waits for all incoming branches to complete)\n 'boundary_event', // BPMN Boundary Event — attached to a host node for timer/error/signal interrupts\n]);\n\n/**\n * Flow Variable Schema\n * Variables available within the flow execution context.\n */\nexport const FlowVariableSchema = lazySchema(() => z.object({\n name: z.string().describe('Variable name'),\n type: z.string().describe('Data type (text, number, boolean, object, list)'),\n isInput: z.boolean().default(false).describe('Is input parameter'),\n isOutput: z.boolean().default(false).describe('Is output parameter'),\n}));\n\n/**\n * Flow Node Schema\n * A single step in the visual logic graph.\n * \n * @example Decision Node\n * {\n * id: \"dec_1\",\n * type: \"decision\",\n * label: \"Is High Value?\",\n * config: {\n * conditions: [\n * { label: \"Yes\", expression: \"{amount} > 10000\" },\n * { label: \"No\", expression: \"true\" } // default\n * ]\n * },\n * position: { x: 300, y: 200 }\n * }\n */\nexport const FlowNodeSchema = lazySchema(() => z.object({\n id: z.string().describe('Node unique ID'),\n type: FlowNodeAction.describe('Action type'),\n label: z.string().describe('Node label'),\n \n /** Node Configuration Options (Specific to type) */\n config: z.record(z.string(), z.unknown()).optional().describe('Node configuration'),\n \n /** \n * Connector Action Configuration\n * Used when type is 'connector_action'\n */\n connectorConfig: z.object({\n connectorId: z.string(),\n actionId: z.string(),\n input: z.record(z.string(), z.unknown()).describe('Mapped inputs for the action'),\n }).optional(),\n\n /** UI Position (for the canvas) */\n position: z.object({ x: z.number(), y: z.number() }).optional(),\n\n /** Node-level execution timeout */\n timeoutMs: z.number().int().min(0).optional().describe('Maximum execution time for this node in milliseconds'),\n\n /** Node input schema declaration for Studio form generation and runtime validation */\n inputSchema: z.record(z.string(), z.object({\n type: z.enum(['string', 'number', 'boolean', 'object', 'array']).describe('Parameter type'),\n required: z.boolean().default(false).describe('Whether the parameter is required'),\n description: z.string().optional().describe('Parameter description'),\n })).optional().describe('Input parameter schema for this node'),\n\n /** Node output schema declaration */\n outputSchema: z.record(z.string(), z.object({\n type: z.enum(['string', 'number', 'boolean', 'object', 'array']).describe('Output type'),\n description: z.string().optional().describe('Output description'),\n })).optional().describe('Output schema declaration for this node'),\n\n /**\n * Wait Event Configuration (for 'wait' nodes)\n * Defines what external event or condition should resume the paused execution.\n * Industry alignment: BPMN Intermediate Catch Events, Temporal Signals.\n */\n waitEventConfig: z.object({\n /** Type of event to wait for */\n eventType: z.enum(['timer', 'signal', 'webhook', 'manual', 'condition'])\n .describe('What kind of event resumes the execution'),\n /** Duration to wait (ISO 8601 duration or milliseconds) — for timer events */\n timerDuration: z.string().optional().describe('ISO 8601 duration (e.g., \"PT1H\") or wait time for timer events'),\n /** Signal name to listen for — for signal/webhook events */\n signalName: z.string().optional().describe('Named signal or webhook event to wait for'),\n /** Timeout before auto-failing or continuing — optional guard */\n timeoutMs: z.number().int().min(0).optional().describe('Maximum wait time before timeout (ms)'),\n /** Action to take on timeout */\n onTimeout: z.enum(['fail', 'continue']).default('fail').describe('Behavior when the wait times out'),\n }).optional().describe('Configuration for wait node event resumption'),\n\n /**\n * Boundary Event Configuration (for 'boundary_event' nodes)\n * Attaches an event handler to a host activity node (BPMN Boundary Event pattern).\n * Industry alignment: BPMN Boundary Error/Timer/Signal Events.\n */\n boundaryConfig: z.object({\n /** ID of the host node this boundary event is attached to */\n attachedToNodeId: z.string().describe('Host node ID this boundary event monitors'),\n /** Type of boundary event */\n eventType: z.enum(['error', 'timer', 'signal', 'cancel'])\n .describe('Boundary event trigger type'),\n /** Whether the boundary event interrupts the host activity */\n interrupting: z.boolean().default(true)\n .describe('If true, the host activity is cancelled when this event fires'),\n /** Error code filter — only for error boundary events */\n errorCode: z.string().optional().describe('Specific error code to catch (empty = catch all errors)'),\n /** Timer duration — only for timer boundary events */\n timerDuration: z.string().optional().describe('ISO 8601 duration for timer boundary events'),\n /** Signal name — only for signal boundary events */\n signalName: z.string().optional().describe('Named signal to catch'),\n }).optional().describe('Configuration for boundary events attached to host nodes'),\n}));\n\n/**\n * Flow Edge Schema\n * Connections between nodes.\n */\nexport const FlowEdgeSchema = lazySchema(() => z.object({\n id: z.string().describe('Edge unique ID'),\n source: z.string().describe('Source Node ID'),\n target: z.string().describe('Target Node ID'),\n \n /** Condition for this path (only for decision/branch nodes) */\n condition: ExpressionInputSchema.optional().describe('Predicate (CEL) returning boolean used for branching.'),\n \n type: z.enum(['default', 'fault', 'conditional']).default('default')\n .describe('Connection type: default (normal flow), fault (error path), or conditional (expression-guarded)'),\n label: z.string().optional().describe('Label on the connector'),\n\n /**\n * Default Sequence Flow marker (BPMN Default Flow semantics).\n * When true, this edge is taken when no sibling conditional edges match.\n * Only meaningful on outgoing edges of decision/gateway nodes.\n */\n isDefault: z.boolean().default(false)\n .describe('Marks this edge as the default path when no other conditions match'),\n}));\n\n/**\n * Flow Schema\n * Visual Business Logic Orchestration.\n * \n * @example Simple Approval Logic\n * {\n * name: \"approve_order_flow\",\n * label: \"Approve Large Orders\",\n * type: \"record_change\",\n * status: \"active\",\n * nodes: [\n * { id: \"start\", type: \"start\", label: \"Start\", position: {x: 0, y: 0} },\n * { id: \"check_amount\", type: \"decision\", label: \"Check Amount\", position: {x: 0, y: 100} },\n * { id: \"auto_approve\", type: \"update_record\", label: \"Auto Approve\", position: {x: -100, y: 200} },\n * { id: \"submit_for_approval\", type: \"connector_action\", label: \"Submit\", position: {x: 100, y: 200} }\n * ],\n * edges: [\n * { id: \"e1\", source: \"start\", target: \"check_amount\" },\n * { id: \"e2\", source: \"check_amount\", target: \"auto_approve\", condition: \"{amount} < 500\" },\n * { id: \"e3\", source: \"check_amount\", target: \"submit_for_approval\", condition: \"{amount} >= 500\" }\n * ]\n * }\n */\nexport const FlowSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine name'),\n label: z.string().describe('Flow label'),\n description: z.string().optional(),\n \n /** Metadata & Versioning */\n version: z.number().int().default(1).describe('Version number'),\n status: z.enum(['draft', 'active', 'obsolete', 'invalid']).default('draft').describe('Deployment status'),\n template: z.boolean().default(false).describe('Is logic template (Subflow)'),\n\n /** Trigger Type */\n type: z.enum(['autolaunched', 'record_change', 'schedule', 'screen', 'api']).describe('Flow type'),\n \n /** Configuration Variables */\n variables: z.array(FlowVariableSchema).optional().describe('Flow variables'),\n \n /** Graph Definition */\n nodes: z.array(FlowNodeSchema).describe('Flow nodes'),\n edges: z.array(FlowEdgeSchema).describe('Flow connections'),\n \n /** Execution Config */\n active: z.boolean().default(false).describe('Is active (Deprecated: use status)'),\n runAs: z.enum(['system', 'user']).default('user').describe('Execution context'),\n\n /** Error Handling Strategy */\n errorHandling: z.object({\n strategy: z.enum(['fail', 'retry', 'continue']).default('fail').describe('How to handle node execution errors'),\n maxRetries: z.number().int().min(0).max(10).default(0).describe('Number of retry attempts (only for retry strategy)'),\n retryDelayMs: z.number().int().min(0).default(1000).describe('Delay between retries in milliseconds'),\n backoffMultiplier: z.number().min(1).default(1).describe('Multiplier for exponential backoff between retries'),\n maxRetryDelayMs: z.number().int().min(0).default(30000).describe('Maximum delay between retries in milliseconds'),\n jitter: z.boolean().default(false).describe('Add random jitter to retry delay to avoid thundering herd'),\n fallbackNodeId: z.string().optional().describe('Node ID to jump to on unrecoverable error'),\n }).optional().describe('Flow-level error handling configuration'),\n}));\n\n/**\n * Type-safe factory for creating flow definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const onCreateFlow = defineFlow({\n * name: 'on_task_create',\n * label: 'On Task Create',\n * type: 'record_change',\n * nodes: [\n * { id: 'start', type: 'start', label: 'Start' },\n * { id: 'end', type: 'end', label: 'End' },\n * ],\n * edges: [{ id: 'e1', source: 'start', target: 'end' }],\n * });\n * ```\n */\nexport function defineFlow(config: z.input<typeof FlowSchema>): FlowParsed {\n return FlowSchema.parse(config);\n}\n\nexport type Flow = z.input<typeof FlowSchema>;\nexport type FlowParsed = z.infer<typeof FlowSchema>;\nexport type FlowNode = z.input<typeof FlowNodeSchema>;\nexport type FlowNodeParsed = z.infer<typeof FlowNodeSchema>;\nexport type FlowEdge = z.input<typeof FlowEdgeSchema>;\nexport type FlowEdgeParsed = z.infer<typeof FlowEdgeSchema>;\n\n/**\n * Flow Version History Schema\n * Tracks historical versions of flow definitions for rollback support.\n *\n * Industry alignment: Salesforce Flow Versions, n8n Workflow History.\n */\nexport const FlowVersionHistorySchema = lazySchema(() => z.object({\n flowName: z.string().describe('Flow machine name'),\n version: z.number().int().min(1).describe('Version number'),\n definition: FlowSchema.describe('Complete flow definition snapshot'),\n createdAt: z.string().datetime().describe('When this version was created'),\n createdBy: z.string().optional().describe('User who created this version'),\n changeNote: z.string().optional().describe('Description of what changed in this version'),\n}));\n\nexport type FlowVersionHistory = z.input<typeof FlowVersionHistorySchema>;\nexport type FlowVersionHistoryParsed = z.infer<typeof FlowVersionHistorySchema>;\n","// 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 * Role Schema (aka Business Unit / Org Unit)\n * Defines the organizational hierarchy (Reporting Structure).\n * \n * COMPARISON:\n * - Salesforce: \"Role\" (Hierarchy for visibility rollup)\n * - Microsoft: \"Business Unit\" (Structural container for data)\n * - Kubernetes/AWS: \"Role\" usually refers to Permissions (we use PermissionSet for that)\n * \n * ROLES IN OBJECTSTACK:\n * Used primarily for \"Reporting Structure\" - Managers see subordinates' data.\n * \n * **NAMING CONVENTION:**\n * Role names MUST be lowercase snake_case to prevent security issues.\n * \n * @example Good role names\n * - 'sales_manager'\n * - 'ceo'\n * - 'region_east_vp'\n * - 'engineering_lead'\n * \n * @example Bad role names (will be rejected)\n * - 'SalesManager' (camelCase)\n * - 'CEO' (uppercase)\n * - 'Region East VP' (spaces and uppercase)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const RoleSchema = lazySchema(() => z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Unique role name (lowercase snake_case)'),\n label: z.string().describe('Display label (e.g. VP of Sales)'),\n \n /** Hierarchy */\n parent: z.string().optional().describe('Parent Role ID (Reports To)'),\n \n /** Description */\n description: z.string().optional(),\n}));\n\nexport type Role = z.infer<typeof RoleSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Row-Level Security (RLS) Protocol\n * \n * Implements fine-grained record-level access control inspired by PostgreSQL RLS\n * and Salesforce Criteria-Based Sharing Rules.\n * \n * ## Overview\n * \n * Row-Level Security (RLS) allows you to control which rows users can access\n * in database tables based on their identity and role. Unlike object-level\n * permissions (CRUD), RLS provides record-level filtering.\n * \n * ## Use Cases\n * \n * 1. **Multi-Tenant Data Isolation**\n * - Users only see records from their organization\n * - `using: \"organization_id = current_user.organization_id\"`\n * \n * 2. **Ownership-Based Access**\n * - Users only see records they own\n * - `using: \"owner_id = current_user.id\"`\n * \n * 3. **Department-Based Access**\n * - Users only see records from their department\n * - `using: \"department = current_user.department\"`\n * \n * 4. **Regional Access Control**\n * - Sales reps only see accounts in their territory\n * - `using: \"region IN (current_user.assigned_regions)\"`\n * \n * 5. **Time-Based Access**\n * - Users can only access active records\n * - `using: \"status = 'active' AND expiry_date > NOW()\"`\n * \n * ## PostgreSQL RLS Comparison\n * \n * PostgreSQL RLS Example:\n * ```sql\n * CREATE POLICY tenant_isolation ON accounts\n * FOR SELECT\n * USING (tenant_id = current_setting('app.current_tenant_id')::uuid);\n * \n * CREATE POLICY account_insert ON accounts\n * FOR INSERT\n * WITH CHECK (tenant_id = current_setting('app.current_tenant_id')::uuid);\n * ```\n * \n * ObjectStack RLS Equivalent:\n * ```typescript\n * {\n * name: 'tenant_isolation',\n * object: 'account',\n * operation: 'select',\n * using: 'organization_id = current_user.organization_id'\n * }\n * ```\n * \n * ## Salesforce Sharing Rules Comparison\n * \n * Salesforce uses \"Sharing Rules\" and \"Role Hierarchy\" for record-level access.\n * ObjectStack RLS provides similar functionality with more flexibility.\n * \n * Salesforce:\n * - Criteria-Based Sharing: Share records matching criteria with users/roles\n * - Owner-Based Sharing: Share records based on owner's role\n * - Manual Sharing: Individual record sharing\n * \n * ObjectStack RLS:\n * - More flexible formula-based conditions\n * - Direct SQL-like syntax\n * - Supports complex logic with AND/OR/NOT\n * \n * ## Best Practices\n * \n * 1. **Always Define SELECT Policy**: Control what users can view\n * 2. **Define INSERT/UPDATE CHECK Policies**: Prevent data leakage\n * 3. **Use Role-Based Policies**: Apply different rules to different roles\n * 4. **Test Thoroughly**: RLS can have complex interactions\n * 5. **Monitor Performance**: Complex RLS policies can impact query performance\n * \n * ## Security Considerations\n * \n * 1. **Defense in Depth**: RLS is one layer; use with object permissions\n * 2. **Default Deny**: If no policy matches, access is denied\n * 3. **Policy Precedence**: More permissive policy wins (OR logic)\n * 4. **Context Variables**: Ensure current_user context is always set\n * \n * @see https://www.postgresql.org/docs/current/ddl-rowsecurity.html\n * @see https://help.salesforce.com/s/articleView?id=sf.security_sharing_rules.htm\n */\n\n/**\n * RLS Operation Enum\n * Specifies which database operation this policy applies to.\n * \n * - **select**: Controls which rows can be read (SELECT queries)\n * - **insert**: Controls which rows can be inserted (INSERT statements)\n * - **update**: Controls which rows can be updated (UPDATE statements)\n * - **delete**: Controls which rows can be deleted (DELETE statements)\n * - **all**: Shorthand for all operations (equivalent to defining 4 separate policies)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const RLSOperation = z.enum(['select', 'insert', 'update', 'delete', 'all']);\n\nexport type RLSOperation = z.infer<typeof RLSOperation>;\n\n/**\n * Row-Level Security Policy Schema\n * \n * Defines a single RLS policy that filters records based on conditions.\n * Multiple policies can be defined for the same object, and they are\n * combined with OR logic (union of results).\n * \n * @example Multi-Tenant Isolation\n * ```typescript\n * {\n * name: 'tenant_isolation',\n * label: 'Multi-Tenant Data Isolation',\n * object: 'account',\n * operation: 'select',\n * using: 'organization_id = current_user.organization_id',\n * enabled: true\n * }\n * ```\n * \n * @example Owner-Based Access\n * ```typescript\n * {\n * name: 'owner_access',\n * label: 'Users Can View Their Own Records',\n * object: 'opportunity',\n * operation: 'select',\n * using: 'owner_id = current_user.id',\n * enabled: true\n * }\n * ```\n * \n * @example Manager Can View Team Records\n * ```typescript\n * {\n * name: 'manager_team_access',\n * label: 'Managers Can View Team Records',\n * object: 'task',\n * operation: 'select',\n * using: 'assigned_to_id IN (SELECT id FROM users WHERE manager_id = current_user.id)',\n * roles: ['manager', 'director'],\n * enabled: true\n * }\n * ```\n * \n * @example Prevent Cross-Tenant Data Insertion\n * ```typescript\n * {\n * name: 'tenant_insert_check',\n * label: 'Prevent Cross-Tenant Data Creation',\n * object: 'account',\n * operation: 'insert',\n * check: 'organization_id = current_user.organization_id',\n * enabled: true\n * }\n * ```\n * \n * @example Regional Sales Access\n * ```typescript\n * {\n * name: 'regional_sales_access',\n * label: 'Sales Reps Access Regional Accounts',\n * object: 'account',\n * operation: 'select',\n * using: 'region = current_user.region OR region IS NULL',\n * roles: ['sales_rep'],\n * enabled: true\n * }\n * ```\n * \n * @example Time-Based Access Control\n * ```typescript\n * {\n * name: 'active_records_only',\n * label: 'Users Only Access Active Records',\n * object: 'contract',\n * operation: 'select',\n * using: 'status = \"active\" AND start_date <= NOW() AND end_date >= NOW()',\n * enabled: true\n * }\n * ```\n * \n * @example Hierarchical Access (Role-Based)\n * ```typescript\n * {\n * name: 'executive_full_access',\n * label: 'Executives See All Records',\n * object: 'account',\n * operation: 'all',\n * using: '1 = 1', // Always true - see everything\n * roles: ['ceo', 'cfo', 'cto'],\n * enabled: true\n * }\n * ```\n */\nexport const RowLevelSecurityPolicySchema = lazySchema(() => z.object({\n /**\n * Unique identifier for this policy.\n * Must be unique within the object.\n * Use snake_case following ObjectStack naming conventions.\n * \n * @example \"tenant_isolation\", \"owner_access\", \"manager_team_view\"\n */\n name: z.string()\n .regex(/^[a-z_][a-z0-9_]*$/)\n .describe('Policy unique identifier (snake_case)'),\n\n /**\n * Human-readable label for the policy.\n * Used in admin UI and logs.\n * \n * @example \"Multi-Tenant Data Isolation\", \"Owner-Based Access\"\n */\n label: z.string()\n .optional()\n .describe('Human-readable policy label'),\n\n /**\n * Description explaining what this policy does and why.\n * Helps with governance and compliance.\n * \n * @example \"Ensures users can only access records from their own tenant organization\"\n */\n description: z.string()\n .optional()\n .describe('Policy description and business justification'),\n\n /**\n * Target object (table) this policy applies to.\n * Must reference a valid ObjectStack object name.\n * \n * @example \"account\", \"opportunity\", \"contact\", \"custom_object\"\n */\n object: z.string()\n .describe('Target object name'),\n\n /**\n * Database operation(s) this policy applies to.\n * \n * - **select**: Controls read access (SELECT queries)\n * - **insert**: Controls insert access (INSERT statements)\n * - **update**: Controls update access (UPDATE statements)\n * - **delete**: Controls delete access (DELETE statements)\n * - **all**: Applies to all operations\n * \n * @example \"select\" - Most common, controls what users can view\n * @example \"all\" - Apply same rule to all operations\n */\n operation: RLSOperation\n .describe('Database operation this policy applies to'),\n\n /**\n * USING clause - Filter condition for SELECT/UPDATE/DELETE.\n * \n * This is a SQL-like expression evaluated for each row.\n * Only rows where this expression returns TRUE are accessible.\n * \n * **Note**: For INSERT-only policies, USING is not required (only CHECK is needed).\n * For SELECT/UPDATE/DELETE operations, USING is required.\n * \n * **Security Note**: RLS conditions are executed at the database level with\n * parameterized queries. The implementation must use prepared statements\n * to prevent SQL injection. Never concatenate user input directly into\n * RLS conditions.\n * \n * **SQL Dialect**: Compatible with PostgreSQL SQL syntax. Implementations\n * may adapt to other databases (MySQL, SQL Server, etc.) but should maintain\n * semantic equivalence.\n * \n * Available context variables:\n * - `current_user.id` - Current user's ID\n * - `current_user.organization_id` - Active organization id (maps to `tenantId` in RLSUserContext / `ExecutionContext.tenantId`)\n * - `current_user.role` - Current user's role\n * - `current_user.department` - Current user's department\n * - `current_user.*` - Any custom user field\n * - `NOW()` - Current timestamp\n * - `CURRENT_DATE` - Current date\n * - `CURRENT_TIME` - Current time\n * \n * **Context Variable Mapping**: The RLSUserContext schema uses camelCase (e.g., `tenantId`),\n * but expressions use snake_case with `current_user.` prefix (e.g., `current_user.organization_id`).\n * Implementations must handle this mapping.\n * \n * Supported operators:\n * - Comparison: =, !=, <, >, <=, >=, <> (not equal)\n * - Logical: AND, OR, NOT\n * - NULL checks: IS NULL, IS NOT NULL\n * - Set operations: IN, NOT IN\n * - String: LIKE, NOT LIKE, ILIKE (case-insensitive)\n * - Pattern matching: ~ (regex), !~ (not regex)\n * - Subqueries: (SELECT ...)\n * - Array operations: ANY, ALL\n * \n * **Prohibited**: Dynamic SQL, DDL statements, DML statements (INSERT/UPDATE/DELETE)\n * \n * @example \"organization_id = current_user.organization_id\"\n * @example \"owner_id = current_user.id OR created_by = current_user.id\"\n * @example \"department IN (SELECT department FROM user_departments WHERE user_id = current_user.id)\"\n * @example \"status = 'active' AND expiry_date > NOW()\"\n */\n using: z.string()\n .optional()\n .describe('Filter condition for SELECT/UPDATE/DELETE (PostgreSQL SQL WHERE clause syntax with parameterized context variables). Optional for INSERT-only policies.'),\n\n /**\n * CHECK clause - Validation for INSERT/UPDATE operations.\n * \n * Similar to USING but applies to new/modified rows.\n * Prevents users from creating/updating rows they wouldn't be able to see.\n * \n * **Default Behavior**: If not specified, implementations should use the\n * USING clause as the CHECK clause. This ensures data integrity by preventing\n * users from creating records they cannot view.\n * \n * Use cases:\n * - Prevent cross-tenant data creation\n * - Enforce mandatory field values\n * - Validate data integrity rules\n * - Restrict certain operations (e.g., only allow creating \"draft\" status)\n * \n * @example \"organization_id = current_user.organization_id\"\n * @example \"status IN ('draft', 'pending')\" - Only allow certain statuses\n * @example \"created_by = current_user.id\" - Must be the creator\n */\n check: z.string()\n .optional()\n .describe('Validation condition for INSERT/UPDATE (defaults to USING clause if not specified - enforced at application level)'),\n\n /**\n * Restrict this policy to specific roles.\n * If specified, only users with these roles will have this policy applied.\n * If omitted, policy applies to all users (except those with bypassRLS permission).\n * \n * Role names must match defined roles in the system.\n * \n * @example [\"sales_rep\", \"account_manager\"]\n * @example [\"employee\"] - Apply to all employees\n * @example [\"guest\"] - Special restrictions for guests\n */\n roles: z.array(z.string())\n .optional()\n .describe('Roles this policy applies to (omit for all roles)'),\n\n /**\n * Whether this policy is currently active.\n * Disabled policies are not evaluated.\n * Useful for temporary policy changes without deletion.\n * \n * @default true\n */\n enabled: z.boolean()\n .default(true)\n .describe('Whether this policy is active'),\n\n /**\n * Policy priority for conflict resolution.\n * Higher numbers = higher priority.\n * When multiple policies apply, the most permissive wins (OR logic).\n * Priority is only used for ordering evaluation (performance).\n * \n * @default 0\n */\n priority: z.number()\n .int()\n .default(0)\n .describe('Policy evaluation priority (higher = evaluated first)'),\n\n /**\n * Tags for policy categorization and reporting.\n * Useful for governance, compliance, and auditing.\n * \n * @example [\"compliance\", \"gdpr\", \"pci\"]\n * @example [\"multi-tenant\", \"security\"]\n */\n tags: z.array(z.string())\n .optional()\n .describe('Policy categorization tags'),\n}).superRefine((data, ctx) => {\n // Ensure at least one of USING or CHECK is provided\n if (!data.using && !data.check) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'At least one of \"using\" or \"check\" must be specified. For SELECT/UPDATE/DELETE operations, provide \"using\". For INSERT operations, provide \"check\".',\n });\n }\n \n // For non-insert operations, USING should typically be present\n // This is a soft warning through documentation, not enforced here\n // since 'all' and mixed operation types are valid\n}));\n\n/**\n * RLS Audit Event Schema\n * \n * Records a single RLS policy evaluation event for compliance and debugging.\n */\nexport const RLSAuditEventSchema = lazySchema(() => z.object({\n /** ISO 8601 timestamp of the evaluation */\n timestamp: z.string()\n .describe('ISO 8601 timestamp of the evaluation'),\n\n /** ID of the user whose access was evaluated */\n userId: z.string()\n .describe('User ID whose access was evaluated'),\n\n /** Database operation being performed */\n operation: z.enum(['select', 'insert', 'update', 'delete'])\n .describe('Database operation being performed'),\n\n /** Target object (table) name */\n object: z.string()\n .describe('Target object name'),\n\n /** Name of the RLS policy evaluated */\n policyName: z.string()\n .describe('Name of the RLS policy evaluated'),\n\n /** Whether access was granted */\n granted: z.boolean()\n .describe('Whether access was granted'),\n\n /** Time taken to evaluate the policy in milliseconds */\n evaluationDurationMs: z.number()\n .describe('Policy evaluation duration in milliseconds'),\n\n /** Which USING/CHECK clause matched */\n matchedCondition: z.string()\n .optional()\n .describe('Which USING/CHECK clause matched'),\n\n /** Number of rows affected by the operation */\n rowCount: z.number()\n .optional()\n .describe('Number of rows affected'),\n\n /** Additional metadata for the audit event */\n metadata: z.record(z.string(), z.unknown())\n .optional()\n .describe('Additional audit event metadata'),\n}));\n\nexport type RLSAuditEvent = z.infer<typeof RLSAuditEventSchema>;\n\n/**\n * RLS Audit Configuration Schema\n * \n * Controls how RLS policy evaluations are logged and monitored.\n */\nexport const RLSAuditConfigSchema = lazySchema(() => z.object({\n /** Enable RLS audit logging */\n enabled: z.boolean()\n .describe('Enable RLS audit logging'),\n\n /** Which evaluations to log */\n logLevel: z.enum(['all', 'denied_only', 'granted_only', 'none'])\n .describe('Which evaluations to log'),\n\n /** Where to send audit logs */\n destination: z.enum(['system_log', 'audit_trail', 'external'])\n .describe('Audit log destination'),\n\n /** Sampling rate for high-traffic environments (0-1) */\n sampleRate: z.number()\n .min(0)\n .max(1)\n .describe('Sampling rate (0-1) for high-traffic environments'),\n\n /** Number of days to retain audit logs */\n retentionDays: z.number()\n .int()\n .default(90)\n .describe('Audit log retention period in days'),\n\n /** Whether to include row data in audit logs (security-sensitive) */\n includeRowData: z.boolean()\n .default(false)\n .describe('Include row data in audit logs (security-sensitive)'),\n\n /** Alert when access is denied */\n alertOnDenied: z.boolean()\n .default(true)\n .describe('Send alerts when access is denied'),\n}));\n\nexport type RLSAuditConfig = z.infer<typeof RLSAuditConfigSchema>;\n\n/**\n * RLS Configuration Schema\n * \n * Global configuration for the Row-Level Security system.\n * Defines how RLS is enforced across the entire platform.\n */\nexport const RLSConfigSchema = lazySchema(() => z.object({\n /**\n * Global RLS enable/disable flag.\n * When false, all RLS policies are ignored (use with caution!).\n * \n * @default true\n */\n enabled: z.boolean()\n .default(true)\n .describe('Enable RLS enforcement globally'),\n\n /**\n * Default behavior when no policies match.\n * \n * - **deny**: Deny access (secure default)\n * - **allow**: Allow access (permissive mode, not recommended)\n * \n * @default \"deny\"\n */\n defaultPolicy: z.enum(['deny', 'allow'])\n .default('deny')\n .describe('Default action when no policies match'),\n\n /**\n * Whether to allow superusers to bypass RLS.\n * Superusers include system administrators and service accounts.\n * \n * @default true\n */\n allowSuperuserBypass: z.boolean()\n .default(true)\n .describe('Allow superusers to bypass RLS'),\n\n /**\n * List of roles that can bypass RLS.\n * Users with these roles see all records regardless of policies.\n * \n * @example [\"system_admin\", \"data_auditor\"]\n */\n bypassRoles: z.array(z.string())\n .optional()\n .describe('Roles that bypass RLS (see all data)'),\n\n /**\n * Whether to log RLS policy evaluations.\n * Useful for debugging and auditing.\n * Can impact performance if enabled globally.\n * \n * @default false\n */\n logEvaluations: z.boolean()\n .default(false)\n .describe('Log RLS policy evaluations for debugging'),\n\n /**\n * Cache RLS policy evaluation results.\n * Can improve performance for frequently accessed records.\n * Cache is invalidated when policies change or user context changes.\n * \n * @default true\n */\n cacheResults: z.boolean()\n .default(true)\n .describe('Cache RLS evaluation results'),\n\n /**\n * Cache TTL in seconds.\n * How long to cache RLS evaluation results.\n * \n * @default 300 (5 minutes)\n */\n cacheTtlSeconds: z.number()\n .int()\n .positive()\n .default(300)\n .describe('Cache TTL in seconds'),\n\n /**\n * Performance optimization: Pre-fetch user context.\n * Load user context once per request instead of per-query.\n * \n * @default true\n */\n prefetchUserContext: z.boolean()\n .default(true)\n .describe('Pre-fetch user context for performance'),\n\n /**\n * Audit logging configuration for RLS evaluations.\n */\n audit: RLSAuditConfigSchema\n .optional()\n .describe('RLS audit logging configuration'),\n}));\n\n/**\n * User Context Schema\n * \n * Represents the current user's context for RLS evaluation.\n * This data is used to evaluate USING and CHECK clauses.\n */\nexport const RLSUserContextSchema = lazySchema(() => z.object({\n /**\n * User ID\n */\n id: z.string()\n .describe('User ID'),\n\n /**\n * User email\n */\n email: z.string()\n .email()\n .optional()\n .describe('User email'),\n\n /**\n * Tenant/Organization ID\n */\n tenantId: z.string()\n .optional()\n .describe('Tenant/Organization ID'),\n\n /**\n * User role(s)\n */\n role: z.union([\n z.string(),\n z.array(z.string()),\n ])\n .optional()\n .describe('User role(s)'),\n\n /**\n * User department\n */\n department: z.string()\n .optional()\n .describe('User department'),\n\n /**\n * Additional custom attributes\n * Can include any custom user fields for RLS evaluation\n */\n attributes: z.record(z.string(), z.unknown())\n .optional()\n .describe('Additional custom user attributes'),\n}));\n\n/**\n * RLS Policy Evaluation Result\n * \n * Result of evaluating an RLS policy for a specific record.\n * Used for debugging and audit logging.\n */\nexport const RLSEvaluationResultSchema = lazySchema(() => z.object({\n /**\n * Policy name that was evaluated\n */\n policyName: z.string()\n .describe('Policy name'),\n\n /**\n * Whether access was granted\n */\n granted: z.boolean()\n .describe('Whether access was granted'),\n\n /**\n * Evaluation duration in milliseconds\n */\n durationMs: z.number()\n .optional()\n .describe('Evaluation duration in milliseconds'),\n\n /**\n * Error message if evaluation failed\n */\n error: z.string()\n .optional()\n .describe('Error message if evaluation failed'),\n\n /**\n * Evaluated USING clause result\n */\n usingResult: z.boolean()\n .optional()\n .describe('USING clause evaluation result'),\n\n /**\n * Evaluated CHECK clause result (for INSERT/UPDATE)\n */\n checkResult: z.boolean()\n .optional()\n .describe('CHECK clause evaluation result'),\n}));\n\n/**\n * Type exports\n */\nexport type RowLevelSecurityPolicy = z.infer<typeof RowLevelSecurityPolicySchema>;\nexport type RLSConfig = z.infer<typeof RLSConfigSchema>;\nexport type RLSUserContext = z.infer<typeof RLSUserContextSchema>;\nexport type RLSEvaluationResult = z.infer<typeof RLSEvaluationResultSchema>;\n\n/**\n * Helper factory for creating RLS policies\n */\nexport const RLS = {\n /**\n * Create a simple owner-based policy\n */\n ownerPolicy: (object: string, ownerField: string = 'owner_id'): RowLevelSecurityPolicy => ({\n name: `${object}_owner_access`,\n label: `Owner Access for ${object}`,\n object,\n operation: 'all',\n using: `${ownerField} = current_user.id`,\n enabled: true,\n priority: 0,\n }),\n\n /**\n * Create a tenant isolation policy.\n *\n * The default `tenantField` is `organization_id` to match better-auth's\n * organization plugin and the canonical platform schema. The\n * `current_user.organization_id` placeholder is resolved by\n * `RLSCompiler` from `ExecutionContext.tenantId` at request time.\n * Pass a custom field name if your schema uses a different column.\n */\n tenantPolicy: (object: string, tenantField: string = 'organization_id'): RowLevelSecurityPolicy => ({\n name: `${object}_tenant_isolation`,\n label: `Tenant Isolation for ${object}`,\n object,\n operation: 'all',\n using: `${tenantField} = current_user.organization_id`,\n check: `${tenantField} = current_user.organization_id`,\n enabled: true,\n priority: 0,\n }),\n\n /**\n * Create a role-based policy\n */\n rolePolicy: (object: string, roles: string[], condition: string): RowLevelSecurityPolicy => ({\n name: `${object}_${roles.join('_')}_access`,\n label: `${roles.join(', ')} Access for ${object}`,\n object,\n operation: 'select',\n using: condition,\n roles,\n enabled: true,\n priority: 0,\n }),\n\n /**\n * Create a permissive policy (allow all for specific roles)\n */\n allowAllPolicy: (object: string, roles: string[]): RowLevelSecurityPolicy => ({\n name: `${object}_${roles.join('_')}_full_access`,\n label: `Full Access for ${roles.join(', ')}`,\n object,\n operation: 'all',\n using: '1 = 1', // Always true\n roles,\n enabled: true,\n priority: 0,\n }),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { RowLevelSecurityPolicySchema } from './rls.zod';\n\n/**\n * Entity (Object) Level Permissions\n * Defines CRUD + VAMA (View All / Modify All) + Lifecycle access.\n * \n * Refined with enterprise data lifecycle controls:\n * - Transfer (Ownership change)\n * - Restore (Soft delete recovery)\n * - Purge (Hard delete / Compliance)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ObjectPermissionSchema = lazySchema(() => z.object({\n /** C: Create */\n allowCreate: z.boolean().default(false).describe('Create permission'),\n /** R: Read (Owned records or Shared records) */\n allowRead: z.boolean().default(false).describe('Read permission'),\n /** U: Edit (Owned records or Shared records) */\n allowEdit: z.boolean().default(false).describe('Edit permission'),\n /** D: Delete (Owned records or Shared records) */\n allowDelete: z.boolean().default(false).describe('Delete permission'),\n \n /** Lifecycle Operations */\n allowTransfer: z.boolean().default(false).describe('Change record ownership'),\n allowRestore: z.boolean().default(false).describe('Restore from trash (Undelete)'),\n allowPurge: z.boolean().default(false).describe('Permanently delete (Hard Delete/GDPR)'),\n\n /** \n * View All Records: Super-user read access. \n * Bypasses Sharing Rules and Ownership checks.\n * Equivalent to Microsoft Dataverse \"Organization\" level read access.\n */\n viewAllRecords: z.boolean().default(false).describe('View All Data (Bypass Sharing)'),\n \n /** \n * Modify All Records: Super-user write access. \n * Bypasses Sharing Rules and Ownership checks.\n * Equivalent to Microsoft Dataverse \"Organization\" level write access.\n */\n modifyAllRecords: z.boolean().default(false).describe('Modify All Data (Bypass Sharing)'),\n}));\n\n/**\n * Field Level Security (FLS)\n */\nexport const FieldPermissionSchema = lazySchema(() => z.object({\n /** Can see this field */\n readable: z.boolean().default(true).describe('Field read access'),\n /** Can edit this field */\n editable: z.boolean().default(false).describe('Field edit access'),\n}));\n\n/**\n * Permission Set Schema\n * Defines a collection of permissions that can be assigned to users.\n * \n * DIFFERENTIATION:\n * - Profile: The ONE primary functional definition of a user (e.g. Standard User).\n * - Permission Set: Add-on capabilities assigned to users (e.g. Export Reports).\n * - Role: (Defined in src/system/role.zod.ts) Defines data visibility hierarchy.\n * \n * **NAMING CONVENTION:**\n * Permission set names MUST be lowercase snake_case to prevent security issues.\n * \n * @example Good permission set names\n * - 'read_only'\n * - 'system_admin'\n * - 'standard_user'\n * - 'api_access'\n * \n * @example Bad permission set names (will be rejected)\n * - 'ReadOnly' (camelCase)\n * - 'SystemAdmin' (mixed case)\n * - 'Read Only' (spaces)\n */\nexport const PermissionSetSchema = lazySchema(() => z.object({\n /** Unique permission set name */\n name: SnakeCaseIdentifierSchema.describe('Permission set unique name (lowercase snake_case)'),\n \n /** Display label */\n label: z.string().optional().describe('Display label'),\n \n /** Is this a Profile? (Base set for a user) */\n isProfile: z.boolean().default(false).describe('Whether this is a user profile'),\n \n /** Object Permissions Map: <entity_name> -> permissions */\n objects: z.record(z.string(), ObjectPermissionSchema).describe('Entity permissions'),\n \n /** Field Permissions Map: <entity_name>.<field_name> -> permissions */\n fields: z.record(z.string(), FieldPermissionSchema).optional().describe('Field level security'),\n \n /** System permissions (e.g., \"manage_users\") */\n systemPermissions: z.array(z.string()).optional().describe('System level capabilities'),\n \n /**\n * Tab/App Visibility Permissions (Salesforce Pattern)\n * Controls which app tabs are visible, hidden, or set as default for this permission set.\n * \n * @example\n * ```typescript\n * tabPermissions: {\n * 'app_crm': 'visible',\n * 'app_admin': 'hidden',\n * 'app_sales': 'default_on'\n * }\n * ```\n */\n tabPermissions: z.record(z.string(), z.enum(['visible', 'hidden', 'default_on', 'default_off'])).optional()\n .describe('App/tab visibility: visible, hidden, default_on (shown by default), default_off (available but hidden initially)'),\n \n /** \n * Row-Level Security Rules\n * \n * Row-level security policies that filter records based on user context.\n * These rules are applied in addition to object-level permissions.\n * \n * Uses the canonical RLS protocol from rls.zod.ts for comprehensive\n * row-level security features including PostgreSQL-style USING and CHECK clauses.\n * \n * @see {@link RowLevelSecurityPolicySchema} for full RLS specification\n * @see {@link file://./rls.zod.ts} for comprehensive RLS documentation\n * \n * @example Multi-tenant isolation\n * ```typescript\n * rls: [{\n * name: 'tenant_filter',\n * object: 'account',\n * operation: 'select',\n * using: 'organization_id = current_user.organization_id'\n * }]\n * ```\n */\n rowLevelSecurity: z.array(RowLevelSecurityPolicySchema).optional()\n .describe('Row-level security policies (see rls.zod.ts for full spec)'),\n \n /**\n * Context-Based Access Control Variables\n * \n * Custom context variables that can be referenced in RLS rules.\n * These variables are evaluated at runtime based on the user's session.\n * \n * Common context variables:\n * - `current_user.id` - Current user ID\n * - `current_user.organization_id` - Active organization id\n * - `current_user.department` - User's department\n * - `current_user.role` - User's role\n * - `current_user.region` - User's geographic region\n * \n * @example Custom context\n * ```typescript\n * contextVariables: {\n * allowed_regions: ['US', 'EU'],\n * access_level: 2,\n * custom_attribute: 'value'\n * }\n * ```\n */\n contextVariables: z.record(z.string(), z.unknown()).optional().describe('Context variables for RLS evaluation'),\n}));\n\nexport type PermissionSet = z.infer<typeof PermissionSetSchema>;\nexport type ObjectPermission = z.infer<typeof ObjectPermissionSchema>;\nexport type FieldPermission = z.infer<typeof FieldPermissionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Organization-Wide Defaults (OWD)\n * The baseline security posture for an object.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const OWDModel = z.enum([\n 'private', // Only owner can see\n 'public_read', // Everyone can see, owner can edit\n 'public_read_write', // Everyone can see and edit\n 'controlled_by_parent' // Access derived from parent record (Master-Detail)\n]);\n\n/**\n * Sharing Rule Type\n * How is the data shared?\n */\nexport const SharingRuleType = z.enum([\n 'owner', // Based on record ownership (Role Hierarchy)\n 'criteria', // Based on field values (e.g. Status = 'Open')\n]);\n\n/**\n * Sharing Level\n * What access is granted?\n */\nexport const SharingLevel = z.enum([\n 'read', // Read Only\n 'edit', // Read / Write\n 'full' // Full Access (Transfer, Share, Delete)\n]);\n\n/**\n * Recipient Type \n * Who receives the access?\n */\nexport const ShareRecipientType = z.enum([\n 'user',\n 'group',\n 'role',\n 'role_and_subordinates',\n 'guest' // for public sharing\n]);\n\n/**\n * Base Sharing Rule\n * Common metadata for all sharing strategies.\n */\nconst BaseSharingRuleSchema = 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'),\n description: z.string().optional().describe('Administrative notes'),\n \n // Scope\n object: z.string().describe('Target Object Name'),\n active: z.boolean().default(true),\n \n // Access\n accessLevel: SharingLevel.default('read'),\n \n // Recipient (Whom to share with)\n sharedWith: z.object({\n type: ShareRecipientType,\n value: z.string().describe('ID or Code of the User/Group/Role'),\n }).describe('The recipient of the shared access'),\n});\n\n/**\n * 1. Criteria-Based Sharing Rule\n * Share records that meet specific field criteria.\n */\nexport const CriteriaSharingRuleSchema = lazySchema(() => BaseSharingRuleSchema.extend({\n type: z.literal('criteria'),\n condition: ExpressionInputSchema.describe('Predicate (CEL). e.g. P`record.department == \"Sales\"`'),\n}));\n\n/**\n * 2. Owner-Based Sharing Rule\n * Share records owned by a specific group of users.\n */\nexport const OwnerSharingRuleSchema = lazySchema(() => BaseSharingRuleSchema.extend({\n type: z.literal('owner'),\n ownedBy: z.object({\n type: ShareRecipientType,\n value: z.string(),\n }).describe('Source group/role whose records are being shared'),\n}));\n\n/**\n * Master Sharing Rule Schema\n */\nexport const SharingRuleSchema = lazySchema(() => z.discriminatedUnion('type', [\n CriteriaSharingRuleSchema,\n OwnerSharingRuleSchema\n]));\n\nexport type SharingRule = z.infer<typeof SharingRuleSchema>;\nexport type CriteriaSharingRule = z.infer<typeof CriteriaSharingRuleSchema>;\nexport type OwnerSharingRule = z.infer<typeof OwnerSharingRuleSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Password Complexity Policy\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PasswordPolicySchema = lazySchema(() => z.object({\n minLength: z.number().default(8),\n requireUppercase: z.boolean().default(true),\n requireLowercase: z.boolean().default(true),\n requireNumbers: z.boolean().default(true),\n requireSymbols: z.boolean().default(false),\n expirationDays: z.number().optional().describe('Force password change every X days'),\n historyCount: z.number().default(3).describe('Prevent reusing last X passwords'),\n}));\n\n/**\n * Network Access Policy (IP Whitelisting)\n */\nexport const NetworkPolicySchema = lazySchema(() => z.object({\n trustedRanges: z.array(z.string()).describe('CIDR ranges allowed to access (e.g. 10.0.0.0/8)'),\n blockUnknown: z.boolean().default(false).describe('Block all IPs not in trusted ranges'),\n vpnRequired: z.boolean().default(false),\n}));\n\n/**\n * Session Policy\n */\nexport const SessionPolicySchema = lazySchema(() => z.object({\n idleTimeout: z.number().default(30).describe('Minutes before idle session logout'),\n absoluteTimeout: z.number().default(480).describe('Max session duration (minutes)'),\n forceMfa: z.boolean().default(false).describe('Require 2FA for all users'),\n}));\n\n/**\n * Audit Retention Policy\n */\nexport const AuditPolicySchema = lazySchema(() => z.object({\n logRetentionDays: z.number().default(180),\n sensitiveFields: z.array(z.string()).describe('Fields to redact in logs (e.g. password, ssn)'),\n captureRead: z.boolean().default(false).describe('Log read access (High volume!)'),\n}));\n\n/**\n * Security Policy Schema\n * \"The Cloud Compliance Contract\"\n */\nexport const PolicySchema = lazySchema(() => z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Policy Name'),\n \n password: PasswordPolicySchema.optional(),\n network: NetworkPolicySchema.optional(),\n session: SessionPolicySchema.optional(),\n audit: AuditPolicySchema.optional(),\n\n /** Assignment */\n isDefault: z.boolean().default(false).describe('Apply to all users by default'),\n assignedProfiles: z.array(z.string()).optional().describe('Apply to specific profiles'),\n}));\n\nexport type Policy = z.infer<typeof PolicySchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { HttpMethod, RateLimitConfigSchema } from '../shared/http.zod';\n\n/**\n * API Mapping Schema\n * Transform input/output data.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ApiMappingSchema = lazySchema(() => z.object({\n source: z.string().describe('Source field/path'),\n target: z.string().describe('Target field/path'),\n transform: z.string().optional().describe('Transformation function name'),\n}));\n\n/**\n * API Endpoint Schema\n * Defines an external facing API contract.\n */\nexport const ApiEndpointSchema = z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique endpoint ID'),\n path: z.string().regex(/^\\//).describe('URL Path (e.g. /api/v1/customers)'),\n method: HttpMethod.describe('HTTP Method'),\n \n /** Documentation */\n summary: z.string().optional(),\n description: z.string().optional(),\n \n /** Execution Logic */\n type: z.enum(['flow', 'script', 'object_operation', 'proxy']).describe('Implementation type'),\n target: z.string().describe('Target Flow ID, Script Name, or Proxy URL'),\n \n /** Logic Config */\n objectParams: z.object({\n object: z.string().optional(),\n operation: z.enum(['find', 'get', 'create', 'update', 'delete']).optional(),\n }).optional().describe('For object_operation type'),\n \n /** Data Transformation */\n inputMapping: z.array(ApiMappingSchema).optional().describe('Map Request Body to Internal Params'),\n outputMapping: z.array(ApiMappingSchema).optional().describe('Map Internal Result to Response Body'),\n \n /** Policies */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n rateLimit: RateLimitConfigSchema.optional().describe('Rate limiting policy'),\n cacheTtl: z.number().optional().describe('Response cache TTL in seconds'),\n});\n\nexport const ApiEndpoint = Object.assign(ApiEndpointSchema, {\n create: <T extends z.input<typeof ApiEndpointSchema>>(config: T) => config,\n});\n\nexport type ApiEndpoint = z.infer<typeof ApiEndpointSchema>;\nexport type ApiEndpointInput = z.input<typeof ApiEndpointSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Feature Rollout Strategy\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FeatureStrategy = z.enum([\n 'boolean', // Simple On/Off\n 'percentage', // Gradual rollout (0-100%)\n 'user_list', // Specific users\n 'group', // Specific groups/roles\n 'custom' // Custom constraint/script\n]);\n\n/**\n * Feature Flag Protocol\n * \n * Manages feature toggles and gradual rollouts.\n * Used for CI/CD, A/B Testing, and Trunk-Based Development.\n */\nexport const FeatureFlagSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Feature key (snake_case)'),\n label: z.string().optional().describe('Display label'),\n description: z.string().optional(),\n \n /** Default state */\n enabled: z.boolean().default(false).describe('Is globally enabled'),\n \n /** Rollout Strategy */\n strategy: FeatureStrategy.default('boolean'),\n \n /** Strategy Configuration */\n conditions: z.object({\n percentage: z.number().min(0).max(100).optional(),\n users: z.array(z.string()).optional(),\n groups: z.array(z.string()).optional(),\n expression: ExpressionInputSchema.optional().describe('Custom predicate (CEL).')\n }).optional(),\n \n /** Integration */\n environment: z.enum(['dev', 'staging', 'prod', 'all']).default('all')\n .describe('Environment validity'),\n \n /** Expiration */\n expiresAt: z.string().datetime().optional().describe('Feature flag expiration date'),\n}));\n\nexport const FeatureFlag = Object.assign(FeatureFlagSchema, {\n create: <T extends z.input<typeof FeatureFlagSchema>>(config: T) => config,\n});\n\nexport type FeatureFlag = z.infer<typeof FeatureFlagSchema>;\nexport type FeatureFlagInput = z.input<typeof FeatureFlagSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { StateMachineSchema } from '../automation/state-machine.zod';\n\n/**\n * AI Model Configuration\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const AIModelConfigSchema = lazySchema(() => z.object({\n provider: z.enum(['openai', 'azure_openai', 'anthropic', 'local']).default('openai'),\n model: z.string().describe('Model name (e.g. gpt-4, claude-3-opus)'),\n temperature: z.number().min(0).max(2).default(0.7),\n maxTokens: z.number().optional(),\n topP: z.number().optional(),\n}));\n\n/**\n * AI Tool Definition\n * References to Actions, Flows, or Objects available to the Agent.\n */\nexport const AIToolSchema = lazySchema(() => z.object({\n type: z.enum(['action', 'flow', 'query', 'vector_search']),\n name: z.string().describe('Reference name (Action Name, Flow Name)'),\n description: z.string().optional().describe('Override description for the LLM'),\n}));\n\n/**\n * AI Knowledge Base\n * RAG configuration.\n */\nexport const AIKnowledgeSchema = lazySchema(() => z.object({\n topics: z.array(z.string()).describe('Topics/Tags to recruit knowledge from'),\n indexes: z.array(z.string()).describe('Vector Store Indexes'),\n}));\n\n/**\n * Structured Output Format\n * Defines the expected output format for agent responses\n */\nexport const StructuredOutputFormatSchema = lazySchema(() => z.enum([\n 'json_object',\n 'json_schema',\n 'regex',\n 'grammar',\n 'xml',\n]).describe('Output format for structured agent responses'));\n\n/**\n * Transform Pipeline Step\n * Post-processing steps applied to structured output\n */\nexport const TransformPipelineStepSchema = lazySchema(() => z.enum([\n 'trim',\n 'parse_json',\n 'validate',\n 'coerce_types',\n]).describe('Post-processing step for structured output'));\n\n/**\n * Structured Output Configuration\n * Controls how the agent formats and validates its output\n */\nexport const StructuredOutputConfigSchema = lazySchema(() => z.object({\n /** Output format type */\n format: StructuredOutputFormatSchema.describe('Expected output format'),\n\n /** JSON Schema definition for output validation */\n schema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema definition for output'),\n\n /** Whether to enforce exact schema compliance */\n strict: z.boolean().default(false).describe('Enforce exact schema compliance'),\n\n /** Retry on validation failure */\n retryOnValidationFailure: z.boolean().default(true).describe('Retry generation when output fails validation'),\n\n /** Maximum retry attempts */\n maxRetries: z.number().int().min(0).default(3).describe('Maximum retries on validation failure'),\n\n /** Fallback format if primary format fails */\n fallbackFormat: StructuredOutputFormatSchema.optional().describe('Fallback format if primary format fails'),\n\n /** Post-processing pipeline steps */\n transformPipeline: z.array(TransformPipelineStepSchema).optional().describe('Post-processing steps applied to output'),\n}).describe('Structured output configuration for agent responses'));\n\nexport type StructuredOutputFormat = z.infer<typeof StructuredOutputFormatSchema>;\nexport type TransformPipelineStep = z.infer<typeof TransformPipelineStepSchema>;\nexport type StructuredOutputConfig = z.infer<typeof StructuredOutputConfigSchema>;\n\n/**\n * AI Agent Schema\n * Definition of an autonomous agent specialized for a domain.\n *\n * The Agent → Skill → Tool three-tier architecture aligns with\n * Salesforce Agentforce, Microsoft Copilot Studio, and ServiceNow\n * Now Assist metadata patterns.\n *\n * - **skills**: Primary capability model — references skill names.\n * - **tools**: Fallback / direct tool references (legacy inline format).\n *\n * @example Agent-Skill Architecture\n * ```ts\n * defineAgent({\n * name: 'support_tier_1',\n * label: 'First Line Support',\n * role: 'Help Desk Assistant',\n * instructions: 'You are a helpful assistant. Always verify user identity first.',\n * skills: ['case_management', 'knowledge_search'],\n * knowledge: { topics: ['faq', 'policies'], indexes: ['support_docs'] },\n * });\n * ```\n *\n * @example Legacy Tool References (backward-compatible)\n * ```ts\n * defineAgent({\n * name: 'support_tier_1',\n * label: 'First Line Support',\n * role: 'Help Desk Assistant',\n * instructions: 'You are a helpful assistant.',\n * tools: [\n * { type: 'flow', name: 'reset_password', description: 'Trigger password reset email' },\n * { type: 'query', name: 'get_order_status', description: 'Check order shipping status' },\n * ],\n * });\n * ```\n */\nexport const AgentSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Agent unique identifier'),\n label: z.string().describe('Agent display name'),\n avatar: z.string().optional(),\n role: z.string().describe('The persona/role (e.g. \"Senior Support Engineer\")'),\n\n /** Cognition */\n instructions: z.string().describe('System Prompt / Prime Directives'),\n model: AIModelConfigSchema.optional(),\n lifecycle: StateMachineSchema.optional().describe('State machine defining the agent conversation follow and constraints'),\n\n /** Capabilities — Skill-based (primary) */\n skills: z.array(z.string().regex(/^[a-z_][a-z0-9_]*$/)).optional().describe('Skill names to attach (Agent→Skill→Tool architecture)'),\n\n /** Capabilities — Direct tool references (fallback / legacy) */\n tools: z.array(AIToolSchema).optional().describe('Direct tool references (legacy fallback)'),\n\n /** Knowledge */\n knowledge: AIKnowledgeSchema.optional().describe('RAG access'),\n\n /** Interface */\n active: z.boolean().default(true),\n access: z.array(z.string()).optional().describe('Who can chat with this agent'),\n\n /** Permission profiles/roles required to use this agent */\n permissions: z.array(z.string()).optional().describe('Required permissions or roles'),\n\n /** Multi-tenancy & Visibility */\n tenantId: z.string().optional().describe('Tenant/Organization ID'),\n visibility: z.enum(['global', 'organization', 'private']).default('organization'),\n\n /** Autonomous Reasoning */\n planning: z.object({\n /** Planning strategy for autonomous reasoning loops */\n strategy: z.enum(['react', 'plan_and_execute', 'reflexion', 'tree_of_thought']).default('react').describe('Autonomous reasoning strategy'),\n\n /** Maximum reasoning iterations before stopping */\n maxIterations: z.number().int().min(1).max(100).default(10).describe('Maximum planning loop iterations'),\n\n /** Whether the agent can revise its own plan mid-execution */\n allowReplan: z.boolean().default(true).describe('Allow dynamic re-planning based on intermediate results'),\n }).optional().describe('Autonomous reasoning and planning configuration'),\n\n /** Memory Management */\n memory: z.object({\n /** Short-term (working) memory configuration */\n shortTerm: z.object({\n /** Maximum number of recent messages to retain */\n maxMessages: z.number().int().min(1).default(50).describe('Max recent messages in working memory'),\n\n /** Maximum token budget for short-term context */\n maxTokens: z.number().int().min(100).optional().describe('Max tokens for short-term context window'),\n }).optional().describe('Short-term / working memory'),\n\n /** Long-term (persistent) memory configuration */\n longTerm: z.object({\n /** Whether long-term memory is enabled */\n enabled: z.boolean().default(false).describe('Enable long-term memory persistence'),\n\n /** Storage backend for long-term memory */\n store: z.enum(['vector', 'database', 'redis']).default('vector').describe('Long-term memory storage backend'),\n\n /** Maximum number of persisted memory entries */\n maxEntries: z.number().int().min(1).optional().describe('Max entries in long-term memory'),\n }).optional().describe('Long-term / persistent memory'),\n\n /** Reflection interval — how often the agent reflects on past actions */\n reflectionInterval: z.number().int().min(1).optional().describe('Reflect every N interactions to improve behavior'),\n }).optional().describe('Agent memory management'),\n\n /** Guardrails */\n guardrails: z.object({\n /** Maximum tokens the agent may consume per invocation */\n maxTokensPerInvocation: z.number().int().min(1).optional().describe('Token budget per single invocation'),\n\n /** Maximum wall-clock time per invocation in seconds */\n maxExecutionTimeSec: z.number().int().min(1).optional().describe('Max execution time in seconds'),\n\n /** Topics or actions the agent must avoid */\n blockedTopics: z.array(z.string()).optional().describe('Forbidden topics or action names'),\n }).optional().describe('Safety guardrails for the agent'),\n\n /** Structured Output */\n structuredOutput: StructuredOutputConfigSchema.optional().describe('Structured output format and validation configuration'),\n}));\n\n/**\n * Type-safe factory for creating AI agent definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example Agent-Skill Architecture (recommended)\n * ```ts\n * const supportAgent = defineAgent({\n * name: 'support_agent',\n * label: 'Support Agent',\n * role: 'Senior Support Engineer',\n * instructions: 'You help customers resolve technical issues.',\n * skills: ['case_management', 'knowledge_search'],\n * });\n * ```\n *\n * @example Legacy Tool References (backward-compatible)\n * ```ts\n * const supportAgent = defineAgent({\n * name: 'support_agent',\n * label: 'Support Agent',\n * role: 'Senior Support Engineer',\n * instructions: 'You help customers resolve technical issues.',\n * tools: [{ type: 'action', name: 'create_ticket' }],\n * });\n * ```\n */\nexport function defineAgent(config: z.input<typeof AgentSchema>): Agent {\n return AgentSchema.parse(config);\n}\n\nexport type Agent = z.infer<typeof AgentSchema>;\nexport type AITool = z.infer<typeof AIToolSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// ==========================================\n// Trigger Condition\n// ==========================================\n\n/**\n * Skill Trigger Condition Schema\n *\n * Defines programmatic conditions under which a skill becomes active.\n * Allows context-aware activation based on object type, user role, etc.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SkillTriggerConditionSchema = lazySchema(() => z.object({\n /** Condition field (e.g. 'objectName', 'userRole', 'channel') */\n field: z.string().describe('Context field to evaluate'),\n\n /** Comparison operator */\n operator: z.enum(['eq', 'neq', 'in', 'not_in', 'contains']).describe('Comparison operator'),\n\n /** Expected value(s) */\n value: z.union([z.string(), z.array(z.string())]).describe('Expected value or values'),\n}));\n\nexport type SkillTriggerCondition = z.infer<typeof SkillTriggerConditionSchema>;\n\n// ==========================================\n// Skill Schema\n// ==========================================\n\n/**\n * Skill Schema\n *\n * An ability group that aggregates related tools by domain.\n * Skills are the middle tier of the Agent → Skill → Tool architecture,\n * providing reusable capability bundles that can be shared across agents.\n *\n * Aligned with Salesforce Agentforce Topics, Microsoft Copilot Studio Topics,\n * and ServiceNow Skill metadata patterns.\n *\n * @example\n * ```ts\n * const skill = defineSkill({\n * name: 'case_management',\n * label: 'Case Management',\n * description: 'Handles support case lifecycle',\n * instructions: 'Use these tools to create, update, and resolve support cases.',\n * tools: ['create_case', 'update_case', 'resolve_case', 'query_cases'],\n * triggerPhrases: ['create a case', 'open a ticket', 'resolve issue'],\n * });\n * ```\n */\nexport const SkillSchema = lazySchema(() => z.object({\n /** Machine name (snake_case, globally unique) */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Skill unique identifier (snake_case)'),\n\n /** Human-readable display name */\n label: z.string().describe('Skill display name'),\n\n /** Detailed description of the skill's purpose */\n description: z.string().optional().describe('Skill description'),\n\n /**\n * Instructions injected into the system prompt when this skill is active.\n * Guides the LLM on how and when to use the skill's tools.\n */\n instructions: z.string().optional().describe('LLM instructions when skill is active'),\n\n /**\n * References to tool names that belong to this skill.\n * Tools must be registered as first-class metadata (type: 'tool').\n */\n tools: z.array(z.string().regex(/^[a-z_][a-z0-9_]*$/)).describe('Tool names belonging to this skill'),\n\n /**\n * Natural language phrases that trigger skill activation.\n * Used for intent matching and skill routing.\n */\n triggerPhrases: z.array(z.string()).optional().describe('Phrases that activate this skill'),\n\n /**\n * Programmatic conditions for skill activation.\n * Evaluated against the runtime context (object name, user role, etc.).\n */\n triggerConditions: z.array(SkillTriggerConditionSchema).optional().describe('Programmatic activation conditions'),\n\n /** Permission profiles/roles required to use this skill */\n permissions: z.array(z.string()).optional().describe('Required permissions or roles'),\n\n /** Whether the skill is enabled */\n active: z.boolean().default(true).describe('Whether the skill is enabled'),\n}));\n\nexport type Skill = z.infer<typeof SkillSchema>;\n\n// ==========================================\n// Factory\n// ==========================================\n\n/**\n * Type-safe factory for creating AI skill definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const skill = defineSkill({\n * name: 'order_management',\n * label: 'Order Management',\n * description: 'Handles order lifecycle operations',\n * instructions: 'Use these tools to manage customer orders.',\n * tools: ['create_order', 'update_order', 'cancel_order'],\n * triggerPhrases: ['place an order', 'cancel my order'],\n * triggerConditions: [\n * { field: 'objectName', operator: 'eq', value: 'order' },\n * ],\n * });\n * ```\n */\nexport function defineSkill(config: z.input<typeof SkillSchema>): Skill {\n return SkillSchema.parse(config);\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * AI Cost Tracking Protocol\n * \n * Monitor and control AI API costs with budgets, alerts, and analytics.\n * Provides cost optimization, budget enforcement, and financial reporting.\n */\n\n/**\n * Token Usage Schema\n * Standardized across all AI operations\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const TokenUsageSchema = lazySchema(() => z.object({\n prompt: z.number().int().nonnegative().describe('Input tokens'),\n completion: z.number().int().nonnegative().describe('Output tokens'),\n total: z.number().int().nonnegative().describe('Total tokens'),\n}));\n\nexport type TokenUsage = z.infer<typeof TokenUsageSchema>;\n\n/**\n * AI Operation Cost Schema\n * Unified cost tracking for all AI operations\n */\nexport const AIOperationCostSchema = lazySchema(() => z.object({\n operationId: z.string(),\n operationType: z.enum(['conversation', 'orchestration', 'prediction', 'rag', 'nlq']),\n agentName: z.string().optional().describe('Agent that performed the operation'),\n modelId: z.string(),\n tokens: TokenUsageSchema,\n cost: z.number().nonnegative().describe('Cost in USD'),\n timestamp: z.string().datetime(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n}));\n\nexport type AIOperationCost = z.infer<typeof AIOperationCostSchema>;\n\n/**\n * Cost Metric Type\n */\nexport const CostMetricTypeSchema = lazySchema(() => z.enum([\n 'token', // Cost per token\n 'request', // Cost per API request\n 'character', // Cost per character (e.g., TTS)\n 'second', // Cost per second (e.g., speech)\n 'image', // Cost per image\n 'embedding', // Cost per embedding\n]));\n\n/**\n * Billing Period\n */\nexport const BillingPeriodSchema = lazySchema(() => z.enum([\n 'hourly',\n 'daily',\n 'weekly',\n 'monthly',\n 'quarterly',\n 'yearly',\n 'custom',\n]));\n\n/**\n * Cost Entry\n * Extended from AIOperationCostSchema with additional tracking fields\n */\nexport const CostEntrySchema = lazySchema(() => z.object({\n /** Identity */\n id: z.string().describe('Unique cost entry ID'),\n timestamp: z.string().datetime().describe('ISO 8601 timestamp'),\n \n /** Request Details */\n modelId: z.string().describe('AI model used'),\n provider: z.string().describe('AI provider (e.g., \"openai\", \"anthropic\")'),\n operation: z.string().describe('Operation type (e.g., \"chat_completion\", \"embedding\")'),\n \n /** Usage Metrics - Standardized */\n tokens: TokenUsageSchema.optional().describe('Standardized token usage'),\n requestCount: z.number().int().positive().default(1),\n \n /** Cost Calculation */\n promptCost: z.number().nonnegative().optional().describe('Cost of prompt tokens'),\n completionCost: z.number().nonnegative().optional().describe('Cost of completion tokens'),\n totalCost: z.number().nonnegative().describe('Total cost in base currency'),\n currency: z.string().default('USD'),\n \n /** Context */\n sessionId: z.string().optional().describe('Conversation session ID'),\n userId: z.string().optional().describe('User who triggered the request'),\n agentId: z.string().optional().describe('AI agent ID'),\n object: z.string().optional().describe('Related object (e.g., \"case\", \"project\")'),\n recordId: z.string().optional().describe('Related record ID'),\n \n /** Metadata */\n tags: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n}));\n\n/**\n * Budget Type\n */\nexport const BudgetTypeSchema = lazySchema(() => z.enum([\n 'global', // Organization-wide budget\n 'user', // Per-user budget\n 'agent', // Per-agent budget\n 'object', // Per-object budget (e.g., per case)\n 'project', // Per-project budget\n 'department', // Per-department budget\n]));\n\n/**\n * Budget Limit\n */\nexport const BudgetLimitSchema = lazySchema(() => z.object({\n /** Limit Configuration */\n type: BudgetTypeSchema,\n scope: z.string().optional().describe('Scope identifier (userId, agentId, etc.)'),\n \n /** Limit Amount */\n maxCost: z.number().nonnegative().describe('Maximum cost limit'),\n currency: z.string().default('USD'),\n \n /** Period */\n period: BillingPeriodSchema,\n customPeriodDays: z.number().int().positive().optional().describe('Custom period in days'),\n \n /** Soft Limits & Warnings */\n softLimit: z.number().nonnegative().optional().describe('Soft limit for warnings'),\n warnThresholds: z.array(z.number().min(0).max(1)).optional().describe('Warning thresholds (e.g., [0.5, 0.8, 0.95])'),\n \n /** Enforcement */\n enforced: z.boolean().default(true).describe('Block requests when exceeded'),\n gracePeriodSeconds: z.number().int().nonnegative().default(0).describe('Grace period after limit exceeded'),\n \n /** Rollover */\n allowRollover: z.boolean().default(false).describe('Allow unused budget to rollover'),\n maxRolloverPercentage: z.number().min(0).max(1).optional().describe('Max rollover as % of limit'),\n \n /** Metadata */\n name: z.string().optional().describe('Budget name'),\n description: z.string().optional(),\n active: z.boolean().default(true),\n tags: z.array(z.string()).optional(),\n}));\n\n/**\n * Budget Status\n */\nexport const BudgetStatusSchema = lazySchema(() => z.object({\n /** Budget Reference */\n budgetId: z.string(),\n type: BudgetTypeSchema,\n scope: z.string().optional(),\n \n /** Current Period */\n periodStart: z.string().datetime().describe('ISO 8601 timestamp'),\n periodEnd: z.string().datetime().describe('ISO 8601 timestamp'),\n \n /** Usage */\n currentCost: z.number().nonnegative().default(0),\n maxCost: z.number().nonnegative(),\n currency: z.string().default('USD'),\n \n /** Status */\n percentageUsed: z.number().nonnegative().describe('Usage as percentage (can exceed 1.0 if over budget)'),\n remainingCost: z.number().describe('Remaining budget (can be negative if exceeded)'),\n isExceeded: z.boolean().default(false),\n isWarning: z.boolean().default(false),\n \n /** Projections */\n projectedCost: z.number().nonnegative().optional().describe('Projected cost for period'),\n projectedOverage: z.number().nonnegative().optional().describe('Projected overage'),\n \n /** Last Update */\n lastUpdated: z.string().datetime().describe('ISO 8601 timestamp'),\n}));\n\n/**\n * Cost Alert Type\n */\nexport const CostAlertTypeSchema = lazySchema(() => z.enum([\n 'threshold_warning', // Warning threshold reached\n 'threshold_critical', // Critical threshold reached\n 'limit_exceeded', // Budget limit exceeded\n 'anomaly_detected', // Unusual spending pattern\n 'projection_exceeded', // Projected to exceed budget\n]));\n\n/**\n * Cost Alert\n */\nexport const CostAlertSchema = lazySchema(() => z.object({\n /** Alert Details */\n id: z.string(),\n timestamp: z.string().datetime().describe('ISO 8601 timestamp'),\n type: CostAlertTypeSchema,\n severity: z.enum(['info', 'warning', 'critical']),\n \n /** Budget Context */\n budgetId: z.string().optional(),\n budgetType: BudgetTypeSchema.optional(),\n scope: z.string().optional(),\n \n /** Alert Information */\n message: z.string().describe('Alert message'),\n currentCost: z.number().nonnegative(),\n maxCost: z.number().nonnegative().optional(),\n threshold: z.number().min(0).max(1).optional(),\n currency: z.string().default('USD'),\n \n /** Recommendations */\n recommendations: z.array(z.string()).optional(),\n \n /** Status */\n acknowledged: z.boolean().default(false),\n acknowledgedBy: z.string().optional(),\n acknowledgedAt: z.string().datetime().optional(),\n resolved: z.boolean().default(false),\n \n /** Metadata */\n metadata: z.record(z.string(), z.unknown()).optional(),\n}));\n\n/**\n * Cost Breakdown Dimension\n */\nexport const CostBreakdownDimensionSchema = lazySchema(() => z.enum([\n 'model',\n 'provider',\n 'user',\n 'agent',\n 'object',\n 'operation',\n 'date',\n 'hour',\n 'tag',\n]));\n\n/**\n * Cost Breakdown Entry\n */\nexport const CostBreakdownEntrySchema = lazySchema(() => z.object({\n dimension: CostBreakdownDimensionSchema,\n value: z.string().describe('Dimension value (e.g., model ID, user ID)'),\n \n /** Metrics */\n totalCost: z.number().nonnegative(),\n requestCount: z.number().int().nonnegative(),\n totalTokens: z.number().int().nonnegative().optional(),\n \n /** Share */\n percentageOfTotal: z.number().min(0).max(1),\n \n /** Time Range */\n periodStart: z.string().datetime().optional(),\n periodEnd: z.string().datetime().optional(),\n}));\n\n/**\n * Cost Analytics\n */\nexport const CostAnalyticsSchema = lazySchema(() => z.object({\n /** Time Range */\n periodStart: z.string().datetime().describe('ISO 8601 timestamp'),\n periodEnd: z.string().datetime().describe('ISO 8601 timestamp'),\n \n /** Summary Metrics */\n totalCost: z.number().nonnegative(),\n totalRequests: z.number().int().nonnegative(),\n totalTokens: z.number().int().nonnegative().optional(),\n currency: z.string().default('USD'),\n \n /** Averages */\n averageCostPerRequest: z.number().nonnegative(),\n averageCostPerToken: z.number().nonnegative().optional(),\n averageRequestsPerDay: z.number().nonnegative(),\n \n /** Trends */\n costTrend: z.enum(['increasing', 'decreasing', 'stable']).optional(),\n trendPercentage: z.number().optional().describe('% change vs previous period'),\n \n /** Breakdowns */\n byModel: z.array(CostBreakdownEntrySchema).optional(),\n byProvider: z.array(CostBreakdownEntrySchema).optional(),\n byUser: z.array(CostBreakdownEntrySchema).optional(),\n byAgent: z.array(CostBreakdownEntrySchema).optional(),\n byOperation: z.array(CostBreakdownEntrySchema).optional(),\n byDate: z.array(CostBreakdownEntrySchema).optional(),\n \n /** Top Consumers */\n topModels: z.array(CostBreakdownEntrySchema).optional(),\n topUsers: z.array(CostBreakdownEntrySchema).optional(),\n topAgents: z.array(CostBreakdownEntrySchema).optional(),\n \n /** Efficiency Metrics */\n tokensPerDollar: z.number().nonnegative().optional(),\n requestsPerDollar: z.number().nonnegative().optional(),\n}));\n\n/**\n * Cost Optimization Recommendation\n */\nexport const CostOptimizationRecommendationSchema = lazySchema(() => z.object({\n /** Recommendation Details */\n id: z.string(),\n type: z.enum([\n 'switch_model',\n 'reduce_tokens',\n 'batch_requests',\n 'cache_results',\n 'adjust_parameters',\n 'limit_usage',\n ]),\n \n /** Impact */\n title: z.string(),\n description: z.string(),\n estimatedSavings: z.number().nonnegative().optional(),\n savingsPercentage: z.number().min(0).max(1).optional(),\n \n /** Implementation */\n priority: z.enum(['low', 'medium', 'high']),\n effort: z.enum(['low', 'medium', 'high']),\n actionable: z.boolean().default(true),\n actionSteps: z.array(z.string()).optional(),\n \n /** Context */\n targetModel: z.string().optional(),\n alternativeModel: z.string().optional(),\n affectedUsers: z.array(z.string()).optional(),\n \n /** Status */\n status: z.enum(['pending', 'accepted', 'rejected', 'implemented']).default('pending'),\n implementedAt: z.string().datetime().optional(),\n}));\n\n/**\n * Cost Report\n */\nexport const CostReportSchema = lazySchema(() => z.object({\n /** Report Metadata */\n id: z.string(),\n name: z.string(),\n generatedAt: z.string().datetime().describe('ISO 8601 timestamp'),\n \n /** Time Range */\n periodStart: z.string().datetime().describe('ISO 8601 timestamp'),\n periodEnd: z.string().datetime().describe('ISO 8601 timestamp'),\n period: BillingPeriodSchema,\n \n /** Analytics */\n analytics: CostAnalyticsSchema,\n \n /** Budgets */\n budgets: z.array(BudgetStatusSchema).optional(),\n \n /** Alerts */\n alerts: z.array(CostAlertSchema).optional(),\n activeAlertCount: z.number().int().nonnegative().default(0),\n \n /** Recommendations */\n recommendations: z.array(CostOptimizationRecommendationSchema).optional(),\n \n /** Comparisons */\n previousPeriodCost: z.number().nonnegative().optional(),\n costChange: z.number().optional().describe('Change vs previous period'),\n costChangePercentage: z.number().optional(),\n \n /** Forecasting */\n forecastedCost: z.number().nonnegative().optional(),\n forecastedBudgetStatus: z.enum(['under', 'at', 'over']).optional(),\n \n /** Export */\n format: z.enum(['summary', 'detailed', 'executive']).default('summary'),\n currency: z.string().default('USD'),\n}));\n\n/**\n * Cost Query Filters\n */\nexport const CostQueryFiltersSchema = lazySchema(() => z.object({\n /** Time Range */\n startDate: z.string().datetime().optional().describe('ISO 8601 timestamp'),\n endDate: z.string().datetime().optional().describe('ISO 8601 timestamp'),\n \n /** Dimensions */\n modelIds: z.array(z.string()).optional(),\n providers: z.array(z.string()).optional(),\n userIds: z.array(z.string()).optional(),\n agentIds: z.array(z.string()).optional(),\n operations: z.array(z.string()).optional(),\n sessionIds: z.array(z.string()).optional(),\n \n /** Cost Range */\n minCost: z.number().nonnegative().optional(),\n maxCost: z.number().nonnegative().optional(),\n \n /** Tags */\n tags: z.array(z.string()).optional(),\n \n /** Aggregation */\n groupBy: z.array(CostBreakdownDimensionSchema).optional(),\n \n /** Sorting */\n orderBy: z.enum(['timestamp', 'cost', 'tokens']).optional().default('timestamp'),\n orderDirection: z.enum(['asc', 'desc']).optional().default('desc'),\n \n /** Pagination */\n limit: z.number().int().positive().optional(),\n offset: z.number().int().nonnegative().optional(),\n}));\n\n// Type exports\nexport type CostMetricType = z.infer<typeof CostMetricTypeSchema>;\nexport type BillingPeriod = z.infer<typeof BillingPeriodSchema>;\nexport type CostEntry = z.infer<typeof CostEntrySchema>;\nexport type BudgetType = z.infer<typeof BudgetTypeSchema>;\nexport type BudgetLimit = z.infer<typeof BudgetLimitSchema>;\nexport type BudgetStatus = z.infer<typeof BudgetStatusSchema>;\nexport type CostAlertType = z.infer<typeof CostAlertTypeSchema>;\nexport type CostAlert = z.infer<typeof CostAlertSchema>;\nexport type CostBreakdownDimension = z.infer<typeof CostBreakdownDimensionSchema>;\nexport type CostBreakdownEntry = z.infer<typeof CostBreakdownEntrySchema>;\nexport type CostAnalytics = z.infer<typeof CostAnalyticsSchema>;\nexport type CostOptimizationRecommendation = z.infer<typeof CostOptimizationRecommendationSchema>;\nexport type CostReport = z.infer<typeof CostReportSchema>;\nexport type CostQueryFilters = z.infer<typeof CostQueryFiltersSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { TokenUsageSchema } from './cost.zod';\n\n/**\n * RAG (Retrieval-Augmented Generation) Pipeline Protocol\n * \n * Defines schemas for building context-aware AI assistants using RAG techniques.\n * Enables vector search, document chunking, embeddings, and retrieval configuration.\n */\n\n/**\n * Vector Store Provider\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const VectorStoreProviderSchema = lazySchema(() => z.enum([\n 'pinecone',\n 'weaviate',\n 'qdrant',\n 'milvus',\n 'chroma',\n 'pgvector',\n 'redis',\n 'opensearch',\n 'elasticsearch',\n 'custom',\n]));\n\n/**\n * Embedding Model\n */\nexport const EmbeddingModelSchema = lazySchema(() => z.object({\n provider: z.enum(['openai', 'cohere', 'huggingface', 'azure_openai', 'local', 'custom']),\n model: z.string().describe('Model name (e.g., \"text-embedding-3-large\")'),\n dimensions: z.number().int().positive().describe('Embedding vector dimensions'),\n maxTokens: z.number().int().positive().optional().describe('Maximum tokens per embedding'),\n batchSize: z.number().int().positive().optional().default(100).describe('Batch size for embedding'),\n endpoint: z.string().url().optional().describe('Custom endpoint URL'),\n apiKey: z.string().optional().describe('API key'),\n secretRef: z.string().optional().describe('Reference to stored secret'),\n}));\n\n/**\n * Text Chunking Strategy\n */\nexport const ChunkingStrategySchema = lazySchema(() => z.discriminatedUnion('type', [\n z.object({\n type: z.literal('fixed'),\n chunkSize: z.number().int().positive().describe('Fixed chunk size in tokens/chars'),\n chunkOverlap: z.number().int().min(0).default(0).describe('Overlap between chunks'),\n unit: z.enum(['tokens', 'characters']).default('tokens'),\n }),\n z.object({\n type: z.literal('semantic'),\n model: z.string().optional().describe('Model for semantic chunking'),\n minChunkSize: z.number().int().positive().default(100),\n maxChunkSize: z.number().int().positive().default(1000),\n }),\n z.object({\n type: z.literal('recursive'),\n separators: z.array(z.string()).default(['\\n\\n', '\\n', ' ', '']),\n chunkSize: z.number().int().positive(),\n chunkOverlap: z.number().int().min(0).default(0),\n }),\n z.object({\n type: z.literal('markdown'),\n maxChunkSize: z.number().int().positive().default(1000),\n respectHeaders: z.boolean().default(true).describe('Keep headers with content'),\n respectCodeBlocks: z.boolean().default(true).describe('Keep code blocks intact'),\n }),\n]));\n\n/**\n * Document Metadata Schema\n */\nexport const DocumentMetadataSchema = lazySchema(() => z.object({\n source: z.string().describe('Document source (file path, URL, etc.)'),\n sourceType: z.enum(['file', 'url', 'api', 'database', 'custom']).optional(),\n title: z.string().optional(),\n author: z.string().optional().describe('Document author'),\n createdAt: z.string().datetime().optional().describe('ISO timestamp'),\n updatedAt: z.string().datetime().optional().describe('ISO timestamp'),\n tags: z.array(z.string()).optional(),\n category: z.string().optional(),\n language: z.string().optional().describe('Document language (ISO 639-1 code)'),\n custom: z.record(z.string(), z.unknown()).optional().describe('Custom metadata fields'),\n}));\n\n/**\n * Document Chunk\n */\nexport const DocumentChunkSchema = lazySchema(() => z.object({\n id: z.string().describe('Unique chunk identifier'),\n content: z.string().describe('Chunk text content'),\n embedding: z.array(z.number()).optional().describe('Embedding vector'),\n metadata: DocumentMetadataSchema,\n chunkIndex: z.number().int().min(0).describe('Chunk position in document'),\n tokens: z.number().int().optional().describe('Token count'),\n}));\n\n/**\n * Retrieval Strategy\n */\nexport const RetrievalStrategySchema = lazySchema(() => z.discriminatedUnion('type', [\n z.object({\n type: z.literal('similarity'),\n topK: z.number().int().positive().default(5).describe('Number of results to retrieve'),\n scoreThreshold: z.number().min(0).max(1).optional().describe('Minimum similarity score'),\n }),\n z.object({\n type: z.literal('mmr'),\n topK: z.number().int().positive().default(5),\n fetchK: z.number().int().positive().default(20).describe('Initial fetch size'),\n lambda: z.number().min(0).max(1).default(0.5).describe('Diversity vs relevance (0=diverse, 1=relevant)'),\n }),\n z.object({\n type: z.literal('hybrid'),\n topK: z.number().int().positive().default(5),\n vectorWeight: z.number().min(0).max(1).default(0.7).describe('Weight for vector search'),\n keywordWeight: z.number().min(0).max(1).default(0.3).describe('Weight for keyword search'),\n }),\n z.object({\n type: z.literal('parent_document'),\n topK: z.number().int().positive().default(5),\n retrieveParent: z.boolean().default(true).describe('Retrieve full parent document'),\n }),\n]));\n\n/**\n * Reranking Configuration\n */\nexport const RerankingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false),\n model: z.string().optional().describe('Reranking model name'),\n provider: z.enum(['cohere', 'huggingface', 'custom']).optional(),\n topK: z.number().int().positive().default(3).describe('Final number of results after reranking'),\n}));\n\n/**\n * Vector Store Configuration\n */\nexport const VectorStoreConfigSchema = lazySchema(() => z.object({\n provider: VectorStoreProviderSchema,\n indexName: z.string().describe('Index/collection name'),\n namespace: z.string().optional().describe('Namespace for multi-tenancy'),\n \n /** Connection */\n host: z.string().optional().describe('Vector store host'),\n port: z.number().int().optional().describe('Vector store port'),\n secretRef: z.string().optional().describe('Reference to stored secret'),\n apiKey: z.string().optional().describe('API key or reference to secret'),\n \n /** Configuration */\n dimensions: z.number().int().positive().describe('Vector dimensions'),\n metric: z.enum(['cosine', 'euclidean', 'dotproduct']).optional().default('cosine'),\n \n /** Performance */\n batchSize: z.number().int().positive().optional().default(100),\n connectionPoolSize: z.number().int().positive().optional().default(10),\n timeout: z.number().int().positive().optional().default(30000).describe('Timeout in milliseconds'),\n}));\n\n/**\n * Document Loader Configuration\n */\nexport const DocumentLoaderConfigSchema = lazySchema(() => z.object({\n type: z.enum(['file', 'directory', 'url', 'api', 'database', 'custom']),\n \n /** Source */\n source: z.string().describe('Source path, URL, or identifier'),\n \n /** File Types */\n fileTypes: z.array(z.string()).optional().describe('Accepted file extensions (e.g., [\".pdf\", \".md\"])'),\n \n /** Processing */\n recursive: z.boolean().optional().default(false).describe('Process directories recursively'),\n maxFileSize: z.number().int().optional().describe('Maximum file size in bytes'),\n excludePatterns: z.array(z.string()).optional().describe('Patterns to exclude'),\n \n /** Text Extraction */\n extractImages: z.boolean().optional().default(false).describe('Extract text from images (OCR)'),\n extractTables: z.boolean().optional().default(false).describe('Extract and format tables'),\n \n /** Custom Loader */\n loaderConfig: z.record(z.string(), z.unknown()).optional().describe('Custom loader-specific config'),\n}));\n\n/**\n * Filter Expression Schema\n */\nexport const FilterExpressionSchema = lazySchema(() => z.object({\n field: z.string().describe('Metadata field to filter'),\n operator: z.enum(['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'nin', 'contains']).default('eq'),\n value: z.union([z.string(), z.number(), z.boolean(), z.array(z.union([z.string(), z.number()]))]).describe('Filter value'),\n}));\n\nexport type FilterGroup = {\n logic: 'and' | 'or';\n filters: (z.infer<typeof FilterExpressionSchema> | FilterGroup)[];\n};\n\nexport const FilterGroupSchema: z.ZodType<FilterGroup> = lazySchema(() => z.object({\n logic: z.enum(['and', 'or']).default('and'),\n filters: z.array(z.union([FilterExpressionSchema, z.lazy(() => FilterGroupSchema)])),\n}));\n\n/**\n * Standardized Metadata Filter\n */\nexport const MetadataFilterSchema = lazySchema(() => z.union([\n FilterExpressionSchema,\n FilterGroupSchema,\n // Legacy support for simple key-value map\n z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.array(z.union([z.string(), z.number()]))]))\n]));\n\n/**\n * RAG Pipeline Configuration\n */\nexport const RAGPipelineConfigSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Pipeline name (snake_case)'),\n label: z.string().describe('Display name'),\n description: z.string().optional(),\n \n /** Components */\n embedding: EmbeddingModelSchema,\n vectorStore: VectorStoreConfigSchema,\n chunking: ChunkingStrategySchema,\n retrieval: RetrievalStrategySchema,\n reranking: RerankingConfigSchema.optional(),\n \n /** Document Loading */\n loaders: z.array(DocumentLoaderConfigSchema).optional().describe('Document loaders'),\n \n /** Context Management */\n maxContextTokens: z.number().int().positive().default(4000).describe('Maximum tokens in context'),\n contextWindow: z.number().int().positive().optional().describe('LLM context window size'),\n \n /** Metadata Filtering */\n metadataFilters: MetadataFilterSchema.optional().describe('Global filters for retrieval'),\n \n /** Caching */\n enableCache: z.boolean().default(true),\n cacheTTL: z.number().int().positive().default(3600).describe('Cache TTL in seconds'),\n cacheInvalidationStrategy: z.enum(['time_based', 'manual', 'on_update']).default('time_based').optional(),\n}));\n\n/**\n * RAG Query Request\n */\nexport const RAGQueryRequestSchema = lazySchema(() => z.object({\n query: z.string().describe('User query'),\n pipelineName: z.string().describe('Pipeline to use'),\n \n /** Override defaults */\n topK: z.number().int().positive().optional(),\n metadataFilters: z.record(z.string(), z.unknown()).optional(),\n \n /** Context */\n conversationHistory: z.array(z.object({\n role: z.enum(['user', 'assistant', 'system']),\n content: z.string(),\n })).optional(),\n \n /** Options */\n includeMetadata: z.boolean().default(true),\n includeSources: z.boolean().default(true),\n}));\n\n/**\n * RAG Query Response\n */\nexport const RAGQueryResponseSchema = lazySchema(() => z.object({\n query: z.string(),\n results: z.array(z.object({\n content: z.string(),\n score: z.number(),\n metadata: DocumentMetadataSchema.optional(),\n chunkId: z.string().optional(),\n })),\n context: z.string().describe('Assembled context for LLM'),\n tokens: TokenUsageSchema.optional().describe('Token usage for this query'),\n cost: z.number().nonnegative().optional().describe('Cost for this query in USD'),\n retrievalTime: z.number().optional().describe('Retrieval time in milliseconds'),\n}));\n\n/**\n * RAG Pipeline Status\n */\nexport const RAGPipelineStatusSchema = lazySchema(() => z.object({\n name: z.string(),\n status: z.enum(['active', 'indexing', 'error', 'disabled']),\n documentsIndexed: z.number().int().min(0),\n lastIndexed: z.string().datetime().optional().describe('ISO timestamp'),\n errorMessage: z.string().optional(),\n health: z.object({\n vectorStore: z.enum(['healthy', 'unhealthy', 'unknown']),\n embeddingService: z.enum(['healthy', 'unhealthy', 'unknown']),\n }).optional(),\n}));\n\n// Type exports\nexport type VectorStoreProvider = z.infer<typeof VectorStoreProviderSchema>;\nexport type EmbeddingModel = z.infer<typeof EmbeddingModelSchema>;\nexport type ChunkingStrategy = z.infer<typeof ChunkingStrategySchema>;\nexport type DocumentMetadata = z.infer<typeof DocumentMetadataSchema>;\nexport type DocumentChunk = z.infer<typeof DocumentChunkSchema>;\nexport type RetrievalStrategy = z.infer<typeof RetrievalStrategySchema>;\nexport type RerankingConfig = z.infer<typeof RerankingConfigSchema>;\nexport type VectorStoreConfig = z.infer<typeof VectorStoreConfigSchema>;\nexport type DocumentLoaderConfig = z.infer<typeof DocumentLoaderConfigSchema>;\nexport type RAGPipelineConfig = z.infer<typeof RAGPipelineConfigSchema>;\nexport type RAGPipelineConfigInput = z.input<typeof RAGPipelineConfigSchema>;\nexport type RAGQueryRequest = z.infer<typeof RAGQueryRequestSchema>;\nexport type RAGQueryResponse = z.infer<typeof RAGQueryResponseSchema>;\nexport type RAGPipelineStatus = z.infer<typeof RAGPipelineStatusSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Hook Lifecycle Events\n * Defines the interception points in the ObjectQL execution pipeline.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nimport { HookBodySchema } from './hook-body.zod';\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 = lazySchema(() => 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 *\n * Two accepted shapes:\n *\n * - **Inline function** (authoring): `handler: async (ctx) => { ... }`.\n * Convenient in `defineStack({ hooks: [...] })` source files.\n * - **String reference** (build artifact / Studio): `handler: 'my_fn'`.\n * Resolved at runtime against the bundle's `functions` map +\n * anything `engine.registerFunction(name, fn)` added.\n *\n * `objectstack build` automatically lowers inline functions to the\n * string form (using `Hook.name` as the ref) and emits the originals\n * into a sibling `objectstack-runtime.<hash>.mjs` referenced by the\n * top-level `runtimeModule` field. The JSON artifact therefore only\n * ever contains the string form.\n */\n handler: z.union([z.string(), z.custom<(...args: any[]) => any>((v) => typeof v === 'function', { message: 'Expected function' })]).optional().describe('Handler function name (string, post-build) or inline function (pre-build) — DEPRECATED, prefer `body`'),\n\n /**\n * Hook Body (L1 expression or L2 sandboxed JS).\n *\n * Preferred over `handler` for new code. When both are present, runtime\n * loader uses `body` and ignores `handler`.\n *\n * - `{ language: 'expression', source: '...' }` — pure formula (L1).\n * - `{ language: 'js', source: '...', capabilities: [...] }` — sandboxed JS (L2).\n *\n * Authoring convenience: `objectstack build` extracts inline TS handlers from\n * `*.hook.ts` files, AST-checks them, and emits the result here. See plan §6.\n */\n body: HookBodySchema.optional().describe('Hook body — expression (L1) or sandboxed JS (L2)'),\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: ExpressionInputSchema.optional().describe('Predicate (CEL); hook runs only when TRUE. e.g. P`record.status == \"closed\" && record.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 = lazySchema(() => 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 isSystem: z.boolean().optional().describe('True when the call was made with an elevated system context (engine self-writes)'),\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 { FilterConditionSchema } from './filter.zod';\n\n/**\n * Sort Node\n * Represents \"Order By\".\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SortNodeSchema = lazySchema(() => z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc']).default('asc')\n}));\n\n/**\n * Aggregation Function Enum\n * Standard aggregation functions for data analysis.\n * \n * Supported Functions:\n * - **count**: Count rows (SQL: COUNT(*) or COUNT(field))\n * - **sum**: Sum numeric values (SQL: SUM(field))\n * - **avg**: Average numeric values (SQL: AVG(field))\n * - **min**: Minimum value (SQL: MIN(field))\n * - **max**: Maximum value (SQL: MAX(field))\n * - **count_distinct**: Count unique values (SQL: COUNT(DISTINCT field))\n * - **array_agg**: Aggregate values into array (SQL: ARRAY_AGG(field))\n * - **string_agg**: Concatenate values (SQL: STRING_AGG(field, delimiter))\n * \n * Performance Considerations:\n * - COUNT(*) is typically faster than COUNT(field) as it doesn't check for nulls\n * - COUNT DISTINCT may require additional memory for tracking unique values\n * - Window aggregates (with OVER clause) can be more efficient than subqueries\n * - Large GROUP BY operations benefit from proper indexing on grouped fields\n * \n * @example\n * // SQL: SELECT region, SUM(amount) FROM sales GROUP BY region\n * {\n * object: 'sales',\n * fields: ['region'],\n * aggregations: [\n * { function: 'sum', field: 'amount', alias: 'total_sales' }\n * ],\n * groupBy: ['region']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT COUNT(Id) FROM Account\n * {\n * object: 'account',\n * aggregations: [\n * { function: 'count', alias: 'total_accounts' }\n * ]\n * }\n */\nexport const AggregationFunction = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'array_agg', 'string_agg'\n]);\n\n/**\n * Date Granularity Enum\n * Used to bucket date/timestamp fields into uniform periods during GROUP BY.\n *\n * Backends MAY emit `DATE_TRUNC` (PostgreSQL), `DATE_FORMAT` (MySQL),\n * `$dateTrunc` (MongoDB), or any other equivalent. When a driver does not\n * support server-side truncation the engine falls back to an in-memory bucket\n * using ISO-8601 conventions (weeks start Monday).\n */\nexport const DateGranularity = z.enum(['day', 'week', 'month', 'quarter', 'year']);\n\n/**\n * GroupBy Node\n *\n * A grouping target — either a bare field name (string) for plain grouping,\n * or a structured object that adds `dateGranularity` for time-bucketed\n * grouping. The string form remains the canonical short-hand:\n *\n * ```ts\n * groupBy: ['region', { field: 'closed_at', dateGranularity: 'quarter' }]\n * ```\n *\n * This is backward-compatible: every existing `groupBy: ['region']` payload\n * continues to validate.\n */\nexport const GroupByNodeSchema = lazySchema(() => z.union([\n z.string(),\n z.object({\n field: z.string().describe('Field to group by'),\n dateGranularity: DateGranularity.optional().describe('Bucket date values into uniform periods (day/week/month/quarter/year)'),\n /** Optional alias for the projected group value (defaults to `field`). */\n alias: z.string().optional().describe('Alias for the projected group value'),\n }),\n]));\n\n/**\n * Aggregation Node\n * Represents an aggregated field with function.\n * \n * Aggregations summarize data across groups of rows (GROUP BY).\n * Used with `groupBy` to create analytical queries.\n * \n * @example\n * // SQL: SELECT customer_id, COUNT(*), SUM(amount) FROM orders GROUP BY customer_id\n * {\n * object: 'order',\n * fields: ['customer_id'],\n * aggregations: [\n * { function: 'count', alias: 'order_count' },\n * { function: 'sum', field: 'amount', alias: 'total_amount' }\n * ],\n * groupBy: ['customer_id']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT LeadSource, COUNT(Id) FROM Lead GROUP BY LeadSource\n * {\n * object: 'lead',\n * fields: ['lead_source'],\n * aggregations: [\n * { function: 'count', alias: 'lead_count' }\n * ],\n * groupBy: ['lead_source']\n * }\n */\nexport const AggregationNodeSchema = lazySchema(() => z.object({\n function: AggregationFunction.describe('Aggregation function'),\n field: z.string().optional().describe('Field to aggregate (optional for COUNT(*))'),\n alias: z.string().describe('Result column alias'),\n distinct: z.boolean().optional().describe('Apply DISTINCT before aggregation'),\n filter: FilterConditionSchema.optional().describe('Filter/Condition to apply to the aggregation (FILTER WHERE clause)'),\n}));\n\n/**\n * Join Type Enum\n * Standard SQL join types for combining tables.\n * \n * Join Types:\n * - **inner**: Returns only matching rows from both tables (SQL: INNER JOIN)\n * - **left**: Returns all rows from left table, matching rows from right (SQL: LEFT JOIN)\n * - **right**: Returns all rows from right table, matching rows from left (SQL: RIGHT JOIN)\n * - **full**: Returns all rows from both tables (SQL: FULL OUTER JOIN)\n * \n * @example\n * // SQL: SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * on: ['order.customer_id', '=', 'customer.id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL-style: Find all customers and their orders (if any)\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * on: ['customer.id', '=', 'order.customer_id']\n * }\n * ]\n * }\n */\nexport const JoinType = z.enum(['inner', 'left', 'right', 'full']);\n\n/**\n * Join Execution Strategy\n * Hints to the query engine on how to execute the join.\n * \n * Strategies:\n * - **auto**: Engine decides best strategy (Default).\n * - **database**: Push down join to the database (Requires same datasource).\n * - **hash**: Load both sets into memory and hash join (Cross-datasource, memory intensive).\n * - **loop**: Nested loop lookup (N+1 safe version). (Good for small right-side lookups).\n */\nexport const JoinStrategy = z.enum(['auto', 'database', 'hash', 'loop']);\n\n/**\n * Join Node\n * Represents table joins for combining data from multiple objects.\n * \n * Joins connect related data across multiple tables using ON conditions.\n * Supports both direct object joins and subquery joins.\n * \n * @example\n * // SQL: SELECT o.*, c.name FROM orders o INNER JOIN customers c ON o.customer_id = c.id\n * {\n * object: 'order',\n * fields: ['id', 'amount'],\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Multi-table join\n * // SELECT * FROM orders o\n * // INNER JOIN customers c ON o.customer_id = c.id\n * // LEFT JOIN shipments s ON o.id = s.order_id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * },\n * {\n * type: 'left',\n * object: 'shipment',\n * alias: 's',\n * on: ['order.id', '=', 's.order_id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT Name, (SELECT LastName FROM Contacts) FROM Account\n * {\n * object: 'account',\n * fields: ['name'],\n * joins: [\n * {\n * type: 'left',\n * object: 'contact',\n * on: ['account.id', '=', 'contact.account_id']\n * }\n * ]\n * }\n * \n * @example\n * // Subquery Join: Join with a filtered/aggregated dataset\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * alias: 'high_value_orders',\n * on: ['customer.id', '=', 'high_value_orders.customer_id'],\n * subquery: {\n * object: 'order',\n * fields: ['customer_id', 'total'],\n * filters: ['total', '>', 1000]\n * }\n * }\n * ]\n * }\n */\nexport const JoinNodeSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n type: JoinType.describe('Join type'),\n strategy: JoinStrategy.optional().describe('Execution strategy hint'),\n object: z.string().describe('Object/table to join'),\n alias: z.string().optional().describe('Table alias'),\n on: FilterConditionSchema.describe('Join condition'),\n subquery: z.lazy(() => QuerySchema).optional().describe('Subquery instead of object'),\n })\n);\n\n/**\n * Window Function Enum\n * Advanced analytical functions for row-based calculations.\n * \n * Window Functions:\n * - **row_number**: Sequential number within partition (SQL: ROW_NUMBER() OVER (...))\n * - **rank**: Rank with gaps for ties (SQL: RANK() OVER (...))\n * - **dense_rank**: Rank without gaps (SQL: DENSE_RANK() OVER (...))\n * - **percent_rank**: Relative rank as percentage (SQL: PERCENT_RANK() OVER (...))\n * - **lag**: Access previous row value (SQL: LAG(field) OVER (...))\n * - **lead**: Access next row value (SQL: LEAD(field) OVER (...))\n * - **first_value**: First value in window (SQL: FIRST_VALUE(field) OVER (...))\n * - **last_value**: Last value in window (SQL: LAST_VALUE(field) OVER (...))\n * - **sum/avg/count/min/max**: Aggregates over window (SQL: SUM(field) OVER (...))\n * \n * @example\n * // SQL: SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY amount DESC) as rank\n * // FROM orders\n * {\n * object: 'order',\n * fields: ['id', 'customer_id', 'amount'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'rank',\n * over: {\n * partitionBy: ['customer_id'],\n * orderBy: [{ field: 'amount', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Running total with SUM() OVER (...)\n * {\n * object: 'transaction',\n * fields: ['date', 'amount'],\n * windowFunctions: [\n * {\n * function: 'sum',\n * field: 'amount',\n * alias: 'running_total',\n * over: {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: 'UNBOUNDED PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunction = z.enum([\n 'row_number', 'rank', 'dense_rank', 'percent_rank',\n 'lag', 'lead', 'first_value', 'last_value',\n 'sum', 'avg', 'count', 'min', 'max'\n]);\n\n/**\n * Window Specification\n * Defines PARTITION BY and ORDER BY for window functions.\n * \n * Window specifications control how window functions compute values:\n * - **partitionBy**: Divide rows into groups (like GROUP BY but without collapsing rows)\n * - **orderBy**: Define order for ranking and offset functions\n * - **frame**: Specify which rows to include in aggregate calculations\n * \n * @example\n * // Partition by department, order by salary\n * {\n * partitionBy: ['department'],\n * orderBy: [{ field: 'salary', order: 'desc' }]\n * }\n * \n * @example\n * // Moving average with frame specification\n * {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: '6 PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n */\nexport const WindowSpecSchema = lazySchema(() => z.object({\n partitionBy: z.array(z.string()).optional().describe('PARTITION BY fields'),\n orderBy: z.array(SortNodeSchema).optional().describe('ORDER BY specification'),\n frame: z.object({\n type: z.enum(['rows', 'range']).optional(),\n start: z.string().optional().describe('Frame start (e.g., \"UNBOUNDED PRECEDING\", \"1 PRECEDING\")'),\n end: z.string().optional().describe('Frame end (e.g., \"CURRENT ROW\", \"1 FOLLOWING\")'),\n }).optional().describe('Window frame specification'),\n}));\n\n/**\n * Window Function Node\n * Represents window function with OVER clause.\n * \n * Window functions perform calculations across a set of rows related to the current row,\n * without collapsing the result set (unlike GROUP BY aggregations).\n * \n * @example\n * // SQL: Top 3 products per category\n * // SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY sales DESC) as rank\n * // FROM products\n * {\n * object: 'product',\n * fields: ['name', 'category', 'sales'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'category_rank',\n * over: {\n * partitionBy: ['category'],\n * orderBy: [{ field: 'sales', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Year-over-year comparison with LAG\n * {\n * object: 'monthly_sales',\n * fields: ['month', 'revenue'],\n * windowFunctions: [\n * {\n * function: 'lag',\n * field: 'revenue',\n * alias: 'prev_year_revenue',\n * over: {\n * orderBy: [{ field: 'month', order: 'asc' }]\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunctionNodeSchema = lazySchema(() => z.object({\n function: WindowFunction.describe('Window function name'),\n field: z.string().optional().describe('Field to operate on (for aggregate window functions)'),\n alias: z.string().describe('Result column alias'),\n over: WindowSpecSchema.describe('Window specification (OVER clause)'),\n}));\n\n/**\n * Field Selection Node\n * Represents \"Select\" attributes, including joins.\n */\nexport const FieldNodeSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n z.string(), // Primitive field: \"name\"\n z.object({\n field: z.string(), // Relationship field: \"owner\"\n fields: z.array(FieldNodeSchema).optional(), // Nested select: [\"name\", \"email\"]\n alias: z.string().optional()\n })\n ])\n);\n\n/**\n * Full-Text Search Configuration\n * Defines full-text search parameters for text queries.\n * \n * Supports:\n * - Multi-field search\n * - Relevance scoring\n * - Fuzzy matching\n * - Language-specific analyzers\n * \n * @example\n * {\n * query: \"John Smith\",\n * fields: [\"name\", \"email\", \"description\"],\n * fuzzy: true,\n * boost: { \"name\": 2.0, \"email\": 1.5 }\n * }\n */\nexport const FullTextSearchSchema = lazySchema(() => z.object({\n query: z.string().describe('Search query text'),\n fields: z.array(z.string()).optional().describe('Fields to search in (if not specified, searches all text fields)'),\n fuzzy: z.boolean().optional().default(false).describe('Enable fuzzy matching (tolerates typos)'),\n operator: z.enum(['and', 'or']).optional().default('or').describe('Logical operator between terms'),\n boost: z.record(z.string(), z.number()).optional().describe('Field-specific relevance boosting (field name -> boost factor)'),\n minScore: z.number().optional().describe('Minimum relevance score threshold'),\n language: z.string().optional().describe('Language for text analysis (e.g., \"en\", \"zh\", \"es\")'),\n highlight: z.boolean().optional().default(false).describe('Enable search result highlighting'),\n}));\n\nexport type FullTextSearch = z.infer<typeof FullTextSearchSchema>;\n\n/**\n * Query AST Schema\n * The universal data retrieval contract defined in `ast-structure.mdx`.\n * \n * This schema represents ObjectQL - a universal query language that abstracts\n * SQL, NoSQL, and SaaS APIs into a single unified interface.\n * \n * Updates (v2):\n * - Aligned with modern ORM standards (Prisma/TypeORM)\n * - Added `cursor` based pagination support\n * - Renamed `top`/`skip` to `limit`/`offset`\n * - Unified filtering syntax with `FilterConditionSchema`\n * \n * Updates (v3):\n * - Added `search` parameter for full-text search (P2 requirement)\n * \n * @example\n * // Simple query: SELECT name, email FROM account WHERE status = 'active'\n * {\n * object: 'account',\n * fields: ['name', 'email'],\n * where: { status: 'active' }\n * }\n * \n * @example\n * // Pagination with Limit/Offset\n * {\n * object: 'post',\n * where: { published: true },\n * orderBy: [{ field: 'created_at', order: 'desc' }],\n * limit: 20,\n * offset: 40\n * }\n * \n * @example\n * // Full-text search\n * {\n * object: 'article',\n * search: {\n * query: \"machine learning\",\n * fields: [\"title\", \"content\"],\n * fuzzy: true,\n * boost: { \"title\": 2.0 }\n * },\n * limit: 10\n * }\n */\nconst BaseQuerySchema = z.object({\n /** Target Entity */\n object: z.string().describe('Object name (e.g. account)'),\n \n /** Select Clause */\n fields: z.array(FieldNodeSchema).optional().describe('Fields to retrieve'),\n \n /** Where Clause (Filtering) */\n where: FilterConditionSchema.optional().describe('Filtering criteria (WHERE)'),\n \n /** Full-Text Search */\n search: FullTextSearchSchema.optional().describe('Full-text search configuration ($search parameter)'),\n \n /** Order By Clause (Sorting) */\n orderBy: z.array(SortNodeSchema).optional().describe('Sorting instructions (ORDER BY)'),\n \n /** Pagination */\n limit: z.number().optional().describe('Max records to return (LIMIT)'),\n offset: z.number().optional().describe('Records to skip (OFFSET)'),\n top: z.number().optional().describe('Alias for limit (OData compatibility)'),\n cursor: z.record(z.string(), z.unknown()).optional().describe('Cursor for keyset pagination'),\n \n /** Joins */\n joins: z.array(JoinNodeSchema).optional().describe('Explicit Table Joins'),\n \n /** Aggregations */\n aggregations: z.array(AggregationNodeSchema).optional().describe('Aggregation functions'),\n \n /** Group By Clause */\n groupBy: z.array(GroupByNodeSchema).optional().describe('GROUP BY targets (strings or `{field, dateGranularity?}` objects for date bucketing)'),\n \n /** Having Clause */\n having: FilterConditionSchema.optional().describe('HAVING clause for aggregation filtering'),\n \n /** Window Functions */\n windowFunctions: z.array(WindowFunctionNodeSchema).optional().describe('Window functions with OVER clause'),\n \n /** Subquery flag */\n distinct: z.boolean().optional().describe('SELECT DISTINCT flag'),\n});\n\n/**\n * QueryAST — Abstract Syntax Tree for data queries.\n *\n * The `expand` property enables recursive loading of related records through\n * lookup and master_detail fields. Each key is a relationship field name; the\n * value is a nested QueryAST that can further filter, select, sort, and expand\n * the related records (up to a default max depth of 3).\n *\n * @example\n * ```ts\n * const ast: QueryAST = {\n * object: 'task',\n * fields: ['title', 'assignee'],\n * expand: {\n * assignee: { object: 'user', fields: ['name', 'email'] },\n * project: {\n * object: 'project',\n * expand: { org: { object: 'org' } } // nested expand\n * }\n * }\n * };\n * ```\n */\nexport type QueryAST = z.infer<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryAST>;\n};\n\nexport type QueryInput = z.input<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryInput>;\n};\n\nexport const QuerySchema: z.ZodType<QueryAST> = lazySchema(() => BaseQuerySchema.extend({\n expand: z.lazy(() => z.record(z.string(), QuerySchema)).optional().describe(\n 'Recursive relation loading map. Keys are lookup/master_detail field names; '\n + 'values are nested QueryAST objects that control select, filter, sort, and '\n + 'further expansion on the related object. The engine resolves expand via '\n + 'batch $in queries (driver-agnostic) with a default max depth of 3.'\n ),\n}));\n\nexport type SortNode = z.infer<typeof SortNodeSchema>;\nexport type AggregationNode = z.infer<typeof AggregationNodeSchema>;\nexport type GroupByNode = z.infer<typeof GroupByNodeSchema>;\nexport type DateGranularityValue = z.infer<typeof DateGranularity>;\nexport type JoinNode = z.infer<typeof JoinNodeSchema>;\nexport type WindowFunctionNode = z.infer<typeof WindowFunctionNodeSchema>;\nexport type WindowSpec = z.infer<typeof WindowSpecSchema>;\n","// Copyright (c) 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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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 = lazySchema(() => 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';\nimport { FilterConditionSchema } from './filter.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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 /**\n * WHERE clause — canonical filter shape per the unified Query DSL\n * (see {@link FilterConditionSchema} in `data/filter.zod.ts` and\n * {@link QuerySchema} in `data/query.zod.ts`). This is the same\n * MongoDB-style filter used by `find()`, dashboard widget `filter`,\n * RLS conditions, etc.\n *\n * @example\n * ```ts\n * { where: { is_active: true, stage: { $nin: ['lost'] } } }\n * ```\n */\n where: FilterConditionSchema.optional().describe('Filtering criteria (canonical Query DSL FilterCondition)'),\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';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * Webhook Trigger Event\n * When should this webhook fire?\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WebhookTriggerType = z.enum([\n 'create', \n 'update', \n 'delete', \n 'undelete',\n 'api' // Manually triggered\n]);\n\n/**\n * CANONICAL WEBHOOK DEFINITION\n * \n * This is the single source of truth for webhook configuration across ObjectStack.\n * All other protocols (workflow, connector, etc.) should import and reference this schema.\n * \n * Webhook Protocol - Outbound HTTP Integration\n * Push data to external URLs when events occur in the system.\n * \n * **NAMING CONVENTION:**\n * Webhook names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good webhook names\n * - 'stripe_payment_sync'\n * - 'slack_notification'\n * - 'crm_lead_export'\n * \n * @example Bad webhook names (will be rejected)\n * - 'StripePaymentSync' (PascalCase)\n * - 'slackNotification' (camelCase)\n * \n * @example Basic webhook configuration\n * ```typescript\n * const webhook: Webhook = {\n * name: 'slack_notification',\n * label: 'Slack Order Notification',\n * object: 'order',\n * triggers: ['create', 'update'],\n * url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXX',\n * method: 'POST',\n * headers: { 'Content-Type': 'application/json' },\n * authentication: {\n * type: 'bearer',\n * credentials: { token: process.env.SLACK_TOKEN }\n * },\n * retryPolicy: {\n * maxRetries: 3,\n * backoffStrategy: 'exponential'\n * }\n * }\n * ```\n */\nexport const WebhookSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Webhook unique name (lowercase snake_case)'),\n label: z.string().optional().describe('Human-readable webhook label'),\n \n /** Scope */\n object: z.string().optional().describe('Object to listen to (optional for manual webhooks)'),\n triggers: z.array(WebhookTriggerType).optional().describe('Events that trigger execution'),\n \n /** Target */\n url: z.string().url().describe('External webhook endpoint URL'),\n method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']).default('POST').describe('HTTP method'),\n \n /** Headers */\n headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),\n \n /** Body/Payload */\n body: z.unknown().optional().describe('Request body payload (if not using default record data)'),\n \n /** Payload Configuration */\n payloadFields: z.array(z.string()).optional().describe('Fields to include. Empty = All'),\n includeSession: z.boolean().default(false).describe('Include user session info'),\n \n /** Authentication */\n authentication: z.object({\n type: z.enum(['none', 'bearer', 'basic', 'api-key']).describe('Authentication type'),\n credentials: z.record(z.string(), z.string()).optional().describe('Authentication credentials'),\n }).optional().describe('Authentication configuration'),\n \n /** Retry Policy */\n retryPolicy: z.object({\n maxRetries: z.number().int().min(0).max(10).default(3).describe('Maximum retry attempts'),\n backoffStrategy: z.enum(['exponential', 'linear', 'fixed']).default('exponential').describe('Backoff strategy'),\n initialDelayMs: z.number().int().min(100).default(1000).describe('Initial retry delay in milliseconds'),\n maxDelayMs: z.number().int().min(1000).default(60000).describe('Maximum retry delay in milliseconds'),\n }).optional().describe('Retry policy configuration'),\n \n /** Timeout */\n timeoutMs: z.number().int().min(1000).max(300000).default(30000).describe('Request timeout in milliseconds'),\n \n /** Security */\n secret: z.string().optional().describe('Signing secret for HMAC signature verification'),\n \n /** Status */\n isActive: z.boolean().default(true).describe('Whether webhook is active'),\n \n /** Metadata */\n description: z.string().optional().describe('Webhook description'),\n tags: z.array(z.string()).optional().describe('Tags for organization'),\n}));\n\n/**\n * Webhook Receiver Schema (Inbound)\n * Handling incoming HTTP hooks from Stripe, Slack, etc.\n * \n * **NAMING CONVENTION:**\n * Webhook receiver names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good names\n * - 'stripe_webhook_handler'\n * - 'github_events'\n * - 'twilio_status_callback'\n * \n * @example Bad names (will be rejected)\n * - 'StripeWebhookHandler' (PascalCase)\n */\nexport const WebhookReceiverSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Webhook receiver unique name (lowercase snake_case)'),\n path: z.string().describe('URL Path (e.g. /webhooks/stripe)'),\n \n /** Verification */\n verificationType: z.enum(['none', 'header_token', 'hmac', 'ip_whitelist']).default('none'),\n verificationParams: z.object({\n header: z.string().optional(),\n secret: z.string().optional(),\n ips: z.array(z.string()).optional()\n }).optional(),\n \n /** Action */\n action: z.enum(['trigger_flow', 'script', 'upsert_record']).default('trigger_flow'),\n target: z.string().describe('Flow ID or Script name'),\n}));\n\nexport type Webhook = z.infer<typeof WebhookSchema>;\nexport type WebhookReceiver = z.infer<typeof WebhookReceiverSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * SHARED CONNECTOR AUTHENTICATION SCHEMAS\n * These schemas are used by connectors and integrations for external auth.\n * They define \"How we authenticate TO other systems\", not \"How users authenticate TO us\".\n */\n\n/**\n * OAuth2 Authentication Schema\n */\nimport { lazySchema } from './lazy-schema';\nexport const ConnectorOAuth2Schema = lazySchema(() => z.object({\n type: z.literal('oauth2'),\n authorizationUrl: z.string().url().describe('OAuth2 authorization endpoint'),\n tokenUrl: z.string().url().describe('OAuth2 token endpoint'),\n clientId: z.string().describe('OAuth2 client ID'),\n clientSecret: z.string().describe('OAuth2 client secret (typically from ENV)'),\n scopes: z.array(z.string()).optional().describe('Requested OAuth2 scopes'),\n redirectUri: z.string().url().optional().describe('OAuth2 redirect URI'),\n refreshToken: z.string().optional().describe('Refresh token for token renewal'),\n tokenExpiry: z.number().optional().describe('Token expiry timestamp'),\n}));\n\n/**\n * API Key Authentication Schema\n */\nexport const ConnectorAPIKeySchema = lazySchema(() => z.object({\n type: z.literal('api-key'),\n key: z.string().describe('API key value'),\n headerName: z.string().default('X-API-Key').describe('HTTP header name for API key'),\n paramName: z.string().optional().describe('Query parameter name (alternative to header)'),\n}));\n\n/**\n * Basic Authentication Schema\n */\nexport const ConnectorBasicAuthSchema = lazySchema(() => z.object({\n type: z.literal('basic'),\n username: z.string().describe('Username'),\n password: z.string().describe('Password'),\n}));\n\n/**\n * Bearer Token Authentication Schema\n */\nexport const ConnectorBearerAuthSchema = lazySchema(() => z.object({\n type: z.literal('bearer'),\n token: z.string().describe('Bearer token'),\n}));\n\n/**\n * No Authentication Schema\n */\nexport const ConnectorNoAuthSchema = lazySchema(() => z.object({\n type: z.literal('none'),\n}));\n\n/**\n * Unified Connector Auth Configuration Schema\n */\nexport const ConnectorAuthConfigSchema = lazySchema(() => z.discriminatedUnion('type', [\n ConnectorOAuth2Schema,\n ConnectorAPIKeySchema,\n ConnectorBasicAuthSchema,\n ConnectorBearerAuthSchema,\n ConnectorNoAuthSchema,\n]));\n\nexport type ConnectorAuthConfig = z.infer<typeof ConnectorAuthConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from './expression.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 */\nimport { lazySchema } from './lazy-schema';\nexport const TransformTypeSchema = lazySchema(() => 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: ExpressionInputSchema.describe('JS expression (dialect=\"js\" recommended). 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 = lazySchema(() => 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 { CronExpressionInputSchema } from '../shared/expression.zod';\nimport { WebhookSchema } from '../automation/webhook.zod';\nimport { ConnectorAuthConfigSchema } from '../shared/connector-auth.zod';\nimport { FieldMappingSchema as BaseFieldMappingSchema } from '../shared/mapping.zod';\n\n/**\n * Connector Protocol - LEVEL 3: Enterprise Connector\n * \n * Defines the standard connector specification for external system integration.\n * Connectors enable ObjectStack to sync data with SaaS apps, databases, file storage,\n * and message queues through a unified protocol.\n * \n * **Positioning in 3-Layer Architecture:**\n * - **L1: Simple Sync** (automation/sync.zod.ts) - Business users - Sync Salesforce to Sheets\n * - **L2: ETL Pipeline** (automation/etl.zod.ts) - Data engineers - Aggregate 10 sources to warehouse\n * - **L3: Enterprise Connector** (THIS FILE) - System integrators - Full SAP integration\n * \n * **SCOPE: Most comprehensive integration layer.**\n * Includes authentication, webhooks, rate limiting, field mapping, bidirectional sync,\n * retry policies, and complete lifecycle management.\n * \n * This protocol supports multiple authentication strategies, bidirectional sync,\n * field mapping, webhooks, and comprehensive rate limiting.\n * \n * Authentication is now imported from the canonical auth/config.zod.ts.\n * \n * ## When to Use This Layer\n * \n * **Use Enterprise Connector when:**\n * - Building enterprise-grade connectors (e.g., Salesforce, SAP, Oracle)\n * - Complex OAuth2/SAML authentication required\n * - Bidirectional sync with field mapping and transformations\n * - Webhook management and rate limiting required\n * - Full CRUD operations and data synchronization\n * - Need comprehensive retry strategies and error handling\n * \n * **Examples:**\n * - Full Salesforce integration with webhooks\n * - SAP ERP connector with CDC (Change Data Capture)\n * - Microsoft Dynamics 365 connector\n * \n * **When to downgrade:**\n * - Simple field sync → Use {@link file://../automation/sync.zod.ts | Simple Sync}\n * - Data transformation only → Use {@link file://../automation/etl.zod.ts | ETL Pipeline}\n * \n * @see {@link file://../automation/sync.zod.ts} for Level 1 (simple sync)\n * @see {@link file://../automation/etl.zod.ts} for Level 2 (data engineering)\n * \n * ## When to use Integration Connector vs. Trigger Registry?\n * \n * **Use `integration/connector.zod.ts` when:**\n * - Building enterprise-grade connectors (e.g., Salesforce, SAP, Oracle)\n * - Complex OAuth2/SAML authentication required\n * - Bidirectional sync with field mapping and transformations\n * - Webhook management and rate limiting required\n * - Full CRUD operations and data synchronization\n * - Need comprehensive retry strategies and error handling\n * \n * **Use `automation/trigger-registry.zod.ts` when:**\n * - Building simple automation triggers (e.g., \"when Slack message received, create task\")\n * - No complex authentication needed (simple API keys, basic auth)\n * - Lightweight, single-purpose integrations\n * - Quick setup with minimal configuration\n * \n * @see ../../automation/trigger-registry.zod.ts for lightweight automation triggers\n */\n\n// ============================================================================\n// Authentication Schemas - IMPORTED FROM CANONICAL SOURCE\n// Use ConnectorAuthConfigSchema from shared/connector-auth.zod.ts\n// ============================================================================\n\n// ============================================================================\n// Field Mapping Schema\n// Uses the canonical field mapping protocol from shared/mapping.zod.ts\n// Extended with connector-specific features\n// ============================================================================\n\n/**\n * Connector Field Mapping Configuration\n * \n * Extends the base field mapping with connector-specific features\n * like bidirectional sync modes and data type mapping.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldMappingSchema = lazySchema(() => BaseFieldMappingSchema.extend({\n /**\n * Data type mapping (connector-specific)\n */\n dataType: z.enum([\n 'string',\n 'number',\n 'boolean',\n 'date',\n 'datetime',\n 'json',\n 'array',\n ]).optional().describe('Target data type'),\n \n /**\n * Is this field required?\n */\n required: z.boolean().default(false).describe('Field is required'),\n \n /**\n * Bidirectional sync mode (connector-specific)\n */\n syncMode: z.enum([\n 'read_only', // Only sync from external to ObjectStack\n 'write_only', // Only sync from ObjectStack to external\n 'bidirectional', // Sync both ways\n ]).default('bidirectional').describe('Sync mode'),\n}));\n\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n\n// ============================================================================\n// Data Synchronization Configuration\n// ============================================================================\n\n/**\n * Sync Strategy Schema\n */\nexport const SyncStrategySchema = lazySchema(() => z.enum([\n 'full', // Full refresh (delete all and re-import)\n 'incremental', // Only sync changes since last sync\n 'upsert', // Insert new, update existing\n 'append_only', // Only insert new records\n]).describe('Synchronization strategy'));\n\nexport type SyncStrategy = z.infer<typeof SyncStrategySchema>;\n\n/**\n * Conflict Resolution Strategy\n */\nexport const ConflictResolutionSchema = lazySchema(() => z.enum([\n 'source_wins', // External system data takes precedence\n 'target_wins', // ObjectStack data takes precedence\n 'latest_wins', // Most recently modified wins\n 'manual', // Flag for manual resolution\n]).describe('Conflict resolution strategy'));\n\nexport type ConflictResolution = z.infer<typeof ConflictResolutionSchema>;\n\n/**\n * Data Synchronization Configuration\n */\nexport const DataSyncConfigSchema = lazySchema(() => z.object({\n /**\n * Sync strategy\n */\n strategy: SyncStrategySchema.optional().default('incremental'),\n \n /**\n * Sync direction\n */\n direction: z.enum([\n 'import', // External → ObjectStack\n 'export', // ObjectStack → External\n 'bidirectional', // Both ways\n ]).optional().default('import').describe('Sync direction'),\n \n /**\n * Sync frequency (cron expression)\n */\n schedule: CronExpressionInputSchema.optional().describe('Cron expression for scheduled sync — cron`0 */15 * * *`'),\n \n /**\n * Enable real-time sync via webhooks\n */\n realtimeSync: z.boolean().optional().default(false).describe('Enable real-time sync'),\n \n /**\n * Field to track last sync timestamp\n */\n timestampField: z.string().optional().describe('Field to track last modification time'),\n \n /**\n * Conflict resolution strategy\n */\n conflictResolution: ConflictResolutionSchema.optional().default('latest_wins'),\n \n /**\n * Batch size for bulk operations\n */\n batchSize: z.number().min(1).max(10000).optional().default(1000).describe('Records per batch'),\n \n /**\n * Delete handling\n */\n deleteMode: z.enum([\n 'hard_delete', // Permanently delete\n 'soft_delete', // Mark as deleted\n 'ignore', // Don't sync deletions\n ]).optional().default('soft_delete').describe('Delete handling mode'),\n \n /**\n * Filter criteria for selective sync\n */\n filters: z.record(z.string(), z.unknown()).optional().describe('Filter criteria for selective sync'),\n}));\n\nexport type DataSyncConfig = z.infer<typeof DataSyncConfigSchema>;\n\n// ============================================================================\n// Webhook Configuration\n// ============================================================================\n\n/**\n * Webhook Event Schema\n */\nexport const WebhookEventSchema = lazySchema(() => z.enum([\n 'record.created',\n 'record.updated',\n 'record.deleted',\n 'sync.started',\n 'sync.completed',\n 'sync.failed',\n 'auth.expired',\n 'rate_limit.exceeded',\n]).describe('Webhook event type'));\n\nexport type WebhookEvent = z.infer<typeof WebhookEventSchema>;\n\n/**\n * Webhook Signature Algorithm\n */\nexport const WebhookSignatureAlgorithmSchema = lazySchema(() => z.enum([\n 'hmac_sha256',\n 'hmac_sha512',\n 'none',\n]).describe('Webhook signature algorithm'));\n\nexport type WebhookSignatureAlgorithm = z.infer<typeof WebhookSignatureAlgorithmSchema>;\n\n/**\n * Webhook Configuration Schema\n * \n * Extends the canonical WebhookSchema with connector-specific event types.\n * This allows connectors to subscribe to both data events and connector lifecycle events.\n */\nexport const WebhookConfigSchema = lazySchema(() => WebhookSchema.extend({\n /**\n * Events to listen for\n * Connector-specific events like sync completion, auth expiry, etc.\n */\n events: z.array(WebhookEventSchema).optional().describe('Connector events to subscribe to'),\n \n /**\n * Signature algorithm for webhook security\n */\n signatureAlgorithm: WebhookSignatureAlgorithmSchema.optional().default('hmac_sha256'),\n}));\n\nexport type WebhookConfig = z.infer<typeof WebhookConfigSchema>;\n\n// ============================================================================\n// Rate Limiting and Retry Configuration\n// ============================================================================\n\n/**\n * Rate Limiting Strategy\n */\nexport const RateLimitStrategySchema = lazySchema(() => z.enum([\n 'fixed_window', // Fixed time window\n 'sliding_window', // Sliding time window\n 'token_bucket', // Token bucket algorithm\n 'leaky_bucket', // Leaky bucket algorithm\n]).describe('Rate limiting strategy'));\n\nexport type RateLimitStrategy = z.infer<typeof RateLimitStrategySchema>;\n\n/**\n * Rate Limiting Configuration\n */\nexport const RateLimitConfigSchema = lazySchema(() => z.object({\n /**\n * Rate limiting strategy\n */\n strategy: RateLimitStrategySchema.optional().default('token_bucket'),\n \n /**\n * Maximum requests per window\n */\n maxRequests: z.number().min(1).describe('Maximum requests per window'),\n \n /**\n * Time window in seconds\n */\n windowSeconds: z.number().min(1).describe('Time window in seconds'),\n \n /**\n * Burst capacity (for token bucket)\n */\n burstCapacity: z.number().min(1).optional().describe('Burst capacity'),\n \n /**\n * Respect external system rate limits\n */\n respectUpstreamLimits: z.boolean().optional().default(true).describe('Respect external rate limit headers'),\n \n /**\n * Custom rate limit headers to check\n */\n rateLimitHeaders: z.object({\n remaining: z.string().optional().default('X-RateLimit-Remaining').describe('Header for remaining requests'),\n limit: z.string().optional().default('X-RateLimit-Limit').describe('Header for rate limit'),\n reset: z.string().optional().default('X-RateLimit-Reset').describe('Header for reset time'),\n }).optional().describe('Custom rate limit headers'),\n}));\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\n\n/**\n * Retry Strategy\n */\nexport const RetryStrategySchema = lazySchema(() => z.enum([\n 'exponential_backoff',\n 'linear_backoff',\n 'fixed_delay',\n 'no_retry',\n]).describe('Retry strategy'));\n\nexport type RetryStrategy = z.infer<typeof RetryStrategySchema>;\n\n/**\n * Retry Configuration\n */\nexport const RetryConfigSchema = lazySchema(() => z.object({\n /**\n * Retry strategy\n */\n strategy: RetryStrategySchema.optional().default('exponential_backoff'),\n \n /**\n * Maximum retry attempts\n */\n maxAttempts: z.number().min(0).max(10).optional().default(3).describe('Maximum retry attempts'),\n \n /**\n * Initial delay in milliseconds\n */\n initialDelayMs: z.number().min(100).optional().default(1000).describe('Initial retry delay in ms'),\n \n /**\n * Maximum delay in milliseconds\n */\n maxDelayMs: z.number().min(1000).optional().default(60000).describe('Maximum retry delay in ms'),\n \n /**\n * Backoff multiplier (for exponential backoff)\n */\n backoffMultiplier: z.number().min(1).optional().default(2).describe('Exponential backoff multiplier'),\n \n /**\n * HTTP status codes to retry\n */\n retryableStatusCodes: z.array(z.number()).optional().default([408, 429, 500, 502, 503, 504]).describe('HTTP status codes to retry'),\n \n /**\n * Retry on network errors\n */\n retryOnNetworkError: z.boolean().optional().default(true).describe('Retry on network errors'),\n \n /**\n * Jitter to add randomness to retry delays\n */\n jitter: z.boolean().optional().default(true).describe('Add jitter to retry delays'),\n}));\n\nexport type RetryConfig = z.infer<typeof RetryConfigSchema>;\n\n// ============================================================================\n// Error Mapping Configuration\n// ============================================================================\n\n/**\n * Error Category\n */\nexport const ErrorCategorySchema = lazySchema(() => z.enum([\n 'validation',\n 'authorization',\n 'not_found',\n 'conflict',\n 'rate_limit',\n 'timeout',\n 'server_error',\n 'integration_error',\n]).describe('Standard error category'));\n\nexport type ErrorCategory = z.infer<typeof ErrorCategorySchema>;\n\n/**\n * Error Mapping Rule\n * \n * Maps an external system error code to an ObjectStack standard error.\n */\nexport const ErrorMappingRuleSchema = lazySchema(() => z.object({\n sourceCode: z.union([z.string(), z.number()]).describe('External system error code'),\n sourceMessage: z.string().optional().describe('Pattern to match against error message'),\n targetCode: z.string().describe('ObjectStack standard error code'),\n targetCategory: ErrorCategorySchema.describe('Error category'),\n severity: z.enum(['low', 'medium', 'high', 'critical']).describe('Error severity level'),\n retryable: z.boolean().describe('Whether the error is retryable'),\n userMessage: z.string().optional().describe('Human-readable message to show users'),\n}).describe('Error mapping rule'));\n\nexport type ErrorMappingRule = z.infer<typeof ErrorMappingRuleSchema>;\n\n/**\n * Error Mapping Configuration\n * \n * Configures how external system errors are mapped to ObjectStack standard errors.\n */\nexport const ErrorMappingConfigSchema = lazySchema(() => z.object({\n rules: z.array(ErrorMappingRuleSchema).describe('Error mapping rules'),\n defaultCategory: ErrorCategorySchema.optional().default('integration_error').describe('Default category for unmapped errors'),\n unmappedBehavior: z.enum(['passthrough', 'generic_error', 'throw']).describe('What to do with unmapped errors'),\n logUnmapped: z.boolean().optional().default(true).describe('Log unmapped errors'),\n}).describe('Error mapping configuration'));\n\nexport type ErrorMappingConfig = z.infer<typeof ErrorMappingConfigSchema>;\n\n// ============================================================================\n// Health Check & Circuit Breaker Configuration\n// ============================================================================\n\n/**\n * Health Check Configuration\n * \n * Configures periodic health checks for connector endpoints.\n */\nexport const HealthCheckConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().describe('Enable health checks'),\n intervalMs: z.number().optional().default(60000).describe('Health check interval in milliseconds'),\n timeoutMs: z.number().optional().default(5000).describe('Health check timeout in milliseconds'),\n endpoint: z.string().optional().describe('Health check endpoint path'),\n method: z.enum(['GET', 'HEAD', 'OPTIONS']).optional().describe('HTTP method for health check'),\n expectedStatus: z.number().optional().default(200).describe('Expected HTTP status code'),\n unhealthyThreshold: z.number().optional().default(3).describe('Consecutive failures before marking unhealthy'),\n healthyThreshold: z.number().optional().default(1).describe('Consecutive successes before marking healthy'),\n}).describe('Health check configuration'));\n\nexport type HealthCheckConfig = z.infer<typeof HealthCheckConfigSchema>;\n\n/**\n * Circuit Breaker Configuration\n * \n * Implements the circuit breaker pattern to prevent cascading failures.\n */\nexport const CircuitBreakerConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().describe('Enable circuit breaker'),\n failureThreshold: z.number().optional().default(5).describe('Failures before opening circuit'),\n resetTimeoutMs: z.number().optional().default(30000).describe('Time in open state before half-open'),\n halfOpenMaxRequests: z.number().optional().default(1).describe('Requests allowed in half-open state'),\n monitoringWindow: z.number().optional().default(60000).describe('Rolling window for failure count in ms'),\n fallbackStrategy: z.enum(['cache', 'default_value', 'error', 'queue']).optional().describe('Fallback strategy when circuit is open'),\n}).describe('Circuit breaker configuration'));\n\nexport type CircuitBreakerConfig = z.infer<typeof CircuitBreakerConfigSchema>;\n\n/**\n * Connector Health Configuration\n * \n * Combines health check and circuit breaker for connector resilience.\n */\nexport const ConnectorHealthSchema = lazySchema(() => z.object({\n healthCheck: HealthCheckConfigSchema.optional().describe('Health check configuration'),\n circuitBreaker: CircuitBreakerConfigSchema.optional().describe('Circuit breaker configuration'),\n}).describe('Connector health configuration'));\n\nexport type ConnectorHealth = z.infer<typeof ConnectorHealthSchema>;\n\n// ============================================================================\n// Base Connector Schema\n// ============================================================================\n\n/**\n * Connector Type\n */\nexport const ConnectorTypeSchema = lazySchema(() => z.enum([\n 'saas', // SaaS application connector\n 'database', // Database connector\n 'file_storage', // File storage connector\n 'message_queue', // Message queue connector\n 'api', // Generic REST/GraphQL API\n 'custom', // Custom connector\n]).describe('Connector type'));\n\nexport type ConnectorType = z.infer<typeof ConnectorTypeSchema>;\n\n/**\n * Connector Status\n */\nexport const ConnectorStatusSchema = lazySchema(() => z.enum([\n 'active', // Connector is active and syncing\n 'inactive', // Connector is configured but disabled\n 'error', // Connector has errors\n 'configuring', // Connector is being set up\n]).describe('Connector status'));\n\nexport type ConnectorStatus = z.infer<typeof ConnectorStatusSchema>;\n\n/**\n * Connector Action Definition\n */\nexport const ConnectorActionSchema = lazySchema(() => z.object({\n key: z.string().describe('Action key (machine name)'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n inputSchema: z.record(z.string(), z.unknown()).optional().describe('Input parameters schema (JSON Schema)'),\n outputSchema: z.record(z.string(), z.unknown()).optional().describe('Output schema (JSON Schema)'),\n}));\n\n/**\n * Connector Trigger Definition\n */\nexport const ConnectorTriggerSchema = lazySchema(() => z.object({\n key: z.string().describe('Trigger key'),\n label: z.string().describe('Trigger label'),\n description: z.string().optional(),\n type: z.enum(['polling', 'webhook']).describe('Trigger type'),\n interval: z.number().optional().describe('Polling interval in seconds'),\n}));\n\n/**\n * Base Connector Schema\n * Core connector configuration shared across all connector types\n */\nexport const ConnectorSchema = lazySchema(() => z.object({\n /**\n * Machine name (snake_case)\n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique connector identifier'),\n \n /**\n * Human-readable label\n */\n label: z.string().describe('Display label'),\n \n /**\n * Connector type\n */\n type: ConnectorTypeSchema.describe('Connector type'),\n \n /**\n * Description\n */\n description: z.string().optional().describe('Connector description'),\n \n /**\n * Icon identifier\n */\n icon: z.string().optional().describe('Icon identifier'),\n \n /**\n * Authentication configuration\n */\n authentication: ConnectorAuthConfigSchema.describe('Authentication configuration'),\n\n /** Zapier-style Capabilities */\n actions: z.array(ConnectorActionSchema).optional(),\n triggers: z.array(ConnectorTriggerSchema).optional(),\n \n /**\n * Data synchronization configuration\n */\n syncConfig: DataSyncConfigSchema.optional().describe('Data sync configuration'),\n \n \n /**\n * Field mappings\n */\n fieldMappings: z.array(FieldMappingSchema).optional().describe('Field mapping rules'),\n \n /**\n * Webhook configuration\n */\n webhooks: z.array(WebhookConfigSchema).optional().describe('Webhook configurations'),\n \n /**\n * Rate limiting configuration\n */\n rateLimitConfig: RateLimitConfigSchema.optional().describe('Rate limiting configuration'),\n \n /**\n * Retry configuration\n */\n retryConfig: RetryConfigSchema.optional().describe('Retry configuration'),\n \n /**\n * Connection timeout in milliseconds\n */\n connectionTimeoutMs: z.number().min(1000).max(300000).optional().default(30000).describe('Connection timeout in ms'),\n \n /**\n * Request timeout in milliseconds\n */\n requestTimeoutMs: z.number().min(1000).max(300000).optional().default(30000).describe('Request timeout in ms'),\n \n /**\n * Connector status\n */\n status: ConnectorStatusSchema.optional().default('inactive').describe('Connector status'),\n \n /**\n * Enable connector\n */\n enabled: z.boolean().optional().default(true).describe('Enable connector'),\n \n /**\n * Error mapping configuration\n */\n errorMapping: ErrorMappingConfigSchema.optional().describe('Error mapping configuration'),\n \n /**\n * Health check and circuit breaker configuration\n */\n health: ConnectorHealthSchema.optional().describe('Health and resilience configuration'),\n \n /**\n * Custom metadata\n */\n metadata: z.record(z.string(), z.unknown()).optional().describe('Custom connector metadata'),\n}));\n\nexport type Connector = z.infer<typeof ConnectorSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\nimport { ManifestSchema } from './kernel/manifest.zod';\nimport { DatasourceSchema } from './data/datasource.zod';\nimport { TranslationBundleSchema, TranslationConfigSchema } from './system/translation.zod';\nimport { objectStackErrorMap, formatZodError } from './shared/error-map.zod';\nimport { normalizeStackInput, type MetadataCollectionInput, type MapSupportedField } from './shared/metadata-collection.zod';\n\n// Data Protocol\nimport { ObjectSchema, ObjectExtensionSchema } from './data/object.zod';\nimport { DatasetSchema } from './data/dataset.zod';\n\n// UI Protocol\nimport { AppSchema } from './ui/app.zod';\nimport { ViewSchema } from './ui/view.zod';\nimport { PageSchema } from './ui/page.zod';\nimport { DashboardSchema } from './ui/dashboard.zod';\nimport { ReportSchema } from './ui/report.zod';\nimport { ActionSchema } from './ui/action.zod';\nimport { ThemeSchema } from './ui/theme.zod';\n\n// Automation Protocol\nimport { ApprovalProcessSchema } from './automation/approval.zod';\nimport { WorkflowRuleSchema } from './automation/workflow.zod';\nimport { FlowSchema } from './automation/flow.zod';\n\n// Security Protocol\nimport { RoleSchema } from './identity/role.zod';\nimport { PermissionSetSchema } from './security/permission.zod';\nimport { SharingRuleSchema } from './security/sharing.zod';\nimport { PolicySchema } from './security/policy.zod';\n\nimport { ApiEndpointSchema } from './api/endpoint.zod';\nimport { FeatureFlagSchema } from './kernel/feature.zod';\n\n// AI Protocol\nimport { AgentSchema } from './ai/agent.zod';\nimport { SkillSchema } from './ai/skill.zod';\nimport { RAGPipelineConfigSchema } from './ai/rag-pipeline.zod';\n\n// Data Protocol (additional)\nimport { HookSchema } from './data/hook.zod';\nimport { MappingSchema } from './data/mapping.zod';\nimport { CubeSchema } from './data/analytics.zod';\n\n// Automation Protocol (additional)\nimport { WebhookSchema } from './automation/webhook.zod';\n\n// Integration Protocol\nimport { ConnectorSchema } from './integration/connector.zod';\n\n/**\n * Datasource Mapping Rule Schema\n *\n * Defines rules for routing objects to specific datasources based on\n * namespace, package, or object name patterns. This provides centralized\n * control over datasource assignment without modifying individual objects.\n *\n * Inspired by Django's Database Router and Kubernetes StorageClass patterns.\n *\n * @example\n * ```ts\n * datasourceMapping: [\n * { namespace: 'crm', datasource: 'memory' },\n * { objectPattern: 'sys_*', datasource: 'turso' },\n * { package: 'com.example.analytics', datasource: 'bigquery' },\n * { default: true, datasource: 'default' }\n * ]\n * ```\n */\nimport { lazySchema } from './shared/lazy-schema';\nexport const DatasourceMappingRuleSchema = lazySchema(() => z.object({\n /**\n * Match by namespace (e.g., 'crm', 'auth', 'todo')\n * Objects with this namespace will use the specified datasource.\n */\n namespace: z.string().optional().describe('Match objects by namespace'),\n\n /**\n * Match by package ID (e.g., 'com.example.crm')\n * All objects from this package will use the specified datasource.\n */\n package: z.string().optional().describe('Match objects by package ID'),\n\n /**\n * Match by object name pattern (supports wildcards: *, ?)\n * Examples: 'sys_*', 'temp_*', 'cache_*'\n */\n objectPattern: z.string().optional().describe('Match objects by name pattern (glob-style)'),\n\n /**\n * Mark as default fallback rule.\n * This rule applies to all objects that don't match any other rules.\n */\n default: z.boolean().optional().describe('Default fallback rule'),\n\n /**\n * Target datasource name.\n * Must match a registered driver name (e.g., 'memory', 'turso', 'postgres').\n */\n datasource: z.string().describe('Target datasource name'),\n\n /**\n * Optional priority for rule ordering (lower = higher priority).\n * If not specified, rules are evaluated in array order.\n */\n priority: z.number().optional().describe('Rule priority (lower = higher priority)'),\n}).describe('Datasource routing rule'));\n\nexport type DatasourceMappingRule = z.infer<typeof DatasourceMappingRuleSchema>;\n\n/**\n * ObjectStack Ecosystem Definition\n *\n * This schema represents the \"Full Stack\" definition of a project or environment.\n * It is used for:\n * 1. Project Export/Import (YAML/JSON dumps)\n * 2. IDE Validation (IntelliSense)\n * 3. Runtime Bootstrapping (In-memory loading)\n * 4. Platform Reflection (API & Capabilities Discovery)\n */\n/**\n * 1. DEFINITION PROTOCOL (Static)\n * ----------------------------------------------------------------------\n * Describes the \"Blueprint\" or \"Source Code\" of an ObjectStack Plugin/Project.\n * This represents the complete declarative state of the application.\n * \n * Usage:\n * - Developers write this in files locally.\n * - AI Agents generate this to create apps.\n * - CI Tools deploy this to the server.\n */\nexport const ObjectStackDefinitionSchema = lazySchema(() => z.object({\n /** System Configuration */\n manifest: ManifestSchema.optional().describe('Project Package Configuration'),\n datasources: z.array(DatasourceSchema).optional().describe('External Data Connections'),\n\n /**\n * Datasource Mapping Configuration\n *\n * Centralized routing rules that map packages, namespaces, or object patterns\n * to specific datasources. This eliminates the need to configure datasource\n * on every individual object.\n *\n * Rules are evaluated in order (or by priority if specified). First match wins.\n * If no match, falls back to object's explicit `datasource` field, then 'default'.\n *\n * @example\n * ```ts\n * datasourceMapping: [\n * // System objects use Turso (persistent storage)\n * { objectPattern: 'sys_*', datasource: 'turso' },\n * { namespace: 'auth', datasource: 'turso' },\n *\n * // CRM application uses Memory (dev/test)\n * { namespace: 'crm', datasource: 'memory' },\n * { package: 'com.example.crm', datasource: 'memory' },\n *\n * // Temporary objects use Memory\n * { objectPattern: 'temp_*', datasource: 'memory' },\n *\n * // Default fallback\n * { default: true, datasource: 'turso' },\n * ]\n * ```\n */\n datasourceMapping: z.array(DatasourceMappingRuleSchema).optional()\n .describe('Centralized datasource routing rules for packages/namespaces/objects'),\n\n translations: z.array(TranslationBundleSchema).optional().describe('I18n Translation Bundles'),\n i18n: TranslationConfigSchema.optional().describe('Internationalization configuration'),\n\n /** \n * ObjectQL: Data Layer \n * All business objects and entities.\n */\n objects: z.array(ObjectSchema).optional().describe('Business Objects definition (owned by this package)'),\n\n /**\n * Object Extensions: fields/config to merge into objects owned by other packages.\n * Use this instead of redefining an object when you want to add fields to\n * an existing object from another package.\n * \n * @example\n * ```ts\n * objectExtensions: [{\n * extend: 'contact',\n * fields: { sales_stage: Field.select([...]) },\n * }]\n * ```\n */\n objectExtensions: z.array(ObjectExtensionSchema).optional().describe('Extensions to objects owned by other packages'),\n\n /** \n * ObjectUI: User Interface Layer \n * Apps, Menus, Pages, and Visualizations.\n */\n apps: z.array(AppSchema).optional().describe('Applications'),\n views: z.array(ViewSchema).optional().describe('List Views'),\n pages: z.array(PageSchema).optional().describe('Custom Pages'),\n dashboards: z.array(DashboardSchema).optional().describe('Dashboards'),\n reports: z.array(ReportSchema).optional().describe('Analytics Reports'),\n actions: z.array(ActionSchema).optional().describe('Global and Object Actions'),\n themes: z.array(ThemeSchema).optional().describe('UI Themes'),\n\n /** \n * ObjectFlow: Automation Layer \n * Business logic, approvals, and workflows.\n */\n workflows: z.array(WorkflowRuleSchema).optional().describe('Event-driven workflows'),\n approvals: z.array(ApprovalProcessSchema).optional().describe('Approval processes'),\n flows: z.array(FlowSchema).optional().describe('Screen Flows'),\n\n /**\n * ObjectGuard: Security Layer\n */\n roles: z.array(RoleSchema).optional().describe('User Roles hierarchy'),\n permissions: z.array(PermissionSetSchema).optional().describe('Permission Sets and Profiles'),\n sharingRules: z.array(SharingRuleSchema).optional().describe('Record Sharing Rules'),\n policies: z.array(PolicySchema).optional().describe('Security & Compliance Policies'),\n\n /**\n * ObjectAPI: API Layer\n */\n apis: z.array(ApiEndpointSchema).optional().describe('API Endpoints'),\n webhooks: z.array(WebhookSchema).optional().describe('Outbound Webhooks'),\n\n /**\n * ObjectAI: Artificial Intelligence Layer\n *\n * Three-tier composition (Agent → Skill → Tool) aligned with Salesforce\n * Agentforce Topics, Microsoft Copilot Studio Topics, and ServiceNow Now\n * Assist Skills:\n *\n * - **agents**: Persona-bearing copilots (1-3 per app). Each agent declares\n * its base instructions, model, knowledge, and the set of skills it can\n * draw on. Users typically don't pick an agent per message — the active\n * app's `defaultAgent` is selected automatically.\n * - **skills**: Reusable capability bundles (\"topics\" in Salesforce parlance).\n * Each skill groups related tools, declares trigger phrases for\n * intent matching, and trigger conditions for context-aware activation.\n * - **ragPipelines**: Retrieval pipelines wired into agent `knowledge`.\n */\n agents: z.array(AgentSchema).optional().describe('AI Agents and Assistants'),\n skills: z.array(SkillSchema).optional().describe('AI Skills (reusable capability bundles referenced by Agents)'),\n ragPipelines: z.array(RAGPipelineConfigSchema).optional().describe('RAG Pipelines'),\n\n /**\n * ObjectQL: Data Extensions\n * Hooks, mappings, and analytics cubes.\n */\n hooks: z.array(HookSchema).optional().describe('Object Lifecycle Hooks'),\n /**\n * Named handler functions for declarative metadata that references\n * handlers by string name (`Hook.handler: 'my_handler'`,\n * `Action.target: 'my_handler'`). Two accepted shapes:\n *\n * - Map form (preferred): `{ my_handler: (ctx) => {...} }`\n * - Array form: `[{ name: 'my_handler', handler: (ctx) => {...} }]`\n *\n * Functions live in code only; they are not serialized into project\n * artifacts. The `AppPlugin` registers them on the engine before\n * binding hooks so `string` handlers resolve at startup.\n */\n functions: z.union([\n z.record(z.string(), z.function()),\n z.array(z.object({\n name: z.string(),\n handler: z.function(),\n packageId: z.string().optional(),\n })),\n ]).optional().describe('Named handler functions referenced by hooks/actions'),\n mappings: z.array(MappingSchema).optional().describe('Data Import/Export Mappings'),\n analyticsCubes: z.array(CubeSchema).optional().describe('Analytics Semantic Layer Cubes'),\n\n /**\n * Integration Protocol\n */\n connectors: z.array(ConnectorSchema).optional().describe('External System Connectors'),\n\n /**\n * Data Seeding Protocol\n * \n * Declarative seed data for bootstrapping, demos, and testing.\n * Each entry targets a specific object and provides records to load\n * using the specified conflict resolution strategy.\n * \n * Uses the standard DatasetSchema which supports:\n * - `externalId`: Idempotency key for upsert matching (default: 'name')\n * - `mode`: Conflict resolution (upsert, insert, ignore, replace)\n * - `env`: Environment scoping (prod, dev, test)\n * \n * @example\n * ```ts\n * data: [\n * {\n * object: 'account',\n * mode: 'upsert',\n * externalId: 'name',\n * records: [\n * { name: 'Acme Corp', type: 'customer', industry: 'technology' },\n * ]\n * }\n * ]\n * ```\n */\n data: z.array(DatasetSchema).optional().describe('Seed Data / Fixtures for bootstrapping'),\n\n /**\n * Plugins: External Capabilities\n * List of plugins to load. Can be a Manifest object, a package name string, or a Runtime Plugin instance.\n */\n plugins: z.array(z.unknown()).optional().describe('Plugins to load'),\n\n /**\n * Required Capabilities\n *\n * Declarative dependency on platform-provided capabilities. The\n * runtime resolves each name to a built-in service plugin and\n * loads it automatically — no need to construct the plugin in\n * `plugins[]` or pass `--preset` flags at the CLI level.\n *\n * Built-in capability names (mapped in `@objectstack/cli`):\n * `ai` → AIServicePlugin\n * `automation` → AutomationServicePlugin (+ default node packs)\n * `analytics` → AnalyticsServicePlugin\n * `audit` → AuditPlugin\n * `i18n` → I18nPlugin\n *\n * If a capability is also provided explicitly via `plugins[]`, the\n * explicit instance wins (and the resolver does not double-register).\n *\n * @example\n * ```ts\n * defineStack({\n * manifest: { ... },\n * requires: ['ai', 'automation', 'analytics'],\n * objects: [...],\n * });\n * ```\n */\n requires: z.array(z.string()).optional().describe('Capability names this stack requires from the platform'),\n\n /**\n * DevPlugins: Development Capabilities\n * List of plugins to load ONLY in development environment.\n * Equivalent to `devDependencies` in package.json.\n * Useful for loading dev-tools, mock data generators, or referencing local sibling packages for debugging.\n */\n devPlugins: z.array(z.union([ManifestSchema, z.string()])).optional().describe('Plugins to load only in development (CLI dev command)'),\n\n /**\n * Compiled Runtime Bundle Reference\n *\n * Path (relative to the JSON artifact) to a sibling ESM module emitted\n * by `objectstack build`. The module exports `{ functions: Record<string, Function> }`\n * containing every inline `Hook.handler` (and top-level `functions` map\n * entry) that was lowered to a string ref during compilation.\n *\n * Runtimes (StandaloneStack, multi-tenant artifact-bind path) MUST\n * dynamic-import this file on boot and merge `module.functions` into\n * `bundle.functions` before `bindHooks(...)` runs — otherwise every\n * declarative hook will fail to resolve its handler.\n *\n * The two-product layout (JSON + ESM) is the canonical build artifact\n * shape for the platform. Authoring tools (`defineStack`, Studio\n * inline editor) must NOT set this field directly; it is populated\n * exclusively by the compiler.\n *\n * @example \"./objectstack-runtime.7a70cd6576d17ff6.mjs\"\n */\n runtimeModule: z.string().optional().describe('Path (relative to the artifact JSON) of the compiled runtime ESM bundle. Set by `objectstack build`; do not author by hand.'),\n}));\n\nexport type ObjectStackDefinition = z.infer<typeof ObjectStackDefinitionSchema>;\n\n/**\n * Extract the element type from an array type.\n * @internal\n */\ntype ExtractArrayItem<T> = T extends (infer Item)[] ? Item : never;\n\n/**\n * Input type for `defineStack()` that accepts both array and map format\n * for all named metadata collections.\n * \n * Map format allows defining metadata using the key as the `name` field:\n * ```ts\n * // Array format (traditional)\n * objects: [{ name: 'task', fields: { ... } }]\n * \n * // Map format (key becomes name)\n * objects: { task: { fields: { ... } } }\n * ```\n * \n * The output type is always arrays (`ObjectStackDefinition`).\n */\nexport type ObjectStackDefinitionInput =\n Omit<z.input<typeof ObjectStackDefinitionSchema>, MapSupportedField> & {\n [K in MapSupportedField]?: MetadataCollectionInput<\n ExtractArrayItem<NonNullable<z.input<typeof ObjectStackDefinitionSchema>[K]>>\n >;\n };\n\n// Alias for backward compatibility\nexport const ObjectStackSchema = lazySchema(() => ObjectStackDefinitionSchema);\nexport type ObjectStack = ObjectStackDefinition;\n\n/**\n * Options for `defineStack()`.\n */\nexport interface DefineStackOptions {\n /**\n * When `true` (default), enables strict validation:\n * - All Zod schemas are validated (field names, types, etc.)\n * - Cross-reference validation runs (views/actions/workflows reference valid objects)\n * - Ensures data integrity and catches errors early\n *\n * When `false`, validation is skipped for maximum flexibility\n * (e.g., when views reference objects provided by other plugins).\n * Use this ONLY when you need to bypass validation for advanced use cases.\n *\n * @default true\n */\n strict?: boolean;\n}\n\n/**\n * Collect all object names defined in a stack definition.\n */\nfunction collectObjectNames(config: ObjectStackDefinition): Set<string> {\n const names = new Set<string>();\n if (config.objects) {\n for (const obj of config.objects) {\n names.add(obj.name);\n }\n }\n return names;\n}\n\n/**\n * Perform strict cross-reference validation on a parsed stack definition.\n * Returns an array of error messages (empty if valid).\n */\nfunction validateCrossReferences(config: ObjectStackDefinition): string[] {\n const errors: string[] = [];\n const objectNames = collectObjectNames(config);\n\n if (objectNames.size === 0) return errors;\n\n // Validate workflow → object references (uses `objectName`)\n if (config.workflows) {\n for (const workflow of config.workflows) {\n if (workflow.objectName && !objectNames.has(workflow.objectName)) {\n errors.push(\n `Workflow '${workflow.name}' references object '${workflow.objectName}' which is not defined in objects.`,\n );\n }\n }\n }\n\n // Validate approval → object references\n if (config.approvals) {\n for (const approval of config.approvals) {\n if (approval.object && !objectNames.has(approval.object)) {\n errors.push(\n `Approval '${approval.name}' references object '${approval.object}' which is not defined in objects.`,\n );\n }\n }\n }\n\n // Validate hook → object references\n if (config.hooks) {\n for (const hook of config.hooks) {\n if (hook.object) {\n const hookObjects = Array.isArray(hook.object) ? hook.object : [hook.object];\n for (const obj of hookObjects) {\n if (!objectNames.has(obj)) {\n errors.push(\n `Hook '${hook.name}' references object '${obj}' which is not defined in objects.`,\n );\n }\n }\n }\n }\n }\n\n // Validate view data source → object references (nested in data.object)\n if (config.views) {\n for (const [i, view] of config.views.entries()) {\n const checkViewData = (data: unknown, viewLabel: string) => {\n if (data && typeof data === 'object' && 'provider' in data && 'object' in data) {\n const d = data as { provider: string; object: string };\n if (d.provider === 'object' && d.object && !objectNames.has(d.object)) {\n errors.push(\n `${viewLabel} references object '${d.object}' which is not defined in objects.`,\n );\n }\n }\n };\n\n if (view.list?.data) {\n checkViewData(view.list.data, `View[${i}].list`);\n }\n if (view.form?.data) {\n checkViewData(view.form.data, `View[${i}].form`);\n }\n }\n }\n\n // Validate seed data → object references\n if (config.data) {\n for (const dataset of config.data) {\n if (dataset.object && !objectNames.has(dataset.object)) {\n errors.push(\n `Seed data references object '${dataset.object}' which is not defined in objects.`,\n );\n }\n }\n }\n\n // Validate app navigation → object/dashboard/page/report references\n if (config.apps) {\n const dashboardNames = new Set<string>();\n if (config.dashboards) {\n for (const d of config.dashboards) {\n dashboardNames.add(d.name);\n }\n }\n const pageNames = new Set<string>();\n if (config.pages) {\n for (const p of config.pages) {\n pageNames.add(p.name);\n }\n }\n const reportNames = new Set<string>();\n if (config.reports) {\n for (const r of config.reports) {\n reportNames.add(r.name);\n }\n }\n\n for (const app of config.apps) {\n if (!app.navigation) continue;\n const checkNavItems = (items: unknown[], appName: string) => {\n for (const item of items) {\n if (!item || typeof item !== 'object') continue;\n const nav = item as Record<string, unknown>;\n if (nav.type === 'object' && typeof nav.objectName === 'string' && !objectNames.has(nav.objectName)) {\n // `requiresObject` opts the nav item into \"may be provided by\n // another stack / platform plugin\" semantics — the frontend\n // hides the entry when the object isn't in the SchemaRegistry,\n // and stack-level cross-ref validation must skip it.\n if (!nav.requiresObject) {\n errors.push(\n `App '${appName}' navigation references object '${nav.objectName}' which is not defined in objects.`,\n );\n }\n }\n if (nav.type === 'dashboard' && typeof nav.dashboardName === 'string' && dashboardNames.size > 0 && !dashboardNames.has(nav.dashboardName)) {\n errors.push(\n `App '${appName}' navigation references dashboard '${nav.dashboardName}' which is not defined in dashboards.`,\n );\n }\n if (nav.type === 'page' && typeof nav.pageName === 'string' && pageNames.size > 0 && !pageNames.has(nav.pageName)) {\n errors.push(\n `App '${appName}' navigation references page '${nav.pageName}' which is not defined in pages.`,\n );\n }\n if (nav.type === 'report' && typeof nav.reportName === 'string' && reportNames.size > 0 && !reportNames.has(nav.reportName)) {\n errors.push(\n `App '${appName}' navigation references report '${nav.reportName}' which is not defined in reports.`,\n );\n }\n // Recurse into group children\n if (nav.type === 'group' && Array.isArray(nav.children)) {\n checkNavItems(nav.children, appName);\n }\n }\n };\n checkNavItems(app.navigation, app.name);\n }\n }\n\n // Validate action → flow/modal cross-references\n // Note: When no flows/pages are defined (size === 0), targets are not validated\n // because the referenced items may be provided by a plugin.\n // This is consistent with dashboard/page/report validation in navigation.\n if (config.actions) {\n const flowNames = new Set<string>();\n if (config.flows) {\n for (const flow of config.flows) {\n flowNames.add(flow.name);\n }\n }\n\n const pageNames = new Set<string>();\n if (config.pages) {\n for (const page of config.pages) {\n pageNames.add(page.name);\n }\n }\n\n for (const action of config.actions) {\n // Validate flow-type actions reference a defined flow\n if (action.type === 'flow' && action.target && flowNames.size > 0 && !flowNames.has(action.target)) {\n errors.push(\n `Action '${action.name}' references flow '${action.target}' which is not defined in flows.`,\n );\n }\n\n // Validate modal-type actions reference a defined page\n if (action.type === 'modal' && action.target && pageNames.size > 0 && !pageNames.has(action.target)) {\n errors.push(\n `Action '${action.name}' references page '${action.target}' (via modal target) which is not defined in pages.`,\n );\n }\n\n // Validate action → object references (objectName)\n if (action.objectName && !objectNames.has(action.objectName)) {\n errors.push(\n `Action '${action.name}' references object '${action.objectName}' which is not defined in objects.`,\n );\n }\n }\n }\n\n return errors;\n}\n\n/**\n * Merge top-level actions into their target objects based on `objectName`.\n * \n * Actions with `objectName` are appended to the corresponding object's `actions` array.\n * Actions without `objectName` (global actions) are left untouched.\n * The top-level `actions` array is preserved for global access (e.g., platform overview, search).\n * \n * This aligns with Salesforce/ServiceNow patterns where object metadata includes its actions,\n * so API responses like `/api/v1/meta/objects/:name` include actions without downstream merge.\n * \n * @internal\n */\nfunction mergeActionsIntoObjects(config: ObjectStackDefinition): ObjectStackDefinition {\n if (!config.actions || !config.objects || config.objects.length === 0) {\n return config;\n }\n\n // Build map: objectName → actions[]\n const actionsByObject = new Map<string, NonNullable<ObjectStackDefinition['actions']>>();\n for (const action of config.actions) {\n if (action.objectName) {\n const list = actionsByObject.get(action.objectName) ?? [];\n list.push(action);\n actionsByObject.set(action.objectName, list);\n }\n }\n\n if (actionsByObject.size === 0) return config;\n\n // Merge into objects (shallow copy — only the `actions` field is modified;\n // other fields are shared references, consistent with mergeObjects() and Zod output)\n const newObjects = config.objects.map((obj) => {\n const objActions = actionsByObject.get(obj.name);\n if (!objActions) return obj;\n return {\n ...obj,\n actions: [...(obj.actions ?? []), ...objActions],\n };\n });\n\n return { ...config, objects: newObjects };\n}\n\n/**\n * Type-safe helper to define a generic stack.\n *\n * In ObjectStack, the concept of \"Project\" and \"Plugin\" is fluid:\n * - A **Project** is simply a Stack that is currently being executed (the `cwd`).\n * - A **Plugin** is a Stack that is being loaded by another Stack.\n *\n * This unified definition allows any \"Project\" (e.g., Todo App) to be imported\n * as a \"Plugin\" into a larger system (e.g., Company PaaS) without code changes.\n *\n * @param config - The stack definition object\n * @param options - Optional settings. Use `{ strict: true }` to validate cross-references.\n * @returns The validated stack definition\n *\n * @example\n * ```ts\n * // Basic usage (pass-through, backward compatible)\n * const stack = defineStack({ manifest: { ... }, objects: [...] });\n *\n * // Map format — key becomes `name` field\n * const stack = defineStack({\n * objects: {\n * task: { fields: { title: { type: 'text' } } },\n * project: { fields: { name: { type: 'text' } } },\n * },\n * apps: {\n * project_manager: { label: 'Project Manager', objects: ['task', 'project'] },\n * },\n * });\n *\n * // Strict mode — validates that views/workflows reference defined objects\n * const stack = defineStack({ manifest: { ... }, objects: [...], views: [...] }, { strict: true });\n * ```\n */\nexport function defineStack(\n config: ObjectStackDefinitionInput,\n options?: DefineStackOptions,\n): ObjectStackDefinition {\n // Default to strict=true for safety (validate by default)\n const strict = options?.strict !== false;\n\n // Normalize map-formatted collections to arrays (key → name injection)\n const normalized = normalizeStackInput(config as Record<string, unknown>);\n\n if (!strict) {\n // Non-strict mode: skip validation (advanced use cases only)\n return mergeActionsIntoObjects(normalized as ObjectStackDefinition);\n }\n\n // Strict mode (default): parse with custom error map, then cross-reference validate\n const result = ObjectStackDefinitionSchema.safeParse(normalized, {\n error: objectStackErrorMap,\n });\n\n if (!result.success) {\n throw new Error(formatZodError(result.error, 'defineStack validation failed'));\n }\n\n const crossRefErrors = validateCrossReferences(result.data);\n if (crossRefErrors.length > 0) {\n const header = `defineStack cross-reference validation failed (${crossRefErrors.length} issue${crossRefErrors.length === 1 ? '' : 's'}):`;\n const lines = crossRefErrors.map((e) => ` ✗ ${e}`);\n throw new Error(`${header}\\n\\n${lines.join('\\n')}`);\n }\n\n return mergeActionsIntoObjects(result.data);\n}\n\n\n// ─── composeStacks ──────────────────────────────────────────────────\n\n/**\n * Strategy for resolving conflicts when multiple stacks define the same named item.\n *\n * - `'error'` — Throw an error when a duplicate name is detected (default).\n * - `'override'` — Last stack wins; later definitions replace earlier ones.\n * - `'merge'` — Shallow-merge items with the same name (later fields win).\n */\nexport const ConflictStrategySchema = lazySchema(() => z.enum(['error', 'override', 'merge']));\nexport type ConflictStrategy = z.infer<typeof ConflictStrategySchema>;\n\n/**\n * Options for {@link composeStacks}.\n */\nexport const ComposeStacksOptionsSchema = lazySchema(() => z.object({\n /**\n * How to handle same-name objects across stacks.\n * @default 'error'\n */\n objectConflict: ConflictStrategySchema.default('error'),\n\n /**\n * Which manifest to keep when multiple stacks provide one.\n * - `'first'` — Use the first manifest found.\n * - `'last'` — Use the last manifest found (default).\n * - A number — Use the manifest from the stack at the given index.\n * @default 'last'\n */\n manifest: z.union([z.enum(['first', 'last']), z.number().int().min(0)]).default('last'),\n\n /**\n * Optional namespace prefix (reserved for Phase 2 — Marketplace isolation).\n * When set, object names from this composition are prefixed for isolation.\n */\n namespace: z.string().optional(),\n}));\n\nexport type ComposeStacksOptions = z.input<typeof ComposeStacksOptionsSchema>;\n\n/**\n * All array fields on `ObjectStackDefinition` that are simply concatenated.\n * @internal\n */\nconst CONCAT_ARRAY_FIELDS = [\n 'datasources',\n 'translations',\n 'objectExtensions',\n 'apps',\n 'views',\n 'pages',\n 'dashboards',\n 'reports',\n 'actions',\n 'themes',\n 'workflows',\n 'approvals',\n 'flows',\n 'roles',\n 'permissions',\n 'sharingRules',\n 'policies',\n 'apis',\n 'webhooks',\n 'agents',\n 'skills',\n 'ragPipelines',\n 'hooks',\n 'mappings',\n 'analyticsCubes',\n 'connectors',\n 'data',\n 'plugins',\n 'devPlugins',\n 'requires',\n] as const satisfies readonly (keyof ObjectStackDefinition)[];\n\n/**\n * Merge objects from multiple stacks according to the chosen conflict strategy.\n * @internal\n */\nfunction mergeObjects(\n stacks: ObjectStackDefinition[],\n strategy: ConflictStrategy,\n): ObjectStackDefinition['objects'] {\n type Obj = NonNullable<ObjectStackDefinition['objects']>[number];\n const map = new Map<string, Obj>();\n const result: Obj[] = [];\n\n for (const stack of stacks) {\n if (!stack.objects) continue;\n for (const obj of stack.objects) {\n const existing = map.get(obj.name);\n if (!existing) {\n map.set(obj.name, obj);\n result.push(obj);\n continue;\n }\n\n switch (strategy) {\n case 'error':\n throw new Error(\n `composeStacks conflict: object '${obj.name}' is defined in multiple stacks. ` +\n `Use { objectConflict: 'override' } or { objectConflict: 'merge' } to resolve.`,\n );\n case 'override': {\n // Replace in-place in the result array\n const idx = result.indexOf(existing);\n result[idx] = obj;\n map.set(obj.name, obj);\n break;\n }\n case 'merge': {\n const merged = { ...existing, ...obj, fields: { ...existing.fields, ...obj.fields } } as Obj;\n const idx = result.indexOf(existing);\n result[idx] = merged;\n map.set(obj.name, merged);\n break;\n }\n }\n }\n }\n\n return result.length > 0 ? result : undefined;\n}\n\n/**\n * Select the manifest to use from multiple stacks.\n * @internal\n */\nfunction selectManifest(\n stacks: ObjectStackDefinition[],\n strategy: 'first' | 'last' | number,\n): ObjectStackDefinition['manifest'] {\n if (typeof strategy === 'number') {\n return stacks[strategy]?.manifest;\n }\n if (strategy === 'first') {\n for (const s of stacks) {\n if (s.manifest) return s.manifest;\n }\n return undefined;\n }\n // 'last' (default)\n for (let i = stacks.length - 1; i >= 0; i--) {\n if (stacks[i].manifest) return stacks[i].manifest;\n }\n return undefined;\n}\n\n/**\n * Declaratively compose multiple stack definitions into a single unified stack.\n *\n * This eliminates the manual `...spread` merging pattern when combining\n * multiple applications (e.g., CRM + Todo + BI) into a single project.\n *\n * **Array fields** (apps, views, dashboards, etc.) are concatenated in order.\n * **Objects** are merged according to the `objectConflict` strategy.\n * **Manifest** is selected based on the `manifest` option.\n *\n * @param stacks - Stack definitions to compose (order matters for conflict resolution)\n * @param options - Composition options (conflict strategy, manifest selection, etc.)\n * @returns A single merged `ObjectStackDefinition`\n *\n * @example\n * ```ts\n * import { composeStacks, defineStack } from '@objectstack/spec';\n *\n * const crm = defineStack({ ... });\n * const todo = defineStack({ ... });\n *\n * // Simple composition — throws on duplicate objects\n * const combined = composeStacks([crm, todo]);\n *\n * // Override strategy — later stacks win\n * const combined = composeStacks([crm, todo], { objectConflict: 'override' });\n *\n * // Merge strategy — fields from later stacks are shallow-merged\n * const combined = composeStacks([crm, todo], { objectConflict: 'merge' });\n * ```\n */\nexport function composeStacks(\n stacks: ObjectStackDefinition[],\n options?: ComposeStacksOptions,\n): ObjectStackDefinition {\n if (stacks.length === 0) return {} as ObjectStackDefinition;\n if (stacks.length === 1) return stacks[0];\n\n const opts = ComposeStacksOptionsSchema.parse(options ?? {});\n\n const composed: Record<string, unknown> = {};\n\n // 1. Manifest — pick based on strategy\n composed.manifest = selectManifest(stacks, opts.manifest);\n\n // 2. i18n — last-wins (single object, not array)\n for (let i = stacks.length - 1; i >= 0; i--) {\n if (stacks[i].i18n) {\n composed.i18n = stacks[i].i18n;\n break;\n }\n }\n\n // 3. Objects — use conflict strategy\n const objects = mergeObjects(stacks, opts.objectConflict);\n if (objects) {\n composed.objects = objects;\n }\n\n // 4. All other array fields — simple concatenation\n for (const field of CONCAT_ARRAY_FIELDS) {\n const arrays = stacks\n .map((s) => (s as Record<string, unknown>)[field])\n .filter((v): v is unknown[] => Array.isArray(v));\n if (arrays.length > 0) {\n composed[field] = arrays.flat();\n }\n }\n\n return mergeActionsIntoObjects(composed as ObjectStackDefinition);\n}\n\n\n/**\n * 2. RUNTIME CAPABILITIES PROTOCOL (Dynamic)\n * ----------------------------------------------------------------------\n * Describes what the ObjectOS Platform *is* and *can do*.\n * AI Agents read this to understand:\n * - What APIs are available?\n * - What features are enabled?\n * - What limits exist?\n * \n * The capabilities are organized by subsystem for clarity:\n * - ObjectQL: Data Layer capabilities\n * - ObjectUI: User Interface Layer capabilities \n * - ObjectOS: System Layer capabilities\n */\n\n/**\n * ObjectQL Capabilities Schema\n * \n * Defines capabilities related to the Data Layer:\n * - Query operations and advanced SQL features\n * - Data validation and business logic\n * - Database driver support\n * - AI/ML data features\n */\nexport const ObjectQLCapabilitiesSchema = lazySchema(() => z.object({\n /** Query Capabilities */\n queryFilters: z.boolean().default(true).describe('Supports WHERE clause filtering'),\n queryAggregations: z.boolean().default(true).describe('Supports GROUP BY and aggregation functions'),\n querySorting: z.boolean().default(true).describe('Supports ORDER BY sorting'),\n queryPagination: z.boolean().default(true).describe('Supports LIMIT/OFFSET pagination'),\n queryWindowFunctions: z.boolean().default(false).describe('Supports window functions with OVER clause'),\n querySubqueries: z.boolean().default(false).describe('Supports subqueries'),\n queryDistinct: z.boolean().default(true).describe('Supports SELECT DISTINCT'),\n queryHaving: z.boolean().default(false).describe('Supports HAVING clause for aggregations'),\n queryJoins: z.boolean().default(false).describe('Supports SQL-style joins'),\n \n /** Advanced Data Features */\n fullTextSearch: z.boolean().default(false).describe('Supports full-text search'),\n vectorSearch: z.boolean().default(false).describe('Supports vector embeddings and similarity search for AI/RAG'),\n geoSpatial: z.boolean().default(false).describe('Supports geospatial queries and location fields'),\n \n /** Field Type Support */\n jsonFields: z.boolean().default(true).describe('Supports JSON field types'),\n arrayFields: z.boolean().default(false).describe('Supports array field types'),\n \n /** Data Validation & Logic */\n validationRules: z.boolean().default(true).describe('Supports validation rules'),\n workflows: z.boolean().default(true).describe('Supports workflow automation'),\n triggers: z.boolean().default(true).describe('Supports database triggers'),\n formulas: z.boolean().default(true).describe('Supports formula fields'),\n \n /** Transaction & Performance */\n transactions: z.boolean().default(true).describe('Supports database transactions'),\n bulkOperations: z.boolean().default(true).describe('Supports bulk create/update/delete'),\n \n /** Driver Support */\n supportedDrivers: z.array(z.string()).optional().describe('Available database drivers (e.g., postgresql, mongodb, excel)'),\n}));\n\n/**\n * ObjectUI Capabilities Schema\n * \n * Defines capabilities related to the UI Layer:\n * - View rendering (List, Form, Calendar, etc.)\n * - Dashboard and reporting\n * - Theming and customization\n * - UI actions and interactions\n */\nexport const ObjectUICapabilitiesSchema = lazySchema(() => z.object({\n /** View Types */\n listView: z.boolean().default(true).describe('Supports list/grid views'),\n formView: z.boolean().default(true).describe('Supports form views'),\n kanbanView: z.boolean().default(false).describe('Supports kanban board views'),\n calendarView: z.boolean().default(false).describe('Supports calendar views'),\n ganttView: z.boolean().default(false).describe('Supports Gantt chart views'),\n \n /** Analytics & Reporting */\n dashboards: z.boolean().default(true).describe('Supports dashboard creation'),\n reports: z.boolean().default(true).describe('Supports report generation'),\n charts: z.boolean().default(true).describe('Supports chart widgets'),\n \n /** Customization */\n customPages: z.boolean().default(true).describe('Supports custom page creation'),\n customThemes: z.boolean().default(false).describe('Supports custom theme creation'),\n customComponents: z.boolean().default(false).describe('Supports custom UI components/widgets'),\n \n /** Actions & Interactions */\n customActions: z.boolean().default(true).describe('Supports custom button actions'),\n screenFlows: z.boolean().default(false).describe('Supports interactive screen flows'),\n \n /** Responsive & Accessibility */\n mobileOptimized: z.boolean().default(false).describe('UI optimized for mobile devices'),\n accessibility: z.boolean().default(false).describe('WCAG accessibility support'),\n}));\n\n/**\n * ObjectOS Capabilities Schema\n * \n * Defines capabilities related to the System Layer:\n * - Runtime environment and platform features\n * - API and integration capabilities\n * - Security and multi-tenancy\n * - System services (events, jobs, audit)\n */\nexport const ObjectOSCapabilitiesSchema = lazySchema(() => z.object({\n /** System Identity */\n version: z.string().describe('ObjectOS Kernel Version'),\n environment: z.enum(['development', 'test', 'staging', 'production']),\n \n /** API Surface */\n restApi: z.boolean().default(true).describe('REST API available'),\n graphqlApi: z.boolean().default(false).describe('GraphQL API available'),\n odataApi: z.boolean().default(false).describe('OData API available'),\n \n /** Real-time & Events */\n websockets: z.boolean().default(false).describe('WebSocket support for real-time updates'),\n serverSentEvents: z.boolean().default(false).describe('Server-Sent Events support'),\n eventBus: z.boolean().default(false).describe('Internal event bus for pub/sub'),\n \n /** Integration */\n webhooks: z.boolean().default(true).describe('Outbound webhook support'),\n apiContracts: z.boolean().default(false).describe('API contract definitions'),\n \n /** Security & Access Control */\n authentication: z.boolean().default(true).describe('Authentication system'),\n rbac: z.boolean().default(true).describe('Role-Based Access Control'),\n fieldLevelSecurity: z.boolean().default(false).describe('Field-level permissions'),\n rowLevelSecurity: z.boolean().default(false).describe('Row-level security/sharing rules'),\n \n /** Multi-tenancy */\n multiTenant: z.boolean().default(false).describe('Multi-tenant architecture support'),\n \n /** Platform Services */\n backgroundJobs: z.boolean().default(false).describe('Background job scheduling'),\n auditLogging: z.boolean().default(false).describe('Audit trail logging'),\n fileStorage: z.boolean().default(true).describe('File upload and storage'),\n \n /** Internationalization */\n i18n: z.boolean().default(true).describe('Internationalization support'),\n \n /** Plugin System */\n pluginSystem: z.boolean().default(false).describe('Plugin/extension system'),\n \n /** Active Features & Flags */\n features: z.array(FeatureFlagSchema).optional().describe('Active Feature Flags'),\n \n /** Available APIs */\n apis: z.array(ApiEndpointSchema).optional().describe('Available System & Business APIs'),\n network: z.object({\n graphql: z.boolean().default(false),\n search: z.boolean().default(false),\n websockets: z.boolean().default(false),\n files: z.boolean().default(true),\n analytics: z.boolean().default(false).describe('Is the Analytics/BI engine enabled?'),\n ai: z.boolean().default(false).describe('Is the AI engine enabled?'),\n workflow: z.boolean().default(false).describe('Is the Workflow engine enabled?'),\n notifications: z.boolean().default(false).describe('Is the Notification service enabled?'),\n i18n: z.boolean().default(false).describe('Is the i18n service enabled?'),\n }).optional().describe('Network Capabilities (GraphQL, WS, etc.)'),\n\n /** Introspection */\n systemObjects: z.array(z.string()).optional().describe('List of globally available System Objects'),\n \n /** Constraints (for AI Generation) */\n limits: z.object({\n maxObjects: z.number().optional(),\n maxFieldsPerObject: z.number().optional(),\n maxRecordsPerQuery: z.number().optional(),\n apiRateLimit: z.number().optional(),\n fileUploadSizeLimit: z.number().optional().describe('Max file size in bytes'),\n }).optional()\n}));\n\n/**\n * Unified ObjectStack Capabilities Schema\n * \n * Complete capability descriptor for an ObjectStack instance.\n * Organized by architectural layer for clarity and maintainability.\n */\nexport const ObjectStackCapabilitiesSchema = lazySchema(() => z.object({\n /** Data Layer Capabilities (ObjectQL) */\n data: ObjectQLCapabilitiesSchema.describe('Data Layer capabilities'),\n \n /** User Interface Layer Capabilities (ObjectUI) */\n ui: ObjectUICapabilitiesSchema.describe('UI Layer capabilities'),\n \n /** System/Runtime Layer Capabilities (ObjectOS) */\n system: ObjectOSCapabilitiesSchema.describe('System/Runtime Layer capabilities'),\n}));\n\nexport type ObjectQLCapabilities = z.infer<typeof ObjectQLCapabilitiesSchema>;\nexport type ObjectUICapabilities = z.infer<typeof ObjectUICapabilitiesSchema>;\nexport type ObjectOSCapabilities = z.infer<typeof ObjectOSCapabilitiesSchema>;\nexport type ObjectStackCapabilities = z.infer<typeof ObjectStackCapabilitiesSchema>;\n\n\n\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// ==========================================\n// Tool Category\n// ==========================================\n\n/**\n * Tool Category\n * Classifies the tool by its operational domain.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ToolCategorySchema = lazySchema(() => z.enum([\n 'data', // CRUD / query operations\n 'action', // Side-effect actions (send email, create record)\n 'flow', // Trigger a visual flow\n 'integration', // External API / webhook calls\n 'vector_search', // RAG / vector search\n 'analytics', // Aggregation & reporting\n 'utility', // Formatters, parsers, helpers\n]).describe('Tool operational category'));\n\nexport type ToolCategory = z.infer<typeof ToolCategorySchema>;\n\n// ==========================================\n// Tool Schema\n// ==========================================\n\n/**\n * Tool Schema\n *\n * First-class metadata definition for an AI-callable tool.\n * Tools are the atomic units of AI capability — each tool\n * represents a single, well-defined operation with strict\n * parameter validation via JSON Schema.\n *\n * Aligned with Salesforce Agentforce, Microsoft Copilot Studio,\n * and ServiceNow Now Assist metadata patterns.\n *\n * @example\n * ```ts\n * const tool = defineTool({\n * name: 'create_case',\n * label: 'Create Support Case',\n * description: 'Creates a new support case record',\n * category: 'action',\n * parameters: {\n * type: 'object',\n * properties: {\n * subject: { type: 'string', description: 'Case subject' },\n * priority: { type: 'string', enum: ['low', 'medium', 'high'] },\n * },\n * required: ['subject'],\n * },\n * objectName: 'support_case',\n * requiresConfirmation: true,\n * });\n * ```\n */\nexport const ToolSchema = lazySchema(() => z.object({\n /** Machine name (snake_case, globally unique) */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Tool unique identifier (snake_case)'),\n\n /** Human-readable display name */\n label: z.string().describe('Tool display name'),\n\n /** Detailed description for LLM consumption (the model reads this to decide when to call the tool) */\n description: z.string().describe('Tool description for LLM function calling'),\n\n /** Operational category */\n category: ToolCategorySchema.optional().describe('Tool category for grouping and filtering'),\n\n /**\n * JSON Schema describing the tool input parameters.\n * Must be a valid JSON Schema object. The AI model generates\n * arguments conforming to this schema.\n */\n parameters: z.record(z.string(), z.unknown()).describe('JSON Schema for tool parameters'),\n\n /**\n * Optional JSON Schema for the tool output.\n * Used for structured output validation and downstream tool chaining.\n */\n outputSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for tool output'),\n\n /**\n * Associated object name (when the tool operates on a specific data object).\n * @example 'support_case'\n */\n objectName: z.string().regex(/^[a-z_][a-z0-9_]*$/).optional().describe('Target object name (snake_case)'),\n\n /** Whether the tool requires human confirmation before execution */\n requiresConfirmation: z.boolean().default(false).describe('Require user confirmation before execution'),\n\n /** Permission profiles/roles required to use this tool */\n permissions: z.array(z.string()).optional().describe('Required permissions or roles'),\n\n /** Whether the tool is enabled */\n active: z.boolean().default(true).describe('Whether the tool is enabled'),\n\n /** Whether this is a platform built-in tool (vs. user-defined) */\n builtIn: z.boolean().default(false).describe('Platform built-in tool flag'),\n}));\n\nexport type Tool = z.infer<typeof ToolSchema>;\n\n// ==========================================\n// Factory\n// ==========================================\n\n/**\n * Type-safe factory for creating AI tool metadata definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const tool = defineTool({\n * name: 'query_orders',\n * label: 'Query Orders',\n * description: 'Search and filter customer orders',\n * category: 'data',\n * parameters: {\n * type: 'object',\n * properties: {\n * customerId: { type: 'string' },\n * status: { type: 'string', enum: ['pending', 'shipped', 'delivered'] },\n * },\n * required: ['customerId'],\n * },\n * });\n * ```\n */\nexport function defineTool(config: z.input<typeof ToolSchema>): Tool {\n return ToolSchema.parse(config);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/shared/lazy-schema.ts","../src/kernel/plugin-capability.zod.ts","../src/kernel/plugin-loading.zod.ts","../src/kernel/plugin.zod.ts","../src/data/dataset.zod.ts","../src/kernel/manifest.zod.ts","../src/data/datasource.zod.ts","../src/system/translation.zod.ts","../src/shared/identifiers.zod.ts","../src/shared/expression.zod.ts","../src/system/encryption.zod.ts","../src/system/masking.zod.ts","../src/data/field.zod.ts","../src/shared/suggestions.zod.ts","../src/shared/error-map.zod.ts","../src/shared/metadata-collection.zod.ts","../src/data/validation.zod.ts","../src/automation/state-machine.zod.ts","../src/ui/i18n.zod.ts","../src/data/hook-body.zod.ts","../src/ui/action.zod.ts","../src/ui/sharing.zod.ts","../src/ui/responsive.zod.ts","../src/shared/http.zod.ts","../src/ui/view.zod.ts","../src/data/object.zod.ts","../src/ui/app.zod.ts","../src/shared/enums.zod.ts","../src/data/filter.zod.ts","../src/ui/page.zod.ts","../src/ui/chart.zod.ts","../src/ui/dashboard.zod.ts","../src/ui/report.zod.ts","../src/ui/touch.zod.ts","../src/ui/keyboard.zod.ts","../src/ui/theme.zod.ts","../src/automation/approval.zod.ts","../src/automation/workflow.zod.ts","../src/automation/flow.zod.ts","../src/identity/role.zod.ts","../src/security/rls.zod.ts","../src/security/permission.zod.ts","../src/security/sharing.zod.ts","../src/security/policy.zod.ts","../src/api/endpoint.zod.ts","../src/kernel/feature.zod.ts","../src/ai/agent.zod.ts","../src/ai/skill.zod.ts","../src/ai/cost.zod.ts","../src/ai/rag-pipeline.zod.ts","../src/data/hook.zod.ts","../src/data/query.zod.ts","../src/data/mapping.zod.ts","../src/data/analytics.zod.ts","../src/automation/webhook.zod.ts","../src/shared/connector-auth.zod.ts","../src/shared/mapping.zod.ts","../src/integration/connector.zod.ts","../src/stack.zod.ts","../src/ai/tool.zod.ts"],"names":["z","suggestions","suggestion","base","FieldMappingSchema","RateLimitConfigSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type { z } from 'zod';\n\n/**\n * Wrap a Zod schema constructor so its body is only evaluated on first use.\n *\n * Why: building Zod schemas at module-load creates millions of closures that\n * dominate dev-server RSS even though most schemas are never parsed in a\n * given session. Wrapping the constructor in a Proxy defers allocation until\n * the first property access (`.parse`, `.shape`, `._def`, etc.) and reuses\n * a single cached instance thereafter.\n *\n * Type system: the returned Proxy is structurally indistinguishable from the\n * underlying ZodType, so `z.infer<typeof X>` and `.parse()` callers do not\n * need to change.\n *\n * Emergency rollback: set `OS_EAGER_SCHEMAS=1` to evaluate the\n * factory immediately and bypass the Proxy entirely.\n */\nexport function lazySchema<T extends z.ZodTypeAny>(factory: () => T): T {\n if (typeof process !== 'undefined' && process.env?.OS_EAGER_SCHEMAS === '1') {\n return factory();\n }\n\n let cached: T | undefined;\n const resolve = (): T => {\n if (cached === undefined) cached = factory();\n return cached;\n };\n\n const target = function lazyZod() {} as unknown as T;\n\n const proxy = new Proxy(target as object, {\n get(_t, prop) {\n const real = resolve() as unknown as Record<PropertyKey, unknown>;\n const value = real[prop];\n if (typeof value === 'function') {\n return (value as (...a: unknown[]) => unknown).bind(real);\n }\n return value;\n },\n set(_t, prop, value) {\n const real = resolve() as unknown as Record<PropertyKey, unknown>;\n real[prop] = value;\n return true;\n },\n has(_t, prop) {\n return prop in (resolve() as object);\n },\n ownKeys() {\n return Reflect.ownKeys(resolve() as object);\n },\n getOwnPropertyDescriptor(_t, prop) {\n return Reflect.getOwnPropertyDescriptor(resolve() as object, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(resolve() as object);\n },\n });\n\n return proxy as T;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Plugin Capability Protocol\n * \n * Defines the standard way plugins declare their capabilities, implementations,\n * and conformance levels to ensure interoperability across vendors.\n * \n * Based on the Protocol-Oriented Architecture pattern similar to:\n * - Kubernetes CRDs (Custom Resource Definitions)\n * - OSGi Service Registry\n * - Eclipse Extension Points\n */\n\n/**\n * Capability Conformance Level\n * Indicates how completely a plugin implements a given protocol.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const CapabilityConformanceLevelSchema = lazySchema(() => z.enum([\n 'full', // Complete implementation of all protocol features\n 'partial', // Subset implementation with specific features listed\n 'experimental', // Unstable/preview implementation\n 'deprecated', // Still supported but scheduled for removal\n]).describe('Level of protocol conformance'));\n\n/**\n * Protocol Version Schema\n * Uses semantic versioning to track protocol evolution.\n */\nexport const ProtocolVersionSchema = lazySchema(() => z.object({\n major: z.number().int().min(0),\n minor: z.number().int().min(0),\n patch: z.number().int().min(0),\n}).describe('Semantic version of the protocol'));\n\n/**\n * Protocol Reference\n * Uniquely identifies a protocol/interface that a plugin can implement.\n * \n * Examples:\n * - com.objectstack.protocol.storage.v1\n * - com.objectstack.protocol.auth.oauth2.v2\n * - com.acme.protocol.payment.stripe.v1\n */\nexport const ProtocolReferenceSchema = lazySchema(() => z.object({\n /**\n * Protocol identifier using reverse domain notation.\n * Format: {domain}.protocol.{category}.{name}[.{subcategory}].v{major}\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+protocol\\.[a-z][a-z0-9._]*\\.v\\d+$/)\n .describe('Unique protocol identifier (e.g., com.objectstack.protocol.storage.v1)'),\n \n /**\n * Human-readable protocol name\n */\n label: z.string(),\n \n /**\n * Protocol version\n */\n version: ProtocolVersionSchema,\n \n /**\n * Detailed protocol specification URL or file reference\n */\n specification: z.string().optional().describe('URL or path to protocol specification'),\n \n /**\n * Brief description of what this protocol defines\n */\n description: z.string().optional(),\n}));\n\n/**\n * Protocol Feature\n * Represents a specific capability within a protocol.\n */\nexport const ProtocolFeatureSchema = lazySchema(() => z.object({\n name: z.string().describe('Feature identifier within the protocol'),\n enabled: z.boolean().default(true),\n description: z.string().optional(),\n sinceVersion: z.string().optional().describe('Version when this feature was added'),\n deprecatedSince: z.string().optional().describe('Version when deprecated'),\n}));\n\n/**\n * Plugin Capability Declaration\n * Documents what protocols a plugin implements and to what extent.\n */\nexport const PluginCapabilitySchema = lazySchema(() => z.object({\n /**\n * The protocol being implemented\n */\n protocol: ProtocolReferenceSchema,\n \n /**\n * Conformance level\n */\n conformance: CapabilityConformanceLevelSchema.default('full'),\n \n /**\n * Specific features implemented (required if conformance is 'partial')\n */\n implementedFeatures: z.array(z.string()).optional().describe('List of implemented feature names'),\n \n /**\n * Optional feature flags indicating advanced capabilities\n */\n features: z.array(ProtocolFeatureSchema).optional(),\n \n /**\n * Custom metadata for vendor-specific information\n */\n metadata: z.record(z.string(), z.unknown()).optional(),\n \n /**\n * Testing/Certification status\n */\n certified: z.boolean().default(false).describe('Has passed official conformance tests'),\n certificationDate: z.string().datetime().optional(),\n}));\n\n/**\n * Plugin Interface Declaration\n * Defines the contract for services this plugin provides to other plugins.\n */\nexport const PluginInterfaceSchema = lazySchema(() => z.object({\n /**\n * Unique interface identifier\n * Format: {plugin-id}.interface.{name}\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+interface\\.[a-z][a-z0-9._]+$/)\n .describe('Unique interface identifier'),\n \n /**\n * Interface name\n */\n name: z.string(),\n \n /**\n * Description of what this interface provides\n */\n description: z.string().optional(),\n \n /**\n * Interface version\n */\n version: ProtocolVersionSchema,\n \n /**\n * Methods exposed by this interface\n */\n methods: z.array(z.object({\n name: z.string().describe('Method name'),\n description: z.string().optional(),\n parameters: z.array(z.object({\n name: z.string(),\n type: z.string().describe('Type notation (e.g., string, number, User)'),\n required: z.boolean().default(true),\n description: z.string().optional(),\n })).optional(),\n returnType: z.string().optional().describe('Return value type'),\n async: z.boolean().default(false).describe('Whether method returns a Promise'),\n })),\n \n /**\n * Events emitted by this interface\n */\n events: z.array(z.object({\n name: z.string().describe('Event name'),\n description: z.string().optional(),\n payload: z.string().optional().describe('Event payload type'),\n })).optional(),\n \n /**\n * Stability level\n */\n stability: z.enum(['stable', 'beta', 'alpha', 'experimental']).default('stable'),\n}));\n\n/**\n * Plugin Dependency Declaration\n * Specifies what other plugins or capabilities this plugin requires.\n */\nexport const PluginDependencySchema = lazySchema(() => z.object({\n /**\n * Plugin ID using reverse domain notation\n */\n pluginId: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+[a-z][a-z0-9-]+$/)\n .describe('Required plugin identifier'),\n \n /**\n * Version constraint (supports semver ranges)\n * Examples: \"1.0.0\", \"^1.2.3\", \">=2.0.0 <3.0.0\"\n */\n version: z.string().describe('Semantic version constraint'),\n \n /**\n * Whether this dependency is optional\n */\n optional: z.boolean().default(false),\n \n /**\n * Reason for the dependency\n */\n reason: z.string().optional(),\n \n /**\n * Minimum required capabilities from the dependency\n */\n requiredCapabilities: z.array(z.string()).optional().describe('Protocol IDs the dependency must support'),\n}));\n\n/**\n * Extension Point Declaration\n * Defines hooks where other plugins can extend this plugin's functionality.\n */\nexport const ExtensionPointSchema = lazySchema(() => z.object({\n /**\n * Extension point identifier\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+extension\\.[a-z][a-z0-9._]+$/)\n .describe('Unique extension point identifier'),\n \n /**\n * Extension point name\n */\n name: z.string(),\n \n /**\n * Description\n */\n description: z.string().optional(),\n \n /**\n * Type of extension point\n */\n type: z.enum([\n 'action', // Plugins can register executable actions\n 'hook', // Plugins can listen to lifecycle events\n 'widget', // Plugins can contribute UI widgets\n 'provider', // Plugins can provide data/services\n 'transformer', // Plugins can transform data\n 'validator', // Plugins can validate data\n 'decorator', // Plugins can enhance/wrap functionality\n ]),\n \n /**\n * Expected interface contract for extensions\n */\n contract: z.object({\n input: z.string().optional().describe('Input type/schema'),\n output: z.string().optional().describe('Output type/schema'),\n signature: z.string().optional().describe('Function signature if applicable'),\n }).optional(),\n \n /**\n * Cardinality\n */\n cardinality: z.enum(['single', 'multiple']).default('multiple')\n .describe('Whether multiple extensions can register to this point'),\n}));\n\n/**\n * Complete Plugin Capability Manifest\n * This is included in the main plugin manifest to declare all capabilities.\n */\nexport const PluginCapabilityManifestSchema = lazySchema(() => z.object({\n /**\n * Protocols this plugin implements\n */\n implements: z.array(PluginCapabilitySchema).optional()\n .describe('List of protocols this plugin conforms to'),\n \n /**\n * Interfaces this plugin exposes to other plugins\n */\n provides: z.array(PluginInterfaceSchema).optional()\n .describe('Services/APIs this plugin offers to others'),\n \n /**\n * Dependencies on other plugins\n */\n requires: z.array(PluginDependencySchema).optional()\n .describe('Required plugins and their capabilities'),\n \n /**\n * Extension points this plugin defines\n */\n extensionPoints: z.array(ExtensionPointSchema).optional()\n .describe('Points where other plugins can extend this plugin'),\n \n /**\n * Extensions this plugin contributes to other plugins\n */\n extensions: z.array(z.object({\n targetPluginId: z.string().describe('Plugin ID being extended'),\n extensionPointId: z.string().describe('Extension point identifier'),\n implementation: z.string().describe('Path to implementation module'),\n priority: z.number().int().default(100).describe('Registration priority (lower = higher priority)'),\n })).optional().describe('Extensions contributed to other plugins'),\n}));\n\n// Export types\nexport type CapabilityConformanceLevel = z.infer<typeof CapabilityConformanceLevelSchema>;\nexport type ProtocolVersion = z.infer<typeof ProtocolVersionSchema>;\nexport type ProtocolReference = z.infer<typeof ProtocolReferenceSchema>;\nexport type ProtocolFeature = z.infer<typeof ProtocolFeatureSchema>;\nexport type PluginCapability = z.infer<typeof PluginCapabilitySchema>;\nexport type PluginInterface = z.infer<typeof PluginInterfaceSchema>;\nexport type PluginDependency = z.infer<typeof PluginDependencySchema>;\nexport type ExtensionPoint = z.infer<typeof ExtensionPointSchema>;\nexport type PluginCapabilityManifest = z.infer<typeof PluginCapabilityManifestSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Plugin Loading Protocol\n * \n * Defines the enhanced plugin loading mechanism for the microkernel architecture.\n * Inspired by industry best practices from:\n * - Kubernetes CRDs and Operators\n * - OSGi Dynamic Module System\n * - Eclipse Plugin Framework\n * - Webpack Module Federation\n * \n * This protocol enables:\n * - Lazy loading and code splitting\n * - Dynamic imports and parallel initialization\n * - Capability-based discovery\n * - Hot reload in development\n * - Advanced caching strategies\n */\n\n/**\n * Plugin Loading Strategy\n * Determines how and when a plugin is loaded into memory\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PluginLoadingStrategySchema = lazySchema(() => z.enum([\n 'eager', // Load immediately during bootstrap (critical plugins)\n 'lazy', // Load on first use (feature plugins)\n 'parallel', // Load in parallel with other plugins\n 'deferred', // Load after initial bootstrap complete\n 'on-demand', // Load only when explicitly requested\n]).describe('Plugin loading strategy'));\n\n/**\n * Plugin Preloading Configuration\n * Configures preloading behavior for faster activation\n */\nexport const PluginPreloadConfigSchema = lazySchema(() => z.object({\n /**\n * Enable preloading for this plugin\n */\n enabled: z.boolean().default(false),\n \n /**\n * Preload priority (lower = higher priority)\n */\n priority: z.number().int().min(0).default(100),\n \n /**\n * Resources to preload\n */\n resources: z.array(z.enum([\n 'metadata', // Plugin manifest and metadata\n 'dependencies', // Plugin dependencies\n 'assets', // Static assets (icons, translations)\n 'code', // JavaScript code chunks\n 'services', // Service definitions\n ])).optional(),\n \n /**\n * Conditions for preloading\n */\n conditions: z.object({\n /**\n * Preload only on specific routes\n */\n routes: z.array(z.string()).optional(),\n \n /**\n * Preload only for specific user roles\n */\n roles: z.array(z.string()).optional(),\n \n /**\n * Preload based on device type\n */\n deviceType: z.array(z.enum(['desktop', 'mobile', 'tablet'])).optional(),\n \n /**\n * Network connection quality threshold\n */\n minNetworkSpeed: z.enum(['slow-2g', '2g', '3g', '4g']).optional(),\n }).optional(),\n}).describe('Plugin preloading configuration'));\n\n/**\n * Plugin Code Splitting Configuration\n * Configures how plugin code is split for optimal loading\n */\nexport const PluginCodeSplittingSchema = lazySchema(() => z.object({\n /**\n * Enable code splitting for this plugin\n */\n enabled: z.boolean().default(true),\n \n /**\n * Split strategy\n */\n strategy: z.enum([\n 'route', // Split by UI routes\n 'feature', // Split by feature modules\n 'size', // Split by bundle size threshold\n 'custom', // Custom split points defined by plugin\n ]).default('feature'),\n \n /**\n * Chunk naming strategy\n */\n chunkNaming: z.enum(['hashed', 'named', 'sequential']).default('hashed'),\n \n /**\n * Maximum chunk size in KB\n */\n maxChunkSize: z.number().int().min(10).optional().describe('Max chunk size in KB'),\n \n /**\n * Shared dependencies optimization\n */\n sharedDependencies: z.object({\n enabled: z.boolean().default(true),\n /**\n * Minimum times a module must be shared before extraction\n */\n minChunks: z.number().int().min(1).default(2),\n }).optional(),\n}).describe('Plugin code splitting configuration'));\n\n/**\n * Plugin Dynamic Import Configuration\n * Configures dynamic import behavior for runtime module loading\n */\nexport const PluginDynamicImportSchema = lazySchema(() => z.object({\n /**\n * Enable dynamic imports\n */\n enabled: z.boolean().default(true),\n \n /**\n * Import mode\n */\n mode: z.enum([\n 'async', // Asynchronous import (recommended)\n 'sync', // Synchronous import (blocking)\n 'eager', // Eager evaluation\n 'lazy', // Lazy evaluation\n ]).default('async'),\n \n /**\n * Prefetch strategy\n */\n prefetch: z.boolean().default(false).describe('Prefetch module in idle time'),\n \n /**\n * Preload strategy\n */\n preload: z.boolean().default(false).describe('Preload module in parallel with parent'),\n \n /**\n * Webpack magic comments support\n */\n webpackChunkName: z.string().optional().describe('Custom chunk name for webpack'),\n \n /**\n * Import timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000).describe('Dynamic import timeout (ms)'),\n \n /**\n * Retry configuration on import failure\n */\n retry: z.object({\n enabled: z.boolean().default(true),\n maxAttempts: z.number().int().min(1).max(10).default(3),\n backoffMs: z.number().int().min(0).default(1000).describe('Exponential backoff base delay'),\n }).optional(),\n}).describe('Plugin dynamic import configuration'));\n\n/**\n * Plugin Initialization Configuration\n * Configures how plugin initialization is executed\n */\nexport const PluginInitializationSchema = lazySchema(() => z.object({\n /**\n * Initialization mode\n */\n mode: z.enum([\n 'sync', // Synchronous initialization\n 'async', // Asynchronous initialization\n 'parallel', // Parallel with other plugins\n 'sequential', // Must complete before next plugin\n ]).default('async'),\n \n /**\n * Initialization timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000),\n \n /**\n * Startup priority (lower = higher priority, earlier initialization)\n */\n priority: z.number().int().min(0).default(100),\n \n /**\n * Whether to continue bootstrap if this plugin fails\n */\n critical: z.boolean().default(false).describe('If true, kernel bootstrap fails if plugin fails'),\n \n /**\n * Retry configuration on initialization failure\n */\n retry: z.object({\n enabled: z.boolean().default(false),\n maxAttempts: z.number().int().min(1).max(5).default(3),\n backoffMs: z.number().int().min(0).default(1000),\n }).optional(),\n \n /**\n * Health check interval for monitoring\n */\n healthCheckInterval: z.number().int().min(0).optional().describe('Health check interval in ms (0 = disabled)'),\n}).describe('Plugin initialization configuration'));\n\n/**\n * Plugin Dependency Resolution Configuration\n * Advanced dependency resolution using semantic versioning\n */\nexport const PluginDependencyResolutionSchema = lazySchema(() => z.object({\n /**\n * Dependency resolution strategy\n */\n strategy: z.enum([\n 'strict', // Exact version match required\n 'compatible', // Semver compatible versions (^)\n 'latest', // Always use latest compatible\n 'pinned', // Lock to specific version\n ]).default('compatible'),\n \n /**\n * Peer dependency handling\n */\n peerDependencies: z.object({\n /**\n * Whether to resolve peer dependencies\n */\n resolve: z.boolean().default(true),\n \n /**\n * Action on missing peer dependency\n */\n onMissing: z.enum(['error', 'warn', 'ignore']).default('warn'),\n \n /**\n * Action on peer version mismatch\n */\n onMismatch: z.enum(['error', 'warn', 'ignore']).default('warn'),\n }).optional(),\n \n /**\n * Optional dependency handling\n */\n optionalDependencies: z.object({\n /**\n * Whether to attempt loading optional dependencies\n */\n load: z.boolean().default(true),\n \n /**\n * Action on optional dependency load failure\n */\n onFailure: z.enum(['warn', 'ignore']).default('warn'),\n }).optional(),\n \n /**\n * Conflict resolution\n */\n conflictResolution: z.enum([\n 'fail', // Fail on any version conflict\n 'latest', // Use latest version\n 'oldest', // Use oldest version\n 'manual', // Require manual resolution\n ]).default('latest'),\n \n /**\n * Circular dependency handling\n */\n circularDependencies: z.enum([\n 'error', // Throw error on circular dependency\n 'warn', // Warn but continue\n 'allow', // Allow circular dependencies\n ]).default('warn'),\n}).describe('Plugin dependency resolution configuration'));\n\n/**\n * Plugin Hot Reload Configuration\n * Enables hot module replacement for development and production environments.\n * \n * Production mode adds safety features: health validation, rollback on failure,\n * connection draining, and concurrency control for zero-downtime reloads.\n */\nexport const PluginHotReloadSchema = lazySchema(() => z.object({\n /**\n * Enable hot reload\n */\n enabled: z.boolean().default(false),\n \n /**\n * Target environment for hot reload behavior\n */\n environment: z.enum([\n 'development', // Fast reload with relaxed safety (file watchers, no health validation)\n 'staging', // Production-like reload with validation but relaxed rollback\n 'production', // Full safety: health validation, rollback, connection draining\n ]).default('development').describe('Target environment controlling safety level'),\n \n /**\n * Hot reload strategy\n */\n strategy: z.enum([\n 'full', // Full plugin reload (destroy and reinitialize)\n 'partial', // Partial reload (update changed modules only)\n 'state-preserve', // Preserve plugin state during reload\n ]).default('full'),\n \n /**\n * Files to watch for changes\n */\n watchPatterns: z.array(z.string()).optional().describe('Glob patterns for files to watch'),\n \n /**\n * Files to ignore\n */\n ignorePatterns: z.array(z.string()).optional().describe('Glob patterns for files to ignore'),\n \n /**\n * Debounce delay in milliseconds\n */\n debounceMs: z.number().int().min(0).default(300),\n \n /**\n * Whether to preserve state during reload\n */\n preserveState: z.boolean().default(false),\n \n /**\n * State serialization\n */\n stateSerialization: z.object({\n enabled: z.boolean().default(false),\n /**\n * Path to state serialization handler\n */\n handler: z.string().optional(),\n }).optional(),\n \n /**\n * Hooks for hot reload lifecycle\n */\n hooks: z.object({\n beforeReload: z.string().optional().describe('Function to call before reload'),\n afterReload: z.string().optional().describe('Function to call after reload'),\n onError: z.string().optional().describe('Function to call on reload error'),\n }).optional(),\n \n /**\n * Production safety configuration\n * Applied when environment is 'staging' or 'production'\n */\n productionSafety: z.object({\n /**\n * Validate plugin health before completing reload\n */\n healthValidation: z.boolean().default(true)\n .describe('Run health checks after reload before accepting traffic'),\n \n /**\n * Automatically rollback to previous version on reload failure\n */\n rollbackOnFailure: z.boolean().default(true)\n .describe('Auto-rollback if reloaded plugin fails health check'),\n \n /**\n * Maximum time to wait for health validation after reload (ms)\n */\n healthTimeout: z.number().int().min(1000).default(30000)\n .describe('Health check timeout after reload in ms'),\n \n /**\n * Drain active connections before reload\n */\n drainConnections: z.boolean().default(true)\n .describe('Gracefully drain active requests before reloading'),\n \n /**\n * Maximum time to wait for connection draining (ms)\n */\n drainTimeout: z.number().int().min(0).default(15000)\n .describe('Max wait time for connection draining in ms'),\n \n /**\n * Maximum number of concurrent plugin reloads\n */\n maxConcurrentReloads: z.number().int().min(1).default(1)\n .describe('Limit concurrent reloads to prevent system instability'),\n \n /**\n * Minimum interval between reloads of the same plugin (ms)\n */\n minReloadInterval: z.number().int().min(1000).default(5000)\n .describe('Cooldown period between reloads of the same plugin'),\n }).optional(),\n}).describe('Plugin hot reload configuration'));\n\n/**\n * Plugin Caching Configuration\n * Configures caching strategy for faster subsequent loads\n */\nexport const PluginCachingSchema = lazySchema(() => z.object({\n /**\n * Enable caching\n */\n enabled: z.boolean().default(true),\n \n /**\n * Cache storage type\n */\n storage: z.enum([\n 'memory', // In-memory cache (fastest, not persistent)\n 'disk', // Disk cache (persistent)\n 'indexeddb', // Browser IndexedDB (persistent, browser only)\n 'hybrid', // Memory + Disk hybrid\n ]).default('memory'),\n \n /**\n * Cache key strategy\n */\n keyStrategy: z.enum([\n 'version', // Cache by plugin version\n 'hash', // Cache by content hash\n 'timestamp', // Cache by last modified timestamp\n ]).default('version'),\n \n /**\n * Cache TTL in seconds\n */\n ttl: z.number().int().min(0).optional().describe('Time to live in seconds (0 = infinite)'),\n \n /**\n * Maximum cache size in MB\n */\n maxSize: z.number().int().min(1).optional().describe('Max cache size in MB'),\n \n /**\n * Cache invalidation triggers\n */\n invalidateOn: z.array(z.enum([\n 'version-change',\n 'dependency-change',\n 'manual',\n 'error',\n ])).optional(),\n \n /**\n * Compression\n */\n compression: z.object({\n enabled: z.boolean().default(false),\n algorithm: z.enum(['gzip', 'brotli', 'deflate']).default('gzip'),\n }).optional(),\n}).describe('Plugin caching configuration'));\n\n/**\n * Plugin Sandboxing Configuration\n * Security isolation for plugins with configurable scope.\n * \n * Supports isolation beyond automation scripts: any plugin can be sandboxed\n * with process-level isolation and inter-plugin communication (IPC).\n */\nexport const PluginSandboxingSchema = lazySchema(() => z.object({\n /**\n * Enable sandboxing\n */\n enabled: z.boolean().default(false),\n \n /**\n * Isolation scope - which plugins are subject to sandboxing\n */\n scope: z.enum([\n 'automation-only', // Sandbox automation/scripting plugins only (current behavior)\n 'untrusted-only', // Sandbox plugins below a trust threshold\n 'all-plugins', // Sandbox all plugins (maximum isolation)\n ]).default('automation-only').describe('Which plugins are subject to isolation'),\n \n /**\n * Sandbox isolation level\n */\n isolationLevel: z.enum([\n 'none', // No isolation\n 'process', // Separate process (Node.js worker threads)\n 'vm', // VM context isolation\n 'iframe', // iframe isolation (browser)\n 'web-worker', // Web Worker (browser)\n ]).default('none'),\n \n /**\n * Allowed capabilities\n */\n allowedCapabilities: z.array(z.string()).optional().describe('List of allowed capability IDs'),\n \n /**\n * Resource quotas\n */\n resourceQuotas: z.object({\n /**\n * Maximum memory usage in MB\n */\n maxMemoryMB: z.number().int().min(1).optional(),\n \n /**\n * Maximum CPU time in milliseconds\n */\n maxCpuTimeMs: z.number().int().min(100).optional(),\n \n /**\n * Maximum number of file descriptors\n */\n maxFileDescriptors: z.number().int().min(1).optional(),\n \n /**\n * Maximum network bandwidth in KB/s\n */\n maxNetworkKBps: z.number().int().min(1).optional(),\n }).optional(),\n \n /**\n * Permissions\n */\n permissions: z.object({\n /**\n * Allowed API access\n */\n allowedAPIs: z.array(z.string()).optional(),\n \n /**\n * Allowed file system paths\n */\n allowedPaths: z.array(z.string()).optional(),\n \n /**\n * Allowed network endpoints\n */\n allowedEndpoints: z.array(z.string()).optional(),\n \n /**\n * Allowed environment variables\n */\n allowedEnvVars: z.array(z.string()).optional(),\n }).optional(),\n \n /**\n * Inter-Plugin Communication (IPC) configuration\n * Enables isolated plugins to communicate with the kernel and other plugins\n */\n ipc: z.object({\n /**\n * Enable IPC for sandboxed plugins\n */\n enabled: z.boolean().default(true)\n .describe('Allow sandboxed plugins to communicate via IPC'),\n \n /**\n * IPC transport mechanism\n */\n transport: z.enum([\n 'message-port', // MessagePort (worker threads / Web Workers)\n 'unix-socket', // Unix domain sockets (process isolation)\n 'tcp', // TCP sockets (container isolation)\n 'memory', // Shared memory channel (in-process VM)\n ]).default('message-port')\n .describe('IPC transport for cross-boundary communication'),\n \n /**\n * Maximum message size in bytes\n */\n maxMessageSize: z.number().int().min(1024).default(1048576)\n .describe('Maximum IPC message size in bytes (default 1MB)'),\n \n /**\n * Message timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000)\n .describe('IPC message response timeout in ms'),\n \n /**\n * Allowed service calls through IPC\n */\n allowedServices: z.array(z.string()).optional()\n .describe('Service names the sandboxed plugin may invoke via IPC'),\n }).optional(),\n}).describe('Plugin sandboxing configuration'));\n\n/**\n * Plugin Performance Monitoring Configuration\n * Telemetry and performance tracking\n */\nexport const PluginPerformanceMonitoringSchema = lazySchema(() => z.object({\n /**\n * Enable performance monitoring\n */\n enabled: z.boolean().default(false),\n \n /**\n * Metrics to collect\n */\n metrics: z.array(z.enum([\n 'load-time',\n 'init-time',\n 'memory-usage',\n 'cpu-usage',\n 'api-calls',\n 'error-rate',\n 'cache-hit-rate',\n ])).optional(),\n \n /**\n * Sampling rate (0-1, where 1 = 100%)\n */\n samplingRate: z.number().min(0).max(1).default(1),\n \n /**\n * Reporting interval in seconds\n */\n reportingInterval: z.number().int().min(1).default(60),\n \n /**\n * Performance budget thresholds\n */\n budgets: z.object({\n /**\n * Maximum load time in milliseconds\n */\n maxLoadTimeMs: z.number().int().min(0).optional(),\n \n /**\n * Maximum init time in milliseconds\n */\n maxInitTimeMs: z.number().int().min(0).optional(),\n \n /**\n * Maximum memory usage in MB\n */\n maxMemoryMB: z.number().int().min(0).optional(),\n }).optional(),\n \n /**\n * Action on budget violation\n */\n onBudgetViolation: z.enum(['warn', 'error', 'ignore']).default('warn'),\n}).describe('Plugin performance monitoring configuration'));\n\n/**\n * Complete Plugin Loading Configuration\n * Combines all loading-related configurations\n */\nexport const PluginLoadingConfigSchema = lazySchema(() => z.object({\n /**\n * Loading strategy\n */\n strategy: PluginLoadingStrategySchema.default('lazy'),\n \n /**\n * Preloading configuration\n */\n preload: PluginPreloadConfigSchema.optional(),\n \n /**\n * Code splitting configuration\n */\n codeSplitting: PluginCodeSplittingSchema.optional(),\n \n /**\n * Dynamic import configuration\n */\n dynamicImport: PluginDynamicImportSchema.optional(),\n \n /**\n * Initialization configuration\n */\n initialization: PluginInitializationSchema.optional(),\n \n /**\n * Dependency resolution configuration\n */\n dependencyResolution: PluginDependencyResolutionSchema.optional(),\n \n /**\n * Hot reload configuration (development and production)\n */\n hotReload: PluginHotReloadSchema.optional(),\n \n /**\n * Caching configuration\n */\n caching: PluginCachingSchema.optional(),\n \n /**\n * Sandboxing configuration\n */\n sandboxing: PluginSandboxingSchema.optional(),\n \n /**\n * Performance monitoring\n */\n monitoring: PluginPerformanceMonitoringSchema.optional(),\n}).describe('Complete plugin loading configuration'));\n\n/**\n * Plugin Loading Event\n * Emitted during plugin loading lifecycle\n */\nexport const PluginLoadingEventSchema = lazySchema(() => z.object({\n /**\n * Event type\n */\n type: z.enum([\n 'load-started',\n 'load-completed',\n 'load-failed',\n 'init-started',\n 'init-completed',\n 'init-failed',\n 'preload-started',\n 'preload-completed',\n 'cache-hit',\n 'cache-miss',\n 'hot-reload',\n 'dynamic-load', // Plugin loaded at runtime\n 'dynamic-unload', // Plugin unloaded at runtime\n 'dynamic-discover', // Plugin discovered via registry\n ]),\n \n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Timestamp\n */\n timestamp: z.number().int().min(0),\n \n /**\n * Duration in milliseconds\n */\n durationMs: z.number().int().min(0).optional(),\n \n /**\n * Additional metadata\n */\n metadata: z.record(z.string(), z.unknown()).optional(),\n \n /**\n * Error if event represents a failure\n */\n error: z.object({\n message: z.string(),\n code: z.string().optional(),\n stack: z.string().optional(),\n }).optional(),\n}).describe('Plugin loading lifecycle event'));\n\n/**\n * Plugin Loading State\n * Tracks the current loading state of a plugin\n */\nexport const PluginLoadingStateSchema = lazySchema(() => z.object({\n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Current state\n */\n state: z.enum([\n 'pending', // Not yet loaded\n 'loading', // Currently loading\n 'loaded', // Code loaded, not initialized\n 'initializing', // Currently initializing\n 'ready', // Fully initialized and ready\n 'failed', // Failed to load or initialize\n 'reloading', // Hot reloading in progress\n 'unloading', // Being unloaded at runtime\n 'unloaded', // Successfully unloaded (dynamic loading)\n ]),\n \n /**\n * Load progress (0-100)\n */\n progress: z.number().min(0).max(100).default(0),\n \n /**\n * Loading start time\n */\n startedAt: z.number().int().min(0).optional(),\n \n /**\n * Loading completion time\n */\n completedAt: z.number().int().min(0).optional(),\n \n /**\n * Last error\n */\n lastError: z.string().optional(),\n \n /**\n * Retry count\n */\n retryCount: z.number().int().min(0).default(0),\n}).describe('Plugin loading state'));\n\n// Export types\nexport type PluginLoadingStrategy = z.infer<typeof PluginLoadingStrategySchema>;\nexport type PluginPreloadConfig = z.infer<typeof PluginPreloadConfigSchema>;\nexport type PluginCodeSplitting = z.infer<typeof PluginCodeSplittingSchema>;\nexport type PluginDynamicImport = z.infer<typeof PluginDynamicImportSchema>;\nexport type PluginInitialization = z.infer<typeof PluginInitializationSchema>;\nexport type PluginDependencyResolution = z.infer<typeof PluginDependencyResolutionSchema>;\nexport type PluginHotReload = z.infer<typeof PluginHotReloadSchema>;\nexport type PluginCaching = z.infer<typeof PluginCachingSchema>;\nexport type PluginSandboxing = z.infer<typeof PluginSandboxingSchema>;\nexport type PluginPerformanceMonitoring = z.infer<typeof PluginPerformanceMonitoringSchema>;\nexport type PluginLoadingConfig = z.infer<typeof PluginLoadingConfigSchema>;\nexport type PluginLoadingEvent = z.infer<typeof PluginLoadingEventSchema>;\nexport type PluginLoadingState = z.infer<typeof PluginLoadingStateSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// Service method interfaces use z.function() instead of z.any() for type safety.\n// Generic data fields use z.unknown() for type safety.\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PluginContextSchema = lazySchema(() => z.object({\n ql: z.object({\n object: z.function().describe('Get object handle for method chaining'),\n query: z.function().describe('Execute a query'),\n }).passthrough().describe('ObjectQL Engine Interface'),\n\n os: z.object({\n getCurrentUser: z.function().describe('Get the current authenticated user'),\n getConfig: z.function().describe('Get platform configuration'),\n }).passthrough().describe('ObjectStack Kernel Interface'),\n\n logger: z.object({\n debug: z.function().describe('Log debug message'),\n info: z.function().describe('Log info message'),\n warn: z.function().describe('Log warning message'),\n error: z.function().describe('Log error message'),\n }).passthrough().describe('Logger Interface'),\n\n storage: z.object({\n get: z.function().describe('Get a value from storage'),\n set: z.function().describe('Set a value in storage'),\n delete: z.function().describe('Delete a value from storage'),\n }).passthrough().describe('Storage Interface'),\n\n i18n: z.object({\n t: z.function().describe('Translate a key'),\n getLocale: z.function().describe('Get current locale'),\n }).passthrough().describe('Internationalization Interface'),\n\n metadata: z.record(z.string(), z.unknown()),\n events: z.record(z.string(), z.unknown()),\n \n app: z.object({\n router: z.object({\n get: z.function().describe('Register GET route handler'),\n post: z.function().describe('Register POST route handler'),\n use: z.function().describe('Register middleware'),\n }).passthrough()\n }).passthrough().describe('App Framework Interface'),\n\n drivers: z.object({\n register: z.function().describe('Register a driver'),\n }).passthrough().describe('Driver Registry'),\n}));\n\nexport type PluginContextData = z.infer<typeof PluginContextSchema>;\nexport type PluginContext = PluginContextData;\n\n/**\n * Upgrade Context Schema\n *\n * Provides version migration context to the `onUpgrade` lifecycle hook.\n * Enables developers to write conditional migration logic based on\n * the previous and new versions.\n */\nexport const UpgradeContextSchema = lazySchema(() => z.object({\n /** Version before upgrade */\n previousVersion: z.string().describe('Version before upgrade'),\n\n /** Version after upgrade */\n newVersion: z.string().describe('Version after upgrade'),\n\n /** Whether this is a major version bump */\n isMajorUpgrade: z.boolean().describe('Whether this is a major version bump'),\n\n /** Metadata snapshot before upgrade (for migration logic) */\n previousMetadata: z.record(z.string(), z.unknown()).optional()\n .describe('Metadata snapshot before upgrade'),\n}).describe('Version migration context for onUpgrade hook'));\n\nexport type UpgradeContext = z.infer<typeof UpgradeContextSchema>;\n\nexport const PluginLifecycleSchema = lazySchema(() => z.object({\n onInstall: z.function().optional().describe('Called when plugin is installed'),\n \n onEnable: z.function().optional().describe('Called when plugin is enabled'),\n \n onDisable: z.function().optional().describe('Called when plugin is disabled'),\n \n onUninstall: z.function().optional().describe('Called when plugin is uninstalled'),\n \n onUpgrade: z.function().optional().describe('Called when plugin is upgraded. Receives UpgradeContext with previousVersion, newVersion, and isMajorUpgrade'),\n}));\n\nexport type PluginLifecycleHooks = z.infer<typeof PluginLifecycleSchema>;\n\n/**\n * Shared Plugin Types\n * These are the specialized plugin types common between Manifest (Package) and Plugin (Runtime).\n */\nexport const CORE_PLUGIN_TYPES = [\n 'ui', // Frontend: Serves static assets/SPA (e.g. Console, Studio)\n 'driver', // Connectivity: Database or Storage adapters (e.g. SQL, S3)\n 'server', // Protocol: HTTP/RPC Servers (e.g. Hono, GraphQL)\n 'app', // Business: Vertical Solution Bundle (Metadata + Logic)\n 'theme', // Appearance: UI Overrides & CSS Variables\n 'agent', // AI: Autonomous Agent & Tool Definitions\n 'objectql' // Core: ObjectQL Engine Data Provider\n] as const;\n\nexport const PluginSchema = lazySchema(() => PluginLifecycleSchema.extend({\n id: z.string().min(1).optional().describe('Unique Plugin ID (e.g. com.example.crm)'),\n type: z.enum([\n 'standard', // Default: General purpose backend logic (Service, Hook, etc.)\n ...CORE_PLUGIN_TYPES\n ]).default('standard').optional().describe('Plugin Type categorization for runtime behavior'),\n \n staticPath: z.string().optional().describe('Absolute path to static assets (Required for type=\"ui-plugin\")'),\n slug: z.string().regex(/^[a-z0-9-_]+$/).optional().describe('URL path segment (Required for type=\"ui-plugin\")'),\n default: z.boolean().optional().describe('Serve at root path (Only one \"ui-plugin\" can be default)'),\n \n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/).optional().describe('Semantic Version'),\n description: z.string().optional(),\n author: z.string().optional(),\n homepage: z.string().url().optional(),\n}));\n\nexport type PluginDefinition = z.infer<typeof PluginSchema>;\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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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' is rarely used for portable seed data — prefer natural keys.\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\n/**\n * Type-safe factory for creating seed dataset definitions.\n * Infers valid field keys from the object definition passed in,\n * so typos in record field names are caught at compile time.\n *\n * @example\n * ```ts\n * export const leadSeed = defineDataset(Lead, {\n * externalId: 'email',\n * records: [\n * { first_name: 'Alice', lead_source: 'web' }, // ✅ type-checked\n * { source: 'web' }, // ❌ compile error\n * ],\n * });\n * ```\n */\nexport function defineDataset<\n const TObj extends { name: string; fields: Record<string, unknown> }\n>(\n objectDef: TObj,\n config: Omit<DatasetInput, 'object' | 'records'> & {\n records: Array<Partial<Record<keyof TObj['fields'], unknown>>>;\n }\n): Dataset {\n return DatasetSchema.parse({ ...config, object: objectDef.name });\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { PluginCapabilityManifestSchema } from './plugin-capability.zod';\nimport { PluginLoadingConfigSchema } from './plugin-loading.zod';\nimport { CORE_PLUGIN_TYPES } from './plugin.zod';\nimport { DatasetSchema } from '../data/dataset.zod';\n\n/**\n * Schema for the ObjectStack Manifest.\n * This defines the structure of a package configuration in the ObjectStack ecosystem.\n * All packages (apps, plugins, drivers, modules) must conform to this schema.\n * \n * @example App Package\n * ```yaml\n * id: com.acme.crm\n * version: 1.0.0\n * type: app\n * name: Acme CRM\n * description: Customer Relationship Management system\n * permissions:\n * - system.user.read\n * - system.object.create\n * objects:\n * - \"./src/objects/*.object.yml\"\n * ```\n */\nexport const ManifestSchema = z.object({\n /** \n * Unique package identifier using reverse domain notation.\n * Must be unique across the entire ecosystem.\n * \n * @example \"com.steedos.crm\"\n * @example \"org.apache.superset\"\n */\n id: z.string().describe('Unique package identifier (reverse domain style)'),\n \n /**\n * Short namespace identifier for metadata scoping.\n *\n * **Internal mechanic only.** Users and AI write objects using **short names**\n * (e.g. `account`, `deal`). The namespace is used internally by the registry\n * to compute a Fully Qualified Name (FQN, `{namespace}__{shortName}`) for\n * cross-package disambiguation, marketplace publishing, and customization\n * baseName references. It is **not** part of the physical table name and\n * should not appear in user-facing code, queries, REST URLs, or formulas.\n *\n * Rules:\n * - 2-20 characters, lowercase letters, digits, and underscores only.\n * - Must be unique within a running instance.\n * - Platform-reserved namespaces: \"base\", \"system\".\n */\n namespace: z.string()\n .regex(/^[a-z][a-z0-9_]{1,19}$/, 'Namespace must be 2-20 chars, lowercase alphanumeric + underscore')\n .optional()\n .describe('Short namespace identifier for metadata scoping (e.g. \"crm\", \"todo\")'),\n\n /**\n * Default datasource for all objects in this package.\n *\n * When set, all objects defined in this package will use this datasource\n * by default unless they explicitly override it with their own `datasource` field.\n *\n * This provides package-level datasource configuration without needing to\n * specify it on every individual object.\n *\n * @example \"memory\" // Use in-memory driver for all package objects\n * @example \"turso\" // Use Turso/LibSQL for all package objects\n */\n defaultDatasource: z.string().optional().default('default')\n .describe('Default datasource for all objects in this package'),\n\n /**\n * Package version following semantic versioning (major.minor.patch).\n *\n * @example \"1.0.0\"\n * @example \"2.1.0-beta.1\"\n */\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/).describe('Package version (semantic versioning)'),\n \n /** \n * Type of the package in the ObjectStack ecosystem.\n * - plugin: General-purpose functionality extension (Runtime: standard)\n * - app: Business application package\n * - driver: Connectivity adapter\n * - server: Protocol gateway (Hono, GraphQL)\n * - ui: Frontend package (Static/SPA)\n * - theme: UI Theme\n * - agent: AI Agent\n * - module: Reusable code library/shared module\n * - objectql: Core engine\n * - adapter: Host adapter (Express, Fastify)\n */\n type: z.enum([\n 'plugin',\n ...CORE_PLUGIN_TYPES,\n 'module',\n 'gateway', // Deprecated: use 'server'\n 'adapter'\n ]).describe('Type of package'),\n\n /**\n * Deployment scope of this package.\n *\n * - `cloud`: Control-plane exclusive (tenant management, credentials, package registry…).\n * Never registered into a project kernel; accessible only via `/api/v1/cloud/*`.\n * - `system`: Cross-project shared identity (user, org, role, i18n…).\n * In a project kernel, objects are transparently proxied to the control-plane DB\n * with an automatic `organization_id` filter for org-scoped tables.\n * Packages with this scope should also set `defaultDatasource: 'cloud'`.\n * - `project`: Per-project business objects (CRM, custom apps…).\n * Registered normally into the project DB.\n */\n scope: z.enum(['cloud', 'system', 'project']).default('project')\n .describe('Deployment scope: cloud | system | project'),\n\n /**\n * Human-readable name of the package.\n * Displayed in the UI for users.\n *\n * @example \"Project Management\"\n */\n name: z.string().describe('Human-readable package name'),\n \n /** \n * Brief description of the package functionality.\n * Displayed in the marketplace and plugin manager.\n */\n description: z.string().optional().describe('Package description'),\n \n /** \n * Array of permission strings that the package requires.\n * These form the \"Scope\" requested by the package at installation.\n * \n * @example [\"system.user.read\", \"system.data.write\"]\n */\n permissions: z.array(z.string()).optional().describe('Array of required permission strings'),\n \n /** \n * Glob patterns specifying ObjectQL schemas files.\n * Matches `*.object.yml` or `*.object.ts` files to load business objects.\n * \n * @example [\"./src/objects/*.object.yml\"]\n */\n objects: z.array(z.string()).optional().describe('Glob patterns for ObjectQL schemas files'),\n\n /**\n * Defines system level DataSources.\n * Matches `*.datasource.yml` files.\n * \n * @example [\"./src/datasources/*.datasource.mongo.yml\"]\n */\n datasources: z.array(z.string()).optional().describe('Glob patterns for Datasource definitions'),\n\n /**\n * Package Dependencies.\n * Map of package IDs to version requirements.\n * \n * @example { \"@steedos/plugin-auth\": \"^2.0.0\" }\n */\n dependencies: z.record(z.string(), z.string()).optional().describe('Package dependencies'),\n\n /**\n * Plugin Configuration Schema.\n * Defines the settings this plugin exposes to the user via UI/ENV.\n * Uses a simplified JSON Schema format.\n * \n * @example\n * {\n * \"title\": \"Stripe Config\",\n * \"properties\": {\n * \"apiKey\": { \"type\": \"string\", \"secret\": true },\n * \"currency\": { \"type\": \"string\", \"default\": \"USD\" }\n * }\n * }\n */\n configuration: z.object({\n title: z.string().optional(),\n properties: z.record(z.string(), z.object({\n type: z.enum(['string', 'number', 'boolean', 'array', 'object']).describe('Data type of the setting'),\n default: z.unknown().optional().describe('Default value'),\n description: z.string().optional().describe('Tooltip description'),\n required: z.boolean().optional().describe('Is this setting required?'),\n secret: z.boolean().optional().describe('If true, value is encrypted/masked (e.g. API Keys)'),\n enum: z.array(z.string()).optional().describe('Allowed values for select inputs'),\n })).describe('Map of configuration keys to their definitions')\n }).optional().describe('Plugin configuration settings'),\n\n /**\n * Contribution Points (VS Code Style).\n * formalized way to extend the platform capabilities.\n */\n contributes: z.object({\n /**\n * Register new Metadata Kinds (CRDs).\n * Enables the system to parse and validate new file types.\n * Example: Registering a BI plugin to handle *.report.ts\n */\n kinds: z.array(z.object({\n id: z.string().describe('The generic identifier of the kind (e.g., \"sys.bi.report\")'),\n globs: z.array(z.string()).describe('File patterns to watch (e.g., [\"**/*.report.ts\"])'),\n description: z.string().optional().describe('Description of what this kind represents'),\n })).optional().describe('New Metadata Types to recognize'),\n\n /**\n * Register System Hooks.\n * Declares that this plugin listens to specific system events.\n */\n events: z.array(z.string()).optional().describe('Events this plugin listens to'),\n\n /**\n * Register UI Menus.\n */\n menus: z.record(z.string(), z.array(z.object({\n id: z.string(),\n label: z.string(),\n command: z.string().optional(),\n }))).optional().describe('UI Menu contributions'),\n\n /**\n * Register Custom Themes.\n */\n themes: z.array(z.object({\n id: z.string(),\n label: z.string(),\n path: z.string(),\n })).optional().describe('Theme contributions'),\n\n /**\n * Register Translations.\n * Path to translation files (e.g. \"locales/en.json\").\n */\n translations: z.array(z.object({\n locale: z.string(),\n path: z.string(),\n })).optional().describe('Translation resources'),\n\n /**\n * Register Server Actions.\n * Invocable functions exposed to Flows or API.\n */\n actions: z.array(z.object({\n name: z.string().describe('Unique action name'),\n label: z.string().optional(),\n description: z.string().optional(),\n input: z.unknown().optional().describe('Input validation schema'),\n output: z.unknown().optional().describe('Output schema'),\n })).optional().describe('Exposed server actions'),\n\n /**\n * Register Storage Drivers.\n * Enables connecting to new types of datasources.\n */\n drivers: z.array(z.object({\n id: z.string().describe('Driver unique identifier (e.g. \"postgres\", \"mongo\")'),\n label: z.string().describe('Human readable name'),\n description: z.string().optional(),\n })).optional().describe('Driver contributions'),\n\n /**\n * Register Custom Field Types.\n * Extends the data model with new widget types.\n */\n fieldTypes: z.array(z.object({\n name: z.string().describe('Unique field type name (e.g. \"vector\")'),\n label: z.string().describe('Display label'),\n description: z.string().optional(),\n })).optional().describe('Field Type contributions'),\n \n /**\n * Register Custom Query Operators/Functions.\n * Extends ObjectQL with new functions (e.g. distance()).\n */\n functions: z.array(z.object({\n name: z.string().describe('Function name (e.g. \"distance\")'),\n description: z.string().optional(),\n args: z.array(z.string()).optional().describe('Argument types'),\n returnType: z.string().optional(),\n })).optional().describe('Query Function contributions'),\n\n /**\n * Register API Route Namespaces.\n * Declares the API endpoints this plugin provides to the HttpDispatcher.\n * The kernel routes matching prefixes to this plugin's handler.\n * \n * @example\n * routes: [\n * { prefix: '/api/v1/ai', service: 'ai', methods: ['aiNlq', 'aiChat'] }\n * ]\n */\n routes: z.array(z.object({\n /** URL path prefix (e.g. \"/api/v1/ai\") */\n prefix: z.string().regex(/^\\//).describe('API path prefix'),\n /** Service name this plugin provides */\n service: z.string().describe('Service name this plugin provides'),\n /** Protocol method names implemented */\n methods: z.array(z.string()).optional()\n .describe('Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])'),\n })).optional().describe('API route contributions to HttpDispatcher'),\n\n /**\n * Register CLI Commands.\n * Allows plugins to extend the ObjectStack CLI with custom commands.\n * Each command entry declares metadata; the actual Commander.js command\n * is resolved at runtime by importing the plugin's module.\n * \n * The plugin package must export a `commands` array of Commander.js `Command` instances\n * from its main entry point or from the path specified in `module`.\n * \n * @example\n * ```yaml\n * commands:\n * - name: marketplace\n * description: \"Manage marketplace apps\"\n * module: \"./cli\" # optional, defaults to package main\n * - name: deploy\n * description: \"Deploy to cloud\"\n * ```\n */\n commands: z.array(z.object({\n /** CLI command name (e.g., \"marketplace\", \"deploy\"). Must be a valid CLI identifier. */\n name: z.string()\n .regex(/^[a-z][a-z0-9-]*$/, 'Command name must be lowercase alphanumeric with hyphens')\n .describe('CLI command name'),\n /** Brief description shown in `os --help` */\n description: z.string().optional().describe('Command description for help text'),\n /** \n * Optional module path (relative to package root) that exports the Commander.js commands.\n * If omitted, the CLI will import from the package's main entry point.\n * The module must export a `commands` array of Commander.js `Command` instances,\n * or a single `Command` instance as default export.\n */\n module: z.string().optional().describe('Module path exporting Commander.js commands'),\n })).optional().describe('CLI command contributions'),\n }).optional().describe('Platform contributions'),\n\n /** \n * Initial data seeding configuration.\n * Defines default records to be inserted when the package is installed.\n * \n * Uses the standard DatasetSchema which supports idempotent upsert via\n * `externalId`, environment scoping via `env`, and multiple conflict\n * resolution modes.\n * \n * @deprecated Prefer using the top-level `data` field on the Stack Definition\n * (defineStack({ data: [...] })) for better visibility and metadata registration.\n * This field is retained for backward compatibility with manifest-only packages.\n */\n data: z.array(DatasetSchema).optional().describe('Initial seed data (prefer top-level data field)'),\n\n /**\n * Plugin Capability Manifest.\n * Declares protocols implemented, interfaces provided, dependencies, and extension points.\n * This enables plugin interoperability and automatic discovery.\n */\n capabilities: PluginCapabilityManifestSchema.optional()\n .describe('Plugin capability declarations for interoperability'),\n\n /** \n * Extension points contributed by this package.\n * Allows packages to extend UI components, add functionality, etc.\n */\n extensions: z.record(z.string(), z.unknown()).optional().describe('Extension points and contributions'),\n\n /**\n * Plugin Loading Configuration.\n * Configures how the plugin is loaded, initialized, and managed at runtime.\n * Includes strategies for lazy loading, code splitting, caching, and hot reload.\n */\n loading: PluginLoadingConfigSchema.optional()\n .describe('Plugin loading and runtime behavior configuration'),\n\n /**\n * Platform Compatibility Requirements.\n * Specifies the minimum ObjectStack platform version required to run this package.\n * Used at install time to prevent incompatible packages from being installed.\n *\n * @example\n * ```yaml\n * engine:\n * objectstack: \">=3.0.0\"\n * ```\n */\n engine: z.object({\n /** ObjectStack platform version requirement (SemVer range) */\n objectstack: z.string()\n .regex(/^[><=~^]*\\d+\\.\\d+\\.\\d+/)\n .describe('ObjectStack platform version requirement (SemVer range, e.g. \">=3.0.0\")'),\n }).optional().describe('Platform compatibility requirements'),\n});\n\n/**\n * TypeScript type inferred from the ManifestSchema.\n * Use this type for type-safe manifest handling in TypeScript code.\n */\nexport type ObjectStackManifest = z.infer<typeof ManifestSchema>;\nexport type ObjectStackManifestInput = z.input<typeof ManifestSchema>;\n\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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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 = lazySchema(() => 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// Locale\n// ────────────────────────────────────────────────────────────────────────────\n\nimport { lazySchema } from '../shared/lazy-schema';\nexport const LocaleSchema = lazySchema(() => z.string().describe('BCP-47 Language Tag (e.g. en-US, zh-CN)'));\n\n// ────────────────────────────────────────────────────────────────────────────\n// Object-level Translation (per-object file)\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Field Translation Schema\n * Translation data for a single field.\n */\nexport const FieldTranslationSchema = lazySchema(() => z.object({\n label: z.string().optional().describe('Translated field label'),\n help: z.string().optional().describe('Translated help text'),\n placeholder: z.string().optional().describe('Translated placeholder text for form inputs'),\n options: z.record(z.string(), z.string()).optional().describe('Option value to translated label map'),\n}).describe('Translation data for a single field'));\n\nexport type FieldTranslation = z.infer<typeof FieldTranslationSchema>;\n\n/**\n * Object Translation Data Schema\n *\n * Translation data for a **single object** in a **single locale**.\n * Use this schema to validate per-object translation files.\n *\n * File convention: `i18n/{locale}/{object_name}.json`\n *\n * @example\n * ```json\n * // i18n/en/account.json\n * {\n * \"label\": \"Account\",\n * \"pluralLabel\": \"Accounts\",\n * \"fields\": {\n * \"name\": { \"label\": \"Account Name\", \"help\": \"Legal name\" },\n * \"type\": { \"label\": \"Type\", \"options\": { \"customer\": \"Customer\" } }\n * }\n * }\n * ```\n */\nexport const ObjectTranslationDataSchema = lazySchema(() => z.object({\n /** Translated singular label for the object */\n label: z.string().describe('Translated singular label'),\n /** Translated plural label for the object */\n pluralLabel: z.string().optional().describe('Translated plural label'),\n /** Translated description shown in list/detail headings */\n description: z.string().optional().describe('Translated object description'),\n /** Field-level translations keyed by field name (snake_case) */\n fields: z.record(z.string(), FieldTranslationSchema).optional().describe('Field-level translations'),\n\n /**\n * View translations keyed by view name (snake_case).\n * Convention (auto-resolved by `resolveViewLabel`):\n * objects.<object>._views.<view_name>.label\n * objects.<object>._views.<view_name>.description\n */\n _views: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated view label'),\n description: z.string().optional().describe('Translated view description'),\n })).optional().describe('View translations keyed by view name'),\n\n /**\n * Action translations keyed by action name (snake_case).\n * Convention (auto-resolved by `resolveActionLabel`/`resolveActionConfirm`/`resolveActionSuccess`):\n * objects.<object>._actions.<action_name>.label\n * objects.<object>._actions.<action_name>.confirmText\n * objects.<object>._actions.<action_name>.successMessage\n */\n _actions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated action label'),\n confirmText: z.string().optional().describe('Translated confirmation prompt'),\n successMessage: z.string().optional().describe('Translated success toast/message'),\n })).optional().describe('Action translations keyed by action name'),\n\n /**\n * Section translations keyed by section name (snake_case).\n * Convention:\n * objects.<object>._sections.<section_name>.label\n * Used by `record:details` to translate per-section labels on detail pages\n * (e.g. \"Opportunity Information\" → \"商机信息\"). Each section in the\n * page schema must declare a stable `name` for the lookup to fire.\n */\n _sections: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated section label'),\n description: z.string().optional().describe('Translated section description'),\n })).optional().describe('Section translations keyed by section name'),\n}).describe('Translation data for a single object'));\n\nexport type ObjectTranslationData = z.infer<typeof ObjectTranslationDataSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Locale-level Translation Data (per-locale aggregate)\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Translation Data Schema\n * Supports i18n for labels, messages, and options within a single locale.\n * Example structure:\n * ```json\n * {\n * \"objects\": { \"account\": { \"label\": \"Account\" } },\n * \"apps\": { \"crm\": { \"label\": \"CRM\" } },\n * \"messages\": { \"common.save\": \"Save\" }\n * }\n * ```\n */\nexport const TranslationDataSchema = lazySchema(() => z.object({\n /** Object translations */\n objects: z.record(z.string(), ObjectTranslationDataSchema).optional().describe('Object translations keyed by object name'),\n \n /** App/Menu translations */\n apps: z.record(z.string(), z.object({\n label: z.string().describe('Translated app label'),\n description: z.string().optional().describe('Translated app description'),\n navigation: z.record(z.string(), z.object({\n label: z.string().describe('Translated navigation group label'),\n })).optional().describe('Navigation group translations keyed by group ID'),\n })).optional().describe('App translations keyed by app name'),\n\n /** UI Messages */\n messages: z.record(z.string(), z.string()).optional().describe('UI message translations keyed by message ID'),\n \n /** Validation Error Messages */\n validationMessages: z.record(z.string(), z.string()).optional().describe('Translatable validation error messages keyed by rule name (e.g., {\"discount_limit\": \"折扣不能超过40%\"})'),\n\n /**\n * Global (object-less) action translations keyed by action name (snake_case).\n * Used for actions like `log_call` or `export_csv` that are not bound to a\n * specific object via `objectName`. Convention (auto-resolved by\n * `resolveActionLabel`/`resolveActionConfirm`/`resolveActionSuccess`):\n * globalActions.<action_name>.label\n * globalActions.<action_name>.confirmText\n * globalActions.<action_name>.successMessage\n */\n globalActions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated action label'),\n confirmText: z.string().optional().describe('Translated confirmation prompt'),\n successMessage: z.string().optional().describe('Translated success toast/message'),\n })).optional().describe('Global action translations keyed by action name'),\n\n /**\n * Dashboard translations keyed by dashboard name.\n * Convention (auto-resolved by ObjectUI's `useObjectLabel`):\n * dashboards.<name>.label\n * dashboards.<name>.description\n * dashboards.<name>.actions.<actionUrl>.label\n * dashboards.<name>.widgets.<widgetId>.title\n * dashboards.<name>.widgets.<widgetId>.description\n */\n dashboards: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated dashboard title'),\n description: z.string().optional().describe('Translated dashboard description'),\n actions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated header action label'),\n })).optional().describe('Header action label translations keyed by action url/key'),\n widgets: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated widget title'),\n description: z.string().optional().describe('Translated widget description'),\n })).optional().describe('Widget translations keyed by widget id'),\n })).optional().describe('Dashboard translations keyed by dashboard name'),\n\n /**\n * Settings manifest translations keyed by settings namespace\n * (matches `SettingsManifest.namespace`, e.g. \"mail\", \"branding\").\n *\n * Convention (auto-resolved by `resolveSettings*` helpers):\n * settings.<namespace>.title\n * settings.<namespace>.description\n * settings.<namespace>.groups.<group_key>.title\n * settings.<namespace>.groups.<group_key>.description\n * settings.<namespace>.keys.<setting_key>.label\n * settings.<namespace>.keys.<setting_key>.help\n * settings.<namespace>.keys.<setting_key>.placeholder\n * settings.<namespace>.keys.<setting_key>.options.<option_value>\n * settings.<namespace>.actions.<action_id>.label\n * settings.<namespace>.actions.<action_id>.confirmText\n * settings.<namespace>.actions.<action_id>.successMessage\n */\n settings: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated settings manifest title'),\n description: z.string().optional().describe('Translated settings manifest description'),\n groups: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated group title'),\n description: z.string().optional().describe('Translated group description'),\n })).optional().describe('Group translations keyed by group key'),\n keys: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated setting label'),\n help: z.string().optional().describe('Translated setting help text'),\n placeholder: z.string().optional().describe('Translated input placeholder'),\n options: z.record(z.string(), z.string()).optional()\n .describe('Enum option value → translated label'),\n })).optional().describe('Per-setting field translations keyed by setting key'),\n actions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated action label'),\n confirmText: z.string().optional().describe('Translated confirmation prompt'),\n successMessage: z.string().optional().describe('Translated success toast/message'),\n })).optional().describe('Action button translations keyed by action id'),\n })).optional().describe('Settings manifest translations keyed by namespace'),\n\n /**\n * Cross-namespace strings used by the Settings UI shell — source\n * badges, inheritance chips, lock reasons, common actions. Resolved\n * via the `resolveSettingsCommon*` helpers in `i18n-resolver.ts`.\n */\n settingsCommon: z.object({\n sourceLabels: z.object({\n env: z.string().optional(),\n global: z.string().optional(),\n tenant: z.string().optional(),\n user: z.string().optional(),\n default: z.string().optional(),\n }).optional().describe('Source badge labels by resolution layer'),\n }).optional().describe('Cross-namespace Settings UI strings'),\n}).describe('Translation data for objects, apps, and UI messages'));\n\nexport type TranslationData = z.infer<typeof TranslationDataSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Translation Bundle (all locales)\n// ────────────────────────────────────────────────────────────────────────────\n\nexport const TranslationBundleSchema = lazySchema(() => z.record(LocaleSchema, TranslationDataSchema).describe('Map of locale codes to translation data'));\n\nexport type TranslationBundle = z.infer<typeof TranslationBundleSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// File Organization Convention\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Translation File Organization Strategy\n *\n * Defines how translation files are organized on disk.\n *\n * - `bundled` — All locales in a single `TranslationBundle` file.\n * Best for small projects with few objects.\n * ```\n * src/translations/\n * crm.translation.ts # { en: {...}, \"zh-CN\": {...} }\n * ```\n *\n * - `per_locale` — One file per locale containing all namespaces.\n * Recommended when a single locale file stays under ~500 lines.\n * ```\n * src/translations/\n * en.ts # TranslationData for English\n * zh-CN.ts # TranslationData for Chinese\n * ```\n *\n * - `per_namespace` — One file per namespace (object) per locale.\n * Recommended for large projects with many objects/languages.\n * Aligns with Salesforce DX and ServiceNow conventions.\n * ```\n * i18n/\n * en/\n * account.json # ObjectTranslationData\n * contact.json\n * common.json # messages + app labels\n * zh-CN/\n * account.json\n * contact.json\n * common.json\n * ```\n */\nexport const TranslationFileOrganizationSchema = lazySchema(() => z.enum([\n 'bundled',\n 'per_locale',\n 'per_namespace',\n]).describe('Translation file organization strategy'));\n\nexport type TranslationFileOrganization = z.infer<typeof TranslationFileOrganizationSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Translation Configuration\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Translation Configuration Schema\n *\n * Defines internationalization settings for the stack.\n *\n * @example\n * ```typescript\n * export default defineStack({\n * i18n: {\n * defaultLocale: 'en',\n * supportedLocales: ['en', 'zh-CN', 'ja-JP'],\n * fallbackLocale: 'en',\n * fileOrganization: 'per_locale',\n * },\n * translations: [...],\n * });\n * ```\n */\n/**\n * Message format standard used for interpolation, pluralization, and\n * gender-aware translations.\n *\n * - `icu` — ICU MessageFormat (recommended for complex plurals, gender, select).\n * Strings may contain `{count, plural, one {# item} other {# items}}` patterns.\n * - `simple` — Simple `{variable}` interpolation only (default).\n */\nexport const MessageFormatSchema = lazySchema(() => z.enum([\n 'icu',\n 'simple',\n]).describe('Message interpolation format: ICU MessageFormat or simple {variable} replacement'));\n\nexport type MessageFormat = z.infer<typeof MessageFormatSchema>;\n\nexport const TranslationConfigSchema = lazySchema(() => z.object({\n /** Default locale for the application */\n defaultLocale: LocaleSchema.describe('Default locale (e.g., \"en\")'),\n /** Supported BCP-47 locale codes */\n supportedLocales: z.array(LocaleSchema).describe('Supported BCP-47 locale codes'),\n /** Fallback locale when translation is not found */\n fallbackLocale: LocaleSchema.optional().describe('Fallback locale code'),\n /** How translation files are organized on disk */\n fileOrganization: TranslationFileOrganizationSchema.default('per_locale')\n .describe('File organization strategy'),\n /**\n * Message interpolation format.\n * When set to `'icu'`, messages and validationMessages are expected to use\n * ICU MessageFormat syntax (plurals, select, number/date skeletons).\n * @default 'simple'\n */\n messageFormat: MessageFormatSchema.default('simple')\n .describe('Message interpolation format (ICU MessageFormat or simple)'),\n /** Load translations on demand instead of eagerly */\n lazyLoad: z.boolean().default(false).describe('Load translations on demand'),\n /** Cache loaded translations in memory */\n cache: z.boolean().default(true).describe('Cache loaded translations'),\n}).describe('Internationalization configuration'));\n\nexport type TranslationConfig = z.infer<typeof TranslationConfigSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Object-First Translation Node (object-first aggregated structure)\n// ────────────────────────────────────────────────────────────────────────────\n\n/** Translatable option map: option value → translated label */\nconst OptionTranslationMapSchema = z.record(z.string(), z.string())\n .describe('Option value to translated label map');\n\n/**\n * ObjectTranslationNodeSchema\n *\n * Object-first aggregated translation node that groups **all** translatable\n * content for a single object under one key. Aligns with Salesforce / Dynamics\n * conventions where translations are organized per-object rather than per-category.\n *\n * Located at `o.{object_name}` inside an {@link AppTranslationBundle}.\n *\n * @example\n * ```typescript\n * const accountNode: ObjectTranslationNode = {\n * label: '客户',\n * pluralLabel: '客户',\n * description: '客户管理对象',\n * fields: {\n * name: { label: '客户名称', help: '公司或组织的法定名称' },\n * industry: { label: '行业', options: { tech: '科技', finance: '金融' } },\n * },\n * _options: { status: { active: '活跃', inactive: '停用' } },\n * _views: { all_accounts: { label: '全部客户' } },\n * _sections: { basic_info: { label: '基本信息' } },\n * _actions: {\n * convert_lead: { label: '转换线索', confirmMessage: '确认转换?' },\n * },\n * };\n * ```\n */\nexport const ObjectTranslationNodeSchema = lazySchema(() => z.object({\n /** Translated singular label */\n label: z.string().describe('Translated singular label'),\n /** Translated plural label */\n pluralLabel: z.string().optional().describe('Translated plural label'),\n /** Translated object description */\n description: z.string().optional().describe('Translated object description'),\n /** Translated help text shown in tooltips or guidance panels */\n helpText: z.string().optional().describe('Translated help text for the object'),\n\n /** Field-level translations keyed by field name (snake_case) */\n fields: z.record(z.string(), FieldTranslationSchema).optional()\n .describe('Field translations keyed by field name'),\n\n /**\n * Global picklist / select option overrides scoped to this object.\n * Keyed by field name → { optionValue: translatedLabel }.\n */\n _options: z.record(z.string(), OptionTranslationMapSchema).optional()\n .describe('Object-scoped picklist option translations keyed by field name'),\n\n /** View translations keyed by view name */\n _views: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated view label'),\n description: z.string().optional().describe('Translated view description'),\n })).optional().describe('View translations keyed by view name'),\n\n /** Section (form section / tab) translations keyed by section name */\n _sections: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated section label'),\n })).optional().describe('Section translations keyed by section name'),\n\n /** Action translations keyed by action name */\n _actions: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated action label'),\n confirmMessage: z.string().optional().describe('Translated confirmation message'),\n })).optional().describe('Action translations keyed by action name'),\n\n /** Notification message translations keyed by notification name */\n _notifications: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated notification title'),\n body: z.string().optional().describe('Translated notification body (supports ICU MessageFormat when enabled)'),\n })).optional().describe('Notification translations keyed by notification name'),\n\n /** Error message translations keyed by error code */\n _errors: z.record(z.string(), z.string()).optional()\n .describe('Error message translations keyed by error code'),\n}).describe('Object-first aggregated translation node'));\n\nexport type ObjectTranslationNode = z.infer<typeof ObjectTranslationNodeSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// App Translation Bundle (object-first, full application)\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * AppTranslationBundleSchema\n *\n * Complete application translation bundle for a **single locale** using\n * the **object-first** convention. All per-object translatable content\n * is aggregated under `o.{object_name}`, while global (non-object-bound)\n * translations are kept in dedicated top-level groups.\n *\n * This schema is designed for:\n * - Translation workbench UIs (object-level editing & coverage)\n * - CLI skeleton generation (`objectstack i18n extract`)\n * - Automated diff/coverage detection\n *\n * @example\n * ```typescript\n * const zh: AppTranslationBundle = {\n * o: {\n * account: {\n * label: '客户',\n * fields: { name: { label: '客户名称' } },\n * _options: { industry: { tech: '科技' } },\n * _views: { all_accounts: { label: '全部客户' } },\n * _sections: { basic_info: { label: '基本信息' } },\n * _actions: { convert: { label: '转换' } },\n * },\n * },\n * _globalOptions: { currency: { usd: '美元', eur: '欧元' } },\n * app: { crm: { label: '客户关系管理', description: '管理销售流程' } },\n * nav: { home: '首页', settings: '设置' },\n * dashboard: { sales_overview: { label: '销售概览' } },\n * reports: { pipeline_report: { label: '管道报表' } },\n * pages: { landing: { title: '欢迎' } },\n * messages: { 'common.save': '保存' },\n * validationMessages: { 'discount_limit': '折扣不能超过40%' },\n * };\n * ```\n */\nexport const AppTranslationBundleSchema = lazySchema(() => z.object({\n /**\n * Bundle-level metadata.\n * Provides locale-aware rendering hints such as text direction (bidi)\n * and the canonical locale code this bundle represents.\n */\n _meta: z.object({\n /** BCP-47 locale code this bundle represents */\n locale: z.string().optional().describe('BCP-47 locale code for this bundle'),\n /** Text direction for the locale */\n direction: z.enum(['ltr', 'rtl']).optional().describe('Text direction: left-to-right or right-to-left'),\n }).optional().describe('Bundle-level metadata (locale, bidi direction)'),\n\n /**\n * Namespace for plugin/extension isolation.\n * When multiple plugins contribute translations, each should use a unique\n * namespace to avoid key collisions (e.g. \"crm\", \"helpdesk\", \"plugin-xyz\").\n */\n namespace: z.string().optional()\n .describe('Namespace for plugin isolation to avoid translation key collisions'),\n\n /** Object-first translations keyed by object name (snake_case) */\n o: z.record(z.string(), ObjectTranslationNodeSchema).optional()\n .describe('Object-first translations keyed by object name'),\n\n /** Global picklist options not bound to any specific object */\n _globalOptions: z.record(z.string(), OptionTranslationMapSchema).optional()\n .describe('Global picklist option translations keyed by option set name'),\n\n /** App-level translations */\n app: z.record(z.string(), z.object({\n label: z.string().describe('Translated app label'),\n description: z.string().optional().describe('Translated app description'),\n })).optional().describe('App translations keyed by app name'),\n\n /** Navigation menu translations */\n nav: z.record(z.string(), z.string()).optional()\n .describe('Navigation item translations keyed by nav item name'),\n\n /** Dashboard translations keyed by dashboard name */\n dashboard: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated dashboard label'),\n description: z.string().optional().describe('Translated dashboard description'),\n })).optional().describe('Dashboard translations keyed by dashboard name'),\n\n /** Report translations keyed by report name */\n reports: z.record(z.string(), z.object({\n label: z.string().optional().describe('Translated report label'),\n description: z.string().optional().describe('Translated report description'),\n })).optional().describe('Report translations keyed by report name'),\n\n /** Page translations keyed by page name */\n pages: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated page title'),\n description: z.string().optional().describe('Translated page description'),\n })).optional().describe('Page translations keyed by page name'),\n\n /** UI message translations (supports ICU MessageFormat when enabled) */\n messages: z.record(z.string(), z.string()).optional()\n .describe('UI message translations keyed by message ID (supports ICU MessageFormat)'),\n\n /** Validation error message translations (supports ICU MessageFormat when enabled) */\n validationMessages: z.record(z.string(), z.string()).optional()\n .describe('Validation error message translations keyed by rule name (supports ICU MessageFormat)'),\n\n /** Global notification translations not bound to a specific object */\n notifications: z.record(z.string(), z.object({\n title: z.string().optional().describe('Translated notification title'),\n body: z.string().optional().describe('Translated notification body (supports ICU MessageFormat when enabled)'),\n })).optional().describe('Global notification translations keyed by notification name'),\n\n /** Global error message translations not bound to a specific object */\n errors: z.record(z.string(), z.string()).optional()\n .describe('Global error message translations keyed by error code'),\n}).describe('Object-first application translation bundle for a single locale'));\n\nexport type AppTranslationBundle = z.infer<typeof AppTranslationBundleSchema>;\n\n// ────────────────────────────────────────────────────────────────────────────\n// Translation Diff & Coverage\n// ────────────────────────────────────────────────────────────────────────────\n\n/**\n * Translation Diff Status\n *\n * Status of a single translation entry compared to the source metadata.\n */\nexport const TranslationDiffStatusSchema = lazySchema(() => z.enum([\n 'missing',\n 'redundant',\n 'stale',\n]).describe('Translation diff status: missing from bundle, redundant (no matching metadata), or stale (metadata changed)'));\n\nexport type TranslationDiffStatus = z.infer<typeof TranslationDiffStatusSchema>;\n\n/**\n * TranslationDiffItemSchema\n *\n * Describes a single translation key that is missing, redundant, or stale\n * relative to the source metadata. Used by CLI/API diff detection.\n *\n * @example\n * ```typescript\n * const item: TranslationDiffItem = {\n * key: 'o.account.fields.website.label',\n * status: 'missing',\n * objectName: 'account',\n * locale: 'zh-CN',\n * };\n * ```\n */\nexport const TranslationDiffItemSchema = lazySchema(() => z.object({\n /** Dot-path translation key (e.g. \"o.account.fields.website.label\") */\n key: z.string().describe('Dot-path translation key'),\n /** Diff status */\n status: TranslationDiffStatusSchema.describe('Diff status of this translation key'),\n /** Object name if the key belongs to an object translation node */\n objectName: z.string().optional().describe('Associated object name (snake_case)'),\n /** Locale code */\n locale: z.string().describe('BCP-47 locale code'),\n /**\n * Hash of the source metadata value at the time the translation was made.\n * Used by CLI/Workbench to detect stale translations without a full diff.\n */\n sourceHash: z.string().optional().describe('Hash of source metadata for precise stale detection'),\n /**\n * AI-suggested translation text for missing or stale entries.\n * Populated by AI translation hooks or TMS integrations.\n */\n aiSuggested: z.string().optional().describe('AI-suggested translation for this key'),\n /** Confidence score (0-1) for the AI suggestion */\n aiConfidence: z.number().min(0).max(1).optional().describe('AI suggestion confidence score (0–1)'),\n}).describe('A single translation diff item'));\n\nexport type TranslationDiffItem = z.infer<typeof TranslationDiffItemSchema>;\n\n/**\n * TranslationCoverageResultSchema\n *\n * Aggregated coverage result for a locale, optionally scoped to a single object.\n * Returned by the i18n diff detection API.\n *\n * @example\n * ```typescript\n * const result: TranslationCoverageResult = {\n * locale: 'zh-CN',\n * totalKeys: 120,\n * translatedKeys: 105,\n * missingKeys: 12,\n * redundantKeys: 3,\n * staleKeys: 0,\n * coveragePercent: 87.5,\n * items: [ ... ],\n * };\n * ```\n */\n/**\n * Per-group coverage breakdown entry.\n */\nexport const CoverageBreakdownEntrySchema = lazySchema(() => z.object({\n /** Group category (e.g. \"fields\", \"views\", \"actions\", \"messages\") */\n group: z.string().describe('Translation group category'),\n /** Total translatable keys in this group */\n totalKeys: z.number().int().nonnegative().describe('Total keys in this group'),\n /** Number of translated keys in this group */\n translatedKeys: z.number().int().nonnegative().describe('Translated keys in this group'),\n /** Coverage percentage for this group */\n coveragePercent: z.number().min(0).max(100).describe('Coverage percentage for this group'),\n}).describe('Coverage breakdown for a single translation group'));\n\nexport type CoverageBreakdownEntry = z.infer<typeof CoverageBreakdownEntrySchema>;\n\nexport const TranslationCoverageResultSchema = lazySchema(() => z.object({\n /** BCP-47 locale code */\n locale: z.string().describe('BCP-47 locale code'),\n /** Optional object name scope */\n objectName: z.string().optional().describe('Object name scope (omit for full bundle)'),\n /** Total translatable keys derived from metadata */\n totalKeys: z.number().int().nonnegative().describe('Total translatable keys from metadata'),\n /** Number of keys that have a translation */\n translatedKeys: z.number().int().nonnegative().describe('Number of translated keys'),\n /** Number of missing translations */\n missingKeys: z.number().int().nonnegative().describe('Number of missing translations'),\n /** Number of redundant (orphaned) translations */\n redundantKeys: z.number().int().nonnegative().describe('Number of redundant translations'),\n /** Number of stale translations */\n staleKeys: z.number().int().nonnegative().describe('Number of stale translations'),\n /** Coverage percentage (0-100) */\n coveragePercent: z.number().min(0).max(100).describe('Translation coverage percentage'),\n /** Individual diff items */\n items: z.array(TranslationDiffItemSchema).describe('Detailed diff items'),\n /**\n * Per-group coverage breakdown for translation project management.\n * Each entry represents a logical group (e.g. \"fields\", \"views\", \"actions\",\n * \"messages\") with its own coverage statistics.\n */\n breakdown: z.array(CoverageBreakdownEntrySchema).optional()\n .describe('Per-group coverage breakdown'),\n}).describe('Aggregated translation coverage result'));\n\nexport type TranslationCoverageResult = z.infer<typeof TranslationCoverageResultSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * System Identifier Schema\n * \n * Universal naming convention for all machine identifiers (API Names) in ObjectStack.\n * Enforces lowercase with underscores or dots to ensure:\n * - Cross-platform compatibility (case-insensitive filesystems)\n * - URL-friendliness (no encoding needed)\n * - Database consistency (no collation issues)\n * - Security (no case-sensitivity bugs in permission checks)\n * \n * **Applies to all metadata that acts as a machine identifier:**\n * - Object names (tables/collections)\n * - Field names\n * - Role names\n * - Permission set names\n * - Action/trigger names\n * - Event keys\n * - App IDs\n * - Menu/page IDs\n * - Select option values\n * - Workflow names\n * - Webhook names\n * \n * **Naming Convention Summary:**\n * | Type | Pattern | Example |\n * |------|---------|---------|\n * | Machine ID | snake_case | `crm_account`, `btn_submit`, `role_admin` |\n * | Event keys | dot.notation | `user.login`, `order.created` |\n * | Labels | Any case | `Client Account`, `Submit Form` |\n * \n * @example Valid identifiers\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * - 'order.created' (for events)\n * - 'api_v2_endpoint'\n * \n * @example Invalid identifiers (will be rejected)\n * - 'Account' (uppercase)\n * - 'CrmAccount' (camelCase)\n * - 'crm-account' (kebab-case - use underscore instead)\n * - 'user profile' (spaces)\n */\nimport { lazySchema } from './lazy-schema';\nexport const SystemIdentifierSchema = lazySchema(() => z\n .string()\n .min(2, { message: 'System identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'System identifier must be lowercase, starting with a letter, and may contain letters, numbers, underscores, or dots (e.g., \"user_profile\" or \"order.created\")',\n })\n .describe('System identifier (lowercase with underscores or dots)'));\n\n/**\n * Strict Snake Case Identifier\n * \n * More restrictive than SystemIdentifierSchema - only allows underscores (no dots).\n * Use this for identifiers that should NOT contain dots (e.g., database table/column names).\n * \n * @example Valid\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * \n * @example Invalid\n * - 'user.profile' (dots not allowed)\n * - 'UserProfile' (uppercase)\n */\nexport const SnakeCaseIdentifierSchema = lazySchema(() => z\n .string()\n .min(2, { message: 'Identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_]*$/, {\n message:\n 'Identifier must be lowercase snake_case, starting with a letter, and may contain only letters, numbers, and underscores (e.g., \"user_profile\")',\n })\n .describe('Snake case identifier (lowercase with underscores only)'));\n\n/**\n * Event Name Identifier\n * \n * Specialized identifier for event names that encourages dot notation.\n * Used in event-driven systems, message queues, and webhooks.\n * \n * Pattern: `namespace.action` or `entity.event_type`\n * \n * @example Valid\n * - 'user.created'\n * - 'order.paid'\n * - 'user.login_success'\n * - 'alarm.high_cpu'\n * \n * @example Invalid\n * - 'UserCreated' (camelCase)\n * - 'user_created' (should use dots for namespacing)\n */\nexport const EventNameSchema = lazySchema(() => z\n .string()\n .min(3, { message: 'Event name must be at least 3 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'Event name must be lowercase with dots for namespacing (e.g., \"user.created\", \"order.paid\")',\n })\n .describe('Event name (lowercase with dot notation for namespacing)'));\n\n/**\n * Type Exports\n */\nexport type SystemIdentifier = z.infer<typeof SystemIdentifierSchema>;\nexport type SnakeCaseIdentifier = z.infer<typeof SnakeCaseIdentifierSchema>;\nexport type EventName = z.infer<typeof EventNameSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Expression Protocol\n *\n * Canonical wire format for all \"expression\"-shaped metadata across ObjectStack\n * (formula fields, predicates, conditions, criteria, visibility rules, seed\n * dynamic values, …).\n *\n * The persisted form is `{ dialect, source }` (and, after `objectstack\n * compile` normalization, `{ dialect, ast }`). String-only shorthand is\n * accepted at *input* time for developer ergonomics; build emits the canonical\n * envelope.\n *\n * ## Dialects\n *\n * | dialect | engine | use |\n * |:---|:---|:---|\n * | `cel` | `@objectstack/formula` (cel-js + ObjectStack stdlib) | formulas, predicates, seed dynamic values |\n * | `js` | sandboxed L2 hook bodies (`isolated-vm` / `quickjs`) | mapping, hook bodies |\n * | `cron` | `cron-parser` | job schedules |\n *\n * SQL fragments (analytics joins, partial indexes) are intentionally **not**\n * routed through this schema — they stay driver-native because their security\n * posture and portability story differ.\n *\n * @see content/docs/concepts/north-star.mdx §8 \"No private expression DSL\"\n */\n\n/** Supported expression dialects. */\nexport const ExpressionDialect = z.enum(['cel', 'js', 'cron', 'template']);\nexport type ExpressionDialect = z.infer<typeof ExpressionDialect>;\n\n/**\n * Authorship metadata for an expression. Optional but encouraged for AI-\n * generated artifacts so audit/explanation tooling has something to render.\n */\nexport const ExpressionMetaSchema = z.object({\n /** Human-readable rationale (often AI-emitted). */\n rationale: z.string().optional(),\n /** Identifier of the agent / tool that produced this expression. */\n generatedBy: z.string().optional(),\n});\nexport type ExpressionMeta = z.infer<typeof ExpressionMetaSchema>;\n\n/**\n * Canonical Expression envelope.\n *\n * Phase 1 (M9.1): `source` is the canonical persisted form. `ast` is reserved\n * and accepted as opaque structured value — `objectstack compile` will fill it\n * in M9.2 with the engine's parsed AST so the artifact carries an AST-only\n * representation.\n *\n * Phase 2 (M9.2+): `ast` becomes required in build output; `source` is kept\n * only for round-trip / debug.\n */\nexport const ExpressionSchema = z.object({\n /** Which engine evaluates `source` / `ast`. */\n dialect: ExpressionDialect,\n /** Surface syntax. Required while `ast` is not yet populated. */\n source: z.string().min(1).optional(),\n /**\n * Engine-native AST. Opaque at the spec layer; each engine validates its own\n * shape. For `dialect: 'cel'` this is the cel-js parsed AST node.\n */\n ast: z.unknown().optional(),\n /** Optional authorship metadata. */\n meta: ExpressionMetaSchema.optional(),\n}).refine(e => e.source !== undefined || e.ast !== undefined, {\n message: 'Expression requires at least one of `source` or `ast`',\n});\nexport type Expression = z.infer<typeof ExpressionSchema>;\n\n/**\n * Author-time input shape: a bare string is shorthand for `{ dialect: 'cel',\n * source }`. Engines that need other dialects must use the full envelope.\n *\n * Build (`objectstack compile`) normalizes this union to `Expression` so the\n * persisted artifact never contains the bare-string form.\n */\nexport const ExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'cel', source })),\n ExpressionSchema,\n]);\nexport type ExpressionInput = z.input<typeof ExpressionInputSchema>;\n\n/**\n * Cron-typed input shape: a bare string is shorthand for `{ dialect: 'cron',\n * source }` (not `cel`). Use this for `schedule` / `cronExpression` fields so\n * authors can write `'0 9 * * 1-5'` without manually wrapping.\n */\nexport const CronExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'cron', source })),\n ExpressionSchema,\n]);\nexport type CronExpressionInput = z.input<typeof CronExpressionInputSchema>;\n\n/**\n * Template-typed input shape: a bare string is shorthand for\n * `{ dialect: 'template', source }`. Use this for notification subjects/bodies,\n * titleFormat, prompt templates — anything with `{{var}}` interpolation.\n */\nexport const TemplateExpressionInputSchema = z.union([\n z.string().min(1).transform((source): Expression => ({ dialect: 'template', source })),\n ExpressionSchema,\n]);\nexport type TemplateExpressionInput = z.input<typeof TemplateExpressionInputSchema>;\n\n/**\n * Predicate — an Expression whose evaluation is expected to be boolean.\n * Spec layer cannot enforce return type at parse time; this alias exists for\n * intent documentation and future runtime type-check wiring.\n */\nexport const PredicateSchema = ExpressionSchema;\nexport type Predicate = z.infer<typeof PredicateSchema>;\n\nexport const PredicateInputSchema = ExpressionInputSchema;\nexport type PredicateInput = z.input<typeof PredicateInputSchema>;\n\n/**\n * Construct an Expression literal from a CEL source string. Used by DX\n * shorthand (`cel\\`...\\``) and by codegen tools.\n */\nexport function expression(source: string, dialect: ExpressionDialect = 'cel', meta?: ExpressionMeta): Expression {\n return { dialect, source, ...(meta ? { meta } : {}) };\n}\n\n/**\n * Tagged-template helpers for inline expression authoring.\n *\n * ```ts\n * import { cel, F, P } from '@objectstack/spec';\n *\n * const f = { formula: F`record.amount * 0.1` };\n * const v = { visible: P`record.status == \"open\"` };\n * const d = { close_date: cel`now() + duration(\"P30D\")` };\n * ```\n *\n * Each helper produces an {@link Expression} envelope with `dialect: 'cel'`\n * and the rendered template string as `source`. The CLI `objectstack compile`\n * step (M9.2) parses these into ASTs at build time so the persisted artifact\n * is dialect-AST only.\n */\nfunction renderTemplate(strings: TemplateStringsArray, values: readonly unknown[]): string {\n if (values.length === 0) return strings[0] ?? '';\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n // Inline literal substitution. Strings get JSON-escaped so `${name}` for\n // `name = 'O\\'Brien'` produces a valid CEL string literal. Numbers and\n // booleans render as their toString. Anything exotic should be passed via\n // the variable scope (record/input) rather than interpolated.\n if (typeof v === 'string') out += JSON.stringify(v);\n else if (typeof v === 'number' || typeof v === 'boolean') out += String(v);\n else if (v === null || v === undefined) out += 'null';\n else out += JSON.stringify(v);\n out += strings[i + 1] ?? '';\n }\n return out;\n}\n\n/** Tagged template — produces a CEL Expression envelope. */\nexport function cel(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n return { dialect: 'cel', source: renderTemplate(strings, values) };\n}\n\n/** Formula alias of {@link cel} — semantic shorthand for computed-field formulas. */\nexport const F = cel;\n\n/** Predicate alias of {@link cel} — semantic shorthand for boolean conditions. */\nexport const P = cel;\n\n/**\n * Tagged template — produces a Mustache-template Expression envelope. Use for\n * notification subjects, prompt bodies, titleFormat strings, etc. Variable\n * scope is the same as CEL (`{{record.x}}`, `{{os.user.id}}`).\n */\nexport function tmpl(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n // Templates do not get JSON.stringify on substitution — interpolation happens\n // at evaluate time via `{{path}}` markers, so we keep raw substitutions here.\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n out += String(values[i]);\n out += strings[i + 1] ?? '';\n }\n return { dialect: 'template', source: out };\n}\n\n/** Tagged template — produces a cron Expression envelope. */\nexport function cron(strings: TemplateStringsArray, ...values: unknown[]): Expression {\n let out = strings[0] ?? '';\n for (let i = 0; i < values.length; i++) {\n out += String(values[i]);\n out += strings[i + 1] ?? '';\n }\n return { dialect: 'cron', source: out };\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Field-level encryption protocol\n * GDPR/HIPAA/PCI-DSS compliant\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const EncryptionAlgorithmSchema = lazySchema(() => z.enum([\n 'aes-256-gcm',\n 'aes-256-cbc',\n 'chacha20-poly1305',\n]).describe('Supported encryption algorithm'));\n\nexport type EncryptionAlgorithm = z.infer<typeof EncryptionAlgorithmSchema>;\n\nexport const KeyManagementProviderSchema = lazySchema(() => z.enum([\n 'local',\n 'aws-kms',\n 'azure-key-vault',\n 'gcp-kms',\n 'hashicorp-vault',\n]).describe('Key management service provider'));\n\nexport type KeyManagementProvider = z.infer<typeof KeyManagementProviderSchema>;\n\nexport const KeyRotationPolicySchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable automatic key rotation'),\n frequencyDays: z.number().min(1).default(90).describe('Rotation frequency in days'),\n retainOldVersions: z.number().default(3).describe('Number of old key versions to retain'),\n autoRotate: z.boolean().default(true).describe('Automatically rotate without manual approval'),\n}).describe('Policy for automatic encryption key rotation'));\n\nexport type KeyRotationPolicy = z.infer<typeof KeyRotationPolicySchema>;\nexport type KeyRotationPolicyInput = z.input<typeof KeyRotationPolicySchema>;\n\nexport const EncryptionConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable field-level encryption'),\n algorithm: EncryptionAlgorithmSchema.default('aes-256-gcm').describe('Encryption algorithm'),\n keyManagement: z.object({\n provider: KeyManagementProviderSchema.describe('Key management service provider'),\n keyId: z.string().optional().describe('Key identifier in the provider'),\n rotationPolicy: KeyRotationPolicySchema.optional().describe('Key rotation policy'),\n }).describe('Key management configuration'),\n scope: z.enum(['field', 'record', 'table', 'database']).describe('Encryption scope level'),\n deterministicEncryption: z.boolean().default(false).describe('Allows equality queries on encrypted data'),\n searchableEncryption: z.boolean().default(false).describe('Allows search on encrypted data'),\n}).describe('Field-level encryption configuration'));\n\nexport type EncryptionConfig = z.infer<typeof EncryptionConfigSchema>;\nexport type EncryptionConfigInput = z.input<typeof EncryptionConfigSchema>;\n\nexport const FieldEncryptionSchema = lazySchema(() => z.object({\n fieldName: z.string().describe('Name of the field to encrypt'),\n encryptionConfig: EncryptionConfigSchema.describe('Encryption settings for this field'),\n indexable: z.boolean().default(false).describe('Allow indexing on encrypted field'),\n}).describe('Per-field encryption assignment'));\n\nexport type FieldEncryption = z.infer<typeof FieldEncryptionSchema>;\nexport type FieldEncryptionInput = z.input<typeof FieldEncryptionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Data masking protocol for PII protection\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const MaskingStrategySchema = lazySchema(() => z.enum([\n 'redact', // Complete redaction: ****\n 'partial', // Partial masking: 138****5678\n 'hash', // Hash value: sha256(value)\n 'tokenize', // Tokenization: token-12345\n 'randomize', // Randomize: generate random value\n 'nullify', // Null value: null\n 'substitute', // Substitute with dummy data\n]).describe('Data masking strategy for PII protection'));\n\nexport type MaskingStrategy = z.infer<typeof MaskingStrategySchema>;\n\nexport const MaskingRuleSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to apply masking to'),\n strategy: MaskingStrategySchema.describe('Masking strategy to use'),\n pattern: z.string().optional().describe('Regex pattern for partial masking'),\n preserveFormat: z.boolean().default(true).describe('Keep the original data format after masking'),\n preserveLength: z.boolean().default(true).describe('Keep the original data length after masking'),\n roles: z.array(z.string()).optional().describe('Roles that see masked data'),\n exemptRoles: z.array(z.string()).optional().describe('Roles that see unmasked data'),\n}).describe('Masking rule for a single field'));\n\nexport type MaskingRule = z.infer<typeof MaskingRuleSchema>;\nexport type MaskingRuleInput = z.input<typeof MaskingRuleSchema>;\n\nexport const MaskingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable data masking'),\n rules: z.array(MaskingRuleSchema).describe('List of field-level masking rules'),\n auditUnmasking: z.boolean().default(true).describe('Log when masked data is accessed unmasked'),\n}).describe('Top-level data masking configuration for PII protection'));\n\nexport type MaskingConfig = z.infer<typeof MaskingConfigSchema>;\nexport type MaskingConfigInput = z.input<typeof MaskingConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SystemIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { EncryptionConfigSchema } from '../system/encryption.zod';\nimport { MaskingRuleSchema } from '../system/masking.zod';\n\n/**\n * Field Type Enum\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldType = z.enum([\n // Core Text\n 'text', 'textarea', 'email', 'url', 'phone', 'password',\n // 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 = lazySchema(() => z.object({\n label: z.string().describe('Display label (human-readable, any case allowed)'),\n value: SystemIdentifierSchema.describe('Stored value (lowercase machine identifier)'),\n color: z.string().optional().describe('Color code for badges/charts'),\n default: z.boolean().optional().describe('Is default option'),\n}));\n\n/**\n * Location Coordinates Schema\n * GPS coordinates for location field type\n */\nexport const LocationCoordinatesSchema = lazySchema(() => z.object({\n latitude: z.number().min(-90).max(90).describe('Latitude coordinate'),\n longitude: z.number().min(-180).max(180).describe('Longitude coordinate'),\n altitude: z.number().optional().describe('Altitude in meters'),\n accuracy: z.number().optional().describe('Accuracy in meters'),\n}));\n\n/**\n * Currency Configuration Schema\n * Configuration for currency field type supporting multi-currency\n * \n * Note: Currency codes are validated by length only (3 characters) to support:\n * - Standard ISO 4217 codes (USD, EUR, CNY, etc.)\n * - Cryptocurrency codes (BTC, ETH, etc.)\n * - Custom business-specific codes\n * Stricter validation can be implemented at the application layer based on business requirements.\n */\nexport const CurrencyConfigSchema = lazySchema(() => z.object({\n precision: z.number().int().min(0).max(10).default(2).describe('Decimal precision (default: 2)'),\n currencyMode: z.enum(['dynamic', 'fixed']).default('dynamic').describe('Currency mode: dynamic (user selectable) or fixed (single currency)'),\n defaultCurrency: z.string().length(3).default('CNY').describe('Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)'),\n}));\n\n/**\n * Currency Value Schema\n * Runtime value structure for currency fields\n * \n * Note: Currency codes are validated by length only (3 characters) to support flexibility.\n * See CurrencyConfigSchema for details on currency code validation strategy.\n */\nexport const CurrencyValueSchema = lazySchema(() => z.object({\n value: z.number().describe('Monetary amount'),\n currency: z.string().length(3).describe('Currency code (ISO 4217)'),\n}));\n\n/**\n * Address Schema\n * Structured address for address field type\n */\nexport const AddressSchema = lazySchema(() => z.object({\n street: z.string().optional().describe('Street address'),\n city: z.string().optional().describe('City name'),\n state: z.string().optional().describe('State/Province'),\n postalCode: z.string().optional().describe('Postal/ZIP code'),\n country: z.string().optional().describe('Country name or code'),\n countryCode: z.string().optional().describe('ISO country code (e.g., US, GB)'),\n formatted: z.string().optional().describe('Formatted address string'),\n}));\n\n/**\n * Vector Configuration Schema\n * Configuration for vector field type supporting AI/ML embeddings\n * \n * Vector fields store numerical embeddings for semantic search, similarity matching,\n * and Retrieval-Augmented Generation (RAG) workflows.\n * \n * @example\n * // Text embeddings for semantic search\n * {\n * dimensions: 1536, // OpenAI text-embedding-ada-002\n * distanceMetric: 'cosine',\n * indexed: true\n * }\n * \n * @example\n * // Image embeddings with normalization\n * {\n * dimensions: 512, // ResNet-50\n * distanceMetric: 'euclidean',\n * normalized: true,\n * indexed: true\n * }\n */\nexport const VectorConfigSchema = lazySchema(() => z.object({\n dimensions: z.number().int().min(1).max(10000).describe('Vector dimensionality (e.g., 1536 for OpenAI embeddings)'),\n distanceMetric: z.enum(['cosine', 'euclidean', 'dotProduct', 'manhattan']).default('cosine').describe('Distance/similarity metric for vector search'),\n normalized: z.boolean().default(false).describe('Whether vectors are normalized (unit length)'),\n indexed: z.boolean().default(true).describe('Whether to create a vector index for fast similarity search'),\n indexType: z.enum(['hnsw', 'ivfflat', 'flat']).optional().describe('Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)'),\n}));\n\n/**\n * File Attachment Configuration Schema\n * Configuration for file and attachment field types\n * \n * Provides comprehensive file upload capabilities with:\n * - File type restrictions (allowed/blocked)\n * - File size limits (min/max)\n * - Virus scanning integration\n * - Storage provider integration\n * - Image-specific features (dimensions, thumbnails)\n * \n * @example Basic file upload with size limit\n * {\n * maxSize: 10485760, // 10MB\n * allowedTypes: ['.pdf', '.docx', '.xlsx'],\n * virusScan: true\n * }\n * \n * @example Image upload with validation\n * {\n * maxSize: 5242880, // 5MB\n * allowedTypes: ['.jpg', '.jpeg', '.png', '.webp'],\n * imageValidation: {\n * maxWidth: 4096,\n * maxHeight: 4096,\n * generateThumbnails: true\n * }\n * }\n */\nexport const FileAttachmentConfigSchema = lazySchema(() => z.object({\n /** File Size Limits */\n minSize: z.number().min(0).optional().describe('Minimum file size in bytes'),\n maxSize: z.number().min(1).optional().describe('Maximum file size in bytes (e.g., 10485760 = 10MB)'),\n \n /** File Type Restrictions */\n allowedTypes: z.array(z.string()).optional().describe('Allowed file extensions (e.g., [\".pdf\", \".docx\", \".jpg\"])'),\n blockedTypes: z.array(z.string()).optional().describe('Blocked file extensions (e.g., [\".exe\", \".bat\", \".sh\"])'),\n allowedMimeTypes: z.array(z.string()).optional().describe('Allowed MIME types (e.g., [\"image/jpeg\", \"application/pdf\"])'),\n blockedMimeTypes: z.array(z.string()).optional().describe('Blocked MIME types'),\n \n /** Virus Scanning */\n virusScan: z.boolean().default(false).describe('Enable virus scanning for uploaded files'),\n virusScanProvider: z.enum(['clamav', 'virustotal', 'metadefender', 'custom']).optional().describe('Virus scanning service provider'),\n virusScanOnUpload: z.boolean().default(true).describe('Scan files immediately on upload'),\n quarantineOnThreat: z.boolean().default(true).describe('Quarantine files if threat detected'),\n \n /** Storage Configuration */\n storageProvider: z.string().optional().describe('Object storage provider name (references ObjectStorageConfig)'),\n storageBucket: z.string().optional().describe('Target bucket name'),\n storagePrefix: z.string().optional().describe('Storage path prefix (e.g., \"uploads/documents/\")'),\n \n /** Image-Specific Validation */\n imageValidation: z.object({\n minWidth: z.number().min(1).optional().describe('Minimum image width in pixels'),\n maxWidth: z.number().min(1).optional().describe('Maximum image width in pixels'),\n minHeight: z.number().min(1).optional().describe('Minimum image height in pixels'),\n maxHeight: z.number().min(1).optional().describe('Maximum image height in pixels'),\n aspectRatio: z.string().optional().describe('Required aspect ratio (e.g., \"16:9\", \"1:1\")'),\n generateThumbnails: z.boolean().default(false).describe('Auto-generate thumbnails'),\n thumbnailSizes: z.array(z.object({\n name: z.string().describe('Thumbnail variant name (e.g., \"small\", \"medium\", \"large\")'),\n width: z.number().min(1).describe('Thumbnail width in pixels'),\n height: z.number().min(1).describe('Thumbnail height in pixels'),\n crop: z.boolean().default(false).describe('Crop to exact dimensions'),\n })).optional().describe('Thumbnail size configurations'),\n preserveMetadata: z.boolean().default(false).describe('Preserve EXIF metadata'),\n autoRotate: z.boolean().default(true).describe('Auto-rotate based on EXIF orientation'),\n }).optional().describe('Image-specific validation rules'),\n \n /** Upload Behavior */\n allowMultiple: z.boolean().default(false).describe('Allow multiple file uploads (overrides field.multiple)'),\n allowReplace: z.boolean().default(true).describe('Allow replacing existing files'),\n allowDelete: z.boolean().default(true).describe('Allow deleting uploaded files'),\n requireUpload: z.boolean().default(false).describe('Require at least one file when field is required'),\n \n /** Metadata Extraction */\n extractMetadata: z.boolean().default(true).describe('Extract file metadata (name, size, type, etc.)'),\n extractText: z.boolean().default(false).describe('Extract text content from documents (OCR/parsing)'),\n \n /** Versioning */\n versioningEnabled: z.boolean().default(false).describe('Keep previous versions of replaced files'),\n maxVersions: z.number().min(1).optional().describe('Maximum number of versions to retain'),\n \n /** Access Control */\n publicRead: z.boolean().default(false).describe('Allow public read access to uploaded files'),\n presignedUrlExpiry: z.number().min(60).max(604800).default(3600).describe('Presigned URL expiration in seconds (default: 1 hour)'),\n}).refine((data) => {\n // Validate minSize is less than or equal to maxSize\n if (data.minSize !== undefined && data.maxSize !== undefined && data.minSize > data.maxSize) {\n return false;\n }\n return true;\n}, {\n message: 'minSize must be less than or equal to maxSize',\n}).refine((data) => {\n // Validate virusScanProvider requires virusScan to be enabled\n if (data.virusScanProvider !== undefined && data.virusScan !== true) {\n return false;\n }\n return true;\n}, {\n message: 'virusScanProvider requires virusScan to be enabled',\n}));\n\n/**\n * Data Quality Rules Schema\n * Defines data quality validation and monitoring for fields\n * \n * @example Unique SSN field with completeness requirement\n * {\n * uniqueness: true,\n * completeness: 0.95, // 95% of records must have this field\n * accuracy: {\n * source: 'government_db',\n * threshold: 0.98\n * }\n * }\n */\nexport const DataQualityRulesSchema = lazySchema(() => z.object({\n /** Enforce uniqueness constraint */\n uniqueness: z.boolean().default(false).describe('Enforce unique values across all records'),\n \n /** Completeness ratio (0-1) indicating minimum percentage of non-null values */\n completeness: z.number().min(0).max(1).default(0).describe('Minimum ratio of non-null values (0-1, default: 0 = no requirement)'),\n \n /** Accuracy validation against authoritative source */\n accuracy: z.object({\n source: z.string().describe('Reference data source for validation (e.g., \"api.verify.com\", \"master_data\")'),\n threshold: z.number().min(0).max(1).describe('Minimum accuracy threshold (0-1, e.g., 0.95 = 95% match required)'),\n }).optional().describe('Accuracy validation configuration'),\n}));\n\n/**\n * Computed Field Caching Schema\n * Configuration for caching computed/formula field results\n * \n * @example Cache product price with 1-hour TTL, invalidate on inventory changes\n * {\n * enabled: true,\n * ttl: 3600,\n * invalidateOn: ['inventory.quantity', 'pricing.discount']\n * }\n */\nexport const ComputedFieldCacheSchema = lazySchema(() => z.object({\n /** Enable caching for this computed field */\n enabled: z.boolean().describe('Enable caching for computed field results'),\n \n /** Time-to-live in seconds */\n ttl: z.number().min(0).describe('Cache TTL in seconds (0 = no expiration)'),\n \n /** Array of field paths that trigger cache invalidation when changed */\n invalidateOn: z.array(z.string()).describe('Field paths that invalidate cache (e.g., [\"inventory.quantity\", \"pricing.base_price\"])'),\n}));\n\n/**\n * Field Schema - Best Practice Enterprise Pattern\n */\n/**\n * Field Definition Schema\n * Defines the properties, type, and behavior of a single field (column) on an object.\n * \n * @example Lookup Field\n * {\n * name: \"account_id\",\n * label: \"Account\",\n * type: \"lookup\",\n * reference: \"accounts\",\n * required: true\n * }\n * \n * @example Select Field\n * {\n * name: \"status\",\n * label: \"Status\",\n * type: \"select\",\n * options: [\n * { label: \"Open\", value: \"open\" },\n * { label: \"Closed\", value: \"closed\" }\n * ],\n * defaultValue: \"open\"\n * }\n */\nexport const FieldSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine name (snake_case)').optional(),\n label: z.string().optional().describe('Human readable label'),\n type: FieldType.describe('Field Data Type'),\n description: z.string().optional().describe('Tooltip/Help text'),\n format: z.string().optional().describe('Format string (e.g. email, phone)'),\n\n /** Storage Layer Mapping */\n columnName: z.string().optional().describe('Physical column name in the target datasource. Defaults to the field key when not set.'),\n\n /** Database Constraints */\n required: z.boolean().default(false).describe('Is required'),\n searchable: z.boolean().default(false).describe('Is searchable'),\n multiple: z.boolean().default(false).describe('Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image.'),\n unique: z.boolean().default(false).describe('Is unique constraint'),\n defaultValue: z.unknown().optional().describe('Default value'),\n \n /** Text/String Constraints */\n maxLength: z.number().optional().describe('Max character length'),\n minLength: z.number().optional().describe('Min character length'),\n \n /** Number Constraints */\n precision: z.number().optional().describe('Total digits'),\n scale: z.number().optional().describe('Decimal places'),\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n\n /** Selection Options */\n options: z.array(SelectOptionSchema).optional().describe('Static options for select/multiselect'),\n\n /**\n * Relationship Config\n * \n * Used by `lookup` and `master_detail` field types to define cross-object references.\n * The `reference` property is **required** for these types — it identifies the target\n * object whose records this field links to. The engine uses `reference` during $expand\n * post-processing to resolve foreign key IDs into full related objects via batch queries.\n * \n * For `master_detail` fields, the parent record controls the lifecycle of child records\n * (e.g., cascade delete). For `lookup` fields, the reference is a soft link.\n */\n reference: z.string().optional().describe(\n 'Target object name (snake_case) for lookup/master_detail fields. '\n + 'Required for relationship types. Used by $expand to resolve foreign key IDs into full objects.'\n ),\n referenceFilters: z.array(z.string()).optional().describe('Filters applied to lookup dialogs (e.g. \"active = true\")'),\n writeRequiresMasterRead: z.boolean().optional().describe('If true, user needs read access to master record to edit this field'),\n deleteBehavior: z.enum(['set_null', 'cascade', 'restrict']).optional().default('set_null').describe('What happens if referenced record is deleted'),\n\n /** Calculation — CEL formula. Plain string accepted for back-compat; build emits canonical envelope. */\n expression: ExpressionInputSchema.optional().describe('Formula expression (CEL). e.g. F`record.amount * 0.1`'),\n summaryOperations: z.object({\n object: z.string().describe('Source child object name for roll-up'),\n field: z.string().describe('Field on child object to aggregate'),\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: ExpressionInputSchema.optional().describe('Predicate (CEL) — field is required when TRUE. e.g. P`record.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 system: z.boolean().optional().describe('Auto-injected system/audit field (e.g. created_at, updated_by, organization_id). Tools that surface system fields separately from author-declared business fields should branch on this flag.'),\n sortable: z.boolean().optional().default(true).describe('Whether field is sortable in list views'),\n inlineHelpText: z.string().optional().describe('Help text displayed below the field in forms'),\n trackFeedHistory: z.boolean().optional().describe('Track field changes in Chatter/activity feed (Salesforce pattern)'),\n caseSensitive: z.boolean().optional().describe('Whether text comparisons are case-sensitive'),\n autonumberFormat: z.string().optional().describe('Auto-number display format pattern (e.g., \"CASE-{0000}\")'),\n /** Indexing */\n index: z.boolean().default(false).describe('Create standard database index'),\n externalId: z.boolean().default(false).describe('Is external ID for upsert operations'),\n}));\n\nexport type Field = z.infer<typeof FieldSchema>;\nexport type SelectOption = z.infer<typeof SelectOptionSchema>;\nexport type LocationCoordinates = z.infer<typeof LocationCoordinatesSchema>;\nexport type Address = z.infer<typeof AddressSchema>;\nexport type CurrencyConfig = z.infer<typeof CurrencyConfigSchema>;\nexport type CurrencyConfigInput = z.input<typeof CurrencyConfigSchema>;\nexport type CurrencyValue = z.infer<typeof CurrencyValueSchema>;\nexport type VectorConfig = z.infer<typeof VectorConfigSchema>;\nexport type VectorConfigInput = z.input<typeof VectorConfigSchema>;\nexport type FileAttachmentConfig = z.infer<typeof FileAttachmentConfigSchema>;\nexport type FileAttachmentConfigInput = z.input<typeof FileAttachmentConfigSchema>;\nexport type DataQualityRules = z.infer<typeof DataQualityRulesSchema>;\nexport type DataQualityRulesInput = z.input<typeof DataQualityRulesSchema>;\nexport type ComputedFieldCache = z.infer<typeof ComputedFieldCacheSchema>;\n\n/**\n * Field Factory Helper\n */\nexport type FieldInput = Omit<Partial<Field>, 'type'>;\n\nexport const Field = {\n text: (config: FieldInput = {}) => ({ type: 'text', ...config } as const),\n textarea: (config: FieldInput = {}) => ({ type: 'textarea', ...config } as const),\n number: (config: FieldInput = {}) => ({ type: 'number', ...config } as const),\n boolean: (config: FieldInput = {}) => ({ type: 'boolean', ...config } as const),\n date: (config: FieldInput = {}) => ({ type: 'date', ...config } as const),\n datetime: (config: FieldInput = {}) => ({ type: 'datetime', ...config } as const),\n currency: (config: FieldInput = {}) => ({ type: 'currency', ...config } as const),\n percent: (config: FieldInput = {}) => ({ type: 'percent', ...config } as const),\n url: (config: FieldInput = {}) => ({ type: 'url', ...config } as const),\n email: (config: FieldInput = {}) => ({ type: 'email', ...config } as const),\n phone: (config: FieldInput = {}) => ({ type: 'phone', ...config } as const),\n image: (config: FieldInput = {}) => ({ type: 'image', ...config } as const),\n file: (config: FieldInput = {}) => ({ type: 'file', ...config } as const),\n avatar: (config: FieldInput = {}) => ({ type: 'avatar', ...config } as const),\n formula: (config: FieldInput = {}) => ({ type: 'formula', ...config } as const),\n summary: (config: FieldInput = {}) => ({ type: 'summary', ...config } as const),\n autonumber: (config: FieldInput = {}) => ({ type: 'autonumber', ...config } as const),\n markdown: (config: FieldInput = {}) => ({ type: 'markdown', ...config } as const),\n html: (config: FieldInput = {}) => ({ type: 'html', ...config } as const),\n password: (config: FieldInput = {}) => ({ type: 'password', ...config } as const),\n \n /**\n * Select field helper with backward-compatible API\n * \n * Automatically converts option values to lowercase to enforce naming conventions.\n * \n * @example Old API (array first) - auto-converts to lowercase\n * Field.select(['High', 'Low'], { label: 'Priority' })\n * // Results in: [{ label: 'High', value: 'high' }, { label: 'Low', value: 'low' }]\n * \n * @example New API (config object) - enforces lowercase\n * Field.select({ options: [{label: 'High', value: 'high'}], label: 'Priority' })\n * \n * @example Multi-word values - converts to snake_case\n * Field.select(['In Progress', 'Closed Won'], { label: 'Status' })\n * // Results in: [{ label: 'In Progress', value: 'in_progress' }, { label: 'Closed Won', value: 'closed_won' }]\n */\n select: (optionsOrConfig: SelectOption[] | string[] | FieldInput & { options: SelectOption[] | string[] }, config?: FieldInput) => {\n // Helper function to convert string to lowercase snake_case\n const toSnakeCase = (str: string): string => {\n return str\n .toLowerCase()\n .replace(/\\s+/g, '_') // Replace spaces with underscores\n .replace(/[^a-z0-9_]/g, ''); // Remove invalid characters (keeping underscores only)\n };\n\n // Support both old and new signatures:\n // Old: Field.select(['a', 'b'], { label: 'X' })\n // New: Field.select({ options: [{label: 'A', value: 'a'}], label: 'X' })\n let options: SelectOption[];\n let finalConfig: FieldInput;\n \n if (Array.isArray(optionsOrConfig)) {\n // Old signature: array as first param\n options = optionsOrConfig.map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n finalConfig = config || {};\n } else {\n // New signature: config object with options\n options = (optionsOrConfig.options || []).map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n // Remove options from config to avoid confusion\n const { options: _, ...restConfig } = optionsOrConfig;\n finalConfig = restConfig;\n }\n \n return { type: 'select', options, ...finalConfig } as const;\n },\n\n \n lookup: (reference: string, config: FieldInput = {}) => ({ \n type: 'lookup', \n reference, \n ...config \n } as const),\n \n masterDetail: (reference: string, config: FieldInput = {}) => ({ \n type: 'master_detail', \n reference, \n ...config \n } as const),\n\n // Enhanced Field Type Helpers\n location: (config: FieldInput = {}) => ({ \n type: 'location', \n ...config \n } as const),\n \n address: (config: FieldInput = {}) => ({ \n type: 'address', \n ...config \n } as const),\n \n richtext: (config: FieldInput = {}) => ({ \n type: 'richtext', \n ...config \n } as const),\n \n code: (language?: string, config: FieldInput = {}) => ({ \n type: 'code', \n language,\n ...config \n } as const),\n \n color: (config: FieldInput = {}) => ({ \n type: 'color', \n ...config \n } as const),\n \n rating: (maxRating: number = 5, config: FieldInput = {}) => ({ \n type: 'rating', \n maxRating,\n ...config \n } as const),\n \n signature: (config: FieldInput = {}) => ({ \n type: 'signature', \n ...config \n } as const),\n \n slider: (config: FieldInput = {}) => ({ \n type: 'slider', \n ...config \n } as const),\n \n qrcode: (config: FieldInput = {}) => ({ \n type: 'qrcode', \n ...config \n } as const),\n \n json: (config: FieldInput = {}) => ({ \n type: 'json', \n ...config \n } as const),\n \n vector: (dimensions: number, config: FieldInput = {}) => ({ \n type: 'vector', \n vectorConfig: {\n dimensions,\n distanceMetric: 'cosine' as const,\n normalized: false,\n indexed: true,\n ...config.vectorConfig\n },\n ...config \n } as const),\n};\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { FieldType } from '../data/field.zod';\n\n/**\n * \"Did you mean?\" Suggestion Utilities\n *\n * Provides fuzzy matching for common ObjectStack identifiers.\n * Used by the custom error map to suggest corrections for typos.\n *\n * @example\n * ```ts\n * suggestFieldType('text_area'); // ['textarea']\n * suggestFieldType('String'); // ['text']\n * suggestFieldType('int'); // ['number']\n * ```\n */\n\n/**\n * Compute Levenshtein edit distance between two strings.\n * Uses space-optimized two-row approach (O(min(m,n)) space).\n */\nexport function levenshteinDistance(a: string, b: string): number {\n const la = a.length;\n const lb = b.length;\n\n if (la === 0) return lb;\n if (lb === 0) return la;\n\n // Use only two rows for space efficiency\n let prev = new Array<number>(lb + 1);\n let curr = new Array<number>(lb + 1);\n\n for (let j = 0; j <= lb; j++) {\n prev[j] = j;\n }\n\n for (let i = 1; i <= la; i++) {\n curr[0] = i;\n for (let j = 1; j <= lb; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n curr[j] = Math.min(\n prev[j] + 1, // deletion\n curr[j - 1] + 1, // insertion\n prev[j - 1] + cost, // substitution\n );\n }\n [prev, curr] = [curr, prev];\n }\n\n return prev[lb];\n}\n\n/**\n * Find the closest matches from a list of candidates.\n *\n * @param input - The user-provided (possibly invalid) value\n * @param candidates - Array of valid values to compare against\n * @param maxDistance - Maximum edit distance to consider (default: 3)\n * @param maxResults - Maximum number of suggestions to return (default: 3)\n * @returns Array of suggested values, sorted by similarity\n */\nexport function findClosestMatches(\n input: string,\n candidates: readonly string[],\n maxDistance = 3,\n maxResults = 3,\n): string[] {\n const normalized = input.toLowerCase().replace(/[-\\s]/g, '_');\n\n const scored = candidates\n .map((candidate) => ({\n value: candidate,\n distance: levenshteinDistance(normalized, candidate),\n }))\n .filter((s) => s.distance <= maxDistance && s.distance > 0)\n .sort((a, b) => a.distance - b.distance);\n\n return scored.slice(0, maxResults).map((s) => s.value);\n}\n\n/**\n * Well-known aliases that map common typos / alternative names to valid FieldTypes.\n */\nconst FIELD_TYPE_ALIASES: Record<string, string> = {\n // Common alternative names\n string: 'text',\n str: 'text',\n varchar: 'text',\n char: 'text',\n int: 'number',\n integer: 'number',\n float: 'number',\n double: 'number',\n decimal: 'number',\n numeric: 'number',\n bool: 'boolean',\n checkbox: 'boolean',\n check: 'boolean',\n date_time: 'datetime',\n timestamp: 'datetime',\n // Common typos\n text_area: 'textarea',\n textarea_: 'textarea',\n textfield: 'text',\n dropdown: 'select',\n picklist: 'select',\n enum: 'select',\n multi_select: 'multiselect',\n multiselect_: 'multiselect',\n reference: 'lookup',\n ref: 'lookup',\n foreign_key: 'lookup',\n fk: 'lookup',\n relation: 'lookup',\n master: 'master_detail',\n richtext_: 'richtext',\n rich_text: 'richtext',\n upload: 'file',\n attachment: 'file',\n photo: 'image',\n picture: 'image',\n img: 'image',\n percent_: 'percent',\n percentage: 'percent',\n money: 'currency',\n price: 'currency',\n auto_number: 'autonumber',\n auto_increment: 'autonumber',\n sequence: 'autonumber',\n markdown_: 'markdown',\n md: 'markdown',\n barcode: 'qrcode',\n tag: 'tags',\n star: 'rating',\n stars: 'rating',\n geo: 'location',\n gps: 'location',\n coordinates: 'location',\n embed: 'vector',\n embedding: 'vector',\n embeddings: 'vector',\n};\n\n/**\n * Suggest valid FieldType values for an invalid input.\n *\n * First checks known aliases, then falls back to fuzzy matching.\n *\n * @param input - Invalid field type string\n * @returns Array of suggested valid FieldType values\n *\n * @example\n * ```ts\n * suggestFieldType('text_area'); // ['textarea']\n * suggestFieldType('String'); // ['text']\n * suggestFieldType('int'); // ['number']\n * suggestFieldType('dropdown'); // ['select']\n * ```\n */\nexport function suggestFieldType(input: string): string[] {\n const normalized = input.toLowerCase().replace(/[-\\s]/g, '_');\n\n // Check alias map first\n const alias = FIELD_TYPE_ALIASES[normalized];\n if (alias) {\n return [alias];\n }\n\n // Fall back to fuzzy matching\n return findClosestMatches(normalized, FieldType.options);\n}\n\n/**\n * Format a \"Did you mean?\" message for display.\n *\n * @param suggestions - Array of suggested values\n * @returns Formatted string or empty string if no suggestions\n */\nexport function formatSuggestion(suggestions: string[]): string {\n if (suggestions.length === 0) return '';\n if (suggestions.length === 1) return `Did you mean '${suggestions[0]}'?`;\n return `Did you mean one of: ${suggestions.map((s) => `'${s}'`).join(', ')}?`;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { suggestFieldType, formatSuggestion, findClosestMatches } from './suggestions.zod';\nimport { FieldType } from '../data/field.zod';\n\n/**\n * Zod v4 raw issue type used by the error map.\n */\nexport type ObjectStackRawIssue = z.core.$ZodRawIssue;\n\n/**\n * ObjectStack Custom Zod Error Map\n *\n * Provides contextual, actionable error messages for ObjectStack schema validation.\n * Instead of generic Zod messages like \"Invalid option\", this error map returns\n * messages that explain the ObjectStack context and suggest fixes.\n *\n * In Zod v4, the error map is a function `(issue) => { message: string } | string | null`.\n * Pass it via the `error` option on `.safeParse()` / `.parse()`.\n *\n * @example\n * ```ts\n * import { objectStackErrorMap } from '@objectstack/spec';\n *\n * // Per-parse usage\n * SomeSchema.safeParse(data, { error: objectStackErrorMap });\n * ```\n */\nexport const objectStackErrorMap = (issue: ObjectStackRawIssue): { message: string } | null => {\n // --- Invalid value (enum) with suggestions ---\n if (issue.code === 'invalid_value') {\n const values = issue.values as unknown[];\n const input = issue.input;\n const received = String(input ?? '');\n const options = values.map(String);\n\n // Check if this looks like a FieldType enum\n const fieldTypeOptions = FieldType.options as readonly string[];\n const isFieldTypeEnum = options.length > 10 &&\n fieldTypeOptions.every((ft) => options.includes(ft));\n\n if (isFieldTypeEnum) {\n const suggestions = suggestFieldType(received);\n const suggestion = formatSuggestion(suggestions);\n const base = `Invalid field type '${received}'.`;\n return {\n message: suggestion ? `${base} ${suggestion}` : `${base} Valid types: ${options.slice(0, 10).join(', ')}...`,\n };\n }\n\n // Generic enum suggestion\n const suggestions = findClosestMatches(received, options);\n const suggestion = formatSuggestion(suggestions);\n const base = `Invalid value '${received}'.`;\n return {\n message: suggestion\n ? `${base} ${suggestion}`\n : `${base} Expected one of: ${options.join(', ')}.`,\n };\n }\n\n // --- String/array/number size validation ---\n if (issue.code === 'too_small') {\n const origin = issue.origin as string;\n const minimum = issue.minimum as number;\n if (origin === 'string') {\n return {\n message: `Must be at least ${minimum} character${minimum === 1 ? '' : 's'} long.`,\n };\n }\n }\n\n if (issue.code === 'too_big') {\n const origin = issue.origin as string;\n const maximum = issue.maximum as number;\n if (origin === 'string') {\n return {\n message: `Must be at most ${maximum} character${maximum === 1 ? '' : 's'} long.`,\n };\n }\n }\n\n // --- String format validation (regex) ---\n if (issue.code === 'invalid_format') {\n const format = issue.format as string;\n const input = issue.input as string | undefined;\n if (format === 'regex' && input) {\n const pathArr = issue.path as (string | number)[] | undefined;\n const pathStr = pathArr?.join('.') ?? '';\n if (pathStr.endsWith('name') || pathStr === 'name') {\n return {\n message: `Invalid identifier '${input}'. Must be lowercase snake_case (e.g., 'my_object', 'task_name'). No uppercase, spaces, or hyphens allowed.`,\n };\n }\n }\n }\n\n // --- Missing required / type mismatch ---\n if (issue.code === 'invalid_type') {\n const expected = issue.expected as string;\n const input = issue.input;\n if (input === undefined) {\n const pathArr = issue.path as (string | number)[] | undefined;\n const field = pathArr?.[pathArr.length - 1] ?? '';\n return {\n message: `Required property '${field}' is missing.`,\n };\n }\n const receivedType = input === null ? 'null' : typeof input;\n return {\n message: `Expected ${expected} but received ${receivedType}.`,\n };\n }\n\n // --- Unrecognized keys ---\n if (issue.code === 'unrecognized_keys') {\n const keys = issue.keys as string[];\n const keyStr = keys.join(', ');\n return {\n message: `Unrecognized key${keys.length > 1 ? 's' : ''}: ${keyStr}. Check for typos in property names.`,\n };\n }\n\n // Fallback to Zod default\n return null;\n};\n\n/**\n * Zod Issue interface (subset needed for formatting).\n */\ninterface ZodIssueMinimal {\n path: PropertyKey[];\n message: string;\n code?: string;\n}\n\n/**\n * Format a single Zod issue into a human-readable line.\n *\n * @param issue - A single Zod issue\n * @returns Formatted string with path and message\n */\nexport function formatZodIssue(issue: ZodIssueMinimal): string {\n const path = issue.path.length > 0\n ? issue.path.join('.')\n : '(root)';\n return ` ✗ ${path}: ${issue.message}`;\n}\n\n/**\n * Pretty-print Zod validation errors for CLI output.\n *\n * Formats a ZodError into a readable block suitable for terminal display.\n * Groups errors by path depth and includes a summary count.\n *\n * @param error - A ZodError to format\n * @param label - Optional label for the error block (e.g., 'Stack validation failed')\n * @returns Formatted multi-line string\n *\n * @example\n * ```ts\n * import { formatZodError, ObjectStackDefinitionSchema } from '@objectstack/spec';\n *\n * const result = ObjectStackDefinitionSchema.safeParse(data);\n * if (!result.success) {\n * console.error(formatZodError(result.error, 'Stack validation failed'));\n * }\n * ```\n *\n * Output:\n * ```\n * Stack validation failed (3 issues):\n *\n * ✗ manifest.name: Required property 'name' is missing.\n * ✗ objects[0].fields.status.type: Invalid field type 'dropdown'. Did you mean 'select'?\n * ✗ views[0].object: Invalid identifier 'MyTasks'. Must be lowercase snake_case.\n * ```\n */\nexport function formatZodError(error: z.ZodError, label?: string): string {\n const count = error.issues.length;\n const header = label\n ? `${label} (${count} issue${count === 1 ? '' : 's'}):`\n : `Validation failed (${count} issue${count === 1 ? '' : 's'}):`;\n\n const lines = error.issues.map(formatZodIssue);\n\n return `${header}\\n\\n${lines.join('\\n')}`;\n}\n\n/**\n * Parse with the ObjectStack error map and return formatted errors.\n *\n * A convenience function that combines parsing with the custom error map\n * and pretty-print formatting. Returns a discriminated union result.\n *\n * @param schema - Any Zod schema to parse with\n * @param data - Data to validate\n * @param label - Optional label for error formatting\n * @returns Object with `success`, `data`, and optional `formatted` error string\n *\n * @example\n * ```ts\n * const result = safeParsePretty(ObjectStackDefinitionSchema, config, 'objectstack.config.ts');\n * if (!result.success) {\n * console.error(result.formatted);\n * process.exit(1);\n * }\n * ```\n */\nexport function safeParsePretty<T extends z.ZodTypeAny>(\n schema: T,\n data: unknown,\n label?: string,\n): { success: true; data: z.infer<T> } | { success: false; error: z.ZodError; formatted: string } {\n const result = schema.safeParse(data, { error: objectStackErrorMap });\n if (result.success) {\n return { success: true, data: result.data };\n }\n return {\n success: false,\n error: result.error,\n formatted: formatZodError(result.error, label),\n };\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * Metadata Collection Utilities\n * \n * Provides support for defining metadata collections in either array or map (Record) format.\n * Map format automatically injects the key as the `name` field, following the same pattern\n * used by `fields` in ObjectSchema (which already uses `z.record(key, FieldSchema)`).\n * \n * ## Usage\n * \n * Both formats are accepted and normalized to arrays:\n * \n * ```ts\n * // Array format (traditional)\n * defineStack({\n * objects: [\n * { name: 'account', fields: { ... } },\n * { name: 'contact', fields: { ... } },\n * ]\n * });\n * \n * // Map format (key becomes `name`)\n * defineStack({\n * objects: {\n * account: { fields: { ... } },\n * contact: { fields: { ... } },\n * }\n * });\n * ```\n * \n * @module\n */\n\n/**\n * Input type for metadata collections: accepts either an array or a named map.\n * When using map format, the key is injected as the `name` field of each item.\n * \n * @typeParam T - The metadata item type (e.g., `ObjectSchema`, `AppSchema`)\n * \n * @example\n * ```ts\n * // Array format — name is required in each item\n * const apps: MetadataCollectionInput<App> = [\n * { name: 'sales', label: 'Sales' },\n * { name: 'service', label: 'Service' },\n * ];\n * \n * // Map format — key serves as name, so name is optional in value\n * const apps: MetadataCollectionInput<App> = {\n * sales: { label: 'Sales' },\n * service: { label: 'Service' },\n * };\n * ```\n */\nexport type MetadataCollectionInput<T> =\n | T[]\n | Record<string, Omit<T, 'name'> & { name?: string }>;\n\n/**\n * List of metadata fields in ObjectStackDefinitionSchema that support map format.\n * These are fields where each item has a `name` field that can be inferred from the map key.\n * \n * Excluded fields:\n * - `views` — ViewSchema has no `name` field (it's a container with `list`/`form`)\n * - `objectExtensions` — uses `extend` as its identifier, not `name`\n * - `data` — DatasetSchema uses `object` as its identifier\n * - `translations` — TranslationBundleSchema is a record, not a named object\n * - `plugins` / `devPlugins` — not named metadata schemas\n */\nexport const MAP_SUPPORTED_FIELDS = [\n 'objects',\n 'apps',\n 'pages',\n 'dashboards',\n 'reports',\n 'actions',\n 'themes',\n 'workflows',\n 'approvals',\n 'flows',\n 'roles',\n 'permissions',\n 'sharingRules',\n 'policies',\n 'apis',\n 'webhooks',\n 'agents',\n 'ragPipelines',\n 'hooks',\n 'mappings',\n 'analyticsCubes',\n 'connectors',\n 'datasources',\n] as const;\n\nexport type MapSupportedField = (typeof MAP_SUPPORTED_FIELDS)[number];\n\n/**\n * Mapping from plural manifest field names to singular metadata type names.\n *\n * Manifest / `defineStack()` uses plural property names because they are\n * collection fields (e.g. `objects: [...]`, `apps: [...]`). The metadata\n * registry and `MetadataTypeSchema` use singular names as the canonical form.\n *\n * Use this mapping at the boundary where manifest fields are fed into the\n * metadata registry to ensure a consistent singular naming convention.\n */\nexport const PLURAL_TO_SINGULAR: Record<string, string> = {\n objects: 'object',\n apps: 'app',\n pages: 'page',\n dashboards: 'dashboard',\n reports: 'report',\n actions: 'action',\n themes: 'theme',\n workflows: 'workflow',\n approvals: 'approval',\n flows: 'flow',\n roles: 'role',\n permissions: 'permission',\n profiles: 'profile',\n sharingRules: 'sharingRule',\n policies: 'policy',\n apis: 'api',\n webhooks: 'webhook',\n agents: 'agent',\n ragPipelines: 'ragPipeline',\n hooks: 'hook',\n mappings: 'mapping',\n analyticsCubes: 'analyticsCube',\n connectors: 'connector',\n datasources: 'datasource',\n views: 'view',\n};\n\n/** Reverse mapping: singular metadata type → plural manifest field name. */\nexport const SINGULAR_TO_PLURAL: Record<string, string> = Object.fromEntries(\n Object.entries(PLURAL_TO_SINGULAR).map(([plural, singular]) => [singular, plural]),\n);\n\n/** Convert a plural manifest field name to its singular metadata type name. Returns the input unchanged if no mapping exists. */\nexport function pluralToSingular(key: string): string {\n return PLURAL_TO_SINGULAR[key] ?? key;\n}\n\n/** Convert a singular metadata type name to its plural manifest field name. Returns the input unchanged if no mapping exists. */\nexport function singularToPlural(key: string): string {\n return SINGULAR_TO_PLURAL[key] ?? key;\n}\n\n\n/**\n * Normalize a single metadata collection value from map format to array format.\n * If the input is already an array (or nullish), it is returned unchanged.\n * If the input is a plain object (map), it is converted to an array where\n * each key is injected as the `name` field of the corresponding item.\n * \n * **Precedence:** If an item already has a `name` property, it is preserved\n * (the map key is only used as a fallback).\n * \n * @param value - The raw input value (array, map, or nullish)\n * @param keyField - The field name to inject the key into (default: `'name'`)\n * @returns The normalized array, or the original value if already an array/nullish\n * \n * @example\n * ```ts\n * // Map input\n * normalizeMetadataCollection({\n * account: { fields: { name: { type: 'text' } } },\n * contact: { fields: { email: { type: 'email' } } },\n * });\n * // → [\n * // { name: 'account', fields: { name: { type: 'text' } } },\n * // { name: 'contact', fields: { email: { type: 'email' } } },\n * // ]\n * \n * // Array input (pass-through)\n * normalizeMetadataCollection([{ name: 'account', fields: {} }]);\n * // → [{ name: 'account', fields: {} }]\n * ```\n */\nexport function normalizeMetadataCollection(value: unknown, keyField = 'name'): unknown {\n // Nullish or already an array — pass through\n if (value == null || Array.isArray(value)) return value;\n\n // Plain object — treat as map and convert to array\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([key, item]) => {\n if (item && typeof item === 'object' && !Array.isArray(item)) {\n const obj = item as Record<string, unknown>;\n // Only inject key if the item doesn't already have the field set\n if (!(keyField in obj) || obj[keyField] === undefined) {\n return { ...obj, [keyField]: key };\n }\n return obj;\n }\n // Non-object values (shouldn't happen, but let Zod handle the error)\n return item;\n });\n }\n\n // Other types — return as-is and let Zod validation handle the error\n return value;\n}\n\n/**\n * Normalize all metadata collections in a stack definition input.\n * Converts any map-formatted collections to arrays with key→name injection.\n * \n * This function is applied to the raw input before Zod validation,\n * ensuring the canonical internal format is always arrays.\n * \n * @param input - The raw stack definition input\n * @returns A new object with all map collections normalized to arrays\n */\nexport function normalizeStackInput<T extends Record<string, unknown>>(input: T): T {\n const result = { ...input };\n for (const field of MAP_SUPPORTED_FIELDS) {\n if (field in result) {\n (result as Record<string, unknown>)[field] = normalizeMetadataCollection(result[field]);\n }\n }\n return result;\n}\n\n/**\n * Mapping of legacy / alternative field names to their canonical names\n * in `ObjectStackDefinitionSchema`.\n *\n * Plugins may use legacy names (e.g., `triggers` instead of `hooks`).\n * This map lets `normalizePluginMetadata()` rewrite them automatically.\n */\nexport const METADATA_ALIASES: Record<string, MapSupportedField> = {\n triggers: 'hooks',\n};\n\n/**\n * Normalize plugin metadata so it matches the canonical format expected by the runtime.\n *\n * This handles two issues that commonly arise when loading third-party plugin metadata:\n *\n * 1. **Map → Array conversion** — plugins often define metadata as maps\n * (e.g., `actions: { convert_lead: { ... } }`), but the runtime expects arrays.\n * Every key listed in {@link MAP_SUPPORTED_FIELDS} is normalized via\n * {@link normalizeMetadataCollection}.\n *\n * 2. **Field aliasing** — plugins may use legacy or alternative field names\n * (e.g., `triggers` instead of `hooks`). {@link METADATA_ALIASES} maps them\n * to their canonical counterparts.\n *\n * 3. **Recursive normalization** — if the plugin itself contains nested `plugins`,\n * each nested plugin is normalized recursively.\n *\n * @param metadata - Raw plugin metadata object\n * @returns A new object with all collections normalized to arrays, aliases resolved,\n * and nested plugins recursively normalized\n *\n * @example\n * ```ts\n * const raw = {\n * actions: { lead_convert: { type: 'custom', label: 'Convert' } },\n * triggers: { lead_scoring: { object: 'lead', event: 'afterInsert' } },\n * };\n * const normalized = normalizePluginMetadata(raw);\n * // normalized.actions → [{ name: 'lead_convert', type: 'custom', label: 'Convert' }]\n * // normalized.hooks → [{ name: 'lead_scoring', object: 'lead', event: 'afterInsert' }]\n * // normalized.triggers → removed (merged into hooks)\n * ```\n */\nexport function normalizePluginMetadata<T extends Record<string, unknown>>(metadata: T): T {\n const result = { ...metadata };\n\n // 1. Resolve aliases (e.g. triggers → hooks), merging with any existing canonical values\n for (const [alias, canonical] of Object.entries(METADATA_ALIASES)) {\n if (alias in result) {\n const aliasValue = normalizeMetadataCollection(result[alias]);\n const canonicalValue = normalizeMetadataCollection(result[canonical]);\n\n // Merge: canonical array wins; alias values are appended\n if (Array.isArray(aliasValue)) {\n (result as Record<string, unknown>)[canonical] = Array.isArray(canonicalValue)\n ? [...canonicalValue, ...aliasValue]\n : aliasValue;\n }\n\n delete (result as Record<string, unknown>)[alias];\n }\n }\n\n // 2. Normalize map-formatted collections → arrays\n for (const field of MAP_SUPPORTED_FIELDS) {\n if (field in result) {\n (result as Record<string, unknown>)[field] = normalizeMetadataCollection(result[field]);\n }\n }\n\n // 3. Recursively normalize nested plugins\n if (Array.isArray(result.plugins)) {\n (result as Record<string, unknown>).plugins = result.plugins.map((p: unknown) => {\n if (p && typeof p === 'object' && !Array.isArray(p)) {\n return normalizePluginMetadata(p as Record<string, unknown>);\n }\n return p;\n });\n }\n\n return result;\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from '../shared/expression.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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => BaseValidationSchema.extend({\n type: z.literal('script'),\n condition: ExpressionInputSchema.describe('Predicate (CEL). If TRUE, validation fails. e.g. P`record.amount < 0`'),\n}));\n\n/**\n * 2. Uniqueness Validation\n * specialized optimized check for unique constraints.\n */\nexport const UniquenessValidationSchema = lazySchema(() => BaseValidationSchema.extend({\n type: z.literal('unique'),\n fields: z.array(z.string()).describe('Fields that must be combined unique'),\n scope: ExpressionInputSchema.optional().describe('Predicate (CEL) limiting uniqueness scope. e.g. P`record.active == true`'),\n caseSensitive: z.boolean().default(true),\n}));\n\n/**\n * 3. State Machine Validation\n * State transition logic.\n */\nexport const StateMachineValidationSchema = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => BaseValidationSchema.extend({\n type: z.literal('cross_field'),\n condition: ExpressionInputSchema.describe('Predicate (CEL) comparing fields. e.g. P`record.end_date > record.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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => BaseValidationSchema.extend({\n type: z.literal('conditional'),\n when: ExpressionInputSchema.describe('Predicate (CEL). e.g. P`record.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 */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ActionRefSchema = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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';\n\n/**\n * I18n Object Schema\n * Structured internationalization label with translation key and parameters.\n * \n * @example\n * ```typescript\n * const label: I18nObject = {\n * key: 'views.task_list.label',\n * defaultValue: 'Task List',\n * params: { count: 5 },\n * };\n * ```\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const I18nObjectSchema = lazySchema(() => z.object({\n /** Translation key (e.g., \"views.task_list.label\", \"apps.crm.description\") */\n key: z.string().describe('Translation key (e.g., \"views.task_list.label\")'),\n\n /** Default value when translation is not available */\n defaultValue: z.string().optional().describe('Fallback value when translation key is not found'),\n\n /** Interpolation parameters for dynamic translations */\n params: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional().describe('Interpolation parameters (e.g., { count: 5 })'),\n}));\n\nexport type I18nObject = z.infer<typeof I18nObjectSchema>;\n\n/**\n * I18n Label Schema\n * \n * A plain string label for display purposes.\n * i18n translation keys are auto-generated by the framework at registration time\n * based on a standardized naming convention (e.g., `apps.<packageId>.<name>.label`).\n * Developers only need to provide the default-language string; translations are\n * managed through translation files, not inline i18n objects.\n * \n * @example\n * ```typescript\n * const label: I18nLabel = \"All Active\";\n * ```\n */\nexport const I18nLabelSchema = lazySchema(() => z.string().describe('Display label (plain string; i18n keys are auto-generated by the framework)'));\n\nexport type I18nLabel = z.infer<typeof I18nLabelSchema>;\n\n/**\n * ARIA Accessibility Properties Schema\n * \n * Common ARIA attributes for UI components to support screen readers\n * and assistive technologies.\n * \n * Aligned with WAI-ARIA 1.2 specification.\n * \n * @see https://www.w3.org/TR/wai-aria-1.2/\n * \n * @example\n * ```typescript\n * const aria: AriaProps = {\n * ariaLabel: 'Close dialog',\n * ariaDescribedBy: 'dialog-description',\n * role: 'dialog',\n * };\n * ```\n */\nexport const AriaPropsSchema = lazySchema(() => z.object({\n /** Accessible label for screen readers */\n ariaLabel: I18nLabelSchema.optional().describe('Accessible label for screen readers (WAI-ARIA aria-label)'),\n\n /** ID of element that describes this component */\n ariaDescribedBy: z.string().optional().describe('ID of element providing additional description (WAI-ARIA aria-describedby)'),\n\n /** WAI-ARIA role override */\n role: z.string().optional().describe('WAI-ARIA role attribute (e.g., \"dialog\", \"navigation\", \"alert\")'),\n}).describe('ARIA accessibility attributes'));\n\nexport type AriaProps = z.infer<typeof AriaPropsSchema>;\n\n/**\n * Plural Rule Schema\n *\n * Defines plural forms for a translation key, following ICU MessageFormat / i18next conventions.\n * Supports zero, one, two, few, many, other forms per CLDR plural rules.\n *\n * @see https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules\n *\n * @example\n * ```typescript\n * const plural: PluralRule = {\n * key: 'items.count',\n * zero: 'No items',\n * one: '{count} item',\n * other: '{count} items',\n * };\n * ```\n */\nexport const PluralRuleSchema = lazySchema(() => z.object({\n /** Translation key for the plural form */\n key: z.string().describe('Translation key'),\n /** Form for zero quantity */\n zero: z.string().optional().describe('Zero form (e.g., \"No items\")'),\n /** Form for singular (1) */\n one: z.string().optional().describe('Singular form (e.g., \"{count} item\")'),\n /** Form for dual (2) — used in Arabic, Welsh, etc. */\n two: z.string().optional().describe('Dual form (e.g., \"{count} items\" for exactly 2)'),\n /** Form for few (2-4 in Slavic languages) */\n few: z.string().optional().describe('Few form (e.g., for 2-4 in some languages)'),\n /** Form for many (5+ in Slavic languages) */\n many: z.string().optional().describe('Many form (e.g., for 5+ in some languages)'),\n /** Default/fallback form */\n other: z.string().describe('Default plural form (e.g., \"{count} items\")'),\n}).describe('ICU plural rules for a translation key'));\n\nexport type PluralRule = z.infer<typeof PluralRuleSchema>;\n\n/**\n * Number Format Schema\n *\n * Defines number formatting rules for localization.\n *\n * @example\n * ```typescript\n * const format: NumberFormat = {\n * style: 'currency',\n * currency: 'USD',\n * minimumFractionDigits: 2,\n * };\n * ```\n */\nexport const NumberFormatSchema = lazySchema(() => z.object({\n style: z.enum(['decimal', 'currency', 'percent', 'unit']).default('decimal')\n .describe('Number formatting style'),\n currency: z.string().optional().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n unit: z.string().optional().describe('Unit for unit formatting (e.g., \"kilometer\", \"liter\")'),\n minimumFractionDigits: z.number().optional().describe('Minimum number of fraction digits'),\n maximumFractionDigits: z.number().optional().describe('Maximum number of fraction digits'),\n useGrouping: z.boolean().optional().describe('Whether to use grouping separators (e.g., 1,000)'),\n}).describe('Number formatting rules'));\n\nexport type NumberFormat = z.infer<typeof NumberFormatSchema>;\n\n/**\n * Date Format Schema\n *\n * Defines date/time formatting rules for localization.\n *\n * @example\n * ```typescript\n * const format: DateFormat = {\n * dateStyle: 'medium',\n * timeStyle: 'short',\n * timeZone: 'America/New_York',\n * };\n * ```\n */\nexport const DateFormatSchema = lazySchema(() => z.object({\n dateStyle: z.enum(['full', 'long', 'medium', 'short']).optional()\n .describe('Date display style'),\n timeStyle: z.enum(['full', 'long', 'medium', 'short']).optional()\n .describe('Time display style'),\n timeZone: z.string().optional().describe('IANA time zone (e.g., \"America/New_York\")'),\n hour12: z.boolean().optional().describe('Use 12-hour format'),\n}).describe('Date/time formatting rules'));\n\nexport type DateFormat = z.infer<typeof DateFormatSchema>;\n\n/**\n * Locale Configuration Schema\n *\n * Defines a complete locale configuration including language code,\n * fallback chain, and formatting preferences.\n *\n * @example\n * ```typescript\n * const locale: LocaleConfig = {\n * code: 'zh-CN',\n * fallbackChain: ['zh-TW', 'en'],\n * direction: 'ltr',\n * numberFormat: { style: 'decimal', useGrouping: true },\n * dateFormat: { dateStyle: 'medium', timeStyle: 'short' },\n * };\n * ```\n */\nexport const LocaleConfigSchema = lazySchema(() => z.object({\n /** BCP 47 language code (e.g., \"en-US\", \"zh-CN\", \"ar-SA\") */\n code: z.string().describe('BCP 47 language code (e.g., \"en-US\", \"zh-CN\")'),\n\n /** Ordered fallback chain for missing translations */\n fallbackChain: z.array(z.string()).optional()\n .describe('Fallback language codes in priority order (e.g., [\"zh-TW\", \"en\"])'),\n\n /** Text direction */\n direction: z.enum(['ltr', 'rtl']).default('ltr')\n .describe('Text direction: left-to-right or right-to-left'),\n\n /** Default number formatting */\n numberFormat: NumberFormatSchema.optional().describe('Default number formatting rules'),\n\n /** Default date formatting */\n dateFormat: DateFormatSchema.optional().describe('Default date/time formatting rules'),\n}).describe('Locale configuration'));\n\nexport type LocaleConfig = z.infer<typeof LocaleConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Capability tokens a script body may request.\n *\n * The runtime sandbox enforces these — if a body uses a `ctx` API that requires\n * a capability it did not declare, the call throws at invocation time.\n *\n * - `api.read` — `ctx.api.object(...).find / findOne / count / aggregate`\n * - `api.write` — `ctx.api.object(...).insert / update / delete`\n * - `crypto.uuid` — `ctx.crypto.randomUUID()`\n * - `crypto.hash` — `ctx.crypto.hash(algo, data)`\n * - `log` — `ctx.log.info / warn / error`\n *\n * `http.fetch` is intentionally absent — outbound calls go through Connector\n * recipes (separate spec) so they remain auditable and replayable.\n */\nexport const HookBodyCapability = z.enum([\n 'api.read',\n 'api.write',\n 'crypto.uuid',\n 'crypto.hash',\n 'log',\n]);\nexport type HookBodyCapability = z.infer<typeof HookBodyCapability>;\n\n/**\n * L1 — Pure expression body.\n *\n * Evaluated by the formula engine. No IO, no mutation. Used for predicates\n * (`condition`-style) and simple computed values.\n *\n * @example\n * ```json\n * { \"language\": \"expression\", \"source\": \"input.amount > 1000 && input.status == 'open'\" }\n * ```\n */\nexport const ExpressionBodySchema = z.object({\n language: z.literal('expression'),\n /** Formula-engine expression. Pure, side-effect-free. */\n source: z.string().min(1).describe('Formula expression source'),\n}).describe('L1 expression body — pure formula, no IO');\nexport type ExpressionBody = z.infer<typeof ExpressionBodySchema>;\n\n/**\n * L2 — Sandboxed JavaScript source.\n *\n * The `source` is the **function body only** (not a full module). The runtime\n * wraps it in `new AsyncFunction('ctx', source)` for hooks, or\n * `new AsyncFunction('input', 'ctx', source)` for actions, then executes\n * inside an isolated VM.\n *\n * Forbidden inside `source` (CLI build will reject):\n * - `import` / `require` / dynamic `import()`\n * - `process`, `globalThis`, `eval`, `new Function`\n * - any identifier resolved from a value-only top-level import\n *\n * @example\n * ```json\n * {\n * \"language\": \"js\",\n * \"source\": \"if (ctx.input.email) ctx.input.email = ctx.input.email.toLowerCase();\",\n * \"capabilities\": [],\n * \"timeoutMs\": 250\n * }\n * ```\n */\nexport const ScriptBodySchema = z.object({\n language: z.literal('js'),\n /** Function body source (NOT a full module — no top-level imports). */\n source: z.string().min(1).describe('Function body source'),\n /**\n * Capability tokens the body is allowed to use. Default: `[]`.\n * The sandbox throws if the body calls a `ctx` API not covered by these.\n */\n capabilities: z.array(HookBodyCapability).default([]).describe('Granted capability tokens'),\n /**\n * Per-invocation hard timeout in milliseconds.\n * Sandbox kills the script if it exceeds this; smaller of this and the\n * enclosing hook/action `timeout` wins.\n */\n timeoutMs: z.number().int().positive().max(30_000).optional().describe('Per-invocation timeout (ms)'),\n /**\n * Per-invocation memory cap in MB.\n * Subject to engine support (isolated-vm enforces, quickjs approximates).\n */\n memoryMb: z.number().int().positive().max(256).optional().describe('Per-invocation memory cap (MB)'),\n}).describe('L2 sandboxed JS body — runs inside an isolated VM with declared capabilities');\nexport type ScriptBody = z.infer<typeof ScriptBodySchema>;\n\n/**\n * Hook / Action body — discriminated by `language`.\n *\n * Two and only two forms are accepted:\n * - `expression` — L1, pure formula evaluated by the formula engine.\n * - `js` — L2, sandboxed JavaScript source string.\n *\n * The compiled-module path (`.mjs` envelope) is intentionally **not** part of\n * this union. All bodies are pure metadata and travel inside the project\n * artifact JSON — no separate runtime module is required.\n *\n * @see content/docs/concepts/north-star.mdx — \"Metadata-only runtime\"\n */\nexport const HookBodySchema = z.discriminatedUnion('language', [\n ExpressionBodySchema,\n ScriptBodySchema,\n]).describe('Hook/Action body — expression (L1) or sandboxed JS (L2)');\nexport type HookBody = z.infer<typeof HookBodySchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FieldType } from '../data/field.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { HookBodySchema } from '../data/hook-body.zod';\n\n/**\n * Action Parameter Schema\n *\n * Defines inputs required before executing an action.\n *\n * Two declaration modes:\n *\n * 1. **Field-backed** (preferred) — reference an existing object field; the\n * runtime resolves the field's label (i18n), type, validation rules,\n * options, placeholder, help text, and widget mapping from object\n * metadata. Cross-object references use `objectOverride`.\n *\n * ```ts\n * params: [\n * { field: 'email' }, // same object\n * { field: 'role', objectOverride: 'sys_member' }, // different object\n * ]\n * ```\n *\n * 2. **Inline** (legacy / bespoke) — declare `name`, `label`, `type` etc.\n * inline when no matching object field exists. Inline values may also be\n * used alongside `field` to override individual properties.\n *\n * `name` is required unless `field` is provided (in which case it defaults\n * to the field name and is used as the request-body key).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ActionParamSchema = lazySchema(() => z.object({\n /** Request-body key. Defaults to `field` when `field` is set. */\n name: z.string().optional(),\n /** Reference an existing object field for label/type/validation/options. */\n field: SnakeCaseIdentifierSchema.optional(),\n /** Object that owns the referenced field (defaults to the action's parent object). */\n objectOverride: SnakeCaseIdentifierSchema.optional(),\n /** Overrides the resolved field label (or sets it for inline params). */\n label: I18nLabelSchema.optional(),\n /** Overrides the resolved field type (or sets it for inline params). */\n type: FieldType.optional(),\n /**\n * Required override; when omitted defaults to `false`. Consumers that wish\n * to inherit the underlying field's `required` flag should leave this\n * undefined in the source schema and resolve at runtime (the dialog\n * renderers check truthiness, so `false === undefined` for UI purposes).\n */\n required: z.boolean().optional().default(false),\n /** Select/picklist options override. */\n options: z.array(z.object({ label: I18nLabelSchema, value: z.string() })).optional(),\n /** Placeholder override. */\n placeholder: z.string().optional(),\n /** Help/description override. */\n helpText: z.string().optional(),\n /** Default value for the dialog input. */\n defaultValue: z.unknown().optional(),\n /**\n * When true, the param's default value is pulled from the current row record\n * (key = the resolved field name) when the action runs from a list_item\n * context. Useful for edit dialogs that pre-fill from the selected row.\n */\n defaultFromRow: z.boolean().optional(),\n}).refine(\n (p) => Boolean(p.name) || Boolean(p.field),\n { message: 'ActionParam requires either \"name\" or \"field\"' },\n));\n\n/**\n * Action type enum values.\n */\nexport const ActionType = z.enum(['script', 'url', 'modal', 'flow', 'api', 'form']);\n\n/**\n * Action types that require a `target` field.\n * Derived from ActionType, excluding 'script' which allows inline handlers.\n * These types reference an external resource (URL, flow, modal, or API endpoint)\n * and cannot function without a target binding.\n */\nconst TARGET_REQUIRED_TYPES: ReadonlySet<string> = new Set(\n ActionType.options.filter((t) => t !== 'script'),\n);\n\n/**\n * Action Schema\n * \n * **NAMING CONVENTION:**\n * Action names are machine identifiers used in code and must be lowercase snake_case.\n * \n * **TARGET BINDING:**\n * The `target` field is the canonical way to bind an action to its handler.\n * - `type: 'script'` — `target` is recommended (references a script/function name).\n * - `type: 'url'` — `target` is **required** (the URL to navigate to).\n * - `type: 'flow'` — `target` is **required** (the flow name to invoke).\n * - `type: 'modal'` — `target` is **required** (the modal/page name to open).\n * - `type: 'api'` — `target` is **required** (the API endpoint to call).\n * - `type: 'form'` — `target` is **required** (the FormView name to open, routed to `/console/forms/:name`).\n * \n * The `execute` field is **deprecated** and will be removed in a future version.\n * If `execute` is provided without `target`, it is automatically migrated to `target`.\n * \n * @example Good action names\n * - 'on_close_deal'\n * - 'send_welcome_email'\n * - 'approve_contract'\n * - 'export_report'\n * \n * @example Bad action names (will be rejected)\n * - 'OnCloseDeal' (PascalCase)\n * - 'sendEmail' (camelCase)\n * - 'Send Email' (spaces)\n * \n * Note: The action name is the configuration ID. JavaScript function names can use camelCase,\n * but the metadata ID must be lowercase snake_case.\n */\nexport const ActionSchema = lazySchema(() => z.object({\n /** Machine name of the action */\n name: SnakeCaseIdentifierSchema.describe('Machine name (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Display label'),\n\n /** Target object this action belongs to (optional, snake_case) */\n objectName: z.string().regex(/^[a-z_][a-z0-9_]*$/).optional().describe('Target object this action belongs to. When set, the action is auto-merged into the object\\'s actions array by defineStack().'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** Where does this action appear? */\n locations: z.array(z.enum([\n 'list_toolbar', 'list_item', \n 'record_header', 'record_more', 'record_related',\n 'global_nav'\n ])).optional().describe('Locations where this action is visible'),\n\n /** \n * Visual Component Type\n * Defaults to 'button' or 'menu_item' based on location,\n * but can be overridden.\n */\n component: z.enum([\n 'action:button', // Standard Button\n 'action:icon', // Icon only\n 'action:menu', // Dropdown menu\n 'action:group' // Button Group\n ]).optional().describe('Visual component override'),\n \n /** What type of interaction? */\n type: ActionType.default('script').describe('Action functionality type'),\n \n /** \n * Payload / Target — the canonical binding for the action handler.\n * Required for url, flow, modal, and api types.\n * For `script` type: prefer `body` over `target`. `target` is kept only for\n * legacy bundle.functions[name] references.\n */\n target: z.string().optional().describe('URL, Script Name, Flow ID, or API Endpoint'),\n\n /**\n * Action Body (L1 expression or L2 sandboxed JS).\n *\n * Only meaningful when `type === 'script'`. When set, the runtime invokes\n * the body inside the sandbox as `(input, ctx) => Promise<output>` and\n * ignores `target`.\n *\n * - `{ language: 'expression', source: '...' }` — pure formula (L1).\n * - `{ language: 'js', source: '...', capabilities: [...] }` — sandboxed JS (L2).\n *\n * Compiled-module bodies are not supported. Outbound IO (HTTP, etc.) goes\n * through Connector recipes (separate spec).\n */\n body: HookBodySchema.optional().describe('Action body — expression (L1) or sandboxed JS (L2). Only used when type is `script`.'),\n\n /** \n * @deprecated Use `target` instead. This field is auto-migrated to `target` during parsing.\n */\n execute: z.string().optional().describe('@deprecated — Use target instead. Auto-migrated to target during parsing.'),\n \n /** User Input Requirements */\n params: z.array(ActionParamSchema).optional().describe('Input parameters required from user'),\n \n /** Visual Style */\n variant: z.enum(['primary', 'secondary', 'danger', 'ghost', 'link']).optional().describe('Button visual variant for styling (primary = highlighted, danger = destructive, ghost = transparent)'),\n\n /** UX Behavior */\n confirmText: I18nLabelSchema.optional().describe('Confirmation message before execution'),\n successMessage: I18nLabelSchema.optional().describe('Success message to show after execution'),\n refreshAfter: z.boolean().default(false).describe('Refresh view after execution'),\n \n /** Access */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n disabled: z.union([z.boolean(), ExpressionInputSchema]).optional().describe('Boolean or predicate (CEL) — action is disabled when TRUE.'),\n\n /** Keyboard Shortcut */\n shortcut: z.string().optional().describe('Keyboard shortcut to trigger this action (e.g., \"Ctrl+S\")'),\n\n /** Bulk Operations */\n bulkEnabled: z.boolean().optional().describe('Whether this action can be applied to multiple selected records'),\n\n /**\n * Row-context: when the action runs from a list_item location, this body key\n * receives the row's id (or the field named by `recordIdField`). Defaults to\n * `id` when omitted but `recordIdField` is set; otherwise no injection.\n */\n recordIdParam: z.string().optional().describe('Body key to inject the row id into when running from a list_item context.'),\n /**\n * Row field whose value seeds `recordIdParam`. Defaults to `'id'` when\n * `recordIdParam` is set. Use this when the body key expects a non-id value\n * (e.g. `token` for `revoke-session`).\n */\n recordIdField: z.string().optional().describe('Row field whose value seeds recordIdParam. Defaults to \"id\".'),\n /**\n * Request-body shape. `'flat'` (default) sends collected params at the top\n * level. `{ wrap: 'data' }` nests the user-collected params under that key\n * (used by better-auth `organization/update`), while `recordIdParam` and\n * other top-level keys stay flat.\n */\n bodyShape: z.union([\n z.literal('flat'),\n z.object({ wrap: z.string() }),\n ]).optional().describe('Body wrapping: flat (default) or { wrap: key } to nest user-collected params under a key.'),\n /**\n * HTTP method to use when `type: 'api'`. Defaults to `POST`. Use `PATCH` to\n * call data-API update endpoints (e.g. `/api/v1/sys_api_key/{id}` with\n * `bodyExtra: { revoked: true }`).\n */\n method: z.enum(['POST', 'PATCH', 'PUT', 'DELETE']).optional().describe('HTTP method for type:\"api\" actions. Defaults to POST.'),\n /**\n * Static body fragment merged into the outgoing request body for `type:'api'`\n * actions. Useful for constants the user shouldn't (or can't) edit, e.g.\n * `bodyExtra: { resend: true }` on a resend-invitation action that reuses\n * better-auth's `invite-member` endpoint. Applied after user-collected\n * params and `recordIdParam` so constants always win.\n */\n bodyExtra: z.record(z.string(), z.unknown()).optional().describe('Constant body fields merged into the API request (applied last; overrides user params).'),\n /**\n * Semantic mode hint — UI / runtime can use this to pick confirm copy,\n * default variants, success messaging. Pure metadata; no runtime branching.\n */\n mode: z.enum(['create', 'edit', 'delete', 'custom']).optional().describe('Semantic mode of the action.'),\n\n /** Execution */\n timeout: z.number().optional().describe('Maximum execution time in milliseconds for the action'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}).transform((data) => {\n // Auto-migrate deprecated `execute` → `target` for backward compatibility\n if (data.execute && !data.target) {\n return { ...data, target: data.execute };\n }\n return data;\n}).refine((data) => {\n // Require `target` for types that reference an external resource\n if (TARGET_REQUIRED_TYPES.has(data.type) && !data.target) {\n return false;\n }\n return true;\n}, {\n message: \"Action 'target' is required when type is 'url', 'flow', 'modal', 'api', or 'form'.\",\n path: ['target'],\n}));\n\nexport type Action = z.infer<typeof ActionSchema>;\nexport type ActionParam = z.infer<typeof ActionParamSchema>;\nexport type ActionInput = z.input<typeof ActionSchema>;\n\n/**\n * Action Factory Helper\n */\nexport const Action = {\n create: (config: z.input<typeof ActionSchema>): Action => ActionSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\n/**\n * @module ui/sharing\n *\n * Sharing & Embedding Protocol\n *\n * Defines schemas for public link sharing, embed configuration,\n * domain restrictions, and password protection for apps, pages, and forms.\n */\n\nimport { z } from 'zod';\n\n/**\n * Sharing Config Schema\n * Configuration for public sharing of an app, page, or form.\n * Supports public links, password protection, domain restrictions, and expiration.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SharingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable public sharing'),\n publicLink: z.string().optional().describe('Generated public share URL'),\n password: z.string().optional().describe('Password required to access shared link'),\n allowedDomains: z.array(z.string()).optional()\n .describe('Restrict access to specific email domains (e.g. [\"example.com\"])'),\n expiresAt: z.string().optional()\n .describe('Expiration date/time in ISO 8601 format'),\n allowAnonymous: z.boolean().optional().default(false)\n .describe('Allow access without authentication'),\n}));\n\n/**\n * Embed Config Schema\n * Configuration for iframe embedding of an app, page, or form.\n * Supports origin restrictions, display options, and responsive sizing.\n */\nexport const EmbedConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable iframe embedding'),\n allowedOrigins: z.array(z.string()).optional()\n .describe('Allowed iframe parent origins (e.g. [\"https://example.com\"])'),\n width: z.string().optional().default('100%').describe('Embed width (CSS value)'),\n height: z.string().optional().default('600px').describe('Embed height (CSS value)'),\n showHeader: z.boolean().optional().default(true).describe('Show interface header in embed'),\n showNavigation: z.boolean().optional().default(false).describe('Show navigation in embed'),\n responsive: z.boolean().optional().default(true).describe('Enable responsive resizing'),\n}));\n\n// Type Exports\nexport type SharingConfig = z.infer<typeof SharingConfigSchema>;\nexport type EmbedConfig = z.infer<typeof EmbedConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Breakpoint Name Enum\n * Matches the breakpoint names defined in theme.zod.ts BreakpointsSchema.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const BreakpointName = z.enum(['xs', 'sm', 'md', 'lg', 'xl', '2xl']);\n\nexport type BreakpointName = z.infer<typeof BreakpointName>;\n\n/**\n * Responsive Configuration Schema\n *\n * Provides responsive layout configuration for UI components.\n * Maps breakpoint names to layout behavior (columns, visibility, order).\n *\n * Aligned with theme.zod.ts BreakpointsSchema for a unified responsive system.\n *\n * @example\n * ```typescript\n * const config: ResponsiveConfig = {\n * columns: { xs: 12, sm: 6, lg: 4 },\n * hiddenOn: ['xs'],\n * order: { xs: 2, lg: 1 },\n * };\n * ```\n */\n/**\n * Breakpoint Column Map Schema\n * Maps breakpoint names to grid column counts (1-12).\n * All entries are optional — only specified breakpoints are configured.\n */\nexport const BreakpointColumnMapSchema = lazySchema(() => z.object({\n xs: z.number().min(1).max(12).optional(),\n sm: z.number().min(1).max(12).optional(),\n md: z.number().min(1).max(12).optional(),\n lg: z.number().min(1).max(12).optional(),\n xl: z.number().min(1).max(12).optional(),\n '2xl': z.number().min(1).max(12).optional(),\n}).describe('Grid columns per breakpoint (1-12)'));\n\n/**\n * Breakpoint Order Map Schema\n * Maps breakpoint names to display order numbers.\n * All entries are optional — only specified breakpoints are configured.\n */\nexport const BreakpointOrderMapSchema = lazySchema(() => z.object({\n xs: z.number().optional(),\n sm: z.number().optional(),\n md: z.number().optional(),\n lg: z.number().optional(),\n xl: z.number().optional(),\n '2xl': z.number().optional(),\n}).describe('Display order per breakpoint'));\n\nexport const ResponsiveConfigSchema = lazySchema(() => z.object({\n /** Minimum breakpoint for visibility */\n breakpoint: BreakpointName.optional()\n .describe('Minimum breakpoint for visibility'),\n\n /** Hide on specific breakpoints */\n hiddenOn: z.array(BreakpointName).optional()\n .describe('Hide on these breakpoints'),\n\n /** Grid columns per breakpoint (1-12 column grid) */\n columns: BreakpointColumnMapSchema.optional().describe('Grid columns per breakpoint'),\n\n /** Display order per breakpoint */\n order: BreakpointOrderMapSchema.optional().describe('Display order per breakpoint'),\n}).describe('Responsive layout configuration'));\n\nexport type ResponsiveConfig = z.infer<typeof ResponsiveConfigSchema>;\n\n/**\n * Performance Configuration Schema\n *\n * Defines performance optimization settings for UI components\n * such as lazy loading, virtual scrolling, and caching.\n *\n * @example\n * ```typescript\n * const perf: PerformanceConfig = {\n * lazyLoad: true,\n * virtualScroll: { enabled: true, itemHeight: 40, overscan: 5 },\n * cacheStrategy: 'stale-while-revalidate',\n * prefetch: true,\n * };\n * ```\n */\nexport const PerformanceConfigSchema = lazySchema(() => z.object({\n /** Enable lazy loading for this component */\n lazyLoad: z.boolean().optional()\n .describe('Enable lazy loading (defer rendering until visible)'),\n\n /** Virtual scrolling configuration for large datasets */\n virtualScroll: z.object({\n enabled: z.boolean().default(false).describe('Enable virtual scrolling'),\n itemHeight: z.number().optional().describe('Fixed item height in pixels (for estimation)'),\n overscan: z.number().optional().describe('Number of extra items to render outside viewport'),\n }).optional().describe('Virtual scrolling configuration'),\n\n /** Client-side caching strategy */\n cacheStrategy: z.enum([\n 'none',\n 'cache-first',\n 'network-first',\n 'stale-while-revalidate',\n ]).optional().describe('Client-side data caching strategy'),\n\n /** Enable data prefetching */\n prefetch: z.boolean().optional()\n .describe('Prefetch data before component is visible'),\n\n /** Maximum number of items to render before pagination */\n pageSize: z.number().optional()\n .describe('Number of items per page for pagination'),\n\n /** Debounce interval for user interactions (ms) */\n debounceMs: z.number().optional()\n .describe('Debounce interval for user interactions in milliseconds'),\n}).describe('Performance optimization configuration'));\n\nexport type PerformanceConfig = z.infer<typeof PerformanceConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Shared HTTP Schemas\n * \n * Common HTTP-related schemas used across API and System protocols.\n * These schemas ensure consistency across different parts of the stack.\n */\n\n// ==========================================\n// Basic HTTP Types\n// ==========================================\n\n/**\n * HTTP Method Enum\n */\nimport { lazySchema } from './lazy-schema';\nexport const HttpMethod = z.enum([\n 'GET', \n 'POST', \n 'PUT', \n 'DELETE', \n 'PATCH', \n 'HEAD', \n 'OPTIONS'\n]);\n\nexport type HttpMethod = z.infer<typeof HttpMethod>;\n\n/**\n * HTTP Method Schema (subset for UI/View data sources)\n * Common HTTP methods used in view data source configurations.\n * Migrated from ui/view.zod.ts to shared for reuse across modules.\n */\nexport const HttpMethodSchema = lazySchema(() => z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']));\n\nexport type HttpMethodType = z.infer<typeof HttpMethodSchema>;\n\n/**\n * HTTP Request Configuration Schema\n * Defines a complete HTTP request configuration used by API data providers.\n * Migrated from ui/view.zod.ts to shared for reuse across modules.\n */\nexport const HttpRequestSchema = lazySchema(() => z.object({\n url: z.string().describe('API endpoint URL'),\n method: HttpMethodSchema.optional().default('GET').describe('HTTP method'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),\n params: z.record(z.string(), z.unknown()).optional().describe('Query parameters'),\n body: z.unknown().optional().describe('Request body for POST/PUT/PATCH'),\n}));\n\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\n\n// ==========================================\n// CORS Configuration\n// ==========================================\n\n/**\n * CORS Configuration Schema\n * Cross-Origin Resource Sharing configuration\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"origins\": [\"http://localhost:3000\", \"https://app.example.com\"],\n * \"methods\": [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n * \"credentials\": true,\n * \"maxAge\": 86400\n * }\n */\nexport const CorsConfigSchema = lazySchema(() => z.object({\n /**\n * Enable CORS\n */\n enabled: z.boolean().default(true).describe('Enable CORS'),\n \n /**\n * Allowed origins (* for all)\n */\n origins: z.union([\n z.string(),\n z.array(z.string())\n ]).default('*').describe('Allowed origins (* for all)'),\n \n /**\n * Allowed HTTP methods\n */\n methods: z.array(HttpMethod).optional().describe('Allowed HTTP methods'),\n \n /**\n * Allow credentials (cookies, authorization headers)\n */\n credentials: z.boolean().default(false).describe('Allow credentials (cookies, authorization headers)'),\n \n /**\n * Preflight cache duration in seconds\n */\n maxAge: z.number().int().optional().describe('Preflight cache duration in seconds'),\n}));\n\nexport type CorsConfig = z.infer<typeof CorsConfigSchema>;\n\n// ==========================================\n// Rate Limiting\n// ==========================================\n\n/**\n * Rate Limit Configuration Schema\n * \n * Used by:\n * - api/endpoint.zod.ts (ApiEndpointSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"windowMs\": 60000,\n * \"maxRequests\": 100\n * }\n */\nexport const RateLimitConfigSchema = lazySchema(() => z.object({\n /**\n * Enable rate limiting\n */\n enabled: z.boolean().default(false).describe('Enable rate limiting'),\n \n /**\n * Time window in milliseconds\n */\n windowMs: z.number().int().default(60000).describe('Time window in milliseconds'),\n \n /**\n * Max requests per window\n */\n maxRequests: z.number().int().default(100).describe('Max requests per window'),\n}));\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\n\n// ==========================================\n// Static File Serving\n// ==========================================\n\n/**\n * Static Mount Configuration Schema\n * Configuration for serving static files\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"path\": \"/static\",\n * \"directory\": \"./public\",\n * \"cacheControl\": \"public, max-age=31536000\"\n * }\n */\nexport const StaticMountSchema = lazySchema(() => z.object({\n /**\n * URL path to serve from\n */\n path: z.string().describe('URL path to serve from'),\n \n /**\n * Physical directory to serve\n */\n directory: z.string().describe('Physical directory to serve'),\n \n /**\n * Cache-Control header value\n */\n cacheControl: z.string().optional().describe('Cache-Control header value'),\n}));\n\nexport type StaticMount = z.infer<typeof StaticMountSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { SharingConfigSchema } from './sharing.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * HTTP Method Enum & HTTP Request Schema\n * Migrated to shared/http.zod.ts. Re-exported here for backward compatibility.\n */\nimport { HttpMethodSchema, HttpRequestSchema } from '../shared/http.zod';\nimport { lazySchema } from '../shared/lazy-schema';\nexport { HttpMethodSchema, HttpRequestSchema };\n\n/**\n * View Data Source Configuration\n * Supports three modes:\n * 1. 'object': Standard Protocol - Auto-connects to ObjectStack Metadata and Data APIs\n * 2. 'api': Custom API - Explicitly provided API URLs\n * 3. 'value': Static Data - Hardcoded data array\n */\nexport const ViewDataSchema = lazySchema(() => z.discriminatedUnion('provider', [\n z.object({\n provider: z.literal('object'),\n object: z.string().describe('Target object name'),\n }),\n z.object({\n provider: z.literal('api'),\n read: HttpRequestSchema.optional().describe('Configuration for fetching data'),\n write: HttpRequestSchema.optional().describe('Configuration for submitting data (for forms/editable tables)'),\n }),\n z.object({\n provider: z.literal('value'),\n items: z.array(z.unknown()).describe('Static data array'),\n }),\n]));\n\n/**\n * View Filter Rule Schema\n * Standardized filter condition used in list views, tabs, and page-level filters.\n * Uses a declarative array-of-objects format: [{ field, operator, value }].\n *\n * @example\n * ```ts\n * filter: [\n * { field: 'status', operator: 'equals', value: 'active' },\n * { field: 'close_date', operator: 'this_quarter' },\n * ]\n * ```\n */\nexport const ViewFilterRuleSchema = lazySchema(() => z.object({\n /** Field name to filter on */\n field: z.string().describe('Field name to filter on'),\n /** Filter operator */\n operator: z.string().describe('Filter operator (e.g. equals, not_equals, contains, this_quarter)'),\n /** Filter value (optional for unary operators like is_null, this_quarter) */\n value: z.union([z.string(), z.number(), z.boolean(), z.null(), z.array(z.union([z.string(), z.number()]))])\n .optional().describe('Filter value'),\n}).describe('View filter rule'));\n\nexport type ViewFilterRule = z.infer<typeof ViewFilterRuleSchema>;\n\n/**\n * Column Summary Function Schema\n * Aggregation function for column footer (Airtable-style column summaries)\n */\nexport const ColumnSummarySchema = lazySchema(() => z.enum([\n 'none',\n 'count',\n 'count_empty',\n 'count_filled',\n 'count_unique',\n 'percent_empty',\n 'percent_filled',\n 'sum',\n 'avg',\n 'min',\n 'max',\n]).describe('Aggregation function for column footer summary'));\n\n/**\n * List Column Configuration Schema\n * Detailed configuration for individual list view columns\n */\nexport const ListColumnSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label override'),\n width: z.number().positive().optional().describe('Column width in pixels'),\n align: z.enum(['left', 'center', 'right']).optional().describe('Text alignment'),\n hidden: z.boolean().optional().describe('Hide column by default'),\n sortable: z.boolean().optional().describe('Allow sorting by this column'),\n resizable: z.boolean().optional().describe('Allow resizing this column'),\n wrap: z.boolean().optional().describe('Allow text wrapping'),\n type: z.string().optional().describe('Renderer type override (e.g., \"currency\", \"date\")'),\n\n /** Pinning (Airtable-style frozen columns) */\n pinned: z.enum(['left', 'right']).optional().describe('Pin/freeze column to left or right side'),\n\n /** Column Footer Summary (Airtable-style aggregation) */\n summary: ColumnSummarySchema.optional().describe('Footer aggregation function for this column'),\n\n /** Interaction */\n link: z.boolean().optional().describe('Functions as the primary navigation link (triggers View navigation)'),\n action: z.string().optional().describe('Registered Action ID to execute when clicked'),\n}));\n\n/**\n * List View Selection Configuration\n */\nexport const SelectionConfigSchema = lazySchema(() => z.object({\n type: z.enum(['none', 'single', 'multiple']).default('none').describe('Selection mode'),\n}));\n\n/**\n * List View Pagination Configuration\n */\nexport const PaginationConfigSchema = lazySchema(() => z.object({\n pageSize: z.number().int().positive().default(25).describe('Number of records per page'),\n pageSizeOptions: z.array(z.number().int().positive()).optional().describe('Available page size options'),\n}));\n\n/**\n * Row Height / Density Schema (Airtable-style)\n * Controls the visual density of rows in a list view.\n */\nexport const RowHeightSchema = lazySchema(() => z.enum([\n 'compact', // Minimal padding, single line\n 'short', // Reduced padding\n 'medium', // Default padding\n 'tall', // Extra padding, multi-line preview\n 'extra_tall', // Maximum padding, rich content preview\n]).describe('Row height / density setting for list view'));\n\n/**\n * Grouping Field Configuration\n * Defines a single grouping level for record grouping.\n */\nexport const GroupingFieldSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to group by'),\n order: z.enum(['asc', 'desc']).default('asc').describe('Group sort order'),\n collapsed: z.boolean().default(false).describe('Collapse groups by default'),\n}));\n\n/**\n * Grouping Configuration Schema (Airtable-style)\n * Supports multi-level grouping for grid/gallery views.\n */\nexport const GroupingConfigSchema = lazySchema(() => z.object({\n fields: z.array(GroupingFieldSchema).min(1).describe('Fields to group by (supports up to 3 levels)'),\n}).describe('Record grouping configuration'));\n\n/**\n * Gallery View Configuration (Airtable-style)\n * Configures card layout for gallery/card views.\n */\nexport const GalleryConfigSchema = lazySchema(() => z.object({\n coverField: z.string().optional().describe('Attachment/image field to display as card cover'),\n coverFit: z.enum(['cover', 'contain']).default('cover').describe('Image fit mode for card cover'),\n cardSize: z.enum(['small', 'medium', 'large']).default('medium').describe('Card size in gallery view'),\n titleField: z.string().optional().describe('Field to display as card title'),\n visibleFields: z.array(z.string()).optional().describe('Fields to display on card body'),\n}).describe('Gallery/card view configuration'));\n\n/**\n * Timeline View Configuration (Airtable-style)\n * Configures timeline/chronological views.\n */\nexport const TimelineConfigSchema = lazySchema(() => z.object({\n startDateField: z.string().describe('Field for timeline item start date'),\n endDateField: z.string().optional().describe('Field for timeline item end date'),\n titleField: z.string().describe('Field to display as timeline item title'),\n groupByField: z.string().optional().describe('Field to group timeline rows'),\n colorField: z.string().optional().describe('Field to determine item color'),\n scale: z.enum(['hour', 'day', 'week', 'month', 'quarter', 'year']).default('week').describe('Default timeline scale'),\n}).describe('Timeline view configuration'));\n\n/**\n * View Sharing Configuration (Airtable-style)\n * Defines who can see and modify a view.\n */\nexport const ViewSharingSchema = lazySchema(() => z.object({\n type: z.enum(['personal', 'collaborative']).default('collaborative').describe('View ownership type'),\n lockedBy: z.string().optional().describe('User who locked the view configuration'),\n}).describe('View sharing and access configuration'));\n\n/**\n * Row Color Configuration (Airtable-style)\n * Defines how rows are colored based on field values.\n */\nexport const RowColorConfigSchema = lazySchema(() => z.object({\n field: z.string().describe('Field to derive color from (typically a select/status field)'),\n colors: z.record(z.string(), z.string()).optional().describe('Map of field value to color (hex/token)'),\n}).describe('Row color configuration based on field values'));\n\n/**\n * Visualization Type Schema\n * Whitelist of visualization types the user can switch between.\n * Maps to Airtable's \"Visualizations\" setting in Appearance panel.\n */\nexport const VisualizationTypeSchema = lazySchema(() => z.enum([\n 'grid',\n 'kanban',\n 'gallery',\n 'calendar',\n 'timeline',\n 'gantt',\n 'map',\n]).describe('Visualization type that users can switch to'));\n\n/**\n * User Actions Configuration Schema (Airtable Interface parity)\n * Controls which interactive actions are available to users in the view toolbar.\n * Each boolean toggles the corresponding toolbar element on/off.\n *\n * @see Airtable Interface → \"User actions\" panel\n */\nexport const UserActionsConfigSchema = lazySchema(() => z.object({\n sort: z.boolean().default(true).describe('Allow users to sort records'),\n search: z.boolean().default(true).describe('Allow users to search records'),\n filter: z.boolean().default(true).describe('Allow users to filter records'),\n rowHeight: z.boolean().default(true).describe('Allow users to toggle row height/density'),\n addRecordForm: z.boolean().default(false).describe('Add records through a form instead of inline'),\n buttons: z.array(z.string()).optional().describe('Custom action button IDs to show in the toolbar'),\n}).describe('User action toggles for the view toolbar'));\n\n/**\n * Appearance Configuration Schema (Airtable Interface parity)\n * Controls visual presentation options for the view.\n *\n * @see Airtable Interface → \"Appearance\" panel\n */\nexport const AppearanceConfigSchema = lazySchema(() => z.object({\n showDescription: z.boolean().default(true).describe('Show the view description text'),\n allowedVisualizations: z.array(VisualizationTypeSchema).optional()\n .describe('Whitelist of visualization types users can switch between (e.g. [\"grid\", \"gallery\", \"kanban\"])'),\n}).describe('Appearance and visualization configuration'));\n\n/**\n * View Tab Schema (Airtable Interface parity)\n * Defines a tab in a multi-tab view interface.\n * Each tab references a named list view and can be ordered, pinned, or set as default.\n *\n * @see Airtable Interface → \"Tabs\" panel\n */\nexport const ViewTabSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Tab identifier (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label'),\n icon: z.string().optional().describe('Tab icon name'),\n view: z.string().optional().describe('Referenced list view name from listViews'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Tab-specific filter criteria'),\n order: z.number().int().min(0).optional().describe('Tab display order'),\n pinned: z.boolean().default(false).describe('Pin tab (cannot be removed by users)'),\n isDefault: z.boolean().default(false).describe('Set as the default active tab'),\n visible: z.boolean().default(true).describe('Tab visibility'),\n}).describe('Tab configuration for multi-tab view interface'));\n\n/**\n * Add Record Configuration Schema (Airtable Interface parity)\n * Configures the \"Add Record\" entry point for a list view.\n *\n * @see Airtable Interface → \"+ Add record\" button\n */\nexport const AddRecordConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(true).describe('Show the add record entry point'),\n position: z.enum(['top', 'bottom', 'both']).default('bottom').describe('Position of the add record button'),\n mode: z.enum(['inline', 'form', 'modal']).default('inline').describe('How to add a new record'),\n formView: z.string().optional().describe('Named form view to use when mode is \"form\" or \"modal\"'),\n}).describe('Add record entry point configuration'));\n\n/**\n * Kanban Settings\n */\nexport const KanbanConfigSchema = lazySchema(() => z.object({\n groupByField: z.string().describe('Field to group columns by (usually status/select)'),\n summarizeField: z.string().optional().describe('Field to sum at top of column (e.g. amount)'),\n columns: z.array(z.string()).describe('Fields to show on cards'),\n}));\n\n/**\n * List Chart View Configuration (Airtable-style)\n * Configures aggregate chart visualizations (bar/line/pie/area/scatter)\n * when used as a `type: 'chart'` ListView. Distinct from the full-featured\n * `ChartConfigSchema` in `chart.zod.ts` (which is for embedded reports).\n */\nexport const ListChartConfigSchema = lazySchema(() => z.object({\n chartType: z.enum(['bar', 'line', 'pie', 'area', 'scatter']).default('bar').describe('Chart visualisation type'),\n xAxisField: z.string().describe('Field used as the X axis / category dimension'),\n yAxisFields: z.array(z.string()).min(1).describe('Field(s) used as the Y axis / measures'),\n aggregation: z.enum(['sum', 'avg', 'count', 'min', 'max']).optional().describe('Aggregation function applied to Y axis fields'),\n groupByField: z.string().optional().describe('Optional field used to split / stack the chart'),\n}).describe('List chart view configuration'));\n\n/**\n * Calendar Settings\n */\nexport const CalendarConfigSchema = lazySchema(() => z.object({\n startDateField: z.string(),\n endDateField: z.string().optional(),\n titleField: z.string(),\n colorField: z.string().optional(),\n}));\n\n/**\n * Gantt Settings\n */\nexport const GanttConfigSchema = lazySchema(() => z.object({\n startDateField: z.string(),\n endDateField: z.string(),\n titleField: z.string(),\n progressField: z.string().optional(),\n dependenciesField: z.string().optional(),\n}));\n\n/**\n * Navigation Mode Enum\n * Defines how to navigate to the detail view from a list item.\n */\nexport const NavigationModeSchema = lazySchema(() => z.enum([\n 'page', // Navigate to a new route (default)\n 'drawer', // Open details in a side drawer/panel\n 'modal', // Open details in a modal dialog\n 'split', // Show details side-by-side with the list (master-detail)\n 'popover', // Show details in a popover (lightweight)\n 'new_window', // Open in new browser tab/window\n 'none' // No navigation (read-only list)\n]));\n\n/**\n * Navigation Configuration Schema\n */\nexport const NavigationConfigSchema = lazySchema(() => z.object({\n mode: NavigationModeSchema.default('page'),\n \n /** Target View Config */\n view: z.string().optional().describe('Name of the form view to use for details (e.g. \"summary_view\", \"edit_form\")'),\n \n /** Interaction Triggers */\n preventNavigation: z.boolean().default(false).describe('Disable standard navigation entirely'),\n openNewTab: z.boolean().default(false).describe('Force open in new tab (applies to page mode)'),\n \n /** Dimensions (for modal/drawer) */\n width: z.union([z.string(), z.number()]).optional().describe('Width of the drawer/modal (e.g. \"600px\", \"50%\")'),\n}));\n\n/**\n * List View Schema (Expanded)\n * Defines how a collection of records is displayed to the user.\n * \n * **NAMING CONVENTION:**\n * View names (when provided) are machine identifiers and must be lowercase snake_case.\n * \n * @example Standard Grid\n * {\n * name: \"all_active\",\n * label: \"All Active\",\n * type: \"grid\",\n * columns: [\"name\", \"status\", \"created_at\"],\n * filter: [[\"status\", \"=\", \"active\"]]\n * }\n * \n * @example Kanban Board\n * {\n * type: \"kanban\",\n * columns: [\"name\", \"amount\"],\n * kanban: {\n * groupByField: \"stage\",\n * summarizeField: \"amount\",\n * columns: [\"name\", \"close_date\"]\n * }\n * }\n */\nexport const ListViewSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.optional().describe('Internal view name (lowercase snake_case)'),\n label: I18nLabelSchema.optional(), // Display label override (supports i18n)\n type: z.enum([\n 'grid', // Standard Data Table\n 'kanban', // Board / Columns\n 'gallery', // Card Deck / Masonry\n 'calendar', // Monthly/Weekly/Daily\n 'timeline', // Chronological Stream (Feed)\n 'gantt', // Project Timeline\n 'map', // Geospatial\n 'chart' // Aggregate visualisation\n ]).default('grid'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n /** Shared Query Config */\n columns: z.union([\n z.array(z.string()), // Legacy: simple field names\n z.array(ListColumnSchema), // Enhanced: detailed column config\n ]).describe('Fields to display as columns'),\n filter: z.array(ViewFilterRuleSchema).optional().describe('Filter criteria (JSON Rules)'),\n sort: z.union([\n z.string(), //Legacy \"field desc\"\n z.array(z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc'])\n }))\n ]).optional(),\n \n /** Search & Filter */\n searchableFields: z.array(z.string()).optional().describe('Fields enabled for search'),\n filterableFields: z.array(z.string()).optional().describe('Fields enabled for end-user filtering in the top bar'),\n\n /** Grid Features */\n resizable: z.boolean().optional().describe('Enable column resizing'),\n striped: z.boolean().optional().describe('Striped row styling'),\n bordered: z.boolean().optional().describe('Show borders'),\n compactToolbar: z.boolean().optional().describe('Collapse Group/Color/Density/Hide-fields into a single View settings popover'),\n\n /** Selection */\n selection: SelectionConfigSchema.optional().describe('Row selection configuration'),\n\n /** Navigation / Interaction */\n navigation: NavigationConfigSchema.optional().describe('Configuration for item click navigation (page, drawer, modal, etc.)'),\n\n /** Pagination */\n pagination: PaginationConfigSchema.optional().describe('Pagination configuration'),\n\n /** Type Specific Config */\n kanban: KanbanConfigSchema.optional(),\n calendar: CalendarConfigSchema.optional(),\n gantt: GanttConfigSchema.optional(),\n gallery: GalleryConfigSchema.optional(),\n timeline: TimelineConfigSchema.optional(),\n chart: ListChartConfigSchema.optional(),\n\n /** View Metadata (Airtable-style view management) */\n description: I18nLabelSchema.optional().describe('View description for documentation/tooltips'),\n sharing: ViewSharingSchema.optional().describe('View sharing and access configuration'),\n\n /** Row Height / Density (Airtable-style) */\n rowHeight: RowHeightSchema.optional().describe('Row height / density setting'),\n\n /** Record Grouping (Airtable-style) */\n grouping: GroupingConfigSchema.optional().describe('Group records by one or more fields'),\n\n /** Row Color (Airtable-style) */\n rowColor: RowColorConfigSchema.optional().describe('Color rows based on field value'),\n\n /** Field Visibility & Ordering per View (Airtable-style) */\n hiddenFields: z.array(z.string()).optional().describe('Fields to hide in this specific view'),\n fieldOrder: z.array(z.string()).optional().describe('Explicit field display order for this view'),\n\n /** Row & Bulk Actions */\n rowActions: z.array(z.string()).optional().describe('Actions available for individual row items'),\n bulkActions: z.array(z.string()).optional().describe('Actions available when multiple rows are selected'),\n bulkActionDefs: z.array(z.record(z.string(), z.any())).optional().describe('Rich bulk action definitions (schema-driven, executed via BulkActionDialog)'),\n\n /** Performance */\n virtualScroll: z.boolean().optional().describe('Enable virtual scrolling for large datasets'),\n\n /** Conditional Formatting */\n conditionalFormatting: z.array(z.object({\n condition: ExpressionInputSchema.describe('Predicate (CEL) to evaluate.'),\n style: z.record(z.string(), z.string()).describe('CSS styles to apply when condition is true'),\n })).optional().describe('Conditional formatting rules for list rows'),\n\n /** Inline Edit */\n inlineEdit: z.boolean().optional().describe('Allow inline editing of records directly in the list view'),\n\n /** Export */\n exportOptions: z.array(z.enum(['csv', 'xlsx', 'pdf', 'json'])).optional().describe('Available export format options'),\n\n /** User Actions (Airtable Interface parity) */\n userActions: UserActionsConfigSchema.optional().describe('User action toggles for the view toolbar'),\n\n /** Appearance (Airtable Interface parity) */\n appearance: AppearanceConfigSchema.optional().describe('Appearance and visualization configuration'),\n\n /** Tabs (Airtable Interface parity) */\n tabs: z.array(ViewTabSchema).optional().describe('Tab definitions for multi-tab view interface'),\n\n /** Add Record (Airtable Interface parity) */\n addRecord: AddRecordConfigSchema.optional().describe('Add record entry point configuration'),\n\n /** Record Count Display (Airtable Interface parity) */\n showRecordCount: z.boolean().optional().describe('Show record count at the bottom of the list'),\n\n /** Advanced: Allow Printing (Airtable Interface parity) */\n allowPrinting: z.boolean().optional().describe('Allow users to print the view'),\n\n /** Empty State */\n emptyState: z.object({\n title: I18nLabelSchema.optional(),\n message: I18nLabelSchema.optional(),\n icon: z.string().optional(),\n }).optional().describe('Empty state configuration when no records found'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the list view'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n}));\n\n/**\n * Form Field Configuration Schema\n * Detailed configuration for individual form fields\n */\nexport const FormFieldSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: I18nLabelSchema.optional().describe('Display label override'),\n placeholder: I18nLabelSchema.optional().describe('Placeholder text'),\n helpText: I18nLabelSchema.optional().describe('Help/hint text'),\n readonly: z.boolean().optional().describe('Read-only override'),\n required: z.boolean().optional().describe('Required override'),\n hidden: z.boolean().optional().describe('Hidden override'),\n colSpan: z.number().int().min(1).max(4).optional().describe('Column span in grid layout (1-4)'),\n widget: z.string().optional().describe('Custom widget/component name'),\n dependsOn: z.string().optional().describe('Parent field name for cascading'),\n visibleOn: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n}));\n\n/**\n * Form Layout Section\n */\nexport const FormSectionSchema = lazySchema(() => z.object({\n label: I18nLabelSchema.optional(),\n collapsible: z.boolean().default(false),\n collapsed: z.boolean().default(false),\n columns: z.union([\n z.enum(['1', '2', '3', '4']),\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n ]).default(2).transform(val => (typeof val === 'string' ? parseInt(val) : val) as 1 | 2 | 3 | 4),\n fields: z.array(z.union([\n z.string(), // Legacy: simple field name\n FormFieldSchema, // Enhanced: detailed field config\n ])),\n}));\n\n/**\n * Form View Schema\n * Defines the layout for creating or editing a single record.\n * \n * @example Simple Sectioned Form\n * {\n * type: \"simple\",\n * sections: [\n * {\n * label: \"General Info\",\n * columns: 2,\n * fields: [\"name\", \"status\"]\n * },\n * {\n * label: \"Details\",\n * fields: [\"description\", { field: \"priority\", widget: \"rating\" }]\n * }\n * ]\n * }\n */\nexport const FormViewSchema = lazySchema(() => z.object({\n type: z.enum([\n 'simple', // Single column or sections\n 'tabbed', // Tabs\n 'wizard', // Step by step\n 'split', // Master-Detail split\n 'drawer', // Side panel\n 'modal' // Dialog\n ]).default('simple'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n sections: z.array(FormSectionSchema).optional(), // For simple layout\n groups: z.array(FormSectionSchema).optional(), // Legacy support -> alias to sections\n\n /** Default Sort for Related Lists (e.g., sort child records by date) */\n defaultSort: z.array(z.object({\n field: z.string().describe('Field name to sort by'),\n order: z.enum(['asc', 'desc']).default('desc').describe('Sort direction'),\n })).optional().describe('Default sort order for related list views within this form'),\n\n /** Public form sharing configuration */\n sharing: SharingConfigSchema.optional().describe('Public sharing configuration for this form'),\n\n /**\n * What happens after a successful submit.\n *\n * - `thank-you` (default) — show a confirmation panel\n * - `redirect` — send the browser to a URL\n * - `continue` — reset the form so another response can be entered\n * - `next-record` — advance to the next record (internal queues only)\n */\n submitBehavior: z.union([\n z.object({\n kind: z.literal('thank-you'),\n title: z.string().optional(),\n message: z.string().optional(),\n }),\n z.object({\n kind: z.literal('redirect'),\n url: z.string(),\n delayMs: z.number().int().min(0).optional(),\n }),\n z.object({ kind: z.literal('continue') }),\n z.object({ kind: z.literal('next-record') }),\n ]).optional().describe('Post-submit behavior'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the form view'),\n}));\n\n/**\n * Master View Schema\n * Can define multiple named views.\n */\n/**\n * View Container Schema\n * Aggregates all view definitions for a specific object or context.\n * \n * @example\n * {\n * list: { type: \"grid\", columns: [\"name\"] },\n * form: { type: \"simple\", fields: [\"name\"] },\n * listViews: {\n * \"all\": { label: \"All\", filter: [] },\n * \"my\": { label: \"Mine\", filter: [[\"owner\", \"=\", \"{user_id}\"]] }\n * }\n * }\n */\nexport const ViewSchema = lazySchema(() => z.object({\n list: ListViewSchema.optional(), // Default list view\n form: FormViewSchema.optional(), // Default form view\n listViews: z.record(z.string(), ListViewSchema).optional().describe('Additional named list views'),\n formViews: z.record(z.string(), FormViewSchema).optional().describe('Additional named form views'),\n}));\n\n/**\n * Type-safe factory for creating view definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const taskViews = defineView({\n * list: {\n * type: 'grid',\n * data: { provider: 'object', object: 'task' },\n * columns: ['subject', 'status', 'priority', 'due_date'],\n * },\n * form: {\n * type: 'simple',\n * sections: [{ label: 'Details', fields: [{ field: 'subject' }] }],\n * },\n * });\n * ```\n */\nexport function defineView(config: z.input<typeof ViewSchema>): View {\n return ViewSchema.parse(config);\n}\n\nexport type View = z.infer<typeof ViewSchema>;\nexport type ListView = z.infer<typeof ListViewSchema>;\nexport type FormView = z.infer<typeof FormViewSchema>;\nexport type FormSection = z.infer<typeof FormSectionSchema>;\nexport type ListColumn = z.infer<typeof ListColumnSchema>;\nexport type FormField = z.infer<typeof FormFieldSchema>;\nexport type SelectionConfig = z.infer<typeof SelectionConfigSchema>;\nexport type NavigationConfig = z.infer<typeof NavigationConfigSchema>;\nexport type PaginationConfig = z.infer<typeof PaginationConfigSchema>;\nexport type ViewData = z.infer<typeof ViewDataSchema>;\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\nexport type HttpMethod = z.infer<typeof HttpMethodSchema>;\nexport type ColumnSummary = z.infer<typeof ColumnSummarySchema>;\nexport type RowHeight = z.infer<typeof RowHeightSchema>;\nexport type GroupingConfig = z.infer<typeof GroupingConfigSchema>;\nexport type GalleryConfig = z.infer<typeof GalleryConfigSchema>;\nexport type TimelineConfig = z.infer<typeof TimelineConfigSchema>;\nexport type ListChartConfig = z.infer<typeof ListChartConfigSchema>;\nexport type ViewSharing = z.infer<typeof ViewSharingSchema>;\nexport type RowColorConfig = z.infer<typeof RowColorConfigSchema>;\nexport type VisualizationType = z.infer<typeof VisualizationTypeSchema>;\nexport type UserActionsConfig = z.infer<typeof UserActionsConfigSchema>;\nexport type AppearanceConfig = z.infer<typeof AppearanceConfigSchema>;\nexport type ViewTab = z.infer<typeof ViewTabSchema>;\nexport type AddRecordConfig = z.infer<typeof AddRecordConfigSchema>;\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';\nimport { ActionSchema } from '../ui/action.zod';\nimport { ListViewSchema } from '../ui/view.zod';\n\n/**\n * API Operations Enum\n */\nimport { ExpressionInputSchema , TemplateExpressionInputSchema } from '../shared/expression.zod';\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 * Object Field Group Schema — MVP (data-layer protocol)\n * \n * Declares the set of logical field groups for an object. A group bundles\n * related fields together for presentation in forms, detail pages, and\n * editors (e.g., \"Contact Info\", \"Billing\", \"System\").\n * \n * Design rules (MVP):\n * - Group **order** is the declaration order of this array — no `order` property.\n * - Field → group mapping is derived automatically from `Field.group`\n * matching `ObjectFieldGroup.key`; the **in-group display order** equals\n * the traversal order of `ObjectSchema.fields`.\n * - Fields whose `group` is unset (or references an undeclared key) are\n * considered ungrouped and must be rendered by consumers in a default\n * bucket after the declared groups, preserving their field declaration order.\n * - Extension packages and runtime code use `Field.group` to assign fields\n * to an existing group — no per-field order property is introduced at this\n * layer.\n * \n * Migration operations supported by this MVP:\n * - add / rename / delete / reorder groups (via the array)\n * - assign an existing field to a group (via `Field.group`)\n * \n * Deferred (not part of MVP):\n * - explicit per-field in-group ordering\n * - nested groups / sub-groups\n * - permission-scoped group visibility beyond `visibleOn`\n * \n * @example\n * ```ts\n * fieldGroups: [\n * { key: 'contact_info', label: 'Contact Information', icon: 'user' },\n * { key: 'billing', label: 'Billing', defaultExpanded: false },\n * { key: 'system', label: 'System', visibleOn: '$user.isAdmin' },\n * ]\n * ```\n */\nexport const ObjectFieldGroupSchema = lazySchema(() => z.object({\n /** Group key — referenced by `Field.group` to assign a field to this group. Must be snake_case. */\n key: z.string().regex(/^[a-z_][a-z0-9_]*$/, {\n message: 'Field group key must be lowercase snake_case (e.g., \"contact_info\", \"billing\", \"system\")',\n }).describe('Group machine key (snake_case). Referenced by Field.group.'),\n\n /** Human-readable label displayed as the group header. */\n label: z.string().describe('Group display label'),\n\n /** Optional Lucide/Material icon name for the group header. */\n icon: z.string().optional().describe('Icon name (Lucide/Material) for the group header'),\n\n /** Optional description / help text shown under the group header. */\n description: z.string().optional().describe('Optional description shown under the group header'),\n\n /** Whether the group is expanded by default. Defaults to `true`. */\n defaultExpanded: z.boolean().optional().default(true).describe('Whether the group is expanded by default'),\n\n /** Optional visibility expression — when false, the entire group is hidden (e.g., \"$user.isAdmin\", \"status == \\'closed\\'\"). */\n visibleOn: ExpressionInputSchema.optional().describe('Visibility predicate (CEL); group is hidden when FALSE.'),\n}));\n\nexport type ObjectFieldGroup = z.infer<typeof ObjectFieldGroupSchema>;\nexport type ObjectFieldGroupInput = z.input<typeof ObjectFieldGroupSchema>;\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 * Managed-by hint — declares which lifecycle bucket the object belongs\n * to so UI clients render the appropriate set of CRUD affordances and\n * the security layer can enforce matching defaults. Modelled after the\n * way Salesforce / ServiceNow / Workday segregate user-owned business\n * data from admin-authored configuration, system-driven runtime rows,\n * and append-only audit trails.\n *\n * - `platform` — **Default.** User-owned business data. Generic\n * New / Import / Edit / Delete affordances are all shown. Example:\n * the user's own `sys_attachment`, `sys_comment`, `sys_saved_report`.\n * - `config` — Admin-authored metadata / configuration. Generic\n * New / Edit / Delete shown (admins author via wizard or form), but\n * CSV Import is suppressed (config rows have nested JSON envelopes\n * that don't round-trip through a flat sheet; clients should offer a\n * purpose-built \"Import definition (JSON)\" action instead). Example:\n * `sys_approval_process`, `sys_sharing_rule`, `sys_role`,\n * `sys_permission_set`, `sys_view`, `sys_app`.\n * - `system` — Runtime rows whose lifecycle is owned by a\n * platform service (the approval engine, the sharing engine, the\n * invitation service, …). Generic CRUD is hidden — users interact\n * with these via *domain actions* invoked from the source record\n * (e.g. \"Submit for Approval\" on an Opportunity creates an\n * `sys_approval_request`; \"Recall\" on the request changes its\n * state). Example: `sys_approval_request`, `sys_record_share`,\n * `sys_notification`, `sys_invitation`,\n * `sys_user_permission_set` / `sys_role_permission_set`.\n * - `append-only` — Immutable audit log. No New / Import / Edit /\n * Delete; only View and Export. Example: `sys_approval_action`,\n * `sys_audit_log`, `sys_activity`, `sys_email`, `sys_presence`.\n * - `better-auth` — Identity tables owned by the better-auth driver\n * (sys_user, sys_session, sys_account, sys_member, sys_organization,\n * sys_api_key, sys_jwks, sys_verification, sys_two_factor,\n * sys_oauth_*, sys_device_code). Mutations must flow through the\n * better-auth API so password hashing, token signing, email\n * verification, and invitation flows fire correctly. Generic CRUD\n * suppressed; replaced by purpose-built actions\n * (Invite User, Reset Password, Revoke Session, Rotate Key, …).\n *\n * The flag is purely declarative on the schema. Enforcement happens in\n * two places:\n * 1. Default permission sets ({@link packages/platform-objects/src/security/default-permission-sets.ts})\n * deny direct CRUD for `system` / `append-only` / `better-auth`.\n * 2. UI clients honour {@link resolveCrudAffordances} to gate the\n * New / Import / Edit / Delete / Export buttons accordingly.\n *\n * Use {@link userActions} to override the default matrix for a single\n * field (e.g. an \"append-only\" table that should still allow Export).\n */\n managedBy: z.enum(['platform', 'config', 'system', 'append-only', 'better-auth']).optional().describe(\n 'Lifecycle bucket — platform (user CRUD) | config (admin authored) | system (engine-managed) | append-only (audit) | better-auth (identity). UI clients honour the resolved affordance matrix.',\n ),\n\n /**\n * Per-object override of the generic CRUD affordances that the UI\n * surfaces. Each flag overrides the default derived from\n * {@link managedBy} via {@link resolveCrudAffordances}. Useful for the\n * handful of objects whose lifecycle doesn't cleanly fit a single\n * bucket — e.g. an `append-only` table that should still expose CSV\n * Export, or a `config` table that admins legitimately want to bulk\n * import via CSV.\n *\n * Omitting the block (or leaving individual flags `undefined`) keeps\n * the {@link managedBy}-derived default.\n */\n userActions: z.object({\n create: z.boolean().optional().describe('Show generic \"New\" button.'),\n import: z.boolean().optional().describe('Show CSV import wizard entry.'),\n edit: z.boolean().optional().describe('Allow inline / form edit of existing rows.'),\n delete: z.boolean().optional().describe('Show row-level delete + bulk delete.'),\n exportCsv: z.boolean().optional().describe('Show CSV export entry.'),\n }).optional().describe('Per-object override of the resolved CRUD affordance matrix.'),\n\n /**\n * System-field auto-injection control.\n *\n * The `SchemaRegistry` augments every user object with a small set of\n * implicit system fields at registration time so authors don't have to\n * declare them per-object (Salesforce-style). Currently injected:\n *\n * - `organization_id` — `lookup → sys_organization`. Injected only when\n * the kernel runs in multi-tenant mode (`OS_MULTI_TENANT !== 'false'`).\n * Required for the default `tenant_isolation` RLS policy and the\n * SecurityPlugin's auto-fill on insert to take effect.\n *\n * Author-declared fields with the same name always win over injection\n * (no overwrite). Objects with `managedBy` set are skipped entirely —\n * better-auth/system/platform tables already declare what they need.\n *\n * Set `systemFields: false` to opt the object out completely. Pass an\n * options object to selectively disable individual injections (currently\n * only `tenant`, but reserved keys `owner`/`audit` are pre-defined for\n * future expansion).\n *\n * @default undefined (= injection enabled, gated by kernel mode)\n */\n systemFields: z\n .union([\n z.literal(false),\n z.object({\n tenant: z.boolean().optional().describe('Inject organization_id (multi-tenant only). Default true.'),\n owner: z.boolean().optional().describe('Reserved for future owner_id auto-injection.'),\n audit: z.boolean().optional().describe('Reserved for future created_by/updated_by auto-injection.'),\n }),\n ])\n .optional()\n .describe('Opt out of, or selectively disable, registry-level system-field auto-injection.'),\n\n /** \n * Storage & Virtualization \n */\n datasource: z.string().optional().default('default').describe('Target Datasource ID. \"default\" is the primary DB.'),\n\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 * Field Groups (MVP)\n * \n * Declares logical groups for presenting fields in forms and detail\n * pages. The **array order is the group display order**. Each field's\n * `Field.group` references an entry's `key` to assign it to a group;\n * within a group, fields are displayed in their `ObjectSchema.fields`\n * declaration order.\n * \n * See {@link ObjectFieldGroupSchema} for the full MVP contract and\n * deferred features.\n */\n fieldGroups: z.array(ObjectFieldGroupSchema).refine(\n (groups) => new Set(groups.map(g => g.key)).size === groups.length,\n { message: 'fieldGroups[].key must be unique within an object' },\n ).optional().describe('Ordered list of field groups (array order = display order). See ObjectFieldGroupSchema.'),\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: TemplateExpressionInputSchema.optional().describe('Title template — supports {{record.field}} interpolation. Overrides displayNameField.'),\n compactLayout: z.array(z.string()).optional().describe('Primary fields for hover/cards/lookups'),\n\n /**\n * Built-in List Views\n *\n * Curated, platform-shipped list views (grid / kanban / calendar / …)\n * keyed by view name. Rendered as segmented tabs in the console list page\n * **before** any user-saved `sys_view` rows. Use this for system objects\n * (audit, runtime, config) where the default \"All records\" grid lacks\n * business context — e.g. an approval-request list should ship with\n * \"My pending\", \"I submitted\", \"Completed\" tabs out of the box.\n *\n * Each value is a `ListViewSchema` (see `@objectstack/spec/ui`) so authors\n * get the full tab/filter/sort/grouping vocabulary.\n *\n * @example\n * ```ts\n * listViews: {\n * my_pending: {\n * type: 'grid',\n * label: 'My Pending',\n * filter: [{ field: 'pending_approvers', operator: 'contains', value: '{current_user_id}' }],\n * sort: [{ field: 'updated_at', order: 'desc' }],\n * },\n * }\n * ```\n */\n listViews: z.record(z.string(), ListViewSchema).optional().describe('Built-in named list views (segmented tabs) shipped with the object schema'),\n\n /**\n * Default FormView used when displaying a single record's detail page.\n *\n * Matches the named FormView under the same object's `ViewSchema.formViews`.\n * When unset, the runtime falls back to the unnamed `form` view, then to\n * an auto-generated layout. This is the Airtable-style \"Interface form\"\n * binding — every record-detail screen renders through a FormView, so the\n * same metadata drives both the public collection form and the operator's\n * edit panel.\n */\n defaultDetailForm: z.string().optional().describe('Name of the default FormView for record detail / edit screens'),\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 * Detail-page UI hints\n *\n * Per-object overrides for the synthesized record detail page (kind:'auto'\n * / slotted defaults). Each flag is consumed by the UI runtime\n * (`@object-ui/plugin-detail`'s `buildDefaultPageSchema`) when no explicit\n * `Page` covers this object. Authored full Pages should set these regions\n * directly instead.\n *\n * - `renderViaSchema=false` opts the object out of the schema-driven\n * rendering path entirely (legacy `RecordDetailView`).\n * - `hideReferenceRail=true` suppresses the right-hand reference-rail\n * (related-list summary cards) so the form gets full width — useful for\n * catalog/atomic objects (Product, Task) where lateral relationships\n * aren't the user's main job.\n * - `hideRelatedTab=true` suppresses the \"Related\" tab. By default the\n * synth removes the Related tab automatically when the rail is shown to\n * avoid duplication; set this flag to force hide/show regardless.\n */\n detail: z.object({\n renderViaSchema: z.boolean().optional().describe('Opt this object out of the schema-driven detail renderer'),\n hideReferenceRail: z.boolean().optional().describe('Suppress the right-hand reference-rail on the detail page'),\n hideRelatedTab: z.boolean().optional().describe('Suppress the Related tab on the detail page'),\n }).passthrough().optional().describe('Detail-page UI hints consumed by @object-ui/plugin-detail synth'),\n\n /**\n * Object Actions\n * \n * Actions associated with this object. Populated automatically by `defineStack()`\n * when top-level actions specify `objectName` matching this object.\n * Can also be defined directly on the object.\n * \n * Aligns with Salesforce/ServiceNow patterns where actions are part of the\n * object schema, so API responses (e.g., `/api/v1/meta/objects/:name`)\n * include the action list without requiring downstream merge.\n */\n actions: z.array(ActionSchema).optional().describe('Actions associated with this object (auto-populated from top-level actions via objectName)'),\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 = lazySchema(() => 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: <const T extends z.input<typeof ObjectSchemaBase>>(config: T): Omit<ServiceObject, 'fields'> & Pick<T, 'fields'> => {\n const withDefaults = {\n ...config,\n label: config.label ?? snakeCaseToLabel(config.name),\n };\n return ObjectSchemaBase.parse(withDefaults) as Omit<ServiceObject, 'fields'> & Pick<T, 'fields'>;\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 * Resolved CRUD affordance matrix for an object — what generic\n * lifecycle actions UI clients should expose in their toolbars.\n *\n * Use {@link resolveCrudAffordances} to compute this from a schema; the\n * `managedBy` flag drives the defaults, and the optional `userActions`\n * block per-flag-overrides them. UI clients (`ObjectView`,\n * `RecordDetailView`, `RecordFormPage`, …) gate their buttons on this\n * matrix in combination with the user's permissions.\n *\n * The presence of an affordance here means \"the *object* permits this\n * action conceptually\"; the user still needs the matching permission\n * grant to execute it.\n */\nexport interface CrudAffordances {\n /** Generic \"New\" button (single record creation form). */\n create: boolean;\n /** CSV bulk-import wizard. Disabled for config / system / append-only / better-auth by default. */\n import: boolean;\n /** Inline + form editing of existing rows. */\n edit: boolean;\n /** Row-level + bulk delete. */\n delete: boolean;\n /** CSV / clipboard export. Allowed even on append-only audit tables by default. */\n exportCsv: boolean;\n}\n\n/**\n * Default affordance matrix per {@link ObjectSchemaBase.managedBy} bucket.\n * Mirrors how Salesforce / ServiceNow / Workday / Notion expose CRUD on\n * different categories of system tables.\n *\n * platform — full CRUD (user-owned business data)\n * config — admin authored: New/Edit/Delete OK, no CSV import\n * (definitions have nested envelopes; admins should use\n * a purpose-built \"Import definition\" action instead)\n * system — engine-managed runtime rows: no generic CRUD; users\n * interact via domain actions on the source record\n * append-only — audit log: View + Export only\n * better-auth — identity tables owned by better-auth driver; CRUD\n * routed through purpose-built actions (Invite, Reset\n * PW, Revoke, …)\n */\nconst CRUD_AFFORDANCE_DEFAULTS: Record<NonNullable<ServiceObject['managedBy']> | 'platform', CrudAffordances> = {\n platform: { create: true, import: true, edit: true, delete: true, exportCsv: true },\n config: { create: true, import: false, edit: true, delete: true, exportCsv: true },\n system: { create: false, import: false, edit: false, delete: false, exportCsv: true },\n 'append-only': { create: false, import: false, edit: false, delete: false, exportCsv: true },\n 'better-auth': { create: false, import: false, edit: false, delete: false, exportCsv: true },\n};\n\n/**\n * Resolve the effective CRUD affordance matrix for an object schema.\n *\n * Starts from the bucket default keyed off `managedBy` (defaulting to\n * `'platform'` if unset) and applies the per-flag overrides in\n * `userActions`. Returns a fresh object so callers can mutate safely.\n *\n * @example\n * ```ts\n * const aff = resolveCrudAffordances(sysApprovalRequestSchema);\n * // → { create:false, import:false, edit:false, delete:false, exportCsv:true }\n * ```\n */\nexport function resolveCrudAffordances(\n obj: Pick<ServiceObject, 'managedBy' | 'userActions'> | { managedBy?: string; userActions?: ServiceObject['userActions'] },\n): CrudAffordances {\n const bucket = (obj?.managedBy ?? 'platform') as keyof typeof CRUD_AFFORDANCE_DEFAULTS;\n const base = CRUD_AFFORDANCE_DEFAULTS[bucket] ?? CRUD_AFFORDANCE_DEFAULTS.platform;\n const overrides = obj?.userActions ?? {};\n return {\n create: overrides.create ?? base.create,\n import: overrides.import ?? base.import,\n edit: overrides.edit ?? base.edit,\n delete: overrides.delete ?? base.delete,\n exportCsv: overrides.exportCsv ?? base.exportCsv,\n };\n}\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 = lazySchema(() => 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';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { SharingConfigSchema, EmbedConfigSchema } from './sharing.zod';\n\n/**\n * Base Navigation Item Schema\n * Shared properties for all navigation types.\n * \n * **NAMING CONVENTION:**\n * Navigation item IDs are used in URLs and configuration and must be lowercase snake_case.\n * \n * @example Good IDs\n * - 'menu_accounts'\n * - 'page_dashboard'\n * - 'nav_settings'\n * \n * @example Bad IDs (will be rejected)\n * - 'MenuAccounts' (PascalCase)\n * - 'Page Dashboard' (spaces)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nconst BaseNavItemSchema = z.object({\n /** Unique identifier for the item */\n id: SnakeCaseIdentifierSchema.describe('Unique identifier for this navigation item (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Display proper label'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** Sort order within the same level (lower numbers appear first) */\n order: z.number().optional().describe('Sort order within the same level (lower = first)'),\n\n /** Badge text or count displayed on the navigation item (e.g. \"3\", \"New\") */\n badge: z.union([z.string(), z.number()]).optional().describe('Badge text or count displayed on the item'),\n\n /** \n * Visibility condition. \n * Formula expression returning boolean. \n * e.g. \"user.is_admin || user.department == 'sales'\"\n */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL). e.g. P`os.user.role == \"admin\"`'),\n\n /** Permissions required to see/access this navigation item */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this item'),\n\n /**\n * Capability gate — registered object name.\n *\n * When set, the frontend MUST hide (or render disabled) this navigation\n * entry if the named object is not registered in the runtime's\n * SchemaRegistry. Useful for cloud-only objects (e.g. `sys_app`,\n * `sys_package`, `sys_package_installation`) that don't exist in\n * single-project runtimes — declaring the dependency here avoids\n * 404-when-clicked traps without hard-coding environment checks in the\n * UI.\n *\n * Independent of `visible` (CEL) and `requiredPermissions` (RBAC) —\n * this gates on runtime *capability*, not user authorization.\n */\n requiresObject: z.string().optional().describe('Hide/disable this entry unless the named object is registered in the runtime'),\n\n /**\n * Capability gate — registered service name.\n *\n * Same idea as `requiresObject` but keyed on a kernel service\n * (e.g. `'ai'`, `'tenant'`, `'realtime'`). Hide the entry when the\n * service isn't installed.\n */\n requiresService: z.string().optional().describe('Hide/disable this entry unless the named kernel service is registered'),\n});\n\n/**\n * 1. Object Navigation Item\n * Navigates to an object's list view.\n */\nexport const ObjectNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('object'),\n objectName: z.string().describe('Target object name'),\n viewName: z.string().optional().describe('Default list view to open. Defaults to \"all\"'),\n}));\n\n/**\n * 2. Dashboard Navigation Item\n * Navigates to a specific dashboard.\n */\nexport const DashboardNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('dashboard'),\n dashboardName: z.string().describe('Target dashboard name'),\n}));\n\n/**\n * 3. Page Navigation Item\n * Navigates to a custom UI page/component.\n */\nexport const PageNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('page'),\n pageName: z.string().describe('Target custom page component name'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the page context'),\n}));\n\n/**\n * 4. URL Navigation Item\n * Navigates to an external or absolute URL.\n */\nexport const UrlNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('url'),\n url: z.string().describe('Target external URL'),\n target: z.enum(['_self', '_blank']).default('_self').describe('Link target window'),\n}));\n\n/**\n * 5. Report Navigation Item\n * Navigates to a specific report.\n */\nexport const ReportNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('report'),\n reportName: z.string().describe('Target report name'),\n}));\n\n/**\n * 6. Action Navigation Item\n * Triggers an action (e.g. opening a flow, running a script, or launching a screen action).\n */\nexport const ActionNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('action'),\n actionDef: z.object({\n actionName: z.string().describe('Action machine name to execute'),\n params: z.record(z.string(), z.unknown()).optional().describe('Parameters passed to the action'),\n }).describe('Action definition to execute when clicked'),\n}));\n\n/**\n * 7. Group Navigation Item\n * A container for child navigation items (Sub-menu).\n * Does not perform navigation itself.\n */\nexport const GroupNavItemSchema = lazySchema(() => BaseNavItemSchema.extend({\n type: z.literal('group'),\n expanded: z.boolean().default(false).describe('Default expansion state in sidebar'),\n // children property is added in the recursive definition below\n}));\n\n/**\n * Recursive Union of all navigation item types.\n * Allows constructing an unlimited-depth navigation tree.\n */\nexport const NavigationItemSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n ObjectNavItemSchema.extend({\n children: z.array(NavigationItemSchema).optional().describe('Child navigation items (e.g. specific views)'),\n }),\n DashboardNavItemSchema,\n PageNavItemSchema,\n UrlNavItemSchema,\n ReportNavItemSchema,\n ActionNavItemSchema,\n GroupNavItemSchema.extend({\n children: z.array(NavigationItemSchema).describe('Child navigation items'),\n })\n ])\n);\n\n/**\n * App Branding Configuration\n * Allows configuring the look and feel of the specific app.\n */\nexport const AppBrandingSchema = lazySchema(() => z.object({\n primaryColor: z.string().optional().describe('Primary theme color hex code'),\n logo: z.string().optional().describe('Custom logo URL for this app'),\n favicon: z.string().optional().describe('Custom favicon URL for this app'),\n}));\n\n/**\n * Navigation Area Schema\n * \n * A logical grouping (zone/section) of navigation items, similar to Salesforce \"App Areas\"\n * or Dynamics 365 \"Site Map Areas\". Each area represents a business domain (e.g. Sales, Service, Settings)\n * and contains its own independent navigation tree.\n * \n * Areas allow large applications to partition navigation by business function while\n * keeping a single AppSchema definition. The runtime may render areas as top-level tabs,\n * sidebar sections, or a switchable navigation context.\n * \n * @example\n * ```ts\n * const salesArea: NavigationArea = {\n * id: 'area_sales',\n * label: 'Sales',\n * icon: 'briefcase',\n * order: 1,\n * navigation: [\n * { id: 'nav_leads', type: 'object', label: 'Leads', objectName: 'lead' },\n * { id: 'nav_opportunities', type: 'object', label: 'Opportunities', objectName: 'opportunity' },\n * ],\n * };\n * ```\n */\nexport const NavigationAreaSchema = lazySchema(() => z.object({\n /** Unique area identifier */\n id: SnakeCaseIdentifierSchema.describe('Unique area identifier (lowercase snake_case)'),\n\n /** Display label */\n label: I18nLabelSchema.describe('Area display label'),\n\n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Area icon name'),\n\n /** Sort order among areas (lower = first) */\n order: z.number().optional().describe('Sort order among areas (lower = first)'),\n\n /** Area description */\n description: I18nLabelSchema.optional().describe('Area description'),\n\n /** \n * Visibility condition.\n * Formula expression returning boolean.\n */\n visible: ExpressionInputSchema.optional().describe('Visibility predicate (CEL) for this area.'),\n\n /** Permissions required to access this area */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this area'),\n\n /** Navigation items within this area */\n navigation: z.array(NavigationItemSchema).describe('Navigation items within this area'),\n}));\n\n/**\n * Schema for Applications (Apps).\n * A logical container for business functionality (e.g., \"Sales CRM\", \"HR Portal\").\n * \n * **NAMING CONVENTION:**\n * App names are used in URLs and routing and must be lowercase snake_case.\n * Prefix with 'app_' is recommended for clarity.\n * \n * @example Good app names\n * - 'app_crm'\n * - 'app_finance'\n * - 'app_portal'\n * - 'sales_app'\n * \n * @example Bad app names (will be rejected)\n * - 'CRM' (uppercase)\n * - 'FinanceApp' (mixed case)\n * - 'Sales App' (spaces)\n */\n/**\n * App Configuration Schema\n * Defines a business application container, including its navigation, branding, and permissions.\n * \n * The App is the top-level navigation shell. The `navigation[]` field holds the complete\n * sidebar tree with unlimited nesting depth via `type: 'group'` items. Pages are referenced\n * by name via `type: 'page'` items and defined independently.\n * \n * @example CRM App with nested navigation tree\n * {\n * name: \"crm\",\n * label: \"Sales CRM\",\n * icon: \"briefcase\",\n * navigation: [\n * { type: \"group\", id: \"grp_sales\", label: \"Sales Cloud\", expanded: true, children: [\n * { type: \"page\", id: \"nav_pipeline\", label: \"Pipeline\", pageName: \"page_pipeline\" },\n * { type: \"page\", id: \"nav_accounts\", label: \"Accounts\", pageName: \"page_accounts\" },\n * ]},\n * { type: \"page\", id: \"nav_settings\", label: \"Settings\", pageName: \"admin_settings\" },\n * ]\n * }\n */\nexport const AppSchema = lazySchema(() => z.object({\n /** Machine name (id) */\n name: SnakeCaseIdentifierSchema.describe('App unique machine name (lowercase snake_case)'),\n \n /** Display label */\n label: I18nLabelSchema.describe('App display label'),\n\n /** App version */\n version: z.string().optional().describe('App version'),\n \n /** Description */\n description: I18nLabelSchema.optional().describe('App description'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('App icon used in the App Launcher'),\n \n /** Branding/Theming Configuration */\n branding: AppBrandingSchema.optional().describe('App-specific branding'),\n \n /** Application status */\n active: z.boolean().optional().default(true).describe('Whether the app is enabled'),\n\n /** Is this the default app for new users? */\n isDefault: z.boolean().optional().default(false).describe('Is default app'),\n \n /** \n * Full Navigation Tree — supports unlimited nesting depth.\n * Pages are referenced by name via `type: 'page'` items.\n * Groups can contain other groups for arbitrary sidebar depth.\n * \n * For simple apps, use `navigation` directly.\n * For enterprise apps with multiple business domains, use `areas` instead.\n */\n navigation: z.array(NavigationItemSchema).optional()\n .describe('Full navigation tree for the app sidebar'),\n\n /**\n * Navigation Areas — partitions navigation by business domain.\n * Each area defines an independent navigation tree (e.g. Sales, Service, Settings).\n * When areas are defined, they take precedence over the top-level `navigation` array.\n * \n * @example\n * ```ts\n * areas: [\n * { id: 'area_sales', label: 'Sales', icon: 'briefcase', order: 1, navigation: [...] },\n * { id: 'area_service', label: 'Service', icon: 'headset', order: 2, navigation: [...] },\n * ]\n * ```\n */\n areas: z.array(NavigationAreaSchema).optional()\n .describe('Navigation areas for partitioning navigation by business domain'),\n \n /** \n * App-level Home Page Override\n * ID of the navigation item to act as the landing page.\n * If not set, usually defaults to the first navigation item.\n */\n homePageId: z.string().optional().describe('ID of the navigation item to serve as landing page'),\n\n /** \n * Access Control\n * List of permissions required to access this app.\n * Modern replacement for role/profile based assignment.\n * Example: [\"app.access.crm\"]\n */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this app'),\n \n /** \n * Package Components (For config file convenience)\n * In a real monorepo these might be auto-discovered, but here we allow explicit registration.\n */\n objects: z.array(z.unknown()).optional().describe('Objects belonging to this app'),\n apis: z.array(z.unknown()).optional().describe('Custom APIs belonging to this app'),\n\n /** Sharing configuration for public access */\n sharing: SharingConfigSchema.optional().describe('Public sharing configuration'),\n\n /** Embed configuration for iframe embedding */\n embed: EmbedConfigSchema.optional().describe('Iframe embedding configuration'),\n\n /** Mobile navigation mode */\n mobileNavigation: z.object({\n mode: z.enum(['drawer', 'bottom_nav', 'hamburger']).default('drawer')\n .describe('Mobile navigation mode: drawer sidebar, bottom navigation bar, or hamburger menu'),\n bottomNavItems: z.array(z.string()).optional()\n .describe('Navigation item IDs to show in bottom nav (max 5)'),\n }).optional().describe('Mobile-specific navigation configuration'),\n\n /**\n * Default AI Copilot for this app.\n *\n * When set, the ambient chat endpoint (`POST /api/v1/ai/chat` with\n * `context.appName`) auto-resolves to this agent without the user\n * having to pick from a list. The agent's `skills[]` are loaded\n * from the SkillRegistry and exposed to the LLM.\n *\n * Mirrors the Salesforce Agentforce / ServiceNow Now Assist pattern\n * where each application surface has one ambient copilot.\n *\n * @example\n * ```ts\n * defineApp({ name: 'crm', defaultAgent: 'sales_copilot', ... })\n * ```\n */\n defaultAgent: SnakeCaseIdentifierSchema.optional()\n .describe('Name of the default AI agent for this app (used by the ambient chat endpoint)'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes for the application'),\n}));\n\n/**\n * App Factory Helper\n */\nexport const App = {\n create: (config: z.input<typeof AppSchema>): App => AppSchema.parse(config),\n} as const;\n\n/**\n * Type-safe factory for creating application definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example CRM App with nested navigation tree\n * ```ts\n * const crmApp = defineApp({\n * name: 'crm',\n * label: 'Sales CRM',\n * navigation: [\n * { id: 'grp_sales', type: 'group', label: 'Sales Cloud', expanded: true, children: [\n * { id: 'nav_pipeline', type: 'page', label: 'Pipeline', pageName: 'page_pipeline' },\n * { id: 'nav_accounts', type: 'page', label: 'Accounts', pageName: 'page_accounts' },\n * ]},\n * { id: 'nav_settings', type: 'page', label: 'Settings', pageName: 'admin_settings' },\n * ],\n * });\n * ```\n */\nexport function defineApp(config: z.input<typeof AppSchema>): App {\n return AppSchema.parse(config);\n}\n\n// Main Types\nexport type App = z.infer<typeof AppSchema>;\nexport type AppInput = z.input<typeof AppSchema>;\nexport type AppBranding = z.infer<typeof AppBrandingSchema>;\nexport type NavigationItem = z.infer<typeof NavigationItemSchema>;\nexport type NavigationArea = z.infer<typeof NavigationAreaSchema>;\n\n// Discriminated Item Types (Helper exports)\nexport type ObjectNavItem = z.infer<typeof ObjectNavItemSchema>;\nexport type DashboardNavItem = z.infer<typeof DashboardNavItemSchema>;\nexport type PageNavItem = z.infer<typeof PageNavItemSchema>;\nexport type UrlNavItem = z.infer<typeof UrlNavItemSchema>;\nexport type ReportNavItem = z.infer<typeof ReportNavItemSchema>;\nexport type ActionNavItem = z.infer<typeof ActionNavItemSchema>;\nexport type GroupNavItem = z.infer<typeof GroupNavItemSchema> & { children: NavigationItem[] };\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Shared Enumerations\n// ============================================================================\n\n/** Aggregation functions used across query, data-engine, analytics, field */\nimport { lazySchema } from './lazy-schema';\nexport const AggregationFunctionEnum = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'percentile', 'median', 'stddev', 'variance',\n]).describe('Standard aggregation functions');\nexport type AggregationFunction = z.infer<typeof AggregationFunctionEnum>;\n\n/** Sort direction used across query, data-engine, analytics */\nexport const SortDirectionEnum = z.enum(['asc', 'desc'])\n .describe('Sort order direction');\nexport type SortDirection = z.infer<typeof SortDirectionEnum>;\n\n/** Reusable sort item — field + direction pair used across views, data sources, filters */\nexport const SortItemSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name to sort by'),\n order: SortDirectionEnum.describe('Sort direction'),\n}).describe('Sort field and direction pair'));\nexport type SortItem = z.infer<typeof SortItemSchema>;\n\n/** CRUD mutation events used across hook, validation, object CDC */\nexport const MutationEventEnum = z.enum([\n 'insert', 'update', 'delete', 'upsert',\n]).describe('Data mutation event types');\nexport type MutationEvent = z.infer<typeof MutationEventEnum>;\n\n/** Database isolation levels — unified format */\nexport const IsolationLevelEnum = z.enum([\n 'read_uncommitted', 'read_committed', 'repeatable_read', 'serializable', 'snapshot',\n]).describe('Transaction isolation levels (snake_case standard)');\nexport type IsolationLevel = z.infer<typeof IsolationLevelEnum>;\n\n/** Cache eviction strategies */\nexport const CacheStrategyEnum = z.enum(['lru', 'lfu', 'ttl', 'fifo'])\n .describe('Cache eviction strategy');\nexport type CacheStrategy = z.infer<typeof CacheStrategyEnum>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Unified Query DSL Specification\n * \n * Based on industry best practices from:\n * - Prisma ORM\n * - Strapi CMS\n * - TypeORM\n * - LoopBack Framework\n * \n * Version: 1.0.0\n * Status: Draft\n * \n * Objective: Define a JSON-based, database-agnostic query syntax standard\n * for data filtering interactions between frontend and backend APIs.\n * \n * Design Principles:\n * 1. Declarative: Frontend describes \"what data to get\", not \"how to query\"\n * 2. Database Agnostic: Syntax contains no database-specific directives\n * 3. Type Safe: Structure can be statically inferred by TypeScript\n * 4. Convention over Configuration: Implicit syntax for common queries\n */\n\n/**\n * Field Reference\n * Represents a reference to another field/column instead of a literal value.\n * Used for joins (ON clause) and cross-field comparisons.\n * \n * @example\n * // user.id = order.owner_id\n * { \"$eq\": { \"$field\": \"order.owner_id\" } }\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldReferenceSchema = lazySchema(() => z.object({\n $field: z.string().describe('Field Reference/Column Name')\n}));\n\nexport type FieldReference = z.infer<typeof FieldReferenceSchema>;\n\n// ============================================================================\n// 3.1 Comparison Operators\n// ============================================================================\n\n/**\n * Comparison operators for equality and inequality checks.\n * Supported data types: Any\n */\nexport const EqualityOperatorSchema = lazySchema(() => z.object({\n /** Equal to (default) - SQL: = | MongoDB: $eq */\n $eq: z.any().optional(),\n \n /** Not equal to - SQL: <> or != | MongoDB: $ne */\n $ne: z.any().optional(),\n}));\n\n/**\n * Comparison operators for numeric and date comparisons.\n * Supported data types: Number, Date\n */\nexport const ComparisonOperatorSchema = lazySchema(() => z.object({\n /** Greater than - SQL: > | MongoDB: $gt */\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Greater than or equal to - SQL: >= | MongoDB: $gte */\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than - SQL: < | MongoDB: $lt */\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than or equal to - SQL: <= | MongoDB: $lte */\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n}));\n\n// ============================================================================\n// 3.2 Set & Range Operators\n// ============================================================================\n\n/**\n * Set operators for membership checks.\n */\nexport const SetOperatorSchema = lazySchema(() => z.object({\n /** In list - SQL: IN (?, ?, ?) | MongoDB: $in */\n $in: z.array(z.any()).optional(),\n \n /** Not in list - SQL: NOT IN (...) | MongoDB: $nin */\n $nin: z.array(z.any()).optional(),\n}));\n\n/**\n * Range operator for interval checks (closed interval).\n * SQL: BETWEEN ? AND ? | MongoDB: $gte AND $lte\n */\nexport const RangeOperatorSchema = lazySchema(() => z.object({\n /** Between (inclusive) - takes [min, max] array */\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n}));\n\n// ============================================================================\n// 3.3 String-Specific Operators\n// ============================================================================\n\n/**\n * String pattern matching operators.\n * Note: Case sensitivity should be handled at backend level.\n */\nexport const StringOperatorSchema = lazySchema(() => z.object({\n /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */\n $contains: z.string().optional(),\n \n /** Does not contain substring - SQL: NOT LIKE %?% | MongoDB: $not: $regex */\n $notContains: z.string().optional(),\n \n /** Starts with prefix - SQL: LIKE ?% | MongoDB: $regex */\n $startsWith: z.string().optional(),\n \n /** Ends with suffix - SQL: LIKE %? | MongoDB: $regex */\n $endsWith: z.string().optional(),\n}));\n\n// ============================================================================\n// 3.5 Special Operators\n// ============================================================================\n\n/**\n * Special check operators for null and existence.\n */\nexport const SpecialOperatorSchema = lazySchema(() => z.object({\n /** Is null check - SQL: IS NULL (true) / IS NOT NULL (false) | MongoDB: field: null */\n $null: z.boolean().optional(),\n \n /** Field exists check (primarily for NoSQL) - MongoDB: $exists */\n $exists: z.boolean().optional(),\n}));\n\n// ============================================================================\n// Combined Field Operators\n// ============================================================================\n\n/**\n * All field-level operators combined.\n * These can be applied to individual fields in a filter.\n */\nexport const FieldOperatorsSchema = lazySchema(() => z.object({\n // Equality\n $eq: z.any().optional(),\n $ne: z.any().optional(),\n \n // Comparison (numeric/date)\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n // Set & Range\n $in: z.array(z.any()).optional(),\n $nin: z.array(z.any()).optional(),\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n \n // String-specific\n $contains: z.string().optional(),\n $notContains: z.string().optional(),\n $startsWith: z.string().optional(),\n $endsWith: z.string().optional(),\n \n // Special\n $null: z.boolean().optional(),\n $exists: z.boolean().optional(),\n}));\n\n// ============================================================================\n// 3.4 Logical Operators & Recursive Filter Structure\n// ============================================================================\n\n/**\n * Recursive filter type that supports:\n * 1. Implicit equality: { field: value }\n * 2. Explicit operators: { field: { $op: value } }\n * 3. Logical combinations: { $and: [...], $or: [...], $not: {...} }\n * 4. Nested relations: { relation: { field: value } }\n */\nexport type FilterCondition = {\n [key: string]: \n | any // Implicit equality: key: value\n | z.infer<typeof FieldOperatorsSchema> // Explicit operators: key: { $op: value }\n | FilterCondition; // Nested relation: key: { nested: ... }\n} & {\n /** Logical AND - combines all conditions that must be true */\n $and?: FilterCondition[];\n \n /** Logical OR - at least one condition must be true */\n $or?: FilterCondition[];\n \n /** Logical NOT - negates the condition */\n $not?: FilterCondition;\n};\n\n/**\n * Zod schema for recursive filter validation.\n * Uses z.lazy() to handle recursive structure.\n */\nexport const FilterConditionSchema: z.ZodType<FilterCondition> = z.lazy(() =>\n z.record(z.string(), z.unknown()).and(\n z.object({\n $and: z.array(FilterConditionSchema).optional(),\n $or: z.array(FilterConditionSchema).optional(),\n $not: FilterConditionSchema.optional(),\n })\n )\n);\n\n// ============================================================================\n// Query Filter Wrapper\n// ============================================================================\n\n/**\n * Top-level query filter wrapper.\n * This is typically used as the \"where\" clause in a query.\n * \n * @example\n * ```typescript\n * const filter: QueryFilter = {\n * where: {\n * status: \"active\", // Implicit equality\n * age: { $gte: 18 }, // Explicit operator\n * $or: [ // Logical combination\n * { role: \"admin\" },\n * { email: { $contains: \"@company.com\" } }\n * ],\n * profile: { // Nested relation\n * verified: true\n * }\n * }\n * }\n * ```\n */\nexport const QueryFilterSchema = lazySchema(() => z.object({\n where: FilterConditionSchema.optional(),\n}));\n\n// ============================================================================\n// TypeScript Type Exports\n// ============================================================================\n\n/**\n * Type-safe filter operators for use in TypeScript.\n * \n * @example\n * ```typescript\n * type UserFilter = Filter<User>;\n * \n * const filter: UserFilter = {\n * age: { $gte: 18 },\n * email: { $contains: \"@example.com\" }\n * };\n * ```\n */\nexport type Filter<T = any> = {\n [K in keyof T]?: \n | T[K] // Implicit equality\n | {\n $eq?: T[K];\n $ne?: T[K];\n $gt?: T[K] extends number | Date ? T[K] : never;\n $gte?: T[K] extends number | Date ? T[K] : never;\n $lt?: T[K] extends number | Date ? T[K] : never;\n $lte?: T[K] extends number | Date ? T[K] : never;\n $in?: T[K][];\n $nin?: T[K][];\n $between?: T[K] extends number | Date ? [T[K], T[K]] : never;\n $contains?: T[K] extends string ? string : never;\n $notContains?: T[K] extends string ? string : never;\n $startsWith?: T[K] extends string ? string : never;\n $endsWith?: T[K] extends string ? string : never;\n $null?: boolean;\n $exists?: boolean;\n }\n | (T[K] extends object ? Filter<T[K]> : never); // Nested relation\n} & {\n $and?: Filter<T>[];\n $or?: Filter<T>[];\n $not?: Filter<T>;\n};\n\n/**\n * Scalar types supported by the filter system.\n */\nexport type Scalar = string | number | boolean | Date | null;\n\n// Export inferred types\nexport type FieldOperators = z.infer<typeof FieldOperatorsSchema>;\nexport type QueryFilter = z.infer<typeof QueryFilterSchema>;\n\n// ============================================================================\n// Normalization Utilities (Internal Representation)\n// ============================================================================\n\n/**\n * Normalized filter AST structure.\n * This is the internal representation after converting all syntactic sugar\n * to explicit operators.\n * \n * Stage 1: Normalization Pass\n * Input: { age: 18, role: \"admin\" }\n * Output: { $and: [{ age: { $eq: 18 } }, { role: { $eq: \"admin\" } }] }\n * \n * This simplifies adapter implementation by providing a consistent structure.\n */\nexport const NormalizedFilterSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n $and: z.array(\n z.union([\n // Field condition: { field: { $op: value } }\n z.record(z.string(), FieldOperatorsSchema),\n // Nested logical group\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $or: z.array(\n z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $not: z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ]).optional(),\n })\n);\n\nexport type NormalizedFilter = z.infer<typeof NormalizedFilterSchema>;\n\n// ============================================================================\n// AST Array Format Detection & Validation\n// ============================================================================\n\n/**\n * Set of valid AST comparison operators (case-insensitive).\n * Used by `isFilterAST()` to validate AST structure beyond `Array.isArray`.\n */\nexport const VALID_AST_OPERATORS = new Set([\n '=', '==', '!=', '<>', '>', '>=', '<', '<=',\n 'in', 'nin', 'not_in',\n 'contains', 'notcontains', 'not_contains', 'like',\n 'startswith', 'starts_with',\n 'endswith', 'ends_with',\n 'between',\n 'is_null', 'is_not_null',\n]);\n\n/**\n * Detect whether a value is a valid Filter AST array structure.\n *\n * A valid AST is one of:\n * - Comparison node: `[field: string, operator: string, value: unknown]` where operator is a known operator\n * - Logical node: `[\"and\" | \"or\", ...children]` where children are valid AST nodes\n * - Legacy flat array: `[[cond], [cond], ...]` where all elements are sub-arrays (each a valid AST node)\n *\n * This replaces the naïve `Array.isArray(filter)` check, preventing accidental\n * misidentification of arbitrary arrays as filter ASTs.\n *\n * @example\n * isFilterAST([\"status\", \"=\", \"active\"]) // true\n * isFilterAST([\"and\", [\"a\", \"=\", 1], [\"b\", \">\", 2]]) // true\n * isFilterAST([[\"a\", \"=\", 1], [\"b\", \"=\", 2]]) // true (legacy)\n * isFilterAST([1, 2, 3]) // false\n * isFilterAST(\"not an array\") // false\n * isFilterAST({ status: \"active\" }) // false\n */\nexport function isFilterAST(filter: unknown): boolean {\n if (!Array.isArray(filter) || filter.length === 0) return false;\n\n const first = filter[0];\n\n // Logical node: [\"and\", ...] or [\"or\", ...]\n if (typeof first === 'string') {\n const lower = first.toLowerCase();\n if (lower === 'and' || lower === 'or') {\n return filter.length >= 2 && filter.slice(1).every((child: unknown) => isFilterAST(child));\n }\n\n // Comparison node: [field, operator, value]\n if (filter.length >= 2 && typeof filter[1] === 'string') {\n return VALID_AST_OPERATORS.has(filter[1].toLowerCase());\n }\n }\n\n // Legacy flat array: [[cond], [cond], ...]\n if (filter.every((item: unknown) => isFilterAST(item))) {\n return filter.length > 0;\n }\n\n return false;\n}\n\n// ============================================================================\n// AST Array → FilterCondition Conversion\n// ============================================================================\n\n/**\n * Operator mapping from AST infix operators to FilterCondition `$`-prefixed operators.\n */\nconst AST_OPERATOR_MAP: Record<string, string> = {\n '=': '$eq',\n '==': '$eq',\n '!=': '$ne',\n '<>': '$ne',\n '>': '$gt',\n '>=': '$gte',\n '<': '$lt',\n '<=': '$lte',\n 'in': '$in',\n 'nin': '$nin',\n 'not_in': '$nin',\n 'contains': '$contains',\n 'notcontains': '$notContains',\n 'not_contains': '$notContains',\n 'like': '$contains',\n 'startswith': '$startsWith',\n 'starts_with': '$startsWith',\n 'endswith': '$endsWith',\n 'ends_with': '$endsWith',\n 'between': '$between',\n 'is_null': '$null',\n 'is_not_null': '$null',\n};\n\n/**\n * Convert a single AST comparison node `[field, operator, value]` to a FilterCondition object.\n */\nfunction convertComparison(node: [string, string, unknown]): FilterCondition {\n const [field, operator, value] = node;\n const op = operator.toLowerCase();\n\n // Special case: equality shorthand\n if (op === '=' || op === '==') {\n return { [field]: value } as FilterCondition;\n }\n\n // Null check operators\n if (op === 'is_null') {\n return { [field]: { $null: true } } as FilterCondition;\n }\n if (op === 'is_not_null') {\n return { [field]: { $null: false } } as FilterCondition;\n }\n\n const mapped = AST_OPERATOR_MAP[op];\n if (mapped) {\n return { [field]: { [mapped]: value } } as FilterCondition;\n }\n\n // Fallback: use the operator as-is with $ prefix\n return { [field]: { [`$${op}`]: value } } as FilterCondition;\n}\n\n/**\n * Parse a filter from AST array format to FilterCondition object format.\n *\n * The AST array format is used by the ObjectUI client and the `FilterBuilder`:\n * - Comparison: `[field, operator, value]` → `{ field: value }` or `{ field: { $op: value } }`\n * - Logical AND: `[\"and\", cond1, cond2, ...]` → `{ $and: [...] }`\n * - Logical OR: `[\"or\", cond1, cond2, ...]` → `{ $or: [...] }`\n *\n * If the input is already a FilterCondition object (not an array), it is returned as-is.\n * If the input is `null` or `undefined`, it is returned as-is.\n *\n * @example\n * // Simple condition\n * parseFilterAST([\"status\", \"=\", \"active\"])\n * // → { status: \"active\" }\n *\n * @example\n * // Compound AND\n * parseFilterAST([\"and\", [\"priority\", \"=\", \"high\"], [\"status\", \"=\", \"active\"]])\n * // → { $and: [{ priority: \"high\" }, { status: \"active\" }] }\n *\n * @example\n * // Object passthrough\n * parseFilterAST({ status: \"active\" })\n * // → { status: \"active\" }\n */\nexport function parseFilterAST(filter: unknown): FilterCondition | undefined {\n if (filter == null) return undefined;\n if (!Array.isArray(filter)) return filter as FilterCondition;\n if (filter.length === 0) return undefined;\n\n const first = filter[0];\n\n // Logical node: [\"and\", cond1, cond2, ...] or [\"or\", cond1, cond2, ...]\n if (typeof first === 'string' && (first.toLowerCase() === 'and' || first.toLowerCase() === 'or')) {\n const logicOp = `$${first.toLowerCase()}` as '$and' | '$or';\n const children = filter.slice(1).map((child: unknown) => parseFilterAST(child)).filter(Boolean) as FilterCondition[];\n if (children.length === 0) return undefined;\n if (children.length === 1) return children[0];\n return { [logicOp]: children } as FilterCondition;\n }\n\n // Comparison node: [field, operator, value]\n if (filter.length >= 2 && typeof first === 'string') {\n return convertComparison(filter as [string, string, unknown]);\n }\n\n // Legacy flat array: [[field, op, val], [field, op, val], ...]\n // All elements are sub-arrays → treat as implicit AND\n if (filter.every((item: unknown) => Array.isArray(item))) {\n const children = filter.map((child: unknown) => parseFilterAST(child)).filter(Boolean) as FilterCondition[];\n if (children.length === 0) return undefined;\n if (children.length === 1) return children[0];\n return { $and: children } as FilterCondition;\n }\n\n return undefined;\n}\n\n// ============================================================================\n// Constants & Metadata\n// ============================================================================\n\n/**\n * All supported operator keys.\n * Useful for validation and parsing.\n */\nexport const FILTER_OPERATORS = [\n // Equality\n '$eq', '$ne',\n // Comparison\n '$gt', '$gte', '$lt', '$lte',\n // Set & Range\n '$in', '$nin', '$between',\n // String\n '$contains', '$notContains', '$startsWith', '$endsWith',\n // Special\n '$null', '$exists',\n] as const;\n\n/**\n * Logical operator keys.\n */\nexport const LOGICAL_OPERATORS = ['$and', '$or', '$not'] as const;\n\n/**\n * All operator keys (field + logical).\n */\nexport const ALL_OPERATORS = [...FILTER_OPERATORS, ...LOGICAL_OPERATORS] as const;\n\nexport type FilterOperatorKey = typeof FILTER_OPERATORS[number];\nexport type LogicalOperatorKey = typeof LOGICAL_OPERATORS[number];\nexport type OperatorKey = typeof ALL_OPERATORS[number];\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\nimport { SortItemSchema } from '../shared/enums.zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema } from './responsive.zod';\nimport {\n UserActionsConfigSchema,\n AppearanceConfigSchema,\n ViewTabSchema,\n ViewFilterRuleSchema,\n AddRecordConfigSchema,\n} from './view.zod';\n\n/**\n * Page Region Schema\n * A named region in the template where components are dropped.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PageRegionSchema = lazySchema(() => z.object({\n name: z.string().describe('Region name (e.g. \"sidebar\", \"main\", \"header\")'),\n width: z.enum(['small', 'medium', 'large', 'full']).optional(),\n components: z.array(z.lazy(() => PageComponentSchema)).describe('Components in this region')\n}));\n\n/**\n * Standard Page Component Types\n */\nexport const PageComponentType = z.enum([\n // Structure\n 'page:header', 'page:footer', 'page:sidebar', 'page:tabs', 'page:accordion', 'page:card', 'page:section',\n // Record Context\n 'record:details', 'record:highlights', 'record:related_list', 'record:activity', 'record:chatter', 'record:path',\n // Navigation\n 'app:launcher', 'nav:menu', 'nav:breadcrumb',\n // Utility\n 'global:search', 'global:notifications', 'user:profile',\n // AI\n 'ai:chat_window', 'ai:suggestion',\n // Content Elements (Airtable Interface parity)\n 'element:text', 'element:number', 'element:image', 'element:divider',\n // Interactive Elements (Phase B — Element Library)\n 'element:button', 'element:filter', 'element:form', 'element:record_picker'\n]);\n\n/**\n * Element Data Source Schema\n * Per-element data binding for multi-object pages.\n * Overrides page-level object context so each element can query a different object.\n */\nexport const ElementDataSourceSchema = lazySchema(() => z.object({\n object: z.string().describe('Object to query'),\n view: z.string().optional().describe('Named view to apply'),\n filter: FilterConditionSchema.optional().describe('Additional filter criteria'),\n sort: z.array(SortItemSchema).optional().describe('Sort order'),\n limit: z.number().int().positive().optional().describe('Max records to display'),\n}));\n\n/**\n * Page Component Schema\n * A configured instance of a UI component.\n */\nexport const PageComponentSchema = lazySchema(() => z.object({\n /** Definition */\n type: z.union([\n PageComponentType,\n z.string()\n ]).describe('Component Type (Standard enum or custom string)'),\n id: z.string().optional().describe('Unique instance ID'),\n \n /** Configuration */\n label: I18nLabelSchema.optional(),\n properties: z.record(z.string(), z.unknown()).describe('Component props passed to the widget. See component.zod.ts for schemas.'),\n \n /** \n * Event Handlers \n * Map event names to Action expressions.\n * \"onClick\": \"set_variable('userId', $event.id)\"\n * \"onRowSelect\": \"navigate_to('page_detail', { id: $event.id })\"\n */\n events: z.record(z.string(), z.string()).optional().describe('Event handlers map'),\n\n /** Appearance */\n style: z.record(z.string(), z.string()).optional().describe('Inline styles or utility classes'),\n className: z.string().optional().describe('CSS class names'),\n\n /** Visibility Rule */\n visibility: ExpressionInputSchema.optional().describe('Visibility predicate (CEL).'),\n\n /** Per-element data binding, overrides page-level object context */\n dataSource: ElementDataSourceSchema.optional().describe('Per-element data binding for multi-object pages'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * Page Variable Schema\n * Defines local state for the page.\n * Variables can be bound to interactive elements (e.g. element:record_picker, element:filter).\n */\nexport const PageVariableSchema = lazySchema(() => z.object({\n name: z.string().describe('Variable name'),\n type: z.enum(['string', 'number', 'boolean', 'object', 'array', 'record_id']).default('string'),\n defaultValue: z.unknown().optional(),\n /** Source element binding (e.g. element:record_picker writes to this variable) */\n source: z.string().optional().describe('Component ID that writes to this variable'),\n}));\n\n/**\n * Blank Page Layout Item Schema\n * Positions a component on a free-form grid canvas.\n */\nexport const BlankPageLayoutItemSchema = lazySchema(() => z.object({\n componentId: z.string().describe('Reference to a PageComponent.id in the page'),\n x: z.number().int().min(0).describe('Grid column position (0-based)'),\n y: z.number().int().min(0).describe('Grid row position (0-based)'),\n width: z.number().int().min(1).describe('Width in grid columns'),\n height: z.number().int().min(1).describe('Height in grid rows'),\n}));\n\n/**\n * Blank Page Layout Schema\n * Free-form canvas composition with grid-based positioning.\n * Used when page type is 'blank' to enable drag-and-drop element placement.\n */\nexport const BlankPageLayoutSchema = lazySchema(() => z.object({\n columns: z.number().int().min(1).default(12).describe('Number of grid columns'),\n rowHeight: z.number().int().min(1).default(40).describe('Height of each grid row in pixels'),\n gap: z.number().int().min(0).default(8).describe('Gap between grid items in pixels'),\n items: z.array(BlankPageLayoutItemSchema).describe('Positioned components on the canvas'),\n}));\n\n/**\n * Page Type Schema\n * Unified page type enum covering both platform pages (Salesforce FlexiPage style)\n * and Airtable-inspired interface page types.\n *\n * **Disambiguation of similar types:**\n * - `record` vs `record_detail`: `record` is a component-based layout page (FlexiPage style with regions),\n * `record_detail` is a field-display page showing all fields of a single record (Airtable style).\n * Use `record` for custom record pages with regions/components, `record_detail` for auto-generated detail views.\n * - `home` vs `overview`: `home` is the platform-level landing page (tab landing),\n * `overview` is an interface-level navigation hub with links/instructions.\n * Use `home` for app-level landing, `overview` for in-interface navigation hubs.\n * - `app` vs `utility` vs `blank`: `app` is an app-level page with navigation context,\n * `utility` is a floating utility panel (e.g. notes, phone), `blank` is a free-form canvas\n * for custom composition. They serve distinct layout purposes.\n */\nexport const PageTypeSchema = lazySchema(() => z.enum([\n // Platform page types (Salesforce FlexiPage style)\n 'record', // Component-based record layout page with regions\n 'home', // Platform-level home/landing page\n 'app', // App-level page with navigation context\n 'utility', // Floating utility panel (e.g. notes, phone dialer)\n // Interface page types (Airtable Interface parity)\n 'dashboard', // KPI summary with charts/metrics\n 'grid', // Spreadsheet-like data table\n 'list', // Record list with quick actions\n 'gallery', // Card-based visual browsing\n 'kanban', // Status-based board\n 'calendar', // Date-based scheduling\n 'timeline', // Gantt-like project timeline\n 'form', // Data entry form\n 'record_detail', // Auto-generated single record field display\n 'record_review', // Sequential record review/approval\n 'overview', // Interface-level navigation/landing hub\n 'blank', // Free-form canvas for custom composition\n]).describe('Page type — platform or interface page types'));\n\n/**\n * Record Review Config Schema\n * Configuration for a sequential record review/approval page.\n * Users navigate through records one-by-one, taking actions (approve/reject/skip).\n * Only applicable when page type is 'record_review'.\n */\nexport const RecordReviewConfigSchema = lazySchema(() => z.object({\n object: z.string().describe('Target object for review'),\n filter: FilterConditionSchema.optional().describe('Filter criteria for review queue'),\n sort: z.array(SortItemSchema).optional().describe('Sort order for review queue'),\n displayFields: z.array(z.string()).optional()\n .describe('Fields to display on the review page'),\n actions: z.array(z.object({\n label: z.string().describe('Action button label'),\n type: z.enum(['approve', 'reject', 'skip', 'custom'])\n .describe('Action type'),\n field: z.string().optional()\n .describe('Field to update on action'),\n value: z.union([z.string(), z.number(), z.boolean()]).optional()\n .describe('Value to set on action'),\n nextRecord: z.boolean().optional().default(true)\n .describe('Auto-advance to next record after action'),\n })).describe('Review actions'),\n navigation: z.enum(['sequential', 'random', 'filtered'])\n .optional().default('sequential')\n .describe('Record navigation mode'),\n showProgress: z.boolean().optional().default(true)\n .describe('Show review progress indicator'),\n}));\n\n/**\n * Interface Page Configuration Schema (Airtable Interface parity)\n * Page-level declarative configuration for Airtable-style interface pages.\n * Covers title/data binding, levels, filter by, appearance, user actions,\n * tabs, record count, add record, and advanced options (printing).\n *\n * @see Airtable Interface → right panel (Page / Data / Appearance / User filters / User actions / Advanced)\n */\nexport const InterfacePageConfigSchema = lazySchema(() => z.object({\n /** Data binding */\n source: z.string().optional().describe('Source object name for the page'),\n levels: z.number().int().min(1).optional().describe('Number of hierarchy levels to display'),\n filterBy: z.array(ViewFilterRuleSchema).optional().describe('Page-level filter criteria'),\n\n /** Appearance */\n appearance: AppearanceConfigSchema.optional().describe('Appearance and visualization configuration'),\n\n /** User filters */\n userFilters: z.object({\n elements: z.array(z.enum(['grid', 'gallery', 'kanban'])).optional()\n .describe('Visualization element types available in user filter bar'),\n tabs: z.array(ViewTabSchema).optional().describe('User-configurable tabs'),\n }).optional().describe('User filter configuration'),\n\n /** User actions */\n userActions: UserActionsConfigSchema.optional().describe('User action toggles'),\n\n /** Add record */\n addRecord: AddRecordConfigSchema.optional().describe('Add record entry point configuration'),\n\n /** Record count */\n showRecordCount: z.boolean().optional().describe('Show record count at page bottom'),\n\n /** Advanced */\n allowPrinting: z.boolean().optional().describe('Allow users to print the page'),\n}).describe('Interface-level page configuration (Airtable parity)'));\n\n/**\n * Page Schema\n * Defines a composition of components for a specific context.\n * Supports both platform pages (Salesforce FlexiPage style: record, home, app, utility)\n * and interface pages (Airtable Interface style: dashboard, grid, kanban, record_review, etc.).\n * \n * **NAMING CONVENTION:**\n * Page names are used in routing and must be lowercase snake_case.\n * Prefix with 'page_' is recommended for clarity.\n * \n * @example Good page names\n * - 'page_dashboard'\n * - 'page_settings'\n * - 'home_page'\n * - 'record_detail'\n * \n * @example Bad page names (will be rejected)\n * - 'PageDashboard' (PascalCase)\n * - 'Settings Page' (spaces)\n */\nexport const PageSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Page unique name (lowercase snake_case)'),\n label: I18nLabelSchema,\n description: I18nLabelSchema.optional(),\n\n /** Icon (used in interface navigation) */\n icon: z.string().optional().describe('Page icon name'),\n \n /** Page Type */\n type: PageTypeSchema.default('record').describe('Page type'),\n \n /** Page State Definitions */\n variables: z.array(PageVariableSchema).optional().describe('Local page state variables'),\n\n /** Context */\n object: z.string().optional().describe('Bound object (for Record pages)'),\n\n /** Record Review Configuration (only for record_review pages) */\n recordReview: RecordReviewConfigSchema.optional()\n .describe('Record review configuration (required when type is \"record_review\")'),\n\n /** Blank Page Layout (only for blank pages) */\n blankLayout: BlankPageLayoutSchema.optional()\n .describe('Free-form grid layout for blank pages (used when type is \"blank\")'),\n \n /** Layout Template */\n template: z.string().default('default').describe('Layout template name (e.g. \"header-sidebar-main\")'),\n \n /** Regions & Content */\n regions: z.array(PageRegionSchema).describe('Defined regions with components'),\n \n /** Activation */\n isDefault: z.boolean().default(false),\n assignedProfiles: z.array(z.string()).optional(),\n\n /** Interface Page Configuration (Airtable Interface parity) */\n interfaceConfig: InterfacePageConfigSchema.optional()\n .describe('Interface-level page configuration (for Airtable-style interface pages)'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /**\n * Override semantics for record pages.\n *\n * - `\"full\"` (default): the schema fully describes the page.\n * - `\"slotted\"`: the schema only provides overrides for one or more\n * named slots (see `slots`). The default-page synthesizer fills\n * in every slot the author did NOT override. Useful when you want\n * to customize just the header / actions / one tab without\n * re-authoring the rest of the page.\n *\n * Only meaningful when `type === 'record'`. Ignored otherwise.\n */\n kind: z.enum(['full', 'slotted']).default('full')\n .describe('Page override mode: full (default) or slotted (partial overrides)'),\n\n /**\n * Slot override map for slotted record pages.\n *\n * Each slot accepts a single PageComponent or an array. Slots not\n * provided fall through to the synthesized default.\n *\n * Slot menu (v1): header | actions | highlights | details | tabs |\n * discussion. Each slot is a full replacement at the slot boundary —\n * no deep merge, no patch operations. To compose default + custom,\n * call the corresponding `buildDefault*` sub-builder from the\n * renderer runtime (e.g. @object-ui/plugin-detail).\n *\n * Only honored when `kind === 'slotted'`.\n */\n slots: z.object({\n header: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n actions: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n highlights: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n details: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n tabs: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n discussion: z.union([PageComponentSchema, z.array(PageComponentSchema)]).optional(),\n }).optional().describe('Slot override map for slotted pages'),\n}).superRefine((data, ctx) => {\n if (data.type === 'record_review' && !data.recordReview) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['recordReview'],\n message: 'recordReview is required when type is \"record_review\"',\n });\n }\n if (data.type === 'blank' && !data.blankLayout) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['blankLayout'],\n message: 'blankLayout is required when type is \"blank\"',\n });\n }\n if (data.kind === 'slotted' && !data.slots) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['slots'],\n message: 'slots is required when kind is \"slotted\"',\n });\n }\n}));\n\nexport type Page = z.infer<typeof PageSchema>;\nexport type PageType = z.infer<typeof PageTypeSchema>;\nexport type PageComponent = z.infer<typeof PageComponentSchema>;\nexport type PageRegion = z.infer<typeof PageRegionSchema>;\nexport type PageVariable = z.infer<typeof PageVariableSchema>;\nexport type ElementDataSource = z.infer<typeof ElementDataSourceSchema>;\nexport type RecordReviewConfig = z.infer<typeof RecordReviewConfigSchema>;\nexport type BlankPageLayoutItem = z.infer<typeof BlankPageLayoutItemSchema>;\nexport type BlankPageLayout = z.infer<typeof BlankPageLayoutSchema>;\nexport type InterfacePageConfig = z.infer<typeof InterfacePageConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Unified Chart Type Taxonomy\n * \n * Shared by Dashboard and Report widgets.\n * Provides a comprehensive set of chart types for data visualization.\n */\n\n/**\n * Chart Type Enum\n * Categorized by visualization purpose\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ChartTypeSchema = lazySchema(() => z.enum([\n // Comparison\n 'bar',\n 'horizontal-bar',\n 'column',\n 'grouped-bar',\n 'stacked-bar',\n 'bi-polar-bar',\n \n // Trend\n 'line',\n 'area',\n 'stacked-area',\n 'step-line',\n 'spline',\n \n // Distribution\n 'pie',\n 'donut',\n 'funnel',\n 'pyramid',\n \n // Relationship\n 'scatter',\n 'bubble',\n \n // Composition\n 'treemap',\n 'sunburst',\n 'sankey',\n 'word-cloud',\n \n // Performance\n 'gauge',\n 'solid-gauge',\n 'metric',\n 'kpi',\n 'bullet',\n \n // Geo\n 'choropleth',\n 'bubble-map',\n 'gl-map',\n \n // Advanced\n 'heatmap',\n 'radar',\n 'waterfall',\n 'box-plot',\n 'violin',\n 'candlestick',\n 'stock',\n \n // Tabular\n 'table',\n 'pivot',\n]));\n\nexport type ChartType = z.infer<typeof ChartTypeSchema>;\n\n/**\n * Chart Axis Schema\n * Definition for X and Y axes\n */\nexport const ChartAxisSchema = lazySchema(() => z.object({\n /** Data field to map to this axis */\n field: z.string().describe('Data field key'),\n \n /** Axis title */\n title: I18nLabelSchema.optional().describe('Axis display title'),\n\n /** Value formatting (d3-format or similar) */\n format: z.string().optional().describe('Value format string (e.g., \"$0,0.00\")'),\n \n /** Axis scale settings */\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n stepSize: z.number().optional().describe('Step size for ticks'),\n \n /** Appearance */\n showGridLines: z.boolean().default(true),\n position: z.enum(['left', 'right', 'top', 'bottom']).optional().describe('Axis position'),\n \n /** Logarithmic scale */\n logarithmic: z.boolean().default(false),\n}));\n\n/**\n * Chart Series Schema\n * Defines a single data series in the chart\n */\nexport const ChartSeriesSchema = lazySchema(() => z.object({\n /** Field name for values */\n name: z.string().describe('Field name or series identifier'),\n \n /** Display label */\n label: I18nLabelSchema.optional().describe('Series display label'),\n \n /** Series type override (combo charts) */\n type: ChartTypeSchema.optional().describe('Override chart type for this series'),\n \n /** Specific color */\n color: z.string().optional().describe('Series color (hex/rgb/token)'),\n \n /** Stacking group */\n stack: z.string().optional().describe('Stack identifier to group series'),\n \n /** Axis binding */\n yAxis: z.enum(['left', 'right']).default('left').describe('Bind to specific Y-Axis'),\n}));\n\n/**\n * Chart Annotation Schema\n * Static lines or regions to highlight data\n */\nexport const ChartAnnotationSchema = lazySchema(() => z.object({\n type: z.enum(['line', 'region']).default('line'),\n axis: z.enum(['x', 'y']).default('y'),\n value: z.union([z.number(), z.string()]).describe('Start value'),\n endValue: z.union([z.number(), z.string()]).optional().describe('End value for regions'),\n color: z.string().optional(),\n label: I18nLabelSchema.optional(),\n style: z.enum(['solid', 'dashed', 'dotted']).default('dashed'),\n}));\n\n/**\n * Chart Interaction Schema\n */\nexport const ChartInteractionSchema = lazySchema(() => z.object({\n tooltips: z.boolean().default(true),\n zoom: z.boolean().default(false),\n brush: z.boolean().default(false),\n clickAction: z.string().optional().describe('Action ID to trigger on click'),\n}));\n\n/**\n * Chart Configuration Base\n * Common configuration for all chart types\n */\nexport const ChartConfigSchema = lazySchema(() => z.object({\n /** Chart Type */\n type: ChartTypeSchema,\n \n /** Titles */\n title: I18nLabelSchema.optional().describe('Chart title'),\n subtitle: I18nLabelSchema.optional().describe('Chart subtitle'),\n description: I18nLabelSchema.optional().describe('Accessibility description'),\n \n /** Axes Mapping */\n xAxis: ChartAxisSchema.optional().describe('X-Axis configuration'),\n yAxis: z.array(ChartAxisSchema).optional().describe('Y-Axis configuration (support dual axis)'),\n \n /** Series Configuration */\n series: z.array(ChartSeriesSchema).optional().describe('Defined series configuration'),\n \n /** Appearance */\n colors: z.array(z.string()).optional().describe('Color palette'),\n height: z.number().optional().describe('Fixed height in pixels'),\n \n /** Components */\n showLegend: z.boolean().default(true).describe('Display legend'),\n showDataLabels: z.boolean().default(false).describe('Display data labels'),\n \n /** Annotations & Reference Lines */\n annotations: z.array(ChartAnnotationSchema).optional(),\n \n /** Interactions */\n interaction: ChartInteractionSchema.optional(),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\nexport type ChartConfig = z.infer<typeof ChartConfigSchema>;\nexport type ChartAxis = z.infer<typeof ChartAxisSchema>;\nexport type ChartSeries = z.infer<typeof ChartSeriesSchema>;\nexport type ChartAnnotation = z.infer<typeof ChartAnnotationSchema>;\nexport type ChartInteraction = z.infer<typeof ChartInteractionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ChartTypeSchema, ChartConfigSchema } from './chart.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Color variant for dashboard widgets (e.g., KPI cards).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WidgetColorVariantSchema = lazySchema(() => z.enum([\n 'default',\n 'blue',\n 'teal',\n 'orange',\n 'purple',\n 'success',\n 'warning',\n 'danger',\n]).describe('Widget color variant'));\n\n/**\n * Action type for widget action buttons.\n */\nexport const WidgetActionTypeSchema = lazySchema(() => z.enum([\n 'script',\n 'url',\n 'modal',\n 'flow',\n 'api',\n]).describe('Widget action type'));\n\n/**\n * Dashboard Header Action Schema\n * An action button displayed in the dashboard header area.\n */\nexport const DashboardHeaderActionSchema = lazySchema(() => z.object({\n /** Action label */\n label: I18nLabelSchema.describe('Action button label'),\n\n /** Action URL or target */\n actionUrl: z.string().describe('URL or target for the action'),\n\n /** Action type */\n actionType: WidgetActionTypeSchema.optional().describe('Type of action'),\n\n /** Icon identifier */\n icon: z.string().optional().describe('Icon identifier for the action button'),\n}).describe('Dashboard header action'));\n\n/**\n * Dashboard Header Schema\n * Structured header configuration for the dashboard.\n */\nexport const DashboardHeaderSchema = lazySchema(() => z.object({\n /** Whether to show the dashboard title in the header */\n showTitle: z.boolean().default(true).describe('Show dashboard title in header'),\n\n /** Whether to show the dashboard description in the header */\n showDescription: z.boolean().default(true).describe('Show dashboard description in header'),\n\n /** Action buttons displayed in the header */\n actions: z.array(DashboardHeaderActionSchema).optional().describe('Header action buttons'),\n}).describe('Dashboard header configuration'));\n\n/**\n * Widget Measure Schema\n * A single measure definition for multi-measure pivot/matrix widgets.\n */\nexport const WidgetMeasureSchema = lazySchema(() => z.object({\n /** Value field to aggregate */\n valueField: z.string().describe('Field to aggregate'),\n\n /** Aggregate function */\n aggregate: z.enum(['count', 'sum', 'avg', 'min', 'max']).default('count').describe('Aggregate function'),\n\n /** Display label for the measure */\n label: I18nLabelSchema.optional().describe('Measure display label'),\n\n /** Number format string (e.g., \"$0,0.00\", \"0.0%\") */\n format: z.string().optional().describe('Number format string'),\n}).describe('Widget measure definition'));\n\n/**\n * Dashboard Widget Schema\n * A single component on the dashboard grid.\n */\nexport const DashboardWidgetSchema = lazySchema(() => z.object({\n /** Unique widget identifier (snake_case, used for targetWidgets references) */\n id: SnakeCaseIdentifierSchema.describe('Unique widget identifier (snake_case)'),\n\n /** Widget Title */\n title: I18nLabelSchema.optional().describe('Widget title'),\n\n /** Widget Description (displayed below the title) */\n description: I18nLabelSchema.optional().describe('Widget description text below the header'),\n \n /** Visualization Type */\n type: ChartTypeSchema.default('metric').describe('Visualization type'),\n \n /** Chart Configuration */\n chartConfig: ChartConfigSchema.optional().describe('Chart visualization configuration'),\n\n /** Color variant for the widget (e.g., KPI card accent color) */\n colorVariant: WidgetColorVariantSchema.optional().describe('Widget color variant for theming'),\n\n /**\n * Runtime capability gate — widget is hidden when the named object is\n * not registered in the runtime's SchemaRegistry. Mirrors\n * `NavigationItem.requiresObject` so cloud-only widgets (e.g. those\n * keyed on `sys_app` / `sys_package_installation`) silently disappear\n * in single-project runtimes instead of rendering a 404 error.\n *\n * Defaults to the widget's `object` field when not explicitly set —\n * any widget that targets an object will be gated on that object's\n * registration. Set this to a different value (or empty string to\n * disable) when the widget should appear even if its `object` is\n * unavailable.\n */\n requiresObject: z.string().optional().describe('Hide the widget unless the named object is registered'),\n\n /**\n * Runtime capability gate — widget is hidden when the named kernel\n * service is not registered. Mirrors `NavigationItem.requiresService`.\n */\n requiresService: z.string().optional().describe('Hide the widget unless the named kernel service is registered'),\n\n /** Action URL for the widget header action button */\n actionUrl: z.string().optional().describe('URL or target for the widget action button'),\n\n /** Action type for the widget header action button */\n actionType: WidgetActionTypeSchema.optional().describe('Type of action for the widget action button'),\n\n /** Icon for the widget header action button */\n actionIcon: z.string().optional().describe('Icon identifier for the widget action button'),\n \n /** Data Source Object */\n object: z.string().optional().describe('Data source object name'),\n \n /** Data Filter (MongoDB-style FilterCondition) */\n filter: FilterConditionSchema.optional().describe('Data filter criteria'),\n \n /** Category Field (X-Axis / Group By) */\n categoryField: z.string().optional().describe('Field for grouping (X-Axis)'),\n \n /** Value Field (Y-Axis) */\n valueField: z.string().optional().describe('Field for values (Y-Axis)'),\n \n /** Aggregate operation */\n aggregate: z.enum(['count', 'sum', 'avg', 'min', 'max']).optional().default('count').describe('Aggregate function'),\n \n /** Multi-measure definitions for pivot/matrix widgets */\n measures: z.array(WidgetMeasureSchema).optional().describe('Multiple measures for pivot/matrix analysis'),\n \n /** \n * Layout Position (React-Grid-Layout style)\n * x: column (0-11)\n * y: row\n * w: width (1-12)\n * h: height\n */\n layout: z.object({\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n }).describe('Grid layout position'),\n \n /** Widget specific options (colors, legend, etc.) */\n options: z.unknown().optional().describe('Widget specific configuration'),\n\n /** Responsive layout overrides per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive layout configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n}));\n\n/**\n * Dynamic options binding for global filters.\n * Allows dropdown options to be fetched from an object at runtime.\n */\nexport const GlobalFilterOptionsFromSchema = lazySchema(() => z.object({\n /** Source object name to fetch options from */\n object: z.string().describe('Source object name'),\n\n /** Field to use as option value */\n valueField: z.string().describe('Field to use as option value'),\n\n /** Field to use as option label */\n labelField: z.string().describe('Field to use as option label'),\n\n /** Optional filter to apply when fetching options */\n filter: FilterConditionSchema.optional().describe('Filter to apply to source object'),\n}).describe('Dynamic filter options from object'));\n\n/**\n * Global Filter Schema\n * Defines a single global filter control for the dashboard filter bar.\n */\nexport const GlobalFilterSchema = lazySchema(() => z.object({\n /** Field name to filter on */\n field: z.string().describe('Field name to filter on'),\n\n /** Display label for the filter */\n label: I18nLabelSchema.optional().describe('Display label for the filter'),\n\n /** Filter input type */\n type: z.enum(['text', 'select', 'date', 'number', 'lookup']).optional().describe('Filter input type'),\n\n /** Static options for select/lookup filters */\n options: z.array(z.object({\n value: z.union([z.string(), z.number(), z.boolean()]).describe('Option value'),\n label: I18nLabelSchema,\n })).optional().describe('Static filter options'),\n\n /** Dynamic data binding for filter options */\n optionsFrom: GlobalFilterOptionsFromSchema.optional().describe('Dynamic filter options from object'),\n\n /** Default filter value */\n defaultValue: z.union([z.string(), z.number(), z.boolean()]).optional().describe('Default filter value'),\n\n /** Filter application scope */\n scope: z.enum(['dashboard', 'widget']).default('dashboard').describe('Filter application scope'),\n\n /** Widget IDs to apply this filter to (when scope is widget) */\n targetWidgets: z.array(z.string()).optional().describe('Widget IDs to apply this filter to'),\n}));\n\n/**\n * Dashboard Schema\n * Represents a page containing multiple visualizations.\n * \n * @example Sales Executive Dashboard\n * {\n * name: \"sales_overview\",\n * label: \"Sales Executive Overview\",\n * widgets: [\n * {\n * title: \"Total Pipe\",\n * type: \"metric\",\n * object: \"opportunity\",\n * valueField: \"amount\",\n * aggregate: \"sum\",\n * layout: { x: 0, y: 0, w: 3, h: 2 }\n * },\n * {\n * title: \"Revenue by Region\",\n * type: \"bar\",\n * object: \"order\",\n * categoryField: \"region\",\n * valueField: \"total\",\n * aggregate: \"sum\",\n * layout: { x: 3, y: 0, w: 6, h: 4 }\n * }\n * ]\n * }\n */\nexport const DashboardSchema = lazySchema(() => z.object({\n /** Machine name */\n name: SnakeCaseIdentifierSchema.describe('Dashboard unique name'),\n \n /** Display label */\n label: I18nLabelSchema.describe('Dashboard label'),\n \n /** Description */\n description: I18nLabelSchema.optional().describe('Dashboard description'),\n\n /** Structured header configuration */\n header: DashboardHeaderSchema.optional().describe('Dashboard header configuration'),\n \n /** Collection of widgets */\n widgets: z.array(DashboardWidgetSchema).describe('Widgets to display'),\n\n /** Grid column count — defaults to 12 for a standard 12-column grid */\n columns: z.number().int().min(1).max(24).optional().describe('Number of grid columns (default 12)'),\n\n /** Grid gap in Tailwind spacing units (e.g. 4 = 1rem) */\n gap: z.number().int().min(0).optional().describe('Grid gap in Tailwind spacing units'),\n\n /** Auto-refresh */\n refreshInterval: z.number().optional().describe('Auto-refresh interval in seconds'),\n\n /** Dashboard Date Range (Global time filter) */\n dateRange: z.object({\n field: z.string().optional().describe('Default date field name for time-based filtering'),\n defaultRange: z.enum(['today', 'yesterday', 'this_week', 'last_week', 'this_month', 'last_month', 'this_quarter', 'last_quarter', 'this_year', 'last_year', 'last_7_days', 'last_30_days', 'last_90_days', 'custom']).default('this_month').describe('Default date range preset'),\n allowCustomRange: z.boolean().default(true).describe('Allow users to pick a custom date range'),\n }).optional().describe('Global dashboard date range filter configuration'),\n\n /** Global Filters */\n globalFilters: z.array(GlobalFilterSchema).optional().describe('Global filters that apply to all widgets in the dashboard'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n}));\n\nexport type Dashboard = z.infer<typeof DashboardSchema>;\nexport type DashboardInput = z.input<typeof DashboardSchema>;\nexport type DashboardWidget = z.infer<typeof DashboardWidgetSchema>;\nexport type DashboardHeader = z.infer<typeof DashboardHeaderSchema>;\nexport type DashboardHeaderAction = z.infer<typeof DashboardHeaderActionSchema>;\nexport type WidgetMeasure = z.infer<typeof WidgetMeasureSchema>;\nexport type WidgetColorVariant = z.infer<typeof WidgetColorVariantSchema>;\nexport type WidgetActionType = z.infer<typeof WidgetActionTypeSchema>;\nexport type GlobalFilter = z.infer<typeof GlobalFilterSchema>;\nexport type GlobalFilterOptionsFrom = z.infer<typeof GlobalFilterOptionsFromSchema>;\n\n/**\n * Dashboard Factory Helper\n */\nexport const Dashboard = {\n create: (config: z.input<typeof DashboardSchema>): Dashboard => DashboardSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { FilterConditionSchema } from '../data/filter.zod';\nimport { ChartConfigSchema } from './chart.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\nimport { ResponsiveConfigSchema, PerformanceConfigSchema } from './responsive.zod';\n\n/**\n * Report Type Enum\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ReportType = z.enum([\n 'tabular', // Simple list\n 'summary', // Grouped by row\n 'matrix', // Grouped by row and column\n 'joined' // Joined multiple blocks\n]);\n\n/**\n * Report Column Schema\n */\nexport const ReportColumnSchema = lazySchema(() => z.object({\n field: z.string().describe('Field name'),\n label: I18nLabelSchema.optional().describe('Override label'),\n aggregate: z.enum(['sum', 'avg', 'max', 'min', 'count', 'unique']).optional().describe('Aggregation function'),\n /** Responsive visibility/priority per breakpoint */\n responsive: ResponsiveConfigSchema.optional().describe('Responsive visibility for this column'),\n}));\n\n/**\n * Report Grouping Schema\n */\nexport const ReportGroupingSchema = lazySchema(() => z.object({\n field: z.string().describe('Field to group by'),\n sortOrder: z.enum(['asc', 'desc']).default('asc'),\n dateGranularity: z.enum(['day', 'week', 'month', 'quarter', 'year']).optional().describe('For date fields'),\n}));\n\n/**\n * Report Chart Schema\n * Embedded visualization configuration using unified chart taxonomy.\n */\nexport const ReportChartSchema = lazySchema(() => ChartConfigSchema.extend({\n /** Report-specific chart configuration */\n xAxis: z.string().describe('Grouping field for X-Axis'),\n yAxis: z.string().describe('Summary field for Y-Axis'),\n groupBy: z.string().optional().describe('Additional grouping field'),\n}));\n\n/**\n * Joined Report Block Schema\n *\n * Represents a single sub-report inside a `type: 'joined'` report. Each block\n * is a self-contained, independently-queried report stacked vertically (or\n * arranged in a grid) inside the joined container. Blocks are used for\n * comparative dashboards where each panel is a different slice of the same\n * domain — e.g. \"new customers / churned / silent\" in a customer-churn\n * report, or \"new / qualified / closed\" in a lead-funnel report.\n *\n * Blocks may declare their own filter (combined with the container filter\n * via `$and` at render time) and their own grouping / aggregation.\n *\n * Notes for implementers:\n * - `type` defaults to `tabular` — leave a block's type implicit if the\n * sub-report is just a list. Set explicitly to `summary` or `matrix` for\n * aggregated blocks.\n * - The schema is intentionally permissive about the column shape: blocks\n * are not allowed to be themselves `joined` (no recursion).\n */\nexport const JoinedReportBlockSchema: z.ZodTypeAny = lazySchema(() => z.object({\n /** Stable id for the block (used as react key, telemetry, deeplinks). */\n name: SnakeCaseIdentifierSchema,\n /** Human label shown above the block. Falls back to `name`. */\n label: I18nLabelSchema.optional(),\n /** Optional description rendered below the label. */\n description: I18nLabelSchema.optional(),\n /** Block report type — `joined` is intentionally excluded (no recursion). */\n type: z.enum(['tabular', 'summary', 'matrix']).default('tabular'),\n /** Object queried by this block. Defaults to the container's objectName. */\n objectName: z.string().optional(),\n /** Columns to display / aggregate. Same shape as `Report.columns`. */\n columns: z.array(ReportColumnSchema),\n /** Row groupings (same shape as `Report.groupingsDown`). */\n groupingsDown: z.array(ReportGroupingSchema).optional(),\n /** Column groupings — only meaningful when `type: matrix`. */\n groupingsAcross: z.array(ReportGroupingSchema).optional(),\n /** Block-specific filter, ANDed with the container filter at render time. */\n filter: FilterConditionSchema.optional(),\n /** Optional inline chart configuration. */\n chart: ReportChartSchema.optional(),\n}));\n\n/**\n * Report Schema\n * Deep data analysis definition.\n */\nexport const ReportSchema = lazySchema(() => z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Report unique name'),\n label: I18nLabelSchema.describe('Report label'),\n description: I18nLabelSchema.optional(),\n \n /** Data Source */\n objectName: z.string().describe('Primary object'),\n \n /** Report Configuration */\n type: ReportType.default('tabular').describe('Report format type'),\n \n columns: z.array(ReportColumnSchema).describe('Columns to display'),\n \n /** Grouping (for Summary/Matrix) */\n groupingsDown: z.array(ReportGroupingSchema).optional().describe('Row groupings'),\n groupingsAcross: z.array(ReportGroupingSchema).optional().describe('Column groupings (Matrix only)'),\n \n /** Filtering (MongoDB-style FilterCondition) */\n filter: FilterConditionSchema.optional().describe('Filter criteria'),\n \n /** Visualization */\n chart: ReportChartSchema.optional().describe('Embedded chart configuration'),\n\n /** ARIA accessibility attributes */\n aria: AriaPropsSchema.optional().describe('ARIA accessibility attributes'),\n\n /** Performance optimization settings */\n performance: PerformanceConfigSchema.optional().describe('Performance optimization settings'),\n\n /**\n * Joined report blocks — only meaningful when `type: 'joined'`.\n *\n * A joined report renders multiple independent sub-reports stacked\n * vertically in the same view. Each block declares its own object,\n * columns, groupings and filter. The container-level `filter` is ANDed\n * into every block at query time so a top-level scope (e.g. \"this\n * quarter\") flows down without per-block duplication.\n *\n * Renderers must ignore `blocks` when `type !== 'joined'`.\n */\n blocks: z.array(JoinedReportBlockSchema).optional().describe('Sub-reports for type=joined'),\n}));\n\nexport type JoinedReportBlock = z.infer<typeof JoinedReportBlockSchema>;\nexport type JoinedReportBlockInput = z.input<typeof JoinedReportBlockSchema>;\n\n/**\n * Report Types\n * \n * Note: For configuration/definition contexts, use the Input types (e.g., ReportInput)\n * which allow optional fields with defaults to be omitted.\n */\nexport type Report = z.infer<typeof ReportSchema>;\nexport type ReportColumn = z.infer<typeof ReportColumnSchema>;\nexport type ReportGrouping = z.infer<typeof ReportGroupingSchema>;\nexport type ReportChart = z.infer<typeof ReportChartSchema>;\n\n/**\n * Input Types for Report Configuration\n * Use these when defining reports in configuration files.\n */\nexport type ReportInput = z.input<typeof ReportSchema>;\nexport type ReportColumnInput = z.input<typeof ReportColumnSchema>;\nexport type ReportGroupingInput = z.input<typeof ReportGroupingSchema>;\nexport type ReportChartInput = z.input<typeof ReportChartSchema>;\n\n/**\n * Report Factory Helper\n */\nexport const Report = {\n create: (config: ReportInput): Report => ReportSchema.parse(config),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Touch Target Configuration Schema\n * Ensures touch targets meet WCAG 2.5.5 minimum size requirements (44x44px).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const TouchTargetConfigSchema = lazySchema(() => z.object({\n minWidth: z.number().default(44).describe('Minimum touch target width in pixels (WCAG 2.5.5: 44px)'),\n minHeight: z.number().default(44).describe('Minimum touch target height in pixels (WCAG 2.5.5: 44px)'),\n padding: z.number().optional().describe('Additional padding around touch target in pixels'),\n hitSlop: z.object({\n top: z.number().optional().describe('Extra hit area above the element'),\n right: z.number().optional().describe('Extra hit area to the right of the element'),\n bottom: z.number().optional().describe('Extra hit area below the element'),\n left: z.number().optional().describe('Extra hit area to the left of the element'),\n }).optional().describe('Invisible hit area extension beyond the visible bounds'),\n}).describe('Touch target sizing configuration (WCAG accessible)'));\n\nexport type TouchTargetConfig = z.infer<typeof TouchTargetConfigSchema>;\n\n/**\n * Gesture Type Enum\n * Supported touch gesture types.\n */\nexport const GestureTypeSchema = lazySchema(() => z.enum([\n 'swipe',\n 'pinch',\n 'long_press',\n 'double_tap',\n 'drag',\n 'rotate',\n 'pan',\n]).describe('Touch gesture type'));\n\nexport type GestureType = z.infer<typeof GestureTypeSchema>;\n\n/**\n * Swipe Direction Enum\n */\nexport const SwipeDirectionSchema = lazySchema(() => z.enum(['up', 'down', 'left', 'right']));\n\nexport type SwipeDirection = z.infer<typeof SwipeDirectionSchema>;\n\n/**\n * Swipe Gesture Configuration Schema\n */\nexport const SwipeGestureConfigSchema = lazySchema(() => z.object({\n direction: z.array(SwipeDirectionSchema).describe('Allowed swipe directions'),\n threshold: z.number().optional().describe('Minimum distance in pixels to recognize swipe'),\n velocity: z.number().optional().describe('Minimum velocity (px/ms) to trigger swipe'),\n}).describe('Swipe gesture recognition settings'));\n\nexport type SwipeGestureConfig = z.infer<typeof SwipeGestureConfigSchema>;\n\n/**\n * Pinch Gesture Configuration Schema\n */\nexport const PinchGestureConfigSchema = lazySchema(() => z.object({\n minScale: z.number().optional().describe('Minimum scale factor (e.g., 0.5 for 50%)'),\n maxScale: z.number().optional().describe('Maximum scale factor (e.g., 3.0 for 300%)'),\n}).describe('Pinch/zoom gesture recognition settings'));\n\nexport type PinchGestureConfig = z.infer<typeof PinchGestureConfigSchema>;\n\n/**\n * Long Press Gesture Configuration Schema\n */\nexport const LongPressGestureConfigSchema = lazySchema(() => z.object({\n duration: z.number().default(500).describe('Hold duration in milliseconds to trigger long press'),\n moveTolerance: z.number().optional().describe('Max movement in pixels allowed during press'),\n}).describe('Long press gesture recognition settings'));\n\nexport type LongPressGestureConfig = z.infer<typeof LongPressGestureConfigSchema>;\n\n/**\n * Gesture Configuration Schema\n * Unified configuration for all supported gesture types.\n */\nexport const GestureConfigSchema = lazySchema(() => z.object({\n type: GestureTypeSchema.describe('Gesture type to configure'),\n label: I18nLabelSchema.optional().describe('Descriptive label for the gesture action'),\n enabled: z.boolean().default(true).describe('Whether this gesture is active'),\n swipe: SwipeGestureConfigSchema.optional().describe('Swipe gesture settings (when type is swipe)'),\n pinch: PinchGestureConfigSchema.optional().describe('Pinch gesture settings (when type is pinch)'),\n longPress: LongPressGestureConfigSchema.optional().describe('Long press settings (when type is long_press)'),\n}).describe('Per-gesture configuration'));\n\nexport type GestureConfig = z.infer<typeof GestureConfigSchema>;\n\n/**\n * Touch Interaction Schema\n * Top-level touch and gesture interaction configuration for a component.\n */\nexport const TouchInteractionSchema = lazySchema(() => z.object({\n gestures: z.array(GestureConfigSchema).optional().describe('Configured gesture recognizers'),\n touchTarget: TouchTargetConfigSchema.optional().describe('Touch target sizing and hit area'),\n hapticFeedback: z.boolean().optional().describe('Enable haptic feedback on touch interactions'),\n}).merge(AriaPropsSchema.partial()).describe('Touch and gesture interaction configuration'));\n\nexport type TouchInteraction = z.infer<typeof TouchInteractionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { I18nLabelSchema, AriaPropsSchema } from './i18n.zod';\n\n/**\n * Focus Trap Configuration Schema\n * Constrains keyboard focus within a specific container (e.g., modals, dialogs).\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FocusTrapConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false).describe('Enable focus trapping within this container'),\n initialFocus: z.string().optional().describe('CSS selector for the element to focus on activation'),\n returnFocus: z.boolean().default(true).describe('Return focus to trigger element on deactivation'),\n escapeDeactivates: z.boolean().default(true).describe('Allow Escape key to deactivate the focus trap'),\n}).describe('Focus trap configuration for modal-like containers'));\n\nexport type FocusTrapConfig = z.infer<typeof FocusTrapConfigSchema>;\n\n/**\n * Keyboard Shortcut Schema\n * Defines a single keyboard shortcut binding.\n */\nexport const KeyboardShortcutSchema = lazySchema(() => z.object({\n key: z.string().describe('Key combination (e.g., \"Ctrl+S\", \"Alt+N\", \"Escape\")'),\n action: z.string().describe('Action identifier to invoke when shortcut is triggered'),\n description: I18nLabelSchema.optional().describe('Human-readable description of what the shortcut does'),\n scope: z.enum(['global', 'view', 'form', 'modal', 'list']).default('global')\n .describe('Scope in which this shortcut is active'),\n}).describe('Keyboard shortcut binding'));\n\nexport type KeyboardShortcut = z.infer<typeof KeyboardShortcutSchema>;\n\n/**\n * Focus Management Schema\n * Controls tab order, focus visibility, and navigation behavior.\n */\nexport const FocusManagementSchema = lazySchema(() => z.object({\n tabOrder: z.enum(['auto', 'manual']).default('auto')\n .describe('Tab order strategy: auto (DOM order) or manual (explicit tabIndex)'),\n skipLinks: z.boolean().default(false).describe('Provide skip-to-content navigation links'),\n focusVisible: z.boolean().default(true).describe('Show visible focus indicators for keyboard users'),\n focusTrap: FocusTrapConfigSchema.optional().describe('Focus trap settings'),\n arrowNavigation: z.boolean().default(false)\n .describe('Enable arrow key navigation between focusable items'),\n}).describe('Focus and tab navigation management'));\n\nexport type FocusManagement = z.infer<typeof FocusManagementSchema>;\n\n/**\n * Keyboard Navigation Configuration Schema\n * Top-level keyboard navigation and shortcut configuration.\n */\nexport const KeyboardNavigationConfigSchema = lazySchema(() => z.object({\n shortcuts: z.array(KeyboardShortcutSchema).optional().describe('Registered keyboard shortcuts'),\n focusManagement: FocusManagementSchema.optional().describe('Focus and tab order management'),\n rovingTabindex: z.boolean().default(false)\n .describe('Enable roving tabindex pattern for composite widgets'),\n}).merge(AriaPropsSchema.partial()).describe('Keyboard navigation and shortcut configuration'));\n\nexport type KeyboardNavigationConfig = z.infer<typeof KeyboardNavigationConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { TouchTargetConfigSchema } from './touch.zod';\nimport { FocusManagementSchema } from './keyboard.zod';\n\n/**\n * Color Palette Schema\n * Defines brand colors and their variants.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ColorPaletteSchema = lazySchema(() => z.object({\n primary: z.string().describe('Primary brand color (hex, rgb, or hsl)'),\n secondary: z.string().optional().describe('Secondary brand color'),\n accent: z.string().optional().describe('Accent color for highlights'),\n success: z.string().optional().describe('Success state color (default: green)'),\n warning: z.string().optional().describe('Warning state color (default: yellow)'),\n error: z.string().optional().describe('Error state color (default: red)'),\n info: z.string().optional().describe('Info state color (default: blue)'),\n \n // Neutral colors\n background: z.string().optional().describe('Background color'),\n surface: z.string().optional().describe('Surface/card background color'),\n text: z.string().optional().describe('Primary text color'),\n textSecondary: z.string().optional().describe('Secondary text color'),\n border: z.string().optional().describe('Border color'),\n disabled: z.string().optional().describe('Disabled state color'),\n \n // Color variants (shades)\n primaryLight: z.string().optional().describe('Lighter shade of primary'),\n primaryDark: z.string().optional().describe('Darker shade of primary'),\n secondaryLight: z.string().optional().describe('Lighter shade of secondary'),\n secondaryDark: z.string().optional().describe('Darker shade of secondary'),\n}));\n\n/**\n * Typography Settings Schema\n * Font families, sizes, weights, and line heights.\n */\nexport const TypographySchema = lazySchema(() => z.object({\n fontFamily: z.object({\n base: z.string().optional().describe('Base font family (default: system fonts)'),\n heading: z.string().optional().describe('Heading font family'),\n mono: z.string().optional().describe('Monospace font family for code'),\n }).optional(),\n \n fontSize: z.object({\n xs: z.string().optional().describe('Extra small font size (e.g., 0.75rem)'),\n sm: z.string().optional().describe('Small font size (e.g., 0.875rem)'),\n base: z.string().optional().describe('Base font size (e.g., 1rem)'),\n lg: z.string().optional().describe('Large font size (e.g., 1.125rem)'),\n xl: z.string().optional().describe('Extra large font size (e.g., 1.25rem)'),\n '2xl': z.string().optional().describe('2X large font size (e.g., 1.5rem)'),\n '3xl': z.string().optional().describe('3X large font size (e.g., 1.875rem)'),\n '4xl': z.string().optional().describe('4X large font size (e.g., 2.25rem)'),\n }).optional(),\n \n fontWeight: z.object({\n light: z.number().optional().describe('Light weight (default: 300)'),\n normal: z.number().optional().describe('Normal weight (default: 400)'),\n medium: z.number().optional().describe('Medium weight (default: 500)'),\n semibold: z.number().optional().describe('Semibold weight (default: 600)'),\n bold: z.number().optional().describe('Bold weight (default: 700)'),\n }).optional(),\n \n lineHeight: z.object({\n tight: z.string().optional().describe('Tight line height (e.g., 1.25)'),\n normal: z.string().optional().describe('Normal line height (e.g., 1.5)'),\n relaxed: z.string().optional().describe('Relaxed line height (e.g., 1.75)'),\n loose: z.string().optional().describe('Loose line height (e.g., 2)'),\n }).optional(),\n \n letterSpacing: z.object({\n tighter: z.string().optional().describe('Tighter letter spacing (e.g., -0.05em)'),\n tight: z.string().optional().describe('Tight letter spacing (e.g., -0.025em)'),\n normal: z.string().optional().describe('Normal letter spacing (e.g., 0)'),\n wide: z.string().optional().describe('Wide letter spacing (e.g., 0.025em)'),\n wider: z.string().optional().describe('Wider letter spacing (e.g., 0.05em)'),\n }).optional(),\n}));\n\n/**\n * Spacing Units Schema\n * Defines spacing scale for margins, padding, gaps.\n */\nexport const SpacingSchema = lazySchema(() => z.object({\n '0': z.string().optional().describe('0 spacing (0)'),\n '1': z.string().optional().describe('Spacing unit 1 (e.g., 0.25rem)'),\n '2': z.string().optional().describe('Spacing unit 2 (e.g., 0.5rem)'),\n '3': z.string().optional().describe('Spacing unit 3 (e.g., 0.75rem)'),\n '4': z.string().optional().describe('Spacing unit 4 (e.g., 1rem)'),\n '5': z.string().optional().describe('Spacing unit 5 (e.g., 1.25rem)'),\n '6': z.string().optional().describe('Spacing unit 6 (e.g., 1.5rem)'),\n '8': z.string().optional().describe('Spacing unit 8 (e.g., 2rem)'),\n '10': z.string().optional().describe('Spacing unit 10 (e.g., 2.5rem)'),\n '12': z.string().optional().describe('Spacing unit 12 (e.g., 3rem)'),\n '16': z.string().optional().describe('Spacing unit 16 (e.g., 4rem)'),\n '20': z.string().optional().describe('Spacing unit 20 (e.g., 5rem)'),\n '24': z.string().optional().describe('Spacing unit 24 (e.g., 6rem)'),\n}));\n\n/**\n * Border Radius Schema\n * Rounded corners configuration.\n */\nexport const BorderRadiusSchema = lazySchema(() => z.object({\n none: z.string().optional().describe('No border radius (0)'),\n sm: z.string().optional().describe('Small border radius (e.g., 0.125rem)'),\n base: z.string().optional().describe('Base border radius (e.g., 0.25rem)'),\n md: z.string().optional().describe('Medium border radius (e.g., 0.375rem)'),\n lg: z.string().optional().describe('Large border radius (e.g., 0.5rem)'),\n xl: z.string().optional().describe('Extra large border radius (e.g., 0.75rem)'),\n '2xl': z.string().optional().describe('2X large border radius (e.g., 1rem)'),\n full: z.string().optional().describe('Full border radius (50%)'),\n}));\n\n/**\n * Shadow Schema\n * Box shadow effects.\n */\nexport const ShadowSchema = lazySchema(() => z.object({\n none: z.string().optional().describe('No shadow'),\n sm: z.string().optional().describe('Small shadow'),\n base: z.string().optional().describe('Base shadow'),\n md: z.string().optional().describe('Medium shadow'),\n lg: z.string().optional().describe('Large shadow'),\n xl: z.string().optional().describe('Extra large shadow'),\n '2xl': z.string().optional().describe('2X large shadow'),\n inner: z.string().optional().describe('Inner shadow (inset)'),\n}));\n\n/**\n * Breakpoints Schema\n * Responsive design breakpoints.\n */\nexport const BreakpointsSchema = lazySchema(() => z.object({\n xs: z.string().optional().describe('Extra small breakpoint (e.g., 480px)'),\n sm: z.string().optional().describe('Small breakpoint (e.g., 640px)'),\n md: z.string().optional().describe('Medium breakpoint (e.g., 768px)'),\n lg: z.string().optional().describe('Large breakpoint (e.g., 1024px)'),\n xl: z.string().optional().describe('Extra large breakpoint (e.g., 1280px)'),\n '2xl': z.string().optional().describe('2X large breakpoint (e.g., 1536px)'),\n}));\n\n/**\n * Animation Schema\n * Animation timing and duration settings.\n */\nexport const AnimationSchema = lazySchema(() => z.object({\n duration: z.object({\n fast: z.string().optional().describe('Fast animation (e.g., 150ms)'),\n base: z.string().optional().describe('Base animation (e.g., 300ms)'),\n slow: z.string().optional().describe('Slow animation (e.g., 500ms)'),\n }).optional(),\n \n timing: z.object({\n linear: z.string().optional().describe('Linear timing function'),\n ease: z.string().optional().describe('Ease timing function'),\n ease_in: z.string().optional().describe('Ease-in timing function'),\n ease_out: z.string().optional().describe('Ease-out timing function'),\n ease_in_out: z.string().optional().describe('Ease-in-out timing function'),\n }).optional(),\n}));\n\n/**\n * Z-Index Scale Schema\n * Layering and stacking order.\n */\nexport const ZIndexSchema = lazySchema(() => z.object({\n base: z.number().optional().describe('Base z-index (e.g., 0)'),\n dropdown: z.number().optional().describe('Dropdown z-index (e.g., 1000)'),\n sticky: z.number().optional().describe('Sticky z-index (e.g., 1020)'),\n fixed: z.number().optional().describe('Fixed z-index (e.g., 1030)'),\n modalBackdrop: z.number().optional().describe('Modal backdrop z-index (e.g., 1040)'),\n modal: z.number().optional().describe('Modal z-index (e.g., 1050)'),\n popover: z.number().optional().describe('Popover z-index (e.g., 1060)'),\n tooltip: z.number().optional().describe('Tooltip z-index (e.g., 1070)'),\n}));\n\n/**\n * Theme Mode Schema\n */\nexport const ThemeModeSchema = lazySchema(() => z.enum(['light', 'dark', 'auto']));\n\n/** @deprecated Use ThemeModeSchema instead */\nexport const ThemeMode = ThemeModeSchema;\n\n/**\n * Density Mode Schema\n * Controls spacing and sizing for different use cases.\n */\nexport const DensityModeSchema = lazySchema(() => z.enum(['compact', 'regular', 'spacious']));\n\n/** @deprecated Use DensityModeSchema instead */\nexport const DensityMode = DensityModeSchema;\n\n/**\n * WCAG Contrast Level Schema\n * Web Content Accessibility Guidelines color contrast requirements.\n */\nexport const WcagContrastLevelSchema = lazySchema(() => z.enum(['AA', 'AAA']));\n\n/** @deprecated Use WcagContrastLevelSchema instead */\nexport const WcagContrastLevel = WcagContrastLevelSchema;\n\n/**\n * Theme Configuration Schema\n * Complete theme definition for brand customization.\n */\nexport const ThemeSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Unique theme identifier (snake_case)'),\n label: z.string().describe('Human-readable theme name'),\n description: z.string().optional().describe('Theme description'),\n \n /** Theme mode */\n mode: ThemeModeSchema.default('light').describe('Theme mode (light, dark, or auto)'),\n \n /** Color system */\n colors: ColorPaletteSchema.describe('Color palette configuration'),\n \n /** Typography */\n typography: TypographySchema.optional().describe('Typography settings'),\n \n /** Spacing */\n spacing: SpacingSchema.optional().describe('Spacing scale'),\n \n /** Border radius */\n borderRadius: BorderRadiusSchema.optional().describe('Border radius scale'),\n \n /** Shadows */\n shadows: ShadowSchema.optional().describe('Box shadow effects'),\n \n /** Breakpoints */\n breakpoints: BreakpointsSchema.optional().describe('Responsive breakpoints'),\n \n /** Animation */\n animation: AnimationSchema.optional().describe('Animation settings'),\n \n /** Z-Index */\n zIndex: ZIndexSchema.optional().describe('Z-index scale for layering'),\n \n /** Custom CSS variables */\n customVars: z.record(z.string(), z.string()).optional().describe('Custom CSS variables (key-value pairs)'),\n \n /** Logo */\n logo: z.object({\n light: z.string().optional().describe('Logo URL for light mode'),\n dark: z.string().optional().describe('Logo URL for dark mode'),\n favicon: z.string().optional().describe('Favicon URL'),\n }).optional().describe('Logo assets'),\n \n /** Extends another theme */\n extends: z.string().optional().describe('Base theme to extend from'),\n\n /** Display density mode */\n density: DensityModeSchema.optional().describe('Display density: compact, regular, or spacious'),\n\n /** WCAG contrast level requirement */\n wcagContrast: WcagContrastLevelSchema.optional().describe('WCAG color contrast level (AA or AAA)'),\n\n /** Right-to-left language support */\n rtl: z.boolean().optional().describe('Enable right-to-left layout direction'),\n\n /** Touch target accessibility configuration */\n touchTarget: TouchTargetConfigSchema.optional().describe('Touch target sizing defaults'),\n\n /** Keyboard navigation and focus management */\n keyboardNavigation: FocusManagementSchema.optional().describe('Keyboard focus management settings'),\n}));\n\nexport type Theme = z.infer<typeof ThemeSchema>;\nexport type ColorPalette = z.infer<typeof ColorPaletteSchema>;\nexport type Typography = z.infer<typeof TypographySchema>;\nexport type Spacing = z.infer<typeof SpacingSchema>;\nexport type BorderRadius = z.infer<typeof BorderRadiusSchema>;\nexport type Shadow = z.infer<typeof ShadowSchema>;\nexport type Breakpoints = z.infer<typeof BreakpointsSchema>;\nexport type Animation = z.infer<typeof AnimationSchema>;\nexport type ZIndex = z.infer<typeof ZIndexSchema>;\nexport type ThemeMode = z.infer<typeof ThemeModeSchema>;\nexport type DensityMode = z.infer<typeof DensityModeSchema>;\nexport type WcagContrastLevel = z.infer<typeof WcagContrastLevelSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Approval Step Approver Type\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ApproverType = z.enum([\n 'user', // Specific user(s)\n 'role', // Users with specific role (sys_member.role)\n 'team', // Members of a flat collaboration team (sys_team)\n 'department', // Members of a department + all descendant departments (sys_department)\n 'manager', // Submitter's manager (sys_user.manager_id)\n 'field', // User ID defined in a record field\n 'queue' // Data ownership queue\n]);\n\n/**\n * Approval Action Type\n * Actions to execute on transition\n */\nexport const ApprovalActionType = z.enum([\n 'field_update',\n 'email_alert',\n 'webhook',\n 'script',\n 'connector_action', // Added for Zapier-style integrations\n 'inbox_notify', // M11.C15.B — write a sys_notification row\n]);\n\n/**\n * definition of an action to perform\n */\nexport const ApprovalActionSchema = lazySchema(() => z.object({\n type: ApprovalActionType,\n name: z.string().describe('Action name'),\n config: z.record(z.string(), z.unknown()).describe('Action configuration'),\n \n /** For connector actions */\n connectorId: z.string().optional(),\n actionId: z.string().optional(),\n}));\n\n/**\n * Approval Process Step\n */\nexport const ApprovalStepSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Step machine name'),\n label: z.string().describe('Step display label'),\n description: z.string().optional(),\n \n /** Entry criteria for this step */\n entryCriteria: ExpressionInputSchema.optional().describe('Predicate (CEL) to enter this step.'),\n \n /** Who can approve */\n approvers: z.array(z.object({\n type: ApproverType,\n value: z.string().describe('User ID, Role Name, or Field Name')\n })).min(1).describe('List of allowed approvers'),\n \n /** Approval Logic */\n behavior: z.enum(['first_response', 'unanimous']).default('first_response')\n .describe('How to handle multiple approvers'),\n \n /** Rejection behavior */\n rejectionBehavior: z.enum(['reject_process', 'back_to_previous'])\n .default('reject_process').describe('What happens if rejected'),\n\n /** Actions */\n onApprove: z.array(ApprovalActionSchema).optional().describe('Actions on step approval'),\n onReject: z.array(ApprovalActionSchema).optional().describe('Actions on step rejection'),\n}));\n\n/**\n * Approval Process Protocol\n * \n * Defines a complex review and approval cycle for a record.\n * Manages state locking, notifications, and transition logic.\n */\nexport const ApprovalProcessSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Unique process name'),\n label: z.string().describe('Human readable label'),\n object: z.string().describe('Target Object Name'),\n \n active: z.boolean().default(false),\n description: z.string().optional(),\n \n /** Entry Criteria for the entire process */\n entryCriteria: ExpressionInputSchema.optional().describe('Predicate (CEL) to allow submission.'),\n \n /** Record Locking */\n lockRecord: z.boolean().default(true).describe('Lock record from editing during approval'),\n\n /**\n * M11.C15.B — name of a field on the business object where the\n * engine mirrors the request status (e.g. `'approval_status'`).\n * Values written: 'pending' | 'approved' | 'rejected' | 'recalled'\n * | 'not_submitted'. The field should be declared as readonly on\n * the object so users can filter / display it but not edit it.\n * If omitted, no status mirror is written and the engine only\n * exposes status via `sys_approval_request`.\n */\n approvalStatusField: z.string().optional().describe(\n 'Field name on the business object to mirror the request status.',\n ),\n \n /** Steps */\n steps: z.array(ApprovalStepSchema).min(1).describe('Sequence of approval steps'),\n\n /** Escalation Configuration (SLA-based auto-escalation) */\n escalation: z.object({\n enabled: z.boolean().default(false).describe('Enable SLA-based escalation'),\n timeoutHours: z.number().min(1).describe('Hours before escalation triggers'),\n action: z.enum(['reassign', 'auto_approve', 'auto_reject', 'notify']).default('notify').describe('Action to take on escalation timeout'),\n escalateTo: z.string().optional().describe('User ID, role, or manager level to escalate to'),\n notifySubmitter: z.boolean().default(true).describe('Notify the original submitter on escalation'),\n }).optional().describe('SLA escalation configuration for pending approval steps'),\n \n /** Global Actions */\n onSubmit: z.array(ApprovalActionSchema).optional().describe('Actions on initial submission'),\n onFinalApprove: z.array(ApprovalActionSchema).optional().describe('Actions on final approval'),\n onFinalReject: z.array(ApprovalActionSchema).optional().describe('Actions on final rejection'),\n onRecall: z.array(ApprovalActionSchema).optional().describe('Actions on recall'),\n}));\n\nexport const ApprovalProcess = Object.assign(ApprovalProcessSchema, {\n create: <T extends z.input<typeof ApprovalProcessSchema>>(config: T) => config,\n});\n\nexport type ApprovalProcess = z.infer<typeof ApprovalProcessSchema>;\nexport type ApprovalStep = z.infer<typeof ApprovalStepSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Trigger events for workflow automation\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WorkflowTriggerType = z.enum([\n 'on_create', // When record is created\n 'on_update', // When record is updated\n 'on_create_or_update', // Both\n 'on_delete', // When record is deleted\n 'schedule' // Time-based (cron)\n]);\n\n/**\n * Schema for Workflow Field Update Action\n * @example\n * {\n * name: \"update_status\",\n * type: \"field_update\",\n * field: \"status\",\n * value: \"approved\"\n * }\n */\nexport const FieldUpdateActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('field_update'),\n field: z.string().describe('Field to update'),\n value: z.unknown().describe('Value or Formula to set'),\n}));\n\n/**\n * Schema for Workflow Email Alert Action\n * @example\n * {\n * name: \"send_approval_email\",\n * type: \"email_alert\",\n * template: \"approval_request_email\",\n * recipients: [\"user_id_123\", \"manager_field\"]\n * }\n */\nexport const EmailAlertActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('email_alert'),\n template: z.string().describe('Email template ID/DevName'),\n recipients: z.array(z.string()).describe('List of recipient emails or user IDs'),\n}));\n\n/**\n * Schema for Connector Action Reference\n * Executes a capability defined in an integration connector.\n * Replaces hardcoded vendor actions (Slack, Twilio, etc).\n * \n * @example Send Slack Message\n * {\n * name: \"notify_slack\",\n * type: \"connector_action\",\n * connectorId: \"slack\",\n * actionId: \"post_message\",\n * input: {\n * channel: \"#general\",\n * text: \"New deal closed: {name}\"\n * }\n * }\n */\nexport const ConnectorActionRefSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('connector_action'),\n connectorId: z.string().describe('Target Connector ID (e.g. slack, twilio)'),\n actionId: z.string().describe('Target Action ID (e.g. send_message)'),\n input: z.record(z.string(), z.unknown()).describe('Input parameters matching the action schema'),\n}));\n\n/**\n * Schema for HTTP Callout Action\n * Makes a REST API call to an external service.\n * @example\n * {\n * name: \"sync_to_erp\",\n * type: \"http_call\",\n * url: \"https://erp.api/orders\",\n * method: \"POST\",\n * headers: { \"Authorization\": \"Bearer {token}\" },\n * body: \"{ ... }\"\n * }\n */\nexport const HttpCallActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('http_call'),\n url: z.string().describe('Target URL'),\n method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH']).default('POST').describe('HTTP Method'),\n headers: z.record(z.string(), z.string()).optional().describe('HTTP Headers'),\n body: z.string().optional().describe('Request body (JSON or text)'),\n}));\n\n/**\n * Schema for Workflow Task Creation Action\n * @example\n * {\n * name: \"create_followup_task\",\n * type: \"task_creation\",\n * taskObject: \"tasks\",\n * subject: \"Follow up with client\",\n * dueDate: \"TODAY() + 3\"\n * }\n */\nexport const TaskCreationActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('task_creation'),\n taskObject: z.string().describe('Task object name (e.g., \"task\", \"project_task\")'),\n subject: z.string().describe('Task subject/title'),\n description: z.string().optional().describe('Task description'),\n assignedTo: z.string().optional().describe('User ID or field reference for assignee'),\n dueDate: ExpressionInputSchema.optional().describe('Due date — CEL expression evaluated at task creation, e.g. cel`now() + duration(\"P3D\")`'),\n priority: z.string().optional().describe('Task priority'),\n relatedTo: z.string().optional().describe('Related record ID or field reference'),\n additionalFields: z.record(z.string(), z.unknown()).optional().describe('Additional custom fields'),\n}));\n\n/**\n * Schema for Workflow Push Notification Action\n */\nexport const PushNotificationActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('push_notification'),\n title: z.string().describe('Notification title'),\n body: z.string().describe('Notification body text'),\n recipients: z.array(z.string()).describe('User IDs or device tokens'),\n data: z.record(z.string(), z.unknown()).optional().describe('Additional data payload'),\n badge: z.number().optional().describe('Badge count (iOS)'),\n sound: z.string().optional().describe('Notification sound'),\n clickAction: z.string().optional().describe('Action/URL when notification is clicked'),\n}));\n\n/**\n * Schema for Workflow Custom Script Action\n */\nexport const CustomScriptActionSchema = lazySchema(() => z.object({\n name: z.string().describe('Action name'),\n type: z.literal('custom_script'),\n language: z.enum(['javascript', 'typescript', 'python']).default('javascript').describe('Script language'),\n code: z.string().describe('Script code to execute'),\n timeout: z.number().default(30000).describe('Execution timeout in milliseconds'),\n context: z.record(z.string(), z.unknown()).optional().describe('Additional context variables'),\n}));\n\n/**\n * Universal Workflow Action Schema\n * Union of all supported action types.\n */\nexport const WorkflowActionSchema = lazySchema(() => z.discriminatedUnion('type', [\n FieldUpdateActionSchema,\n EmailAlertActionSchema,\n HttpCallActionSchema,\n ConnectorActionRefSchema,\n TaskCreationActionSchema,\n PushNotificationActionSchema,\n CustomScriptActionSchema,\n]));\n\nexport type WorkflowAction = z.infer<typeof WorkflowActionSchema>;\n\n/**\n * Time Trigger Definition\n * Schedules actions to run relative to a specific time or date field.\n */\nexport const TimeTriggerSchema = lazySchema(() => z.object({\n id: z.string().optional().describe('Unique identifier'),\n \n /** Timing Logic */\n timeLength: z.number().int().describe('Duration amount (e.g. 1, 30)'),\n timeUnit: z.enum(['minutes', 'hours', 'days']).describe('Unit of time'),\n \n /** Reference Point */\n offsetDirection: z.enum(['before', 'after']).describe('Before or After the reference date'),\n offsetFrom: z.enum(['trigger_date', 'date_field']).describe('Basis for calculation'),\n dateField: z.string().optional().describe('Date field to calculate from (required if offsetFrom is date_field)'),\n \n /** Actions */\n actions: z.array(WorkflowActionSchema).describe('Actions to execute at the scheduled time'),\n}));\n\n/**\n * Schema for Workflow Rules (Automation)\n * \n * **NAMING CONVENTION:**\n * Workflow names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good workflow names\n * - 'send_welcome_email'\n * - 'update_lead_status'\n * - 'notify_manager_on_close'\n * - 'calculate_discount'\n * \n * @example Bad workflow names (will be rejected)\n * - 'SendWelcomeEmail' (PascalCase)\n * - 'updateLeadStatus' (camelCase)\n * - 'Send Welcome Email' (spaces)\n * \n * @example Complete Workflow\n * {\n * name: \"new_lead_process\",\n * objectName: \"lead\",\n * triggerType: \"on_create\",\n * criteria: \"amount > 1000\",\n * active: true,\n * actions: [\n * {\n * name: \"set_status\",\n * type: \"field_update\",\n * field: \"status\",\n * value: \"new\"\n * },\n * {\n * name: \"notify_team\",\n * type: \"connector_action\",\n * connectorId: \"slack\",\n * actionId: \"post_message\",\n * input: { channel: \"#sales\", text: \"New high value lead!\" }\n * }\n * ],\n * timeTriggers: [\n * {\n * timeLength: 2,\n * timeUnit: \"days\",\n * offsetDirection: \"after\",\n * offsetFrom: \"trigger_date\",\n * actions: [\n * {\n * name: \"followup_check\",\n * type: \"task_creation\",\n * taskObject: \"task\",\n * subject: \"Follow up lead\",\n * dueDate: \"TODAY()\"\n * }\n * ]\n * }\n * ]\n * }\n */\nexport const WorkflowRuleSchema = lazySchema(() => z.object({\n /** Machine name */\n name: SnakeCaseIdentifierSchema.describe('Unique workflow name (lowercase snake_case)'),\n \n /** Target Object */\n objectName: z.string().describe('Target Object'),\n \n /** When to evaluate the rule */\n triggerType: WorkflowTriggerType.describe('When to evaluate'),\n \n /** \n * Condition to start the workflow.\n * If empty, runs on every trigger event.\n */\n criteria: ExpressionInputSchema.optional().describe('Predicate (CEL). If TRUE, actions execute.'),\n \n /** Actions to execute immediately */\n actions: z.array(WorkflowActionSchema).optional().describe('Immediate actions'),\n \n /** \n * Time-Dependent Actions \n * Actions scheduled to run in the future.\n */\n timeTriggers: z.array(TimeTriggerSchema).optional().describe('Scheduled actions relative to trigger or date field'),\n \n /** Active status */\n active: z.boolean().default(true).describe('Whether this workflow is active'),\n\n /** Execution Order */\n executionOrder: z.number().int().min(0).default(100).describe('Deterministic execution order when multiple workflows match (lower runs first)'),\n \n /** Recursion Control */\n reevaluateOnChange: z.boolean().default(false).describe('Re-evaluate rule if field updates change the record validity'),\n}));\n\nexport type WorkflowRule = z.infer<typeof WorkflowRuleSchema>;\nexport type TimeTrigger = z.infer<typeof TimeTriggerSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Flow Node Types\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FlowNodeAction = z.enum([\n 'start', // Trigger\n 'end', // Return/Stop\n 'decision', // If/Else logic\n 'assignment', // Set Variable\n 'loop', // For Each\n 'create_record', // CRUD: Create\n 'update_record', // CRUD: Update\n 'delete_record', // CRUD: Delete\n 'get_record', // CRUD: Get/Query\n 'http_request', // Webhook/API Call\n 'script', // Custom Script (JS/TS)\n 'screen', // Screen / User-Input Element\n 'wait', // Delay/Sleep\n 'subflow', // Call another flow\n 'connector_action', // Zapier-style integration action\n 'parallel_gateway', // BPMN Parallel Gateway — AND-split (all outgoing branches execute concurrently)\n 'join_gateway', // BPMN Join Gateway — AND-join (waits for all incoming branches to complete)\n 'boundary_event', // BPMN Boundary Event — attached to a host node for timer/error/signal interrupts\n]);\n\n/**\n * Flow Variable Schema\n * Variables available within the flow execution context.\n */\nexport const FlowVariableSchema = lazySchema(() => z.object({\n name: z.string().describe('Variable name'),\n type: z.string().describe('Data type (text, number, boolean, object, list)'),\n isInput: z.boolean().default(false).describe('Is input parameter'),\n isOutput: z.boolean().default(false).describe('Is output parameter'),\n}));\n\n/**\n * Flow Node Schema\n * A single step in the visual logic graph.\n * \n * @example Decision Node\n * {\n * id: \"dec_1\",\n * type: \"decision\",\n * label: \"Is High Value?\",\n * config: {\n * conditions: [\n * { label: \"Yes\", expression: \"{amount} > 10000\" },\n * { label: \"No\", expression: \"true\" } // default\n * ]\n * },\n * position: { x: 300, y: 200 }\n * }\n */\nexport const FlowNodeSchema = lazySchema(() => z.object({\n id: z.string().describe('Node unique ID'),\n type: FlowNodeAction.describe('Action type'),\n label: z.string().describe('Node label'),\n \n /** Node Configuration Options (Specific to type) */\n config: z.record(z.string(), z.unknown()).optional().describe('Node configuration'),\n \n /** \n * Connector Action Configuration\n * Used when type is 'connector_action'\n */\n connectorConfig: z.object({\n connectorId: z.string(),\n actionId: z.string(),\n input: z.record(z.string(), z.unknown()).describe('Mapped inputs for the action'),\n }).optional(),\n\n /** UI Position (for the canvas) */\n position: z.object({ x: z.number(), y: z.number() }).optional(),\n\n /** Node-level execution timeout */\n timeoutMs: z.number().int().min(0).optional().describe('Maximum execution time for this node in milliseconds'),\n\n /** Node input schema declaration for Studio form generation and runtime validation */\n inputSchema: z.record(z.string(), z.object({\n type: z.enum(['string', 'number', 'boolean', 'object', 'array']).describe('Parameter type'),\n required: z.boolean().default(false).describe('Whether the parameter is required'),\n description: z.string().optional().describe('Parameter description'),\n })).optional().describe('Input parameter schema for this node'),\n\n /** Node output schema declaration */\n outputSchema: z.record(z.string(), z.object({\n type: z.enum(['string', 'number', 'boolean', 'object', 'array']).describe('Output type'),\n description: z.string().optional().describe('Output description'),\n })).optional().describe('Output schema declaration for this node'),\n\n /**\n * Wait Event Configuration (for 'wait' nodes)\n * Defines what external event or condition should resume the paused execution.\n * Industry alignment: BPMN Intermediate Catch Events, Temporal Signals.\n */\n waitEventConfig: z.object({\n /** Type of event to wait for */\n eventType: z.enum(['timer', 'signal', 'webhook', 'manual', 'condition'])\n .describe('What kind of event resumes the execution'),\n /** Duration to wait (ISO 8601 duration or milliseconds) — for timer events */\n timerDuration: z.string().optional().describe('ISO 8601 duration (e.g., \"PT1H\") or wait time for timer events'),\n /** Signal name to listen for — for signal/webhook events */\n signalName: z.string().optional().describe('Named signal or webhook event to wait for'),\n /** Timeout before auto-failing or continuing — optional guard */\n timeoutMs: z.number().int().min(0).optional().describe('Maximum wait time before timeout (ms)'),\n /** Action to take on timeout */\n onTimeout: z.enum(['fail', 'continue']).default('fail').describe('Behavior when the wait times out'),\n }).optional().describe('Configuration for wait node event resumption'),\n\n /**\n * Boundary Event Configuration (for 'boundary_event' nodes)\n * Attaches an event handler to a host activity node (BPMN Boundary Event pattern).\n * Industry alignment: BPMN Boundary Error/Timer/Signal Events.\n */\n boundaryConfig: z.object({\n /** ID of the host node this boundary event is attached to */\n attachedToNodeId: z.string().describe('Host node ID this boundary event monitors'),\n /** Type of boundary event */\n eventType: z.enum(['error', 'timer', 'signal', 'cancel'])\n .describe('Boundary event trigger type'),\n /** Whether the boundary event interrupts the host activity */\n interrupting: z.boolean().default(true)\n .describe('If true, the host activity is cancelled when this event fires'),\n /** Error code filter — only for error boundary events */\n errorCode: z.string().optional().describe('Specific error code to catch (empty = catch all errors)'),\n /** Timer duration — only for timer boundary events */\n timerDuration: z.string().optional().describe('ISO 8601 duration for timer boundary events'),\n /** Signal name — only for signal boundary events */\n signalName: z.string().optional().describe('Named signal to catch'),\n }).optional().describe('Configuration for boundary events attached to host nodes'),\n}));\n\n/**\n * Flow Edge Schema\n * Connections between nodes.\n */\nexport const FlowEdgeSchema = lazySchema(() => z.object({\n id: z.string().describe('Edge unique ID'),\n source: z.string().describe('Source Node ID'),\n target: z.string().describe('Target Node ID'),\n \n /** Condition for this path (only for decision/branch nodes) */\n condition: ExpressionInputSchema.optional().describe('Predicate (CEL) returning boolean used for branching.'),\n \n type: z.enum(['default', 'fault', 'conditional']).default('default')\n .describe('Connection type: default (normal flow), fault (error path), or conditional (expression-guarded)'),\n label: z.string().optional().describe('Label on the connector'),\n\n /**\n * Default Sequence Flow marker (BPMN Default Flow semantics).\n * When true, this edge is taken when no sibling conditional edges match.\n * Only meaningful on outgoing edges of decision/gateway nodes.\n */\n isDefault: z.boolean().default(false)\n .describe('Marks this edge as the default path when no other conditions match'),\n}));\n\n/**\n * Flow Schema\n * Visual Business Logic Orchestration.\n * \n * @example Simple Approval Logic\n * {\n * name: \"approve_order_flow\",\n * label: \"Approve Large Orders\",\n * type: \"record_change\",\n * status: \"active\",\n * nodes: [\n * { id: \"start\", type: \"start\", label: \"Start\", position: {x: 0, y: 0} },\n * { id: \"check_amount\", type: \"decision\", label: \"Check Amount\", position: {x: 0, y: 100} },\n * { id: \"auto_approve\", type: \"update_record\", label: \"Auto Approve\", position: {x: -100, y: 200} },\n * { id: \"submit_for_approval\", type: \"connector_action\", label: \"Submit\", position: {x: 100, y: 200} }\n * ],\n * edges: [\n * { id: \"e1\", source: \"start\", target: \"check_amount\" },\n * { id: \"e2\", source: \"check_amount\", target: \"auto_approve\", condition: \"{amount} < 500\" },\n * { id: \"e3\", source: \"check_amount\", target: \"submit_for_approval\", condition: \"{amount} >= 500\" }\n * ]\n * }\n */\nexport const FlowSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine name'),\n label: z.string().describe('Flow label'),\n description: z.string().optional(),\n \n /** Metadata & Versioning */\n version: z.number().int().default(1).describe('Version number'),\n status: z.enum(['draft', 'active', 'obsolete', 'invalid']).default('draft').describe('Deployment status'),\n template: z.boolean().default(false).describe('Is logic template (Subflow)'),\n\n /** Trigger Type */\n type: z.enum(['autolaunched', 'record_change', 'schedule', 'screen', 'api']).describe('Flow type'),\n \n /** Configuration Variables */\n variables: z.array(FlowVariableSchema).optional().describe('Flow variables'),\n \n /** Graph Definition */\n nodes: z.array(FlowNodeSchema).describe('Flow nodes'),\n edges: z.array(FlowEdgeSchema).describe('Flow connections'),\n \n /** Execution Config */\n active: z.boolean().default(false).describe('Is active (Deprecated: use status)'),\n runAs: z.enum(['system', 'user']).default('user').describe('Execution context'),\n\n /** Error Handling Strategy */\n errorHandling: z.object({\n strategy: z.enum(['fail', 'retry', 'continue']).default('fail').describe('How to handle node execution errors'),\n maxRetries: z.number().int().min(0).max(10).default(0).describe('Number of retry attempts (only for retry strategy)'),\n retryDelayMs: z.number().int().min(0).default(1000).describe('Delay between retries in milliseconds'),\n backoffMultiplier: z.number().min(1).default(1).describe('Multiplier for exponential backoff between retries'),\n maxRetryDelayMs: z.number().int().min(0).default(30000).describe('Maximum delay between retries in milliseconds'),\n jitter: z.boolean().default(false).describe('Add random jitter to retry delay to avoid thundering herd'),\n fallbackNodeId: z.string().optional().describe('Node ID to jump to on unrecoverable error'),\n }).optional().describe('Flow-level error handling configuration'),\n}));\n\n/**\n * Type-safe factory for creating flow definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const onCreateFlow = defineFlow({\n * name: 'on_task_create',\n * label: 'On Task Create',\n * type: 'record_change',\n * nodes: [\n * { id: 'start', type: 'start', label: 'Start' },\n * { id: 'end', type: 'end', label: 'End' },\n * ],\n * edges: [{ id: 'e1', source: 'start', target: 'end' }],\n * });\n * ```\n */\nexport function defineFlow(config: z.input<typeof FlowSchema>): FlowParsed {\n return FlowSchema.parse(config);\n}\n\nexport type Flow = z.input<typeof FlowSchema>;\nexport type FlowParsed = z.infer<typeof FlowSchema>;\nexport type FlowNode = z.input<typeof FlowNodeSchema>;\nexport type FlowNodeParsed = z.infer<typeof FlowNodeSchema>;\nexport type FlowEdge = z.input<typeof FlowEdgeSchema>;\nexport type FlowEdgeParsed = z.infer<typeof FlowEdgeSchema>;\n\n/**\n * Flow Version History Schema\n * Tracks historical versions of flow definitions for rollback support.\n *\n * Industry alignment: Salesforce Flow Versions, n8n Workflow History.\n */\nexport const FlowVersionHistorySchema = lazySchema(() => z.object({\n flowName: z.string().describe('Flow machine name'),\n version: z.number().int().min(1).describe('Version number'),\n definition: FlowSchema.describe('Complete flow definition snapshot'),\n createdAt: z.string().datetime().describe('When this version was created'),\n createdBy: z.string().optional().describe('User who created this version'),\n changeNote: z.string().optional().describe('Description of what changed in this version'),\n}));\n\nexport type FlowVersionHistory = z.input<typeof FlowVersionHistorySchema>;\nexport type FlowVersionHistoryParsed = z.infer<typeof FlowVersionHistorySchema>;\n","// 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 * Role Schema (aka Business Unit / Org Unit)\n * Defines the organizational hierarchy (Reporting Structure).\n * \n * COMPARISON:\n * - Salesforce: \"Role\" (Hierarchy for visibility rollup)\n * - Microsoft: \"Business Unit\" (Structural container for data)\n * - Kubernetes/AWS: \"Role\" usually refers to Permissions (we use PermissionSet for that)\n * \n * ROLES IN OBJECTSTACK:\n * Used primarily for \"Reporting Structure\" - Managers see subordinates' data.\n * \n * **NAMING CONVENTION:**\n * Role names MUST be lowercase snake_case to prevent security issues.\n * \n * @example Good role names\n * - 'sales_manager'\n * - 'ceo'\n * - 'region_east_vp'\n * - 'engineering_lead'\n * \n * @example Bad role names (will be rejected)\n * - 'SalesManager' (camelCase)\n * - 'CEO' (uppercase)\n * - 'Region East VP' (spaces and uppercase)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const RoleSchema = lazySchema(() => z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Unique role name (lowercase snake_case)'),\n label: z.string().describe('Display label (e.g. VP of Sales)'),\n \n /** Hierarchy */\n parent: z.string().optional().describe('Parent Role ID (Reports To)'),\n \n /** Description */\n description: z.string().optional(),\n}));\n\nexport type Role = z.infer<typeof RoleSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * # Row-Level Security (RLS) Protocol\n * \n * Implements fine-grained record-level access control inspired by PostgreSQL RLS\n * and Salesforce Criteria-Based Sharing Rules.\n * \n * ## Overview\n * \n * Row-Level Security (RLS) allows you to control which rows users can access\n * in database tables based on their identity and role. Unlike object-level\n * permissions (CRUD), RLS provides record-level filtering.\n * \n * ## Use Cases\n * \n * 1. **Multi-Tenant Data Isolation**\n * - Users only see records from their organization\n * - `using: \"organization_id = current_user.organization_id\"`\n * \n * 2. **Ownership-Based Access**\n * - Users only see records they own\n * - `using: \"owner_id = current_user.id\"`\n * \n * 3. **Department-Based Access**\n * - Users only see records from their department\n * - `using: \"department = current_user.department\"`\n * \n * 4. **Regional Access Control**\n * - Sales reps only see accounts in their territory\n * - `using: \"region IN (current_user.assigned_regions)\"`\n * \n * 5. **Time-Based Access**\n * - Users can only access active records\n * - `using: \"status = 'active' AND expiry_date > NOW()\"`\n * \n * ## PostgreSQL RLS Comparison\n * \n * PostgreSQL RLS Example:\n * ```sql\n * CREATE POLICY tenant_isolation ON accounts\n * FOR SELECT\n * USING (tenant_id = current_setting('app.current_tenant_id')::uuid);\n * \n * CREATE POLICY account_insert ON accounts\n * FOR INSERT\n * WITH CHECK (tenant_id = current_setting('app.current_tenant_id')::uuid);\n * ```\n * \n * ObjectStack RLS Equivalent:\n * ```typescript\n * {\n * name: 'tenant_isolation',\n * object: 'account',\n * operation: 'select',\n * using: 'organization_id = current_user.organization_id'\n * }\n * ```\n * \n * ## Salesforce Sharing Rules Comparison\n * \n * Salesforce uses \"Sharing Rules\" and \"Role Hierarchy\" for record-level access.\n * ObjectStack RLS provides similar functionality with more flexibility.\n * \n * Salesforce:\n * - Criteria-Based Sharing: Share records matching criteria with users/roles\n * - Owner-Based Sharing: Share records based on owner's role\n * - Manual Sharing: Individual record sharing\n * \n * ObjectStack RLS:\n * - More flexible formula-based conditions\n * - Direct SQL-like syntax\n * - Supports complex logic with AND/OR/NOT\n * \n * ## Best Practices\n * \n * 1. **Always Define SELECT Policy**: Control what users can view\n * 2. **Define INSERT/UPDATE CHECK Policies**: Prevent data leakage\n * 3. **Use Role-Based Policies**: Apply different rules to different roles\n * 4. **Test Thoroughly**: RLS can have complex interactions\n * 5. **Monitor Performance**: Complex RLS policies can impact query performance\n * \n * ## Security Considerations\n * \n * 1. **Defense in Depth**: RLS is one layer; use with object permissions\n * 2. **Default Deny**: If no policy matches, access is denied\n * 3. **Policy Precedence**: More permissive policy wins (OR logic)\n * 4. **Context Variables**: Ensure current_user context is always set\n * \n * @see https://www.postgresql.org/docs/current/ddl-rowsecurity.html\n * @see https://help.salesforce.com/s/articleView?id=sf.security_sharing_rules.htm\n */\n\n/**\n * RLS Operation Enum\n * Specifies which database operation this policy applies to.\n * \n * - **select**: Controls which rows can be read (SELECT queries)\n * - **insert**: Controls which rows can be inserted (INSERT statements)\n * - **update**: Controls which rows can be updated (UPDATE statements)\n * - **delete**: Controls which rows can be deleted (DELETE statements)\n * - **all**: Shorthand for all operations (equivalent to defining 4 separate policies)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const RLSOperation = z.enum(['select', 'insert', 'update', 'delete', 'all']);\n\nexport type RLSOperation = z.infer<typeof RLSOperation>;\n\n/**\n * Row-Level Security Policy Schema\n * \n * Defines a single RLS policy that filters records based on conditions.\n * Multiple policies can be defined for the same object, and they are\n * combined with OR logic (union of results).\n * \n * @example Multi-Tenant Isolation\n * ```typescript\n * {\n * name: 'tenant_isolation',\n * label: 'Multi-Tenant Data Isolation',\n * object: 'account',\n * operation: 'select',\n * using: 'organization_id = current_user.organization_id',\n * enabled: true\n * }\n * ```\n * \n * @example Owner-Based Access\n * ```typescript\n * {\n * name: 'owner_access',\n * label: 'Users Can View Their Own Records',\n * object: 'opportunity',\n * operation: 'select',\n * using: 'owner_id = current_user.id',\n * enabled: true\n * }\n * ```\n * \n * @example Manager Can View Team Records\n * ```typescript\n * {\n * name: 'manager_team_access',\n * label: 'Managers Can View Team Records',\n * object: 'task',\n * operation: 'select',\n * using: 'assigned_to_id IN (SELECT id FROM users WHERE manager_id = current_user.id)',\n * roles: ['manager', 'director'],\n * enabled: true\n * }\n * ```\n * \n * @example Prevent Cross-Tenant Data Insertion\n * ```typescript\n * {\n * name: 'tenant_insert_check',\n * label: 'Prevent Cross-Tenant Data Creation',\n * object: 'account',\n * operation: 'insert',\n * check: 'organization_id = current_user.organization_id',\n * enabled: true\n * }\n * ```\n * \n * @example Regional Sales Access\n * ```typescript\n * {\n * name: 'regional_sales_access',\n * label: 'Sales Reps Access Regional Accounts',\n * object: 'account',\n * operation: 'select',\n * using: 'region = current_user.region OR region IS NULL',\n * roles: ['sales_rep'],\n * enabled: true\n * }\n * ```\n * \n * @example Time-Based Access Control\n * ```typescript\n * {\n * name: 'active_records_only',\n * label: 'Users Only Access Active Records',\n * object: 'contract',\n * operation: 'select',\n * using: 'status = \"active\" AND start_date <= NOW() AND end_date >= NOW()',\n * enabled: true\n * }\n * ```\n * \n * @example Hierarchical Access (Role-Based)\n * ```typescript\n * {\n * name: 'executive_full_access',\n * label: 'Executives See All Records',\n * object: 'account',\n * operation: 'all',\n * using: '1 = 1', // Always true - see everything\n * roles: ['ceo', 'cfo', 'cto'],\n * enabled: true\n * }\n * ```\n */\nexport const RowLevelSecurityPolicySchema = lazySchema(() => z.object({\n /**\n * Unique identifier for this policy.\n * Must be unique within the object.\n * Use snake_case following ObjectStack naming conventions.\n * \n * @example \"tenant_isolation\", \"owner_access\", \"manager_team_view\"\n */\n name: z.string()\n .regex(/^[a-z_][a-z0-9_]*$/)\n .describe('Policy unique identifier (snake_case)'),\n\n /**\n * Human-readable label for the policy.\n * Used in admin UI and logs.\n * \n * @example \"Multi-Tenant Data Isolation\", \"Owner-Based Access\"\n */\n label: z.string()\n .optional()\n .describe('Human-readable policy label'),\n\n /**\n * Description explaining what this policy does and why.\n * Helps with governance and compliance.\n * \n * @example \"Ensures users can only access records from their own tenant organization\"\n */\n description: z.string()\n .optional()\n .describe('Policy description and business justification'),\n\n /**\n * Target object (table) this policy applies to.\n * Must reference a valid ObjectStack object name.\n * \n * @example \"account\", \"opportunity\", \"contact\", \"custom_object\"\n */\n object: z.string()\n .describe('Target object name'),\n\n /**\n * Database operation(s) this policy applies to.\n * \n * - **select**: Controls read access (SELECT queries)\n * - **insert**: Controls insert access (INSERT statements)\n * - **update**: Controls update access (UPDATE statements)\n * - **delete**: Controls delete access (DELETE statements)\n * - **all**: Applies to all operations\n * \n * @example \"select\" - Most common, controls what users can view\n * @example \"all\" - Apply same rule to all operations\n */\n operation: RLSOperation\n .describe('Database operation this policy applies to'),\n\n /**\n * USING clause - Filter condition for SELECT/UPDATE/DELETE.\n * \n * This is a SQL-like expression evaluated for each row.\n * Only rows where this expression returns TRUE are accessible.\n * \n * **Note**: For INSERT-only policies, USING is not required (only CHECK is needed).\n * For SELECT/UPDATE/DELETE operations, USING is required.\n * \n * **Security Note**: RLS conditions are executed at the database level with\n * parameterized queries. The implementation must use prepared statements\n * to prevent SQL injection. Never concatenate user input directly into\n * RLS conditions.\n * \n * **SQL Dialect**: Compatible with PostgreSQL SQL syntax. Implementations\n * may adapt to other databases (MySQL, SQL Server, etc.) but should maintain\n * semantic equivalence.\n * \n * Available context variables:\n * - `current_user.id` - Current user's ID\n * - `current_user.organization_id` - Active organization id (maps to `tenantId` in RLSUserContext / `ExecutionContext.tenantId`)\n * - `current_user.role` - Current user's role\n * - `current_user.department` - Current user's department\n * - `current_user.*` - Any custom user field\n * - `NOW()` - Current timestamp\n * - `CURRENT_DATE` - Current date\n * - `CURRENT_TIME` - Current time\n * \n * **Context Variable Mapping**: The RLSUserContext schema uses camelCase (e.g., `tenantId`),\n * but expressions use snake_case with `current_user.` prefix (e.g., `current_user.organization_id`).\n * Implementations must handle this mapping.\n * \n * Supported operators:\n * - Comparison: =, !=, <, >, <=, >=, <> (not equal)\n * - Logical: AND, OR, NOT\n * - NULL checks: IS NULL, IS NOT NULL\n * - Set operations: IN, NOT IN\n * - String: LIKE, NOT LIKE, ILIKE (case-insensitive)\n * - Pattern matching: ~ (regex), !~ (not regex)\n * - Subqueries: (SELECT ...)\n * - Array operations: ANY, ALL\n * \n * **Prohibited**: Dynamic SQL, DDL statements, DML statements (INSERT/UPDATE/DELETE)\n * \n * @example \"organization_id = current_user.organization_id\"\n * @example \"owner_id = current_user.id OR created_by = current_user.id\"\n * @example \"department IN (SELECT department FROM user_departments WHERE user_id = current_user.id)\"\n * @example \"status = 'active' AND expiry_date > NOW()\"\n */\n using: z.string()\n .optional()\n .describe('Filter condition for SELECT/UPDATE/DELETE (PostgreSQL SQL WHERE clause syntax with parameterized context variables). Optional for INSERT-only policies.'),\n\n /**\n * CHECK clause - Validation for INSERT/UPDATE operations.\n * \n * Similar to USING but applies to new/modified rows.\n * Prevents users from creating/updating rows they wouldn't be able to see.\n * \n * **Default Behavior**: If not specified, implementations should use the\n * USING clause as the CHECK clause. This ensures data integrity by preventing\n * users from creating records they cannot view.\n * \n * Use cases:\n * - Prevent cross-tenant data creation\n * - Enforce mandatory field values\n * - Validate data integrity rules\n * - Restrict certain operations (e.g., only allow creating \"draft\" status)\n * \n * @example \"organization_id = current_user.organization_id\"\n * @example \"status IN ('draft', 'pending')\" - Only allow certain statuses\n * @example \"created_by = current_user.id\" - Must be the creator\n */\n check: z.string()\n .optional()\n .describe('Validation condition for INSERT/UPDATE (defaults to USING clause if not specified - enforced at application level)'),\n\n /**\n * Restrict this policy to specific roles.\n * If specified, only users with these roles will have this policy applied.\n * If omitted, policy applies to all users (except those with bypassRLS permission).\n * \n * Role names must match defined roles in the system.\n * \n * @example [\"sales_rep\", \"account_manager\"]\n * @example [\"employee\"] - Apply to all employees\n * @example [\"guest\"] - Special restrictions for guests\n */\n roles: z.array(z.string())\n .optional()\n .describe('Roles this policy applies to (omit for all roles)'),\n\n /**\n * Whether this policy is currently active.\n * Disabled policies are not evaluated.\n * Useful for temporary policy changes without deletion.\n * \n * @default true\n */\n enabled: z.boolean()\n .default(true)\n .describe('Whether this policy is active'),\n\n /**\n * Policy priority for conflict resolution.\n * Higher numbers = higher priority.\n * When multiple policies apply, the most permissive wins (OR logic).\n * Priority is only used for ordering evaluation (performance).\n * \n * @default 0\n */\n priority: z.number()\n .int()\n .default(0)\n .describe('Policy evaluation priority (higher = evaluated first)'),\n\n /**\n * Tags for policy categorization and reporting.\n * Useful for governance, compliance, and auditing.\n * \n * @example [\"compliance\", \"gdpr\", \"pci\"]\n * @example [\"multi-tenant\", \"security\"]\n */\n tags: z.array(z.string())\n .optional()\n .describe('Policy categorization tags'),\n}).superRefine((data, ctx) => {\n // Ensure at least one of USING or CHECK is provided\n if (!data.using && !data.check) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'At least one of \"using\" or \"check\" must be specified. For SELECT/UPDATE/DELETE operations, provide \"using\". For INSERT operations, provide \"check\".',\n });\n }\n \n // For non-insert operations, USING should typically be present\n // This is a soft warning through documentation, not enforced here\n // since 'all' and mixed operation types are valid\n}));\n\n/**\n * RLS Audit Event Schema\n * \n * Records a single RLS policy evaluation event for compliance and debugging.\n */\nexport const RLSAuditEventSchema = lazySchema(() => z.object({\n /** ISO 8601 timestamp of the evaluation */\n timestamp: z.string()\n .describe('ISO 8601 timestamp of the evaluation'),\n\n /** ID of the user whose access was evaluated */\n userId: z.string()\n .describe('User ID whose access was evaluated'),\n\n /** Database operation being performed */\n operation: z.enum(['select', 'insert', 'update', 'delete'])\n .describe('Database operation being performed'),\n\n /** Target object (table) name */\n object: z.string()\n .describe('Target object name'),\n\n /** Name of the RLS policy evaluated */\n policyName: z.string()\n .describe('Name of the RLS policy evaluated'),\n\n /** Whether access was granted */\n granted: z.boolean()\n .describe('Whether access was granted'),\n\n /** Time taken to evaluate the policy in milliseconds */\n evaluationDurationMs: z.number()\n .describe('Policy evaluation duration in milliseconds'),\n\n /** Which USING/CHECK clause matched */\n matchedCondition: z.string()\n .optional()\n .describe('Which USING/CHECK clause matched'),\n\n /** Number of rows affected by the operation */\n rowCount: z.number()\n .optional()\n .describe('Number of rows affected'),\n\n /** Additional metadata for the audit event */\n metadata: z.record(z.string(), z.unknown())\n .optional()\n .describe('Additional audit event metadata'),\n}));\n\nexport type RLSAuditEvent = z.infer<typeof RLSAuditEventSchema>;\n\n/**\n * RLS Audit Configuration Schema\n * \n * Controls how RLS policy evaluations are logged and monitored.\n */\nexport const RLSAuditConfigSchema = lazySchema(() => z.object({\n /** Enable RLS audit logging */\n enabled: z.boolean()\n .describe('Enable RLS audit logging'),\n\n /** Which evaluations to log */\n logLevel: z.enum(['all', 'denied_only', 'granted_only', 'none'])\n .describe('Which evaluations to log'),\n\n /** Where to send audit logs */\n destination: z.enum(['system_log', 'audit_trail', 'external'])\n .describe('Audit log destination'),\n\n /** Sampling rate for high-traffic environments (0-1) */\n sampleRate: z.number()\n .min(0)\n .max(1)\n .describe('Sampling rate (0-1) for high-traffic environments'),\n\n /** Number of days to retain audit logs */\n retentionDays: z.number()\n .int()\n .default(90)\n .describe('Audit log retention period in days'),\n\n /** Whether to include row data in audit logs (security-sensitive) */\n includeRowData: z.boolean()\n .default(false)\n .describe('Include row data in audit logs (security-sensitive)'),\n\n /** Alert when access is denied */\n alertOnDenied: z.boolean()\n .default(true)\n .describe('Send alerts when access is denied'),\n}));\n\nexport type RLSAuditConfig = z.infer<typeof RLSAuditConfigSchema>;\n\n/**\n * RLS Configuration Schema\n * \n * Global configuration for the Row-Level Security system.\n * Defines how RLS is enforced across the entire platform.\n */\nexport const RLSConfigSchema = lazySchema(() => z.object({\n /**\n * Global RLS enable/disable flag.\n * When false, all RLS policies are ignored (use with caution!).\n * \n * @default true\n */\n enabled: z.boolean()\n .default(true)\n .describe('Enable RLS enforcement globally'),\n\n /**\n * Default behavior when no policies match.\n * \n * - **deny**: Deny access (secure default)\n * - **allow**: Allow access (permissive mode, not recommended)\n * \n * @default \"deny\"\n */\n defaultPolicy: z.enum(['deny', 'allow'])\n .default('deny')\n .describe('Default action when no policies match'),\n\n /**\n * Whether to allow superusers to bypass RLS.\n * Superusers include system administrators and service accounts.\n * \n * @default true\n */\n allowSuperuserBypass: z.boolean()\n .default(true)\n .describe('Allow superusers to bypass RLS'),\n\n /**\n * List of roles that can bypass RLS.\n * Users with these roles see all records regardless of policies.\n * \n * @example [\"system_admin\", \"data_auditor\"]\n */\n bypassRoles: z.array(z.string())\n .optional()\n .describe('Roles that bypass RLS (see all data)'),\n\n /**\n * Whether to log RLS policy evaluations.\n * Useful for debugging and auditing.\n * Can impact performance if enabled globally.\n * \n * @default false\n */\n logEvaluations: z.boolean()\n .default(false)\n .describe('Log RLS policy evaluations for debugging'),\n\n /**\n * Cache RLS policy evaluation results.\n * Can improve performance for frequently accessed records.\n * Cache is invalidated when policies change or user context changes.\n * \n * @default true\n */\n cacheResults: z.boolean()\n .default(true)\n .describe('Cache RLS evaluation results'),\n\n /**\n * Cache TTL in seconds.\n * How long to cache RLS evaluation results.\n * \n * @default 300 (5 minutes)\n */\n cacheTtlSeconds: z.number()\n .int()\n .positive()\n .default(300)\n .describe('Cache TTL in seconds'),\n\n /**\n * Performance optimization: Pre-fetch user context.\n * Load user context once per request instead of per-query.\n * \n * @default true\n */\n prefetchUserContext: z.boolean()\n .default(true)\n .describe('Pre-fetch user context for performance'),\n\n /**\n * Audit logging configuration for RLS evaluations.\n */\n audit: RLSAuditConfigSchema\n .optional()\n .describe('RLS audit logging configuration'),\n}));\n\n/**\n * User Context Schema\n * \n * Represents the current user's context for RLS evaluation.\n * This data is used to evaluate USING and CHECK clauses.\n */\nexport const RLSUserContextSchema = lazySchema(() => z.object({\n /**\n * User ID\n */\n id: z.string()\n .describe('User ID'),\n\n /**\n * User email\n */\n email: z.string()\n .email()\n .optional()\n .describe('User email'),\n\n /**\n * Tenant/Organization ID\n */\n tenantId: z.string()\n .optional()\n .describe('Tenant/Organization ID'),\n\n /**\n * User role(s)\n */\n role: z.union([\n z.string(),\n z.array(z.string()),\n ])\n .optional()\n .describe('User role(s)'),\n\n /**\n * User department\n */\n department: z.string()\n .optional()\n .describe('User department'),\n\n /**\n * Additional custom attributes\n * Can include any custom user fields for RLS evaluation\n */\n attributes: z.record(z.string(), z.unknown())\n .optional()\n .describe('Additional custom user attributes'),\n}));\n\n/**\n * RLS Policy Evaluation Result\n * \n * Result of evaluating an RLS policy for a specific record.\n * Used for debugging and audit logging.\n */\nexport const RLSEvaluationResultSchema = lazySchema(() => z.object({\n /**\n * Policy name that was evaluated\n */\n policyName: z.string()\n .describe('Policy name'),\n\n /**\n * Whether access was granted\n */\n granted: z.boolean()\n .describe('Whether access was granted'),\n\n /**\n * Evaluation duration in milliseconds\n */\n durationMs: z.number()\n .optional()\n .describe('Evaluation duration in milliseconds'),\n\n /**\n * Error message if evaluation failed\n */\n error: z.string()\n .optional()\n .describe('Error message if evaluation failed'),\n\n /**\n * Evaluated USING clause result\n */\n usingResult: z.boolean()\n .optional()\n .describe('USING clause evaluation result'),\n\n /**\n * Evaluated CHECK clause result (for INSERT/UPDATE)\n */\n checkResult: z.boolean()\n .optional()\n .describe('CHECK clause evaluation result'),\n}));\n\n/**\n * Type exports\n */\nexport type RowLevelSecurityPolicy = z.infer<typeof RowLevelSecurityPolicySchema>;\nexport type RLSConfig = z.infer<typeof RLSConfigSchema>;\nexport type RLSUserContext = z.infer<typeof RLSUserContextSchema>;\nexport type RLSEvaluationResult = z.infer<typeof RLSEvaluationResultSchema>;\n\n/**\n * Helper factory for creating RLS policies\n */\nexport const RLS = {\n /**\n * Create a simple owner-based policy\n */\n ownerPolicy: (object: string, ownerField: string = 'owner_id'): RowLevelSecurityPolicy => ({\n name: `${object}_owner_access`,\n label: `Owner Access for ${object}`,\n object,\n operation: 'all',\n using: `${ownerField} = current_user.id`,\n enabled: true,\n priority: 0,\n }),\n\n /**\n * Create a tenant isolation policy.\n *\n * The default `tenantField` is `organization_id` to match better-auth's\n * organization plugin and the canonical platform schema. The\n * `current_user.organization_id` placeholder is resolved by\n * `RLSCompiler` from `ExecutionContext.tenantId` at request time.\n * Pass a custom field name if your schema uses a different column.\n */\n tenantPolicy: (object: string, tenantField: string = 'organization_id'): RowLevelSecurityPolicy => ({\n name: `${object}_tenant_isolation`,\n label: `Tenant Isolation for ${object}`,\n object,\n operation: 'all',\n using: `${tenantField} = current_user.organization_id`,\n check: `${tenantField} = current_user.organization_id`,\n enabled: true,\n priority: 0,\n }),\n\n /**\n * Create a role-based policy\n */\n rolePolicy: (object: string, roles: string[], condition: string): RowLevelSecurityPolicy => ({\n name: `${object}_${roles.join('_')}_access`,\n label: `${roles.join(', ')} Access for ${object}`,\n object,\n operation: 'select',\n using: condition,\n roles,\n enabled: true,\n priority: 0,\n }),\n\n /**\n * Create a permissive policy (allow all for specific roles)\n */\n allowAllPolicy: (object: string, roles: string[]): RowLevelSecurityPolicy => ({\n name: `${object}_${roles.join('_')}_full_access`,\n label: `Full Access for ${roles.join(', ')}`,\n object,\n operation: 'all',\n using: '1 = 1', // Always true\n roles,\n enabled: true,\n priority: 0,\n }),\n} as const;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { RowLevelSecurityPolicySchema } from './rls.zod';\n\n/**\n * Entity (Object) Level Permissions\n * Defines CRUD + VAMA (View All / Modify All) + Lifecycle access.\n * \n * Refined with enterprise data lifecycle controls:\n * - Transfer (Ownership change)\n * - Restore (Soft delete recovery)\n * - Purge (Hard delete / Compliance)\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ObjectPermissionSchema = lazySchema(() => z.object({\n /** C: Create */\n allowCreate: z.boolean().default(false).describe('Create permission'),\n /** R: Read (Owned records or Shared records) */\n allowRead: z.boolean().default(false).describe('Read permission'),\n /** U: Edit (Owned records or Shared records) */\n allowEdit: z.boolean().default(false).describe('Edit permission'),\n /** D: Delete (Owned records or Shared records) */\n allowDelete: z.boolean().default(false).describe('Delete permission'),\n \n /** Lifecycle Operations */\n allowTransfer: z.boolean().default(false).describe('Change record ownership'),\n allowRestore: z.boolean().default(false).describe('Restore from trash (Undelete)'),\n allowPurge: z.boolean().default(false).describe('Permanently delete (Hard Delete/GDPR)'),\n\n /** \n * View All Records: Super-user read access. \n * Bypasses Sharing Rules and Ownership checks.\n * Equivalent to Microsoft Dataverse \"Organization\" level read access.\n */\n viewAllRecords: z.boolean().default(false).describe('View All Data (Bypass Sharing)'),\n \n /** \n * Modify All Records: Super-user write access. \n * Bypasses Sharing Rules and Ownership checks.\n * Equivalent to Microsoft Dataverse \"Organization\" level write access.\n */\n modifyAllRecords: z.boolean().default(false).describe('Modify All Data (Bypass Sharing)'),\n}));\n\n/**\n * Field Level Security (FLS)\n */\nexport const FieldPermissionSchema = lazySchema(() => z.object({\n /** Can see this field */\n readable: z.boolean().default(true).describe('Field read access'),\n /** Can edit this field */\n editable: z.boolean().default(false).describe('Field edit access'),\n}));\n\n/**\n * Permission Set Schema\n * Defines a collection of permissions that can be assigned to users.\n * \n * DIFFERENTIATION:\n * - Profile: The ONE primary functional definition of a user (e.g. Standard User).\n * - Permission Set: Add-on capabilities assigned to users (e.g. Export Reports).\n * - Role: (Defined in src/system/role.zod.ts) Defines data visibility hierarchy.\n * \n * **NAMING CONVENTION:**\n * Permission set names MUST be lowercase snake_case to prevent security issues.\n * \n * @example Good permission set names\n * - 'read_only'\n * - 'system_admin'\n * - 'standard_user'\n * - 'api_access'\n * \n * @example Bad permission set names (will be rejected)\n * - 'ReadOnly' (camelCase)\n * - 'SystemAdmin' (mixed case)\n * - 'Read Only' (spaces)\n */\nexport const PermissionSetSchema = lazySchema(() => z.object({\n /** Unique permission set name */\n name: SnakeCaseIdentifierSchema.describe('Permission set unique name (lowercase snake_case)'),\n \n /** Display label */\n label: z.string().optional().describe('Display label'),\n \n /** Is this a Profile? (Base set for a user) */\n isProfile: z.boolean().default(false).describe('Whether this is a user profile'),\n \n /** Object Permissions Map: <entity_name> -> permissions */\n objects: z.record(z.string(), ObjectPermissionSchema).describe('Entity permissions'),\n \n /** Field Permissions Map: <entity_name>.<field_name> -> permissions */\n fields: z.record(z.string(), FieldPermissionSchema).optional().describe('Field level security'),\n \n /** System permissions (e.g., \"manage_users\") */\n systemPermissions: z.array(z.string()).optional().describe('System level capabilities'),\n \n /**\n * Tab/App Visibility Permissions (Salesforce Pattern)\n * Controls which app tabs are visible, hidden, or set as default for this permission set.\n * \n * @example\n * ```typescript\n * tabPermissions: {\n * 'app_crm': 'visible',\n * 'app_admin': 'hidden',\n * 'app_sales': 'default_on'\n * }\n * ```\n */\n tabPermissions: z.record(z.string(), z.enum(['visible', 'hidden', 'default_on', 'default_off'])).optional()\n .describe('App/tab visibility: visible, hidden, default_on (shown by default), default_off (available but hidden initially)'),\n \n /** \n * Row-Level Security Rules\n * \n * Row-level security policies that filter records based on user context.\n * These rules are applied in addition to object-level permissions.\n * \n * Uses the canonical RLS protocol from rls.zod.ts for comprehensive\n * row-level security features including PostgreSQL-style USING and CHECK clauses.\n * \n * @see {@link RowLevelSecurityPolicySchema} for full RLS specification\n * @see {@link file://./rls.zod.ts} for comprehensive RLS documentation\n * \n * @example Multi-tenant isolation\n * ```typescript\n * rls: [{\n * name: 'tenant_filter',\n * object: 'account',\n * operation: 'select',\n * using: 'organization_id = current_user.organization_id'\n * }]\n * ```\n */\n rowLevelSecurity: z.array(RowLevelSecurityPolicySchema).optional()\n .describe('Row-level security policies (see rls.zod.ts for full spec)'),\n \n /**\n * Context-Based Access Control Variables\n * \n * Custom context variables that can be referenced in RLS rules.\n * These variables are evaluated at runtime based on the user's session.\n * \n * Common context variables:\n * - `current_user.id` - Current user ID\n * - `current_user.organization_id` - Active organization id\n * - `current_user.department` - User's department\n * - `current_user.role` - User's role\n * - `current_user.region` - User's geographic region\n * \n * @example Custom context\n * ```typescript\n * contextVariables: {\n * allowed_regions: ['US', 'EU'],\n * access_level: 2,\n * custom_attribute: 'value'\n * }\n * ```\n */\n contextVariables: z.record(z.string(), z.unknown()).optional().describe('Context variables for RLS evaluation'),\n}));\n\nexport type PermissionSet = z.infer<typeof PermissionSetSchema>;\nexport type ObjectPermission = z.infer<typeof ObjectPermissionSchema>;\nexport type FieldPermission = z.infer<typeof FieldPermissionSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Organization-Wide Defaults (OWD)\n * The baseline security posture for an object.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const OWDModel = z.enum([\n 'private', // Only owner can see\n 'public_read', // Everyone can see, owner can edit\n 'public_read_write', // Everyone can see and edit\n 'controlled_by_parent' // Access derived from parent record (Master-Detail)\n]);\n\n/**\n * Sharing Rule Type\n * How is the data shared?\n */\nexport const SharingRuleType = z.enum([\n 'owner', // Based on record ownership (Role Hierarchy)\n 'criteria', // Based on field values (e.g. Status = 'Open')\n]);\n\n/**\n * Sharing Level\n * What access is granted?\n */\nexport const SharingLevel = z.enum([\n 'read', // Read Only\n 'edit', // Read / Write\n 'full' // Full Access (Transfer, Share, Delete)\n]);\n\n/**\n * Recipient Type \n * Who receives the access?\n */\nexport const ShareRecipientType = z.enum([\n 'user',\n 'group',\n 'role',\n 'role_and_subordinates',\n 'guest' // for public sharing\n]);\n\n/**\n * Base Sharing Rule\n * Common metadata for all sharing strategies.\n */\nconst BaseSharingRuleSchema = 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'),\n description: z.string().optional().describe('Administrative notes'),\n \n // Scope\n object: z.string().describe('Target Object Name'),\n active: z.boolean().default(true),\n \n // Access\n accessLevel: SharingLevel.default('read'),\n \n // Recipient (Whom to share with)\n sharedWith: z.object({\n type: ShareRecipientType,\n value: z.string().describe('ID or Code of the User/Group/Role'),\n }).describe('The recipient of the shared access'),\n});\n\n/**\n * 1. Criteria-Based Sharing Rule\n * Share records that meet specific field criteria.\n */\nexport const CriteriaSharingRuleSchema = lazySchema(() => BaseSharingRuleSchema.extend({\n type: z.literal('criteria'),\n condition: ExpressionInputSchema.describe('Predicate (CEL). e.g. P`record.department == \"Sales\"`'),\n}));\n\n/**\n * 2. Owner-Based Sharing Rule\n * Share records owned by a specific group of users.\n */\nexport const OwnerSharingRuleSchema = lazySchema(() => BaseSharingRuleSchema.extend({\n type: z.literal('owner'),\n ownedBy: z.object({\n type: ShareRecipientType,\n value: z.string(),\n }).describe('Source group/role whose records are being shared'),\n}));\n\n/**\n * Master Sharing Rule Schema\n */\nexport const SharingRuleSchema = lazySchema(() => z.discriminatedUnion('type', [\n CriteriaSharingRuleSchema,\n OwnerSharingRuleSchema\n]));\n\nexport type SharingRule = z.infer<typeof SharingRuleSchema>;\nexport type CriteriaSharingRule = z.infer<typeof CriteriaSharingRuleSchema>;\nexport type OwnerSharingRule = z.infer<typeof OwnerSharingRuleSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * Password Complexity Policy\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const PasswordPolicySchema = lazySchema(() => z.object({\n minLength: z.number().default(8),\n requireUppercase: z.boolean().default(true),\n requireLowercase: z.boolean().default(true),\n requireNumbers: z.boolean().default(true),\n requireSymbols: z.boolean().default(false),\n expirationDays: z.number().optional().describe('Force password change every X days'),\n historyCount: z.number().default(3).describe('Prevent reusing last X passwords'),\n}));\n\n/**\n * Network Access Policy (IP Whitelisting)\n */\nexport const NetworkPolicySchema = lazySchema(() => z.object({\n trustedRanges: z.array(z.string()).describe('CIDR ranges allowed to access (e.g. 10.0.0.0/8)'),\n blockUnknown: z.boolean().default(false).describe('Block all IPs not in trusted ranges'),\n vpnRequired: z.boolean().default(false),\n}));\n\n/**\n * Session Policy\n */\nexport const SessionPolicySchema = lazySchema(() => z.object({\n idleTimeout: z.number().default(30).describe('Minutes before idle session logout'),\n absoluteTimeout: z.number().default(480).describe('Max session duration (minutes)'),\n forceMfa: z.boolean().default(false).describe('Require 2FA for all users'),\n}));\n\n/**\n * Audit Retention Policy\n */\nexport const AuditPolicySchema = lazySchema(() => z.object({\n logRetentionDays: z.number().default(180),\n sensitiveFields: z.array(z.string()).describe('Fields to redact in logs (e.g. password, ssn)'),\n captureRead: z.boolean().default(false).describe('Log read access (High volume!)'),\n}));\n\n/**\n * Security Policy Schema\n * \"The Cloud Compliance Contract\"\n */\nexport const PolicySchema = lazySchema(() => z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Policy Name'),\n \n password: PasswordPolicySchema.optional(),\n network: NetworkPolicySchema.optional(),\n session: SessionPolicySchema.optional(),\n audit: AuditPolicySchema.optional(),\n\n /** Assignment */\n isDefault: z.boolean().default(false).describe('Apply to all users by default'),\n assignedProfiles: z.array(z.string()).optional().describe('Apply to specific profiles'),\n}));\n\nexport type Policy = z.infer<typeof PolicySchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { HttpMethod, RateLimitConfigSchema } from '../shared/http.zod';\n\n/**\n * API Mapping Schema\n * Transform input/output data.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ApiMappingSchema = lazySchema(() => z.object({\n source: z.string().describe('Source field/path'),\n target: z.string().describe('Target field/path'),\n transform: z.string().optional().describe('Transformation function name'),\n}));\n\n/**\n * API Endpoint Schema\n * Defines an external facing API contract.\n */\nexport const ApiEndpointSchema = z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique endpoint ID'),\n path: z.string().regex(/^\\//).describe('URL Path (e.g. /api/v1/customers)'),\n method: HttpMethod.describe('HTTP Method'),\n \n /** Documentation */\n summary: z.string().optional(),\n description: z.string().optional(),\n \n /** Execution Logic */\n type: z.enum(['flow', 'script', 'object_operation', 'proxy']).describe('Implementation type'),\n target: z.string().describe('Target Flow ID, Script Name, or Proxy URL'),\n \n /** Logic Config */\n objectParams: z.object({\n object: z.string().optional(),\n operation: z.enum(['find', 'get', 'create', 'update', 'delete']).optional(),\n }).optional().describe('For object_operation type'),\n \n /** Data Transformation */\n inputMapping: z.array(ApiMappingSchema).optional().describe('Map Request Body to Internal Params'),\n outputMapping: z.array(ApiMappingSchema).optional().describe('Map Internal Result to Response Body'),\n \n /** Policies */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n rateLimit: RateLimitConfigSchema.optional().describe('Rate limiting policy'),\n cacheTtl: z.number().optional().describe('Response cache TTL in seconds'),\n});\n\nexport const ApiEndpoint = Object.assign(ApiEndpointSchema, {\n create: <T extends z.input<typeof ApiEndpointSchema>>(config: T) => config,\n});\n\nexport type ApiEndpoint = z.infer<typeof ApiEndpointSchema>;\nexport type ApiEndpointInput = z.input<typeof ApiEndpointSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Feature Rollout Strategy\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FeatureStrategy = z.enum([\n 'boolean', // Simple On/Off\n 'percentage', // Gradual rollout (0-100%)\n 'user_list', // Specific users\n 'group', // Specific groups/roles\n 'custom' // Custom constraint/script\n]);\n\n/**\n * Feature Flag Protocol\n * \n * Manages feature toggles and gradual rollouts.\n * Used for CI/CD, A/B Testing, and Trunk-Based Development.\n */\nexport const FeatureFlagSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Feature key (snake_case)'),\n label: z.string().optional().describe('Display label'),\n description: z.string().optional(),\n \n /** Default state */\n enabled: z.boolean().default(false).describe('Is globally enabled'),\n \n /** Rollout Strategy */\n strategy: FeatureStrategy.default('boolean'),\n \n /** Strategy Configuration */\n conditions: z.object({\n percentage: z.number().min(0).max(100).optional(),\n users: z.array(z.string()).optional(),\n groups: z.array(z.string()).optional(),\n expression: ExpressionInputSchema.optional().describe('Custom predicate (CEL).')\n }).optional(),\n \n /** Integration */\n environment: z.enum(['dev', 'staging', 'prod', 'all']).default('all')\n .describe('Environment validity'),\n \n /** Expiration */\n expiresAt: z.string().datetime().optional().describe('Feature flag expiration date'),\n}));\n\nexport const FeatureFlag = Object.assign(FeatureFlagSchema, {\n create: <T extends z.input<typeof FeatureFlagSchema>>(config: T) => config,\n});\n\nexport type FeatureFlag = z.infer<typeof FeatureFlagSchema>;\nexport type FeatureFlagInput = z.input<typeof FeatureFlagSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { StateMachineSchema } from '../automation/state-machine.zod';\n\n/**\n * AI Model Configuration\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const AIModelConfigSchema = lazySchema(() => z.object({\n provider: z.enum(['openai', 'azure_openai', 'anthropic', 'local']).default('openai'),\n model: z.string().describe('Model name (e.g. gpt-4, claude-3-opus)'),\n temperature: z.number().min(0).max(2).default(0.7),\n maxTokens: z.number().optional(),\n topP: z.number().optional(),\n}));\n\n/**\n * AI Tool Definition\n * References to Actions, Flows, or Objects available to the Agent.\n */\nexport const AIToolSchema = lazySchema(() => z.object({\n type: z.enum(['action', 'flow', 'query', 'vector_search']),\n name: z.string().describe('Reference name (Action Name, Flow Name)'),\n description: z.string().optional().describe('Override description for the LLM'),\n}));\n\n/**\n * AI Knowledge Base\n * RAG configuration.\n */\nexport const AIKnowledgeSchema = lazySchema(() => z.object({\n topics: z.array(z.string()).describe('Topics/Tags to recruit knowledge from'),\n indexes: z.array(z.string()).describe('Vector Store Indexes'),\n}));\n\n/**\n * Structured Output Format\n * Defines the expected output format for agent responses\n */\nexport const StructuredOutputFormatSchema = lazySchema(() => z.enum([\n 'json_object',\n 'json_schema',\n 'regex',\n 'grammar',\n 'xml',\n]).describe('Output format for structured agent responses'));\n\n/**\n * Transform Pipeline Step\n * Post-processing steps applied to structured output\n */\nexport const TransformPipelineStepSchema = lazySchema(() => z.enum([\n 'trim',\n 'parse_json',\n 'validate',\n 'coerce_types',\n]).describe('Post-processing step for structured output'));\n\n/**\n * Structured Output Configuration\n * Controls how the agent formats and validates its output\n */\nexport const StructuredOutputConfigSchema = lazySchema(() => z.object({\n /** Output format type */\n format: StructuredOutputFormatSchema.describe('Expected output format'),\n\n /** JSON Schema definition for output validation */\n schema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema definition for output'),\n\n /** Whether to enforce exact schema compliance */\n strict: z.boolean().default(false).describe('Enforce exact schema compliance'),\n\n /** Retry on validation failure */\n retryOnValidationFailure: z.boolean().default(true).describe('Retry generation when output fails validation'),\n\n /** Maximum retry attempts */\n maxRetries: z.number().int().min(0).default(3).describe('Maximum retries on validation failure'),\n\n /** Fallback format if primary format fails */\n fallbackFormat: StructuredOutputFormatSchema.optional().describe('Fallback format if primary format fails'),\n\n /** Post-processing pipeline steps */\n transformPipeline: z.array(TransformPipelineStepSchema).optional().describe('Post-processing steps applied to output'),\n}).describe('Structured output configuration for agent responses'));\n\nexport type StructuredOutputFormat = z.infer<typeof StructuredOutputFormatSchema>;\nexport type TransformPipelineStep = z.infer<typeof TransformPipelineStepSchema>;\nexport type StructuredOutputConfig = z.infer<typeof StructuredOutputConfigSchema>;\n\n/**\n * AI Agent Schema\n * Definition of an autonomous agent specialized for a domain.\n *\n * The Agent → Skill → Tool three-tier architecture aligns with\n * Salesforce Agentforce, Microsoft Copilot Studio, and ServiceNow\n * Now Assist metadata patterns.\n *\n * - **skills**: Primary capability model — references skill names.\n * - **tools**: Fallback / direct tool references (legacy inline format).\n *\n * @example Agent-Skill Architecture\n * ```ts\n * defineAgent({\n * name: 'support_tier_1',\n * label: 'First Line Support',\n * role: 'Help Desk Assistant',\n * instructions: 'You are a helpful assistant. Always verify user identity first.',\n * skills: ['case_management', 'knowledge_search'],\n * knowledge: { topics: ['faq', 'policies'], indexes: ['support_docs'] },\n * });\n * ```\n *\n * @example Legacy Tool References (backward-compatible)\n * ```ts\n * defineAgent({\n * name: 'support_tier_1',\n * label: 'First Line Support',\n * role: 'Help Desk Assistant',\n * instructions: 'You are a helpful assistant.',\n * tools: [\n * { type: 'flow', name: 'reset_password', description: 'Trigger password reset email' },\n * { type: 'query', name: 'get_order_status', description: 'Check order shipping status' },\n * ],\n * });\n * ```\n */\nexport const AgentSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Agent unique identifier'),\n label: z.string().describe('Agent display name'),\n avatar: z.string().optional(),\n role: z.string().describe('The persona/role (e.g. \"Senior Support Engineer\")'),\n\n /** Cognition */\n instructions: z.string().describe('System Prompt / Prime Directives'),\n model: AIModelConfigSchema.optional(),\n lifecycle: StateMachineSchema.optional().describe('State machine defining the agent conversation follow and constraints'),\n\n /** Capabilities — Skill-based (primary) */\n skills: z.array(z.string().regex(/^[a-z_][a-z0-9_]*$/)).optional().describe('Skill names to attach (Agent→Skill→Tool architecture)'),\n\n /** Capabilities — Direct tool references (fallback / legacy) */\n tools: z.array(AIToolSchema).optional().describe('Direct tool references (legacy fallback)'),\n\n /** Knowledge */\n knowledge: AIKnowledgeSchema.optional().describe('RAG access'),\n\n /** Interface */\n active: z.boolean().default(true),\n access: z.array(z.string()).optional().describe('Who can chat with this agent'),\n\n /** Permission profiles/roles required to use this agent */\n permissions: z.array(z.string()).optional().describe('Required permissions or roles'),\n\n /** Multi-tenancy & Visibility */\n tenantId: z.string().optional().describe('Tenant/Organization ID'),\n visibility: z.enum(['global', 'organization', 'private']).default('organization'),\n\n /** Autonomous Reasoning */\n planning: z.object({\n /** Planning strategy for autonomous reasoning loops */\n strategy: z.enum(['react', 'plan_and_execute', 'reflexion', 'tree_of_thought']).default('react').describe('Autonomous reasoning strategy'),\n\n /** Maximum reasoning iterations before stopping */\n maxIterations: z.number().int().min(1).max(100).default(10).describe('Maximum planning loop iterations'),\n\n /** Whether the agent can revise its own plan mid-execution */\n allowReplan: z.boolean().default(true).describe('Allow dynamic re-planning based on intermediate results'),\n }).optional().describe('Autonomous reasoning and planning configuration'),\n\n /** Memory Management */\n memory: z.object({\n /** Short-term (working) memory configuration */\n shortTerm: z.object({\n /** Maximum number of recent messages to retain */\n maxMessages: z.number().int().min(1).default(50).describe('Max recent messages in working memory'),\n\n /** Maximum token budget for short-term context */\n maxTokens: z.number().int().min(100).optional().describe('Max tokens for short-term context window'),\n }).optional().describe('Short-term / working memory'),\n\n /** Long-term (persistent) memory configuration */\n longTerm: z.object({\n /** Whether long-term memory is enabled */\n enabled: z.boolean().default(false).describe('Enable long-term memory persistence'),\n\n /** Storage backend for long-term memory */\n store: z.enum(['vector', 'database', 'redis']).default('vector').describe('Long-term memory storage backend'),\n\n /** Maximum number of persisted memory entries */\n maxEntries: z.number().int().min(1).optional().describe('Max entries in long-term memory'),\n }).optional().describe('Long-term / persistent memory'),\n\n /** Reflection interval — how often the agent reflects on past actions */\n reflectionInterval: z.number().int().min(1).optional().describe('Reflect every N interactions to improve behavior'),\n }).optional().describe('Agent memory management'),\n\n /** Guardrails */\n guardrails: z.object({\n /** Maximum tokens the agent may consume per invocation */\n maxTokensPerInvocation: z.number().int().min(1).optional().describe('Token budget per single invocation'),\n\n /** Maximum wall-clock time per invocation in seconds */\n maxExecutionTimeSec: z.number().int().min(1).optional().describe('Max execution time in seconds'),\n\n /** Topics or actions the agent must avoid */\n blockedTopics: z.array(z.string()).optional().describe('Forbidden topics or action names'),\n }).optional().describe('Safety guardrails for the agent'),\n\n /** Structured Output */\n structuredOutput: StructuredOutputConfigSchema.optional().describe('Structured output format and validation configuration'),\n}));\n\n/**\n * Type-safe factory for creating AI agent definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example Agent-Skill Architecture (recommended)\n * ```ts\n * const supportAgent = defineAgent({\n * name: 'support_agent',\n * label: 'Support Agent',\n * role: 'Senior Support Engineer',\n * instructions: 'You help customers resolve technical issues.',\n * skills: ['case_management', 'knowledge_search'],\n * });\n * ```\n *\n * @example Legacy Tool References (backward-compatible)\n * ```ts\n * const supportAgent = defineAgent({\n * name: 'support_agent',\n * label: 'Support Agent',\n * role: 'Senior Support Engineer',\n * instructions: 'You help customers resolve technical issues.',\n * tools: [{ type: 'action', name: 'create_ticket' }],\n * });\n * ```\n */\nexport function defineAgent(config: z.input<typeof AgentSchema>): Agent {\n return AgentSchema.parse(config);\n}\n\nexport type Agent = z.infer<typeof AgentSchema>;\nexport type AITool = z.infer<typeof AIToolSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// ==========================================\n// Trigger Condition\n// ==========================================\n\n/**\n * Skill Trigger Condition Schema\n *\n * Defines programmatic conditions under which a skill becomes active.\n * Allows context-aware activation based on object type, user role, etc.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SkillTriggerConditionSchema = lazySchema(() => z.object({\n /** Condition field (e.g. 'objectName', 'userRole', 'channel') */\n field: z.string().describe('Context field to evaluate'),\n\n /** Comparison operator */\n operator: z.enum(['eq', 'neq', 'in', 'not_in', 'contains']).describe('Comparison operator'),\n\n /** Expected value(s) */\n value: z.union([z.string(), z.array(z.string())]).describe('Expected value or values'),\n}));\n\nexport type SkillTriggerCondition = z.infer<typeof SkillTriggerConditionSchema>;\n\n// ==========================================\n// Skill Schema\n// ==========================================\n\n/**\n * Skill Schema\n *\n * An ability group that aggregates related tools by domain.\n * Skills are the middle tier of the Agent → Skill → Tool architecture,\n * providing reusable capability bundles that can be shared across agents.\n *\n * Aligned with Salesforce Agentforce Topics, Microsoft Copilot Studio Topics,\n * and ServiceNow Skill metadata patterns.\n *\n * @example\n * ```ts\n * const skill = defineSkill({\n * name: 'case_management',\n * label: 'Case Management',\n * description: 'Handles support case lifecycle',\n * instructions: 'Use these tools to create, update, and resolve support cases.',\n * tools: ['create_case', 'update_case', 'resolve_case', 'query_cases'],\n * triggerPhrases: ['create a case', 'open a ticket', 'resolve issue'],\n * });\n * ```\n */\nexport const SkillSchema = lazySchema(() => z.object({\n /** Machine name (snake_case, globally unique) */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Skill unique identifier (snake_case)'),\n\n /** Human-readable display name */\n label: z.string().describe('Skill display name'),\n\n /** Detailed description of the skill's purpose */\n description: z.string().optional().describe('Skill description'),\n\n /**\n * Instructions injected into the system prompt when this skill is active.\n * Guides the LLM on how and when to use the skill's tools.\n */\n instructions: z.string().optional().describe('LLM instructions when skill is active'),\n\n /**\n * References to tool names that belong to this skill.\n * Tools must be registered as first-class metadata (type: 'tool').\n */\n tools: z.array(z.string().regex(/^[a-z_][a-z0-9_]*$/)).describe('Tool names belonging to this skill'),\n\n /**\n * Natural language phrases that trigger skill activation.\n * Used for intent matching and skill routing.\n */\n triggerPhrases: z.array(z.string()).optional().describe('Phrases that activate this skill'),\n\n /**\n * Programmatic conditions for skill activation.\n * Evaluated against the runtime context (object name, user role, etc.).\n */\n triggerConditions: z.array(SkillTriggerConditionSchema).optional().describe('Programmatic activation conditions'),\n\n /** Permission profiles/roles required to use this skill */\n permissions: z.array(z.string()).optional().describe('Required permissions or roles'),\n\n /** Whether the skill is enabled */\n active: z.boolean().default(true).describe('Whether the skill is enabled'),\n}));\n\nexport type Skill = z.infer<typeof SkillSchema>;\n\n// ==========================================\n// Factory\n// ==========================================\n\n/**\n * Type-safe factory for creating AI skill definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const skill = defineSkill({\n * name: 'order_management',\n * label: 'Order Management',\n * description: 'Handles order lifecycle operations',\n * instructions: 'Use these tools to manage customer orders.',\n * tools: ['create_order', 'update_order', 'cancel_order'],\n * triggerPhrases: ['place an order', 'cancel my order'],\n * triggerConditions: [\n * { field: 'objectName', operator: 'eq', value: 'order' },\n * ],\n * });\n * ```\n */\nexport function defineSkill(config: z.input<typeof SkillSchema>): Skill {\n return SkillSchema.parse(config);\n}\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * AI Cost Tracking Protocol\n * \n * Monitor and control AI API costs with budgets, alerts, and analytics.\n * Provides cost optimization, budget enforcement, and financial reporting.\n */\n\n/**\n * Token Usage Schema\n * Standardized across all AI operations\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const TokenUsageSchema = lazySchema(() => z.object({\n prompt: z.number().int().nonnegative().describe('Input tokens'),\n completion: z.number().int().nonnegative().describe('Output tokens'),\n total: z.number().int().nonnegative().describe('Total tokens'),\n}));\n\nexport type TokenUsage = z.infer<typeof TokenUsageSchema>;\n\n/**\n * AI Operation Cost Schema\n * Unified cost tracking for all AI operations\n */\nexport const AIOperationCostSchema = lazySchema(() => z.object({\n operationId: z.string(),\n operationType: z.enum(['conversation', 'orchestration', 'prediction', 'rag', 'nlq']),\n agentName: z.string().optional().describe('Agent that performed the operation'),\n modelId: z.string(),\n tokens: TokenUsageSchema,\n cost: z.number().nonnegative().describe('Cost in USD'),\n timestamp: z.string().datetime(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n}));\n\nexport type AIOperationCost = z.infer<typeof AIOperationCostSchema>;\n\n/**\n * Cost Metric Type\n */\nexport const CostMetricTypeSchema = lazySchema(() => z.enum([\n 'token', // Cost per token\n 'request', // Cost per API request\n 'character', // Cost per character (e.g., TTS)\n 'second', // Cost per second (e.g., speech)\n 'image', // Cost per image\n 'embedding', // Cost per embedding\n]));\n\n/**\n * Billing Period\n */\nexport const BillingPeriodSchema = lazySchema(() => z.enum([\n 'hourly',\n 'daily',\n 'weekly',\n 'monthly',\n 'quarterly',\n 'yearly',\n 'custom',\n]));\n\n/**\n * Cost Entry\n * Extended from AIOperationCostSchema with additional tracking fields\n */\nexport const CostEntrySchema = lazySchema(() => z.object({\n /** Identity */\n id: z.string().describe('Unique cost entry ID'),\n timestamp: z.string().datetime().describe('ISO 8601 timestamp'),\n \n /** Request Details */\n modelId: z.string().describe('AI model used'),\n provider: z.string().describe('AI provider (e.g., \"openai\", \"anthropic\")'),\n operation: z.string().describe('Operation type (e.g., \"chat_completion\", \"embedding\")'),\n \n /** Usage Metrics - Standardized */\n tokens: TokenUsageSchema.optional().describe('Standardized token usage'),\n requestCount: z.number().int().positive().default(1),\n \n /** Cost Calculation */\n promptCost: z.number().nonnegative().optional().describe('Cost of prompt tokens'),\n completionCost: z.number().nonnegative().optional().describe('Cost of completion tokens'),\n totalCost: z.number().nonnegative().describe('Total cost in base currency'),\n currency: z.string().default('USD'),\n \n /** Context */\n sessionId: z.string().optional().describe('Conversation session ID'),\n userId: z.string().optional().describe('User who triggered the request'),\n agentId: z.string().optional().describe('AI agent ID'),\n object: z.string().optional().describe('Related object (e.g., \"case\", \"project\")'),\n recordId: z.string().optional().describe('Related record ID'),\n \n /** Metadata */\n tags: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n}));\n\n/**\n * Budget Type\n */\nexport const BudgetTypeSchema = lazySchema(() => z.enum([\n 'global', // Organization-wide budget\n 'user', // Per-user budget\n 'agent', // Per-agent budget\n 'object', // Per-object budget (e.g., per case)\n 'project', // Per-project budget\n 'department', // Per-department budget\n]));\n\n/**\n * Budget Limit\n */\nexport const BudgetLimitSchema = lazySchema(() => z.object({\n /** Limit Configuration */\n type: BudgetTypeSchema,\n scope: z.string().optional().describe('Scope identifier (userId, agentId, etc.)'),\n \n /** Limit Amount */\n maxCost: z.number().nonnegative().describe('Maximum cost limit'),\n currency: z.string().default('USD'),\n \n /** Period */\n period: BillingPeriodSchema,\n customPeriodDays: z.number().int().positive().optional().describe('Custom period in days'),\n \n /** Soft Limits & Warnings */\n softLimit: z.number().nonnegative().optional().describe('Soft limit for warnings'),\n warnThresholds: z.array(z.number().min(0).max(1)).optional().describe('Warning thresholds (e.g., [0.5, 0.8, 0.95])'),\n \n /** Enforcement */\n enforced: z.boolean().default(true).describe('Block requests when exceeded'),\n gracePeriodSeconds: z.number().int().nonnegative().default(0).describe('Grace period after limit exceeded'),\n \n /** Rollover */\n allowRollover: z.boolean().default(false).describe('Allow unused budget to rollover'),\n maxRolloverPercentage: z.number().min(0).max(1).optional().describe('Max rollover as % of limit'),\n \n /** Metadata */\n name: z.string().optional().describe('Budget name'),\n description: z.string().optional(),\n active: z.boolean().default(true),\n tags: z.array(z.string()).optional(),\n}));\n\n/**\n * Budget Status\n */\nexport const BudgetStatusSchema = lazySchema(() => z.object({\n /** Budget Reference */\n budgetId: z.string(),\n type: BudgetTypeSchema,\n scope: z.string().optional(),\n \n /** Current Period */\n periodStart: z.string().datetime().describe('ISO 8601 timestamp'),\n periodEnd: z.string().datetime().describe('ISO 8601 timestamp'),\n \n /** Usage */\n currentCost: z.number().nonnegative().default(0),\n maxCost: z.number().nonnegative(),\n currency: z.string().default('USD'),\n \n /** Status */\n percentageUsed: z.number().nonnegative().describe('Usage as percentage (can exceed 1.0 if over budget)'),\n remainingCost: z.number().describe('Remaining budget (can be negative if exceeded)'),\n isExceeded: z.boolean().default(false),\n isWarning: z.boolean().default(false),\n \n /** Projections */\n projectedCost: z.number().nonnegative().optional().describe('Projected cost for period'),\n projectedOverage: z.number().nonnegative().optional().describe('Projected overage'),\n \n /** Last Update */\n lastUpdated: z.string().datetime().describe('ISO 8601 timestamp'),\n}));\n\n/**\n * Cost Alert Type\n */\nexport const CostAlertTypeSchema = lazySchema(() => z.enum([\n 'threshold_warning', // Warning threshold reached\n 'threshold_critical', // Critical threshold reached\n 'limit_exceeded', // Budget limit exceeded\n 'anomaly_detected', // Unusual spending pattern\n 'projection_exceeded', // Projected to exceed budget\n]));\n\n/**\n * Cost Alert\n */\nexport const CostAlertSchema = lazySchema(() => z.object({\n /** Alert Details */\n id: z.string(),\n timestamp: z.string().datetime().describe('ISO 8601 timestamp'),\n type: CostAlertTypeSchema,\n severity: z.enum(['info', 'warning', 'critical']),\n \n /** Budget Context */\n budgetId: z.string().optional(),\n budgetType: BudgetTypeSchema.optional(),\n scope: z.string().optional(),\n \n /** Alert Information */\n message: z.string().describe('Alert message'),\n currentCost: z.number().nonnegative(),\n maxCost: z.number().nonnegative().optional(),\n threshold: z.number().min(0).max(1).optional(),\n currency: z.string().default('USD'),\n \n /** Recommendations */\n recommendations: z.array(z.string()).optional(),\n \n /** Status */\n acknowledged: z.boolean().default(false),\n acknowledgedBy: z.string().optional(),\n acknowledgedAt: z.string().datetime().optional(),\n resolved: z.boolean().default(false),\n \n /** Metadata */\n metadata: z.record(z.string(), z.unknown()).optional(),\n}));\n\n/**\n * Cost Breakdown Dimension\n */\nexport const CostBreakdownDimensionSchema = lazySchema(() => z.enum([\n 'model',\n 'provider',\n 'user',\n 'agent',\n 'object',\n 'operation',\n 'date',\n 'hour',\n 'tag',\n]));\n\n/**\n * Cost Breakdown Entry\n */\nexport const CostBreakdownEntrySchema = lazySchema(() => z.object({\n dimension: CostBreakdownDimensionSchema,\n value: z.string().describe('Dimension value (e.g., model ID, user ID)'),\n \n /** Metrics */\n totalCost: z.number().nonnegative(),\n requestCount: z.number().int().nonnegative(),\n totalTokens: z.number().int().nonnegative().optional(),\n \n /** Share */\n percentageOfTotal: z.number().min(0).max(1),\n \n /** Time Range */\n periodStart: z.string().datetime().optional(),\n periodEnd: z.string().datetime().optional(),\n}));\n\n/**\n * Cost Analytics\n */\nexport const CostAnalyticsSchema = lazySchema(() => z.object({\n /** Time Range */\n periodStart: z.string().datetime().describe('ISO 8601 timestamp'),\n periodEnd: z.string().datetime().describe('ISO 8601 timestamp'),\n \n /** Summary Metrics */\n totalCost: z.number().nonnegative(),\n totalRequests: z.number().int().nonnegative(),\n totalTokens: z.number().int().nonnegative().optional(),\n currency: z.string().default('USD'),\n \n /** Averages */\n averageCostPerRequest: z.number().nonnegative(),\n averageCostPerToken: z.number().nonnegative().optional(),\n averageRequestsPerDay: z.number().nonnegative(),\n \n /** Trends */\n costTrend: z.enum(['increasing', 'decreasing', 'stable']).optional(),\n trendPercentage: z.number().optional().describe('% change vs previous period'),\n \n /** Breakdowns */\n byModel: z.array(CostBreakdownEntrySchema).optional(),\n byProvider: z.array(CostBreakdownEntrySchema).optional(),\n byUser: z.array(CostBreakdownEntrySchema).optional(),\n byAgent: z.array(CostBreakdownEntrySchema).optional(),\n byOperation: z.array(CostBreakdownEntrySchema).optional(),\n byDate: z.array(CostBreakdownEntrySchema).optional(),\n \n /** Top Consumers */\n topModels: z.array(CostBreakdownEntrySchema).optional(),\n topUsers: z.array(CostBreakdownEntrySchema).optional(),\n topAgents: z.array(CostBreakdownEntrySchema).optional(),\n \n /** Efficiency Metrics */\n tokensPerDollar: z.number().nonnegative().optional(),\n requestsPerDollar: z.number().nonnegative().optional(),\n}));\n\n/**\n * Cost Optimization Recommendation\n */\nexport const CostOptimizationRecommendationSchema = lazySchema(() => z.object({\n /** Recommendation Details */\n id: z.string(),\n type: z.enum([\n 'switch_model',\n 'reduce_tokens',\n 'batch_requests',\n 'cache_results',\n 'adjust_parameters',\n 'limit_usage',\n ]),\n \n /** Impact */\n title: z.string(),\n description: z.string(),\n estimatedSavings: z.number().nonnegative().optional(),\n savingsPercentage: z.number().min(0).max(1).optional(),\n \n /** Implementation */\n priority: z.enum(['low', 'medium', 'high']),\n effort: z.enum(['low', 'medium', 'high']),\n actionable: z.boolean().default(true),\n actionSteps: z.array(z.string()).optional(),\n \n /** Context */\n targetModel: z.string().optional(),\n alternativeModel: z.string().optional(),\n affectedUsers: z.array(z.string()).optional(),\n \n /** Status */\n status: z.enum(['pending', 'accepted', 'rejected', 'implemented']).default('pending'),\n implementedAt: z.string().datetime().optional(),\n}));\n\n/**\n * Cost Report\n */\nexport const CostReportSchema = lazySchema(() => z.object({\n /** Report Metadata */\n id: z.string(),\n name: z.string(),\n generatedAt: z.string().datetime().describe('ISO 8601 timestamp'),\n \n /** Time Range */\n periodStart: z.string().datetime().describe('ISO 8601 timestamp'),\n periodEnd: z.string().datetime().describe('ISO 8601 timestamp'),\n period: BillingPeriodSchema,\n \n /** Analytics */\n analytics: CostAnalyticsSchema,\n \n /** Budgets */\n budgets: z.array(BudgetStatusSchema).optional(),\n \n /** Alerts */\n alerts: z.array(CostAlertSchema).optional(),\n activeAlertCount: z.number().int().nonnegative().default(0),\n \n /** Recommendations */\n recommendations: z.array(CostOptimizationRecommendationSchema).optional(),\n \n /** Comparisons */\n previousPeriodCost: z.number().nonnegative().optional(),\n costChange: z.number().optional().describe('Change vs previous period'),\n costChangePercentage: z.number().optional(),\n \n /** Forecasting */\n forecastedCost: z.number().nonnegative().optional(),\n forecastedBudgetStatus: z.enum(['under', 'at', 'over']).optional(),\n \n /** Export */\n format: z.enum(['summary', 'detailed', 'executive']).default('summary'),\n currency: z.string().default('USD'),\n}));\n\n/**\n * Cost Query Filters\n */\nexport const CostQueryFiltersSchema = lazySchema(() => z.object({\n /** Time Range */\n startDate: z.string().datetime().optional().describe('ISO 8601 timestamp'),\n endDate: z.string().datetime().optional().describe('ISO 8601 timestamp'),\n \n /** Dimensions */\n modelIds: z.array(z.string()).optional(),\n providers: z.array(z.string()).optional(),\n userIds: z.array(z.string()).optional(),\n agentIds: z.array(z.string()).optional(),\n operations: z.array(z.string()).optional(),\n sessionIds: z.array(z.string()).optional(),\n \n /** Cost Range */\n minCost: z.number().nonnegative().optional(),\n maxCost: z.number().nonnegative().optional(),\n \n /** Tags */\n tags: z.array(z.string()).optional(),\n \n /** Aggregation */\n groupBy: z.array(CostBreakdownDimensionSchema).optional(),\n \n /** Sorting */\n orderBy: z.enum(['timestamp', 'cost', 'tokens']).optional().default('timestamp'),\n orderDirection: z.enum(['asc', 'desc']).optional().default('desc'),\n \n /** Pagination */\n limit: z.number().int().positive().optional(),\n offset: z.number().int().nonnegative().optional(),\n}));\n\n// Type exports\nexport type CostMetricType = z.infer<typeof CostMetricTypeSchema>;\nexport type BillingPeriod = z.infer<typeof BillingPeriodSchema>;\nexport type CostEntry = z.infer<typeof CostEntrySchema>;\nexport type BudgetType = z.infer<typeof BudgetTypeSchema>;\nexport type BudgetLimit = z.infer<typeof BudgetLimitSchema>;\nexport type BudgetStatus = z.infer<typeof BudgetStatusSchema>;\nexport type CostAlertType = z.infer<typeof CostAlertTypeSchema>;\nexport type CostAlert = z.infer<typeof CostAlertSchema>;\nexport type CostBreakdownDimension = z.infer<typeof CostBreakdownDimensionSchema>;\nexport type CostBreakdownEntry = z.infer<typeof CostBreakdownEntrySchema>;\nexport type CostAnalytics = z.infer<typeof CostAnalyticsSchema>;\nexport type CostOptimizationRecommendation = z.infer<typeof CostOptimizationRecommendationSchema>;\nexport type CostReport = z.infer<typeof CostReportSchema>;\nexport type CostQueryFilters = z.infer<typeof CostQueryFiltersSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { TokenUsageSchema } from './cost.zod';\n\n/**\n * RAG (Retrieval-Augmented Generation) Pipeline Protocol\n * \n * Defines schemas for building context-aware AI assistants using RAG techniques.\n * Enables vector search, document chunking, embeddings, and retrieval configuration.\n */\n\n/**\n * Vector Store Provider\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const VectorStoreProviderSchema = lazySchema(() => z.enum([\n 'pinecone',\n 'weaviate',\n 'qdrant',\n 'milvus',\n 'chroma',\n 'pgvector',\n 'redis',\n 'opensearch',\n 'elasticsearch',\n 'custom',\n]));\n\n/**\n * Embedding Model\n */\nexport const EmbeddingModelSchema = lazySchema(() => z.object({\n provider: z.enum(['openai', 'cohere', 'huggingface', 'azure_openai', 'local', 'custom']),\n model: z.string().describe('Model name (e.g., \"text-embedding-3-large\")'),\n dimensions: z.number().int().positive().describe('Embedding vector dimensions'),\n maxTokens: z.number().int().positive().optional().describe('Maximum tokens per embedding'),\n batchSize: z.number().int().positive().optional().default(100).describe('Batch size for embedding'),\n endpoint: z.string().url().optional().describe('Custom endpoint URL'),\n apiKey: z.string().optional().describe('API key'),\n secretRef: z.string().optional().describe('Reference to stored secret'),\n}));\n\n/**\n * Text Chunking Strategy\n */\nexport const ChunkingStrategySchema = lazySchema(() => z.discriminatedUnion('type', [\n z.object({\n type: z.literal('fixed'),\n chunkSize: z.number().int().positive().describe('Fixed chunk size in tokens/chars'),\n chunkOverlap: z.number().int().min(0).default(0).describe('Overlap between chunks'),\n unit: z.enum(['tokens', 'characters']).default('tokens'),\n }),\n z.object({\n type: z.literal('semantic'),\n model: z.string().optional().describe('Model for semantic chunking'),\n minChunkSize: z.number().int().positive().default(100),\n maxChunkSize: z.number().int().positive().default(1000),\n }),\n z.object({\n type: z.literal('recursive'),\n separators: z.array(z.string()).default(['\\n\\n', '\\n', ' ', '']),\n chunkSize: z.number().int().positive(),\n chunkOverlap: z.number().int().min(0).default(0),\n }),\n z.object({\n type: z.literal('markdown'),\n maxChunkSize: z.number().int().positive().default(1000),\n respectHeaders: z.boolean().default(true).describe('Keep headers with content'),\n respectCodeBlocks: z.boolean().default(true).describe('Keep code blocks intact'),\n }),\n]));\n\n/**\n * Document Metadata Schema\n */\nexport const DocumentMetadataSchema = lazySchema(() => z.object({\n source: z.string().describe('Document source (file path, URL, etc.)'),\n sourceType: z.enum(['file', 'url', 'api', 'database', 'custom']).optional(),\n title: z.string().optional(),\n author: z.string().optional().describe('Document author'),\n createdAt: z.string().datetime().optional().describe('ISO timestamp'),\n updatedAt: z.string().datetime().optional().describe('ISO timestamp'),\n tags: z.array(z.string()).optional(),\n category: z.string().optional(),\n language: z.string().optional().describe('Document language (ISO 639-1 code)'),\n custom: z.record(z.string(), z.unknown()).optional().describe('Custom metadata fields'),\n}));\n\n/**\n * Document Chunk\n */\nexport const DocumentChunkSchema = lazySchema(() => z.object({\n id: z.string().describe('Unique chunk identifier'),\n content: z.string().describe('Chunk text content'),\n embedding: z.array(z.number()).optional().describe('Embedding vector'),\n metadata: DocumentMetadataSchema,\n chunkIndex: z.number().int().min(0).describe('Chunk position in document'),\n tokens: z.number().int().optional().describe('Token count'),\n}));\n\n/**\n * Retrieval Strategy\n */\nexport const RetrievalStrategySchema = lazySchema(() => z.discriminatedUnion('type', [\n z.object({\n type: z.literal('similarity'),\n topK: z.number().int().positive().default(5).describe('Number of results to retrieve'),\n scoreThreshold: z.number().min(0).max(1).optional().describe('Minimum similarity score'),\n }),\n z.object({\n type: z.literal('mmr'),\n topK: z.number().int().positive().default(5),\n fetchK: z.number().int().positive().default(20).describe('Initial fetch size'),\n lambda: z.number().min(0).max(1).default(0.5).describe('Diversity vs relevance (0=diverse, 1=relevant)'),\n }),\n z.object({\n type: z.literal('hybrid'),\n topK: z.number().int().positive().default(5),\n vectorWeight: z.number().min(0).max(1).default(0.7).describe('Weight for vector search'),\n keywordWeight: z.number().min(0).max(1).default(0.3).describe('Weight for keyword search'),\n }),\n z.object({\n type: z.literal('parent_document'),\n topK: z.number().int().positive().default(5),\n retrieveParent: z.boolean().default(true).describe('Retrieve full parent document'),\n }),\n]));\n\n/**\n * Reranking Configuration\n */\nexport const RerankingConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().default(false),\n model: z.string().optional().describe('Reranking model name'),\n provider: z.enum(['cohere', 'huggingface', 'custom']).optional(),\n topK: z.number().int().positive().default(3).describe('Final number of results after reranking'),\n}));\n\n/**\n * Vector Store Configuration\n */\nexport const VectorStoreConfigSchema = lazySchema(() => z.object({\n provider: VectorStoreProviderSchema,\n indexName: z.string().describe('Index/collection name'),\n namespace: z.string().optional().describe('Namespace for multi-tenancy'),\n \n /** Connection */\n host: z.string().optional().describe('Vector store host'),\n port: z.number().int().optional().describe('Vector store port'),\n secretRef: z.string().optional().describe('Reference to stored secret'),\n apiKey: z.string().optional().describe('API key or reference to secret'),\n \n /** Configuration */\n dimensions: z.number().int().positive().describe('Vector dimensions'),\n metric: z.enum(['cosine', 'euclidean', 'dotproduct']).optional().default('cosine'),\n \n /** Performance */\n batchSize: z.number().int().positive().optional().default(100),\n connectionPoolSize: z.number().int().positive().optional().default(10),\n timeout: z.number().int().positive().optional().default(30000).describe('Timeout in milliseconds'),\n}));\n\n/**\n * Document Loader Configuration\n */\nexport const DocumentLoaderConfigSchema = lazySchema(() => z.object({\n type: z.enum(['file', 'directory', 'url', 'api', 'database', 'custom']),\n \n /** Source */\n source: z.string().describe('Source path, URL, or identifier'),\n \n /** File Types */\n fileTypes: z.array(z.string()).optional().describe('Accepted file extensions (e.g., [\".pdf\", \".md\"])'),\n \n /** Processing */\n recursive: z.boolean().optional().default(false).describe('Process directories recursively'),\n maxFileSize: z.number().int().optional().describe('Maximum file size in bytes'),\n excludePatterns: z.array(z.string()).optional().describe('Patterns to exclude'),\n \n /** Text Extraction */\n extractImages: z.boolean().optional().default(false).describe('Extract text from images (OCR)'),\n extractTables: z.boolean().optional().default(false).describe('Extract and format tables'),\n \n /** Custom Loader */\n loaderConfig: z.record(z.string(), z.unknown()).optional().describe('Custom loader-specific config'),\n}));\n\n/**\n * Filter Expression Schema\n */\nexport const FilterExpressionSchema = lazySchema(() => z.object({\n field: z.string().describe('Metadata field to filter'),\n operator: z.enum(['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'nin', 'contains']).default('eq'),\n value: z.union([z.string(), z.number(), z.boolean(), z.array(z.union([z.string(), z.number()]))]).describe('Filter value'),\n}));\n\nexport type FilterGroup = {\n logic: 'and' | 'or';\n filters: (z.infer<typeof FilterExpressionSchema> | FilterGroup)[];\n};\n\nexport const FilterGroupSchema: z.ZodType<FilterGroup> = lazySchema(() => z.object({\n logic: z.enum(['and', 'or']).default('and'),\n filters: z.array(z.union([FilterExpressionSchema, z.lazy(() => FilterGroupSchema)])),\n}));\n\n/**\n * Standardized Metadata Filter\n */\nexport const MetadataFilterSchema = lazySchema(() => z.union([\n FilterExpressionSchema,\n FilterGroupSchema,\n // Legacy support for simple key-value map\n z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.array(z.union([z.string(), z.number()]))]))\n]));\n\n/**\n * RAG Pipeline Configuration\n */\nexport const RAGPipelineConfigSchema = lazySchema(() => z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Pipeline name (snake_case)'),\n label: z.string().describe('Display name'),\n description: z.string().optional(),\n \n /** Components */\n embedding: EmbeddingModelSchema,\n vectorStore: VectorStoreConfigSchema,\n chunking: ChunkingStrategySchema,\n retrieval: RetrievalStrategySchema,\n reranking: RerankingConfigSchema.optional(),\n \n /** Document Loading */\n loaders: z.array(DocumentLoaderConfigSchema).optional().describe('Document loaders'),\n \n /** Context Management */\n maxContextTokens: z.number().int().positive().default(4000).describe('Maximum tokens in context'),\n contextWindow: z.number().int().positive().optional().describe('LLM context window size'),\n \n /** Metadata Filtering */\n metadataFilters: MetadataFilterSchema.optional().describe('Global filters for retrieval'),\n \n /** Caching */\n enableCache: z.boolean().default(true),\n cacheTTL: z.number().int().positive().default(3600).describe('Cache TTL in seconds'),\n cacheInvalidationStrategy: z.enum(['time_based', 'manual', 'on_update']).default('time_based').optional(),\n}));\n\n/**\n * RAG Query Request\n */\nexport const RAGQueryRequestSchema = lazySchema(() => z.object({\n query: z.string().describe('User query'),\n pipelineName: z.string().describe('Pipeline to use'),\n \n /** Override defaults */\n topK: z.number().int().positive().optional(),\n metadataFilters: z.record(z.string(), z.unknown()).optional(),\n \n /** Context */\n conversationHistory: z.array(z.object({\n role: z.enum(['user', 'assistant', 'system']),\n content: z.string(),\n })).optional(),\n \n /** Options */\n includeMetadata: z.boolean().default(true),\n includeSources: z.boolean().default(true),\n}));\n\n/**\n * RAG Query Response\n */\nexport const RAGQueryResponseSchema = lazySchema(() => z.object({\n query: z.string(),\n results: z.array(z.object({\n content: z.string(),\n score: z.number(),\n metadata: DocumentMetadataSchema.optional(),\n chunkId: z.string().optional(),\n })),\n context: z.string().describe('Assembled context for LLM'),\n tokens: TokenUsageSchema.optional().describe('Token usage for this query'),\n cost: z.number().nonnegative().optional().describe('Cost for this query in USD'),\n retrievalTime: z.number().optional().describe('Retrieval time in milliseconds'),\n}));\n\n/**\n * RAG Pipeline Status\n */\nexport const RAGPipelineStatusSchema = lazySchema(() => z.object({\n name: z.string(),\n status: z.enum(['active', 'indexing', 'error', 'disabled']),\n documentsIndexed: z.number().int().min(0),\n lastIndexed: z.string().datetime().optional().describe('ISO timestamp'),\n errorMessage: z.string().optional(),\n health: z.object({\n vectorStore: z.enum(['healthy', 'unhealthy', 'unknown']),\n embeddingService: z.enum(['healthy', 'unhealthy', 'unknown']),\n }).optional(),\n}));\n\n// Type exports\nexport type VectorStoreProvider = z.infer<typeof VectorStoreProviderSchema>;\nexport type EmbeddingModel = z.infer<typeof EmbeddingModelSchema>;\nexport type ChunkingStrategy = z.infer<typeof ChunkingStrategySchema>;\nexport type DocumentMetadata = z.infer<typeof DocumentMetadataSchema>;\nexport type DocumentChunk = z.infer<typeof DocumentChunkSchema>;\nexport type RetrievalStrategy = z.infer<typeof RetrievalStrategySchema>;\nexport type RerankingConfig = z.infer<typeof RerankingConfigSchema>;\nexport type VectorStoreConfig = z.infer<typeof VectorStoreConfigSchema>;\nexport type DocumentLoaderConfig = z.infer<typeof DocumentLoaderConfigSchema>;\nexport type RAGPipelineConfig = z.infer<typeof RAGPipelineConfigSchema>;\nexport type RAGPipelineConfigInput = z.input<typeof RAGPipelineConfigSchema>;\nexport type RAGQueryRequest = z.infer<typeof RAGQueryRequestSchema>;\nexport type RAGQueryResponse = z.infer<typeof RAGQueryResponseSchema>;\nexport type RAGPipelineStatus = z.infer<typeof RAGPipelineStatusSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from '../shared/expression.zod';\n\n/**\n * Hook Lifecycle Events\n * Defines the interception points in the ObjectQL execution pipeline.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nimport { HookBodySchema } from './hook-body.zod';\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 = lazySchema(() => 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 *\n * Two accepted shapes:\n *\n * - **Inline function** (authoring): `handler: async (ctx) => { ... }`.\n * Convenient in `defineStack({ hooks: [...] })` source files.\n * - **String reference** (build artifact / Studio): `handler: 'my_fn'`.\n * Resolved at runtime against the bundle's `functions` map +\n * anything `engine.registerFunction(name, fn)` added.\n *\n * `objectstack build` automatically lowers inline functions to the\n * string form (using `Hook.name` as the ref) and emits the originals\n * into a sibling `objectstack-runtime.<hash>.mjs` referenced by the\n * top-level `runtimeModule` field. The JSON artifact therefore only\n * ever contains the string form.\n */\n handler: z.union([z.string(), z.custom<(...args: any[]) => any>((v) => typeof v === 'function', { message: 'Expected function' })]).optional().describe('Handler function name (string, post-build) or inline function (pre-build) — DEPRECATED, prefer `body`'),\n\n /**\n * Hook Body (L1 expression or L2 sandboxed JS).\n *\n * Preferred over `handler` for new code. When both are present, runtime\n * loader uses `body` and ignores `handler`.\n *\n * - `{ language: 'expression', source: '...' }` — pure formula (L1).\n * - `{ language: 'js', source: '...', capabilities: [...] }` — sandboxed JS (L2).\n *\n * Authoring convenience: `objectstack build` extracts inline TS handlers from\n * `*.hook.ts` files, AST-checks them, and emits the result here. See plan §6.\n */\n body: HookBodySchema.optional().describe('Hook body — expression (L1) or sandboxed JS (L2)'),\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: ExpressionInputSchema.optional().describe('Predicate (CEL); hook runs only when TRUE. e.g. P`record.status == \"closed\" && record.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 = lazySchema(() => 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 isSystem: z.boolean().optional().describe('True when the call was made with an elevated system context (engine self-writes)'),\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 { FilterConditionSchema } from './filter.zod';\n\n/**\n * Sort Node\n * Represents \"Order By\".\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const SortNodeSchema = lazySchema(() => z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc']).default('asc')\n}));\n\n/**\n * Aggregation Function Enum\n * Standard aggregation functions for data analysis.\n * \n * Supported Functions:\n * - **count**: Count rows (SQL: COUNT(*) or COUNT(field))\n * - **sum**: Sum numeric values (SQL: SUM(field))\n * - **avg**: Average numeric values (SQL: AVG(field))\n * - **min**: Minimum value (SQL: MIN(field))\n * - **max**: Maximum value (SQL: MAX(field))\n * - **count_distinct**: Count unique values (SQL: COUNT(DISTINCT field))\n * - **array_agg**: Aggregate values into array (SQL: ARRAY_AGG(field))\n * - **string_agg**: Concatenate values (SQL: STRING_AGG(field, delimiter))\n * \n * Performance Considerations:\n * - COUNT(*) is typically faster than COUNT(field) as it doesn't check for nulls\n * - COUNT DISTINCT may require additional memory for tracking unique values\n * - Window aggregates (with OVER clause) can be more efficient than subqueries\n * - Large GROUP BY operations benefit from proper indexing on grouped fields\n * \n * @example\n * // SQL: SELECT region, SUM(amount) FROM sales GROUP BY region\n * {\n * object: 'sales',\n * fields: ['region'],\n * aggregations: [\n * { function: 'sum', field: 'amount', alias: 'total_sales' }\n * ],\n * groupBy: ['region']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT COUNT(Id) FROM Account\n * {\n * object: 'account',\n * aggregations: [\n * { function: 'count', alias: 'total_accounts' }\n * ]\n * }\n */\nexport const AggregationFunction = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'array_agg', 'string_agg'\n]);\n\n/**\n * Date Granularity Enum\n * Used to bucket date/timestamp fields into uniform periods during GROUP BY.\n *\n * Backends MAY emit `DATE_TRUNC` (PostgreSQL), `DATE_FORMAT` (MySQL),\n * `$dateTrunc` (MongoDB), or any other equivalent. When a driver does not\n * support server-side truncation the engine falls back to an in-memory bucket\n * using ISO-8601 conventions (weeks start Monday).\n */\nexport const DateGranularity = z.enum(['day', 'week', 'month', 'quarter', 'year']);\n\n/**\n * GroupBy Node\n *\n * A grouping target — either a bare field name (string) for plain grouping,\n * or a structured object that adds `dateGranularity` for time-bucketed\n * grouping. The string form remains the canonical short-hand:\n *\n * ```ts\n * groupBy: ['region', { field: 'closed_at', dateGranularity: 'quarter' }]\n * ```\n *\n * This is backward-compatible: every existing `groupBy: ['region']` payload\n * continues to validate.\n */\nexport const GroupByNodeSchema = lazySchema(() => z.union([\n z.string(),\n z.object({\n field: z.string().describe('Field to group by'),\n dateGranularity: DateGranularity.optional().describe('Bucket date values into uniform periods (day/week/month/quarter/year)'),\n /** Optional alias for the projected group value (defaults to `field`). */\n alias: z.string().optional().describe('Alias for the projected group value'),\n }),\n]));\n\n/**\n * Aggregation Node\n * Represents an aggregated field with function.\n * \n * Aggregations summarize data across groups of rows (GROUP BY).\n * Used with `groupBy` to create analytical queries.\n * \n * @example\n * // SQL: SELECT customer_id, COUNT(*), SUM(amount) FROM orders GROUP BY customer_id\n * {\n * object: 'order',\n * fields: ['customer_id'],\n * aggregations: [\n * { function: 'count', alias: 'order_count' },\n * { function: 'sum', field: 'amount', alias: 'total_amount' }\n * ],\n * groupBy: ['customer_id']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT LeadSource, COUNT(Id) FROM Lead GROUP BY LeadSource\n * {\n * object: 'lead',\n * fields: ['lead_source'],\n * aggregations: [\n * { function: 'count', alias: 'lead_count' }\n * ],\n * groupBy: ['lead_source']\n * }\n */\nexport const AggregationNodeSchema = lazySchema(() => z.object({\n function: AggregationFunction.describe('Aggregation function'),\n field: z.string().optional().describe('Field to aggregate (optional for COUNT(*))'),\n alias: z.string().describe('Result column alias'),\n distinct: z.boolean().optional().describe('Apply DISTINCT before aggregation'),\n filter: FilterConditionSchema.optional().describe('Filter/Condition to apply to the aggregation (FILTER WHERE clause)'),\n}));\n\n/**\n * Join Type Enum\n * Standard SQL join types for combining tables.\n * \n * Join Types:\n * - **inner**: Returns only matching rows from both tables (SQL: INNER JOIN)\n * - **left**: Returns all rows from left table, matching rows from right (SQL: LEFT JOIN)\n * - **right**: Returns all rows from right table, matching rows from left (SQL: RIGHT JOIN)\n * - **full**: Returns all rows from both tables (SQL: FULL OUTER JOIN)\n * \n * @example\n * // SQL: SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * on: ['order.customer_id', '=', 'customer.id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL-style: Find all customers and their orders (if any)\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * on: ['customer.id', '=', 'order.customer_id']\n * }\n * ]\n * }\n */\nexport const JoinType = z.enum(['inner', 'left', 'right', 'full']);\n\n/**\n * Join Execution Strategy\n * Hints to the query engine on how to execute the join.\n * \n * Strategies:\n * - **auto**: Engine decides best strategy (Default).\n * - **database**: Push down join to the database (Requires same datasource).\n * - **hash**: Load both sets into memory and hash join (Cross-datasource, memory intensive).\n * - **loop**: Nested loop lookup (N+1 safe version). (Good for small right-side lookups).\n */\nexport const JoinStrategy = z.enum(['auto', 'database', 'hash', 'loop']);\n\n/**\n * Join Node\n * Represents table joins for combining data from multiple objects.\n * \n * Joins connect related data across multiple tables using ON conditions.\n * Supports both direct object joins and subquery joins.\n * \n * @example\n * // SQL: SELECT o.*, c.name FROM orders o INNER JOIN customers c ON o.customer_id = c.id\n * {\n * object: 'order',\n * fields: ['id', 'amount'],\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Multi-table join\n * // SELECT * FROM orders o\n * // INNER JOIN customers c ON o.customer_id = c.id\n * // LEFT JOIN shipments s ON o.id = s.order_id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * },\n * {\n * type: 'left',\n * object: 'shipment',\n * alias: 's',\n * on: ['order.id', '=', 's.order_id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT Name, (SELECT LastName FROM Contacts) FROM Account\n * {\n * object: 'account',\n * fields: ['name'],\n * joins: [\n * {\n * type: 'left',\n * object: 'contact',\n * on: ['account.id', '=', 'contact.account_id']\n * }\n * ]\n * }\n * \n * @example\n * // Subquery Join: Join with a filtered/aggregated dataset\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * alias: 'high_value_orders',\n * on: ['customer.id', '=', 'high_value_orders.customer_id'],\n * subquery: {\n * object: 'order',\n * fields: ['customer_id', 'total'],\n * filters: ['total', '>', 1000]\n * }\n * }\n * ]\n * }\n */\nexport const JoinNodeSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n type: JoinType.describe('Join type'),\n strategy: JoinStrategy.optional().describe('Execution strategy hint'),\n object: z.string().describe('Object/table to join'),\n alias: z.string().optional().describe('Table alias'),\n on: FilterConditionSchema.describe('Join condition'),\n subquery: z.lazy(() => QuerySchema).optional().describe('Subquery instead of object'),\n })\n);\n\n/**\n * Window Function Enum\n * Advanced analytical functions for row-based calculations.\n * \n * Window Functions:\n * - **row_number**: Sequential number within partition (SQL: ROW_NUMBER() OVER (...))\n * - **rank**: Rank with gaps for ties (SQL: RANK() OVER (...))\n * - **dense_rank**: Rank without gaps (SQL: DENSE_RANK() OVER (...))\n * - **percent_rank**: Relative rank as percentage (SQL: PERCENT_RANK() OVER (...))\n * - **lag**: Access previous row value (SQL: LAG(field) OVER (...))\n * - **lead**: Access next row value (SQL: LEAD(field) OVER (...))\n * - **first_value**: First value in window (SQL: FIRST_VALUE(field) OVER (...))\n * - **last_value**: Last value in window (SQL: LAST_VALUE(field) OVER (...))\n * - **sum/avg/count/min/max**: Aggregates over window (SQL: SUM(field) OVER (...))\n * \n * @example\n * // SQL: SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY amount DESC) as rank\n * // FROM orders\n * {\n * object: 'order',\n * fields: ['id', 'customer_id', 'amount'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'rank',\n * over: {\n * partitionBy: ['customer_id'],\n * orderBy: [{ field: 'amount', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Running total with SUM() OVER (...)\n * {\n * object: 'transaction',\n * fields: ['date', 'amount'],\n * windowFunctions: [\n * {\n * function: 'sum',\n * field: 'amount',\n * alias: 'running_total',\n * over: {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: 'UNBOUNDED PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunction = z.enum([\n 'row_number', 'rank', 'dense_rank', 'percent_rank',\n 'lag', 'lead', 'first_value', 'last_value',\n 'sum', 'avg', 'count', 'min', 'max'\n]);\n\n/**\n * Window Specification\n * Defines PARTITION BY and ORDER BY for window functions.\n * \n * Window specifications control how window functions compute values:\n * - **partitionBy**: Divide rows into groups (like GROUP BY but without collapsing rows)\n * - **orderBy**: Define order for ranking and offset functions\n * - **frame**: Specify which rows to include in aggregate calculations\n * \n * @example\n * // Partition by department, order by salary\n * {\n * partitionBy: ['department'],\n * orderBy: [{ field: 'salary', order: 'desc' }]\n * }\n * \n * @example\n * // Moving average with frame specification\n * {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: '6 PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n */\nexport const WindowSpecSchema = lazySchema(() => z.object({\n partitionBy: z.array(z.string()).optional().describe('PARTITION BY fields'),\n orderBy: z.array(SortNodeSchema).optional().describe('ORDER BY specification'),\n frame: z.object({\n type: z.enum(['rows', 'range']).optional(),\n start: z.string().optional().describe('Frame start (e.g., \"UNBOUNDED PRECEDING\", \"1 PRECEDING\")'),\n end: z.string().optional().describe('Frame end (e.g., \"CURRENT ROW\", \"1 FOLLOWING\")'),\n }).optional().describe('Window frame specification'),\n}));\n\n/**\n * Window Function Node\n * Represents window function with OVER clause.\n * \n * Window functions perform calculations across a set of rows related to the current row,\n * without collapsing the result set (unlike GROUP BY aggregations).\n * \n * @example\n * // SQL: Top 3 products per category\n * // SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY sales DESC) as rank\n * // FROM products\n * {\n * object: 'product',\n * fields: ['name', 'category', 'sales'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'category_rank',\n * over: {\n * partitionBy: ['category'],\n * orderBy: [{ field: 'sales', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Year-over-year comparison with LAG\n * {\n * object: 'monthly_sales',\n * fields: ['month', 'revenue'],\n * windowFunctions: [\n * {\n * function: 'lag',\n * field: 'revenue',\n * alias: 'prev_year_revenue',\n * over: {\n * orderBy: [{ field: 'month', order: 'asc' }]\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunctionNodeSchema = lazySchema(() => z.object({\n function: WindowFunction.describe('Window function name'),\n field: z.string().optional().describe('Field to operate on (for aggregate window functions)'),\n alias: z.string().describe('Result column alias'),\n over: WindowSpecSchema.describe('Window specification (OVER clause)'),\n}));\n\n/**\n * Field Selection Node\n * Represents \"Select\" attributes, including joins.\n */\nexport const FieldNodeSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n z.string(), // Primitive field: \"name\"\n z.object({\n field: z.string(), // Relationship field: \"owner\"\n fields: z.array(FieldNodeSchema).optional(), // Nested select: [\"name\", \"email\"]\n alias: z.string().optional()\n })\n ])\n);\n\n/**\n * Full-Text Search Configuration\n * Defines full-text search parameters for text queries.\n * \n * Supports:\n * - Multi-field search\n * - Relevance scoring\n * - Fuzzy matching\n * - Language-specific analyzers\n * \n * @example\n * {\n * query: \"John Smith\",\n * fields: [\"name\", \"email\", \"description\"],\n * fuzzy: true,\n * boost: { \"name\": 2.0, \"email\": 1.5 }\n * }\n */\nexport const FullTextSearchSchema = lazySchema(() => z.object({\n query: z.string().describe('Search query text'),\n fields: z.array(z.string()).optional().describe('Fields to search in (if not specified, searches all text fields)'),\n fuzzy: z.boolean().optional().default(false).describe('Enable fuzzy matching (tolerates typos)'),\n operator: z.enum(['and', 'or']).optional().default('or').describe('Logical operator between terms'),\n boost: z.record(z.string(), z.number()).optional().describe('Field-specific relevance boosting (field name -> boost factor)'),\n minScore: z.number().optional().describe('Minimum relevance score threshold'),\n language: z.string().optional().describe('Language for text analysis (e.g., \"en\", \"zh\", \"es\")'),\n highlight: z.boolean().optional().default(false).describe('Enable search result highlighting'),\n}));\n\nexport type FullTextSearch = z.infer<typeof FullTextSearchSchema>;\n\n/**\n * Query AST Schema\n * The universal data retrieval contract defined in `ast-structure.mdx`.\n * \n * This schema represents ObjectQL - a universal query language that abstracts\n * SQL, NoSQL, and SaaS APIs into a single unified interface.\n * \n * Updates (v2):\n * - Aligned with modern ORM standards (Prisma/TypeORM)\n * - Added `cursor` based pagination support\n * - Renamed `top`/`skip` to `limit`/`offset`\n * - Unified filtering syntax with `FilterConditionSchema`\n * \n * Updates (v3):\n * - Added `search` parameter for full-text search (P2 requirement)\n * \n * @example\n * // Simple query: SELECT name, email FROM account WHERE status = 'active'\n * {\n * object: 'account',\n * fields: ['name', 'email'],\n * where: { status: 'active' }\n * }\n * \n * @example\n * // Pagination with Limit/Offset\n * {\n * object: 'post',\n * where: { published: true },\n * orderBy: [{ field: 'created_at', order: 'desc' }],\n * limit: 20,\n * offset: 40\n * }\n * \n * @example\n * // Full-text search\n * {\n * object: 'article',\n * search: {\n * query: \"machine learning\",\n * fields: [\"title\", \"content\"],\n * fuzzy: true,\n * boost: { \"title\": 2.0 }\n * },\n * limit: 10\n * }\n */\nconst BaseQuerySchema = z.object({\n /** Target Entity */\n object: z.string().describe('Object name (e.g. account)'),\n \n /** Select Clause */\n fields: z.array(FieldNodeSchema).optional().describe('Fields to retrieve'),\n \n /** Where Clause (Filtering) */\n where: FilterConditionSchema.optional().describe('Filtering criteria (WHERE)'),\n \n /** Full-Text Search */\n search: FullTextSearchSchema.optional().describe('Full-text search configuration ($search parameter)'),\n \n /** Order By Clause (Sorting) */\n orderBy: z.array(SortNodeSchema).optional().describe('Sorting instructions (ORDER BY)'),\n \n /** Pagination */\n limit: z.number().optional().describe('Max records to return (LIMIT)'),\n offset: z.number().optional().describe('Records to skip (OFFSET)'),\n top: z.number().optional().describe('Alias for limit (OData compatibility)'),\n cursor: z.record(z.string(), z.unknown()).optional().describe('Cursor for keyset pagination'),\n \n /** Joins */\n joins: z.array(JoinNodeSchema).optional().describe('Explicit Table Joins'),\n \n /** Aggregations */\n aggregations: z.array(AggregationNodeSchema).optional().describe('Aggregation functions'),\n \n /** Group By Clause */\n groupBy: z.array(GroupByNodeSchema).optional().describe('GROUP BY targets (strings or `{field, dateGranularity?}` objects for date bucketing)'),\n \n /** Having Clause */\n having: FilterConditionSchema.optional().describe('HAVING clause for aggregation filtering'),\n \n /** Window Functions */\n windowFunctions: z.array(WindowFunctionNodeSchema).optional().describe('Window functions with OVER clause'),\n \n /** Subquery flag */\n distinct: z.boolean().optional().describe('SELECT DISTINCT flag'),\n});\n\n/**\n * QueryAST — Abstract Syntax Tree for data queries.\n *\n * The `expand` property enables recursive loading of related records through\n * lookup and master_detail fields. Each key is a relationship field name; the\n * value is a nested QueryAST that can further filter, select, sort, and expand\n * the related records (up to a default max depth of 3).\n *\n * @example\n * ```ts\n * const ast: QueryAST = {\n * object: 'task',\n * fields: ['title', 'assignee'],\n * expand: {\n * assignee: { object: 'user', fields: ['name', 'email'] },\n * project: {\n * object: 'project',\n * expand: { org: { object: 'org' } } // nested expand\n * }\n * }\n * };\n * ```\n */\nexport type QueryAST = z.infer<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryAST>;\n};\n\nexport type QueryInput = z.input<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryInput>;\n};\n\nexport const QuerySchema: z.ZodType<QueryAST> = lazySchema(() => BaseQuerySchema.extend({\n expand: z.lazy(() => z.record(z.string(), QuerySchema)).optional().describe(\n 'Recursive relation loading map. Keys are lookup/master_detail field names; '\n + 'values are nested QueryAST objects that control select, filter, sort, and '\n + 'further expansion on the related object. The engine resolves expand via '\n + 'batch $in queries (driver-agnostic) with a default max depth of 3.'\n ),\n}));\n\nexport type SortNode = z.infer<typeof SortNodeSchema>;\nexport type AggregationNode = z.infer<typeof AggregationNodeSchema>;\nexport type GroupByNode = z.infer<typeof GroupByNodeSchema>;\nexport type DateGranularityValue = z.infer<typeof DateGranularity>;\nexport type JoinNode = z.infer<typeof JoinNodeSchema>;\nexport type WindowFunctionNode = z.infer<typeof WindowFunctionNodeSchema>;\nexport type WindowSpec = z.infer<typeof WindowSpecSchema>;\n","// Copyright (c) 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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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 = lazySchema(() => 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';\nimport { FilterConditionSchema } from './filter.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 */\nimport { lazySchema } from '../shared/lazy-schema';\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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 = lazySchema(() => 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 /**\n * WHERE clause — canonical filter shape per the unified Query DSL\n * (see {@link FilterConditionSchema} in `data/filter.zod.ts` and\n * {@link QuerySchema} in `data/query.zod.ts`). This is the same\n * MongoDB-style filter used by `find()`, dashboard widget `filter`,\n * RLS conditions, etc.\n *\n * @example\n * ```ts\n * { where: { is_active: true, stage: { $nin: ['lost'] } } }\n * ```\n */\n where: FilterConditionSchema.optional().describe('Filtering criteria (canonical Query DSL FilterCondition)'),\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';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * Webhook Trigger Event\n * When should this webhook fire?\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const WebhookTriggerType = z.enum([\n 'create', \n 'update', \n 'delete', \n 'undelete',\n 'api' // Manually triggered\n]);\n\n/**\n * CANONICAL WEBHOOK DEFINITION\n * \n * This is the single source of truth for webhook configuration across ObjectStack.\n * All other protocols (workflow, connector, etc.) should import and reference this schema.\n * \n * Webhook Protocol - Outbound HTTP Integration\n * Push data to external URLs when events occur in the system.\n * \n * **NAMING CONVENTION:**\n * Webhook names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good webhook names\n * - 'stripe_payment_sync'\n * - 'slack_notification'\n * - 'crm_lead_export'\n * \n * @example Bad webhook names (will be rejected)\n * - 'StripePaymentSync' (PascalCase)\n * - 'slackNotification' (camelCase)\n * \n * @example Basic webhook configuration\n * ```typescript\n * const webhook: Webhook = {\n * name: 'slack_notification',\n * label: 'Slack Order Notification',\n * object: 'order',\n * triggers: ['create', 'update'],\n * url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXX',\n * method: 'POST',\n * headers: { 'Content-Type': 'application/json' },\n * authentication: {\n * type: 'bearer',\n * credentials: { token: process.env.SLACK_TOKEN }\n * },\n * retryPolicy: {\n * maxRetries: 3,\n * backoffStrategy: 'exponential'\n * }\n * }\n * ```\n */\nexport const WebhookSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Webhook unique name (lowercase snake_case)'),\n label: z.string().optional().describe('Human-readable webhook label'),\n \n /** Scope */\n object: z.string().optional().describe('Object to listen to (optional for manual webhooks)'),\n triggers: z.array(WebhookTriggerType).optional().describe('Events that trigger execution'),\n \n /** Target */\n url: z.string().url().describe('External webhook endpoint URL'),\n method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']).default('POST').describe('HTTP method'),\n \n /** Headers */\n headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),\n \n /** Body/Payload */\n body: z.unknown().optional().describe('Request body payload (if not using default record data)'),\n \n /** Payload Configuration */\n payloadFields: z.array(z.string()).optional().describe('Fields to include. Empty = All'),\n includeSession: z.boolean().default(false).describe('Include user session info'),\n \n /** Authentication */\n authentication: z.object({\n type: z.enum(['none', 'bearer', 'basic', 'api-key']).describe('Authentication type'),\n credentials: z.record(z.string(), z.string()).optional().describe('Authentication credentials'),\n }).optional().describe('Authentication configuration'),\n \n /** Retry Policy */\n retryPolicy: z.object({\n maxRetries: z.number().int().min(0).max(10).default(3).describe('Maximum retry attempts'),\n backoffStrategy: z.enum(['exponential', 'linear', 'fixed']).default('exponential').describe('Backoff strategy'),\n initialDelayMs: z.number().int().min(100).default(1000).describe('Initial retry delay in milliseconds'),\n maxDelayMs: z.number().int().min(1000).default(60000).describe('Maximum retry delay in milliseconds'),\n }).optional().describe('Retry policy configuration'),\n \n /** Timeout */\n timeoutMs: z.number().int().min(1000).max(300000).default(30000).describe('Request timeout in milliseconds'),\n \n /** Security */\n secret: z.string().optional().describe('Signing secret for HMAC signature verification'),\n \n /** Status */\n isActive: z.boolean().default(true).describe('Whether webhook is active'),\n \n /** Metadata */\n description: z.string().optional().describe('Webhook description'),\n tags: z.array(z.string()).optional().describe('Tags for organization'),\n}));\n\n/**\n * Webhook Receiver Schema (Inbound)\n * Handling incoming HTTP hooks from Stripe, Slack, etc.\n * \n * **NAMING CONVENTION:**\n * Webhook receiver names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good names\n * - 'stripe_webhook_handler'\n * - 'github_events'\n * - 'twilio_status_callback'\n * \n * @example Bad names (will be rejected)\n * - 'StripeWebhookHandler' (PascalCase)\n */\nexport const WebhookReceiverSchema = lazySchema(() => z.object({\n name: SnakeCaseIdentifierSchema.describe('Webhook receiver unique name (lowercase snake_case)'),\n path: z.string().describe('URL Path (e.g. /webhooks/stripe)'),\n \n /** Verification */\n verificationType: z.enum(['none', 'header_token', 'hmac', 'ip_whitelist']).default('none'),\n verificationParams: z.object({\n header: z.string().optional(),\n secret: z.string().optional(),\n ips: z.array(z.string()).optional()\n }).optional(),\n \n /** Action */\n action: z.enum(['trigger_flow', 'script', 'upsert_record']).default('trigger_flow'),\n target: z.string().describe('Flow ID or Script name'),\n}));\n\nexport type Webhook = z.infer<typeof WebhookSchema>;\nexport type WebhookReceiver = z.infer<typeof WebhookReceiverSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n/**\n * SHARED CONNECTOR AUTHENTICATION SCHEMAS\n * These schemas are used by connectors and integrations for external auth.\n * They define \"How we authenticate TO other systems\", not \"How users authenticate TO us\".\n */\n\n/**\n * OAuth2 Authentication Schema\n */\nimport { lazySchema } from './lazy-schema';\nexport const ConnectorOAuth2Schema = lazySchema(() => z.object({\n type: z.literal('oauth2'),\n authorizationUrl: z.string().url().describe('OAuth2 authorization endpoint'),\n tokenUrl: z.string().url().describe('OAuth2 token endpoint'),\n clientId: z.string().describe('OAuth2 client ID'),\n clientSecret: z.string().describe('OAuth2 client secret (typically from ENV)'),\n scopes: z.array(z.string()).optional().describe('Requested OAuth2 scopes'),\n redirectUri: z.string().url().optional().describe('OAuth2 redirect URI'),\n refreshToken: z.string().optional().describe('Refresh token for token renewal'),\n tokenExpiry: z.number().optional().describe('Token expiry timestamp'),\n}));\n\n/**\n * API Key Authentication Schema\n */\nexport const ConnectorAPIKeySchema = lazySchema(() => z.object({\n type: z.literal('api-key'),\n key: z.string().describe('API key value'),\n headerName: z.string().default('X-API-Key').describe('HTTP header name for API key'),\n paramName: z.string().optional().describe('Query parameter name (alternative to header)'),\n}));\n\n/**\n * Basic Authentication Schema\n */\nexport const ConnectorBasicAuthSchema = lazySchema(() => z.object({\n type: z.literal('basic'),\n username: z.string().describe('Username'),\n password: z.string().describe('Password'),\n}));\n\n/**\n * Bearer Token Authentication Schema\n */\nexport const ConnectorBearerAuthSchema = lazySchema(() => z.object({\n type: z.literal('bearer'),\n token: z.string().describe('Bearer token'),\n}));\n\n/**\n * No Authentication Schema\n */\nexport const ConnectorNoAuthSchema = lazySchema(() => z.object({\n type: z.literal('none'),\n}));\n\n/**\n * Unified Connector Auth Configuration Schema\n */\nexport const ConnectorAuthConfigSchema = lazySchema(() => z.discriminatedUnion('type', [\n ConnectorOAuth2Schema,\n ConnectorAPIKeySchema,\n ConnectorBasicAuthSchema,\n ConnectorBearerAuthSchema,\n ConnectorNoAuthSchema,\n]));\n\nexport type ConnectorAuthConfig = z.infer<typeof ConnectorAuthConfigSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\nimport { ExpressionInputSchema } from './expression.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 */\nimport { lazySchema } from './lazy-schema';\nexport const TransformTypeSchema = lazySchema(() => 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: ExpressionInputSchema.describe('JS expression (dialect=\"js\" recommended). 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 = lazySchema(() => 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 { CronExpressionInputSchema } from '../shared/expression.zod';\nimport { WebhookSchema } from '../automation/webhook.zod';\nimport { ConnectorAuthConfigSchema } from '../shared/connector-auth.zod';\nimport { FieldMappingSchema as BaseFieldMappingSchema } from '../shared/mapping.zod';\n\n/**\n * Connector Protocol - LEVEL 3: Enterprise Connector\n * \n * Defines the standard connector specification for external system integration.\n * Connectors enable ObjectStack to sync data with SaaS apps, databases, file storage,\n * and message queues through a unified protocol.\n * \n * **Positioning in 3-Layer Architecture:**\n * - **L1: Simple Sync** (automation/sync.zod.ts) - Business users - Sync Salesforce to Sheets\n * - **L2: ETL Pipeline** (automation/etl.zod.ts) - Data engineers - Aggregate 10 sources to warehouse\n * - **L3: Enterprise Connector** (THIS FILE) - System integrators - Full SAP integration\n * \n * **SCOPE: Most comprehensive integration layer.**\n * Includes authentication, webhooks, rate limiting, field mapping, bidirectional sync,\n * retry policies, and complete lifecycle management.\n * \n * This protocol supports multiple authentication strategies, bidirectional sync,\n * field mapping, webhooks, and comprehensive rate limiting.\n * \n * Authentication is now imported from the canonical auth/config.zod.ts.\n * \n * ## When to Use This Layer\n * \n * **Use Enterprise Connector when:**\n * - Building enterprise-grade connectors (e.g., Salesforce, SAP, Oracle)\n * - Complex OAuth2/SAML authentication required\n * - Bidirectional sync with field mapping and transformations\n * - Webhook management and rate limiting required\n * - Full CRUD operations and data synchronization\n * - Need comprehensive retry strategies and error handling\n * \n * **Examples:**\n * - Full Salesforce integration with webhooks\n * - SAP ERP connector with CDC (Change Data Capture)\n * - Microsoft Dynamics 365 connector\n * \n * **When to downgrade:**\n * - Simple field sync → Use {@link file://../automation/sync.zod.ts | Simple Sync}\n * - Data transformation only → Use {@link file://../automation/etl.zod.ts | ETL Pipeline}\n * \n * @see {@link file://../automation/sync.zod.ts} for Level 1 (simple sync)\n * @see {@link file://../automation/etl.zod.ts} for Level 2 (data engineering)\n * \n * ## When to use Integration Connector vs. Trigger Registry?\n * \n * **Use `integration/connector.zod.ts` when:**\n * - Building enterprise-grade connectors (e.g., Salesforce, SAP, Oracle)\n * - Complex OAuth2/SAML authentication required\n * - Bidirectional sync with field mapping and transformations\n * - Webhook management and rate limiting required\n * - Full CRUD operations and data synchronization\n * - Need comprehensive retry strategies and error handling\n * \n * **Use `automation/trigger-registry.zod.ts` when:**\n * - Building simple automation triggers (e.g., \"when Slack message received, create task\")\n * - No complex authentication needed (simple API keys, basic auth)\n * - Lightweight, single-purpose integrations\n * - Quick setup with minimal configuration\n * \n * @see ../../automation/trigger-registry.zod.ts for lightweight automation triggers\n */\n\n// ============================================================================\n// Authentication Schemas - IMPORTED FROM CANONICAL SOURCE\n// Use ConnectorAuthConfigSchema from shared/connector-auth.zod.ts\n// ============================================================================\n\n// ============================================================================\n// Field Mapping Schema\n// Uses the canonical field mapping protocol from shared/mapping.zod.ts\n// Extended with connector-specific features\n// ============================================================================\n\n/**\n * Connector Field Mapping Configuration\n * \n * Extends the base field mapping with connector-specific features\n * like bidirectional sync modes and data type mapping.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const FieldMappingSchema = lazySchema(() => BaseFieldMappingSchema.extend({\n /**\n * Data type mapping (connector-specific)\n */\n dataType: z.enum([\n 'string',\n 'number',\n 'boolean',\n 'date',\n 'datetime',\n 'json',\n 'array',\n ]).optional().describe('Target data type'),\n \n /**\n * Is this field required?\n */\n required: z.boolean().default(false).describe('Field is required'),\n \n /**\n * Bidirectional sync mode (connector-specific)\n */\n syncMode: z.enum([\n 'read_only', // Only sync from external to ObjectStack\n 'write_only', // Only sync from ObjectStack to external\n 'bidirectional', // Sync both ways\n ]).default('bidirectional').describe('Sync mode'),\n}));\n\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n\n// ============================================================================\n// Data Synchronization Configuration\n// ============================================================================\n\n/**\n * Sync Strategy Schema\n */\nexport const SyncStrategySchema = lazySchema(() => z.enum([\n 'full', // Full refresh (delete all and re-import)\n 'incremental', // Only sync changes since last sync\n 'upsert', // Insert new, update existing\n 'append_only', // Only insert new records\n]).describe('Synchronization strategy'));\n\nexport type SyncStrategy = z.infer<typeof SyncStrategySchema>;\n\n/**\n * Conflict Resolution Strategy\n */\nexport const ConflictResolutionSchema = lazySchema(() => z.enum([\n 'source_wins', // External system data takes precedence\n 'target_wins', // ObjectStack data takes precedence\n 'latest_wins', // Most recently modified wins\n 'manual', // Flag for manual resolution\n]).describe('Conflict resolution strategy'));\n\nexport type ConflictResolution = z.infer<typeof ConflictResolutionSchema>;\n\n/**\n * Data Synchronization Configuration\n */\nexport const DataSyncConfigSchema = lazySchema(() => z.object({\n /**\n * Sync strategy\n */\n strategy: SyncStrategySchema.optional().default('incremental'),\n \n /**\n * Sync direction\n */\n direction: z.enum([\n 'import', // External → ObjectStack\n 'export', // ObjectStack → External\n 'bidirectional', // Both ways\n ]).optional().default('import').describe('Sync direction'),\n \n /**\n * Sync frequency (cron expression)\n */\n schedule: CronExpressionInputSchema.optional().describe('Cron expression for scheduled sync — cron`0 */15 * * *`'),\n \n /**\n * Enable real-time sync via webhooks\n */\n realtimeSync: z.boolean().optional().default(false).describe('Enable real-time sync'),\n \n /**\n * Field to track last sync timestamp\n */\n timestampField: z.string().optional().describe('Field to track last modification time'),\n \n /**\n * Conflict resolution strategy\n */\n conflictResolution: ConflictResolutionSchema.optional().default('latest_wins'),\n \n /**\n * Batch size for bulk operations\n */\n batchSize: z.number().min(1).max(10000).optional().default(1000).describe('Records per batch'),\n \n /**\n * Delete handling\n */\n deleteMode: z.enum([\n 'hard_delete', // Permanently delete\n 'soft_delete', // Mark as deleted\n 'ignore', // Don't sync deletions\n ]).optional().default('soft_delete').describe('Delete handling mode'),\n \n /**\n * Filter criteria for selective sync\n */\n filters: z.record(z.string(), z.unknown()).optional().describe('Filter criteria for selective sync'),\n}));\n\nexport type DataSyncConfig = z.infer<typeof DataSyncConfigSchema>;\n\n// ============================================================================\n// Webhook Configuration\n// ============================================================================\n\n/**\n * Webhook Event Schema\n */\nexport const WebhookEventSchema = lazySchema(() => z.enum([\n 'record.created',\n 'record.updated',\n 'record.deleted',\n 'sync.started',\n 'sync.completed',\n 'sync.failed',\n 'auth.expired',\n 'rate_limit.exceeded',\n]).describe('Webhook event type'));\n\nexport type WebhookEvent = z.infer<typeof WebhookEventSchema>;\n\n/**\n * Webhook Signature Algorithm\n */\nexport const WebhookSignatureAlgorithmSchema = lazySchema(() => z.enum([\n 'hmac_sha256',\n 'hmac_sha512',\n 'none',\n]).describe('Webhook signature algorithm'));\n\nexport type WebhookSignatureAlgorithm = z.infer<typeof WebhookSignatureAlgorithmSchema>;\n\n/**\n * Webhook Configuration Schema\n * \n * Extends the canonical WebhookSchema with connector-specific event types.\n * This allows connectors to subscribe to both data events and connector lifecycle events.\n */\nexport const WebhookConfigSchema = lazySchema(() => WebhookSchema.extend({\n /**\n * Events to listen for\n * Connector-specific events like sync completion, auth expiry, etc.\n */\n events: z.array(WebhookEventSchema).optional().describe('Connector events to subscribe to'),\n \n /**\n * Signature algorithm for webhook security\n */\n signatureAlgorithm: WebhookSignatureAlgorithmSchema.optional().default('hmac_sha256'),\n}));\n\nexport type WebhookConfig = z.infer<typeof WebhookConfigSchema>;\n\n// ============================================================================\n// Rate Limiting and Retry Configuration\n// ============================================================================\n\n/**\n * Rate Limiting Strategy\n */\nexport const RateLimitStrategySchema = lazySchema(() => z.enum([\n 'fixed_window', // Fixed time window\n 'sliding_window', // Sliding time window\n 'token_bucket', // Token bucket algorithm\n 'leaky_bucket', // Leaky bucket algorithm\n]).describe('Rate limiting strategy'));\n\nexport type RateLimitStrategy = z.infer<typeof RateLimitStrategySchema>;\n\n/**\n * Rate Limiting Configuration\n */\nexport const RateLimitConfigSchema = lazySchema(() => z.object({\n /**\n * Rate limiting strategy\n */\n strategy: RateLimitStrategySchema.optional().default('token_bucket'),\n \n /**\n * Maximum requests per window\n */\n maxRequests: z.number().min(1).describe('Maximum requests per window'),\n \n /**\n * Time window in seconds\n */\n windowSeconds: z.number().min(1).describe('Time window in seconds'),\n \n /**\n * Burst capacity (for token bucket)\n */\n burstCapacity: z.number().min(1).optional().describe('Burst capacity'),\n \n /**\n * Respect external system rate limits\n */\n respectUpstreamLimits: z.boolean().optional().default(true).describe('Respect external rate limit headers'),\n \n /**\n * Custom rate limit headers to check\n */\n rateLimitHeaders: z.object({\n remaining: z.string().optional().default('X-RateLimit-Remaining').describe('Header for remaining requests'),\n limit: z.string().optional().default('X-RateLimit-Limit').describe('Header for rate limit'),\n reset: z.string().optional().default('X-RateLimit-Reset').describe('Header for reset time'),\n }).optional().describe('Custom rate limit headers'),\n}));\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\n\n/**\n * Retry Strategy\n */\nexport const RetryStrategySchema = lazySchema(() => z.enum([\n 'exponential_backoff',\n 'linear_backoff',\n 'fixed_delay',\n 'no_retry',\n]).describe('Retry strategy'));\n\nexport type RetryStrategy = z.infer<typeof RetryStrategySchema>;\n\n/**\n * Retry Configuration\n */\nexport const RetryConfigSchema = lazySchema(() => z.object({\n /**\n * Retry strategy\n */\n strategy: RetryStrategySchema.optional().default('exponential_backoff'),\n \n /**\n * Maximum retry attempts\n */\n maxAttempts: z.number().min(0).max(10).optional().default(3).describe('Maximum retry attempts'),\n \n /**\n * Initial delay in milliseconds\n */\n initialDelayMs: z.number().min(100).optional().default(1000).describe('Initial retry delay in ms'),\n \n /**\n * Maximum delay in milliseconds\n */\n maxDelayMs: z.number().min(1000).optional().default(60000).describe('Maximum retry delay in ms'),\n \n /**\n * Backoff multiplier (for exponential backoff)\n */\n backoffMultiplier: z.number().min(1).optional().default(2).describe('Exponential backoff multiplier'),\n \n /**\n * HTTP status codes to retry\n */\n retryableStatusCodes: z.array(z.number()).optional().default([408, 429, 500, 502, 503, 504]).describe('HTTP status codes to retry'),\n \n /**\n * Retry on network errors\n */\n retryOnNetworkError: z.boolean().optional().default(true).describe('Retry on network errors'),\n \n /**\n * Jitter to add randomness to retry delays\n */\n jitter: z.boolean().optional().default(true).describe('Add jitter to retry delays'),\n}));\n\nexport type RetryConfig = z.infer<typeof RetryConfigSchema>;\n\n// ============================================================================\n// Error Mapping Configuration\n// ============================================================================\n\n/**\n * Error Category\n */\nexport const ErrorCategorySchema = lazySchema(() => z.enum([\n 'validation',\n 'authorization',\n 'not_found',\n 'conflict',\n 'rate_limit',\n 'timeout',\n 'server_error',\n 'integration_error',\n]).describe('Standard error category'));\n\nexport type ErrorCategory = z.infer<typeof ErrorCategorySchema>;\n\n/**\n * Error Mapping Rule\n * \n * Maps an external system error code to an ObjectStack standard error.\n */\nexport const ErrorMappingRuleSchema = lazySchema(() => z.object({\n sourceCode: z.union([z.string(), z.number()]).describe('External system error code'),\n sourceMessage: z.string().optional().describe('Pattern to match against error message'),\n targetCode: z.string().describe('ObjectStack standard error code'),\n targetCategory: ErrorCategorySchema.describe('Error category'),\n severity: z.enum(['low', 'medium', 'high', 'critical']).describe('Error severity level'),\n retryable: z.boolean().describe('Whether the error is retryable'),\n userMessage: z.string().optional().describe('Human-readable message to show users'),\n}).describe('Error mapping rule'));\n\nexport type ErrorMappingRule = z.infer<typeof ErrorMappingRuleSchema>;\n\n/**\n * Error Mapping Configuration\n * \n * Configures how external system errors are mapped to ObjectStack standard errors.\n */\nexport const ErrorMappingConfigSchema = lazySchema(() => z.object({\n rules: z.array(ErrorMappingRuleSchema).describe('Error mapping rules'),\n defaultCategory: ErrorCategorySchema.optional().default('integration_error').describe('Default category for unmapped errors'),\n unmappedBehavior: z.enum(['passthrough', 'generic_error', 'throw']).describe('What to do with unmapped errors'),\n logUnmapped: z.boolean().optional().default(true).describe('Log unmapped errors'),\n}).describe('Error mapping configuration'));\n\nexport type ErrorMappingConfig = z.infer<typeof ErrorMappingConfigSchema>;\n\n// ============================================================================\n// Health Check & Circuit Breaker Configuration\n// ============================================================================\n\n/**\n * Health Check Configuration\n * \n * Configures periodic health checks for connector endpoints.\n */\nexport const HealthCheckConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().describe('Enable health checks'),\n intervalMs: z.number().optional().default(60000).describe('Health check interval in milliseconds'),\n timeoutMs: z.number().optional().default(5000).describe('Health check timeout in milliseconds'),\n endpoint: z.string().optional().describe('Health check endpoint path'),\n method: z.enum(['GET', 'HEAD', 'OPTIONS']).optional().describe('HTTP method for health check'),\n expectedStatus: z.number().optional().default(200).describe('Expected HTTP status code'),\n unhealthyThreshold: z.number().optional().default(3).describe('Consecutive failures before marking unhealthy'),\n healthyThreshold: z.number().optional().default(1).describe('Consecutive successes before marking healthy'),\n}).describe('Health check configuration'));\n\nexport type HealthCheckConfig = z.infer<typeof HealthCheckConfigSchema>;\n\n/**\n * Circuit Breaker Configuration\n * \n * Implements the circuit breaker pattern to prevent cascading failures.\n */\nexport const CircuitBreakerConfigSchema = lazySchema(() => z.object({\n enabled: z.boolean().describe('Enable circuit breaker'),\n failureThreshold: z.number().optional().default(5).describe('Failures before opening circuit'),\n resetTimeoutMs: z.number().optional().default(30000).describe('Time in open state before half-open'),\n halfOpenMaxRequests: z.number().optional().default(1).describe('Requests allowed in half-open state'),\n monitoringWindow: z.number().optional().default(60000).describe('Rolling window for failure count in ms'),\n fallbackStrategy: z.enum(['cache', 'default_value', 'error', 'queue']).optional().describe('Fallback strategy when circuit is open'),\n}).describe('Circuit breaker configuration'));\n\nexport type CircuitBreakerConfig = z.infer<typeof CircuitBreakerConfigSchema>;\n\n/**\n * Connector Health Configuration\n * \n * Combines health check and circuit breaker for connector resilience.\n */\nexport const ConnectorHealthSchema = lazySchema(() => z.object({\n healthCheck: HealthCheckConfigSchema.optional().describe('Health check configuration'),\n circuitBreaker: CircuitBreakerConfigSchema.optional().describe('Circuit breaker configuration'),\n}).describe('Connector health configuration'));\n\nexport type ConnectorHealth = z.infer<typeof ConnectorHealthSchema>;\n\n// ============================================================================\n// Base Connector Schema\n// ============================================================================\n\n/**\n * Connector Type\n */\nexport const ConnectorTypeSchema = lazySchema(() => z.enum([\n 'saas', // SaaS application connector\n 'database', // Database connector\n 'file_storage', // File storage connector\n 'message_queue', // Message queue connector\n 'api', // Generic REST/GraphQL API\n 'custom', // Custom connector\n]).describe('Connector type'));\n\nexport type ConnectorType = z.infer<typeof ConnectorTypeSchema>;\n\n/**\n * Connector Status\n */\nexport const ConnectorStatusSchema = lazySchema(() => z.enum([\n 'active', // Connector is active and syncing\n 'inactive', // Connector is configured but disabled\n 'error', // Connector has errors\n 'configuring', // Connector is being set up\n]).describe('Connector status'));\n\nexport type ConnectorStatus = z.infer<typeof ConnectorStatusSchema>;\n\n/**\n * Connector Action Definition\n */\nexport const ConnectorActionSchema = lazySchema(() => z.object({\n key: z.string().describe('Action key (machine name)'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n inputSchema: z.record(z.string(), z.unknown()).optional().describe('Input parameters schema (JSON Schema)'),\n outputSchema: z.record(z.string(), z.unknown()).optional().describe('Output schema (JSON Schema)'),\n}));\n\n/**\n * Connector Trigger Definition\n */\nexport const ConnectorTriggerSchema = lazySchema(() => z.object({\n key: z.string().describe('Trigger key'),\n label: z.string().describe('Trigger label'),\n description: z.string().optional(),\n type: z.enum(['polling', 'webhook']).describe('Trigger type'),\n interval: z.number().optional().describe('Polling interval in seconds'),\n}));\n\n/**\n * Base Connector Schema\n * Core connector configuration shared across all connector types\n */\nexport const ConnectorSchema = lazySchema(() => z.object({\n /**\n * Machine name (snake_case)\n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique connector identifier'),\n \n /**\n * Human-readable label\n */\n label: z.string().describe('Display label'),\n \n /**\n * Connector type\n */\n type: ConnectorTypeSchema.describe('Connector type'),\n \n /**\n * Description\n */\n description: z.string().optional().describe('Connector description'),\n \n /**\n * Icon identifier\n */\n icon: z.string().optional().describe('Icon identifier'),\n \n /**\n * Authentication configuration\n */\n authentication: ConnectorAuthConfigSchema.describe('Authentication configuration'),\n\n /** Zapier-style Capabilities */\n actions: z.array(ConnectorActionSchema).optional(),\n triggers: z.array(ConnectorTriggerSchema).optional(),\n \n /**\n * Data synchronization configuration\n */\n syncConfig: DataSyncConfigSchema.optional().describe('Data sync configuration'),\n \n \n /**\n * Field mappings\n */\n fieldMappings: z.array(FieldMappingSchema).optional().describe('Field mapping rules'),\n \n /**\n * Webhook configuration\n */\n webhooks: z.array(WebhookConfigSchema).optional().describe('Webhook configurations'),\n \n /**\n * Rate limiting configuration\n */\n rateLimitConfig: RateLimitConfigSchema.optional().describe('Rate limiting configuration'),\n \n /**\n * Retry configuration\n */\n retryConfig: RetryConfigSchema.optional().describe('Retry configuration'),\n \n /**\n * Connection timeout in milliseconds\n */\n connectionTimeoutMs: z.number().min(1000).max(300000).optional().default(30000).describe('Connection timeout in ms'),\n \n /**\n * Request timeout in milliseconds\n */\n requestTimeoutMs: z.number().min(1000).max(300000).optional().default(30000).describe('Request timeout in ms'),\n \n /**\n * Connector status\n */\n status: ConnectorStatusSchema.optional().default('inactive').describe('Connector status'),\n \n /**\n * Enable connector\n */\n enabled: z.boolean().optional().default(true).describe('Enable connector'),\n \n /**\n * Error mapping configuration\n */\n errorMapping: ErrorMappingConfigSchema.optional().describe('Error mapping configuration'),\n \n /**\n * Health check and circuit breaker configuration\n */\n health: ConnectorHealthSchema.optional().describe('Health and resilience configuration'),\n \n /**\n * Custom metadata\n */\n metadata: z.record(z.string(), z.unknown()).optional().describe('Custom connector metadata'),\n}));\n\nexport type Connector = z.infer<typeof ConnectorSchema>;\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\nimport { ManifestSchema } from './kernel/manifest.zod';\nimport { DatasourceSchema } from './data/datasource.zod';\nimport { TranslationBundleSchema, TranslationConfigSchema } from './system/translation.zod';\nimport { objectStackErrorMap, formatZodError } from './shared/error-map.zod';\nimport { normalizeStackInput, type MetadataCollectionInput, type MapSupportedField } from './shared/metadata-collection.zod';\n\n// Data Protocol\nimport { ObjectSchema, ObjectExtensionSchema } from './data/object.zod';\nimport { DatasetSchema } from './data/dataset.zod';\n\n// UI Protocol\nimport { AppSchema } from './ui/app.zod';\nimport { ViewSchema } from './ui/view.zod';\nimport { PageSchema } from './ui/page.zod';\nimport { DashboardSchema } from './ui/dashboard.zod';\nimport { ReportSchema } from './ui/report.zod';\nimport { ActionSchema } from './ui/action.zod';\nimport { ThemeSchema } from './ui/theme.zod';\n\n// Automation Protocol\nimport { ApprovalProcessSchema } from './automation/approval.zod';\nimport { WorkflowRuleSchema } from './automation/workflow.zod';\nimport { FlowSchema } from './automation/flow.zod';\n\n// Security Protocol\nimport { RoleSchema } from './identity/role.zod';\nimport { PermissionSetSchema } from './security/permission.zod';\nimport { SharingRuleSchema } from './security/sharing.zod';\nimport { PolicySchema } from './security/policy.zod';\n\nimport { ApiEndpointSchema } from './api/endpoint.zod';\nimport { FeatureFlagSchema } from './kernel/feature.zod';\n\n// AI Protocol\nimport { AgentSchema } from './ai/agent.zod';\nimport { SkillSchema } from './ai/skill.zod';\nimport { RAGPipelineConfigSchema } from './ai/rag-pipeline.zod';\n\n// Data Protocol (additional)\nimport { HookSchema } from './data/hook.zod';\nimport { MappingSchema } from './data/mapping.zod';\nimport { CubeSchema } from './data/analytics.zod';\n\n// Automation Protocol (additional)\nimport { WebhookSchema } from './automation/webhook.zod';\n\n// Integration Protocol\nimport { ConnectorSchema } from './integration/connector.zod';\n\n/**\n * Datasource Mapping Rule Schema\n *\n * Defines rules for routing objects to specific datasources based on\n * namespace, package, or object name patterns. This provides centralized\n * control over datasource assignment without modifying individual objects.\n *\n * Inspired by Django's Database Router and Kubernetes StorageClass patterns.\n *\n * @example\n * ```ts\n * datasourceMapping: [\n * { namespace: 'crm', datasource: 'memory' },\n * { objectPattern: 'sys_*', datasource: 'turso' },\n * { package: 'com.example.analytics', datasource: 'bigquery' },\n * { default: true, datasource: 'default' }\n * ]\n * ```\n */\nimport { lazySchema } from './shared/lazy-schema';\nexport const DatasourceMappingRuleSchema = lazySchema(() => z.object({\n /**\n * Match by namespace (e.g., 'crm', 'auth', 'todo')\n * Objects with this namespace will use the specified datasource.\n */\n namespace: z.string().optional().describe('Match objects by namespace'),\n\n /**\n * Match by package ID (e.g., 'com.example.crm')\n * All objects from this package will use the specified datasource.\n */\n package: z.string().optional().describe('Match objects by package ID'),\n\n /**\n * Match by object name pattern (supports wildcards: *, ?)\n * Examples: 'sys_*', 'temp_*', 'cache_*'\n */\n objectPattern: z.string().optional().describe('Match objects by name pattern (glob-style)'),\n\n /**\n * Mark as default fallback rule.\n * This rule applies to all objects that don't match any other rules.\n */\n default: z.boolean().optional().describe('Default fallback rule'),\n\n /**\n * Target datasource name.\n * Must match a registered driver name (e.g., 'memory', 'turso', 'postgres').\n */\n datasource: z.string().describe('Target datasource name'),\n\n /**\n * Optional priority for rule ordering (lower = higher priority).\n * If not specified, rules are evaluated in array order.\n */\n priority: z.number().optional().describe('Rule priority (lower = higher priority)'),\n}).describe('Datasource routing rule'));\n\nexport type DatasourceMappingRule = z.infer<typeof DatasourceMappingRuleSchema>;\n\n/**\n * ObjectStack Ecosystem Definition\n *\n * This schema represents the \"Full Stack\" definition of a project or environment.\n * It is used for:\n * 1. Project Export/Import (YAML/JSON dumps)\n * 2. IDE Validation (IntelliSense)\n * 3. Runtime Bootstrapping (In-memory loading)\n * 4. Platform Reflection (API & Capabilities Discovery)\n */\n/**\n * 1. DEFINITION PROTOCOL (Static)\n * ----------------------------------------------------------------------\n * Describes the \"Blueprint\" or \"Source Code\" of an ObjectStack Plugin/Project.\n * This represents the complete declarative state of the application.\n * \n * Usage:\n * - Developers write this in files locally.\n * - AI Agents generate this to create apps.\n * - CI Tools deploy this to the server.\n */\nexport const ObjectStackDefinitionSchema = lazySchema(() => z.object({\n /** System Configuration */\n manifest: ManifestSchema.optional().describe('Project Package Configuration'),\n datasources: z.array(DatasourceSchema).optional().describe('External Data Connections'),\n\n /**\n * Datasource Mapping Configuration\n *\n * Centralized routing rules that map packages, namespaces, or object patterns\n * to specific datasources. This eliminates the need to configure datasource\n * on every individual object.\n *\n * Rules are evaluated in order (or by priority if specified). First match wins.\n * If no match, falls back to object's explicit `datasource` field, then 'default'.\n *\n * @example\n * ```ts\n * datasourceMapping: [\n * // System objects use Turso (persistent storage)\n * { objectPattern: 'sys_*', datasource: 'turso' },\n * { namespace: 'auth', datasource: 'turso' },\n *\n * // CRM application uses Memory (dev/test)\n * { namespace: 'crm', datasource: 'memory' },\n * { package: 'com.example.crm', datasource: 'memory' },\n *\n * // Temporary objects use Memory\n * { objectPattern: 'temp_*', datasource: 'memory' },\n *\n * // Default fallback\n * { default: true, datasource: 'turso' },\n * ]\n * ```\n */\n datasourceMapping: z.array(DatasourceMappingRuleSchema).optional()\n .describe('Centralized datasource routing rules for packages/namespaces/objects'),\n\n translations: z.array(TranslationBundleSchema).optional().describe('I18n Translation Bundles'),\n i18n: TranslationConfigSchema.optional().describe('Internationalization configuration'),\n\n /** \n * ObjectQL: Data Layer \n * All business objects and entities.\n */\n objects: z.array(ObjectSchema).optional().describe('Business Objects definition (owned by this package)'),\n\n /**\n * Object Extensions: fields/config to merge into objects owned by other packages.\n * Use this instead of redefining an object when you want to add fields to\n * an existing object from another package.\n * \n * @example\n * ```ts\n * objectExtensions: [{\n * extend: 'contact',\n * fields: { sales_stage: Field.select([...]) },\n * }]\n * ```\n */\n objectExtensions: z.array(ObjectExtensionSchema).optional().describe('Extensions to objects owned by other packages'),\n\n /** \n * ObjectUI: User Interface Layer \n * Apps, Menus, Pages, and Visualizations.\n */\n apps: z.array(AppSchema).optional().describe('Applications'),\n views: z.array(ViewSchema).optional().describe('List Views'),\n pages: z.array(PageSchema).optional().describe('Custom Pages'),\n dashboards: z.array(DashboardSchema).optional().describe('Dashboards'),\n reports: z.array(ReportSchema).optional().describe('Analytics Reports'),\n actions: z.array(ActionSchema).optional().describe('Global and Object Actions'),\n themes: z.array(ThemeSchema).optional().describe('UI Themes'),\n\n /** \n * ObjectFlow: Automation Layer \n * Business logic, approvals, and workflows.\n */\n workflows: z.array(WorkflowRuleSchema).optional().describe('Event-driven workflows'),\n approvals: z.array(ApprovalProcessSchema).optional().describe('Approval processes'),\n flows: z.array(FlowSchema).optional().describe('Screen Flows'),\n\n /**\n * ObjectGuard: Security Layer\n */\n roles: z.array(RoleSchema).optional().describe('User Roles hierarchy'),\n permissions: z.array(PermissionSetSchema).optional().describe('Permission Sets and Profiles'),\n sharingRules: z.array(SharingRuleSchema).optional().describe('Record Sharing Rules'),\n policies: z.array(PolicySchema).optional().describe('Security & Compliance Policies'),\n\n /**\n * ObjectAPI: API Layer\n */\n apis: z.array(ApiEndpointSchema).optional().describe('API Endpoints'),\n webhooks: z.array(WebhookSchema).optional().describe('Outbound Webhooks'),\n\n /**\n * ObjectAI: Artificial Intelligence Layer\n *\n * Three-tier composition (Agent → Skill → Tool) aligned with Salesforce\n * Agentforce Topics, Microsoft Copilot Studio Topics, and ServiceNow Now\n * Assist Skills:\n *\n * - **agents**: Persona-bearing copilots (1-3 per app). Each agent declares\n * its base instructions, model, knowledge, and the set of skills it can\n * draw on. Users typically don't pick an agent per message — the active\n * app's `defaultAgent` is selected automatically.\n * - **skills**: Reusable capability bundles (\"topics\" in Salesforce parlance).\n * Each skill groups related tools, declares trigger phrases for\n * intent matching, and trigger conditions for context-aware activation.\n * - **ragPipelines**: Retrieval pipelines wired into agent `knowledge`.\n */\n agents: z.array(AgentSchema).optional().describe('AI Agents and Assistants'),\n skills: z.array(SkillSchema).optional().describe('AI Skills (reusable capability bundles referenced by Agents)'),\n ragPipelines: z.array(RAGPipelineConfigSchema).optional().describe('RAG Pipelines'),\n\n /**\n * ObjectQL: Data Extensions\n * Hooks, mappings, and analytics cubes.\n */\n hooks: z.array(HookSchema).optional().describe('Object Lifecycle Hooks'),\n /**\n * Named handler functions for declarative metadata that references\n * handlers by string name (`Hook.handler: 'my_handler'`,\n * `Action.target: 'my_handler'`). Two accepted shapes:\n *\n * - Map form (preferred): `{ my_handler: (ctx) => {...} }`\n * - Array form: `[{ name: 'my_handler', handler: (ctx) => {...} }]`\n *\n * Functions live in code only; they are not serialized into project\n * artifacts. The `AppPlugin` registers them on the engine before\n * binding hooks so `string` handlers resolve at startup.\n */\n functions: z.union([\n z.record(z.string(), z.function()),\n z.array(z.object({\n name: z.string(),\n handler: z.function(),\n packageId: z.string().optional(),\n })),\n ]).optional().describe('Named handler functions referenced by hooks/actions'),\n mappings: z.array(MappingSchema).optional().describe('Data Import/Export Mappings'),\n analyticsCubes: z.array(CubeSchema).optional().describe('Analytics Semantic Layer Cubes'),\n\n /**\n * Integration Protocol\n */\n connectors: z.array(ConnectorSchema).optional().describe('External System Connectors'),\n\n /**\n * Data Seeding Protocol\n * \n * Declarative seed data for bootstrapping, demos, and testing.\n * Each entry targets a specific object and provides records to load\n * using the specified conflict resolution strategy.\n * \n * Uses the standard DatasetSchema which supports:\n * - `externalId`: Idempotency key for upsert matching (default: 'name')\n * - `mode`: Conflict resolution (upsert, insert, ignore, replace)\n * - `env`: Environment scoping (prod, dev, test)\n * \n * @example\n * ```ts\n * data: [\n * {\n * object: 'account',\n * mode: 'upsert',\n * externalId: 'name',\n * records: [\n * { name: 'Acme Corp', type: 'customer', industry: 'technology' },\n * ]\n * }\n * ]\n * ```\n */\n data: z.array(DatasetSchema).optional().describe('Seed Data / Fixtures for bootstrapping'),\n\n /**\n * Plugins: External Capabilities\n * List of plugins to load. Can be a Manifest object, a package name string, or a Runtime Plugin instance.\n */\n plugins: z.array(z.unknown()).optional().describe('Plugins to load'),\n\n /**\n * Required Capabilities\n *\n * Declarative dependency on platform-provided capabilities. The\n * runtime resolves each name to a built-in service plugin and\n * loads it automatically — no need to construct the plugin in\n * `plugins[]` or pass `--preset` flags at the CLI level.\n *\n * Built-in capability names (mapped in `@objectstack/cli`):\n * `ai` → AIServicePlugin\n * `automation` → AutomationServicePlugin (+ default node packs)\n * `analytics` → AnalyticsServicePlugin\n * `audit` → AuditPlugin\n * `i18n` → I18nPlugin\n *\n * If a capability is also provided explicitly via `plugins[]`, the\n * explicit instance wins (and the resolver does not double-register).\n *\n * @example\n * ```ts\n * defineStack({\n * manifest: { ... },\n * requires: ['ai', 'automation', 'analytics'],\n * objects: [...],\n * });\n * ```\n */\n requires: z.array(z.string()).optional().describe('Capability names this stack requires from the platform'),\n\n /**\n * DevPlugins: Development Capabilities\n * List of plugins to load ONLY in development environment.\n * Equivalent to `devDependencies` in package.json.\n * Useful for loading dev-tools, mock data generators, or referencing local sibling packages for debugging.\n */\n devPlugins: z.array(z.union([ManifestSchema, z.string()])).optional().describe('Plugins to load only in development (CLI dev command)'),\n\n /**\n * Compiled Runtime Bundle Reference\n *\n * Path (relative to the JSON artifact) to a sibling ESM module emitted\n * by `objectstack build`. The module exports `{ functions: Record<string, Function> }`\n * containing every inline `Hook.handler` (and top-level `functions` map\n * entry) that was lowered to a string ref during compilation.\n *\n * Runtimes (StandaloneStack, multi-tenant artifact-bind path) MUST\n * dynamic-import this file on boot and merge `module.functions` into\n * `bundle.functions` before `bindHooks(...)` runs — otherwise every\n * declarative hook will fail to resolve its handler.\n *\n * The two-product layout (JSON + ESM) is the canonical build artifact\n * shape for the platform. Authoring tools (`defineStack`, Studio\n * inline editor) must NOT set this field directly; it is populated\n * exclusively by the compiler.\n *\n * @example \"./objectstack-runtime.7a70cd6576d17ff6.mjs\"\n */\n runtimeModule: z.string().optional().describe('Path (relative to the artifact JSON) of the compiled runtime ESM bundle. Set by `objectstack build`; do not author by hand.'),\n}));\n\nexport type ObjectStackDefinition = z.infer<typeof ObjectStackDefinitionSchema>;\n\n/**\n * Extract the element type from an array type.\n * @internal\n */\ntype ExtractArrayItem<T> = T extends (infer Item)[] ? Item : never;\n\n/**\n * Input type for `defineStack()` that accepts both array and map format\n * for all named metadata collections.\n * \n * Map format allows defining metadata using the key as the `name` field:\n * ```ts\n * // Array format (traditional)\n * objects: [{ name: 'task', fields: { ... } }]\n * \n * // Map format (key becomes name)\n * objects: { task: { fields: { ... } } }\n * ```\n * \n * The output type is always arrays (`ObjectStackDefinition`).\n */\nexport type ObjectStackDefinitionInput =\n Omit<z.input<typeof ObjectStackDefinitionSchema>, MapSupportedField> & {\n [K in MapSupportedField]?: MetadataCollectionInput<\n ExtractArrayItem<NonNullable<z.input<typeof ObjectStackDefinitionSchema>[K]>>\n >;\n };\n\n// Alias for backward compatibility\nexport const ObjectStackSchema = lazySchema(() => ObjectStackDefinitionSchema);\nexport type ObjectStack = ObjectStackDefinition;\n\n/**\n * Options for `defineStack()`.\n */\nexport interface DefineStackOptions {\n /**\n * When `true` (default), enables strict validation:\n * - All Zod schemas are validated (field names, types, etc.)\n * - Cross-reference validation runs (views/actions/workflows reference valid objects)\n * - Ensures data integrity and catches errors early\n *\n * When `false`, validation is skipped for maximum flexibility\n * (e.g., when views reference objects provided by other plugins).\n * Use this ONLY when you need to bypass validation for advanced use cases.\n *\n * @default true\n */\n strict?: boolean;\n}\n\n/**\n * Collect all object names defined in a stack definition.\n */\nfunction collectObjectNames(config: ObjectStackDefinition): Set<string> {\n const names = new Set<string>();\n if (config.objects) {\n for (const obj of config.objects) {\n names.add(obj.name);\n }\n }\n return names;\n}\n\n/**\n * Perform strict cross-reference validation on a parsed stack definition.\n * Returns an array of error messages (empty if valid).\n */\nfunction validateCrossReferences(config: ObjectStackDefinition): string[] {\n const errors: string[] = [];\n const objectNames = collectObjectNames(config);\n\n if (objectNames.size === 0) return errors;\n\n // Validate workflow → object references (uses `objectName`)\n if (config.workflows) {\n for (const workflow of config.workflows) {\n if (workflow.objectName && !objectNames.has(workflow.objectName)) {\n errors.push(\n `Workflow '${workflow.name}' references object '${workflow.objectName}' which is not defined in objects.`,\n );\n }\n }\n }\n\n // Validate approval → object references\n if (config.approvals) {\n for (const approval of config.approvals) {\n if (approval.object && !objectNames.has(approval.object)) {\n errors.push(\n `Approval '${approval.name}' references object '${approval.object}' which is not defined in objects.`,\n );\n }\n }\n }\n\n // Validate hook → object references\n if (config.hooks) {\n for (const hook of config.hooks) {\n if (hook.object) {\n const hookObjects = Array.isArray(hook.object) ? hook.object : [hook.object];\n for (const obj of hookObjects) {\n if (!objectNames.has(obj)) {\n errors.push(\n `Hook '${hook.name}' references object '${obj}' which is not defined in objects.`,\n );\n }\n }\n }\n }\n }\n\n // Validate view data source → object references (nested in data.object)\n if (config.views) {\n for (const [i, view] of config.views.entries()) {\n const checkViewData = (data: unknown, viewLabel: string) => {\n if (data && typeof data === 'object' && 'provider' in data && 'object' in data) {\n const d = data as { provider: string; object: string };\n if (d.provider === 'object' && d.object && !objectNames.has(d.object)) {\n errors.push(\n `${viewLabel} references object '${d.object}' which is not defined in objects.`,\n );\n }\n }\n };\n\n if (view.list?.data) {\n checkViewData(view.list.data, `View[${i}].list`);\n }\n if (view.form?.data) {\n checkViewData(view.form.data, `View[${i}].form`);\n }\n }\n }\n\n // Validate seed data → object references\n if (config.data) {\n for (const dataset of config.data) {\n if (dataset.object && !objectNames.has(dataset.object)) {\n errors.push(\n `Seed data references object '${dataset.object}' which is not defined in objects.`,\n );\n }\n }\n }\n\n // Validate app navigation → object/dashboard/page/report references\n if (config.apps) {\n const dashboardNames = new Set<string>();\n if (config.dashboards) {\n for (const d of config.dashboards) {\n dashboardNames.add(d.name);\n }\n }\n const pageNames = new Set<string>();\n if (config.pages) {\n for (const p of config.pages) {\n pageNames.add(p.name);\n }\n }\n const reportNames = new Set<string>();\n if (config.reports) {\n for (const r of config.reports) {\n reportNames.add(r.name);\n }\n }\n\n for (const app of config.apps) {\n if (!app.navigation) continue;\n const checkNavItems = (items: unknown[], appName: string) => {\n for (const item of items) {\n if (!item || typeof item !== 'object') continue;\n const nav = item as Record<string, unknown>;\n if (nav.type === 'object' && typeof nav.objectName === 'string' && !objectNames.has(nav.objectName)) {\n // `requiresObject` opts the nav item into \"may be provided by\n // another stack / platform plugin\" semantics — the frontend\n // hides the entry when the object isn't in the SchemaRegistry,\n // and stack-level cross-ref validation must skip it.\n if (!nav.requiresObject) {\n errors.push(\n `App '${appName}' navigation references object '${nav.objectName}' which is not defined in objects.`,\n );\n }\n }\n if (nav.type === 'dashboard' && typeof nav.dashboardName === 'string' && dashboardNames.size > 0 && !dashboardNames.has(nav.dashboardName)) {\n errors.push(\n `App '${appName}' navigation references dashboard '${nav.dashboardName}' which is not defined in dashboards.`,\n );\n }\n if (nav.type === 'page' && typeof nav.pageName === 'string' && pageNames.size > 0 && !pageNames.has(nav.pageName)) {\n errors.push(\n `App '${appName}' navigation references page '${nav.pageName}' which is not defined in pages.`,\n );\n }\n if (nav.type === 'report' && typeof nav.reportName === 'string' && reportNames.size > 0 && !reportNames.has(nav.reportName)) {\n errors.push(\n `App '${appName}' navigation references report '${nav.reportName}' which is not defined in reports.`,\n );\n }\n // Recurse into group children\n if (nav.type === 'group' && Array.isArray(nav.children)) {\n checkNavItems(nav.children, appName);\n }\n }\n };\n checkNavItems(app.navigation, app.name);\n }\n }\n\n // Validate action → flow/modal cross-references\n // Note: When no flows/pages are defined (size === 0), targets are not validated\n // because the referenced items may be provided by a plugin.\n // This is consistent with dashboard/page/report validation in navigation.\n if (config.actions) {\n const flowNames = new Set<string>();\n if (config.flows) {\n for (const flow of config.flows) {\n flowNames.add(flow.name);\n }\n }\n\n const pageNames = new Set<string>();\n if (config.pages) {\n for (const page of config.pages) {\n pageNames.add(page.name);\n }\n }\n\n for (const action of config.actions) {\n // Validate flow-type actions reference a defined flow\n if (action.type === 'flow' && action.target && flowNames.size > 0 && !flowNames.has(action.target)) {\n errors.push(\n `Action '${action.name}' references flow '${action.target}' which is not defined in flows.`,\n );\n }\n\n // Validate modal-type actions reference a defined page\n if (action.type === 'modal' && action.target && pageNames.size > 0 && !pageNames.has(action.target)) {\n errors.push(\n `Action '${action.name}' references page '${action.target}' (via modal target) which is not defined in pages.`,\n );\n }\n\n // Validate action → object references (objectName)\n if (action.objectName && !objectNames.has(action.objectName)) {\n errors.push(\n `Action '${action.name}' references object '${action.objectName}' which is not defined in objects.`,\n );\n }\n }\n }\n\n return errors;\n}\n\n/**\n * Merge top-level actions into their target objects based on `objectName`.\n * \n * Actions with `objectName` are appended to the corresponding object's `actions` array.\n * Actions without `objectName` (global actions) are left untouched.\n * The top-level `actions` array is preserved for global access (e.g., platform overview, search).\n * \n * This aligns with Salesforce/ServiceNow patterns where object metadata includes its actions,\n * so API responses like `/api/v1/meta/objects/:name` include actions without downstream merge.\n * \n * @internal\n */\nfunction mergeActionsIntoObjects(config: ObjectStackDefinition): ObjectStackDefinition {\n if (!config.actions || !config.objects || config.objects.length === 0) {\n return config;\n }\n\n // Build map: objectName → actions[]\n const actionsByObject = new Map<string, NonNullable<ObjectStackDefinition['actions']>>();\n for (const action of config.actions) {\n if (action.objectName) {\n const list = actionsByObject.get(action.objectName) ?? [];\n list.push(action);\n actionsByObject.set(action.objectName, list);\n }\n }\n\n if (actionsByObject.size === 0) return config;\n\n // Merge into objects (shallow copy — only the `actions` field is modified;\n // other fields are shared references, consistent with mergeObjects() and Zod output)\n const newObjects = config.objects.map((obj) => {\n const objActions = actionsByObject.get(obj.name);\n if (!objActions) return obj;\n return {\n ...obj,\n actions: [...(obj.actions ?? []), ...objActions],\n };\n });\n\n return { ...config, objects: newObjects };\n}\n\n/**\n * Type-safe helper to define a generic stack.\n *\n * In ObjectStack, the concept of \"Project\" and \"Plugin\" is fluid:\n * - A **Project** is simply a Stack that is currently being executed (the `cwd`).\n * - A **Plugin** is a Stack that is being loaded by another Stack.\n *\n * This unified definition allows any \"Project\" (e.g., Todo App) to be imported\n * as a \"Plugin\" into a larger system (e.g., Company PaaS) without code changes.\n *\n * @param config - The stack definition object\n * @param options - Optional settings. Use `{ strict: true }` to validate cross-references.\n * @returns The validated stack definition\n *\n * @example\n * ```ts\n * // Basic usage (pass-through, backward compatible)\n * const stack = defineStack({ manifest: { ... }, objects: [...] });\n *\n * // Map format — key becomes `name` field\n * const stack = defineStack({\n * objects: {\n * task: { fields: { title: { type: 'text' } } },\n * project: { fields: { name: { type: 'text' } } },\n * },\n * apps: {\n * project_manager: { label: 'Project Manager', objects: ['task', 'project'] },\n * },\n * });\n *\n * // Strict mode — validates that views/workflows reference defined objects\n * const stack = defineStack({ manifest: { ... }, objects: [...], views: [...] }, { strict: true });\n * ```\n */\nexport function defineStack(\n config: ObjectStackDefinitionInput,\n options?: DefineStackOptions,\n): ObjectStackDefinition {\n // Default to strict=true for safety (validate by default)\n const strict = options?.strict !== false;\n\n // Normalize map-formatted collections to arrays (key → name injection)\n const normalized = normalizeStackInput(config as Record<string, unknown>);\n\n if (!strict) {\n // Non-strict mode: skip validation (advanced use cases only)\n return mergeActionsIntoObjects(normalized as ObjectStackDefinition);\n }\n\n // Strict mode (default): parse with custom error map, then cross-reference validate\n const result = ObjectStackDefinitionSchema.safeParse(normalized, {\n error: objectStackErrorMap,\n });\n\n if (!result.success) {\n throw new Error(formatZodError(result.error, 'defineStack validation failed'));\n }\n\n const crossRefErrors = validateCrossReferences(result.data);\n if (crossRefErrors.length > 0) {\n const header = `defineStack cross-reference validation failed (${crossRefErrors.length} issue${crossRefErrors.length === 1 ? '' : 's'}):`;\n const lines = crossRefErrors.map((e) => ` ✗ ${e}`);\n throw new Error(`${header}\\n\\n${lines.join('\\n')}`);\n }\n\n return mergeActionsIntoObjects(result.data);\n}\n\n\n// ─── composeStacks ──────────────────────────────────────────────────\n\n/**\n * Strategy for resolving conflicts when multiple stacks define the same named item.\n *\n * - `'error'` — Throw an error when a duplicate name is detected (default).\n * - `'override'` — Last stack wins; later definitions replace earlier ones.\n * - `'merge'` — Shallow-merge items with the same name (later fields win).\n */\nexport const ConflictStrategySchema = lazySchema(() => z.enum(['error', 'override', 'merge']));\nexport type ConflictStrategy = z.infer<typeof ConflictStrategySchema>;\n\n/**\n * Options for {@link composeStacks}.\n */\nexport const ComposeStacksOptionsSchema = lazySchema(() => z.object({\n /**\n * How to handle same-name objects across stacks.\n * @default 'error'\n */\n objectConflict: ConflictStrategySchema.default('error'),\n\n /**\n * Which manifest to keep when multiple stacks provide one.\n * - `'first'` — Use the first manifest found.\n * - `'last'` — Use the last manifest found (default).\n * - A number — Use the manifest from the stack at the given index.\n * @default 'last'\n */\n manifest: z.union([z.enum(['first', 'last']), z.number().int().min(0)]).default('last'),\n\n /**\n * Optional namespace prefix (reserved for Phase 2 — Marketplace isolation).\n * When set, object names from this composition are prefixed for isolation.\n */\n namespace: z.string().optional(),\n}));\n\nexport type ComposeStacksOptions = z.input<typeof ComposeStacksOptionsSchema>;\n\n/**\n * All array fields on `ObjectStackDefinition` that are simply concatenated.\n * @internal\n */\nconst CONCAT_ARRAY_FIELDS = [\n 'datasources',\n 'translations',\n 'objectExtensions',\n 'apps',\n 'views',\n 'pages',\n 'dashboards',\n 'reports',\n 'actions',\n 'themes',\n 'workflows',\n 'approvals',\n 'flows',\n 'roles',\n 'permissions',\n 'sharingRules',\n 'policies',\n 'apis',\n 'webhooks',\n 'agents',\n 'skills',\n 'ragPipelines',\n 'hooks',\n 'mappings',\n 'analyticsCubes',\n 'connectors',\n 'data',\n 'plugins',\n 'devPlugins',\n 'requires',\n] as const satisfies readonly (keyof ObjectStackDefinition)[];\n\n/**\n * Merge objects from multiple stacks according to the chosen conflict strategy.\n * @internal\n */\nfunction mergeObjects(\n stacks: ObjectStackDefinition[],\n strategy: ConflictStrategy,\n): ObjectStackDefinition['objects'] {\n type Obj = NonNullable<ObjectStackDefinition['objects']>[number];\n const map = new Map<string, Obj>();\n const result: Obj[] = [];\n\n for (const stack of stacks) {\n if (!stack.objects) continue;\n for (const obj of stack.objects) {\n const existing = map.get(obj.name);\n if (!existing) {\n map.set(obj.name, obj);\n result.push(obj);\n continue;\n }\n\n switch (strategy) {\n case 'error':\n throw new Error(\n `composeStacks conflict: object '${obj.name}' is defined in multiple stacks. ` +\n `Use { objectConflict: 'override' } or { objectConflict: 'merge' } to resolve.`,\n );\n case 'override': {\n // Replace in-place in the result array\n const idx = result.indexOf(existing);\n result[idx] = obj;\n map.set(obj.name, obj);\n break;\n }\n case 'merge': {\n const merged = { ...existing, ...obj, fields: { ...existing.fields, ...obj.fields } } as Obj;\n const idx = result.indexOf(existing);\n result[idx] = merged;\n map.set(obj.name, merged);\n break;\n }\n }\n }\n }\n\n return result.length > 0 ? result : undefined;\n}\n\n/**\n * Select the manifest to use from multiple stacks.\n * @internal\n */\nfunction selectManifest(\n stacks: ObjectStackDefinition[],\n strategy: 'first' | 'last' | number,\n): ObjectStackDefinition['manifest'] {\n if (typeof strategy === 'number') {\n return stacks[strategy]?.manifest;\n }\n if (strategy === 'first') {\n for (const s of stacks) {\n if (s.manifest) return s.manifest;\n }\n return undefined;\n }\n // 'last' (default)\n for (let i = stacks.length - 1; i >= 0; i--) {\n if (stacks[i].manifest) return stacks[i].manifest;\n }\n return undefined;\n}\n\n/**\n * Declaratively compose multiple stack definitions into a single unified stack.\n *\n * This eliminates the manual `...spread` merging pattern when combining\n * multiple applications (e.g., CRM + Todo + BI) into a single project.\n *\n * **Array fields** (apps, views, dashboards, etc.) are concatenated in order.\n * **Objects** are merged according to the `objectConflict` strategy.\n * **Manifest** is selected based on the `manifest` option.\n *\n * @param stacks - Stack definitions to compose (order matters for conflict resolution)\n * @param options - Composition options (conflict strategy, manifest selection, etc.)\n * @returns A single merged `ObjectStackDefinition`\n *\n * @example\n * ```ts\n * import { composeStacks, defineStack } from '@objectstack/spec';\n *\n * const crm = defineStack({ ... });\n * const todo = defineStack({ ... });\n *\n * // Simple composition — throws on duplicate objects\n * const combined = composeStacks([crm, todo]);\n *\n * // Override strategy — later stacks win\n * const combined = composeStacks([crm, todo], { objectConflict: 'override' });\n *\n * // Merge strategy — fields from later stacks are shallow-merged\n * const combined = composeStacks([crm, todo], { objectConflict: 'merge' });\n * ```\n */\nexport function composeStacks(\n stacks: ObjectStackDefinition[],\n options?: ComposeStacksOptions,\n): ObjectStackDefinition {\n if (stacks.length === 0) return {} as ObjectStackDefinition;\n if (stacks.length === 1) return stacks[0];\n\n const opts = ComposeStacksOptionsSchema.parse(options ?? {});\n\n const composed: Record<string, unknown> = {};\n\n // 1. Manifest — pick based on strategy\n composed.manifest = selectManifest(stacks, opts.manifest);\n\n // 2. i18n — last-wins (single object, not array)\n for (let i = stacks.length - 1; i >= 0; i--) {\n if (stacks[i].i18n) {\n composed.i18n = stacks[i].i18n;\n break;\n }\n }\n\n // 3. Objects — use conflict strategy\n const objects = mergeObjects(stacks, opts.objectConflict);\n if (objects) {\n composed.objects = objects;\n }\n\n // 4. All other array fields — simple concatenation\n for (const field of CONCAT_ARRAY_FIELDS) {\n const arrays = stacks\n .map((s) => (s as Record<string, unknown>)[field])\n .filter((v): v is unknown[] => Array.isArray(v));\n if (arrays.length > 0) {\n composed[field] = arrays.flat();\n }\n }\n\n return mergeActionsIntoObjects(composed as ObjectStackDefinition);\n}\n\n\n/**\n * 2. RUNTIME CAPABILITIES PROTOCOL (Dynamic)\n * ----------------------------------------------------------------------\n * Describes what the ObjectOS Platform *is* and *can do*.\n * AI Agents read this to understand:\n * - What APIs are available?\n * - What features are enabled?\n * - What limits exist?\n * \n * The capabilities are organized by subsystem for clarity:\n * - ObjectQL: Data Layer capabilities\n * - ObjectUI: User Interface Layer capabilities \n * - ObjectOS: System Layer capabilities\n */\n\n/**\n * ObjectQL Capabilities Schema\n * \n * Defines capabilities related to the Data Layer:\n * - Query operations and advanced SQL features\n * - Data validation and business logic\n * - Database driver support\n * - AI/ML data features\n */\nexport const ObjectQLCapabilitiesSchema = lazySchema(() => z.object({\n /** Query Capabilities */\n queryFilters: z.boolean().default(true).describe('Supports WHERE clause filtering'),\n queryAggregations: z.boolean().default(true).describe('Supports GROUP BY and aggregation functions'),\n querySorting: z.boolean().default(true).describe('Supports ORDER BY sorting'),\n queryPagination: z.boolean().default(true).describe('Supports LIMIT/OFFSET pagination'),\n queryWindowFunctions: z.boolean().default(false).describe('Supports window functions with OVER clause'),\n querySubqueries: z.boolean().default(false).describe('Supports subqueries'),\n queryDistinct: z.boolean().default(true).describe('Supports SELECT DISTINCT'),\n queryHaving: z.boolean().default(false).describe('Supports HAVING clause for aggregations'),\n queryJoins: z.boolean().default(false).describe('Supports SQL-style joins'),\n \n /** Advanced Data Features */\n fullTextSearch: z.boolean().default(false).describe('Supports full-text search'),\n vectorSearch: z.boolean().default(false).describe('Supports vector embeddings and similarity search for AI/RAG'),\n geoSpatial: z.boolean().default(false).describe('Supports geospatial queries and location fields'),\n \n /** Field Type Support */\n jsonFields: z.boolean().default(true).describe('Supports JSON field types'),\n arrayFields: z.boolean().default(false).describe('Supports array field types'),\n \n /** Data Validation & Logic */\n validationRules: z.boolean().default(true).describe('Supports validation rules'),\n workflows: z.boolean().default(true).describe('Supports workflow automation'),\n triggers: z.boolean().default(true).describe('Supports database triggers'),\n formulas: z.boolean().default(true).describe('Supports formula fields'),\n \n /** Transaction & Performance */\n transactions: z.boolean().default(true).describe('Supports database transactions'),\n bulkOperations: z.boolean().default(true).describe('Supports bulk create/update/delete'),\n \n /** Driver Support */\n supportedDrivers: z.array(z.string()).optional().describe('Available database drivers (e.g., postgresql, mongodb, excel)'),\n}));\n\n/**\n * ObjectUI Capabilities Schema\n * \n * Defines capabilities related to the UI Layer:\n * - View rendering (List, Form, Calendar, etc.)\n * - Dashboard and reporting\n * - Theming and customization\n * - UI actions and interactions\n */\nexport const ObjectUICapabilitiesSchema = lazySchema(() => z.object({\n /** View Types */\n listView: z.boolean().default(true).describe('Supports list/grid views'),\n formView: z.boolean().default(true).describe('Supports form views'),\n kanbanView: z.boolean().default(false).describe('Supports kanban board views'),\n calendarView: z.boolean().default(false).describe('Supports calendar views'),\n ganttView: z.boolean().default(false).describe('Supports Gantt chart views'),\n \n /** Analytics & Reporting */\n dashboards: z.boolean().default(true).describe('Supports dashboard creation'),\n reports: z.boolean().default(true).describe('Supports report generation'),\n charts: z.boolean().default(true).describe('Supports chart widgets'),\n \n /** Customization */\n customPages: z.boolean().default(true).describe('Supports custom page creation'),\n customThemes: z.boolean().default(false).describe('Supports custom theme creation'),\n customComponents: z.boolean().default(false).describe('Supports custom UI components/widgets'),\n \n /** Actions & Interactions */\n customActions: z.boolean().default(true).describe('Supports custom button actions'),\n screenFlows: z.boolean().default(false).describe('Supports interactive screen flows'),\n \n /** Responsive & Accessibility */\n mobileOptimized: z.boolean().default(false).describe('UI optimized for mobile devices'),\n accessibility: z.boolean().default(false).describe('WCAG accessibility support'),\n}));\n\n/**\n * ObjectOS Capabilities Schema\n * \n * Defines capabilities related to the System Layer:\n * - Runtime environment and platform features\n * - API and integration capabilities\n * - Security and multi-tenancy\n * - System services (events, jobs, audit)\n */\nexport const ObjectOSCapabilitiesSchema = lazySchema(() => z.object({\n /** System Identity */\n version: z.string().describe('ObjectOS Kernel Version'),\n environment: z.enum(['development', 'test', 'staging', 'production']),\n \n /** API Surface */\n restApi: z.boolean().default(true).describe('REST API available'),\n graphqlApi: z.boolean().default(false).describe('GraphQL API available'),\n odataApi: z.boolean().default(false).describe('OData API available'),\n \n /** Real-time & Events */\n websockets: z.boolean().default(false).describe('WebSocket support for real-time updates'),\n serverSentEvents: z.boolean().default(false).describe('Server-Sent Events support'),\n eventBus: z.boolean().default(false).describe('Internal event bus for pub/sub'),\n \n /** Integration */\n webhooks: z.boolean().default(true).describe('Outbound webhook support'),\n apiContracts: z.boolean().default(false).describe('API contract definitions'),\n \n /** Security & Access Control */\n authentication: z.boolean().default(true).describe('Authentication system'),\n rbac: z.boolean().default(true).describe('Role-Based Access Control'),\n fieldLevelSecurity: z.boolean().default(false).describe('Field-level permissions'),\n rowLevelSecurity: z.boolean().default(false).describe('Row-level security/sharing rules'),\n \n /** Multi-tenancy */\n multiTenant: z.boolean().default(false).describe('Multi-tenant architecture support'),\n \n /** Platform Services */\n backgroundJobs: z.boolean().default(false).describe('Background job scheduling'),\n auditLogging: z.boolean().default(false).describe('Audit trail logging'),\n fileStorage: z.boolean().default(true).describe('File upload and storage'),\n \n /** Internationalization */\n i18n: z.boolean().default(true).describe('Internationalization support'),\n \n /** Plugin System */\n pluginSystem: z.boolean().default(false).describe('Plugin/extension system'),\n \n /** Active Features & Flags */\n features: z.array(FeatureFlagSchema).optional().describe('Active Feature Flags'),\n \n /** Available APIs */\n apis: z.array(ApiEndpointSchema).optional().describe('Available System & Business APIs'),\n network: z.object({\n graphql: z.boolean().default(false),\n search: z.boolean().default(false),\n websockets: z.boolean().default(false),\n files: z.boolean().default(true),\n analytics: z.boolean().default(false).describe('Is the Analytics/BI engine enabled?'),\n ai: z.boolean().default(false).describe('Is the AI engine enabled?'),\n workflow: z.boolean().default(false).describe('Is the Workflow engine enabled?'),\n notifications: z.boolean().default(false).describe('Is the Notification service enabled?'),\n i18n: z.boolean().default(false).describe('Is the i18n service enabled?'),\n }).optional().describe('Network Capabilities (GraphQL, WS, etc.)'),\n\n /** Introspection */\n systemObjects: z.array(z.string()).optional().describe('List of globally available System Objects'),\n \n /** Constraints (for AI Generation) */\n limits: z.object({\n maxObjects: z.number().optional(),\n maxFieldsPerObject: z.number().optional(),\n maxRecordsPerQuery: z.number().optional(),\n apiRateLimit: z.number().optional(),\n fileUploadSizeLimit: z.number().optional().describe('Max file size in bytes'),\n }).optional()\n}));\n\n/**\n * Unified ObjectStack Capabilities Schema\n * \n * Complete capability descriptor for an ObjectStack instance.\n * Organized by architectural layer for clarity and maintainability.\n */\nexport const ObjectStackCapabilitiesSchema = lazySchema(() => z.object({\n /** Data Layer Capabilities (ObjectQL) */\n data: ObjectQLCapabilitiesSchema.describe('Data Layer capabilities'),\n \n /** User Interface Layer Capabilities (ObjectUI) */\n ui: ObjectUICapabilitiesSchema.describe('UI Layer capabilities'),\n \n /** System/Runtime Layer Capabilities (ObjectOS) */\n system: ObjectOSCapabilitiesSchema.describe('System/Runtime Layer capabilities'),\n}));\n\nexport type ObjectQLCapabilities = z.infer<typeof ObjectQLCapabilitiesSchema>;\nexport type ObjectUICapabilities = z.infer<typeof ObjectUICapabilitiesSchema>;\nexport type ObjectOSCapabilities = z.infer<typeof ObjectOSCapabilitiesSchema>;\nexport type ObjectStackCapabilities = z.infer<typeof ObjectStackCapabilitiesSchema>;\n\n\n\n","// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { z } from 'zod';\n\n// ==========================================\n// Tool Category\n// ==========================================\n\n/**\n * Tool Category\n * Classifies the tool by its operational domain.\n */\nimport { lazySchema } from '../shared/lazy-schema';\nexport const ToolCategorySchema = lazySchema(() => z.enum([\n 'data', // CRUD / query operations\n 'action', // Side-effect actions (send email, create record)\n 'flow', // Trigger a visual flow\n 'integration', // External API / webhook calls\n 'vector_search', // RAG / vector search\n 'analytics', // Aggregation & reporting\n 'utility', // Formatters, parsers, helpers\n]).describe('Tool operational category'));\n\nexport type ToolCategory = z.infer<typeof ToolCategorySchema>;\n\n// ==========================================\n// Tool Schema\n// ==========================================\n\n/**\n * Tool Schema\n *\n * First-class metadata definition for an AI-callable tool.\n * Tools are the atomic units of AI capability — each tool\n * represents a single, well-defined operation with strict\n * parameter validation via JSON Schema.\n *\n * Aligned with Salesforce Agentforce, Microsoft Copilot Studio,\n * and ServiceNow Now Assist metadata patterns.\n *\n * @example\n * ```ts\n * const tool = defineTool({\n * name: 'create_case',\n * label: 'Create Support Case',\n * description: 'Creates a new support case record',\n * category: 'action',\n * parameters: {\n * type: 'object',\n * properties: {\n * subject: { type: 'string', description: 'Case subject' },\n * priority: { type: 'string', enum: ['low', 'medium', 'high'] },\n * },\n * required: ['subject'],\n * },\n * objectName: 'support_case',\n * requiresConfirmation: true,\n * });\n * ```\n */\nexport const ToolSchema = lazySchema(() => z.object({\n /** Machine name (snake_case, globally unique) */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Tool unique identifier (snake_case)'),\n\n /** Human-readable display name */\n label: z.string().describe('Tool display name'),\n\n /** Detailed description for LLM consumption (the model reads this to decide when to call the tool) */\n description: z.string().describe('Tool description for LLM function calling'),\n\n /** Operational category */\n category: ToolCategorySchema.optional().describe('Tool category for grouping and filtering'),\n\n /**\n * JSON Schema describing the tool input parameters.\n * Must be a valid JSON Schema object. The AI model generates\n * arguments conforming to this schema.\n */\n parameters: z.record(z.string(), z.unknown()).describe('JSON Schema for tool parameters'),\n\n /**\n * Optional JSON Schema for the tool output.\n * Used for structured output validation and downstream tool chaining.\n */\n outputSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for tool output'),\n\n /**\n * Associated object name (when the tool operates on a specific data object).\n * @example 'support_case'\n */\n objectName: z.string().regex(/^[a-z_][a-z0-9_]*$/).optional().describe('Target object name (snake_case)'),\n\n /** Whether the tool requires human confirmation before execution */\n requiresConfirmation: z.boolean().default(false).describe('Require user confirmation before execution'),\n\n /** Permission profiles/roles required to use this tool */\n permissions: z.array(z.string()).optional().describe('Required permissions or roles'),\n\n /** Whether the tool is enabled */\n active: z.boolean().default(true).describe('Whether the tool is enabled'),\n\n /** Whether this is a platform built-in tool (vs. user-defined) */\n builtIn: z.boolean().default(false).describe('Platform built-in tool flag'),\n}));\n\nexport type Tool = z.infer<typeof ToolSchema>;\n\n// ==========================================\n// Factory\n// ==========================================\n\n/**\n * Type-safe factory for creating AI tool metadata definitions.\n *\n * Validates the config at creation time using Zod `.parse()`.\n *\n * @example\n * ```ts\n * const tool = defineTool({\n * name: 'query_orders',\n * label: 'Query Orders',\n * description: 'Search and filter customer orders',\n * category: 'data',\n * parameters: {\n * type: 'object',\n * properties: {\n * customerId: { type: 'string' },\n * status: { type: 'string', enum: ['pending', 'shipped', 'delivered'] },\n * },\n * required: ['customerId'],\n * },\n * });\n * ```\n */\nexport function defineTool(config: z.input<typeof ToolSchema>): Tool {\n return ToolSchema.parse(config);\n}\n"]}
|