typekro 0.43.0 → 0.44.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 (336) hide show
  1. package/dist/compositions/typekro-runtime/typekro-runtime.d.ts +3 -2
  2. package/dist/compositions/typekro-runtime/typekro-runtime.d.ts.map +1 -1
  3. package/dist/compositions/typekro-runtime/typekro-runtime.js.map +1 -1
  4. package/dist/core/kubernetes/bun-api-client.d.ts.map +1 -1
  5. package/dist/core/kubernetes/bun-api-client.js +39 -9
  6. package/dist/core/kubernetes/bun-api-client.js.map +1 -1
  7. package/dist/core/kubernetes/bun-http-library.d.ts.map +1 -1
  8. package/dist/core/kubernetes/bun-http-library.js +5 -1
  9. package/dist/core/kubernetes/bun-http-library.js.map +1 -1
  10. package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts +2 -1
  11. package/dist/factories/apisix/compositions/apisix-bootstrap.d.ts.map +1 -1
  12. package/dist/factories/apisix/compositions/apisix-bootstrap.js.map +1 -1
  13. package/dist/factories/apisix/compositions/apisix-helm-repository.d.ts +3 -7
  14. package/dist/factories/apisix/compositions/apisix-helm-repository.d.ts.map +1 -1
  15. package/dist/factories/apisix/compositions/apisix-helm-repository.js.map +1 -1
  16. package/dist/factories/apisix/resources/helm.d.ts +2 -2
  17. package/dist/factories/apisix/resources/helm.d.ts.map +1 -1
  18. package/dist/factories/apisix/resources/helm.js.map +1 -1
  19. package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.d.ts +3 -2
  20. package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.d.ts.map +1 -1
  21. package/dist/factories/cert-manager/compositions/cert-manager-bootstrap.js.map +1 -1
  22. package/dist/factories/cilium/compositions/cilium-bootstrap.d.ts +2 -76
  23. package/dist/factories/cilium/compositions/cilium-bootstrap.d.ts.map +1 -1
  24. package/dist/factories/cilium/compositions/cilium-bootstrap.js.map +1 -1
  25. package/dist/factories/cilium/resources/helm.d.ts +3 -2
  26. package/dist/factories/cilium/resources/helm.d.ts.map +1 -1
  27. package/dist/factories/cilium/resources/helm.js.map +1 -1
  28. package/dist/factories/clickhouse/compositions/clickhouse-helm-repository.d.ts +3 -7
  29. package/dist/factories/clickhouse/compositions/clickhouse-helm-repository.d.ts.map +1 -1
  30. package/dist/factories/clickhouse/compositions/clickhouse-helm-repository.js.map +1 -1
  31. package/dist/factories/clickhouse/compositions/clickhouse-operator-bootstrap.d.ts +3 -28
  32. package/dist/factories/clickhouse/compositions/clickhouse-operator-bootstrap.d.ts.map +1 -1
  33. package/dist/factories/clickhouse/compositions/clickhouse-operator-bootstrap.js.map +1 -1
  34. package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts +7 -254
  35. package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts.map +1 -1
  36. package/dist/factories/clickstack/compositions/clickstack-bootstrap.js.map +1 -1
  37. package/dist/factories/clickstack/compositions/clickstack-helm-repository.d.ts +3 -7
  38. package/dist/factories/clickstack/compositions/clickstack-helm-repository.d.ts.map +1 -1
  39. package/dist/factories/clickstack/compositions/clickstack-helm-repository.js.map +1 -1
  40. package/dist/factories/clickstack/compositions/k8s-telemetry.d.ts +4 -16
  41. package/dist/factories/clickstack/compositions/k8s-telemetry.d.ts.map +1 -1
  42. package/dist/factories/clickstack/compositions/k8s-telemetry.js.map +1 -1
  43. package/dist/factories/clickstack/compositions/otel-helm-repository.d.ts +3 -7
  44. package/dist/factories/clickstack/compositions/otel-helm-repository.d.ts.map +1 -1
  45. package/dist/factories/clickstack/compositions/otel-helm-repository.js.map +1 -1
  46. package/dist/factories/clickstack/types.d.ts +5 -0
  47. package/dist/factories/clickstack/types.d.ts.map +1 -1
  48. package/dist/factories/clickstack/types.js.map +1 -1
  49. package/dist/factories/clickstack/utils/storage.d.ts +13 -0
  50. package/dist/factories/clickstack/utils/storage.d.ts.map +1 -1
  51. package/dist/factories/clickstack/utils/storage.js +31 -2
  52. package/dist/factories/clickstack/utils/storage.js.map +1 -1
  53. package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts +3 -27
  54. package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts.map +1 -1
  55. package/dist/factories/cnpg/compositions/cnpg-bootstrap.js.map +1 -1
  56. package/dist/factories/dagster/compositions/dagster-bootstrap.d.ts +3 -450
  57. package/dist/factories/dagster/compositions/dagster-bootstrap.d.ts.map +1 -1
  58. package/dist/factories/dagster/compositions/dagster-bootstrap.js.map +1 -1
  59. package/dist/factories/dagster/compositions/dagster-helm-repository.d.ts +3 -7
  60. package/dist/factories/dagster/compositions/dagster-helm-repository.d.ts.map +1 -1
  61. package/dist/factories/dagster/compositions/dagster-helm-repository.js.map +1 -1
  62. package/dist/factories/envoy-ai-gateway/compositions/platform.d.ts +6 -34
  63. package/dist/factories/envoy-ai-gateway/compositions/platform.d.ts.map +1 -1
  64. package/dist/factories/envoy-ai-gateway/compositions/platform.js.map +1 -1
  65. package/dist/factories/envoy-ai-gateway/compositions/repository.d.ts +3 -7
  66. package/dist/factories/envoy-ai-gateway/compositions/repository.d.ts.map +1 -1
  67. package/dist/factories/envoy-ai-gateway/compositions/repository.js.map +1 -1
  68. package/dist/factories/external-dns/compositions/external-dns-bootstrap.d.ts +3 -1
  69. package/dist/factories/external-dns/compositions/external-dns-bootstrap.d.ts.map +1 -1
  70. package/dist/factories/external-dns/compositions/external-dns-bootstrap.js.map +1 -1
  71. package/dist/factories/flux/git-repository.d.ts +10 -12
  72. package/dist/factories/flux/git-repository.d.ts.map +1 -1
  73. package/dist/factories/flux/git-repository.js.map +1 -1
  74. package/dist/factories/flux/kustomize/kustomization.d.ts +17 -49
  75. package/dist/factories/flux/kustomize/kustomization.d.ts.map +1 -1
  76. package/dist/factories/flux/kustomize/kustomization.js.map +1 -1
  77. package/dist/factories/harbor/compositions/harbor-installation.d.ts +6 -309
  78. package/dist/factories/harbor/compositions/harbor-installation.d.ts.map +1 -1
  79. package/dist/factories/harbor/compositions/harbor-installation.js.map +1 -1
  80. package/dist/factories/harbor/compositions/harbor-rook-s3-credentials.d.ts +2 -8
  81. package/dist/factories/harbor/compositions/harbor-rook-s3-credentials.d.ts.map +1 -1
  82. package/dist/factories/harbor/compositions/harbor-rook-s3-credentials.js.map +1 -1
  83. package/dist/factories/hatchet/compositions/hatchet-installation.d.ts +3 -43
  84. package/dist/factories/hatchet/compositions/hatchet-installation.d.ts.map +1 -1
  85. package/dist/factories/hatchet/compositions/hatchet-installation.js.map +1 -1
  86. package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts +3 -116
  87. package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -1
  88. package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -1
  89. package/dist/factories/nats/compositions/nack-controller-bootstrap.d.ts +4 -15
  90. package/dist/factories/nats/compositions/nack-controller-bootstrap.d.ts.map +1 -1
  91. package/dist/factories/nats/compositions/nack-controller-bootstrap.js.map +1 -1
  92. package/dist/factories/nats/compositions/nats-bootstrap.d.ts +5 -26
  93. package/dist/factories/nats/compositions/nats-bootstrap.d.ts.map +1 -1
  94. package/dist/factories/nats/compositions/nats-bootstrap.js.map +1 -1
  95. package/dist/factories/opensearch/compositions/operator-bootstrap.d.ts +5 -23
  96. package/dist/factories/opensearch/compositions/operator-bootstrap.d.ts.map +1 -1
  97. package/dist/factories/opensearch/compositions/operator-bootstrap.js.map +1 -1
  98. package/dist/factories/opensearch/compositions/repository.d.ts +3 -7
  99. package/dist/factories/opensearch/compositions/repository.d.ts.map +1 -1
  100. package/dist/factories/opensearch/compositions/repository.js.map +1 -1
  101. package/dist/factories/ory/compositions/ory-identity-stack.d.ts +3 -2067
  102. package/dist/factories/ory/compositions/ory-identity-stack.d.ts.map +1 -1
  103. package/dist/factories/ory/compositions/ory-identity-stack.js.map +1 -1
  104. package/dist/factories/ory/compositions/ory-platform-stack.d.ts +3 -184
  105. package/dist/factories/ory/compositions/ory-platform-stack.d.ts.map +1 -1
  106. package/dist/factories/ory/compositions/ory-platform-stack.js.map +1 -1
  107. package/dist/factories/pebble/compositions/pebble-bootstrap.d.ts +3 -15
  108. package/dist/factories/pebble/compositions/pebble-bootstrap.d.ts.map +1 -1
  109. package/dist/factories/pebble/compositions/pebble-bootstrap.js.map +1 -1
  110. package/dist/factories/rook/compositions/object-storage-claim.d.ts +3 -18
  111. package/dist/factories/rook/compositions/object-storage-claim.d.ts.map +1 -1
  112. package/dist/factories/rook/compositions/object-storage-claim.js.map +1 -1
  113. package/dist/factories/rook/compositions/rook-ceph-helm-repository.d.ts +3 -7
  114. package/dist/factories/rook/compositions/rook-ceph-helm-repository.d.ts.map +1 -1
  115. package/dist/factories/rook/compositions/rook-ceph-helm-repository.js.map +1 -1
  116. package/dist/factories/rook/compositions/rook-ceph-operator-installation.d.ts +4 -30
  117. package/dist/factories/rook/compositions/rook-ceph-operator-installation.d.ts.map +1 -1
  118. package/dist/factories/rook/compositions/rook-ceph-operator-installation.js.map +1 -1
  119. package/dist/factories/rook/compositions/rook-ceph-platform.d.ts +5 -277
  120. package/dist/factories/rook/compositions/rook-ceph-platform.d.ts.map +1 -1
  121. package/dist/factories/rook/compositions/rook-ceph-platform.js.map +1 -1
  122. package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts +2 -1
  123. package/dist/factories/searxng/compositions/searxng-bootstrap.d.ts.map +1 -1
  124. package/dist/factories/searxng/compositions/searxng-bootstrap.js +22 -22
  125. package/dist/factories/searxng/compositions/searxng-bootstrap.js.map +1 -1
  126. package/dist/factories/simple/index.d.ts +3 -3
  127. package/dist/factories/simple/index.d.ts.map +1 -1
  128. package/dist/factories/simple/index.js.map +1 -1
  129. package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts +4 -47
  130. package/dist/factories/traefik/compositions/traefik-bootstrap.d.ts.map +1 -1
  131. package/dist/factories/traefik/compositions/traefik-bootstrap.js.map +1 -1
  132. package/dist/factories/traefik/compositions/traefik-helm-repository.d.ts +3 -7
  133. package/dist/factories/traefik/compositions/traefik-helm-repository.d.ts.map +1 -1
  134. package/dist/factories/traefik/compositions/traefik-helm-repository.js.map +1 -1
  135. package/dist/factories/traefik/resources/helm.d.ts +2 -2
  136. package/dist/factories/traefik/resources/helm.d.ts.map +1 -1
  137. package/dist/factories/traefik/resources/helm.js.map +1 -1
  138. package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts +4 -16
  139. package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts.map +1 -1
  140. package/dist/factories/valkey/compositions/valkey-bootstrap.js.map +1 -1
  141. package/dist/factories/valkey/compositions/valkey-helm-repository.d.ts +3 -7
  142. package/dist/factories/valkey/compositions/valkey-helm-repository.d.ts.map +1 -1
  143. package/dist/factories/valkey/compositions/valkey-helm-repository.js.map +1 -1
  144. package/package.json +7 -5
  145. package/dist/core/aspects/metadata.d.ts +0 -16
  146. package/dist/core/aspects/metadata.d.ts.map +0 -1
  147. package/dist/core/aspects/targets.d.ts +0 -9
  148. package/dist/core/aspects/targets.d.ts.map +0 -1
  149. package/dist/core/composition/analysis-metadata.d.ts +0 -15
  150. package/dist/core/composition/analysis-metadata.d.ts.map +0 -1
  151. package/dist/core/composition/index.d.ts +0 -12
  152. package/dist/core/composition/index.d.ts.map +0 -1
  153. package/dist/core/composition/nested-status-cel.d.ts +0 -82
  154. package/dist/core/composition/nested-status-cel.d.ts.map +0 -1
  155. package/dist/core/config/defaults.d.ts +0 -109
  156. package/dist/core/config/defaults.d.ts.map +0 -1
  157. package/dist/core/config/env.d.ts +0 -12
  158. package/dist/core/config/env.d.ts.map +0 -1
  159. package/dist/core/config/index.d.ts +0 -3
  160. package/dist/core/config/index.d.ts.map +0 -1
  161. package/dist/core/containers/exec.d.ts +0 -19
  162. package/dist/core/containers/exec.d.ts.map +0 -1
  163. package/dist/core/containers/registries/docker-session.d.ts +0 -14
  164. package/dist/core/containers/registries/docker-session.d.ts.map +0 -1
  165. package/dist/core/containers/registries/ecr.d.ts +0 -21
  166. package/dist/core/containers/registries/ecr.d.ts.map +0 -1
  167. package/dist/core/containers/registries/index.d.ts +0 -9
  168. package/dist/core/containers/registries/index.d.ts.map +0 -1
  169. package/dist/core/containers/registries/orbstack.d.ts +0 -13
  170. package/dist/core/containers/registries/orbstack.d.ts.map +0 -1
  171. package/dist/core/deployment/closure-planner.d.ts +0 -20
  172. package/dist/core/deployment/closure-planner.d.ts.map +0 -1
  173. package/dist/core/deployment/crd-manager.d.ts +0 -79
  174. package/dist/core/deployment/crd-manager.d.ts.map +0 -1
  175. package/dist/core/deployment/deletion-result.d.ts +0 -22
  176. package/dist/core/deployment/deletion-result.d.ts.map +0 -1
  177. package/dist/core/deployment/event-filter.d.ts +0 -142
  178. package/dist/core/deployment/event-filter.d.ts.map +0 -1
  179. package/dist/core/deployment/event-monitor.d.ts +0 -243
  180. package/dist/core/deployment/event-monitor.d.ts.map +0 -1
  181. package/dist/core/deployment/handle-tracing.d.ts +0 -14
  182. package/dist/core/deployment/handle-tracing.d.ts.map +0 -1
  183. package/dist/core/deployment/kro-instance-admission.d.ts +0 -17
  184. package/dist/core/deployment/kro-instance-admission.d.ts.map +0 -1
  185. package/dist/core/deployment/kro-instance-safety.d.ts +0 -237
  186. package/dist/core/deployment/kro-instance-safety.d.ts.map +0 -1
  187. package/dist/core/deployment/nested-composition-status.d.ts +0 -33
  188. package/dist/core/deployment/nested-composition-status.d.ts.map +0 -1
  189. package/dist/core/deployment/readiness-waiter.d.ts +0 -60
  190. package/dist/core/deployment/readiness-waiter.d.ts.map +0 -1
  191. package/dist/core/deployment/resource-applier.d.ts +0 -87
  192. package/dist/core/deployment/resource-applier.d.ts.map +0 -1
  193. package/dist/core/deployment/resource-tagging.d.ts +0 -220
  194. package/dist/core/deployment/resource-tagging.d.ts.map +0 -1
  195. package/dist/core/deployment/schema-cel-evaluator.d.ts +0 -5
  196. package/dist/core/deployment/schema-cel-evaluator.d.ts.map +0 -1
  197. package/dist/core/deployment/singleton-gitops.d.ts +0 -10
  198. package/dist/core/deployment/singleton-gitops.d.ts.map +0 -1
  199. package/dist/core/expressions/analysis/alias-inliner.d.ts +0 -14
  200. package/dist/core/expressions/analysis/alias-inliner.d.ts.map +0 -1
  201. package/dist/core/expressions/analysis/array-method-converters.d.ts +0 -19
  202. package/dist/core/expressions/analysis/array-method-converters.d.ts.map +0 -1
  203. package/dist/core/expressions/analysis/ast-helpers.d.ts +0 -49
  204. package/dist/core/expressions/analysis/ast-helpers.d.ts.map +0 -1
  205. package/dist/core/expressions/analysis/ast-node-converters.d.ts +0 -15
  206. package/dist/core/expressions/analysis/ast-node-converters.d.ts.map +0 -1
  207. package/dist/core/expressions/analysis/ast-type-guards.d.ts +0 -14
  208. package/dist/core/expressions/analysis/ast-type-guards.d.ts.map +0 -1
  209. package/dist/core/expressions/analysis/call-expression-converters.d.ts +0 -18
  210. package/dist/core/expressions/analysis/call-expression-converters.d.ts.map +0 -1
  211. package/dist/core/expressions/analysis/cel-emitter.d.ts +0 -86
  212. package/dist/core/expressions/analysis/cel-emitter.d.ts.map +0 -1
  213. package/dist/core/expressions/analysis/expression-classifier.d.ts +0 -77
  214. package/dist/core/expressions/analysis/expression-classifier.d.ts.map +0 -1
  215. package/dist/core/expressions/analysis/expression-metadata.d.ts +0 -15
  216. package/dist/core/expressions/analysis/expression-metadata.d.ts.map +0 -1
  217. package/dist/core/expressions/analysis/fn-toString-self-test.d.ts +0 -146
  218. package/dist/core/expressions/analysis/fn-toString-self-test.d.ts.map +0 -1
  219. package/dist/core/expressions/analysis/operator-utils.d.ts +0 -35
  220. package/dist/core/expressions/analysis/operator-utils.d.ts.map +0 -1
  221. package/dist/core/expressions/analysis/ready-when.d.ts +0 -3
  222. package/dist/core/expressions/analysis/ready-when.d.ts.map +0 -1
  223. package/dist/core/expressions/analysis/scope-resolver.d.ts +0 -57
  224. package/dist/core/expressions/analysis/scope-resolver.d.ts.map +0 -1
  225. package/dist/core/expressions/analysis/strict-cel.d.ts +0 -26
  226. package/dist/core/expressions/analysis/strict-cel.d.ts.map +0 -1
  227. package/dist/core/expressions/analysis/string-method-converters.d.ts +0 -27
  228. package/dist/core/expressions/analysis/string-method-converters.d.ts.map +0 -1
  229. package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts +0 -114
  230. package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +0 -1
  231. package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts +0 -78
  232. package/dist/core/expressions/composition/composition-analyzer-ternary.d.ts.map +0 -1
  233. package/dist/core/expressions/composition/composition-analyzer-traversal.d.ts +0 -37
  234. package/dist/core/expressions/composition/composition-analyzer-traversal.d.ts.map +0 -1
  235. package/dist/core/expressions/composition/context-tracker.d.ts +0 -39
  236. package/dist/core/expressions/composition/context-tracker.d.ts.map +0 -1
  237. package/dist/core/expressions/composition/expression-analyzer.d.ts +0 -101
  238. package/dist/core/expressions/composition/expression-analyzer.d.ts.map +0 -1
  239. package/dist/core/expressions/composition/imperative-analyzer.d.ts +0 -21
  240. package/dist/core/expressions/composition/imperative-analyzer.d.ts.map +0 -1
  241. package/dist/core/expressions/composition/index.d.ts +0 -17
  242. package/dist/core/expressions/composition/index.d.ts.map +0 -1
  243. package/dist/core/expressions/composition/integration-hooks.d.ts +0 -71
  244. package/dist/core/expressions/composition/integration-hooks.d.ts.map +0 -1
  245. package/dist/core/expressions/composition/scope-manager.d.ts +0 -93
  246. package/dist/core/expressions/composition/scope-manager.d.ts.map +0 -1
  247. package/dist/core/expressions/composition/types.d.ts +0 -41
  248. package/dist/core/expressions/composition/types.d.ts.map +0 -1
  249. package/dist/core/expressions/conditional/conditional-expression-processor.d.ts +0 -154
  250. package/dist/core/expressions/conditional/conditional-expression-processor.d.ts.map +0 -1
  251. package/dist/core/expressions/conditional/conditional-integration.d.ts +0 -111
  252. package/dist/core/expressions/conditional/conditional-integration.d.ts.map +0 -1
  253. package/dist/core/expressions/factory/dependency-tracker.d.ts +0 -222
  254. package/dist/core/expressions/factory/dependency-tracker.d.ts.map +0 -1
  255. package/dist/core/expressions/factory/resource-analyzer.d.ts +0 -139
  256. package/dist/core/expressions/factory/resource-analyzer.d.ts.map +0 -1
  257. package/dist/core/expressions/factory/resource-type-validator.d.ts +0 -149
  258. package/dist/core/expressions/factory/resource-type-validator.d.ts.map +0 -1
  259. package/dist/core/expressions/factory/status-ast-utils.d.ts +0 -36
  260. package/dist/core/expressions/factory/status-ast-utils.d.ts.map +0 -1
  261. package/dist/core/expressions/factory/status-cel-generation.d.ts +0 -67
  262. package/dist/core/expressions/factory/status-cel-generation.d.ts.map +0 -1
  263. package/dist/core/expressions/factory/status-field-analysis.d.ts +0 -58
  264. package/dist/core/expressions/factory/status-field-analysis.d.ts.map +0 -1
  265. package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.d.ts +0 -123
  266. package/dist/core/expressions/magic-proxy/magic-assignable-analyzer.d.ts.map +0 -1
  267. package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.d.ts +0 -153
  268. package/dist/core/expressions/magic-proxy/magic-proxy-analyzer.d.ts.map +0 -1
  269. package/dist/core/expressions/magic-proxy/magic-proxy-ast.d.ts +0 -44
  270. package/dist/core/expressions/magic-proxy/magic-proxy-ast.d.ts.map +0 -1
  271. package/dist/core/expressions/magic-proxy/magic-proxy-types.d.ts +0 -36
  272. package/dist/core/expressions/magic-proxy/magic-proxy-types.d.ts.map +0 -1
  273. package/dist/core/expressions/magic-proxy/optionality-analysis.d.ts +0 -54
  274. package/dist/core/expressions/magic-proxy/optionality-analysis.d.ts.map +0 -1
  275. package/dist/core/expressions/magic-proxy/optionality-cel-generation.d.ts +0 -51
  276. package/dist/core/expressions/magic-proxy/optionality-cel-generation.d.ts.map +0 -1
  277. package/dist/core/expressions/magic-proxy/optionality-hydration.d.ts +0 -84
  278. package/dist/core/expressions/magic-proxy/optionality-hydration.d.ts.map +0 -1
  279. package/dist/core/expressions/magic-proxy/optionality-optional-chaining.d.ts +0 -61
  280. package/dist/core/expressions/magic-proxy/optionality-optional-chaining.d.ts.map +0 -1
  281. package/dist/core/expressions/validation/resource-field-utils.d.ts +0 -69
  282. package/dist/core/expressions/validation/resource-field-utils.d.ts.map +0 -1
  283. package/dist/core/kubernetes/bun-watch.d.ts +0 -30
  284. package/dist/core/kubernetes/bun-watch.d.ts.map +0 -1
  285. package/dist/core/kubernetes/client-node-runtime.d.ts +0 -10
  286. package/dist/core/kubernetes/client-node-runtime.d.ts.map +0 -1
  287. package/dist/core/proxy/index.d.ts +0 -8
  288. package/dist/core/proxy/index.d.ts.map +0 -1
  289. package/dist/core/proxy/known-status-fields.d.ts +0 -27
  290. package/dist/core/proxy/known-status-fields.d.ts.map +0 -1
  291. package/dist/core/readiness/strategy-configuration.d.ts +0 -12
  292. package/dist/core/readiness/strategy-configuration.d.ts.map +0 -1
  293. package/dist/core/references/cel-lexical-scanner.d.ts +0 -113
  294. package/dist/core/references/cel-lexical-scanner.d.ts.map +0 -1
  295. package/dist/core/runtime/standalone-operation.d.ts +0 -12
  296. package/dist/core/runtime/standalone-operation.d.ts.map +0 -1
  297. package/dist/core/runtime-patches/crd-patcher.d.ts +0 -30
  298. package/dist/core/runtime-patches/crd-patcher.d.ts.map +0 -1
  299. package/dist/core/runtime-patches/crd-schema-fix.d.ts +0 -145
  300. package/dist/core/runtime-patches/crd-schema-fix.d.ts.map +0 -1
  301. package/dist/core/runtime-patches/index.d.ts +0 -8
  302. package/dist/core/runtime-patches/index.d.ts.map +0 -1
  303. package/dist/core/serialization/arktype-ast.d.ts +0 -21
  304. package/dist/core/serialization/arktype-ast.d.ts.map +0 -1
  305. package/dist/core/serialization/kro-post-processing.d.ts +0 -46
  306. package/dist/core/serialization/kro-post-processing.d.ts.map +0 -1
  307. package/dist/core/serialization/status-analysis-pipeline.d.ts +0 -67
  308. package/dist/core/serialization/status-analysis-pipeline.d.ts.map +0 -1
  309. package/dist/core/validation/cel-dialect.d.ts +0 -246
  310. package/dist/core/validation/cel-dialect.d.ts.map +0 -1
  311. package/dist/core/validation/cel-validator.d.ts +0 -77
  312. package/dist/core/validation/cel-validator.d.ts.map +0 -1
  313. package/dist/core/validation/literal-status.d.ts +0 -107
  314. package/dist/core/validation/literal-status.d.ts.map +0 -1
  315. package/dist/core/validation/structural-spec-dependence.d.ts +0 -179
  316. package/dist/core/validation/structural-spec-dependence.d.ts.map +0 -1
  317. package/dist/factories/cert-manager/utils/helm-values-mapper.d.ts +0 -23
  318. package/dist/factories/cert-manager/utils/helm-values-mapper.d.ts.map +0 -1
  319. package/dist/factories/cert-manager/utils/index.d.ts +0 -2
  320. package/dist/factories/cert-manager/utils/index.d.ts.map +0 -1
  321. package/dist/factories/flux/kustomize/types.d.ts +0 -2
  322. package/dist/factories/flux/kustomize/types.d.ts.map +0 -1
  323. package/dist/factories/nats/compositions/nack-controller-migration.d.ts +0 -18
  324. package/dist/factories/nats/compositions/nack-controller-migration.d.ts.map +0 -1
  325. package/dist/factories/ory/schemas/maester-crds.d.ts +0 -9
  326. package/dist/factories/ory/schemas/maester-crds.d.ts.map +0 -1
  327. package/dist/factories/pebble/utils/helm-values-mapper.d.ts +0 -21
  328. package/dist/factories/pebble/utils/helm-values-mapper.d.ts.map +0 -1
  329. package/dist/factories/shared.d.ts +0 -18
  330. package/dist/factories/shared.d.ts.map +0 -1
  331. package/dist/shared/own-property.d.ts +0 -15
  332. package/dist/shared/own-property.d.ts.map +0 -1
  333. package/dist/utils/cel-escape.d.ts +0 -12
  334. package/dist/utils/cel-escape.d.ts.map +0 -1
  335. package/dist/utils/cel-resource-identifiers.d.ts +0 -23
  336. package/dist/utils/cel-resource-identifiers.d.ts.map +0 -1
@@ -1,46 +0,0 @@
1
- /**
2
- * KRO YAML Post-Processing Utilities
3
- *
4
- * Shared helpers for applying ternary conditionals to resource data before
5
- * YAML serialization. Used by both the toResourceGraph pipeline (core.ts)
6
- * and the KRO factory deployment path (kro-factory.ts).
7
- *
8
- * Extracted to avoid circular dependencies between core.ts and kro-factory.ts.
9
- *
10
- * Note: KRO 0.9+ omit() wrapping for optional fields is NOT in this module —
11
- * it's applied inline during ref-to-CEL conversion via
12
- * `SerializationContext.omitFields` in `cel-references.ts`. That keeps
13
- * `has() ? ... : omit()` generation as a structured operation on
14
- * KubernetesRef objects instead of a post-hoc regex rewrite of the
15
- * serialized YAML string.
16
- */
17
- /**
18
- * Apply ternary conditionals to resource data by replacing raw marker sections
19
- * with CEL conditional expressions. This runs BEFORE processResourceReferences
20
- * so that the markers within the truthy branch get converted to mixed-template
21
- * CEL format by the normal pipeline.
22
- *
23
- * For `spec.redisUrl ? \`redis:\n url: ${spec.redisUrl}\` : ''`, the raw
24
- * settings.yml string contains the redis section with a __KUBERNETES_REF__
25
- * marker. This function replaces that section with a CEL conditional that
26
- * processResourceReferences will then convert to the final mixed-template form.
27
- *
28
- * FRAGILE: operates on raw string values inside resource data by substring
29
- * matching. The `proxySection` must be byte-identical to what was extracted
30
- * by `extractTernaryConditionals` in schema.ts — meaning the composition's
31
- * string construction (typically a template literal) and the re-execution
32
- * pass both need to produce the same newline/indentation layout. If a
33
- * composition author post-processes the settings string, interpolates it
34
- * through another templating layer, or if the extraction heuristic in
35
- * schema.ts is updated to include/exclude different surrounding context,
36
- * the match will fail silently and the ternary will not be applied.
37
- *
38
- * Tracked for replacement with AST-based detection in
39
- * https://github.com/yehudacohen/typekro/issues/57
40
- */
41
- export declare function applyTernaryConditionalsToResources(resources: Record<string, unknown>, conditionals: Array<{
42
- proxySection: string;
43
- falsyValue: string;
44
- conditionField: string;
45
- }>, nestedStatusCel?: Record<string, string>): void;
46
- //# sourceMappingURL=kro-post-processing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kro-post-processing.d.ts","sourceRoot":"","sources":["../../../src/core/serialization/kro-post-processing.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,YAAY,EAAE,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,EACzF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,IAAI,CA8BN"}
@@ -1,67 +0,0 @@
1
- /**
2
- * Status analysis pipeline — decomposed from analyzeAndConvertStatusMappings
3
- *
4
- * The original function was a 9-step pipeline with 3 layers of swallowed
5
- * try/catch fallbacks, making it the single hardest function to maintain.
6
- *
7
- * This module decomposes it into explicit, named pipeline stages. Each stage
8
- * returns a `StageResult<T>` carrying success/failure/degraded state.
9
- * Degradation is logged at warn level (not debug), making silent failures loud.
10
- *
11
- * Pipeline stages:
12
- * 1. executeStatusBuilder — run the status builder in KubernetesRef context
13
- * 2. detectCompositionMode — read internal source metadata (imperative vs declarative)
14
- * 3. analyzeStatusMappingsForMode — route to imperative or declarative analysis
15
- * 4. categorizeFields — run analyzeStatusMappingTypes on the result
16
- * 5. detectExistingCel — detect and preserve backward-compat CEL expressions
17
- * 6. convertRefsTocel — convert KubernetesRef objects to CEL via CelConversionEngine
18
- * 7. mergeResults — 3-way merge of converted/preserved/raw mappings
19
- * 8. logMigrationOpportunities — (side effect) log CEL→JS migration suggestions
20
- *
21
- * @see ROADMAP.md Phase 2.9
22
- */
23
- import type { getComponentLogger } from '../logging/index.js';
24
- import type { DeploymentClosure } from '../types/deployment.js';
25
- import type { MagicAssignableShape, ResourceGraphDefinition, SchemaProxy } from '../types/serialization.js';
26
- import type { Enhanced, KroCompatibleType } from '../types.js';
27
- import { analyzeStatusMappingTypes } from './status-analysis-helpers.js';
28
- /**
29
- * The outcome of a pipeline stage.
30
- *
31
- * - `success`: Stage completed normally with a value.
32
- * - `degraded`: Stage failed but produced a fallback value. The pipeline continues.
33
- * - `failure`: Stage failed with no usable value (rare — most stages degrade instead).
34
- */
35
- export type StageOutcome = 'success' | 'degraded' | 'failure';
36
- export interface StageResult<T> {
37
- outcome: StageOutcome;
38
- value: T;
39
- /** Human-readable reason for degradation/failure */
40
- reason?: string;
41
- }
42
- type PipelineLogger = ReturnType<ReturnType<typeof getComponentLogger>['child']>;
43
- /**
44
- * Result of the status analysis pipeline.
45
- *
46
- * Same shape as the original `StatusAnalysisResult` for backward compatibility.
47
- */
48
- export interface StatusAnalysisPipelineResult {
49
- statusMappings: MagicAssignableShape<KroCompatibleType>;
50
- analyzedStatusMappings: Record<string, unknown>;
51
- mappingAnalysis: ReturnType<typeof analyzeStatusMappingTypes>;
52
- imperativeAnalysisSucceeded: boolean;
53
- /** Raw Phase B fn.toString results (before merge filtering). Available when
54
- * Phase B ran for an imperative composition. Used by nested composition
55
- * status extraction to recover CEL from garbled fn.toString output. */
56
- phaseBStatusMappings?: Record<string, unknown> | undefined;
57
- }
58
- /**
59
- * Run the full status analysis pipeline.
60
- *
61
- * This is the decomposed replacement for the original
62
- * `analyzeAndConvertStatusMappings` function. Each stage is explicit,
63
- * degradation is logged at warn level, and the flow is traceable.
64
- */
65
- export declare function runStatusAnalysisPipeline<TSpec extends KroCompatibleType, TStatus extends KroCompatibleType, TResources extends Record<string, Enhanced<unknown, unknown> | DeploymentClosure>>(definition: ResourceGraphDefinition<TSpec, TStatus>, statusBuilder: (schema: SchemaProxy<TSpec, TStatus>, resources: TResources) => MagicAssignableShape<TStatus>, schema: SchemaProxy<TSpec, TStatus>, resourcesWithKeys: Record<string, Enhanced<unknown, unknown>>, logger: PipelineLogger): StatusAnalysisPipelineResult;
66
- export {};
67
- //# sourceMappingURL=status-analysis-pipeline.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status-analysis-pipeline.d.ts","sourceRoot":"","sources":["../../../src/core/serialization/status-analysis-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAkBH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,yBAAyB,EAG1B,MAAM,8BAA8B,CAAC;AAMtC;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,CAAC,CAAC;IACT,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD,KAAK,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAskBjF;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IACxD,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,eAAe,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IAC9D,2BAA2B,EAAE,OAAO,CAAC;IACrC;;4EAEwE;IACxE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC5D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,SAAS,iBAAiB,EAC/B,OAAO,SAAS,iBAAiB,EACjC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAAC,EAEjF,UAAU,EAAE,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,EACnD,aAAa,EAAE,CACb,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EACnC,SAAS,EAAE,UAAU,KAClB,oBAAoB,CAAC,OAAO,CAAC,EAClC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAC7D,MAAM,EAAE,cAAc,GACrB,4BAA4B,CA2E9B"}
@@ -1,246 +0,0 @@
1
- /**
2
- * Dual-dialect compatibility check for emitted status CEL.
3
- *
4
- * TypeKro emits one CEL expression per dynamic status field and then runs it
5
- * through **two different engines**: `cel-js` evaluates it locally in direct
6
- * mode, and `cel-go` (inside the KRO controller, with KRO's type environment)
7
- * evaluates it in Kro mode. The two disagree in ways that only surface when the
8
- * expression meets real data on a live cluster — one engine returns a value and
9
- * the other rejects the expression or blows up on a missing field.
10
- *
11
- * This module runs every emitted status expression through cel-js's own parser
12
- * **and** a curated denylist of the divergences we have confirmed, so an
13
- * expression that only one engine accepts fails at serialization time with the
14
- * expression, the status leaf it came from, and the dialect that rejects it.
15
- *
16
- * ## cel-js's parser is not the CEL grammar
17
- *
18
- * cel-js 0.8.2 parses a proper subset of CEL, so a `parse()` failure is a fact
19
- * about **direct mode only**. Its `atomicExpression` rule takes a postfix
20
- * `.`/`[` after an identifier (and after a map literal, and one index after a
21
- * list literal) and nowhere else, while the spec's `Member` production takes a
22
- * postfix on any `Member` and `Primary` includes both `LITERAL` and
23
- * `"(" Expr ")"` — so `"x".size()`, `[1,2].size()`, `(a).b` and `size(a).b` are
24
- * all valid CEL that cel-js rejects, and its lexer has neither the exponent
25
- * `FLOAT_LIT` form nor the `r`/`b`/triple-quoted `STRING_LIT` forms. Inferring
26
- * "cel-go would reject this too" from a cel-js parse failure is therefore
27
- * unsound, and the parse half does not do it: it sorts a failure into
28
- * `not-valid-cel` (a form the *spec's* grammar has no token or production for),
29
- * `cel-js-rejects-spec-cel` (a positively identified cel-js shortfall — a real
30
- * divergence) or `cel-js-parse-failure` (no verdict beyond direct mode).
31
- *
32
- * Identifying a shortfall *somewhere* in a rejected expression is not by itself
33
- * a divergence, because the parse may have failed for an unrelated reason: the
34
- * shortfall in `"x".size() +` is real and the expression is still unfinished,
35
- * and cel-go refuses it exactly as cel-js does. So the divergence bucket is
36
- * earned rather than assumed — every identified shortfall is rewritten into a
37
- * spelling of the same spec production that cel-js does have (`"x".size()` into
38
- * `__typekro_recv0.size()`, `1e3` into `0.0`), the rest of the text is left
39
- * untouched, and cel-js is asked again. Only a rewrite that parses proves the
40
- * shortfall was the whole reason; anything else falls to `cel-js-parse-failure`.
41
- *
42
- * ## Why a denylist rather than a real cel-go
43
- *
44
- * cel-go is a Go library; there is no in-process cel-go for a TypeScript
45
- * serializer to consult, and shelling out to one would make `toYaml()` depend
46
- * on a Go toolchain. The denylist is therefore a deliberately *curated*,
47
- * documented set of confirmed divergences rather than a general type checker.
48
- * It is meant to grow: each rule below records what was observed and on which
49
- * engine, so a new entry can be justified the same way.
50
- *
51
- * ## What may fail strict mode
52
- *
53
- * A rule may fail strict mode only when the two engines genuinely **diverge** on
54
- * the form: there is data for which one engine yields a value and the other does
55
- * not. That bar rules out two tempting kinds of rule, and both are deliberately
56
- * excluded rather than merely unwritten.
57
- *
58
- * - **Anything that needs a CEL *type* to be a divergence.** Syntax does not
59
- * establish a type. `x[0]` is a list index against one schema and a map lookup
60
- * against another; `"k" in e` is fine when `e` is a map and rejected when
61
- * cel-go's type env has typed `e` as a message. The real types live in the
62
- * referenced resources' Kubernetes schemas, and nothing at this call site has
63
- * them: the check receives the serialized status map — expression text naming
64
- * graph resources by id — and TypeKro's `Enhanced<>` types are erased before
65
- * serialization runs. A rule that guesses a type from bracket shape fails
66
- * strict mode on valid CEL, so such rules are reported as notes instead.
67
- * - **Forms both engines treat the same.** Indexing a required list inside a
68
- * logical chain is the worked example: `size(l) > 0 && l[0].f != ""` returns
69
- * `false` on an empty `l` in both engines (cel-js short-circuits, cel-go
70
- * absorbs the error under a deciding `false`), and an out-of-range index
71
- * errors on both. Nothing diverges, so nothing is reported.
72
- *
73
- * What the bar does **not** license is a claim about what KRO ultimately does
74
- * with the field. Every rule here reasons about the grammar and about published
75
- * engine behaviour; none of them models cel-go's *type checker*, which runs
76
- * after the parse with KRO's type environment and function set and rejects
77
- * plenty of grammatical CEL — `1.string()` parses on any conformant grammar and
78
- * the checker still refuses it, `string` being a global conversion function
79
- * rather than a member, and an unknown member function goes the same way. So a
80
- * finding says "direct mode can never evaluate this field" where that is proven,
81
- * and leaves KRO's verdict open. A rule stays a `divergence` on the strength of
82
- * the disagreement it does establish: the engines differ on the *form*, at a
83
- * stage that needs no type environment, which makes the emitted CEL defective
84
- * for one of the two targets TypeKro serializes for whatever the other decides.
85
- *
86
- * Findings that do not clear the bar are still worth surfacing, so each rule
87
- * declares a {@link CelDialectFindingKind}: `divergence` findings abort
88
- * serialization in strict mode, `note` findings never do and are logged in both
89
- * modes. Strictness otherwise follows the shared CEL diagnostics convention
90
- * (`strictCelDiagnostics` factory option, `TYPEKRO_STRICT_CEL=1`).
91
- */
92
- /**
93
- * The CEL engine that rejects — or diverges on — an expression.
94
- *
95
- * `'both'` marks a form neither engine accepts, which is a defect but not a
96
- * divergence. `'unchecked'` is not an engine at all: it marks a finding where no
97
- * verdict was reached, because the expression was past the analysis budget.
98
- */
99
- export type CelDialect = 'cel-js' | 'cel-go' | 'both' | 'unchecked';
100
- /**
101
- * Whether a finding may fail strict mode.
102
- *
103
- * - `divergence` — the two engines demonstrably disagree on this form, with no
104
- * appeal to a type the checker cannot see. Fails strict mode.
105
- * - `note` — worth reporting, but not a proven divergence: either both engines
106
- * reject the form (a defect, but the same defect on each), or the divergence
107
- * is conditional on a type the checker has no way to establish, or no verdict
108
- * was reached at all. Never fails strict mode, in either strictness setting.
109
- */
110
- export type CelDialectFindingKind = 'divergence' | 'note';
111
- /** Identifier for a curated dual-dialect rule. */
112
- export type CelDialectRuleId = 'not-valid-cel' | 'cel-js-rejects-spec-cel' | 'cel-js-parse-failure' | 'has-index-argument' | 'in-on-list-entry' | 'guard-after-use-in-logical-chain' | 'heterogeneous-map-literal' | 'expression-too-large';
113
- /**
114
- * Largest expression this module will analyze, in characters.
115
- *
116
- * Both halves of the check cost roughly a microsecond per character — cel-js's
117
- * parser dominates — so the cost is linear in the length of the expression and
118
- * the only way it can run away is for the expression itself to run away.
119
- *
120
- * The budget is set from what TypeKro actually emits. Across the unit suite the
121
- * median status expression is under 100 characters, the 99th percentile is
122
- * ~1.6k, and the largest authored one is ~3.3k. 16 KiB leaves roughly five
123
- * times the headroom over the largest real expression while capping the check
124
- * at ~16ms for any single leaf.
125
- *
126
- * Anything past this is not an authored status field. The known source is a
127
- * nested composition whose inlined status re-expands into itself, doubling per
128
- * level until the depth limit stops it — which yields a multi-megabyte
129
- * expression that no engine can use: cel-js needs seconds to parse it on every
130
- * direct-mode reconcile, and a ResourceGraphDefinition carrying it is past the
131
- * Kubernetes object size limit, so the API server refuses it outright.
132
- */
133
- export declare const CEL_DIALECT_MAX_EXPRESSION_LENGTH = 16384;
134
- /** A single dual-dialect incompatibility found in an emitted expression. */
135
- export interface CelDialectFinding {
136
- /** Which curated rule matched. */
137
- readonly rule: CelDialectRuleId;
138
- /** Whether this finding may fail strict mode. */
139
- readonly kind: CelDialectFindingKind;
140
- /** The engine that rejects or diverges on this expression. */
141
- readonly dialect: CelDialect;
142
- /** The status leaf path the expression was emitted for. */
143
- readonly field: string;
144
- /** The emitted CEL expression. */
145
- readonly expression: string;
146
- /** The offending fragment, when the rule can isolate one. */
147
- readonly fragment?: string;
148
- /** What the engine does with it. */
149
- readonly message: string;
150
- /** How to write it so both engines accept it. */
151
- readonly suggestion: string;
152
- }
153
- /**
154
- * The curated denylist.
155
- *
156
- * Every entry names the engine that rejects the form, whether the entry counts
157
- * as a divergence, and the observation behind it. Keep this table and
158
- * {@link checkCelDialectCompatibility} in step.
159
- */
160
- export declare const CEL_DIALECT_RULES: readonly {
161
- readonly id: CelDialectRuleId;
162
- readonly kind: CelDialectFindingKind;
163
- readonly dialect: CelDialect;
164
- readonly summary: string;
165
- readonly observed: string;
166
- }[];
167
- /** True when any finding in the set may fail strict mode. */
168
- export declare function hasCelDialectDivergence(findings: readonly CelDialectFinding[]): boolean;
169
- /**
170
- * What the last run (or runs) of the check cost, in units that do not depend on
171
- * the machine it ran on.
172
- *
173
- * Wall-clock is the wrong instrument for the property that actually matters
174
- * here — that the work is linear in the length of the expression rather than
175
- * quadratic in its nesting — because a slow CI box and a quadratic regression
176
- * look alike. These counters do not: `indexedCharacters` is the total text
177
- * scanned to build bracket indexes and `lookups` the total number of "where
178
- * does this close?" questions asked, so doubling the input must roughly double
179
- * both.
180
- */
181
- export interface CelDialectWorkStats {
182
- /** How many bracket indexes were built. */
183
- readonly indexBuilds: number;
184
- /** Total characters scanned across those builds. */
185
- readonly indexedCharacters: number;
186
- /** Total bracket-match questions answered out of an index. */
187
- readonly lookups: number;
188
- }
189
- /** Read the work counters. */
190
- export declare function celDialectWorkStats(): CelDialectWorkStats;
191
- /** Zero the work counters, so one check can be measured on its own. */
192
- export declare function resetCelDialectWorkStats(): void;
193
- /**
194
- * Offset of the first character of `expression` no CEL token can carry, or `-1`
195
- * when the spec's lexical grammar covers the text end to end.
196
- *
197
- * Exported for the same reason {@link celDialectParseProof} is: the coverage
198
- * scan is half of what "cel-js parsed it" means here, so it has to be checkable
199
- * from outside rather than taken on trust. `-1` is the precondition for every
200
- * verdict this module draws from a cel-js parse — see
201
- * {@link firstUnlexableOffset} for why `parse()` alone is not enough.
202
- */
203
- export declare function celDialectLexicalGap(expression: string): number;
204
- /**
205
- * The rewritten expression a `cel-js-rejects-spec-cel` divergence stands on, or
206
- * `undefined` when there is none.
207
- *
208
- * Exported so the proof can be reproduced rather than taken on trust: the
209
- * returned text differs from `expression` only where a confirmed cel-js
210
- * shortfall was replaced by a same-production spelling cel-js has, cel-js's
211
- * lexer carries every character of it and cel-js parses it. An expression with
212
- * no identified shortfall, one whose own text is not lexically CEL, or one where
213
- * taking the shortfalls away still leaves text cel-js refuses, yields
214
- * `undefined` — and that is exactly the case the check refuses to call a
215
- * divergence.
216
- */
217
- export declare function celDialectParseProof(expression: string): string | undefined;
218
- /**
219
- * Check one emitted status CEL expression against both dialects.
220
- *
221
- * @param expression The emitted CEL, without any `${...}` wrapper.
222
- * @param field The status leaf path the expression belongs to.
223
- */
224
- export declare function checkCelDialectCompatibility(expression: string, field: string): CelDialectFinding[];
225
- /**
226
- * Check every emitted status CEL expression in a serialized status map.
227
- *
228
- * Accepts the nested shape `serializeStatusMappingsToCel` produces: leaves are
229
- * `${...}`-wrapped CEL strings, and objects/arrays nest arbitrarily. Values
230
- * that carry no CEL are skipped, so plain literal status fields cost nothing.
231
- */
232
- export declare function collectStatusCelDialectFindings(statusCel: Readonly<Record<string, unknown>>): CelDialectFinding[];
233
- /**
234
- * Longest expression or fragment a report will quote, in characters.
235
- *
236
- * The analysis budget already keeps `checkCelDialectCompatibility` from
237
- * returning an oversized `expression`, but the formatter is exported and takes
238
- * findings from wherever the caller got them — so it bounds what it quotes on
239
- * its own rather than trusting its input. A report is read by a human; past a
240
- * couple of lines per finding the excerpt stops helping and starts being the
241
- * thing that fills the log.
242
- */
243
- export declare const CEL_DIALECT_MAX_EXCERPT_LENGTH = 400;
244
- /** Render findings as a multi-line report naming the leaf, dialect and expression. */
245
- export declare function formatCelDialectFindings(findings: readonly CelDialectFinding[]): string;
246
- //# sourceMappingURL=cel-dialect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cel-dialect.d.ts","sourceRoot":"","sources":["../../../src/core/validation/cel-dialect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AAKH;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEpE;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,MAAM,CAAC;AAE1D,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,yBAAyB,GACzB,sBAAsB,GACtB,oBAAoB,GACpB,kBAAkB,GAClB,kCAAkC,GAClC,2BAA2B,GAC3B,sBAAsB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iCAAiC,QAAS,CAAC;AAiBxD,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,oCAAoC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS;IACvC,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,EAiES,CAAC;AAEX,6DAA6D;AAC7D,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,OAAO,CAEvF;AAqCD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,8BAA8B;AAC9B,wBAAgB,mBAAmB,IAAI,mBAAmB,CAMzD;AAED,uEAAuE;AACvE,wBAAgB,wBAAwB,IAAI,IAAI,CAI/C;AAmoDD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO3E;AA8GD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,iBAAiB,EAAE,CA+MrB;AAQD;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC3C,iBAAiB,EAAE,CAuBrB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AA2BlD,sFAAsF;AACtF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,MAAM,CAWvF"}
@@ -1,77 +0,0 @@
1
- /**
2
- * CEL Expression Validator for Kro Compatibility
3
- *
4
- * This module validates CEL expressions to ensure they comply with Kro's requirements:
5
- * 1. Status fields must reference actual resources (not hardcoded strings)
6
- * 2. Resource IDs must be camelCase
7
- * 3. All referenced resources must exist in the ResourceGraphDefinition
8
- */
9
- import type { KubernetesResource } from '../types.js';
10
- export interface StatusResourceIdentityContext {
11
- readonly resourceIds: ReadonlySet<string>;
12
- readonly resourceAliases: ReadonlyMap<string, string>;
13
- readonly ambiguousResourceAliases: ReadonlyMap<string, readonly string[]>;
14
- }
15
- export declare function getNestedCompositionIds(statusMappings: Readonly<Record<string, unknown>>): ReadonlySet<string>;
16
- /**
17
- * Build the canonical resource identity set used by status planning,
18
- * serialization, and client-side hydration.
19
- */
20
- export declare function createStatusResourceIdentityContext(resources: Readonly<Record<string, KubernetesResource>>): StatusResourceIdentityContext;
21
- export interface CelValidationError {
22
- field: string;
23
- expression: string;
24
- error: string;
25
- suggestion?: string;
26
- /** Machine-readable finding category (used by strict CEL diagnostics). */
27
- code?: 'unknown-resource' | 'ambiguous-resource' | 'sensitive-status';
28
- /** The unresolved resource id, when code is 'unknown-resource'. */
29
- referencedResource?: string;
30
- }
31
- export interface CelValidationResult {
32
- isValid: boolean;
33
- errors: CelValidationError[];
34
- warnings: CelValidationError[];
35
- }
36
- /**
37
- * Validates that a resource ID follows camelCase convention required by Kro
38
- */
39
- export declare function validateResourceId(id: string): {
40
- isValid: boolean;
41
- error?: string;
42
- };
43
- /**
44
- * Separate status mappings into static fields (hydrated locally by TypeKro)
45
- * and dynamic fields (emitted as CEL for KRO).
46
- *
47
- * When `nestedStatusCel` is provided, classification is transitive — a
48
- * nested composition reference whose target is a schema-only / literal
49
- * expression is classified as static even though the reference itself
50
- * looks like `<id>.status.<field>`. This is the key mechanism that
51
- * satisfies the "depth-agnostic staticness" invariant for nested
52
- * compositions.
53
- *
54
- * If `nestedStatusCel` is not explicitly passed, the function falls back
55
- * to reading `statusMappings.__nestedStatusCel` (which is where the
56
- * composition context attaches the table via Reflect.set), so existing
57
- * callers continue to work without explicit plumbing.
58
- */
59
- export declare function separateStatusFields(statusMappings: Record<string, unknown>, nestedStatusCel?: Record<string, string>, resourceIds?: ReadonlySet<string>, nestedCompositionIds?: ReadonlySet<string>): {
60
- staticFields: Record<string, unknown>;
61
- dynamicFields: Record<string, unknown>;
62
- };
63
- /**
64
- * Validates CEL expressions in dynamic status fields to ensure they reference actual resources
65
- */
66
- export declare function validateStatusCelExpressions(statusMappings: Record<string, unknown>, resources: Record<string, KubernetesResource>, options?: {
67
- readonly enforceSensitiveStatus?: boolean;
68
- }): CelValidationResult;
69
- /**
70
- * Validates all resource IDs in a resource collection
71
- */
72
- export declare function validateResourceIds(resources: Record<string, KubernetesResource>): CelValidationResult;
73
- /**
74
- * Comprehensive validation for a complete ResourceGraphDefinition
75
- */
76
- export declare function validateResourceGraphDefinition(resources: Record<string, KubernetesResource>, statusMappings?: Record<string, unknown>): CelValidationResult;
77
- //# sourceMappingURL=cel-validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cel-validator.d.ts","sourceRoot":"","sources":["../../../src/core/validation/cel-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,wBAAwB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;CAC3E;AAED,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAChD,WAAW,CAAC,MAAM,CAAC,CAOrB;AAaD;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,GACtD,6BAA6B,CAkD/B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;IACtE,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAgCnF;AAyMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EACjC,oBAAoB,GAAE,WAAW,CAAC,MAAM,CAA2C,GAClF;IACD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,CAsDA;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC7C,OAAO,GAAE;IAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1D,mBAAmB,CAmUrB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC5C,mBAAmB,CAqBrB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC7C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,mBAAmB,CAgBrB"}
@@ -1,107 +0,0 @@
1
- /**
2
- * Dropped status-leaf validation for KRO mode.
3
- *
4
- * THE RULE: a KRO status field must reference at least one RESOURCE in the
5
- * graph. KRO's own instance builder enforces exactly that — `instance status
6
- * field must refer to a resource` (KRO `builder.go`, quoted in
7
- * `kro-instance-safety.ts`) — and its status CEL environment has no `schema`
8
- * identifier at all. A status expression with no resource in it therefore has
9
- * nothing to project from and is left unset on the instance. The declared
10
- * status schema then promises a field the custom resource never carries, and
11
- * every consumer that reads the CR directly (kubectl, another controller, an
12
- * `externalRef` from a second composition) sees `undefined`.
13
- *
14
- * Two shapes have no resource in them, and KRO drops BOTH the same way:
15
- *
16
- * - a bare LITERAL — a string, number, boolean, literal array/object, or a
17
- * reference-free CEL expression such as `Cel.expr`'running'``;
18
- * - a bare SCHEMA REFERENCE — `schema.spec.foo` standing alone in a status
19
- * leaf. It looks resolvable (the CR does hold that value in its own spec),
20
- * but a status leaf is a PROJECTION, and there is no resource here to
21
- * project from. TypeKro's own serializer already agrees: it classifies a
22
- * schema-only status field as "static" and excludes it from the emitted
23
- * status block — see invariant I1/I2 in
24
- * `test/unit/nested-composition-kro-serialization.test.ts` ("KRO status CEL
25
- * does NOT support `schema.spec.*`"), the same conclusion in
26
- * `src/core/proxy/create-resource.ts` ("classifies the resulting status
27
- * field as schema-derived and drops it from the live KRO CR's status
28
- * entirely"), and `assertNoHoistWeakenedStatusFields`, which already THROWS
29
- * for precisely this shape when a hoisted Namespace leaves a field
30
- * schema-only. This module simply makes the general case agree with that
31
- * special one.
32
- *
33
- * What stays valid is any expression ANCHORED on a resource. A mixed template
34
- * such as `` `http://${schema.spec.name}-svc:${svc.spec.ports[0].port}` `` is
35
- * fine: the resource reference gives KRO the dependency it requires, and
36
- * `schema.spec.*` resolves against the instance's own spec from there. The
37
- * serializer deliberately preserves those (`cel-references.ts`: "Plain CR spec
38
- * fields must remain `schema.spec.*`"), and
39
- * `nested-composition-kro-serialization.test.ts` pins the emitted shape. So the
40
- * test is not "does this mention `schema`" but "does this reference a
41
- * resource".
42
- *
43
- * TypeKro classified both dropped shapes as "static" and hydrated them
44
- * client-side in `getStatus()`, which hides the gap from the composition's own
45
- * author while leaving it wide open for everybody else. This module finds those
46
- * leaves at serialization time so the author is told before the RGD ships.
47
- *
48
- * Direct mode is unaffected — there is no KRO reconciler in that path and the
49
- * status object is assembled locally, so literals and schema refs are perfectly
50
- * fine there. The check therefore runs only from the KRO schema emitter.
51
- *
52
- * See issue #188.
53
- */
54
- /** Why a status leaf never reaches the instance. */
55
- export type DroppedStatusLeafKind =
56
- /** A bare literal, or a reference-free CEL expression. */
57
- 'literal'
58
- /** A `schema.spec.*` reference with no resource to anchor it. */
59
- | 'schema-reference';
60
- /** One status leaf that would be dropped by KRO. */
61
- export interface LiteralStatusLeaf {
62
- /** Full status path, e.g. `status.url`, `status.info.mode`, `status.entrypoints[0]`. */
63
- readonly path: string;
64
- /** Rendered form of the offending value, for the diagnostic message. */
65
- readonly literal: string;
66
- /** Which of the two no-resource shapes this leaf is. */
67
- readonly kind: DroppedStatusLeafKind;
68
- }
69
- /**
70
- * Find every status leaf that KRO would leave unset.
71
- *
72
- * `statusMappings` is the analyzed status mapping (post-CEL-conversion,
73
- * pre-static/dynamic split) — the split is exactly what hides the problem, so
74
- * the walk has to happen before it.
75
- */
76
- export declare function findLiteralStatusLeaves(statusMappings: Readonly<Record<string, unknown>> | undefined, nestedStatusCel?: Record<string, string>): readonly LiteralStatusLeaf[];
77
- /**
78
- * Human-readable diagnostic for a set of dropped status leaves.
79
- */
80
- export declare function formatLiteralStatusLeaves(leaves: readonly LiteralStatusLeaf[]): string;
81
- /**
82
- * Default for `allowLiteralStatus` — i.e. whether a literal status leaf warns
83
- * rather than throwing.
84
- *
85
- * `true` (warn) for now. The check is correct and the diagnostic is actionable,
86
- * but literal status leaves are not a rare mistake in existing code: turning
87
- * this on as a hard error against the repository's own suite rejected 377
88
- * serializations across 69 test files and every bootstrap composition listed in
89
- * `test/unit/literal-status-repo-scan.test.ts`. Shipping that as a patch-level
90
- * error would break every downstream composition using the same shape, with no
91
- * migration window.
92
- *
93
- * So: warn by default, and let a composition (or a CI job, via the factory
94
- * option) opt into the error with `allowLiteralStatus: false` today. Flip this
95
- * constant to `false` in the next major once the bundled compositions are
96
- * projections — that single edit is the whole migration.
97
- */
98
- export declare const DEFAULT_ALLOW_LITERAL_STATUS = true;
99
- /**
100
- * Resolve the effective `allowLiteralStatus` setting.
101
- *
102
- * A factory-level setting wins over the composition's own, so a CI job can run
103
- * `graph.factory('kro', { allowLiteralStatus: false }).toYaml()` to enforce
104
- * projection across compositions it does not own.
105
- */
106
- export declare function resolveAllowLiteralStatus(factoryOption: boolean | undefined, compositionOption: boolean | undefined): boolean;
107
- //# sourceMappingURL=literal-status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"literal-status.d.ts","sourceRoot":"","sources":["../../../src/core/validation/literal-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAaH,oDAAoD;AACpD,MAAM,MAAM,qBAAqB;AAC/B,0DAA0D;AACxD,SAAS;AACX,iEAAiE;GAC/D,kBAAkB,CAAC;AAEvB,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;CACtC;AAgQD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EAC7D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,SAAS,iBAAiB,EAAE,CAU9B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GAAG,MAAM,CA0BtF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,iBAAiB,EAAE,OAAO,GAAG,SAAS,GACrC,OAAO,CAET"}