typekro 0.2.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/README.md +4 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/core/composition/imperative.d.ts.map +1 -1
  4. package/dist/core/composition/imperative.js +15 -2
  5. package/dist/core/composition/imperative.js.map +1 -1
  6. package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -1
  7. package/dist/core/composition/typekro-runtime/typekro-runtime.js +24 -25
  8. package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -1
  9. package/dist/core/dependencies/type-guards.d.ts.map +1 -1
  10. package/dist/core/dependencies/type-guards.js +7 -2
  11. package/dist/core/dependencies/type-guards.js.map +1 -1
  12. package/dist/core/deployment/engine.d.ts +13 -1
  13. package/dist/core/deployment/engine.d.ts.map +1 -1
  14. package/dist/core/deployment/engine.js +48 -3
  15. package/dist/core/deployment/engine.js.map +1 -1
  16. package/dist/core/errors.d.ts +85 -0
  17. package/dist/core/errors.d.ts.map +1 -1
  18. package/dist/core/errors.js +135 -0
  19. package/dist/core/errors.js.map +1 -1
  20. package/dist/core/evaluation/cel-optimizer.d.ts.map +1 -1
  21. package/dist/core/evaluation/cel-optimizer.js +7 -13
  22. package/dist/core/evaluation/cel-optimizer.js.map +1 -1
  23. package/dist/core/expressions/analyzer.d.ts +584 -0
  24. package/dist/core/expressions/analyzer.d.ts.map +1 -0
  25. package/dist/core/expressions/analyzer.js +2956 -0
  26. package/dist/core/expressions/analyzer.js.map +1 -0
  27. package/dist/core/expressions/cache.d.ts +136 -0
  28. package/dist/core/expressions/cache.d.ts.map +1 -0
  29. package/dist/core/expressions/cache.js +347 -0
  30. package/dist/core/expressions/cache.js.map +1 -0
  31. package/dist/core/expressions/cel-conversion-engine.d.ts +126 -0
  32. package/dist/core/expressions/cel-conversion-engine.d.ts.map +1 -0
  33. package/dist/core/expressions/cel-conversion-engine.js +293 -0
  34. package/dist/core/expressions/cel-conversion-engine.js.map +1 -0
  35. package/dist/core/expressions/compile-time-validation.d.ts +270 -0
  36. package/dist/core/expressions/compile-time-validation.d.ts.map +1 -0
  37. package/dist/core/expressions/compile-time-validation.js +506 -0
  38. package/dist/core/expressions/compile-time-validation.js.map +1 -0
  39. package/dist/core/expressions/composition-integration.d.ts +315 -0
  40. package/dist/core/expressions/composition-integration.d.ts.map +1 -0
  41. package/dist/core/expressions/composition-integration.js +936 -0
  42. package/dist/core/expressions/composition-integration.js.map +1 -0
  43. package/dist/core/expressions/conditional-expression-processor.d.ts +154 -0
  44. package/dist/core/expressions/conditional-expression-processor.d.ts.map +1 -0
  45. package/dist/core/expressions/conditional-expression-processor.js +479 -0
  46. package/dist/core/expressions/conditional-expression-processor.js.map +1 -0
  47. package/dist/core/expressions/conditional-integration.d.ts +133 -0
  48. package/dist/core/expressions/conditional-integration.d.ts.map +1 -0
  49. package/dist/core/expressions/conditional-integration.js +293 -0
  50. package/dist/core/expressions/conditional-integration.js.map +1 -0
  51. package/dist/core/expressions/conditional-validation.d.ts +181 -0
  52. package/dist/core/expressions/conditional-validation.d.ts.map +1 -0
  53. package/dist/core/expressions/conditional-validation.js +460 -0
  54. package/dist/core/expressions/conditional-validation.js.map +1 -0
  55. package/dist/core/expressions/context-aware-generator.d.ts +127 -0
  56. package/dist/core/expressions/context-aware-generator.d.ts.map +1 -0
  57. package/dist/core/expressions/context-aware-generator.js +500 -0
  58. package/dist/core/expressions/context-aware-generator.js.map +1 -0
  59. package/dist/core/expressions/context-detector.d.ts +148 -0
  60. package/dist/core/expressions/context-detector.d.ts.map +1 -0
  61. package/dist/core/expressions/context-detector.js +546 -0
  62. package/dist/core/expressions/context-detector.js.map +1 -0
  63. package/dist/core/expressions/context-switcher.d.ts +185 -0
  64. package/dist/core/expressions/context-switcher.d.ts.map +1 -0
  65. package/dist/core/expressions/context-switcher.js +515 -0
  66. package/dist/core/expressions/context-switcher.js.map +1 -0
  67. package/dist/core/expressions/context-validator.d.ts +176 -0
  68. package/dist/core/expressions/context-validator.d.ts.map +1 -0
  69. package/dist/core/expressions/context-validator.js +452 -0
  70. package/dist/core/expressions/context-validator.js.map +1 -0
  71. package/dist/core/expressions/custom-context-manager.d.ts +194 -0
  72. package/dist/core/expressions/custom-context-manager.d.ts.map +1 -0
  73. package/dist/core/expressions/custom-context-manager.js +390 -0
  74. package/dist/core/expressions/custom-context-manager.js.map +1 -0
  75. package/dist/core/expressions/expression-proxy.d.ts +80 -0
  76. package/dist/core/expressions/expression-proxy.d.ts.map +1 -0
  77. package/dist/core/expressions/expression-proxy.js +227 -0
  78. package/dist/core/expressions/expression-proxy.js.map +1 -0
  79. package/dist/core/expressions/factory-integration.d.ts +132 -0
  80. package/dist/core/expressions/factory-integration.d.ts.map +1 -0
  81. package/dist/core/expressions/factory-integration.js +327 -0
  82. package/dist/core/expressions/factory-integration.js.map +1 -0
  83. package/dist/core/expressions/factory-pattern-handler.d.ts +88 -0
  84. package/dist/core/expressions/factory-pattern-handler.d.ts.map +1 -0
  85. package/dist/core/expressions/factory-pattern-handler.js +336 -0
  86. package/dist/core/expressions/factory-pattern-handler.js.map +1 -0
  87. package/dist/core/expressions/field-hydration-processor.d.ts +188 -0
  88. package/dist/core/expressions/field-hydration-processor.d.ts.map +1 -0
  89. package/dist/core/expressions/field-hydration-processor.js +562 -0
  90. package/dist/core/expressions/field-hydration-processor.js.map +1 -0
  91. package/dist/core/expressions/imperative-analyzer.d.ts +21 -0
  92. package/dist/core/expressions/imperative-analyzer.d.ts.map +1 -0
  93. package/dist/core/expressions/imperative-analyzer.js +457 -0
  94. package/dist/core/expressions/imperative-analyzer.js.map +1 -0
  95. package/dist/core/expressions/index.d.ts +54 -0
  96. package/dist/core/expressions/index.d.ts.map +1 -0
  97. package/dist/core/expressions/index.js +50 -0
  98. package/dist/core/expressions/index.js.map +1 -0
  99. package/dist/core/expressions/lazy-analysis.d.ts +1128 -0
  100. package/dist/core/expressions/lazy-analysis.d.ts.map +1 -0
  101. package/dist/core/expressions/lazy-analysis.js +2443 -0
  102. package/dist/core/expressions/lazy-analysis.js.map +1 -0
  103. package/dist/core/expressions/magic-assignable-analyzer.d.ts +123 -0
  104. package/dist/core/expressions/magic-assignable-analyzer.d.ts.map +1 -0
  105. package/dist/core/expressions/magic-assignable-analyzer.js +352 -0
  106. package/dist/core/expressions/magic-assignable-analyzer.js.map +1 -0
  107. package/dist/core/expressions/magic-proxy-analyzer.d.ts +206 -0
  108. package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +1 -0
  109. package/dist/core/expressions/magic-proxy-analyzer.js +639 -0
  110. package/dist/core/expressions/magic-proxy-analyzer.js.map +1 -0
  111. package/dist/core/expressions/magic-proxy-detector.d.ts +154 -0
  112. package/dist/core/expressions/magic-proxy-detector.d.ts.map +1 -0
  113. package/dist/core/expressions/magic-proxy-detector.js +242 -0
  114. package/dist/core/expressions/magic-proxy-detector.js.map +1 -0
  115. package/dist/core/expressions/migration-helpers.d.ts +133 -0
  116. package/dist/core/expressions/migration-helpers.d.ts.map +1 -0
  117. package/dist/core/expressions/migration-helpers.js +443 -0
  118. package/dist/core/expressions/migration-helpers.js.map +1 -0
  119. package/dist/core/expressions/optionality-handler.d.ts +503 -0
  120. package/dist/core/expressions/optionality-handler.d.ts.map +1 -0
  121. package/dist/core/expressions/optionality-handler.js +1306 -0
  122. package/dist/core/expressions/optionality-handler.js.map +1 -0
  123. package/dist/core/expressions/readiness-integration.d.ts +119 -0
  124. package/dist/core/expressions/readiness-integration.d.ts.map +1 -0
  125. package/dist/core/expressions/readiness-integration.js +386 -0
  126. package/dist/core/expressions/readiness-integration.js.map +1 -0
  127. package/dist/core/expressions/resource-analyzer.d.ts +486 -0
  128. package/dist/core/expressions/resource-analyzer.d.ts.map +1 -0
  129. package/dist/core/expressions/resource-analyzer.js +1086 -0
  130. package/dist/core/expressions/resource-analyzer.js.map +1 -0
  131. package/dist/core/expressions/resource-validation.d.ts +187 -0
  132. package/dist/core/expressions/resource-validation.d.ts.map +1 -0
  133. package/dist/core/expressions/resource-validation.js +552 -0
  134. package/dist/core/expressions/resource-validation.js.map +1 -0
  135. package/dist/core/expressions/runtime-error-mapper.d.ts +138 -0
  136. package/dist/core/expressions/runtime-error-mapper.d.ts.map +1 -0
  137. package/dist/core/expressions/runtime-error-mapper.js +412 -0
  138. package/dist/core/expressions/runtime-error-mapper.js.map +1 -0
  139. package/dist/core/expressions/source-map.d.ts +168 -0
  140. package/dist/core/expressions/source-map.d.ts.map +1 -0
  141. package/dist/core/expressions/source-map.js +350 -0
  142. package/dist/core/expressions/source-map.js.map +1 -0
  143. package/dist/core/expressions/status-builder-analyzer.d.ts +353 -0
  144. package/dist/core/expressions/status-builder-analyzer.d.ts.map +1 -0
  145. package/dist/core/expressions/status-builder-analyzer.js +1311 -0
  146. package/dist/core/expressions/status-builder-analyzer.js.map +1 -0
  147. package/dist/core/expressions/type-inference.d.ts +184 -0
  148. package/dist/core/expressions/type-inference.d.ts.map +1 -0
  149. package/dist/core/expressions/type-inference.js +838 -0
  150. package/dist/core/expressions/type-inference.js.map +1 -0
  151. package/dist/core/expressions/type-safety.d.ts +203 -0
  152. package/dist/core/expressions/type-safety.d.ts.map +1 -0
  153. package/dist/core/expressions/type-safety.js +442 -0
  154. package/dist/core/expressions/type-safety.js.map +1 -0
  155. package/dist/core/expressions/types.d.ts +282 -0
  156. package/dist/core/expressions/types.d.ts.map +1 -0
  157. package/dist/core/expressions/types.js +8 -0
  158. package/dist/core/expressions/types.js.map +1 -0
  159. package/dist/core/kubernetes/client-provider.js +2 -2
  160. package/dist/core/kubernetes/client-provider.js.map +1 -1
  161. package/dist/core/references/cel.d.ts +13 -1
  162. package/dist/core/references/cel.d.ts.map +1 -1
  163. package/dist/core/references/cel.js +50 -0
  164. package/dist/core/references/cel.js.map +1 -1
  165. package/dist/core/references/schema-proxy.d.ts.map +1 -1
  166. package/dist/core/references/schema-proxy.js +13 -8
  167. package/dist/core/references/schema-proxy.js.map +1 -1
  168. package/dist/core/serialization/core.d.ts.map +1 -1
  169. package/dist/core/serialization/core.js +573 -9
  170. package/dist/core/serialization/core.js.map +1 -1
  171. package/dist/core/types/deployment.d.ts +7 -0
  172. package/dist/core/types/deployment.d.ts.map +1 -1
  173. package/dist/core/types/deployment.js +7 -0
  174. package/dist/core/types/deployment.js.map +1 -1
  175. package/dist/core/types/index.d.ts +1 -0
  176. package/dist/core/types/index.d.ts.map +1 -1
  177. package/dist/core/types/index.js.map +1 -1
  178. package/dist/core/validation/cel-validator.d.ts.map +1 -1
  179. package/dist/core/validation/cel-validator.js +4 -8
  180. package/dist/core/validation/cel-validator.js.map +1 -1
  181. package/dist/core.d.ts +1 -1
  182. package/dist/core.d.ts.map +1 -1
  183. package/dist/core.js +1 -1
  184. package/dist/core.js.map +1 -1
  185. package/dist/factories/helm/helm-release.d.ts.map +1 -1
  186. package/dist/factories/helm/helm-release.js +0 -5
  187. package/dist/factories/helm/helm-release.js.map +1 -1
  188. package/dist/factories/helm/types.d.ts +1 -1
  189. package/dist/factories/helm/types.d.ts.map +1 -1
  190. package/dist/factories/index.js +1 -0
  191. package/dist/factories/index.js.map +1 -1
  192. package/dist/factories/shared.d.ts.map +1 -1
  193. package/dist/factories/shared.js +21 -1
  194. package/dist/factories/shared.js.map +1 -1
  195. package/dist/factories/simple/index.d.ts +2 -2
  196. package/dist/factories/simple/index.d.ts.map +1 -1
  197. package/dist/factories/simple/workloads/deployment.d.ts +3 -3
  198. package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
  199. package/dist/factories/simple/workloads/deployment.js +37 -11
  200. package/dist/factories/simple/workloads/deployment.js.map +1 -1
  201. package/dist/index.d.ts +1 -1
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +1 -1
  204. package/dist/index.js.map +1 -1
  205. package/dist/utils/index.d.ts +1 -1
  206. package/dist/utils/index.d.ts.map +1 -1
  207. package/dist/utils/index.js +1 -1
  208. package/dist/utils/index.js.map +1 -1
  209. package/dist/utils/type-guards.d.ts +6 -0
  210. package/dist/utils/type-guards.d.ts.map +1 -1
  211. package/dist/utils/type-guards.js +25 -2
  212. package/dist/utils/type-guards.js.map +1 -1
  213. package/package.json +6 -1
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Context-Appropriate Expression Validation with Magic Proxy Integration
3
+ *
4
+ * This module provides validation for JavaScript expressions containing KubernetesRef objects
5
+ * to ensure they are appropriate for their usage context and work correctly with the magic proxy system.
6
+ */
7
+ import type { KubernetesRef } from '../types/common.js';
8
+ import type { Enhanced } from '../types/kubernetes.js';
9
+ import type { SchemaProxy } from '../types/serialization.js';
10
+ import type { ExpressionContext } from './context-detector.js';
11
+ /**
12
+ * Validation severity levels
13
+ */
14
+ export type ValidationSeverity = 'error' | 'warning' | 'info';
15
+ /**
16
+ * Context validation rule
17
+ */
18
+ export interface ContextValidationRule {
19
+ /** Rule identifier */
20
+ id: string;
21
+ /** Rule name */
22
+ name: string;
23
+ /** Rule description */
24
+ description: string;
25
+ /** Contexts where this rule applies */
26
+ applicableContexts: ExpressionContext[];
27
+ /** Severity of violations */
28
+ severity: ValidationSeverity;
29
+ /** Validation function */
30
+ validate: (expression: any, kubernetesRefs: KubernetesRef<any>[], context: ExpressionContext, config: ContextValidationConfig) => ContextValidationRuleResult;
31
+ }
32
+ /**
33
+ * Validation result for a single rule
34
+ */
35
+ export interface ContextValidationRuleResult {
36
+ /** Whether the validation passed */
37
+ valid: boolean;
38
+ /** Validation message */
39
+ message: string;
40
+ /** Suggested fixes */
41
+ suggestions?: string[];
42
+ /** Additional metadata */
43
+ metadata?: Record<string, any>;
44
+ }
45
+ /**
46
+ * Context validation configuration
47
+ */
48
+ export interface ContextValidationConfig {
49
+ /** Available resources for validation */
50
+ availableResources?: Record<string, Enhanced<any, any>>;
51
+ /** Schema proxy for schema field validation */
52
+ schemaProxy?: SchemaProxy<any, any>;
53
+ /** Factory type being used */
54
+ factoryType?: 'direct' | 'kro';
55
+ /** Whether to perform strict validation */
56
+ strictMode?: boolean;
57
+ /** Whether to validate magic proxy integration */
58
+ validateMagicProxy?: boolean;
59
+ /** Custom validation rules */
60
+ customRules?: ContextValidationRule[];
61
+ /** Rules to skip */
62
+ skipRules?: string[];
63
+ }
64
+ /**
65
+ * Complete validation report
66
+ */
67
+ export interface ContextValidationReport {
68
+ /** Overall validation status */
69
+ valid: boolean;
70
+ /** Expression that was validated */
71
+ expression: any;
72
+ /** Context that was validated */
73
+ context: ExpressionContext;
74
+ /** KubernetesRef objects found */
75
+ kubernetesRefs: KubernetesRef<any>[];
76
+ /** Validation results by rule */
77
+ ruleResults: Map<string, ContextValidationRuleResult>;
78
+ /** Errors found */
79
+ errors: ValidationIssue[];
80
+ /** Warnings found */
81
+ warnings: ValidationIssue[];
82
+ /** Info messages */
83
+ info: ValidationIssue[];
84
+ /** Overall confidence score (0-1) */
85
+ confidence: number;
86
+ /** Suggested improvements */
87
+ suggestions: string[];
88
+ }
89
+ /**
90
+ * Validation issue
91
+ */
92
+ export interface ValidationIssue {
93
+ /** Rule that generated this issue */
94
+ ruleId: string;
95
+ /** Issue severity */
96
+ severity: ValidationSeverity;
97
+ /** Issue message */
98
+ message: string;
99
+ /** Suggested fixes */
100
+ suggestions: string[];
101
+ /** Location information if available */
102
+ location?: {
103
+ line?: number;
104
+ column?: number;
105
+ length?: number;
106
+ };
107
+ }
108
+ /**
109
+ * Context-aware expression validator
110
+ */
111
+ export declare class ContextExpressionValidator {
112
+ private rules;
113
+ constructor();
114
+ /**
115
+ * Validate an expression for context appropriateness
116
+ */
117
+ validateExpression(expression: any, context: ExpressionContext, config?: ContextValidationConfig): ContextValidationReport;
118
+ /**
119
+ * Add a custom validation rule
120
+ */
121
+ addRule(rule: ContextValidationRule): void;
122
+ /**
123
+ * Remove a validation rule
124
+ */
125
+ removeRule(ruleId: string): void;
126
+ /**
127
+ * Get all available rules
128
+ */
129
+ getRules(): ContextValidationRule[];
130
+ /**
131
+ * Initialize default validation rules
132
+ */
133
+ private initializeDefaultRules;
134
+ /**
135
+ * Extract KubernetesRef objects from expression
136
+ */
137
+ private extractKubernetesRefs;
138
+ /**
139
+ * Recursively extract KubernetesRef objects
140
+ */
141
+ private recursivelyExtractRefs;
142
+ /**
143
+ * Get applicable rules for a context
144
+ */
145
+ private getApplicableRules;
146
+ /**
147
+ * Calculate confidence score based on validation results
148
+ */
149
+ private calculateConfidence;
150
+ }
151
+ /**
152
+ * Validation utilities
153
+ */
154
+ export declare class ContextValidationUtils {
155
+ /**
156
+ * Create a validation report summary
157
+ */
158
+ static createSummary(report: ContextValidationReport): string;
159
+ /**
160
+ * Format validation issues for display
161
+ */
162
+ static formatIssues(issues: ValidationIssue[]): string[];
163
+ /**
164
+ * Check if a validation report indicates the expression is safe to use
165
+ */
166
+ static isSafeToUse(report: ContextValidationReport): boolean;
167
+ /**
168
+ * Get the most critical issues from a validation report
169
+ */
170
+ static getCriticalIssues(report: ContextValidationReport): ValidationIssue[];
171
+ }
172
+ /**
173
+ * Default context validator instance
174
+ */
175
+ export declare const contextValidator: ContextExpressionValidator;
176
+ //# sourceMappingURL=context-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-validator.d.ts","sourceRoot":"","sources":["../../../src/core/expressions/context-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,452 @@
1
+ /**
2
+ * Context-Appropriate Expression Validation with Magic Proxy Integration
3
+ *
4
+ * This module provides validation for JavaScript expressions containing KubernetesRef objects
5
+ * to ensure they are appropriate for their usage context and work correctly with the magic proxy system.
6
+ */
7
+ import { isKubernetesRef, } from '../../utils/type-guards.js';
8
+ /**
9
+ * Context-aware expression validator
10
+ */
11
+ export class ContextExpressionValidator {
12
+ rules = new Map();
13
+ constructor() {
14
+ this.initializeDefaultRules();
15
+ }
16
+ /**
17
+ * Validate an expression for context appropriateness
18
+ */
19
+ validateExpression(expression, context, config = {}) {
20
+ const kubernetesRefs = this.extractKubernetesRefs(expression);
21
+ const ruleResults = new Map();
22
+ const errors = [];
23
+ const warnings = [];
24
+ const info = [];
25
+ const suggestions = [];
26
+ // Get applicable rules for this context
27
+ const applicableRules = this.getApplicableRules(context, config);
28
+ // Run each applicable rule
29
+ for (const rule of applicableRules) {
30
+ if (config.skipRules?.includes(rule.id)) {
31
+ continue;
32
+ }
33
+ try {
34
+ const result = rule.validate(expression, kubernetesRefs, context, config);
35
+ ruleResults.set(rule.id, result);
36
+ if (!result.valid) {
37
+ const issue = {
38
+ ruleId: rule.id,
39
+ severity: rule.severity,
40
+ message: result.message,
41
+ suggestions: result.suggestions || []
42
+ };
43
+ switch (rule.severity) {
44
+ case 'error':
45
+ errors.push(issue);
46
+ break;
47
+ case 'warning':
48
+ warnings.push(issue);
49
+ break;
50
+ case 'info':
51
+ info.push(issue);
52
+ break;
53
+ }
54
+ if (result.suggestions) {
55
+ suggestions.push(...result.suggestions);
56
+ }
57
+ }
58
+ }
59
+ catch (error) {
60
+ // Rule execution failed
61
+ const issue = {
62
+ ruleId: rule.id,
63
+ severity: 'error',
64
+ message: `Rule execution failed: ${error instanceof Error ? error.message : String(error)}`,
65
+ suggestions: [`Check the ${rule.name} rule implementation`]
66
+ };
67
+ errors.push(issue);
68
+ }
69
+ }
70
+ // Calculate overall validation status and confidence
71
+ const valid = errors.length === 0;
72
+ const confidence = this.calculateConfidence(ruleResults, errors, warnings);
73
+ return {
74
+ valid,
75
+ expression,
76
+ context,
77
+ kubernetesRefs,
78
+ ruleResults,
79
+ errors,
80
+ warnings,
81
+ info,
82
+ confidence,
83
+ suggestions: [...new Set(suggestions)] // Remove duplicates
84
+ };
85
+ }
86
+ /**
87
+ * Add a custom validation rule
88
+ */
89
+ addRule(rule) {
90
+ this.rules.set(rule.id, rule);
91
+ }
92
+ /**
93
+ * Remove a validation rule
94
+ */
95
+ removeRule(ruleId) {
96
+ this.rules.delete(ruleId);
97
+ }
98
+ /**
99
+ * Get all available rules
100
+ */
101
+ getRules() {
102
+ return Array.from(this.rules.values());
103
+ }
104
+ /**
105
+ * Initialize default validation rules
106
+ */
107
+ initializeDefaultRules() {
108
+ // Rule: Status builder should reference status fields
109
+ this.addRule({
110
+ id: 'status-builder-references',
111
+ name: 'Status Builder References',
112
+ description: 'Status builders should primarily reference status fields from resources',
113
+ applicableContexts: ['status-builder'],
114
+ severity: 'warning',
115
+ validate: (_expression, kubernetesRefs, _context, _config) => {
116
+ const statusRefs = kubernetesRefs.filter(ref => ref.fieldPath.includes('status') || ref.resourceId === '__schema__');
117
+ if (statusRefs.length === 0 && kubernetesRefs.length > 0) {
118
+ return {
119
+ valid: false,
120
+ message: 'Status builders should typically reference status fields or schema',
121
+ suggestions: [
122
+ 'Consider referencing resource.status.* fields',
123
+ 'Use schema.* references for input values'
124
+ ]
125
+ };
126
+ }
127
+ return { valid: true, message: 'Status references are appropriate' };
128
+ }
129
+ });
130
+ // Rule: Resource builder should reference spec fields or schema
131
+ this.addRule({
132
+ id: 'resource-builder-references',
133
+ name: 'Resource Builder References',
134
+ description: 'Resource builders should reference spec fields or schema values',
135
+ applicableContexts: ['resource-builder'],
136
+ severity: 'warning',
137
+ validate: (_expression, kubernetesRefs, _context, _config) => {
138
+ const inappropriateRefs = kubernetesRefs.filter(ref => ref.resourceId !== '__schema__' &&
139
+ !ref.fieldPath.includes('spec') &&
140
+ !ref.fieldPath.includes('metadata'));
141
+ if (inappropriateRefs.length > 0) {
142
+ return {
143
+ valid: false,
144
+ message: `Resource builders should avoid referencing status fields: ${inappropriateRefs.map(r => `${r.resourceId}.${r.fieldPath}`).join(', ')}`,
145
+ suggestions: [
146
+ 'Use schema.* references for configuration values',
147
+ 'Reference other resources\' spec fields if needed',
148
+ 'Consider if this should be in a status builder instead'
149
+ ]
150
+ };
151
+ }
152
+ return { valid: true, message: 'Resource references are appropriate' };
153
+ }
154
+ });
155
+ // Rule: Conditional expressions should be boolean-evaluable
156
+ this.addRule({
157
+ id: 'conditional-boolean-result',
158
+ name: 'Conditional Boolean Result',
159
+ description: 'Conditional expressions should evaluate to boolean values',
160
+ applicableContexts: ['conditional', 'readiness'],
161
+ severity: 'error',
162
+ validate: (expression, kubernetesRefs, _context, _config) => {
163
+ // Check if the expression structure suggests boolean evaluation
164
+ const expressionString = String(expression);
165
+ const hasBooleanOperators = /[><=!]=?|&&|\|\||!/.test(expressionString);
166
+ const hasBooleanKeywords = /ready|available|enabled|disabled|true|false/i.test(expressionString);
167
+ const referencesReadyFields = kubernetesRefs.some(ref => ref.fieldPath.includes('ready') ||
168
+ ref.fieldPath.includes('available') ||
169
+ ref.fieldPath.includes('conditions'));
170
+ if (!hasBooleanOperators && !hasBooleanKeywords && !referencesReadyFields) {
171
+ return {
172
+ valid: false,
173
+ message: 'Conditional expressions should evaluate to boolean values',
174
+ suggestions: [
175
+ 'Add comparison operators (>, <, ==, !=)',
176
+ 'Reference boolean fields like .ready or .available',
177
+ 'Use logical operators (&&, ||, !)',
178
+ 'Check conditions array with .find() or .some()'
179
+ ]
180
+ };
181
+ }
182
+ return { valid: true, message: 'Expression appears to evaluate to boolean' };
183
+ }
184
+ });
185
+ // Rule: Resource references should exist
186
+ this.addRule({
187
+ id: 'resource-existence',
188
+ name: 'Resource Existence',
189
+ description: 'Referenced resources should exist in the available resources',
190
+ applicableContexts: ['status-builder', 'resource-builder', 'conditional', 'readiness'],
191
+ severity: 'error',
192
+ validate: (_expression, kubernetesRefs, _context, config) => {
193
+ if (!config.availableResources) {
194
+ return { valid: true, message: 'No resource validation available' };
195
+ }
196
+ const missingResources = kubernetesRefs
197
+ .filter(ref => ref.resourceId !== '__schema__')
198
+ .filter(ref => !config.availableResources?.[ref.resourceId]);
199
+ if (missingResources.length > 0) {
200
+ const missing = missingResources.map(r => r.resourceId);
201
+ const available = Object.keys(config.availableResources);
202
+ return {
203
+ valid: false,
204
+ message: `Referenced resources do not exist: ${missing.join(', ')}`,
205
+ suggestions: [
206
+ `Available resources: ${available.join(', ')}`,
207
+ 'Check resource names for typos',
208
+ 'Ensure resources are defined before being referenced'
209
+ ]
210
+ };
211
+ }
212
+ return { valid: true, message: 'All referenced resources exist' };
213
+ }
214
+ });
215
+ // Rule: Magic proxy integration validation
216
+ this.addRule({
217
+ id: 'magic-proxy-integration',
218
+ name: 'Magic Proxy Integration',
219
+ description: 'Expressions should work correctly with the magic proxy system',
220
+ applicableContexts: ['status-builder', 'resource-builder', 'conditional', 'readiness', 'template-literal'],
221
+ severity: 'warning',
222
+ validate: (expression, _kubernetesRefs, _context, config) => {
223
+ if (!config.validateMagicProxy) {
224
+ return { valid: true, message: 'Magic proxy validation disabled' };
225
+ }
226
+ // Check for potential magic proxy issues
227
+ const issues = [];
228
+ // Check for direct property access that might not work with proxies
229
+ const expressionString = String(expression);
230
+ if (expressionString.includes('.hasOwnProperty') ||
231
+ expressionString.includes('Object.keys') ||
232
+ expressionString.includes('Object.values')) {
233
+ issues.push('Direct object introspection may not work with magic proxies');
234
+ }
235
+ // Check for async operations that might not work
236
+ if (expressionString.includes('await') || expressionString.includes('Promise')) {
237
+ issues.push('Async operations are not supported in expression contexts');
238
+ }
239
+ // Check for function calls that might not be available
240
+ if (expressionString.includes('console.') || expressionString.includes('window.')) {
241
+ issues.push('Global object access is not available in expression contexts');
242
+ }
243
+ // Check for other problematic patterns
244
+ if (expressionString.includes('document.') || expressionString.includes('localStorage.')) {
245
+ issues.push('Browser APIs are not available in expression contexts');
246
+ }
247
+ if (issues.length > 0) {
248
+ return {
249
+ valid: false,
250
+ message: `Magic proxy integration issues: ${issues.join(', ')}`,
251
+ suggestions: [
252
+ 'Use only property access and basic operators',
253
+ 'Avoid object introspection methods',
254
+ 'Use synchronous operations only',
255
+ 'Stick to KubernetesRef field access patterns'
256
+ ]
257
+ };
258
+ }
259
+ return { valid: true, message: 'Expression is compatible with magic proxy system' };
260
+ }
261
+ });
262
+ // Rule: Factory type compatibility
263
+ this.addRule({
264
+ id: 'factory-type-compatibility',
265
+ name: 'Factory Type Compatibility',
266
+ description: 'Expressions should be compatible with the target factory type',
267
+ applicableContexts: ['status-builder', 'resource-builder', 'conditional', 'readiness'],
268
+ severity: 'warning',
269
+ validate: (expression, kubernetesRefs, _context, config) => {
270
+ if (!config.factoryType) {
271
+ return { valid: true, message: 'No factory type specified' };
272
+ }
273
+ const expressionString = String(expression);
274
+ const issues = [];
275
+ if (config.factoryType === 'kro') {
276
+ // Kro factory limitations
277
+ if (expressionString.includes('Math.') || expressionString.includes('Date.')) {
278
+ issues.push('Complex JavaScript APIs may not be available in Kro CEL environment');
279
+ }
280
+ if (expressionString.includes('JSON.')) {
281
+ issues.push('JSON operations should use CEL equivalents in Kro environment');
282
+ }
283
+ }
284
+ else if (config.factoryType === 'direct') {
285
+ // Direct factory considerations
286
+ if (kubernetesRefs.some(ref => ref.fieldPath.includes('status'))) {
287
+ issues.push('Direct factory may not have access to runtime status fields');
288
+ }
289
+ }
290
+ if (issues.length > 0) {
291
+ return {
292
+ valid: false,
293
+ message: `Factory type compatibility issues: ${issues.join(', ')}`,
294
+ suggestions: [
295
+ config.factoryType === 'kro'
296
+ ? 'Use CEL-compatible operations only'
297
+ : 'Consider using Kro factory for status field access',
298
+ 'Check the factory type documentation for supported operations'
299
+ ]
300
+ };
301
+ }
302
+ return { valid: true, message: `Expression is compatible with ${config.factoryType} factory` };
303
+ }
304
+ });
305
+ // Rule: Template literal structure validation
306
+ this.addRule({
307
+ id: 'template-literal-structure',
308
+ name: 'Template Literal Structure',
309
+ description: 'Template literals should have proper structure for CEL conversion',
310
+ applicableContexts: ['template-literal'],
311
+ severity: 'error',
312
+ validate: (expression, _kubernetesRefs, _context, _config) => {
313
+ const expressionString = String(expression);
314
+ // Check for template literal patterns
315
+ if (!expressionString.includes('${') || !expressionString.includes('}')) {
316
+ return {
317
+ valid: false,
318
+ message: 'Template literal context but no interpolation found',
319
+ suggestions: [
320
+ 'Use ${expression} syntax for interpolations',
321
+ 'Ensure template literal has proper structure'
322
+ ]
323
+ };
324
+ }
325
+ // Check for nested template literals (not supported)
326
+ const interpolationCount = (expressionString.match(/\$\{/g) || []).length;
327
+ const closingCount = (expressionString.match(/\}/g) || []).length;
328
+ if (interpolationCount !== closingCount) {
329
+ return {
330
+ valid: false,
331
+ message: 'Unbalanced template literal interpolations',
332
+ suggestions: [
333
+ 'Ensure each ${} interpolation is properly closed',
334
+ 'Check for nested template literals (not supported)'
335
+ ]
336
+ };
337
+ }
338
+ return { valid: true, message: 'Template literal structure is valid' };
339
+ }
340
+ });
341
+ }
342
+ /**
343
+ * Extract KubernetesRef objects from expression
344
+ */
345
+ extractKubernetesRefs(expression) {
346
+ const refs = [];
347
+ if (isKubernetesRef(expression)) {
348
+ refs.push(expression);
349
+ }
350
+ else if (typeof expression === 'object' && expression !== null) {
351
+ this.recursivelyExtractRefs(expression, refs);
352
+ }
353
+ return refs;
354
+ }
355
+ /**
356
+ * Recursively extract KubernetesRef objects
357
+ */
358
+ recursivelyExtractRefs(value, refs) {
359
+ if (isKubernetesRef(value)) {
360
+ refs.push(value);
361
+ return;
362
+ }
363
+ if (Array.isArray(value)) {
364
+ for (const item of value) {
365
+ this.recursivelyExtractRefs(item, refs);
366
+ }
367
+ }
368
+ else if (value && typeof value === 'object') {
369
+ for (const prop of Object.values(value)) {
370
+ this.recursivelyExtractRefs(prop, refs);
371
+ }
372
+ }
373
+ }
374
+ /**
375
+ * Get applicable rules for a context
376
+ */
377
+ getApplicableRules(context, config) {
378
+ const rules = Array.from(this.rules.values());
379
+ const applicableRules = rules.filter(rule => rule.applicableContexts.includes(context));
380
+ // Add custom rules if provided
381
+ if (config.customRules) {
382
+ applicableRules.push(...config.customRules.filter(rule => rule.applicableContexts.includes(context)));
383
+ }
384
+ return applicableRules;
385
+ }
386
+ /**
387
+ * Calculate confidence score based on validation results
388
+ */
389
+ calculateConfidence(ruleResults, errors, warnings) {
390
+ const totalRules = ruleResults.size;
391
+ if (totalRules === 0)
392
+ return 0.5; // No rules ran
393
+ const passedRules = Array.from(ruleResults.values()).filter(r => r.valid).length;
394
+ const baseConfidence = passedRules / totalRules;
395
+ // Reduce confidence based on errors and warnings
396
+ const errorPenalty = errors.length * 0.2;
397
+ const warningPenalty = warnings.length * 0.1;
398
+ return Math.max(0, Math.min(1, baseConfidence - errorPenalty - warningPenalty));
399
+ }
400
+ }
401
+ /**
402
+ * Validation utilities
403
+ */
404
+ export class ContextValidationUtils {
405
+ /**
406
+ * Create a validation report summary
407
+ */
408
+ static createSummary(report) {
409
+ const { valid, errors, warnings, info, confidence } = report;
410
+ let summary = `Validation ${valid ? 'PASSED' : 'FAILED'} (confidence: ${(confidence * 100).toFixed(1)}%)`;
411
+ if (errors.length > 0) {
412
+ summary += `\n Errors: ${errors.length}`;
413
+ }
414
+ if (warnings.length > 0) {
415
+ summary += `\n Warnings: ${warnings.length}`;
416
+ }
417
+ if (info.length > 0) {
418
+ summary += `\n Info: ${info.length}`;
419
+ }
420
+ return summary;
421
+ }
422
+ /**
423
+ * Format validation issues for display
424
+ */
425
+ static formatIssues(issues) {
426
+ return issues.map(issue => {
427
+ let formatted = `[${issue.severity.toUpperCase()}] ${issue.message}`;
428
+ if (issue.suggestions.length > 0) {
429
+ formatted += `\n Suggestions: ${issue.suggestions.join(', ')}`;
430
+ }
431
+ return formatted;
432
+ });
433
+ }
434
+ /**
435
+ * Check if a validation report indicates the expression is safe to use
436
+ */
437
+ static isSafeToUse(report) {
438
+ return report.valid && report.confidence > 0.7;
439
+ }
440
+ /**
441
+ * Get the most critical issues from a validation report
442
+ */
443
+ static getCriticalIssues(report) {
444
+ return [...report.errors, ...report.warnings.filter(w => w.message.includes('compatibility') ||
445
+ w.message.includes('magic proxy'))];
446
+ }
447
+ }
448
+ /**
449
+ * Default context validator instance
450
+ */
451
+ export const contextValidator = new ContextExpressionValidator();
452
+ //# sourceMappingURL=context-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-validator.js","sourceRoot":"","sources":["../../../src/core/expressions/context-validator.ts"],"names":[],"mappings":"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"}