@memberjunction/ng-core-entity-forms 6.2.0-edge.1 → 6.2.0-edge.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts +1 -0
  2. package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts.map +1 -1
  3. package/dist/lib/custom/AIAgents/agent-form-tabs.js +2 -0
  4. package/dist/lib/custom/AIAgents/agent-form-tabs.js.map +1 -1
  5. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +528 -521
  6. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  7. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  8. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +10 -16
  9. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  10. package/dist/lib/custom/AIPrompts/pending-records.d.ts +11 -0
  11. package/dist/lib/custom/AIPrompts/pending-records.d.ts.map +1 -0
  12. package/dist/lib/custom/AIPrompts/pending-records.js +21 -0
  13. package/dist/lib/custom/AIPrompts/pending-records.js.map +1 -0
  14. package/dist/lib/custom/Entities/entity-form.component.d.ts +8 -1
  15. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  16. package/dist/lib/custom/Entities/entity-form.component.js +240 -147
  17. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  18. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +19 -0
  19. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
  20. package/dist/lib/custom/RecordProcesses/record-process-form.component.js +50 -8
  21. package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
  22. package/dist/lib/custom/Rubrics/evaluation-form.component.d.ts +37 -0
  23. package/dist/lib/custom/Rubrics/evaluation-form.component.d.ts.map +1 -0
  24. package/dist/lib/custom/Rubrics/evaluation-form.component.js +399 -0
  25. package/dist/lib/custom/Rubrics/evaluation-form.component.js.map +1 -0
  26. package/dist/lib/custom/Rubrics/record-forms.component.d.ts +69 -0
  27. package/dist/lib/custom/Rubrics/record-forms.component.d.ts.map +1 -0
  28. package/dist/lib/custom/Rubrics/record-forms.component.js +587 -0
  29. package/dist/lib/custom/Rubrics/record-forms.component.js.map +1 -0
  30. package/dist/lib/custom/Rubrics/rubric-form.component.d.ts +67 -0
  31. package/dist/lib/custom/Rubrics/rubric-form.component.d.ts.map +1 -0
  32. package/dist/lib/custom/Rubrics/rubric-form.component.js +534 -0
  33. package/dist/lib/custom/Rubrics/rubric-form.component.js.map +1 -0
  34. package/dist/lib/custom/Rubrics/rubric-form.panels.d.ts +25 -0
  35. package/dist/lib/custom/Rubrics/rubric-form.panels.d.ts.map +1 -0
  36. package/dist/lib/custom/Rubrics/rubric-form.panels.js +299 -0
  37. package/dist/lib/custom/Rubrics/rubric-form.panels.js.map +1 -0
  38. package/dist/lib/custom/Rubrics/scale-form.component.d.ts +31 -0
  39. package/dist/lib/custom/Rubrics/scale-form.component.d.ts.map +1 -0
  40. package/dist/lib/custom/Rubrics/scale-form.component.js +395 -0
  41. package/dist/lib/custom/Rubrics/scale-form.component.js.map +1 -0
  42. package/dist/lib/custom/Templates/templates-form.component.d.ts +13 -4
  43. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  44. package/dist/lib/custom/Templates/templates-form.component.js +110 -113
  45. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  46. package/dist/lib/custom/Tests/test-form.component.d.ts +6 -0
  47. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  48. package/dist/lib/custom/Tests/test-form.component.js +402 -361
  49. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  50. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +5 -0
  51. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  52. package/dist/lib/custom/Tests/test-suite-form.component.js +704 -664
  53. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  54. package/dist/lib/custom/Users/user-overview.panel.js +1 -1
  55. package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
  56. package/dist/lib/custom/custom-forms.module.d.ts +56 -48
  57. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  58. package/dist/lib/custom/custom-forms.module.js +60 -0
  59. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  60. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  61. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +61 -43
  62. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  63. package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.d.ts +10 -0
  64. package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.d.ts.map +1 -0
  65. package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.js +74 -0
  66. package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.js.map +1 -0
  67. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
  68. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +37 -19
  69. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  70. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  71. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +31 -13
  72. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  73. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  74. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +156 -84
  75. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  76. package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.d.ts +10 -0
  77. package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.d.ts.map +1 -0
  78. package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.js +62 -0
  79. package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.js.map +1 -0
  80. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -1
  81. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +24 -6
  82. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
  83. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.d.ts.map +1 -1
  84. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +24 -16
  85. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
  86. package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.d.ts +10 -0
  87. package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.d.ts.map +1 -0
  88. package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.js +107 -0
  89. package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.js.map +1 -0
  90. package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.d.ts +10 -0
  91. package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.d.ts.map +1 -0
  92. package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.js +74 -0
  93. package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.js.map +1 -0
  94. package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.d.ts +10 -0
  95. package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.d.ts.map +1 -0
  96. package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.js +135 -0
  97. package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.js.map +1 -0
  98. package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.d.ts +10 -0
  99. package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.d.ts.map +1 -0
  100. package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.js +87 -0
  101. package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.js.map +1 -0
  102. package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.d.ts +10 -0
  103. package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.d.ts.map +1 -0
  104. package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.js +107 -0
  105. package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.js.map +1 -0
  106. package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.d.ts +10 -0
  107. package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.d.ts.map +1 -0
  108. package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.js +155 -0
  109. package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.js.map +1 -0
  110. package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.d.ts +10 -0
  111. package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.d.ts.map +1 -0
  112. package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.js +62 -0
  113. package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.js.map +1 -0
  114. package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.d.ts +10 -0
  115. package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.d.ts.map +1 -0
  116. package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.js +183 -0
  117. package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.js.map +1 -0
  118. package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.d.ts +10 -0
  119. package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.d.ts.map +1 -0
  120. package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.js +120 -0
  121. package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.js.map +1 -0
  122. package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.d.ts +10 -0
  123. package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.d.ts.map +1 -0
  124. package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.js +107 -0
  125. package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.js.map +1 -0
  126. package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.d.ts +10 -0
  127. package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.d.ts.map +1 -0
  128. package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.js +103 -0
  129. package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.js.map +1 -0
  130. package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.d.ts +10 -0
  131. package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.d.ts.map +1 -0
  132. package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.js +171 -0
  133. package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.js.map +1 -0
  134. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.d.ts.map +1 -1
  135. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js +24 -16
  136. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js.map +1 -1
  137. package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js +27 -25
  138. package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js.map +1 -1
  139. package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.d.ts.map +1 -1
  140. package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js +19 -11
  141. package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js.map +1 -1
  142. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  143. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +172 -118
  144. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  145. package/dist/lib/generated/generated-forms.module.d.ts +436 -422
  146. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  147. package/dist/lib/generated/generated-forms.module.js +44 -2
  148. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  149. package/dist/lib/panels/record-clone/entity-clone-config-editor.component.d.ts +116 -0
  150. package/dist/lib/panels/record-clone/entity-clone-config-editor.component.d.ts.map +1 -0
  151. package/dist/lib/panels/record-clone/entity-clone-config-editor.component.js +820 -0
  152. package/dist/lib/panels/record-clone/entity-clone-config-editor.component.js.map +1 -0
  153. package/dist/lib/shared/components/template-editor.component.d.ts +25 -1
  154. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  155. package/dist/lib/shared/components/template-editor.component.js +67 -3
  156. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  157. package/dist/public-api.d.ts +5 -0
  158. package/dist/public-api.d.ts.map +1 -1
  159. package/dist/public-api.js +5 -0
  160. package/dist/public-api.js.map +1 -1
  161. package/package.json +47 -43
@@ -1 +1 @@
1
- {"version":3,"file":"record-process-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/RecordProcesses/record-process-form.component.ts","../../../../src/lib/custom/RecordProcesses/record-process-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit } from '@angular/core';\nimport { RegisterClass, RegisterClassEx, SafeJSONParse, EscapeSQLString } from '@memberjunction/global';\nimport { BaseFormComponent, BaseFormPolicy, FormChromeContext, FormChromeSpec, DETAILS_SECTION_KEY } from '@memberjunction/ng-base-forms';\nimport { MJRecordProcessFormComponent } from '../../generated/Entities/MJRecordProcess/mjrecordprocess.form.component';\nimport { EntityInfo, RunView, LogError } from '@memberjunction/core';\nimport type { DataFeatureSpec, SpecValidationIssue, EntityMetadataStub } from '@memberjunction/feature-pipelines';\nimport { validateSpec } from '@memberjunction/feature-pipelines';\n\n/**\n * View-model representing an individual feature output in the pipeline schema table.\n */\nexport interface FeatureOutputViewModel {\n Name: string;\n Ref: string;\n FeatureKind: string;\n TargetField: string;\n TargetFieldExists: boolean;\n TargetFieldType: string;\n ConstraintSummary: string;\n ViolationPolicy: string;\n ReasoningTarget: string;\n}\n\n/**\n * View-model representing a parameter resolution mapping for the AI prompt.\n */\nexport interface PromptParamViewModel {\n Param: string;\n Field: string;\n}\n\n/**\n * Pure helper function to format raw JSON.\n */\nexport function FormatRawPipelineJson(configuration?: string | null): string {\n if (!configuration) return '';\n const parsed = SafeJSONParse<DataFeatureSpec>(configuration);\n return parsed ? JSON.stringify(parsed, null, 2) : configuration;\n}\n\n/** @deprecated Use {@link FormatRawPipelineJson}. */\nexport function formatRawPipelineJson(configuration?: string | null): string {\n return FormatRawPipelineJson(configuration);\n}\n\n/**\n * Pure helper function to parse DataFeatureSpec safely.\n */\nexport function ParsePipelineSpec(configuration?: string | null): DataFeatureSpec | null {\n if (!configuration) return null;\n return SafeJSONParse<DataFeatureSpec>(configuration);\n}\n\n/** @deprecated Use {@link ParsePipelineSpec}. */\nexport function parsePipelineSpec(configuration?: string | null): DataFeatureSpec | null {\n return ParsePipelineSpec(configuration);\n}\n\n/**\n * Pure helper function to validate pipeline spec against entity stub.\n */\nexport function ValidatePipelineSpec(\n spec: DataFeatureSpec | null,\n entityStub?: EntityMetadataStub\n): SpecValidationIssue[] {\n if (!spec) return [];\n return validateSpec(spec, entityStub);\n}\n\n/** @deprecated Use {@link ValidatePipelineSpec}. */\nexport function validatePipelineSpec(\n spec: DataFeatureSpec | null,\n entityStub?: EntityMetadataStub\n): SpecValidationIssue[] {\n return ValidatePipelineSpec(spec, entityStub);\n}\n\n/**\n * Pure helper to build feature output view-models from spec or output mapping.\n */\nexport function BuildFeatureOutputViewModels(\n spec: DataFeatureSpec | null,\n entityInfo?: EntityInfo | null,\n outputMapping?: string | null\n): FeatureOutputViewModel[] {\n const outputs: FeatureOutputViewModel[] = [];\n\n if (spec?.Outputs && spec.Outputs.length > 0) {\n for (const out of spec.Outputs) {\n let targetFieldName = '';\n const targetMode = out.Target?.Mode;\n if (out.Target?.Mode === 'field') {\n targetFieldName = out.Target.EntityFieldName;\n } else if (out.Target?.Mode === 'child') {\n targetFieldName = `Child: ${out.Target.EntityName}`;\n } else if (out.Target?.Mode === 'tags') {\n targetFieldName = `Tags (${out.Target.Growth || 'taxonomy'})`;\n }\n\n let constraintText = 'None';\n let violationPolicy = 'error';\n const c = out.Constraint;\n if (c) {\n if (c.OnViolation) {\n violationPolicy = c.OnViolation;\n }\n switch (c.Type) {\n case 'numeric':\n case 'money': {\n const min = c.Min != null ? String(c.Min) : '-∞';\n const max = c.Max != null ? String(c.Max) : '+∞';\n constraintText = `[${min}, ${max}]`;\n break;\n }\n case 'enum': {\n if (c.Values && c.Values.length > 0) {\n constraintText = `Allowed: ${c.Values.slice(0, 3).join(', ')}${c.Values.length > 3 ? '...' : ''}`;\n } else if (c.FromFieldMetadata) {\n constraintText = 'From Field Metadata';\n }\n break;\n }\n case 'lookup': {\n constraintText = `Lookup: ${c.Entity || ''}.${c.MatchField || ''}`;\n break;\n }\n case 'date': {\n constraintText = `Date: [${c.Min || '-∞'}, ${c.Max || '+∞'}]`;\n break;\n }\n case 'boolean': {\n constraintText = 'Boolean';\n break;\n }\n case 'freetext': {\n constraintText = c.MaxLength != null ? `Max: ${c.MaxLength} chars` : 'Freetext';\n break;\n }\n }\n }\n\n const isFieldMode = targetMode === 'field';\n const field = isFieldMode && targetFieldName && entityInfo?.Fields\n ? entityInfo.Fields.find((f) => f.Name.toLowerCase() === targetFieldName.toLowerCase())\n : undefined;\n\n outputs.push({\n Name: out.Name || out.Ref || 'Unnamed',\n Ref: out.Ref || '',\n FeatureKind: out.FeatureKind || (c?.Type === 'numeric' ? 'numeric' : 'categorical'),\n TargetField: targetFieldName || '—',\n TargetFieldExists: isFieldMode ? !!field : true,\n TargetFieldType: isFieldMode ? (field?.TSType || field?.Type || 'unbound') : (targetMode || 'custom'),\n ConstraintSummary: constraintText,\n ViolationPolicy: violationPolicy,\n ReasoningTarget: spec.CaptureReasoning ? 'Enabled' : 'None',\n });\n }\n } else if (outputMapping) {\n const mapping = SafeJSONParse<{ fields?: Record<string, string> } | Record<string, string>>(outputMapping);\n const fieldsObj = (mapping && 'fields' in mapping && mapping.fields) ? mapping.fields : (mapping as Record<string, string> | null);\n if (fieldsObj && typeof fieldsObj === 'object') {\n for (const [key, val] of Object.entries(fieldsObj)) {\n const field = entityInfo?.Fields?.find((f) => f.Name.toLowerCase() === key.toLowerCase());\n outputs.push({\n Name: String(val),\n Ref: String(val),\n FeatureKind: 'field',\n TargetField: key,\n TargetFieldExists: !!field,\n TargetFieldType: field?.TSType || field?.Type || 'unbound',\n ConstraintSummary: 'Standard',\n ViolationPolicy: 'null',\n ReasoningTarget: 'None',\n });\n }\n }\n }\n\n return outputs;\n}\n\n/** @deprecated Use {@link BuildFeatureOutputViewModels}. */\nexport function buildFeatureOutputViewModels(\n spec: DataFeatureSpec | null,\n entityInfo?: EntityInfo | null,\n outputMapping?: string | null\n): FeatureOutputViewModel[] {\n return BuildFeatureOutputViewModels(spec, entityInfo, outputMapping);\n}\n\n/**\n * Pure helper to build prompt parameter resolution mappings.\n */\nexport function BuildPromptParamViewModels(\n spec: DataFeatureSpec | null,\n inputMapping?: string | null\n): PromptParamViewModel[] {\n const mappings: PromptParamViewModel[] = [];\n if (spec?.Context?.QueryParams) {\n for (const [param, field] of Object.entries(spec.Context.QueryParams)) {\n mappings.push({ Param: `@${param}`, Field: String(field) });\n }\n } else if (spec?.Context?.InputMapping) {\n for (const [param, field] of Object.entries(spec.Context.InputMapping)) {\n mappings.push({ Param: `@${param}`, Field: String(field) });\n }\n } else if (inputMapping) {\n const raw = SafeJSONParse<Record<string, string>>(inputMapping);\n if (raw) {\n for (const [param, field] of Object.entries(raw)) {\n mappings.push({ Param: `@${param}`, Field: String(field) });\n }\n }\n }\n return mappings;\n}\n\n/** @deprecated Use {@link BuildPromptParamViewModels}. */\nexport function buildPromptParamViewModels(\n spec: DataFeatureSpec | null,\n inputMapping?: string | null\n): PromptParamViewModel[] {\n return BuildPromptParamViewModels(spec, inputMapping);\n}\n\n/**\n * Custom form override for `MJ: Record Processes` (priority 100).\n * Presents the Record Process / Feature Pipeline in a first-class MJ form with:\n * - Lead panel: \"Overview & Status\" with hero KPI summary, target entity badge, and trigger diagnostics.\n * - Builder panel: \"Pipeline Configuration\" embedding the visual <mj-feature-pipeline-builder> for Infer / Feature Pipelines,\n * or the <mj-record-process-editor> for Field Rules.\n * - History panel: \"Prior Runs\" embedding <mj-record-process-history> with run status, metrics, and per-record diff drill-down.\n * - Details panel (Option A Structured Cards): First-class semantic cards for Infer pipelines, replacing raw JSON\n * with configuration health diagnostics, prompt context binding, feature output schema & column validation,\n * scope preview, and a collapsible raw JSON drawer.\n * - Related entity sections: Watermarks, ML Model Scoring Bindings, Feature Values, Feature Value Caches.\n * - System Metadata panel.\n */\n@RegisterClass(BaseFormComponent, 'MJ: Record Processes', 100)\n@Component({\n standalone: false,\n selector: 'mj-record-process-form-extended',\n templateUrl: './record-process-form.component.html',\n styleUrls: ['./record-process-form.component.css'],\n})\nexport class RecordProcessFormComponentExtended extends MJRecordProcessFormComponent implements OnInit {\n public PipelineValid = true;\n\n /** @deprecated Use {@link PipelineValid}. */\n public get pipelineValid() {\n return this.PipelineValid;\n }\n /** @deprecated Use {@link PipelineValid}. */\n public set pipelineValid(value) {\n this.PipelineValid = value;\n }\n public RawJsonExpanded = false;\n\n /** @deprecated Use {@link RawJsonExpanded}. */\n public get rawJsonExpanded() {\n return this.RawJsonExpanded;\n }\n /** @deprecated Use {@link RawJsonExpanded}. */\n public set rawJsonExpanded(value) {\n this.RawJsonExpanded = value;\n }\n public RawJsonCopied = false;\n\n /** @deprecated Use {@link RawJsonCopied}. */\n public get rawJsonCopied() {\n return this.RawJsonCopied;\n }\n /** @deprecated Use {@link RawJsonCopied}. */\n public set rawJsonCopied(value) {\n this.RawJsonCopied = value;\n }\n public LoadedQuery: { ID: string; Name: string; SQL: string } | null = null;\n\n /** @deprecated Use {@link LoadedQuery}. */\n public get loadedQuery(): { ID: string; Name: string; SQL: string } | null {\n return this.LoadedQuery;\n }\n /** @deprecated Use {@link LoadedQuery}. */\n public set loadedQuery(value: { ID: string; Name: string; SQL: string } | null) {\n this.LoadedQuery = value;\n }\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'processOverview', sectionName: 'Overview & Status', isExpanded: true },\n { sectionKey: 'inferConfig', sectionName: 'Infer Configuration', isExpanded: true },\n { sectionKey: 'pipelineConfiguration', sectionName: 'Pipeline Configuration', isExpanded: true },\n { sectionKey: 'processRuns', sectionName: 'Prior Runs', isExpanded: true },\n { sectionKey: 'processDefinition', sectionName: 'Process Definition', isExpanded: true },\n { sectionKey: 'executionLogic', sectionName: 'Execution Logic', isExpanded: false },\n { sectionKey: 'scopeConfiguration', sectionName: 'Scope Configuration', isExpanded: true },\n { sectionKey: 'triggers', sectionName: 'Triggers', isExpanded: true },\n { sectionKey: 'performanceAndOptimization', sectionName: 'Performance & Optimization', isExpanded: false },\n { sectionKey: 'mJRecordProcessWatermarks', sectionName: 'Record Process Watermarks', isExpanded: false },\n { sectionKey: 'mJMLModelScoringBindings', sectionName: 'ML Model Scoring Bindings', isExpanded: false },\n { sectionKey: 'mJFeatureValues', sectionName: 'Feature Values', isExpanded: false },\n { sectionKey: 'mJFeatureValueCaches', sectionName: 'Feature Value Caches', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n ]);\n await this.loadContextQuery();\n }\n\n private async loadContextQuery(): Promise<void> {\n const queryId = this.ParsedSpec?.Context?.QueryID;\n if (!queryId) return;\n\n try {\n const rv = new RunView();\n const res = await rv.RunView<{ ID: string; Name: string; SQL: string }>({\n EntityName: 'MJ: Queries',\n ExtraFilter: `ID = '${EscapeSQLString(queryId)}'`,\n Fields: ['ID', 'Name', 'SQL'],\n ResultType: 'simple',\n });\n if (res.Success && res.Results && res.Results.length > 0) {\n this.LoadedQuery = res.Results[0];\n this.cdr.markForCheck();\n } else if (!res.Success) {\n LogError(`[RecordProcessForm] Failed to load context query ${queryId}: ${res.ErrorMessage}`);\n }\n } catch (e) {\n LogError(`[RecordProcessForm] Exception loading context query ${queryId}`, undefined, e);\n }\n }\n\n public get TargetEntityName(): string {\n if (!this.record?.EntityID) return '—';\n const entity = this.ProviderToUse.EntityByID(this.record.EntityID);\n return entity?.DisplayName || entity?.Name || this.record.EntityID;\n }\n\n public get TargetEntityInfo(): EntityInfo | undefined {\n if (!this.record?.EntityID) return undefined;\n return this.ProviderToUse.EntityByID(this.record.EntityID);\n }\n\n public get WorkTypeIcon(): string {\n switch (this.record?.WorkType) {\n case 'Infer':\n return 'fa-solid fa-wand-magic-sparkles';\n case 'FieldRules':\n return 'fa-solid fa-table-list';\n case 'ML Model':\n return 'fa-solid fa-brain';\n case 'Action':\n return 'fa-solid fa-bolt';\n case 'Agent':\n return 'fa-solid fa-robot';\n default:\n return 'fa-solid fa-gears';\n }\n }\n\n public get StatusBadgeClass(): string {\n switch (this.record?.Status) {\n case 'Active':\n return 'rpf-status-active';\n case 'Draft':\n return 'rpf-status-draft';\n case 'Disabled':\n return 'rpf-status-disabled';\n default:\n return 'rpf-status-default';\n }\n }\n\n public OnPipelineSpecChange(): void {\n this.cdr.markForCheck();\n }\n\n public OnPipelineValidChange(valid: boolean): void {\n this.PipelineValid = valid;\n this.cdr.markForCheck();\n }\n\n public ToggleRawJson(): void {\n this.RawJsonExpanded = !this.RawJsonExpanded;\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ToggleRawJson}. */\n public toggleRawJson(): void {\n return this.ToggleRawJson();\n }\n\n public async CopyRawJson(): Promise<void> {\n try {\n if (navigator?.clipboard && this.FormattedRawJson) {\n await navigator.clipboard.writeText(this.FormattedRawJson);\n this.RawJsonCopied = true;\n this.cdr.markForCheck();\n setTimeout(() => {\n this.RawJsonCopied = false;\n this.cdr.markForCheck();\n }, 2000);\n }\n } catch (e) {\n LogError('[RecordProcessForm] Failed to copy raw JSON to clipboard', undefined, e);\n }\n }\n\n /** @deprecated Use {@link CopyRawJson}. */\n public async copyRawJson(): Promise<void> {\n return this.CopyRawJson();\n }\n\n public get FormattedRawJson(): string {\n return FormatRawPipelineJson(this.record?.Configuration);\n }\n\n public get ParsedSpec(): DataFeatureSpec | null {\n return ParsePipelineSpec(this.record?.Configuration);\n }\n\n public get EntityStub(): EntityMetadataStub | undefined {\n const entity = this.TargetEntityInfo;\n if (!entity) return undefined;\n return {\n Name: entity.Name,\n Fields: (entity.Fields ?? []).map((f) => ({\n Name: f.Name,\n TSType: f.TSType,\n IsVirtual: f.IsVirtual,\n AllowsNull: f.AllowsNull,\n RelatedEntity: f.RelatedEntity,\n RelatedEntityID: f.RelatedEntityID,\n EntityFieldValues: f.EntityFieldValues\n ? f.EntityFieldValues.map((v) => ({ Value: v.Value, Code: v.Code }))\n : undefined,\n })),\n };\n }\n\n public get SpecIssues(): SpecValidationIssue[] {\n return ValidatePipelineSpec(this.ParsedSpec, this.EntityStub);\n }\n\n public get IsSpecValid(): boolean {\n return this.SpecIssues.filter((i) => i.Severity === 'error').length === 0;\n }\n\n public get FeatureOutputs(): FeatureOutputViewModel[] {\n return BuildFeatureOutputViewModels(this.ParsedSpec, this.TargetEntityInfo, this.record?.OutputMapping);\n }\n\n public get TotalFeaturesCount(): number {\n return this.FeatureOutputs.length;\n }\n\n public get BoundFeaturesCount(): number {\n return this.FeatureOutputs.filter((f) => f.TargetFieldExists).length;\n }\n\n public get ParameterMappings(): PromptParamViewModel[] {\n return BuildPromptParamViewModels(this.ParsedSpec, this.record?.InputMapping);\n }\n\n public get ContextModeText(): string {\n const spec = this.ParsedSpec;\n if (spec?.Context?.EntityDocumentID) return 'Entity Document Template';\n if (spec?.Context?.QueryID) {\n return this.LoadedQuery?.Name ? `Query: ${this.LoadedQuery.Name}` : `Saved Query (${spec.Context.QueryID.substring(0, 8)}...)`;\n }\n if (spec?.Context?.Fields && spec.Context.Fields.length > 0) return `Fields (${spec.Context.Fields.join(', ')})`;\n return 'Record Fields (Automatic)';\n }\n\n public get ContextQueryDisplay(): string {\n const spec = this.ParsedSpec;\n if (spec?.Context?.QueryID) {\n if (this.LoadedQuery?.SQL) {\n return `-- Saved Query: ${this.LoadedQuery.Name}\\n${this.LoadedQuery.SQL}`;\n }\n const paramName = spec.Context.QueryParams ? Object.keys(spec.Context.QueryParams)[0] || 'RecordID' : 'RecordID';\n return `-- Saved Query: ${spec.Context.QueryID}\\nSELECT a.* FROM ${this.TargetEntityName || 'TargetEntity'} a WHERE a.ID = @${paramName}`;\n }\n return `SELECT a.* FROM ${this.TargetEntityName || 'TargetEntity'} a WHERE a.ID = @RecordID`;\n }\n\n public get FormattedScopeFilter(): string {\n return this.record?.ScopeFilter?.trim() || '';\n }\n}\n\n/**\n * Form policy ensuring the Overview panel sits as the lead group\n * on the left-nav rail with proper title and icon.\n */\n@RegisterClassEx(BaseFormPolicy, { key: 'MJ: Record Processes', metadata: { entity: 'MJ: Record Processes' } })\nexport class RecordProcessFormPolicy extends BaseFormPolicy {\n public override DecorateChrome(spec: FormChromeSpec, _ctx: FormChromeContext): FormChromeSpec {\n const detailsGroup = spec.Groups.find(g => g.Key === DETAILS_SECTION_KEY || g.Key === 'details');\n if (detailsGroup) {\n detailsGroup.Title = 'Overview';\n detailsGroup.Icon = 'fa-solid fa-gauge-high';\n detailsGroup.IsLead = true;\n }\n const overview = spec.Groups.find(g => g.Key === 'processOverview');\n if (overview) {\n overview.IsLead = true;\n const remaining = spec.Groups.filter(g => g.Key !== 'processOverview');\n return {\n ...spec,\n Groups: [overview, ...remaining],\n };\n }\n return spec;\n }\n}\n\n/** Tree-shaking guard so the override and policy register with the ClassFactory. */\nexport function LoadRecordProcessFormComponentExtended(): void {\n void RecordProcessFormComponentExtended;\n void RecordProcessFormPolicy;\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n OVERVIEW & STATUS (Lead Panel)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"processOverview\"\n SectionName=\"Overview & Status\"\n Icon=\"fa-solid fa-gauge-high\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n <div class=\"rpf-overview-container\">\n <!-- Hero Header Card -->\n <div class=\"rpf-hero-card\">\n <div class=\"rpf-hero-main\">\n <div class=\"rpf-hero-icon-wrap\">\n <i [class]=\"WorkTypeIcon\"></i>\n </div>\n <div class=\"rpf-hero-info\">\n <div class=\"rpf-hero-title-row\">\n <h2 class=\"rpf-hero-title\">{{ record.Name || 'Untitled Process' }}</h2>\n <span class=\"rpf-badge\" [ngClass]=\"StatusBadgeClass\">\n <span class=\"rpf-badge-dot\"></span>\n {{ record.Status || 'Draft' }}\n </span>\n </div>\n <p class=\"rpf-hero-desc\">{{ record.Description || 'No description provided for this process.' }}</p>\n <div class=\"rpf-hero-pills\">\n <span class=\"rpf-pill\" title=\"Target Entity\">\n <i class=\"fa-solid fa-database\"></i>\n <span>{{ TargetEntityName }}</span>\n </span>\n <span class=\"rpf-pill\" title=\"Work Type\">\n <i [class]=\"WorkTypeIcon\"></i>\n <span>{{ record.WorkType || 'Not set' }}</span>\n </span>\n @if (record.WorkType === 'Infer') {\n <span class=\"rpf-pill rpf-pill-feature\" title=\"Feature Pipeline\">\n <i class=\"fa-solid fa-sparkles\"></i>\n <span>Feature Pipeline</span>\n </span>\n }\n </div>\n </div>\n </div>\n </div>\n\n <!-- KPI Summary Grid -->\n <div class=\"rpf-kpi-grid\">\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-filter\"></i> Target Scope</div>\n <div class=\"rpf-kpi-value\">{{ record.ScopeType || 'Filter' }}</div>\n <div class=\"rpf-kpi-sub\" [title]=\"record.ScopeFilter || 'All records in scope'\">\n {{ record.ScopeFilter ? record.ScopeFilter : 'No filter applied (all records)' }}\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-bolt\"></i> Triggers</div>\n <div class=\"rpf-kpi-value\">\n @if (record.ScheduleEnabled) {\n <span>Scheduled</span>\n } @else if (record.OnChangeEnabled) {\n <span>On Change</span>\n } @else if (record.OnDemandEnabled) {\n <span>On Demand</span>\n } @else {\n <span class=\"muted\">Manual</span>\n }\n </div>\n <div class=\"rpf-kpi-sub\">\n @if (record.ScheduleEnabled && record.CronExpression) {\n <code>{{ record.CronExpression }}</code>\n } @else if (record.OnChangeEnabled) {\n <span>Mode: {{ record.OnChangeInvocationType || 'Immediate' }}</span>\n } @else {\n <span>On demand execution</span>\n }\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-water\"></i> Optimization</div>\n <div class=\"rpf-kpi-value\">{{ record.WatermarkStrategy || 'None' }}</div>\n <div class=\"rpf-kpi-sub\">\n Batch: {{ record.BatchSize || 'default' }} | Concurrency: {{ record.MaxConcurrency || '1' }}\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-microchip\"></i> Skip Unchanged</div>\n <div class=\"rpf-kpi-value\">{{ record.SkipUnchanged ? 'Enabled' : 'Disabled' }}</div>\n <div class=\"rpf-kpi-sub\">\n {{ record.SkipUnchanged ? 'Skips re-evaluating unchanged rows' : 'Processes all matching rows' }}\n </div>\n </div>\n </div>\n </div>\n </mj-collapsible-panel>\n\n <!-- ========================================\n PIPELINE CONFIGURATION (Visual Builder)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"pipelineConfiguration\"\n SectionName=\"Pipeline Configuration\"\n Icon=\"fa-solid fa-wand-magic-sparkles\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-pipeline-builder-wrap\">\n <mj-feature-pipeline-builder\n [Record]=\"record\"\n [EntityID]=\"record.EntityID\"\n (SpecChange)=\"OnPipelineSpecChange()\"\n (ValidChange)=\"OnPipelineValidChange($event)\">\n </mj-feature-pipeline-builder>\n </div>\n } @else if (record.WorkType === 'FieldRules') {\n <div class=\"rpf-editor-wrap\">\n <mj-record-process-editor\n [Record]=\"record\"\n [ShowToolbar]=\"false\"\n [Provider]=\"ProviderToUse\">\n </mj-record-process-editor>\n </div>\n } @else {\n <div class=\"rpf-generic-config-wrap\">\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <div>\n <strong>{{ record.WorkType || 'Custom' }} Execution Logic</strong>\n <p>Configure actions, prompts, and mappings in the <em>Process Definition</em> and <em>Execution Logic</em> sections below.</p>\n </div>\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ========================================\n PRIOR RUNS & AUDIT (Embedded History)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"processRuns\"\n SectionName=\"Prior Runs\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n @if (record.IsSaved) {\n <div class=\"rpf-history-wrap\">\n <mj-record-process-history\n [RecordProcessID]=\"record.ID\">\n </mj-record-process-history>\n </div>\n } @else {\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>Save this record process to view execution history and per-record audit logs.</span>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ========================================\n FIELD PANELS (Fold into Details rail)\n ======================================== -->\n\n <!-- Process Definition Section -->\n <mj-collapsible-panel\n SectionKey=\"processDefinition\"\n SectionName=\"Process Definition\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CategoryID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"EntityID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Execution Logic Section -->\n <mj-collapsible-panel\n SectionKey=\"executionLogic\"\n SectionName=\"Execution Logic\"\n Icon=\"fa fa-play\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n @if (record.WorkType === 'Infer') {\n <!-- Health & Schema Audit Bar -->\n <div class=\"rpf-audit-bar\" [class.rpf-audit-bar-warning]=\"!IsSpecValid\">\n <div class=\"rpf-audit-badges\">\n <div class=\"rpf-audit-chip\" [class.rpf-audit-chip-valid]=\"IsSpecValid\" [class.rpf-audit-chip-warning]=\"!IsSpecValid\">\n <i [class]=\"IsSpecValid ? 'fa-solid fa-shield-check' : 'fa-solid fa-triangle-exclamation'\"></i>\n <span>{{ IsSpecValid ? 'Configuration Valid' : 'Configuration Issues Found' }}</span>\n </div>\n <div class=\"rpf-audit-chip\">\n <i class=\"fa-solid fa-check-circle\" style=\"color: var(--mj-status-success);\"></i>\n <span>{{ BoundFeaturesCount }} of {{ TotalFeaturesCount }} Features Bound to Target</span>\n </div>\n <div class=\"rpf-audit-chip\">\n <i class=\"fa-solid fa-database\"></i>\n <span>Context: {{ ContextModeText }}</span>\n </div>\n </div>\n </div>\n\n <!-- AI Model & Context Query Section -->\n <div class=\"rpf-prompt-grid\">\n <!-- Prompt Card -->\n <div class=\"rpf-card-box\">\n <div class=\"rpf-box-eyebrow\">Bound AI Prompt</div>\n <div class=\"rpf-prompt-title\">\n <i class=\"fa-solid fa-message-code\"></i>\n <span>{{ record.PromptID ? 'Prompt Configured' : 'No Prompt Selected' }}</span>\n </div>\n <div class=\"rpf-chip-wrap\">\n @if (record.PromptID) {\n <span class=\"rpf-sm-chip rpf-sm-chip-brand\">ID: {{ record.PromptID.substring(0, 8) }}...</span>\n }\n <span class=\"rpf-sm-chip\"><i class=\"fa-solid fa-sparkles\"></i> Feature Infer Engine</span>\n <span class=\"rpf-sm-chip\"><i class=\"fa-solid fa-microchip\"></i> LLM Output Parser</span>\n </div>\n @if (EditMode) {\n <div style=\"margin-top: 10px;\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PromptID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n </div>\n }\n </div>\n\n <!-- Parameters Resolution Card -->\n <div class=\"rpf-card-box\">\n <div class=\"rpf-box-eyebrow\">Prompt Parameter Resolution</div>\n @if (ParameterMappings.length > 0) {\n <div class=\"rpf-param-list\">\n @for (item of ParameterMappings; track item.Param) {\n <div class=\"rpf-param-row\">\n <span class=\"rpf-param-name\">{{ item.Param }}</span>\n <span>\n <i class=\"fa-solid fa-arrow-left rpf-param-arrow\"></i>\n <span>Column: <code>{{ item.Field }}</code></span>\n </span>\n </div>\n }\n </div>\n } @else {\n <div style=\"font-size: 12px; color: var(--mj-text-muted);\">\n No parameter bindings configured. Entire row context will be passed to prompt.\n </div>\n }\n </div>\n </div>\n\n <!-- Context Query Display -->\n <div class=\"rpf-sql-preview-box\">\n <div class=\"rpf-sql-preview-label\">\n <i class=\"fa-solid fa-code\"></i> Context Retrieval Query\n </div>\n <div class=\"rpf-sql-preview-code\">\n <code>{{ ContextQueryDisplay }}</code>\n </div>\n </div>\n\n <!-- Feature Output Schema & Entity Mappings Table -->\n <div class=\"rpf-table-wrap\">\n <table class=\"rpf-feature-table\">\n <thead>\n <tr>\n <th>Feature Name</th>\n <th>Kind / Type</th>\n <th>Validation Constraints</th>\n <th>Target Field Binding</th>\n <th>Reasoning</th>\n </tr>\n </thead>\n <tbody>\n @if (FeatureOutputs.length > 0) {\n @for (out of FeatureOutputs; track out.Name) {\n <tr>\n <td>\n <div class=\"rpf-feature-name-cell\">\n <i [class]=\"out.FeatureKind === 'numeric' ? 'fa-solid fa-chart-line' : 'fa-solid fa-tags'\"\n [style.color]=\"out.FeatureKind === 'numeric' ? '#f59e0b' : '#8b5cf6'\"></i>\n <span>{{ out.Name }}</span>\n </div>\n </td>\n <td>\n <span class=\"rpf-type-tag\"\n [class.rpf-type-numeric]=\"out.FeatureKind === 'numeric'\"\n [class.rpf-type-categorical]=\"out.FeatureKind === 'categorical'\"\n [class.rpf-type-default]=\"out.FeatureKind !== 'numeric' && out.FeatureKind !== 'categorical'\">\n {{ out.FeatureKind }}\n </span>\n </td>\n <td>\n <span class=\"rpf-sm-chip\" [title]=\"'Violation policy: ' + out.ViolationPolicy\">\n <i class=\"fa-solid fa-shield\"></i> {{ out.ConstraintSummary }}\n </span>\n </td>\n <td>\n <div class=\"rpf-binding-pill\">\n <i [class]=\"out.TargetFieldExists ? 'fa-solid fa-check-circle rpf-binding-valid' : 'fa-solid fa-triangle-exclamation rpf-binding-invalid'\"></i>\n <span>{{ TargetEntityName }}.<strong>{{ out.TargetField }}</strong></span>\n <span style=\"color: var(--mj-text-muted); font-size: 11px;\">({{ out.TargetFieldType }})</span>\n </div>\n </td>\n <td>\n @if (out.ReasoningTarget === 'Enabled') {\n <span class=\"rpf-sm-chip rpf-sm-chip-brand\"><i class=\"fa-solid fa-brain\"></i> Captured</span>\n } @else {\n <span style=\"color: var(--mj-text-muted); font-size: 11px;\">None</span>\n }\n </td>\n </tr>\n }\n } @else {\n <tr>\n <td colspan=\"5\" style=\"text-align: center; color: var(--mj-text-muted); padding: 20px;\">\n No output features defined yet. Use the <em>Pipeline Configuration</em> builder tab to add output features.\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <!-- Advanced Raw JSON Drawer -->\n <div class=\"rpf-raw-json-drawer\">\n <div class=\"rpf-raw-json-header\" (click)=\"ToggleRawJson()\">\n <div class=\"rpf-raw-json-title\">\n <i [class]=\"RawJsonExpanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n <i class=\"fa-solid fa-code\"></i>\n <span>Power User Escape Hatch: View Raw Pipeline Configuration JSON</span>\n </div>\n <button type=\"button\" class=\"rpf-sm-chip\" (click)=\"$event.stopPropagation(); CopyRawJson()\">\n <i [class]=\"RawJsonCopied ? 'fa-solid fa-check' : 'fa-regular fa-copy'\"></i>\n <span>{{ RawJsonCopied ? 'Copied!' : 'Copy JSON' }}</span>\n </button>\n </div>\n @if (RawJsonExpanded) {\n <div class=\"rpf-raw-json-body\">\n <pre><code>{{ FormattedRawJson }}</code></pre>\n </div>\n }\n </div>\n\n @if (EditMode) {\n <div class=\"rpf-edit-fields-divider\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WorkType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OutputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n }\n } @else {\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WorkType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ActionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PromptID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"InputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OutputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n }\n </mj-collapsible-panel>\n\n <!-- Scope Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"scopeConfiguration\"\n SectionName=\"Scope Configuration\"\n Icon=\"fa fa-filter\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-scope-infer-wrap\">\n <div class=\"rpf-scope-summary-row\">\n <div class=\"rpf-scope-badge-group\">\n <span class=\"rpf-scope-chip\">\n <i class=\"fa-solid fa-filter\"></i>\n <span>Scope Type: <strong>{{ record.ScopeType || 'Filter' }}</strong></span>\n </span>\n @if (record.ScopeFilter) {\n <span class=\"rpf-scope-chip rpf-scope-chip-brand\">\n <i class=\"fa-solid fa-calculator\"></i>\n <span>Filter Active</span>\n </span>\n }\n </div>\n </div>\n @if (FormattedScopeFilter) {\n <div class=\"rpf-sql-preview-box\">\n <div class=\"rpf-sql-preview-label\">\n <i class=\"fa-solid fa-database\"></i> SQL Scope Filter (WHERE clause)\n </div>\n <div class=\"rpf-sql-preview-code\">\n <code>{{ FormattedScopeFilter }}</code>\n </div>\n </div>\n } @else {\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>No scope filter applied. All records in <strong>{{ TargetEntityName }}</strong> will be evaluated.</span>\n </div>\n }\n @if (EditMode) {\n <div class=\"rpf-edit-fields-divider\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n }\n </div>\n } @else {\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeViewID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeListID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n }\n </mj-collapsible-panel>\n\n <!-- Triggers Section -->\n <mj-collapsible-panel\n SectionKey=\"triggers\"\n SectionName=\"Triggers\"\n Icon=\"fa fa-bolt\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeInvocationType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScheduleEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CronExpression\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Timezone\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnDemandEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Performance and Optimization Section -->\n <mj-collapsible-panel\n SectionKey=\"performanceAndOptimization\"\n SectionName=\"Performance and Optimization\"\n Icon=\"fa fa-tachometer-alt\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-opt-grid\">\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Delta Watermark</div>\n <div class=\"rpf-opt-value\">{{ record.WatermarkStrategy || 'Checksum' }}</div>\n <div class=\"rpf-opt-sub\">Evaluates row state changes</div>\n </div>\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Batch Processing</div>\n <div class=\"rpf-opt-value\">{{ record.BatchSize || 100 }} records</div>\n <div class=\"rpf-opt-sub\">Per inference chunk</div>\n </div>\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Concurrency</div>\n <div class=\"rpf-opt-value\">{{ record.MaxConcurrency || 1 }} Parallel</div>\n <div class=\"rpf-opt-sub\">Concurrent worker threads</div>\n </div>\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Skip Unchanged</div>\n <div class=\"rpf-opt-value\" [class.rpf-text-success]=\"record.SkipUnchanged\">\n <i [class]=\"record.SkipUnchanged ? 'fa-solid fa-check' : 'fa-solid fa-minus'\"></i>\n {{ record.SkipUnchanged ? 'Enabled' : 'Disabled' }}\n </div>\n <div class=\"rpf-opt-sub\">Skips re-evaluating unchanged rows</div>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"rpf-edit-fields-divider\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"SkipUnchanged\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WatermarkStrategy\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BatchSize\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"MaxConcurrency\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n }\n } @else {\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"SkipUnchanged\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WatermarkStrategy\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BatchSize\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"MaxConcurrency\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n }\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n\n <!-- Record Process Watermarks Section -->\n <mj-collapsible-panel\n SectionKey=\"mJRecordProcessWatermarks\"\n SectionName=\"Record Process Watermarks\"\n Icon=\"fa fa-water\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJRecordProcessWatermarks')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Record Process Watermarks','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Record Process Watermarks','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJRecordProcessWatermarks')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJRecordProcessWatermarks', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ML Model Scoring Bindings Section -->\n <mj-collapsible-panel\n SectionKey=\"mJMLModelScoringBindings\"\n SectionName=\"ML Model Scoring Bindings\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJMLModelScoringBindings')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: ML Model Scoring Bindings','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: ML Model Scoring Bindings','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJMLModelScoringBindings')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJMLModelScoringBindings', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Feature Values Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFeatureValues\"\n SectionName=\"Feature Values\"\n Icon=\"fa fa-history\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJFeatureValues')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Feature Values','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Feature Values','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJFeatureValues')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJFeatureValues', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Feature Value Caches Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFeatureValueCaches\"\n SectionName=\"Feature Value Caches\"\n Icon=\"fa fa-database\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJFeatureValueCaches')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Feature Value Caches','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Feature Value Caches','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJFeatureValueCaches')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJFeatureValueCaches', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n"]}
1
+ {"version":3,"file":"record-process-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/RecordProcesses/record-process-form.component.ts","../../../../src/lib/custom/RecordProcesses/record-process-form.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAU,SAAS,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAyB,MAAM,wBAAwB,CAAC;AACzK,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAqC,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC1I,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAE3F,OAAO,EAAE,4BAA4B,EAAE,MAAM,yEAAyE,CAAC;AACvH,OAAO,EAAc,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;;;;;;;;ICsCjC,gCAAiE;IAC7D,wBAAoC;IACpC,4BAAM;IAAA,gCAAgB;IAC1B,AAD0B,iBAAO,EAC1B;;;IAqBX,4BAAM;IAAA,yBAAS;IAAA,iBAAO;;;IAEtB,4BAAM;IAAA,yBAAS;IAAA,iBAAO;;;IAEtB,4BAAM;IAAA,yBAAS;IAAA,iBAAO;;;IAEtB,gCAAoB;IAAA,sBAAM;IAAA,iBAAO;;;IAKjC,4BAAM;IAAA,YAA2B;IAAA,iBAAO;;;IAAlC,cAA2B;IAA3B,kDAA2B;;;IAEjC,4BAAM;IAAA,YAAwD;IAAA,iBAAO;;;IAA/D,cAAwD;IAAxD,oFAAwD;;;IAE9D,4BAAM;IAAA,mCAAmB;IAAA,iBAAO;;;;IAqC5C,AADJ,+BAAuC,sCAMe;IAA9C,AADA,qPAAc,6BAAsB,KAAC,gPACtB,oCAA6B,KAAC;IAErD,AADI,iBAA8B,EAC5B;;;IANE,cAAiB;IAEjB,AADA,AADA,sCAAiB,oCACW,kCACF;;;IAMlC,+BAA6B;IACzB,+CAI2B;IAC/B,iBAAM;;;IAJE,cAAiB;IAEjB,AADA,AADA,sCAAiB,sBACI,kCACK;;;IAK9B,AADJ,+BAAqC,cACJ;IACzB,wBAAuC;IAEnC,AADJ,2BAAK,aACO;IAAA,YAAiD;IAAA,iBAAS;IAClE,yBAAG;IAAA,gEAAgD;IAAA,0BAAI;IAAA,kCAAkB;IAAA,iBAAK;IAAC,sBAAI;IAAA,2BAAI;IAAA,gCAAe;IAAA,iBAAK;IAAC,iCAAe;IAGvI,AADI,AADI,AAD+H,iBAAI,EAC7H,EACJ,EACJ;;;IAJc,eAAiD;IAAjD,iFAAiD;;;IAoBrE,+BAA8B;IAC1B,gDAE4B;IAChC,iBAAM;;;IAFE,cAA6B;IAA7B,kDAA6B;;;IAIrC,+BAA6B;IACzB,wBAAuC;IACvC,4BAAM;IAAA,6FAA6E;IACvF,AADuF,iBAAO,EACxF;;;IA4DU,gCAA4C;IAAA,YAA4C;IAAA,iBAAO;;;IAAnD,cAA4C;IAA5C,4EAA4C;;;IAM5F,+BAA+B;IAC3B,oCAA4K;IAChL,iBAAM;;;IADa,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;;;IAYjI,AADJ,+BAA2B,eACM;IAAA,YAAgB;IAAA,iBAAO;IACpD,4BAAM;IACF,wBAAsD;IACtD,4BAAM;IAAA,wBAAQ;IAAA,4BAAM;IAAA,YAAgB;IAE5C,AADI,AAD+C,AAAP,iBAAO,EAAO,EAC/C,EACL;;;IAL2B,eAAgB;IAAhB,mCAAgB;IAGrB,eAAgB;IAAhB,mCAAgB;;;IANpD,+BAA4B;IACxB,kJAQC;IACL,iBAAM;;;IATF,cAQC;IARD,uCAQC;;;IAGL,+BAA2D;IACvD,gGACJ;IAAA,iBAAM;;;IA4Dc,gCAA4C;IAAA,yBAAiC;IAAC,yBAAQ;IAAA,iBAAO;;;IAE7F,iCAA4D;IAAA,oBAAI;IAAA,iBAAO;;;IA9B3E,AADJ,AADJ,0BAAI,SACI,eACmC;IAC/B,oBAC6E;IAC7E,4BAAM;IAAA,YAAc;IAE5B,AADI,AADwB,iBAAO,EACzB,EACL;IAED,AADJ,0BAAI,gBAIoG;IAChG,YACJ;IACJ,AADI,iBAAO,EACN;IAED,AADJ,0BAAI,iBAC+E;IAC3E,0BAAkC;IAAC,aACvC;IACJ,AADI,iBAAO,EACN;IAED,AADJ,2BAAI,gBAC8B;IAC1B,qBAA+I;IAC/I,6BAAM;IAAA,aAAuB;IAAA,+BAAQ;IAAA,aAAqB;IAAS,AAAT,iBAAS,EAAO;IAC1E,kCAA4D;IAAA,aAA2B;IAE/F,AADI,AAD2F,iBAAO,EAC5F,EACL;IACL,2BAAI;IAGE,AAFF,0JAAyC,qIAEhC;IAIjB,AADI,iBAAK,EACJ;;;;IAhCU,eAAuF;IAAvF,+FAAuF;IACvF,iFAAqE;IAClE,eAAc;IAAd,iCAAc;IAKlB,eAAwD;IAExD,AADA,AADA,oEAAwD,8DACQ,8FAC6B;IAC/F,cACJ;IADI,mDACJ;IAG0B,eAAoD;IAApD,qEAAoD;IACvC,eACvC;IADuC,yDACvC;IAIO,eAAuI;IAAvI,+IAAuI;IACpI,eAAuB;IAAvB,uDAAuB;IAAQ,eAAqB;IAArB,wCAAqB;IACE,eAA2B;IAA3B,uDAA2B;IAI3F,eAIC;IAJD,gEAIC;;;IAlCb,qJAqCC;;;IArCD,oCAqCC;;;IAGG,AADJ,0BAAI,cACwF;IACpF,yDAAwC;IAAA,0BAAI;IAAA,sCAAsB;IAAA,iBAAK;IAAC,qDAC5E;IACJ,AADI,iBAAK,EACJ;;;IAqBJ,AAAL,AADJ,+BAA+B,UACtB,WAAM;IAAA,YAAsB;IACrC,AAD4C,AAAP,iBAAO,EAAM,EAC5C;;;IADS,eAAsB;IAAtB,6CAAsB;;;IAMzC,+BAAqC;IAGjC,AADA,AADA,qCAAyJ,yBACG,yBACA;IAChK,iBAAM;;;IAHa,cAAiB;IAA6E,AAAtB,AAAtD,AAAlB,sCAAiB,mBAAmB,6BAAyD,mCAA4B;IACzH,cAAiB;IAAgF,AAAtB,AAAzD,AAAlB,sCAAiB,mBAAmB,6BAA4D,mCAA4B;IAC5H,cAAiB;IAAgF,AAAtB,AAAzD,AAAlB,sCAAiB,mBAAmB,6BAA4D,mCAA4B;;;;IA9J3I,AADJ,AADJ,+BAAwE,cACtC,cAC2F;IACjH,oBAA+F;IAC/F,4BAAM;IAAA,YAAwE;IAClF,AADkF,iBAAO,EACnF;IACN,+BAA4B;IACxB,wBAAiF;IACjF,4BAAM;IAAA,YAA6E;IACvF,AADuF,iBAAO,EACxF;IACN,gCAA4B;IACxB,yBAAoC;IACpC,6BAAM;IAAA,aAA8B;IAGhD,AADI,AADI,AADwC,iBAAO,EACzC,EACJ,EACJ;IAME,AADJ,AAFJ,gCAA6B,eAEC,eACO;IAAA,gCAAe;IAAA,iBAAM;IAClD,gCAA8B;IAC1B,yBAAwC;IACxC,6BAAM;IAAA,aAAkE;IAC5E,AAD4E,iBAAO,EAC7E;IACN,gCAA2B;IACvB,qIAAuB;IAGvB,iCAA0B;IAAA,yBAAoC;IAAC,sCAAoB;IAAA,iBAAO;IAC1F,iCAA0B;IAAA,yBAAqC;IAAC,mCAAiB;IACrF,AADqF,iBAAO,EACtF;IACN,oIAAgB;IAKpB,iBAAM;IAIF,AADJ,gCAA0B,eACO;IAAA,4CAA2B;IAAA,iBAAM;IAa5D,AAZF,oIAAoC,8GAY3B;IAMjB,AADI,iBAAM,EACJ;IAIF,AADJ,gCAAiC,eACM;IAC/B,yBAAgC;IAAC,0CACrC;IAAA,iBAAM;IAEF,AADJ,gCAAkC,YACxB;IAAA,aAAyB;IAEvC,AADI,AADmC,iBAAO,EACpC,EACJ;IAOU,AADJ,AADJ,AADJ,AADJ,gCAA4B,iBACS,aACtB,UACC,UACI;IAAA,6BAAY;IAAA,iBAAK;IACrB,2BAAI;IAAA,4BAAW;IAAA,iBAAK;IACpB,2BAAI;IAAA,uCAAsB;IAAA,iBAAK;IAC/B,2BAAI;IAAA,qCAAoB;IAAA,iBAAK;IAC7B,2BAAI;IAAA,0BAAS;IAErB,AADI,AADiB,iBAAK,EACjB,EACD;IACR,8BAAO;IAwCD,AAvCF,yHAAiC,yGAuCxB;IASrB,AADI,AADI,iBAAQ,EACJ,EACN;IAIF,AADJ,gCAAiC,eAC8B;IAA1B,oNAAS,sBAAe,KAAC;IACtD,gCAAgC;IAE5B,AADA,qBAA4F,aAC5D;IAChC,6BAAM;IAAA,8EAA6D;IACvE,AADuE,iBAAO,EACxE;IACN,mCAA4F;IAAlD,uMAAS,wBAAwB,wBAAE,oBAAa,KAAC;IACvF,qBAA4E;IAC5E,6BAAM;IAAA,aAA6C;IAE3D,AADI,AADuD,iBAAO,EACrD,EACP;IACN,oIAAuB;IAK3B,iBAAM;IAEN,qIAAgB;;;IA5JW,4DAA4C;IAEnC,eAA0C;IAAC,AAA3C,0DAA0C,+CAA8C;IAC7G,cAAuF;IAAvF,mGAAuF;IACpF,eAAwE;IAAxE,+FAAwE;IAIxE,eAA6E;IAA7E,oHAA6E;IAI7E,eAA8B;IAA9B,0DAA8B;IAY9B,eAAkE;IAAlE,yFAAkE;IAGxE,eAEC;IAFD,kDAEC;IAIL,eAIC;IAJD,2CAIC;IAMD,eAgBC;IAhBD,+DAgBC;IAUK,eAAyB;IAAzB,gDAAyB;IAiB3B,gBA6CC;IA7CD,4DA6CC;IASE,eAAoF;IAApF,gGAAoF;IAKpF,eAAoE;IAApE,gFAAoE;IACjE,eAA6C;IAA7C,oEAA6C;IAG3D,cAIC;IAJD,kDAIC;IAGL,cAMC;IAND,2CAMC;;;IAQD,AADA,AADA,AADA,AADA,AADA,AADA,qCAAyJ,yBACmB,yBACD,wBACC,yBACjB,yBACC,yBACA;;;IAN/C,AAAtB,AAAtD,AAAlB,sCAAiB,mBAAmB,6BAAyD,mCAA4B;IACzH,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;IAC1H,cAAiB;IAA6E,AAAtB,AAAtD,AAAlB,sCAAiB,mBAAmB,6BAAyD,mCAA4B;IACzH,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;IAC1H,cAAiB;IAA+E,AAAtB,AAAxD,AAAlB,sCAAiB,mBAAmB,6BAA2D,mCAA4B;IAC3H,cAAiB;IAAgF,AAAtB,AAAzD,AAAlB,sCAAiB,mBAAmB,6BAA4D,mCAA4B;IAC5H,cAAiB;IAAgF,AAAtB,AAAzD,AAAlB,sCAAiB,mBAAmB,6BAA4D,mCAA4B;;;IAoB3H,iCAAkD;IAC9C,yBAAsC;IACtC,4BAAM;IAAA,6BAAa;IACvB,AADuB,iBAAO,EACvB;;;IAMX,AADJ,+BAAiC,cACM;IAC/B,wBAAoC;IAAC,iDACzC;IAAA,iBAAM;IAEF,AADJ,+BAAkC,WACxB;IAAA,YAA0B;IAExC,AADI,AADoC,iBAAO,EACrC,EACJ;;;IAFQ,eAA0B;IAA1B,iDAA0B;;;IAIxC,+BAA6B;IACzB,wBAAuC;IACvC,4BAAM;IAAA,wDAAwC;IAAA,8BAAQ;IAAA,YAAsB;IAAA,iBAAS;IAAC,mCAAkB;IAC5G,AAD4G,iBAAO,EAC7G;;;IADoD,eAAsB;IAAtB,6CAAsB;;;IAIhF,+BAAqC;IAEjC,AADA,qCAA0J,yBACA;IAC9J,iBAAM;;;IAFa,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;IAC1H,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;;;IA9BzI,AADJ,AADJ,AADJ,+BAAkC,eACK,eACI,gBACF;IACzB,wBAAkC;IAClC,4BAAM;IAAA,4BAAY;IAAA,8BAAQ;IAAA,YAAkC;IAChE,AADyE,AAAT,iBAAS,EAAO,EACzE;IACP,oIAA0B;IAOlC,AADI,iBAAM,EACJ;IAUJ,AATF,oIAA4B,8GASnB;IAMT,oIAAgB;IAMpB,iBAAM;;;IA/BoC,eAAkC;IAAlC,yDAAkC;IAEhE,cAKC;IALD,oDAKC;IAGT,cAcC;IAdD,uDAcC;IACD,eAKC;IALD,2CAKC;;;IAML,AADA,AADA,AADA,qCAA0J,yBACqB,yBACA,yBACrB;;;IAH5C,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;IAC1H,cAAiB;IAAiF,AAAtB,AAA1D,AAAlB,sCAAiB,mBAAmB,6BAA6D,mCAA4B;IAC7H,cAAiB;IAAiF,AAAtB,AAA1D,AAAlB,sCAAiB,mBAAmB,6BAA6D,mCAA4B;IAC7H,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;;;IAsDrI,+BAAqC;IAIjC,AADA,AADA,AADA,qCAAgK,yBACE,yBACR,yBACK;IACnK,iBAAM;;;IAJa,cAAiB;IAAoF,AAAtB,AAA7D,AAAlB,sCAAiB,mBAAmB,6BAAgE,mCAA4B;IAChI,cAAiB;IAAsF,AAAtB,AAA/D,AAAlB,sCAAiB,mBAAmB,6BAAkE,mCAA4B;IAClI,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;IAC1H,cAAiB;IAAmF,AAAtB,AAA5D,AAAlB,sCAAiB,mBAAmB,6BAA+D,mCAA4B;;;IA5B9I,AADJ,AADJ,gCAA0B,eACI,eACK;IAAA,+BAAe;IAAA,iBAAM;IAChD,gCAA2B;IAAA,YAA4C;IAAA,iBAAM;IAC7E,gCAAyB;IAAA,2CAA2B;IACxD,AADwD,iBAAM,EACxD;IAEF,AADJ,gCAA0B,eACK;IAAA,iCAAgB;IAAA,iBAAM;IACjD,iCAA2B;IAAA,aAAqC;IAAA,iBAAM;IACtE,iCAAyB;IAAA,oCAAmB;IAChD,AADgD,iBAAM,EAChD;IAEF,AADJ,iCAA0B,gBACK;IAAA,4BAAW;IAAA,iBAAM;IAC5C,iCAA2B;IAAA,aAAyC;IAAA,iBAAM;IAC1E,iCAAyB;IAAA,0CAAyB;IACtD,AADsD,iBAAM,EACtD;IAEF,AADJ,iCAA0B,gBACK;IAAA,+BAAc;IAAA,iBAAM;IAC/C,iCAA2E;IACvE,qBAAkF;IAClF,aACJ;IAAA,iBAAM;IACN,iCAAyB;IAAA,mDAAkC;IAEnE,AADI,AAD+D,iBAAM,EAC/D,EACJ;IACN,qIAAgB;;;IAtBmB,eAA4C;IAA5C,mEAA4C;IAK5C,eAAqC;IAArC,qEAAqC;IAKrC,eAAyC;IAAzC,yEAAyC;IAKzC,eAA+C;IAA/C,+DAA+C;IACnE,cAA0E;IAA1E,sFAA0E;IAC7E,cACJ;IADI,qFACJ;IAIR,eAOC;IAPD,2CAOC;;;IAKD,AADA,AADA,AADA,qCAAgK,yBACE,yBACR,yBACK;;;IAH3C,AAAtB,AAA7D,AAAlB,sCAAiB,mBAAmB,6BAAgE,mCAA4B;IAChI,cAAiB;IAAsF,AAAtB,AAA/D,AAAlB,sCAAiB,mBAAmB,6BAAkE,mCAA4B;IAClI,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;IAC1H,cAAiB;IAAmF,AAAtB,AAA5D,AAAlB,sCAAiB,mBAAmB,6BAA+D,mCAA4B;;;;IAkC9I,AADJ,2BAAK,wCAO2F;IAAxF,AADA,yPAAY,6BAAsB,KAAC,sPAClB,0BAAmB,2BAA2B,uBAAuB,KAAC;IAE/F,AADI,iBAA+B,EAC7B;;;IAPE,cAAqG;IAGrG,AADA,AADA,AADA,2HAAqG,+FACf,oEAC1B,qBACxC;;;;IAoBxB,AADJ,2BAAK,wCAO0F;IAAvF,AADA,yPAAY,6BAAsB,KAAC,sPAClB,0BAAmB,0BAA0B,uBAAuB,KAAC;IAE9F,AADI,iBAA+B,EAC7B;;;IAPE,cAAqG;IAGrG,AADA,AADA,AADA,2HAAqG,+FACf,mEAC3B,qBACvC;;;;IAoBxB,AADJ,2BAAK,wCAOiF;IAA9E,AADA,yPAAY,6BAAsB,KAAC,sPAClB,0BAAmB,iBAAiB,uBAAuB,KAAC;IAErF,AADI,iBAA+B,EAC7B;;;IAPE,cAA0F;IAG1F,AADA,AADA,AADA,gHAA0F,oFACf,0DACzB,qBAC9B;;;;IAoBxB,AADJ,2BAAK,wCAOsF;IAAnF,AADA,0PAAY,6BAAsB,KAAC,uPAClB,0BAAmB,sBAAsB,uBAAuB,KAAC;IAE1F,AADI,iBAA+B,EAC7B;;;IAPE,cAAgG;IAGhG,AADA,AADA,AADA,sHAAgG,0FACf,+DAC1B,qBACnC;;;;IAzlBpC,mDAK4D;IAAxD,AADA,AADA,AADA,AADA,oOAAY,6BAAsB,KAAC,+NAChB,0BAAmB,KAAC,+NACpB,0BAAmB,KAAC,iOACnB,2BAAoB,KAAC,+OACd,kCAA2B,KAAC;IAEvD,wCAAuK;IAgBvJ,AADJ,AADJ,AAFJ,AAPJ,+CAM6B,aACW,aAEL,aACI,aACS;IAC5B,oBAA8B;IAClC,iBAAM;IAGE,AADJ,AADJ,8BAA2B,aACS,cACD;IAAA,aAAuC;IAAA,iBAAK;IACvE,iCAAqD;IACjD,4BAAmC;IACnC,aACJ;IACJ,AADI,iBAAO,EACL;IACN,8BAAyB;IAAA,aAAuE;IAAA,iBAAI;IAEhG,AADJ,gCAA4B,gBACqB;IACzC,yBAAoC;IACpC,6BAAM;IAAA,aAAsB;IAChC,AADgC,iBAAO,EAChC;IACP,iCAAyC;IACrC,qBAA8B;IAC9B,6BAAM;IAAA,aAAkC;IAC5C,AAD4C,iBAAO,EAC5C;IACP,sHAAmC;IASnD,AADI,AADI,AADI,iBAAM,EACJ,EACJ,EACJ;IAKE,AADJ,AADJ,gCAA0B,eACI,eACK;IAAA,yBAAkC;IAAC,8BAAY;IAAA,iBAAM;IAChF,gCAA2B;IAAA,aAAkC;IAAA,iBAAM;IACnE,gCAAgF;IAC5E,aACJ;IACJ,AADI,iBAAM,EACJ;IAGF,AADJ,gCAA0B,eACK;IAAA,yBAAgC;IAAC,0BAAQ;IAAA,iBAAM;IAC1E,gCAA2B;IAOrB,AAFA,AAFA,AAFF,kHAA8B,4FAEO,4FAEA,gGAE5B;IAGb,iBAAM;IACN,gCAAyB;IAKnB,AAFA,AAFF,kHAAuD,4FAElB,4FAE5B;IAIjB,AADI,iBAAM,EACJ;IAGF,AADJ,gCAA0B,eACK;IAAA,yBAAiC;IAAC,8BAAY;IAAA,iBAAM;IAC/E,gCAA2B;IAAA,aAAwC;IAAA,iBAAM;IACzE,gCAAyB;IACrB,aACJ;IACJ,AADI,iBAAM,EACJ;IAGF,AADJ,gCAA0B,eACK;IAAA,yBAAqC;IAAC,gCAAc;IAAA,iBAAM;IACrF,gCAA2B;IAAA,aAAmD;IAAA,iBAAM;IACpF,gCAAyB;IACrB,aACJ;IAIhB,AADI,AADI,AADI,AADI,iBAAM,EACJ,EACJ,EACJ,EACa;IAKvB,iDAO6B;IAmBvB,AARA,AAVF,qHAAmC,+FAUY,gGAQtC;IAWb,iBAAuB;IAKvB,iDAO6B;IAOvB,AANF,qHAAsB,+FAMb;IAMb,iBAAuB;IAOvB,iDAKgC;IAK5B,AADA,AADA,AADA,AADA,qCAAsJ,yBACQ,yBACgB,yBACF,yBACrB;IAC3J,iBAAuB;IAGvB,iDAM8B;IAsKxB,AArKF,4GAAmC,qFAqK1B;IASb,iBAAuB;IAGvB,iDAKgC;IAuC1B,AAtCF,sHAAmC,qFAsC1B;IAMb,iBAAuB;IAGvB,iDAKgC;IAO5B,AADA,AADA,AADA,AADA,AADA,AADA,qCAAkK,yBACK,yBACV,yBACK,yBACF,yBACN,yBACQ;IACtK,iBAAuB;IAGvB,iDAKgC;IAmC1B,AAlCF,2GAAmC,qFAkC1B;IAMb,iBAAuB;IAGvB,iDAM8B;IAE1B,AADA,qCAAgK,yBACA;IACpK,iBAAuB;IAEvB,0CAAsK;IAOtK,iDAQ8B;IAC1B,mHAAsB;IAY1B,iBAAuB;IAGvB,kDAQ8B;IAC1B,mHAAsB;IAY1B,iBAAuB;IAGvB,kDAQ8B;IAC1B,mHAAsB;IAY1B,iBAAuB;IAGvB,kDAQ8B;IAC1B,mHAAsB;IAY1B,iBAAuB;IAEvB,2CAAuK;IAC3K,iBAA2B;;;IAlmBiB,AAAlB,sCAAiB,yBAAuB;IAO1C,cAAmC;IAA+D,AAAvB,AAAlB,AAAzD,wBAAA,+CAAmC,CAAA,yBAAuC,yBAAuB,mCAA4B;IAS7I,cAAa;IAEb,AADA,AADA,6BAAa,mCACc,yBACH;IAML,eAAsB;IAAtB,kCAAsB;IAIM,eAAuC;IAAvC,8DAAuC;IAC1C,cAA4B;IAA5B,iDAA4B;IAEhD,eACJ;IADI,gEACJ;IAEqB,eAAuE;IAAvE,8FAAuE;IAIlF,eAAsB;IAAtB,6CAAsB;IAGzB,eAAsB;IAAtB,kCAAsB;IACnB,eAAkC;IAAlC,yDAAkC;IAE5C,cAKC;IALD,8DAKC;IAUkB,eAAkC;IAAlC,yDAAkC;IACpC,cAAsD;IAAtD,2EAAsD;IAC3E,cACJ;IADI,0HACJ;IAMI,eAQC;IARD,mIAQC;IAGD,eAMC;IAND,8HAMC;IAMsB,eAAwC;IAAxC,+DAAwC;IAE/D,eACJ;IADI,qIACJ;IAK2B,eAAmD;IAAnD,0EAAmD;IAE1E,eACJ;IADI,mIACJ;IAcZ,cAAa;IAEb,AADA,AADA,6BAAa,mCACc,yBACH;IACxB,cA4BC;IA5BD,6GA4BC;IAWD,eAAa;IAEb,AADA,AADA,6BAAa,mCACc,yBACH;IACxB,cAWC;IAXD,iDAWC;IAYD,eAAa;IACb,AADA,6BAAa,mCACc;IACZ,cAAiB;IAA0E,AAAtB,AAAnD,AAAlB,sCAAiB,mBAAmB,6BAAsD,mCAA4B;IACtH,cAAiB;IAAkF,AAAtB,AAA3D,AAAlB,sCAAiB,mBAAmB,6BAA8D,mCAA4B;IAC9H,cAAiB;IAAgF,AAAtB,AAAzD,AAAlB,sCAAiB,mBAAmB,6BAA4D,mCAA4B;IAC5H,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;IAC1H,cAAiB;IAA2E,AAAtB,AAApD,AAAlB,sCAAiB,mBAAmB,6BAAuD,mCAA4B;IAQtI,cAAa;IAEb,AADA,AADA,6BAAa,mCACc,0BACF;IACzB,cA6KC;IA7KD,8DA6KC;IAQD,eAAa;IACb,AADA,6BAAa,mCACc;IAC3B,cA2CC;IA3CD,8DA2CC;IAQD,eAAa;IACb,AADA,6BAAa,mCACc;IACZ,cAAiB;IAAsF,AAAtB,AAA/D,AAAlB,sCAAiB,mBAAmB,6BAAkE,mCAA4B;IAClI,cAAiB;IAA2F,AAAtB,AAApE,AAAlB,sCAAiB,mBAAmB,6BAAuE,mCAA4B;IACvI,cAAiB;IAAiF,AAAtB,AAA1D,AAAlB,sCAAiB,mBAAmB,6BAA6D,mCAA4B;IAC7H,cAAiB;IAAsF,AAAtB,AAA/D,AAAlB,sCAAiB,mBAAmB,6BAAkE,mCAA4B;IAClI,cAAiB;IAAoF,AAAtB,AAA7D,AAAlB,sCAAiB,mBAAmB,6BAAgE,mCAA4B;IAChI,cAAiB;IAA8E,AAAtB,AAAvD,AAAlB,sCAAiB,mBAAmB,6BAA0D,mCAA4B;IAC1H,cAAiB;IAAsF,AAAtB,AAA/D,AAAlB,sCAAiB,mBAAmB,6BAAkE,mCAA4B;IAQjJ,cAAa;IACb,AADA,6BAAa,mCACc;IAC3B,cAuCC;IAvCD,8DAuCC;IAQD,eAAa;IAEb,AADA,AADA,6BAAa,mCACc,0BACF;IACV,cAAiB;IAAoF,AAAtB,AAA7D,AAAlB,sCAAiB,mBAAmB,6BAAgE,mCAA4B;IAChI,cAAiB;IAAoF,AAAtB,AAA7D,AAAlB,sCAAiB,mBAAmB,6BAAgE,mCAA4B;IAG/H,cAAmC;IAA8D,AAAvB,AAAlB,AAAxD,wBAAA,+CAAmC,CAAA,yBAAsC,yBAAuB,mCAA4B;IAY5I,cAAa;IAGb,AADA,AADA,AADA,6BAAa,mCACc,sEACmC,0BACrC;IACzB,cAWC;IAXD,kDAWC;IASD,cAAa;IAGb,AADA,AADA,AADA,6BAAa,mCACc,qEACkC,0BACpC;IACzB,cAWC;IAXD,kDAWC;IASD,cAAa;IAGb,AADA,AADA,AADA,6BAAa,mCACc,4DACyB,0BAC3B;IACzB,cAWC;IAXD,kDAWC;IASD,cAAa;IAGb,AADA,AADA,AADA,6BAAa,mCACc,iEAC8B,0BAChC;IACzB,cAWC;IAXD,kDAWC;IAGe,cAAmC;IAA+D,AAAvB,AAAlB,AAAzD,wBAAA,+CAAmC,CAAA,yBAAuC,yBAAuB,mCAA4B;;ADjkBrJ;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,aAA6B;IAC/D,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,aAAa,CAAkB,aAAa,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACpE,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,qBAAqB,CAAC,aAA6B;IAC/D,OAAO,qBAAqB,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAA6B;IAC3D,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,aAAa,CAAkB,aAAa,CAAC,CAAC;AACzD,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,iBAAiB,CAAC,aAA6B;IAC3D,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAChC,IAA4B,EAC5B,UAA+B;IAE/B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,oBAAoB,CAChC,IAA4B,EAC5B,UAA+B;IAE/B,OAAO,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CACxC,IAA4B,EAC5B,UAA8B,EAC9B,aAA6B;IAE7B,MAAM,OAAO,GAA6B,EAAE,CAAC;IAE7C,IAAI,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,eAAe,GAAG,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;YACpC,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC/B,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC;YACjD,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtC,eAAe,GAAG,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACxD,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;gBACrC,eAAe,GAAG,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,UAAU,GAAG,CAAC;YAClE,CAAC;YAED,IAAI,cAAc,GAAG,MAAM,CAAC;YAC5B,IAAI,eAAe,GAAG,OAAO,CAAC;YAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAChB,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC;gBACpC,CAAC;gBACD,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;oBACb,KAAK,SAAS,CAAC;oBACf,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACjD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACjD,cAAc,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;wBACpC,MAAM;oBACV,CAAC;oBACD,KAAK,MAAM,CAAC,CAAC,CAAC;wBACV,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAClC,cAAc,GAAG,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;wBACtG,CAAC;6BAAM,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;4BAC7B,cAAc,GAAG,qBAAqB,CAAC;wBAC3C,CAAC;wBACD,MAAM;oBACV,CAAC;oBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACZ,cAAc,GAAG,WAAW,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;wBACnE,MAAM;oBACV,CAAC;oBACD,KAAK,MAAM,CAAC,CAAC,CAAC;wBACV,cAAc,GAAG,UAAU,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC;wBAC9D,MAAM;oBACV,CAAC;oBACD,KAAK,SAAS,CAAC,CAAC,CAAC;wBACb,cAAc,GAAG,SAAS,CAAC;wBAC3B,MAAM;oBACV,CAAC;oBACD,KAAK,UAAU,CAAC,CAAC,CAAC;wBACd,cAAc,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;wBAChF,MAAM;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;YAED,MAAM,WAAW,GAAG,UAAU,KAAK,OAAO,CAAC;YAC3C,MAAM,KAAK,GAAG,WAAW,IAAI,eAAe,IAAI,UAAU,EAAE,MAAM;gBAC9D,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,CAAC;gBACvF,CAAC,CAAC,SAAS,CAAC;YAEhB,OAAO,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,SAAS;gBACtC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE;gBAClB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;gBACnF,WAAW,EAAE,eAAe,IAAI,GAAG;gBACnC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAC/C,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC;gBACrG,iBAAiB,EAAE,cAAc;gBACjC,eAAe,EAAE,eAAe;gBAChC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;aAC9D,CAAC,CAAC;QACP,CAAC;IACL,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,aAAa,CAA+D,aAAa,CAAC,CAAC;QAC3G,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,OAAyC,CAAC;QACnI,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC1F,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;oBACjB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;oBAChB,WAAW,EAAE,OAAO;oBACpB,WAAW,EAAE,GAAG;oBAChB,iBAAiB,EAAE,CAAC,CAAC,KAAK;oBAC1B,eAAe,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,IAAI,IAAI,SAAS;oBAC1D,iBAAiB,EAAE,UAAU;oBAC7B,eAAe,EAAE,MAAM;oBACvB,eAAe,EAAE,MAAM;iBAC1B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,4BAA4B,CACxC,IAA4B,EAC5B,UAA8B,EAC9B,aAA6B;IAE7B,OAAO,4BAA4B,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACtC,IAA4B,EAC5B,YAA4B;IAE5B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,IAAI,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACrE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;SAAM,IAAI,YAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,aAAa,CAAyB,YAAY,CAAC,CAAC;QAChE,IAAI,GAAG,EAAE,CAAC;YACN,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,0BAA0B,CACtC,IAA4B,EAC5B,YAA4B;IAE5B,OAAO,0BAA0B,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC1D,CAAC;AAED,0GAA0G;AAC1G,MAAM,CAAC,MAAM,gCAAgC,GAAG,6FAA6F,CAAC;AAE9I;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CACxC,QAA8D,EAC9D,aAAsB,EACtB,aAAkD;IAElD,IAAI,QAAQ,KAAK,OAAO,IAAI,aAAa,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnH,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;AACpG,CAAC;AAED;;;;;;;;;;;;GAYG;AAQI,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,4BAA4B;IAA7E;;QACH,yHAAyH;QAClH,kBAAa,GAAG,IAAI,CAAC;QAarB,oBAAe,GAAG,KAAK,CAAC;QAUxB,kBAAa,GAAG,KAAK,CAAC;QAUtB,gBAAW,GAAqD,IAAI,CAAC;KAuO/E;IAnQG,6CAA6C;IAC7C,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IACD,6CAA6C;IAC7C,IAAW,aAAa,CAAC,KAAK;QAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAGD,+CAA+C;IAC/C,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IACD,+CAA+C;IAC/C,IAAW,eAAe,CAAC,KAAK;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IACjC,CAAC;IAGD,6CAA6C;IAC7C,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IACD,6CAA6C;IAC7C,IAAW,aAAa,CAAC,KAAK;QAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAGD,2CAA2C;IAC3C,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,2CAA2C;IAC3C,IAAW,WAAW,CAAC,KAAuD;QAC1E,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IAEQ,KAAK,CAAC,QAAQ;QACnB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC;YACd,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACrF,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;YACnF,EAAE,UAAU,EAAE,uBAAuB,EAAE,WAAW,EAAE,wBAAwB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChG,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE;YAC1E,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE;YACxF,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,KAAK,EAAE;YACnF,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC1F,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;YACrE,EAAE,UAAU,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B,EAAE,UAAU,EAAE,KAAK,EAAE;YAC1G,EAAE,UAAU,EAAE,2BAA2B,EAAE,WAAW,EAAE,2BAA2B,EAAE,UAAU,EAAE,KAAK,EAAE;YACxG,EAAE,UAAU,EAAE,0BAA0B,EAAE,WAAW,EAAE,2BAA2B,EAAE,UAAU,EAAE,KAAK,EAAE;YACvG,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE;YACnF,EAAE,UAAU,EAAE,sBAAsB,EAAE,WAAW,EAAE,sBAAsB,EAAE,UAAU,EAAE,KAAK,EAAE;YAC9F,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,KAAK,EAAE;SACtF,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC;QAClD,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAA4C;gBACpE,UAAU,EAAE,aAAa;gBACzB,WAAW,EAAE,SAAS,eAAe,CAAC,OAAO,CAAC,GAAG;gBACjD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;gBAC7B,UAAU,EAAE,QAAQ;aACvB,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACtB,QAAQ,CAAC,oDAAoD,OAAO,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;YACjG,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,QAAQ,CAAC,uDAAuD,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC;IACL,CAAC;IAED,IAAW,gBAAgB;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ;YAAE,OAAO,GAAG,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,OAAO,MAAM,EAAE,WAAW,IAAI,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IACvE,CAAC;IAED,IAAW,gBAAgB;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC7C,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,IAAW,YAAY;QACnB,QAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC5B,KAAK,OAAO;gBACR,OAAO,iCAAiC,CAAC;YAC7C,KAAK,YAAY;gBACb,OAAO,wBAAwB,CAAC;YACpC,KAAK,UAAU;gBACX,OAAO,mBAAmB,CAAC;YAC/B,KAAK,QAAQ;gBACT,OAAO,kBAAkB,CAAC;YAC9B,KAAK,OAAO;gBACR,OAAO,mBAAmB,CAAC;YAC/B;gBACI,OAAO,mBAAmB,CAAC;QACnC,CAAC;IACL,CAAC;IAED,IAAW,gBAAgB;QACvB,QAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAC1B,KAAK,QAAQ;gBACT,OAAO,mBAAmB,CAAC;YAC/B,KAAK,OAAO;gBACR,OAAO,kBAAkB,CAAC;YAC9B,KAAK,UAAU;gBACX,OAAO,qBAAqB,CAAC;YACjC;gBACI,OAAO,oBAAoB,CAAC;QACpC,CAAC;IACL,CAAC;IAEM,oBAAoB;QACvB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,qBAAqB,CAAC,KAAc;QACvC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACa,QAAQ;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QACtI,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;gBAC5D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnI,CAAC;QACL,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,aAAa;QAChB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,6CAA6C;IACtC,aAAa;QAChB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,WAAW;QACpB,IAAI,CAAC;YACD,IAAI,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAChD,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACxB,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC5B,CAAC,EAAE,IAAI,CAAC,CAAC;YACb,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,QAAQ,CAAC,0DAA0D,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;IACL,CAAC;IAED,2CAA2C;IACpC,KAAK,CAAC,WAAW;QACpB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;IAED,IAAW,gBAAgB;QACvB,OAAO,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC;IAED,IAAW,UAAU;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,eAAe,EAAE,CAAC,CAAC,eAAe;gBAClC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;oBAClC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACpE,CAAC,CAAC,SAAS;aAClB,CAAC,CAAC;SACN,CAAC;IACN,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,4BAA4B,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC5G,CAAC;IAED,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC;IACzE,CAAC;IAED,IAAW,iBAAiB;QACxB,OAAO,0BAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClF,CAAC;IAED,IAAW,eAAe;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,IAAI,EAAE,OAAO,EAAE,gBAAgB;YAAE,OAAO,0BAA0B,CAAC;QACvE,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;QACnI,CAAC;QACD,IAAI,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACjH,OAAO,2BAA2B,CAAC;IACvC,CAAC;IAED,IAAW,mBAAmB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;gBACxB,OAAO,mBAAmB,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAC/E,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YACjH,OAAO,mBAAmB,IAAI,CAAC,OAAO,CAAC,OAAO,qBAAqB,IAAI,CAAC,gBAAgB,IAAI,cAAc,oBAAoB,SAAS,EAAE,CAAC;QAC9I,CAAC;QACD,OAAO,mBAAmB,IAAI,CAAC,gBAAgB,IAAI,cAAc,2BAA2B,CAAC;IACjG,CAAC;IAED,IAAW,oBAAoB;QAC3B,OAAO,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClD,CAAC;4TAzQQ,kCAAkC,yBAAlC,kCAAkC;oEAAlC,kCAAkC;2BAKhC,+BAA+B;;;;;YCjR9C,6HAAc;;YAAd,qCAomBC;;;ADxVY,kCAAkC;IAP9C,aAAa,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,GAAG,CAAC;GAOjD,kCAAkC,CA0Q9C;;iFA1QY,kCAAkC;cAN9C,SAAS;6BACM,KAAK,YACP,iCAAiC;;kBAS1C,SAAS;mBAAC,+BAA+B;;kFALjC,kCAAkC;AA4Q/C;;;GAGG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,cAAc;IACvC,cAAc,CAAC,IAAoB,EAAE,IAAuB;QACxE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,mBAAmB,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QACjG,IAAI,YAAY,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC;YAChC,YAAY,CAAC,IAAI,GAAG,wBAAwB,CAAC;YAC7C,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;QAC/B,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC;QACpE,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC;YACvE,OAAO;gBACH,GAAG,IAAI;gBACP,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC;aACnC,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAA;AAnBY,uBAAuB;IADnC,eAAe,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,CAAC;GAClG,uBAAuB,CAmBnC;;AAED,oFAAoF;AACpF,MAAM,UAAU,sCAAsC;IAClD,KAAK,kCAAkC,CAAC;IACxC,KAAK,uBAAuB,CAAC;AACjC,CAAC","sourcesContent":["import { Component, OnInit, ViewChild } from '@angular/core';\nimport { RegisterClass, RegisterClassEx, SafeJSONParse, EscapeSQLString, ValidationErrorInfo, ValidationErrorType, type ValidationResult } from '@memberjunction/global';\nimport { BaseFormComponent, BaseFormPolicy, FormChromeContext, FormChromeSpec, DETAILS_SECTION_KEY } from '@memberjunction/ng-base-forms';\nimport { FeaturePipelineBuilderComponent } from '@memberjunction/ng-record-process-studio';\nimport type { MJRecordProcessEntity } from '@memberjunction/core-entities';\nimport { MJRecordProcessFormComponent } from '../../generated/Entities/MJRecordProcess/mjrecordprocess.form.component';\nimport { EntityInfo, RunView, LogError } from '@memberjunction/core';\nimport type { DataFeatureSpec, SpecValidationIssue, EntityMetadataStub } from '@memberjunction/feature-pipelines';\nimport { validateSpec } from '@memberjunction/feature-pipelines';\n\n/**\n * View-model representing an individual feature output in the pipeline schema table.\n */\nexport interface FeatureOutputViewModel {\n Name: string;\n Ref: string;\n FeatureKind: string;\n TargetField: string;\n TargetFieldExists: boolean;\n TargetFieldType: string;\n ConstraintSummary: string;\n ViolationPolicy: string;\n ReasoningTarget: string;\n}\n\n/**\n * View-model representing a parameter resolution mapping for the AI prompt.\n */\nexport interface PromptParamViewModel {\n Param: string;\n Field: string;\n}\n\n/**\n * Pure helper function to format raw JSON.\n */\nexport function FormatRawPipelineJson(configuration?: string | null): string {\n if (!configuration) return '';\n const parsed = SafeJSONParse<DataFeatureSpec>(configuration);\n return parsed ? JSON.stringify(parsed, null, 2) : configuration;\n}\n\n/** @deprecated Use {@link FormatRawPipelineJson}. */\nexport function formatRawPipelineJson(configuration?: string | null): string {\n return FormatRawPipelineJson(configuration);\n}\n\n/**\n * Pure helper function to parse DataFeatureSpec safely.\n */\nexport function ParsePipelineSpec(configuration?: string | null): DataFeatureSpec | null {\n if (!configuration) return null;\n return SafeJSONParse<DataFeatureSpec>(configuration);\n}\n\n/** @deprecated Use {@link ParsePipelineSpec}. */\nexport function parsePipelineSpec(configuration?: string | null): DataFeatureSpec | null {\n return ParsePipelineSpec(configuration);\n}\n\n/**\n * Pure helper function to validate pipeline spec against entity stub.\n */\nexport function ValidatePipelineSpec(\n spec: DataFeatureSpec | null,\n entityStub?: EntityMetadataStub\n): SpecValidationIssue[] {\n if (!spec) return [];\n return validateSpec(spec, entityStub);\n}\n\n/** @deprecated Use {@link ValidatePipelineSpec}. */\nexport function validatePipelineSpec(\n spec: DataFeatureSpec | null,\n entityStub?: EntityMetadataStub\n): SpecValidationIssue[] {\n return ValidatePipelineSpec(spec, entityStub);\n}\n\n/**\n * Pure helper to build feature output view-models from spec or output mapping.\n */\nexport function BuildFeatureOutputViewModels(\n spec: DataFeatureSpec | null,\n entityInfo?: EntityInfo | null,\n outputMapping?: string | null\n): FeatureOutputViewModel[] {\n const outputs: FeatureOutputViewModel[] = [];\n\n if (spec?.Outputs && spec.Outputs.length > 0) {\n for (const out of spec.Outputs) {\n let targetFieldName = '';\n const targetMode = out.Target?.Mode;\n if (out.Target?.Mode === 'field') {\n targetFieldName = out.Target.EntityFieldName;\n } else if (out.Target?.Mode === 'child') {\n targetFieldName = `Child: ${out.Target.EntityName}`;\n } else if (out.Target?.Mode === 'tags') {\n targetFieldName = `Tags (${out.Target.Growth || 'taxonomy'})`;\n }\n\n let constraintText = 'None';\n let violationPolicy = 'error';\n const c = out.Constraint;\n if (c) {\n if (c.OnViolation) {\n violationPolicy = c.OnViolation;\n }\n switch (c.Type) {\n case 'numeric':\n case 'money': {\n const min = c.Min != null ? String(c.Min) : '-∞';\n const max = c.Max != null ? String(c.Max) : '+∞';\n constraintText = `[${min}, ${max}]`;\n break;\n }\n case 'enum': {\n if (c.Values && c.Values.length > 0) {\n constraintText = `Allowed: ${c.Values.slice(0, 3).join(', ')}${c.Values.length > 3 ? '...' : ''}`;\n } else if (c.FromFieldMetadata) {\n constraintText = 'From Field Metadata';\n }\n break;\n }\n case 'lookup': {\n constraintText = `Lookup: ${c.Entity || ''}.${c.MatchField || ''}`;\n break;\n }\n case 'date': {\n constraintText = `Date: [${c.Min || '-∞'}, ${c.Max || '+∞'}]`;\n break;\n }\n case 'boolean': {\n constraintText = 'Boolean';\n break;\n }\n case 'freetext': {\n constraintText = c.MaxLength != null ? `Max: ${c.MaxLength} chars` : 'Freetext';\n break;\n }\n }\n }\n\n const isFieldMode = targetMode === 'field';\n const field = isFieldMode && targetFieldName && entityInfo?.Fields\n ? entityInfo.Fields.find((f) => f.Name.toLowerCase() === targetFieldName.toLowerCase())\n : undefined;\n\n outputs.push({\n Name: out.Name || out.Ref || 'Unnamed',\n Ref: out.Ref || '',\n FeatureKind: out.FeatureKind || (c?.Type === 'numeric' ? 'numeric' : 'categorical'),\n TargetField: targetFieldName || '—',\n TargetFieldExists: isFieldMode ? !!field : true,\n TargetFieldType: isFieldMode ? (field?.TSType || field?.Type || 'unbound') : (targetMode || 'custom'),\n ConstraintSummary: constraintText,\n ViolationPolicy: violationPolicy,\n ReasoningTarget: spec.CaptureReasoning ? 'Enabled' : 'None',\n });\n }\n } else if (outputMapping) {\n const mapping = SafeJSONParse<{ fields?: Record<string, string> } | Record<string, string>>(outputMapping);\n const fieldsObj = (mapping && 'fields' in mapping && mapping.fields) ? mapping.fields : (mapping as Record<string, string> | null);\n if (fieldsObj && typeof fieldsObj === 'object') {\n for (const [key, val] of Object.entries(fieldsObj)) {\n const field = entityInfo?.Fields?.find((f) => f.Name.toLowerCase() === key.toLowerCase());\n outputs.push({\n Name: String(val),\n Ref: String(val),\n FeatureKind: 'field',\n TargetField: key,\n TargetFieldExists: !!field,\n TargetFieldType: field?.TSType || field?.Type || 'unbound',\n ConstraintSummary: 'Standard',\n ViolationPolicy: 'null',\n ReasoningTarget: 'None',\n });\n }\n }\n }\n\n return outputs;\n}\n\n/** @deprecated Use {@link BuildFeatureOutputViewModels}. */\nexport function buildFeatureOutputViewModels(\n spec: DataFeatureSpec | null,\n entityInfo?: EntityInfo | null,\n outputMapping?: string | null\n): FeatureOutputViewModel[] {\n return BuildFeatureOutputViewModels(spec, entityInfo, outputMapping);\n}\n\n/**\n * Pure helper to build prompt parameter resolution mappings.\n */\nexport function BuildPromptParamViewModels(\n spec: DataFeatureSpec | null,\n inputMapping?: string | null\n): PromptParamViewModel[] {\n const mappings: PromptParamViewModel[] = [];\n if (spec?.Context?.QueryParams) {\n for (const [param, field] of Object.entries(spec.Context.QueryParams)) {\n mappings.push({ Param: `@${param}`, Field: String(field) });\n }\n } else if (spec?.Context?.InputMapping) {\n for (const [param, field] of Object.entries(spec.Context.InputMapping)) {\n mappings.push({ Param: `@${param}`, Field: String(field) });\n }\n } else if (inputMapping) {\n const raw = SafeJSONParse<Record<string, string>>(inputMapping);\n if (raw) {\n for (const [param, field] of Object.entries(raw)) {\n mappings.push({ Param: `@${param}`, Field: String(field) });\n }\n }\n }\n return mappings;\n}\n\n/** @deprecated Use {@link BuildPromptParamViewModels}. */\nexport function buildPromptParamViewModels(\n spec: DataFeatureSpec | null,\n inputMapping?: string | null\n): PromptParamViewModel[] {\n return BuildPromptParamViewModels(spec, inputMapping);\n}\n\n/** The message the form refuses a save with when the builder flagged the pipeline without listing why. */\nexport const PIPELINE_BUILDER_INVALID_MESSAGE = 'The pipeline configuration has errors. Fix them under Pipeline Configuration before saving.';\n\n/**\n * Why the record form refuses to save an Infer pipeline the builder reports invalid: the builder's error\n * messages, once each, or {@link PIPELINE_BUILDER_INVALID_MESSAGE} when they are not available. Empty for\n * any other work type (the builder only edits Infer pipelines), and while the builder reports it valid.\n */\nexport function GetPipelineBuilderSaveErrors(\n workType: MJRecordProcessEntity['WorkType'] | null | undefined,\n pipelineValid: boolean,\n builderIssues?: ReadonlyArray<SpecValidationIssue>\n): string[] {\n if (workType !== 'Infer' || pipelineValid) {\n return [];\n }\n const messages = (builderIssues ?? []).filter((issue) => issue.Severity === 'error').map((issue) => issue.Message);\n return messages.length > 0 ? Array.from(new Set(messages)) : [PIPELINE_BUILDER_INVALID_MESSAGE];\n}\n\n/**\n * Custom form override for `MJ: Record Processes` (priority 100).\n * Presents the Record Process / Feature Pipeline in a first-class MJ form with:\n * - Lead panel: \"Overview & Status\" with hero KPI summary, target entity badge, and trigger diagnostics.\n * - Builder panel: \"Pipeline Configuration\" embedding the visual <mj-feature-pipeline-builder> for Infer / Feature Pipelines,\n * or the <mj-record-process-editor> for Field Rules.\n * - History panel: \"Prior Runs\" embedding <mj-record-process-history> with run status, metrics, and per-record diff drill-down.\n * - Details panel (Option A Structured Cards): First-class semantic cards for Infer pipelines, replacing raw JSON\n * with configuration health diagnostics, prompt context binding, feature output schema & column validation,\n * scope preview, and a collapsible raw JSON drawer.\n * - Related entity sections: Watermarks, ML Model Scoring Bindings, Feature Values, Feature Value Caches.\n * - System Metadata panel.\n */\n@RegisterClass(BaseFormComponent, 'MJ: Record Processes', 100)\n@Component({\n standalone: false,\n selector: 'mj-record-process-form-extended',\n templateUrl: './record-process-form.component.html',\n styleUrls: ['./record-process-form.component.css'],\n})\nexport class RecordProcessFormComponentExtended extends MJRecordProcessFormComponent implements OnInit {\n /** Whether the Feature Pipeline builder last reported the pipeline valid. The form refuses to save while it is false. */\n public PipelineValid = true;\n\n /** The embedded builder, when it is rendered, for the messages behind {@link PipelineValid}. */\n @ViewChild(FeaturePipelineBuilderComponent) private pipelineBuilder?: FeaturePipelineBuilderComponent;\n\n /** @deprecated Use {@link PipelineValid}. */\n public get pipelineValid() {\n return this.PipelineValid;\n }\n /** @deprecated Use {@link PipelineValid}. */\n public set pipelineValid(value) {\n this.PipelineValid = value;\n }\n public RawJsonExpanded = false;\n\n /** @deprecated Use {@link RawJsonExpanded}. */\n public get rawJsonExpanded() {\n return this.RawJsonExpanded;\n }\n /** @deprecated Use {@link RawJsonExpanded}. */\n public set rawJsonExpanded(value) {\n this.RawJsonExpanded = value;\n }\n public RawJsonCopied = false;\n\n /** @deprecated Use {@link RawJsonCopied}. */\n public get rawJsonCopied() {\n return this.RawJsonCopied;\n }\n /** @deprecated Use {@link RawJsonCopied}. */\n public set rawJsonCopied(value) {\n this.RawJsonCopied = value;\n }\n public LoadedQuery: { ID: string; Name: string; SQL: string } | null = null;\n\n /** @deprecated Use {@link LoadedQuery}. */\n public get loadedQuery(): { ID: string; Name: string; SQL: string } | null {\n return this.LoadedQuery;\n }\n /** @deprecated Use {@link LoadedQuery}. */\n public set loadedQuery(value: { ID: string; Name: string; SQL: string } | null) {\n this.LoadedQuery = value;\n }\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'processOverview', sectionName: 'Overview & Status', isExpanded: true },\n { sectionKey: 'inferConfig', sectionName: 'Infer Configuration', isExpanded: true },\n { sectionKey: 'pipelineConfiguration', sectionName: 'Pipeline Configuration', isExpanded: true },\n { sectionKey: 'processRuns', sectionName: 'Prior Runs', isExpanded: true },\n { sectionKey: 'processDefinition', sectionName: 'Process Definition', isExpanded: true },\n { sectionKey: 'executionLogic', sectionName: 'Execution Logic', isExpanded: false },\n { sectionKey: 'scopeConfiguration', sectionName: 'Scope Configuration', isExpanded: true },\n { sectionKey: 'triggers', sectionName: 'Triggers', isExpanded: true },\n { sectionKey: 'performanceAndOptimization', sectionName: 'Performance & Optimization', isExpanded: false },\n { sectionKey: 'mJRecordProcessWatermarks', sectionName: 'Record Process Watermarks', isExpanded: false },\n { sectionKey: 'mJMLModelScoringBindings', sectionName: 'ML Model Scoring Bindings', isExpanded: false },\n { sectionKey: 'mJFeatureValues', sectionName: 'Feature Values', isExpanded: false },\n { sectionKey: 'mJFeatureValueCaches', sectionName: 'Feature Value Caches', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n ]);\n await this.loadContextQuery();\n }\n\n private async loadContextQuery(): Promise<void> {\n const queryId = this.ParsedSpec?.Context?.QueryID;\n if (!queryId) return;\n\n try {\n const rv = new RunView();\n const res = await rv.RunView<{ ID: string; Name: string; SQL: string }>({\n EntityName: 'MJ: Queries',\n ExtraFilter: `ID = '${EscapeSQLString(queryId)}'`,\n Fields: ['ID', 'Name', 'SQL'],\n ResultType: 'simple',\n });\n if (res.Success && res.Results && res.Results.length > 0) {\n this.LoadedQuery = res.Results[0];\n this.cdr.markForCheck();\n } else if (!res.Success) {\n LogError(`[RecordProcessForm] Failed to load context query ${queryId}: ${res.ErrorMessage}`);\n }\n } catch (e) {\n LogError(`[RecordProcessForm] Exception loading context query ${queryId}`, undefined, e);\n }\n }\n\n public get TargetEntityName(): string {\n if (!this.record?.EntityID) return '—';\n const entity = this.ProviderToUse.EntityByID(this.record.EntityID);\n return entity?.DisplayName || entity?.Name || this.record.EntityID;\n }\n\n public get TargetEntityInfo(): EntityInfo | undefined {\n if (!this.record?.EntityID) return undefined;\n return this.ProviderToUse.EntityByID(this.record.EntityID);\n }\n\n public get WorkTypeIcon(): string {\n switch (this.record?.WorkType) {\n case 'Infer':\n return 'fa-solid fa-wand-magic-sparkles';\n case 'FieldRules':\n return 'fa-solid fa-table-list';\n case 'ML Model':\n return 'fa-solid fa-brain';\n case 'Action':\n return 'fa-solid fa-bolt';\n case 'Agent':\n return 'fa-solid fa-robot';\n default:\n return 'fa-solid fa-gears';\n }\n }\n\n public get StatusBadgeClass(): string {\n switch (this.record?.Status) {\n case 'Active':\n return 'rpf-status-active';\n case 'Draft':\n return 'rpf-status-draft';\n case 'Disabled':\n return 'rpf-status-disabled';\n default:\n return 'rpf-status-default';\n }\n }\n\n public OnPipelineSpecChange(): void {\n this.cdr.markForCheck();\n }\n\n public OnPipelineValidChange(valid: boolean): void {\n this.PipelineValid = valid;\n this.cdr.markForCheck();\n }\n\n /**\n * The record's validation (which includes the shared Feature Pipeline save check), plus the builder's\n * verdict: while the builder reports an Infer pipeline invalid, the save is refused and its errors are\n * listed on Configuration.\n */\n public override Validate(): ValidationResult {\n const result = super.Validate();\n const builderErrors = GetPipelineBuilderSaveErrors(this.record?.WorkType, this.PipelineValid, this.pipelineBuilder?.ValidationErrors);\n for (const message of builderErrors) {\n if (!result.Errors.some((error) => error.Message === message)) {\n result.Errors.push(new ValidationErrorInfo('Configuration', message, this.record?.Configuration, ValidationErrorType.Failure));\n }\n }\n if (builderErrors.length > 0) {\n result.Success = false;\n }\n return result;\n }\n\n public ToggleRawJson(): void {\n this.RawJsonExpanded = !this.RawJsonExpanded;\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ToggleRawJson}. */\n public toggleRawJson(): void {\n return this.ToggleRawJson();\n }\n\n public async CopyRawJson(): Promise<void> {\n try {\n if (navigator?.clipboard && this.FormattedRawJson) {\n await navigator.clipboard.writeText(this.FormattedRawJson);\n this.RawJsonCopied = true;\n this.cdr.markForCheck();\n setTimeout(() => {\n this.RawJsonCopied = false;\n this.cdr.markForCheck();\n }, 2000);\n }\n } catch (e) {\n LogError('[RecordProcessForm] Failed to copy raw JSON to clipboard', undefined, e);\n }\n }\n\n /** @deprecated Use {@link CopyRawJson}. */\n public async copyRawJson(): Promise<void> {\n return this.CopyRawJson();\n }\n\n public get FormattedRawJson(): string {\n return FormatRawPipelineJson(this.record?.Configuration);\n }\n\n public get ParsedSpec(): DataFeatureSpec | null {\n return ParsePipelineSpec(this.record?.Configuration);\n }\n\n public get EntityStub(): EntityMetadataStub | undefined {\n const entity = this.TargetEntityInfo;\n if (!entity) return undefined;\n return {\n Name: entity.Name,\n Fields: (entity.Fields ?? []).map((f) => ({\n Name: f.Name,\n TSType: f.TSType,\n IsVirtual: f.IsVirtual,\n AllowsNull: f.AllowsNull,\n RelatedEntity: f.RelatedEntity,\n RelatedEntityID: f.RelatedEntityID,\n EntityFieldValues: f.EntityFieldValues\n ? f.EntityFieldValues.map((v) => ({ Value: v.Value, Code: v.Code }))\n : undefined,\n })),\n };\n }\n\n public get SpecIssues(): SpecValidationIssue[] {\n return ValidatePipelineSpec(this.ParsedSpec, this.EntityStub);\n }\n\n public get IsSpecValid(): boolean {\n return this.SpecIssues.filter((i) => i.Severity === 'error').length === 0;\n }\n\n public get FeatureOutputs(): FeatureOutputViewModel[] {\n return BuildFeatureOutputViewModels(this.ParsedSpec, this.TargetEntityInfo, this.record?.OutputMapping);\n }\n\n public get TotalFeaturesCount(): number {\n return this.FeatureOutputs.length;\n }\n\n public get BoundFeaturesCount(): number {\n return this.FeatureOutputs.filter((f) => f.TargetFieldExists).length;\n }\n\n public get ParameterMappings(): PromptParamViewModel[] {\n return BuildPromptParamViewModels(this.ParsedSpec, this.record?.InputMapping);\n }\n\n public get ContextModeText(): string {\n const spec = this.ParsedSpec;\n if (spec?.Context?.EntityDocumentID) return 'Entity Document Template';\n if (spec?.Context?.QueryID) {\n return this.LoadedQuery?.Name ? `Query: ${this.LoadedQuery.Name}` : `Saved Query (${spec.Context.QueryID.substring(0, 8)}...)`;\n }\n if (spec?.Context?.Fields && spec.Context.Fields.length > 0) return `Fields (${spec.Context.Fields.join(', ')})`;\n return 'Record Fields (Automatic)';\n }\n\n public get ContextQueryDisplay(): string {\n const spec = this.ParsedSpec;\n if (spec?.Context?.QueryID) {\n if (this.LoadedQuery?.SQL) {\n return `-- Saved Query: ${this.LoadedQuery.Name}\\n${this.LoadedQuery.SQL}`;\n }\n const paramName = spec.Context.QueryParams ? Object.keys(spec.Context.QueryParams)[0] || 'RecordID' : 'RecordID';\n return `-- Saved Query: ${spec.Context.QueryID}\\nSELECT a.* FROM ${this.TargetEntityName || 'TargetEntity'} a WHERE a.ID = @${paramName}`;\n }\n return `SELECT a.* FROM ${this.TargetEntityName || 'TargetEntity'} a WHERE a.ID = @RecordID`;\n }\n\n public get FormattedScopeFilter(): string {\n return this.record?.ScopeFilter?.trim() || '';\n }\n}\n\n/**\n * Form policy ensuring the Overview panel sits as the lead group\n * on the left-nav rail with proper title and icon.\n */\n@RegisterClassEx(BaseFormPolicy, { key: 'MJ: Record Processes', metadata: { entity: 'MJ: Record Processes' } })\nexport class RecordProcessFormPolicy extends BaseFormPolicy {\n public override DecorateChrome(spec: FormChromeSpec, _ctx: FormChromeContext): FormChromeSpec {\n const detailsGroup = spec.Groups.find(g => g.Key === DETAILS_SECTION_KEY || g.Key === 'details');\n if (detailsGroup) {\n detailsGroup.Title = 'Overview';\n detailsGroup.Icon = 'fa-solid fa-gauge-high';\n detailsGroup.IsLead = true;\n }\n const overview = spec.Groups.find(g => g.Key === 'processOverview');\n if (overview) {\n overview.IsLead = true;\n const remaining = spec.Groups.filter(g => g.Key !== 'processOverview');\n return {\n ...spec,\n Groups: [overview, ...remaining],\n };\n }\n return spec;\n }\n}\n\n/** Tree-shaking guard so the override and policy register with the ClassFactory. */\nexport function LoadRecordProcessFormComponentExtended(): void {\n void RecordProcessFormComponentExtended;\n void RecordProcessFormPolicy;\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n OVERVIEW & STATUS (Lead Panel)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"processOverview\"\n SectionName=\"Overview & Status\"\n Icon=\"fa-solid fa-gauge-high\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n <div class=\"rpf-overview-container\">\n <!-- Hero Header Card -->\n <div class=\"rpf-hero-card\">\n <div class=\"rpf-hero-main\">\n <div class=\"rpf-hero-icon-wrap\">\n <i [class]=\"WorkTypeIcon\"></i>\n </div>\n <div class=\"rpf-hero-info\">\n <div class=\"rpf-hero-title-row\">\n <h2 class=\"rpf-hero-title\">{{ record.Name || 'Untitled Process' }}</h2>\n <span class=\"rpf-badge\" [ngClass]=\"StatusBadgeClass\">\n <span class=\"rpf-badge-dot\"></span>\n {{ record.Status || 'Draft' }}\n </span>\n </div>\n <p class=\"rpf-hero-desc\">{{ record.Description || 'No description provided for this process.' }}</p>\n <div class=\"rpf-hero-pills\">\n <span class=\"rpf-pill\" title=\"Target Entity\">\n <i class=\"fa-solid fa-database\"></i>\n <span>{{ TargetEntityName }}</span>\n </span>\n <span class=\"rpf-pill\" title=\"Work Type\">\n <i [class]=\"WorkTypeIcon\"></i>\n <span>{{ record.WorkType || 'Not set' }}</span>\n </span>\n @if (record.WorkType === 'Infer') {\n <span class=\"rpf-pill rpf-pill-feature\" title=\"Feature Pipeline\">\n <i class=\"fa-solid fa-sparkles\"></i>\n <span>Feature Pipeline</span>\n </span>\n }\n </div>\n </div>\n </div>\n </div>\n\n <!-- KPI Summary Grid -->\n <div class=\"rpf-kpi-grid\">\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-filter\"></i> Target Scope</div>\n <div class=\"rpf-kpi-value\">{{ record.ScopeType || 'Filter' }}</div>\n <div class=\"rpf-kpi-sub\" [title]=\"record.ScopeFilter || 'All records in scope'\">\n {{ record.ScopeFilter ? record.ScopeFilter : 'No filter applied (all records)' }}\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-bolt\"></i> Triggers</div>\n <div class=\"rpf-kpi-value\">\n @if (record.ScheduleEnabled) {\n <span>Scheduled</span>\n } @else if (record.OnChangeEnabled) {\n <span>On Change</span>\n } @else if (record.OnDemandEnabled) {\n <span>On Demand</span>\n } @else {\n <span class=\"muted\">Manual</span>\n }\n </div>\n <div class=\"rpf-kpi-sub\">\n @if (record.ScheduleEnabled && record.CronExpression) {\n <code>{{ record.CronExpression }}</code>\n } @else if (record.OnChangeEnabled) {\n <span>Mode: {{ record.OnChangeInvocationType || 'Immediate' }}</span>\n } @else {\n <span>On demand execution</span>\n }\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-water\"></i> Optimization</div>\n <div class=\"rpf-kpi-value\">{{ record.WatermarkStrategy || 'None' }}</div>\n <div class=\"rpf-kpi-sub\">\n Batch: {{ record.BatchSize || 'default' }} | Concurrency: {{ record.MaxConcurrency || '1' }}\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-microchip\"></i> Skip Unchanged</div>\n <div class=\"rpf-kpi-value\">{{ record.SkipUnchanged ? 'Enabled' : 'Disabled' }}</div>\n <div class=\"rpf-kpi-sub\">\n {{ record.SkipUnchanged ? 'Skips re-evaluating unchanged rows' : 'Processes all matching rows' }}\n </div>\n </div>\n </div>\n </div>\n </mj-collapsible-panel>\n\n <!-- ========================================\n PIPELINE CONFIGURATION (Visual Builder)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"pipelineConfiguration\"\n SectionName=\"Pipeline Configuration\"\n Icon=\"fa-solid fa-wand-magic-sparkles\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-pipeline-builder-wrap\">\n <mj-feature-pipeline-builder\n [Record]=\"record\"\n [EntityID]=\"record.EntityID\"\n [Provider]=\"ProviderToUse\"\n (SpecChange)=\"OnPipelineSpecChange()\"\n (ValidChange)=\"OnPipelineValidChange($event)\">\n </mj-feature-pipeline-builder>\n </div>\n } @else if (record.WorkType === 'FieldRules') {\n <div class=\"rpf-editor-wrap\">\n <mj-record-process-editor\n [Record]=\"record\"\n [ShowToolbar]=\"false\"\n [Provider]=\"ProviderToUse\">\n </mj-record-process-editor>\n </div>\n } @else {\n <div class=\"rpf-generic-config-wrap\">\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <div>\n <strong>{{ record.WorkType || 'Custom' }} Execution Logic</strong>\n <p>Configure actions, prompts, and mappings in the <em>Process Definition</em> and <em>Execution Logic</em> sections below.</p>\n </div>\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ========================================\n PRIOR RUNS & AUDIT (Embedded History)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"processRuns\"\n SectionName=\"Prior Runs\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n @if (record.IsSaved) {\n <div class=\"rpf-history-wrap\">\n <mj-record-process-history\n [RecordProcessID]=\"record.ID\">\n </mj-record-process-history>\n </div>\n } @else {\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>Save this record process to view execution history and per-record audit logs.</span>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ========================================\n FIELD PANELS (Fold into Details rail)\n ======================================== -->\n\n <!-- Process Definition Section -->\n <mj-collapsible-panel\n SectionKey=\"processDefinition\"\n SectionName=\"Process Definition\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CategoryID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"EntityID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Execution Logic Section -->\n <mj-collapsible-panel\n SectionKey=\"executionLogic\"\n SectionName=\"Execution Logic\"\n Icon=\"fa fa-play\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n @if (record.WorkType === 'Infer') {\n <!-- Health & Schema Audit Bar -->\n <div class=\"rpf-audit-bar\" [class.rpf-audit-bar-warning]=\"!IsSpecValid\">\n <div class=\"rpf-audit-badges\">\n <div class=\"rpf-audit-chip\" [class.rpf-audit-chip-valid]=\"IsSpecValid\" [class.rpf-audit-chip-warning]=\"!IsSpecValid\">\n <i [class]=\"IsSpecValid ? 'fa-solid fa-shield-check' : 'fa-solid fa-triangle-exclamation'\"></i>\n <span>{{ IsSpecValid ? 'Configuration Valid' : 'Configuration Issues Found' }}</span>\n </div>\n <div class=\"rpf-audit-chip\">\n <i class=\"fa-solid fa-check-circle\" style=\"color: var(--mj-status-success);\"></i>\n <span>{{ BoundFeaturesCount }} of {{ TotalFeaturesCount }} Features Bound to Target</span>\n </div>\n <div class=\"rpf-audit-chip\">\n <i class=\"fa-solid fa-database\"></i>\n <span>Context: {{ ContextModeText }}</span>\n </div>\n </div>\n </div>\n\n <!-- AI Model & Context Query Section -->\n <div class=\"rpf-prompt-grid\">\n <!-- Prompt Card -->\n <div class=\"rpf-card-box\">\n <div class=\"rpf-box-eyebrow\">Bound AI Prompt</div>\n <div class=\"rpf-prompt-title\">\n <i class=\"fa-solid fa-message-code\"></i>\n <span>{{ record.PromptID ? 'Prompt Configured' : 'No Prompt Selected' }}</span>\n </div>\n <div class=\"rpf-chip-wrap\">\n @if (record.PromptID) {\n <span class=\"rpf-sm-chip rpf-sm-chip-brand\">ID: {{ record.PromptID.substring(0, 8) }}...</span>\n }\n <span class=\"rpf-sm-chip\"><i class=\"fa-solid fa-sparkles\"></i> Feature Infer Engine</span>\n <span class=\"rpf-sm-chip\"><i class=\"fa-solid fa-microchip\"></i> LLM Output Parser</span>\n </div>\n @if (EditMode) {\n <div style=\"margin-top: 10px;\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PromptID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n </div>\n }\n </div>\n\n <!-- Parameters Resolution Card -->\n <div class=\"rpf-card-box\">\n <div class=\"rpf-box-eyebrow\">Prompt Parameter Resolution</div>\n @if (ParameterMappings.length > 0) {\n <div class=\"rpf-param-list\">\n @for (item of ParameterMappings; track item.Param) {\n <div class=\"rpf-param-row\">\n <span class=\"rpf-param-name\">{{ item.Param }}</span>\n <span>\n <i class=\"fa-solid fa-arrow-left rpf-param-arrow\"></i>\n <span>Column: <code>{{ item.Field }}</code></span>\n </span>\n </div>\n }\n </div>\n } @else {\n <div style=\"font-size: 12px; color: var(--mj-text-muted);\">\n No parameter bindings configured. Entire row context will be passed to prompt.\n </div>\n }\n </div>\n </div>\n\n <!-- Context Query Display -->\n <div class=\"rpf-sql-preview-box\">\n <div class=\"rpf-sql-preview-label\">\n <i class=\"fa-solid fa-code\"></i> Context Retrieval Query\n </div>\n <div class=\"rpf-sql-preview-code\">\n <code>{{ ContextQueryDisplay }}</code>\n </div>\n </div>\n\n <!-- Feature Output Schema & Entity Mappings Table -->\n <div class=\"rpf-table-wrap\">\n <table class=\"rpf-feature-table\">\n <thead>\n <tr>\n <th>Feature Name</th>\n <th>Kind / Type</th>\n <th>Validation Constraints</th>\n <th>Target Field Binding</th>\n <th>Reasoning</th>\n </tr>\n </thead>\n <tbody>\n @if (FeatureOutputs.length > 0) {\n @for (out of FeatureOutputs; track out.Name) {\n <tr>\n <td>\n <div class=\"rpf-feature-name-cell\">\n <i [class]=\"out.FeatureKind === 'numeric' ? 'fa-solid fa-chart-line' : 'fa-solid fa-tags'\"\n [style.color]=\"out.FeatureKind === 'numeric' ? '#f59e0b' : '#8b5cf6'\"></i>\n <span>{{ out.Name }}</span>\n </div>\n </td>\n <td>\n <span class=\"rpf-type-tag\"\n [class.rpf-type-numeric]=\"out.FeatureKind === 'numeric'\"\n [class.rpf-type-categorical]=\"out.FeatureKind === 'categorical'\"\n [class.rpf-type-default]=\"out.FeatureKind !== 'numeric' && out.FeatureKind !== 'categorical'\">\n {{ out.FeatureKind }}\n </span>\n </td>\n <td>\n <span class=\"rpf-sm-chip\" [title]=\"'Violation policy: ' + out.ViolationPolicy\">\n <i class=\"fa-solid fa-shield\"></i> {{ out.ConstraintSummary }}\n </span>\n </td>\n <td>\n <div class=\"rpf-binding-pill\">\n <i [class]=\"out.TargetFieldExists ? 'fa-solid fa-check-circle rpf-binding-valid' : 'fa-solid fa-triangle-exclamation rpf-binding-invalid'\"></i>\n <span>{{ TargetEntityName }}.<strong>{{ out.TargetField }}</strong></span>\n <span style=\"color: var(--mj-text-muted); font-size: 11px;\">({{ out.TargetFieldType }})</span>\n </div>\n </td>\n <td>\n @if (out.ReasoningTarget === 'Enabled') {\n <span class=\"rpf-sm-chip rpf-sm-chip-brand\"><i class=\"fa-solid fa-brain\"></i> Captured</span>\n } @else {\n <span style=\"color: var(--mj-text-muted); font-size: 11px;\">None</span>\n }\n </td>\n </tr>\n }\n } @else {\n <tr>\n <td colspan=\"5\" style=\"text-align: center; color: var(--mj-text-muted); padding: 20px;\">\n No output features defined yet. Use the <em>Pipeline Configuration</em> builder tab to add output features.\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <!-- Advanced Raw JSON Drawer -->\n <div class=\"rpf-raw-json-drawer\">\n <div class=\"rpf-raw-json-header\" (click)=\"ToggleRawJson()\">\n <div class=\"rpf-raw-json-title\">\n <i [class]=\"RawJsonExpanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n <i class=\"fa-solid fa-code\"></i>\n <span>Power User Escape Hatch: View Raw Pipeline Configuration JSON</span>\n </div>\n <button type=\"button\" class=\"rpf-sm-chip\" (click)=\"$event.stopPropagation(); CopyRawJson()\">\n <i [class]=\"RawJsonCopied ? 'fa-solid fa-check' : 'fa-regular fa-copy'\"></i>\n <span>{{ RawJsonCopied ? 'Copied!' : 'Copy JSON' }}</span>\n </button>\n </div>\n @if (RawJsonExpanded) {\n <div class=\"rpf-raw-json-body\">\n <pre><code>{{ FormattedRawJson }}</code></pre>\n </div>\n }\n </div>\n\n @if (EditMode) {\n <div class=\"rpf-edit-fields-divider\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WorkType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OutputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n }\n } @else {\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WorkType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ActionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PromptID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"InputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OutputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n }\n </mj-collapsible-panel>\n\n <!-- Scope Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"scopeConfiguration\"\n SectionName=\"Scope Configuration\"\n Icon=\"fa fa-filter\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-scope-infer-wrap\">\n <div class=\"rpf-scope-summary-row\">\n <div class=\"rpf-scope-badge-group\">\n <span class=\"rpf-scope-chip\">\n <i class=\"fa-solid fa-filter\"></i>\n <span>Scope Type: <strong>{{ record.ScopeType || 'Filter' }}</strong></span>\n </span>\n @if (record.ScopeFilter) {\n <span class=\"rpf-scope-chip rpf-scope-chip-brand\">\n <i class=\"fa-solid fa-calculator\"></i>\n <span>Filter Active</span>\n </span>\n }\n </div>\n </div>\n @if (FormattedScopeFilter) {\n <div class=\"rpf-sql-preview-box\">\n <div class=\"rpf-sql-preview-label\">\n <i class=\"fa-solid fa-database\"></i> SQL Scope Filter (WHERE clause)\n </div>\n <div class=\"rpf-sql-preview-code\">\n <code>{{ FormattedScopeFilter }}</code>\n </div>\n </div>\n } @else {\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>No scope filter applied. All records in <strong>{{ TargetEntityName }}</strong> will be evaluated.</span>\n </div>\n }\n @if (EditMode) {\n <div class=\"rpf-edit-fields-divider\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n }\n </div>\n } @else {\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeViewID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeListID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n }\n </mj-collapsible-panel>\n\n <!-- Triggers Section -->\n <mj-collapsible-panel\n SectionKey=\"triggers\"\n SectionName=\"Triggers\"\n Icon=\"fa fa-bolt\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeInvocationType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScheduleEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CronExpression\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Timezone\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnDemandEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Performance and Optimization Section -->\n <mj-collapsible-panel\n SectionKey=\"performanceAndOptimization\"\n SectionName=\"Performance and Optimization\"\n Icon=\"fa fa-tachometer-alt\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-opt-grid\">\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Delta Watermark</div>\n <div class=\"rpf-opt-value\">{{ record.WatermarkStrategy || 'Checksum' }}</div>\n <div class=\"rpf-opt-sub\">Evaluates row state changes</div>\n </div>\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Batch Processing</div>\n <div class=\"rpf-opt-value\">{{ record.BatchSize || 100 }} records</div>\n <div class=\"rpf-opt-sub\">Per inference chunk</div>\n </div>\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Concurrency</div>\n <div class=\"rpf-opt-value\">{{ record.MaxConcurrency || 1 }} Parallel</div>\n <div class=\"rpf-opt-sub\">Concurrent worker threads</div>\n </div>\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Skip Unchanged</div>\n <div class=\"rpf-opt-value\" [class.rpf-text-success]=\"record.SkipUnchanged\">\n <i [class]=\"record.SkipUnchanged ? 'fa-solid fa-check' : 'fa-solid fa-minus'\"></i>\n {{ record.SkipUnchanged ? 'Enabled' : 'Disabled' }}\n </div>\n <div class=\"rpf-opt-sub\">Skips re-evaluating unchanged rows</div>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"rpf-edit-fields-divider\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"SkipUnchanged\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WatermarkStrategy\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BatchSize\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"MaxConcurrency\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n }\n } @else {\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"SkipUnchanged\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WatermarkStrategy\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BatchSize\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"MaxConcurrency\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n }\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n\n <!-- Record Process Watermarks Section -->\n <mj-collapsible-panel\n SectionKey=\"mJRecordProcessWatermarks\"\n SectionName=\"Record Process Watermarks\"\n Icon=\"fa fa-water\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJRecordProcessWatermarks')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Record Process Watermarks','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Record Process Watermarks','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJRecordProcessWatermarks')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJRecordProcessWatermarks', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ML Model Scoring Bindings Section -->\n <mj-collapsible-panel\n SectionKey=\"mJMLModelScoringBindings\"\n SectionName=\"ML Model Scoring Bindings\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJMLModelScoringBindings')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: ML Model Scoring Bindings','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: ML Model Scoring Bindings','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJMLModelScoringBindings')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJMLModelScoringBindings', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Feature Values Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFeatureValues\"\n SectionName=\"Feature Values\"\n Icon=\"fa fa-history\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJFeatureValues')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Feature Values','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Feature Values','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJFeatureValues')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJFeatureValues', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Feature Value Caches Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFeatureValueCaches\"\n SectionName=\"Feature Value Caches\"\n Icon=\"fa fa-database\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJFeatureValueCaches')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Feature Value Caches','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Feature Value Caches','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJFeatureValueCaches')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJFeatureValueCaches', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import { MJRubricEvaluationEntity } from '@memberjunction/core-entities';
2
+ import { BaseFormPanel, BaseFormPolicy, type FormChromeContext, type FormChromeSpec } from '@memberjunction/ng-base-forms';
3
+ import { type RubricFormAnswer } from '@memberjunction/ng-rubrics';
4
+ import type { RubricScoreResult, RubricVersionSnapshot } from '@memberjunction/rubrics-base';
5
+ import { MJRubricEvaluationFormComponent } from '../../generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component';
6
+ import * as i0 from "@angular/core";
7
+ /** Cohort figures stay hidden until the viewer's own evaluation leaves Draft. */
8
+ export declare const HIDDEN_DRAFT_EVALUATION_FIELDS: readonly ["CohortEvaluationCount", "CohortScoredCount", "CohortPassedCount", "CohortMeanScore", "CohortMinScore", "CohortMaxScore", "CohortScoreStdDev", "CohortHumanCount", "CohortHumanMeanScore", "CohortAICount", "CohortAIMeanScore", "DeviationFromCohortMean"];
9
+ /** Evaluation form. Loads the stored result and the cohort, and shows the read-only widgets. */
10
+ export declare class MJRubricEvaluationFormComponentExtended extends MJRubricEvaluationFormComponent {
11
+ record: MJRubricEvaluationEntity;
12
+ get formContext(): import("@memberjunction/ng-base-forms").FormContext;
13
+ Loading: boolean;
14
+ Result: RubricScoreResult | null;
15
+ Version: RubricVersionSnapshot | null;
16
+ Answers: RubricFormAnswer[];
17
+ ngOnInit(): Promise<void>;
18
+ LoadResult(): Promise<void>;
19
+ private rows;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<MJRubricEvaluationFormComponentExtended, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<MJRubricEvaluationFormComponentExtended, "mj-rubric-evaluation-form", never, {}, {}, never, never, false, never>;
22
+ }
23
+ /** The evaluation record uses the left-nav rail. Result and comparison are their own items. */
24
+ export declare class RubricEvaluationFormPolicy extends BaseFormPolicy {
25
+ DecorateChrome(spec: FormChromeSpec, _ctx: FormChromeContext): FormChromeSpec;
26
+ }
27
+ export declare class RubricEvaluationResultPanel extends BaseFormPanel<MJRubricEvaluationEntity> {
28
+ get Form(): MJRubricEvaluationFormComponentExtended;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<RubricEvaluationResultPanel, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<RubricEvaluationResultPanel, "mj-rubric-eval-result-panel", never, {}, {}, never, never, true, never>;
31
+ }
32
+ export declare class RubricEvaluationComparePanel extends BaseFormPanel<MJRubricEvaluationEntity> {
33
+ get Form(): MJRubricEvaluationFormComponentExtended;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<RubricEvaluationComparePanel, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<RubricEvaluationComparePanel, "mj-rubric-eval-compare-panel", never, {}, {}, never, never, true, never>;
36
+ }
37
+ //# sourceMappingURL=evaluation-form.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Rubrics/evaluation-form.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAqB,aAAa,EAAE,cAAc,EAAmB,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/J,OAAO,EAAkG,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnK,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,+BAA+B,EAAE,MAAM,+EAA+E,CAAC;;AAEhI,iFAAiF;AACjF,eAAO,MAAM,8BAA8B,uQAajC,CAAC;AAEX,gGAAgG;AAChG,qBAMa,uCAAwC,SAAQ,+BAA+B;IACxE,MAAM,EAAG,wBAAwB,CAAC;IAElD,IAAoB,WAAW,wDAI9B;IACM,OAAO,UAAQ;IACf,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IACxC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAQ;IAC7C,OAAO,EAAE,gBAAgB,EAAE,CAAM;IAElB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA2D1B,IAAI;yCA7ET,uCAAuC;2CAAvC,uCAAuC;CAkFnD;AAED,+FAA+F;AAC/F,qBACa,0BAA2B,SAAQ,cAAc;IAC1C,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,cAAc;CAGhG;AAMD,qBAyBa,2BAA4B,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACpF,IAAW,IAAI,IAAI,uCAAuC,CAAiC;yCADlF,2BAA2B;2CAA3B,2BAA2B;CAEvC;AAED,qBAwBa,4BAA6B,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACrF,IAAW,IAAI,IAAI,uCAAuC,CAAiC;yCADlF,4BAA4B;2CAA5B,4BAA4B;CAExC"}