typekro 0.34.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/alchemy/clickhouse-schema/executor.d.ts +25 -0
  3. package/dist/alchemy/clickhouse-schema/executor.d.ts.map +1 -0
  4. package/dist/alchemy/clickhouse-schema/executor.js +144 -0
  5. package/dist/alchemy/clickhouse-schema/executor.js.map +1 -0
  6. package/dist/alchemy/clickhouse-schema/index.d.ts +12 -0
  7. package/dist/alchemy/clickhouse-schema/index.d.ts.map +1 -0
  8. package/dist/alchemy/clickhouse-schema/index.js +11 -0
  9. package/dist/alchemy/clickhouse-schema/index.js.map +1 -0
  10. package/dist/alchemy/clickhouse-schema/resource.d.ts +54 -0
  11. package/dist/alchemy/clickhouse-schema/resource.d.ts.map +1 -0
  12. package/dist/alchemy/clickhouse-schema/resource.js +158 -0
  13. package/dist/alchemy/clickhouse-schema/resource.js.map +1 -0
  14. package/dist/alchemy/clickhouse-schema/runner.d.ts +154 -0
  15. package/dist/alchemy/clickhouse-schema/runner.d.ts.map +1 -0
  16. package/dist/alchemy/clickhouse-schema/runner.js +613 -0
  17. package/dist/alchemy/clickhouse-schema/runner.js.map +1 -0
  18. package/dist/alchemy/clickhouse-schema/sql.d.ts +109 -0
  19. package/dist/alchemy/clickhouse-schema/sql.d.ts.map +1 -0
  20. package/dist/alchemy/clickhouse-schema/sql.js +368 -0
  21. package/dist/alchemy/clickhouse-schema/sql.js.map +1 -0
  22. package/dist/alchemy/clickhouse-schema/types.d.ts +394 -0
  23. package/dist/alchemy/clickhouse-schema/types.d.ts.map +1 -0
  24. package/dist/alchemy/clickhouse-schema/types.js +370 -0
  25. package/dist/alchemy/clickhouse-schema/types.js.map +1 -0
  26. package/dist/alchemy/index.d.ts +1 -0
  27. package/dist/alchemy/index.d.ts.map +1 -1
  28. package/dist/alchemy/index.js +2 -0
  29. package/dist/alchemy/index.js.map +1 -1
  30. package/dist/alchemy/kro-delete.d.ts +7 -0
  31. package/dist/alchemy/kro-delete.d.ts.map +1 -1
  32. package/dist/alchemy/kro-delete.js +28 -4
  33. package/dist/alchemy/kro-delete.js.map +1 -1
  34. package/dist/alchemy/resource-registration.d.ts +9 -2
  35. package/dist/alchemy/resource-registration.d.ts.map +1 -1
  36. package/dist/alchemy/resource-registration.js +117 -33
  37. package/dist/alchemy/resource-registration.js.map +1 -1
  38. package/dist/core/deployment/k8s-helpers.d.ts +77 -1
  39. package/dist/core/deployment/k8s-helpers.d.ts.map +1 -1
  40. package/dist/core/deployment/k8s-helpers.js +298 -17
  41. package/dist/core/deployment/k8s-helpers.js.map +1 -1
  42. package/dist/core/deployment/kro-artifact-binding-migration.d.ts +17 -6
  43. package/dist/core/deployment/kro-artifact-binding-migration.d.ts.map +1 -1
  44. package/dist/core/deployment/kro-artifact-binding-migration.js +16 -2
  45. package/dist/core/deployment/kro-artifact-binding-migration.js.map +1 -1
  46. package/dist/core/deployment/kro-namespace-teardown.d.ts +15 -1
  47. package/dist/core/deployment/kro-namespace-teardown.d.ts.map +1 -1
  48. package/dist/core/deployment/kro-namespace-teardown.js +34 -9
  49. package/dist/core/deployment/kro-namespace-teardown.js.map +1 -1
  50. package/dist/core/deployment/kro-readiness.d.ts +35 -0
  51. package/dist/core/deployment/kro-readiness.d.ts.map +1 -1
  52. package/dist/core/deployment/kro-readiness.js +201 -25
  53. package/dist/core/deployment/kro-readiness.js.map +1 -1
  54. package/dist/core/deployment/poll-timeout.d.ts +80 -2
  55. package/dist/core/deployment/poll-timeout.d.ts.map +1 -1
  56. package/dist/core/deployment/poll-timeout.js +164 -4
  57. package/dist/core/deployment/poll-timeout.js.map +1 -1
  58. package/dist/core/kubernetes/bun-http-library.d.ts +24 -0
  59. package/dist/core/kubernetes/bun-http-library.d.ts.map +1 -1
  60. package/dist/core/kubernetes/bun-http-library.js +146 -19
  61. package/dist/core/kubernetes/bun-http-library.js.map +1 -1
  62. package/dist/core/kubernetes/errors.d.ts +9 -0
  63. package/dist/core/kubernetes/errors.d.ts.map +1 -1
  64. package/dist/core/kubernetes/errors.js +7 -3
  65. package/dist/core/kubernetes/errors.js.map +1 -1
  66. package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts +24 -2
  67. package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts.map +1 -1
  68. package/dist/factories/clickhouse/compositions/clickhouse-cluster.js +24 -2
  69. package/dist/factories/clickhouse/compositions/clickhouse-cluster.js.map +1 -1
  70. package/dist/factories/clickhouse/resources/keeper.d.ts +61 -0
  71. package/dist/factories/clickhouse/resources/keeper.d.ts.map +1 -1
  72. package/dist/factories/clickhouse/resources/keeper.js +216 -2
  73. package/dist/factories/clickhouse/resources/keeper.js.map +1 -1
  74. package/dist/factories/clickhouse/resources/s3-backup.d.ts.map +1 -1
  75. package/dist/factories/clickhouse/resources/s3-backup.js +4 -3
  76. package/dist/factories/clickhouse/resources/s3-backup.js.map +1 -1
  77. package/dist/factories/clickhouse/types.d.ts +3 -2
  78. package/dist/factories/clickhouse/types.d.ts.map +1 -1
  79. package/dist/factories/clickhouse/types.js +28 -1
  80. package/dist/factories/clickhouse/types.js.map +1 -1
  81. package/dist/factories/clickhouse/utils/validation.d.ts +133 -10
  82. package/dist/factories/clickhouse/utils/validation.d.ts.map +1 -1
  83. package/dist/factories/clickhouse/utils/validation.js +165 -18
  84. package/dist/factories/clickhouse/utils/validation.js.map +1 -1
  85. package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts +15 -1
  86. package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts.map +1 -1
  87. package/dist/factories/clickstack/compositions/clickstack-bootstrap.js +15 -1
  88. package/dist/factories/clickstack/compositions/clickstack-bootstrap.js.map +1 -1
  89. package/dist/factories/rook/types.d.ts +16 -16
  90. package/package.json +1 -1
@@ -0,0 +1,370 @@
1
+ /**
2
+ * Types, validation schema and errors for the `ClickHouseSchema` alchemy resource.
3
+ *
4
+ * The configurable surface is ArkType-first: {@link ClickHouseSchemaConfigSchema} is the
5
+ * single source of truth and the config types are INFERRED from it, so a field cannot
6
+ * exist in the type without existing in the schema that validates it. Only the two
7
+ * fields ArkType cannot express usefully are declared separately on
8
+ * {@link ClickHouseSchemaProps}: `kubeConfig` (a structural TypeScript type owned by the
9
+ * client provider) and `executor` (a runtime-only injection point, deliberately not
10
+ * serializable — mirroring `TypeKroResourceProps.deployer`).
11
+ */
12
+ import { type } from 'arktype';
13
+ import { TypeKroError } from '../../core/errors.js';
14
+ import { extractStatementSecrets, validateOnClusterStatement } from './sql.js';
15
+ /**
16
+ * Accepted shape for a ClickHouse user or database name.
17
+ *
18
+ * Every value that reaches the container is embedded in a single-quoted `sh -c`
19
+ * word, so a value containing a quote could close that word. It cannot: names are
20
+ * restricted here to characters that are inert in both the shell and
21
+ * `clickhouse-client`'s own argument parsing, and the renderer single-quotes them
22
+ * anyway (defence in depth, the same pairing the S3 backup CronJob uses).
23
+ */
24
+ const CLICKHOUSE_NAME_PATTERN = /^[A-Za-z0-9_][A-Za-z0-9_.-]*$/;
25
+ /** POSIX environment variable name — what `--password "$VAR"` can expand. */
26
+ const ENV_VAR_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
27
+ /** `--<setting>=<value>` setting name, matching ClickHouse's own setting identifiers. */
28
+ const SETTING_NAME_PATTERN = /^[a-z_][a-z0-9_]*$/;
29
+ /** Setting value: scalars only. Anything needing quoting belongs in a statement. */
30
+ const SETTING_VALUE_PATTERN = /^[A-Za-z0-9_.,:+-]+$/;
31
+ /** Kubernetes label key: optional DNS-subdomain prefix plus a name segment. */
32
+ const LABEL_KEY_PATTERN = /^(?:[a-z0-9](?:[a-z0-9.-]{0,251}[a-z0-9])?\/)?[A-Za-z0-9](?:[A-Za-z0-9_.-]{0,61}[A-Za-z0-9])?$/;
33
+ /** Kubernetes label value: empty, or up to 63 alphanumeric-delimited characters. */
34
+ const LABEL_VALUE_PATTERN = /^(?:[A-Za-z0-9](?:[A-Za-z0-9_.-]{0,61}[A-Za-z0-9])?)?$/;
35
+ /**
36
+ * A plaintext credential must never be representable in props: it would be persisted
37
+ * verbatim into the alchemy state store. `client` therefore REJECTS undeclared keys, so
38
+ * `password` (and any near-miss spelling of it) fails validation instead of being
39
+ * silently dropped and leaving the author believing they configured authentication.
40
+ */
41
+ export const ClickHouseSchemaClientSchema = type({
42
+ 'user?': 'string > 0',
43
+ /**
44
+ * Name of the environment variable holding the password INSIDE the target container.
45
+ * The value is never read by TypeKro, never echoed, and never enters props or state.
46
+ */
47
+ 'passwordEnv?': 'string > 0',
48
+ 'database?': 'string > 0',
49
+ 'port?': 'number.integer > 0',
50
+ })
51
+ .onUndeclaredKey('reject')
52
+ .narrow((client, ctx) => {
53
+ if (client.user !== undefined && !CLICKHOUSE_NAME_PATTERN.test(client.user)) {
54
+ return ctx.mustBe('a ClickHouse user name matching [A-Za-z0-9_][A-Za-z0-9_.-]*');
55
+ }
56
+ if (client.database !== undefined && !CLICKHOUSE_NAME_PATTERN.test(client.database)) {
57
+ return ctx.mustBe('a ClickHouse database name matching [A-Za-z0-9_][A-Za-z0-9_.-]*');
58
+ }
59
+ if (client.passwordEnv !== undefined && !ENV_VAR_NAME_PATTERN.test(client.passwordEnv)) {
60
+ return ctx.mustBe('an environment variable name matching [A-Za-z_][A-Za-z0-9_]*');
61
+ }
62
+ if (client.port !== undefined && client.port > 65535) {
63
+ return ctx.mustBe('a TCP port <= 65535');
64
+ }
65
+ return true;
66
+ });
67
+ /** How to reach the ClickHouse server: a namespace, a label selector, and a container. */
68
+ export const ClickHouseSchemaTargetSchema = type({
69
+ namespace: 'string > 0',
70
+ /**
71
+ * Label selector for the server pods — e.g. the Altinity CHI label
72
+ * `{ 'clickhouse.altinity.com/chi': 'orders' }`.
73
+ *
74
+ * Which of the matching pods are used is the execution model's business, not the
75
+ * selector's: `fanout` executes against every matching pod and requires all of them to
76
+ * be Ready, `onCluster` against the first Ready one. A selector that also matches
77
+ * non-server pods therefore fails a `fanout` converge rather than quietly skipping them
78
+ * — narrow it. See {@link ClickHouseSchemaExecutionSchema}.
79
+ */
80
+ podSelector: 'Record<string, string>',
81
+ /** Container to exec into. Defaults to the CHI server container, `clickhouse`. */
82
+ 'container?': 'string > 0',
83
+ }).narrow((target, ctx) => {
84
+ const entries = Object.entries(target.podSelector);
85
+ if (entries.length === 0) {
86
+ return ctx.mustBe('a non-empty pod label selector');
87
+ }
88
+ for (const [key, value] of entries) {
89
+ if (!LABEL_KEY_PATTERN.test(key)) {
90
+ return ctx.mustBe(`a valid Kubernetes label key (got '${key}')`);
91
+ }
92
+ if (!LABEL_VALUE_PATTERN.test(value)) {
93
+ return ctx.mustBe(`a valid Kubernetes label value for '${key}'`);
94
+ }
95
+ }
96
+ return true;
97
+ });
98
+ /** Bounded wait for a Ready server pod before the first exec. */
99
+ export const ClickHouseSchemaWaitForPodSchema = type({
100
+ timeoutMs: 'number.integer > 0',
101
+ });
102
+ /** Bounded retry of TRANSIENT exec failures. A SQL error is never retried. */
103
+ export const ClickHouseSchemaRetrySchema = type({
104
+ 'maxAttempts?': 'number.integer > 0',
105
+ 'backoffMs?': 'number.integer >= 0',
106
+ });
107
+ /**
108
+ * How the statements reach EVERY server, not just the one the exec landed on.
109
+ *
110
+ * ClickHouse DDL is server-local by default. `CREATE TABLE …` executed on one pod creates
111
+ * that table on that pod and nowhere else, so on a multi-replica or multi-shard
112
+ * deployment a converge that touches a single pod reports success while the rest of the
113
+ * cluster has no schema — and then never tries again, because the fingerprint says the
114
+ * work is done. Two mechanisms make DDL cluster-wide, and this resource requires one of
115
+ * them to be chosen explicitly:
116
+ *
117
+ * - `fanout` (the default) — TypeKro runs the ordered statement list against EVERY pod
118
+ * matching the selector, in turn. It needs nothing from the cluster (no Keeper, no
119
+ * `Replicated` database engine) and leans on exactly the idempotence the statements
120
+ * already promise. It is ALL OR NOTHING: every matching pod that is not terminating or
121
+ * finished must become Ready within `waitForPod.timeoutMs` and must carry the requested
122
+ * container, or the converge fails — so a StatefulSet mid-rollout makes the resource
123
+ * wait, and then fail, rather than fingerprint a half-applied schema. The pod set is
124
+ * recorded in state, so a scale-out or a replaced pod re-applies even though the
125
+ * statements did not change. A single-replica installation is a one-pod fanout — which
126
+ * is why the default is also the correct setting there.
127
+ * - `onCluster` — the statements distribute themselves and TypeKro runs them ONCE, on the
128
+ * first Ready pod; pods that are still rolling are Keeper's problem, not this converge's,
129
+ * which is what makes this the right mode on a large cluster. That is only true if each
130
+ * statement actually says so, so every statement is validated at construction; see
131
+ * {@link ClickHouseSchemaConfigSchema}.
132
+ *
133
+ * @see https://clickhouse.com/docs/sql-reference/distributed-ddl
134
+ */
135
+ export const ClickHouseSchemaExecutionSchema = type({ mode: "'fanout'" }).or({
136
+ mode: "'onCluster'",
137
+ /** The `ON CLUSTER` target — a CHI's `clusterName`, which defaults to `cluster`. */
138
+ cluster: 'string > 0',
139
+ });
140
+ /** Applied when an author declares no execution model. */
141
+ export const DEFAULT_EXECUTION = { mode: 'fanout' };
142
+ /**
143
+ * The configurable (serializable) surface of a `ClickHouseSchema` resource.
144
+ *
145
+ * IDEMPOTENCE IS THE AUTHOR'S CONTRACT. Every statement is re-run whenever the
146
+ * fingerprint changes, so each one must be safe to execute against a database where
147
+ * it has already been executed: `CREATE DATABASE IF NOT EXISTS`, `CREATE TABLE IF NOT
148
+ * EXISTS`, `CREATE OR REPLACE VIEW`, `ALTER TABLE ... ADD COLUMN IF NOT EXISTS`,
149
+ * `DROP ... IF EXISTS`. TypeKro cannot verify that property — it does not parse SQL —
150
+ * so a non-idempotent statement surfaces as a converge that fails the second time.
151
+ */
152
+ export const ClickHouseSchemaConfigSchema = type({
153
+ target: ClickHouseSchemaTargetSchema,
154
+ 'client?': ClickHouseSchemaClientSchema,
155
+ /** Ordered DDL. Executed in array order; each must be individually idempotent. */
156
+ statements: 'string[] > 0',
157
+ /** Passed to `clickhouse-client` as `--<setting>=<value>`. Identifiers validated. */
158
+ 'settings?': 'Record<string, string | number>',
159
+ /**
160
+ * `retain` (the default) leaves every object in place on delete: a schema resource
161
+ * must never drop data because a stack was torn down. `run` executes
162
+ * {@link deleteStatements} instead, which is the only way to express a destructive
163
+ * teardown and requires spelling out exactly what gets dropped.
164
+ */
165
+ onDelete: "'retain' | 'run' = 'retain'",
166
+ 'deleteStatements?': 'string[]',
167
+ 'waitForPod?': ClickHouseSchemaWaitForPodSchema,
168
+ /**
169
+ * `fanout` only: how many times an apply re-lists and applies to pods that appeared
170
+ * while it was running, before failing rather than recording a partial apply.
171
+ *
172
+ * Defaults to 3. A settled cluster costs exactly one pass, so raising this only matters
173
+ * on a cluster whose topology is moving throughout the converge; the whole loop is also
174
+ * bounded by `waitForPod.timeoutMs`, spent across the passes rather than renewed by each
175
+ * one. Deliberately NOT part of the fingerprint: like `waitForPod`, `retry` and
176
+ * `statementTimeoutMs`, it says how the apply is driven, not what is applied, so changing
177
+ * it must not re-run DDL. Ignored under `onCluster`, which has no coverage to reconcile.
178
+ */
179
+ 'maxReconcilePasses?': 'number.integer > 0',
180
+ /** Per-statement exec timeout. A long `CREATE MATERIALIZED VIEW ... POPULATE` may need more. */
181
+ 'statementTimeoutMs?': 'number.integer > 0',
182
+ 'retry?': ClickHouseSchemaRetrySchema,
183
+ /** How the DDL reaches every server. Defaults to `fanout`. */
184
+ execution: ClickHouseSchemaExecutionSchema.default(() => DEFAULT_EXECUTION),
185
+ })
186
+ // Undeclared keys are REJECTED, for the same reason `client` rejects them: a
187
+ // misunderstood option that is silently dropped leaves the author believing they
188
+ // configured something. It is also what retires `replicatedDatabases` — an allow-list
189
+ // that used to accept clause-free `onCluster` statements, and did so by inspecting a
190
+ // statement's references rather than its DDL target — loudly rather than by ignoring it.
191
+ .onUndeclaredKey('reject')
192
+ .narrow((config, ctx) => {
193
+ const blank = config.statements.findIndex((statement) => statement.trim().length === 0);
194
+ if (blank !== -1) {
195
+ return ctx.mustBe(`non-empty statements (statement ${blank} is blank)`);
196
+ }
197
+ if (config.onDelete === 'run') {
198
+ if (config.deleteStatements === undefined || config.deleteStatements.length === 0) {
199
+ return ctx.mustBe("accompanied by a non-empty 'deleteStatements' when onDelete is 'run'");
200
+ }
201
+ const blankDelete = config.deleteStatements.findIndex((s) => s.trim().length === 0);
202
+ if (blankDelete !== -1) {
203
+ return ctx.mustBe(`non-empty deleteStatements (statement ${blankDelete} is blank)`);
204
+ }
205
+ }
206
+ else if (config.deleteStatements !== undefined) {
207
+ // Rejected rather than ignored: statements that can never run are a silent footgun,
208
+ // and the author who wrote them believes teardown is covered.
209
+ return ctx.mustBe("declared without 'deleteStatements' when onDelete is 'retain'");
210
+ }
211
+ for (const [name, value] of Object.entries(config.settings ?? {})) {
212
+ if (!SETTING_NAME_PATTERN.test(name)) {
213
+ return ctx.mustBe(`a ClickHouse setting name matching [a-z_][a-z0-9_]* (got '${name}')`);
214
+ }
215
+ if (!SETTING_VALUE_PATTERN.test(String(value))) {
216
+ return ctx.mustBe(`a scalar setting value for '${name}'`);
217
+ }
218
+ }
219
+ // `onCluster` is a PROMISE that one execution reaches every server, and the ONLY thing
220
+ // accepted as proof is an explicit `ON CLUSTER <cluster>` clause. It is checked here,
221
+ // at construction, rather than at converge time: a statement that cannot keep the
222
+ // promise would otherwise apply to one replica, record a fingerprint, and never be
223
+ // retried. TypeKro validates and refuses — it never edits the author's SQL to make the
224
+ // promise true, and it never infers cluster-wideness from a statement's shape.
225
+ if (config.execution.mode === 'onCluster') {
226
+ const cluster = config.execution.cluster;
227
+ const lists = [
228
+ ['statements', config.statements],
229
+ ['deleteStatements', config.deleteStatements ?? []],
230
+ ];
231
+ for (const [field, statements] of lists) {
232
+ for (const [index, statement] of statements.entries()) {
233
+ const reason = validateOnClusterStatement(statement, cluster);
234
+ if (reason !== undefined) {
235
+ return ctx.mustBe(`cluster-wide under execution.mode 'onCluster' (${field} ${index} ${reason})`);
236
+ }
237
+ }
238
+ }
239
+ }
240
+ return true;
241
+ });
242
+ /**
243
+ * A statement failed, a pod never became Ready, or the transport gave up.
244
+ *
245
+ * SECURITY: the failing statement's TEXT is never carried on the error — only its
246
+ * INDEX. Statements should not contain credentials (bind them through the server's own
247
+ * configuration, as the S3 storage compiler does), but a `CREATE TABLE ... S3(...,
248
+ * aws_secret_access_key)` would, and ClickHouse echoes the offending fragment back in
249
+ * its own message. Every message that reaches this error is passed through
250
+ * {@link redactClickHouseText} first.
251
+ */
252
+ export class ClickHouseSchemaError extends TypeKroError {
253
+ resourceId;
254
+ statementIndex;
255
+ clickHouseCode;
256
+ detail;
257
+ clickHouseException;
258
+ constructor(message,
259
+ /** The alchemy resource `id` — the logical name the author gave THIS schema. */
260
+ resourceId,
261
+ /** Index into `statements` (or `deleteStatements`), or `undefined` outside statement execution. */
262
+ statementIndex,
263
+ /** ClickHouse's own error code, parsed from `Code: <n>.`, when the server produced one. */
264
+ clickHouseCode,
265
+ /** Redacted, length-capped server output — see {@link redactClickHouseOutput}. */
266
+ detail,
267
+ /** ClickHouse's exception class (`DB::Exception`, `DB::NetException`, …). */
268
+ clickHouseException, options) {
269
+ super(message, 'CLICKHOUSE_SCHEMA_ERROR', { resourceId, statementIndex, clickHouseCode, clickHouseException, detail }, options);
270
+ this.resourceId = resourceId;
271
+ this.statementIndex = statementIndex;
272
+ this.clickHouseCode = clickHouseCode;
273
+ this.detail = detail;
274
+ this.clickHouseException = clickHouseException;
275
+ this.name = 'ClickHouseSchemaError';
276
+ }
277
+ }
278
+ /**
279
+ * Patterns whose surroundings are redacted out of any text that leaves the container.
280
+ *
281
+ * Matched case-insensitively against a whole line, because ClickHouse reports a bad
282
+ * table definition by quoting the definition — which is precisely where a secret would
283
+ * be if one were ever written into a statement.
284
+ *
285
+ * This is the SECOND layer only. It cannot see a credential the server echoes without a
286
+ * nearby keyword, which is exactly what a positional table function produces:
287
+ * `S3('https://…', 'AKIA…', 'wJalr…', 'CSV')` has the secret in argument three and the
288
+ * word "secret" nowhere. {@link redactClickHouseOutput} is the first layer and does not
289
+ * rely on keywords at all.
290
+ */
291
+ const SECRET_LINE_PATTERN = /password|secret|aws_secret|access_key|credential|token/i;
292
+ /** Replace every line that could carry a credential with a marker. */
293
+ export function redactClickHouseText(text) {
294
+ return text
295
+ .split('\n')
296
+ .map((line) => (SECRET_LINE_PATTERN.test(line) ? '[redacted]' : line))
297
+ .join('\n');
298
+ }
299
+ /**
300
+ * Ceiling on the server text retained on an error (~2 KiB).
301
+ *
302
+ * An echo is a diagnostic aid, not a log sink: a `DESCRIBE`-sized dump or a multi-megabyte
303
+ * parser trace carried into alchemy state and every log line is a liability of its own,
304
+ * independent of whether it contains a secret.
305
+ */
306
+ export const MAX_RETAINED_DETAIL_CHARS = 2048;
307
+ const TRUNCATION_MARKER = '… [truncated]';
308
+ /**
309
+ * What survives from a failed exec's captured output.
310
+ *
311
+ * The contract is NOT "server output with credentials filtered out" — that framing is how
312
+ * the keyword-matching version came to leak. It is: keep what identifies the failure, and
313
+ * treat every value the SUBMITTED statement contained as a secret.
314
+ *
315
+ * In order:
316
+ *
317
+ * 1. The statement text itself is replaced wherever the server echoed it back, so a
318
+ * definition quoted in full cannot smuggle its own literals through.
319
+ * 2. Every literal the statement contains — every single-quoted value, plus whatever
320
+ * follows `PASSWORD` / `IDENTIFIED BY` / `access_key_id` / `secret_access_key` /
321
+ * `aws_access_key_id` / `aws_secret_access_key` / `token` — is replaced with
322
+ * `<redacted>` wherever it appears. This is positional, so it catches the arguments
323
+ * keyword matching cannot name. Each literal is redacted in EVERY spelling it could be
324
+ * echoed in, longest first: the decoded value, the raw source slice between the quotes,
325
+ * and the value re-escaped both ways ClickHouse accepts (`\'` and `''`). A credential
326
+ * containing a quote is one secret with several spellings, and the server frequently
327
+ * quotes back the one it was given rather than the one it decoded.
328
+ * 3. The keyword line filter runs as a second layer, for text the statement did not
329
+ * account for.
330
+ * 4. The result is capped at {@link MAX_RETAINED_DETAIL_CHARS}.
331
+ *
332
+ * ClickHouse's error CODE and exception class are parsed out BEFORE any of this and
333
+ * carried separately on the error, so redaction never costs the caller the one part of
334
+ * the message that says what went wrong.
335
+ */
336
+ export function redactClickHouseOutput(output, statement) {
337
+ let text = output;
338
+ if (statement !== undefined) {
339
+ const trimmed = statement.trim();
340
+ if (trimmed.length >= 8)
341
+ text = text.split(trimmed).join('<redacted>');
342
+ for (const secret of extractStatementSecrets(statement)) {
343
+ text = text.split(secret).join('<redacted>');
344
+ }
345
+ }
346
+ text = redactClickHouseText(text);
347
+ return text.length <= MAX_RETAINED_DETAIL_CHARS
348
+ ? text
349
+ : `${text.slice(0, MAX_RETAINED_DETAIL_CHARS)}${TRUNCATION_MARKER}`;
350
+ }
351
+ /** Parse ClickHouse's `Code: 62. DB::Exception: …` prefix out of server output. */
352
+ export function parseClickHouseErrorCode(text) {
353
+ const match = /Code:\s*(\d+)/.exec(text);
354
+ if (!match?.[1])
355
+ return undefined;
356
+ const code = Number.parseInt(match[1], 10);
357
+ return Number.isNaN(code) ? undefined : code;
358
+ }
359
+ /**
360
+ * Parse the exception CLASS (`DB::Exception`, `DB::NetException`, `Poco::Exception`) out
361
+ * of server output.
362
+ *
363
+ * Retained alongside the numeric code because the two say different things: the code
364
+ * names the condition, the class says which subsystem raised it — and neither can carry
365
+ * a credential, so both survive redaction intact.
366
+ */
367
+ export function parseClickHouseExceptionName(text) {
368
+ return /\b([A-Za-z][A-Za-z0-9_]*(?:::[A-Za-z][A-Za-z0-9_]*)+)/.exec(text)?.[1];
369
+ }
370
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/alchemy/clickhouse-schema/types.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * Uses dynamic resource registration to avoid "Resource already exists" errors.
8
8
  */
9
+ export { applyClickHouseSchema, CLICKHOUSE_SCHEMA_RESOURCE_TYPE, type ClickHouseExecCommand, type ClickHouseExecResult, type ClickHouseExecutor, type ClickHousePodSummary, ClickHouseSchema, type ClickHouseSchemaAppliedPod, type ClickHouseSchemaClient, ClickHouseSchemaClientSchema, type ClickHouseSchemaConfig, type ClickHouseSchemaConfigInput, ClickHouseSchemaConfigSchema, ClickHouseSchemaError, type ClickHouseSchemaExecution, ClickHouseSchemaExecutionSchema, type ClickHouseSchemaProps, type ClickHouseSchemaR, type ClickHouseSchemaResourceProps, type ClickHouseSchemaRunContext, type ClickHouseSchemaRuntimeDeps, type ClickHouseSchemaState, type ClickHouseSchemaTarget, ClickHouseSchemaTargetSchema, type ClickHouseSqlToken, clickHouseSchema, clickHouseSchemaProvider, computeFingerprint, DEFAULT_CLICKHOUSE_CONTAINER, DEFAULT_CLICKHOUSE_DATABASE, DEFAULT_CLICKHOUSE_PASSWORD_ENV, DEFAULT_CLICKHOUSE_PORT, DEFAULT_CLICKHOUSE_USER, DEFAULT_EXECUTION, DEFAULT_MAX_RECONCILE_PASSES, DEFAULT_STATEMENT_TIMEOUT_MS, DEFAULT_WAIT_FOR_POD_TIMEOUT_MS, deleteClickHouseSchema, escapeClickHouseString, extractStatementSecrets, KubeExecClickHouseExecutor, leadingKeyword, MAX_RETAINED_DETAIL_CHARS, needsApply, parseClickHouseErrorCode, parseClickHouseExceptionName, redactClickHouseOutput, redactClickHouseText, renderClickHouseCommand, runStatements, selectExecutionPods, statementTargetsCluster, tokenizeClickHouseSql, validateOnClusterStatement, } from './clickhouse-schema/index.js';
9
10
  export { DirectTypeKroDeployer, KroTypeKroDeployer } from './deployers.js';
10
11
  export type { AlchemyPromise, AlchemyResolutionContext, AlchemyResource } from './resolver.js';
11
12
  export { buildResourceGraphWithDeferredResolution, containsAlchemyPromises, createAlchemyReferenceResolver, createAlchemyResourceConfig, createAlchemyResourceConfigs, extractAlchemyPromises, hasMixedDependencies, isAlchemyPromise, isAlchemyResource, resolveAlchemyPromise, resolveAllReferences, resolveAllReferencesInAlchemyContext, resolveReferencesWithAlchemy, resolveTypeKroReferencesOnly, } from './resolver.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/alchemy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAG/F,OAAO,EACL,wCAAwC,EACxC,uBAAuB,EACvB,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oCAAoC,EACpC,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,mCAAmC,EAAE,MAAM,qBAAqB,CAAC;AAE1E,YAAY,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,kCAAkC,EAClC,6BAA6B,EAC7B,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/alchemy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,4BAA4B,EAC5B,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,EAC/B,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACd,yBAAyB,EACzB,UAAU,EACV,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAG/F,OAAO,EACL,wCAAwC,EACxC,uBAAuB,EACvB,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oCAAoC,EACpC,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,mCAAmC,EAAE,MAAM,qBAAqB,CAAC;AAE1E,YAAY,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,kCAAkC,EAClC,6BAA6B,EAC7B,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC"}
@@ -6,6 +6,8 @@
6
6
  *
7
7
  * Uses dynamic resource registration to avoid "Resource already exists" errors.
8
8
  */
9
+ // ClickHouse schema management: converge-time DDL applied through `pods/exec`.
10
+ export { applyClickHouseSchema, CLICKHOUSE_SCHEMA_RESOURCE_TYPE, ClickHouseSchema, ClickHouseSchemaClientSchema, ClickHouseSchemaConfigSchema, ClickHouseSchemaError, ClickHouseSchemaExecutionSchema, ClickHouseSchemaTargetSchema, clickHouseSchema, clickHouseSchemaProvider, computeFingerprint, DEFAULT_CLICKHOUSE_CONTAINER, DEFAULT_CLICKHOUSE_DATABASE, DEFAULT_CLICKHOUSE_PASSWORD_ENV, DEFAULT_CLICKHOUSE_PORT, DEFAULT_CLICKHOUSE_USER, DEFAULT_EXECUTION, DEFAULT_MAX_RECONCILE_PASSES, DEFAULT_STATEMENT_TIMEOUT_MS, DEFAULT_WAIT_FOR_POD_TIMEOUT_MS, deleteClickHouseSchema, escapeClickHouseString, extractStatementSecrets, KubeExecClickHouseExecutor, leadingKeyword, MAX_RETAINED_DETAIL_CHARS, needsApply, parseClickHouseErrorCode, parseClickHouseExceptionName, redactClickHouseOutput, redactClickHouseText, renderClickHouseCommand, runStatements, selectExecutionPods, statementTargetsCluster, tokenizeClickHouseSql, validateOnClusterStatement, } from './clickhouse-schema/index.js';
9
11
  // Deployer implementations
10
12
  export { DirectTypeKroDeployer, KroTypeKroDeployer } from './deployers.js';
11
13
  // Reference resolution
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/alchemy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,2BAA2B;AAC3B,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAG3E,uBAAuB;AACvB,OAAO,EACL,wCAAwC,EACxC,uBAAuB,EACvB,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oCAAoC,EACpC,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AAEvB,wFAAwF;AACxF,uFAAuF;AACvF,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,iBAAiB;AACjB,OAAO,EAAE,mCAAmC,EAAE,MAAM,qBAAqB,CAAC;AAa1E,oBAAoB;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,oBAAoB;AACpB,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/alchemy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAK/B,gBAAgB,EAGhB,4BAA4B,EAG5B,4BAA4B,EAC5B,qBAAqB,EAErB,+BAA+B,EAQ/B,4BAA4B,EAE5B,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,EAC/B,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACd,yBAAyB,EACzB,UAAU,EACV,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AACtC,2BAA2B;AAC3B,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAG3E,uBAAuB;AACvB,OAAO,EACL,wCAAwC,EACxC,uBAAuB,EACvB,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oCAAoC,EACpC,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AAEvB,wFAAwF;AACxF,uFAAuF;AACvF,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,iBAAiB;AACjB,OAAO,EAAE,mCAAmC,EAAE,MAAM,qBAAqB,CAAC;AAa1E,oBAAoB;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,oBAAoB;AACpB,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { KubeConfig } from '@kubernetes/client-node';
2
+ import { type HttpTimeoutConfig } from '../core/kubernetes/bun-api-client.js';
2
3
  import type { ResourceDeletionResult } from '../core/types/deployment.js';
3
4
  export interface KroDeletionOptions {
4
5
  apiVersion: string;
@@ -14,6 +15,12 @@ export interface KroDeletionOptions {
14
15
  group?: string;
15
16
  plural?: string;
16
17
  timeout?: number;
18
+ /**
19
+ * Per-verb request timeouts for the teardown's own Kubernetes calls. Without it the deletion
20
+ * path silently ignores a caller's configured `httpTimeouts` and falls back to the repo
21
+ * defaults — a `delete: 300_000` meant for slow finalizers would be cut at 180s.
22
+ */
23
+ httpTimeouts?: HttpTimeoutConfig;
17
24
  }
18
25
  interface CustomObjectListApi {
19
26
  listClusterCustomObject(request: {
@@ -1 +1 @@
1
- {"version":3,"file":"kro-delete.d.ts","sourceRoot":"","sources":["../../src/alchemy/kro-delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kro-delete.d.ts","sourceRoot":"","sources":["../../src/alchemy/kro-delete.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { CRDInstanceError, ensureError } from '../core/errors.js';
2
2
  import { blockerForRemainingResource, createDeletionResultState, deletionTarget, finishDeletionResult, readDeletionResourceIdentity, } from '../core/deployment/deletion-result.js';
3
+ import { callDeadlineBudget, withCallDeadline } from '../core/deployment/poll-timeout.js';
3
4
  import { createRollbackManager } from '../core/deployment/rollback-manager.js';
4
5
  import { createBunCompatibleCustomObjectsApi, createBunCompatibleKubernetesObjectApi, } from '../core/kubernetes/bun-api-client.js';
5
6
  import { getComponentLogger } from '../core/logging/index.js';
@@ -16,6 +17,23 @@ function getSchemaGroup(options) {
16
17
  function getInstanceApiVersion(options) {
17
18
  return `${getSchemaGroup(options)}/${getSchemaVersion(options.apiVersion)}`;
18
19
  }
20
+ /**
21
+ * Bound every request a teardown client issues.
22
+ *
23
+ * Teardown polls (`delete` then read to a real 404) re-check their deadline only BETWEEN
24
+ * iterations, so they rely on each request settling. A wedged call — a hung exec credential, an API
25
+ * server that accepts the connection and never answers — otherwise hangs the destroy the same way
26
+ * it hung reconcile, with no error and no log line. Capped by the deletion timeout so no single
27
+ * request outlives the teardown it belongs to. The INJECTED client is wrapped too, so the test
28
+ * seams exercise the bound rather than escaping it.
29
+ */
30
+ function boundDeletionCalls(api, options, phase, abortSignal) {
31
+ return withCallDeadline(api, {
32
+ budget: callDeadlineBudget(options.httpTimeouts, options.timeout),
33
+ label: `KRO ${options.kind} ${options.rgdName} (${phase})`,
34
+ ...(abortSignal ? { abortSignal } : {}),
35
+ });
36
+ }
19
37
  function getKubernetesErrorCode(error) {
20
38
  const k8sError = error;
21
39
  return k8sError.statusCode ?? k8sError.code ?? k8sError.body?.code;
@@ -57,8 +75,9 @@ function shouldPreserveRgd(instances, targetName, instanceDeleted, targetNamespa
57
75
  }
58
76
  async function lookupCRDPlural(kubeConfig, options, k8sApi = createBunCompatibleKubernetesObjectApi(kubeConfig)) {
59
77
  const logger = getComponentLogger('alchemy-kro-delete');
78
+ const boundedApi = boundDeletionCalls(k8sApi, options, 'crd-plural-lookup');
60
79
  try {
61
- const crds = (await k8sApi.list('apiextensions.k8s.io/v1', 'CustomResourceDefinition'));
80
+ const crds = (await boundedApi.list('apiextensions.k8s.io/v1', 'CustomResourceDefinition'));
62
81
  const match = crds.items?.find((crd) => crd.spec?.group === getSchemaGroup(options) && crd.spec?.names?.kind === options.kind);
63
82
  return match?.spec?.names?.plural;
64
83
  }
@@ -76,7 +95,8 @@ async function listKroInstances(kubeConfig, options, customApi = createBunCompat
76
95
  if (!plural) {
77
96
  return [];
78
97
  }
79
- const response = await customApi.listClusterCustomObject({
98
+ const boundedCustomApi = boundDeletionCalls(customApi, options, 'instance-list', abortSignal);
99
+ const response = await boundedCustomApi.listClusterCustomObject({
80
100
  group: getSchemaGroup(options),
81
101
  version: getSchemaVersion(options.apiVersion),
82
102
  plural,
@@ -112,7 +132,7 @@ export async function deleteKroDefinition(kubeConfig, options, k8sApi = createBu
112
132
  // ONE gating mechanism: the engine's rollback manager deletes then polls to a REAL 404
113
133
  // and THROWS on timeout — the SAME primitive the imperative KRO teardown uses. A
114
134
  // pre-existing 404 is treated as already-gone.
115
- const rollback = createRollbackManager(k8sApi);
135
+ const rollback = createRollbackManager(boundDeletionCalls(k8sApi, options, 'definition-delete', abortSignal));
116
136
  const timeout = options.timeout ?? 300000;
117
137
  // The RGD delete is a HARD gate (throws on timeout).
118
138
  try {
@@ -157,7 +177,11 @@ export async function deleteKroInstanceFinalizerSafe(kubeConfig, name, options,
157
177
  async function deleteKroInstanceFinalizerSafeWithApis(kubeConfig, name, options, apis, abortSignal) {
158
178
  throwIfAborted(abortSignal);
159
179
  const logger = getComponentLogger('alchemy-kro-delete');
160
- const { customApi, k8sApi, sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)), } = apis;
180
+ const { customApi: rawCustomApi, k8sApi: rawK8sApi, sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)), } = apis;
181
+ const k8sApi = boundDeletionCalls(rawK8sApi, options, 'instance-delete', abortSignal);
182
+ const customApi = rawCustomApi
183
+ ? boundDeletionCalls(rawCustomApi, options, 'instance-delete', abortSignal)
184
+ : rawCustomApi;
161
185
  const apiVersion = getInstanceApiVersion(options);
162
186
  const timeout = options.timeout ?? 300000;
163
187
  const deletion = createDeletionResultState('kro', options.rgdName, name);
@@ -1 +1 @@
1
- {"version":3,"file":"kro-delete.js","sourceRoot":"","sources":["../../src/alchemy/kro-delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kro-delete.js","sourceRoot":"","sources":["../../src/alchemy/kro-delete.ts"],"names":[],"mappings":"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"}
@@ -104,9 +104,11 @@ declare function waitForPersistedIdentityDeletion(props: TypeKroResourceProps<En
104
104
  * prop-diff responsibility; controller-owned status evolution stays a no-op.
105
105
  * A non-404 read failure is never evidence of drift absence and fails closed.
106
106
  */
107
- declare function detectKroResourceIdentityDrift(props: TypeKroResourceProps<Enhanced<unknown, unknown>>, output: TypeKroResource<Enhanced<unknown, unknown>> | undefined, reader?: KroResourceIdentityReader): Promise<{
107
+ declare function detectKroResourceIdentityDrift(props: TypeKroResourceProps<Enhanced<unknown, unknown>>, output: TypeKroResource<Enhanced<unknown, unknown>> | undefined, reader?: KroResourceIdentityReader, abortSignal?: AbortSignal): Promise<{
108
108
  readonly action: 'update';
109
109
  } | undefined>;
110
+ /** Test hook for the singleton-owner spec-drift gate (fail-closed on a wedged read). */
111
+ export declare const assertNoSingletonDriftForTest: typeof _assertNoSingletonDrift;
110
112
  /** Test hook for persisted-state Kubernetes drift decisions. */
111
113
  export declare const detectKroResourceIdentityDriftForTest: typeof detectKroResourceIdentityDrift;
112
114
  /** Test hook for terminating persisted-identity reconciliation. */
@@ -162,13 +164,18 @@ interface AlchemyPreHoistDeps {
162
164
  k8sApi?: infer A;
163
165
  } ? A : never : never;
164
166
  }
165
- declare function _existingInstanceNamespacesAlchemy<T extends Enhanced<unknown, unknown>>(props: TypeKroResourceProps<T>, kc: KubeConfig, logger: TypeKroLogger, deps?: AlchemyPreHoistDeps): Promise<Set<string>>;
167
+ declare function _existingInstanceNamespacesAlchemy<T extends Enhanced<unknown, unknown>>(props: TypeKroResourceProps<T>, kc: KubeConfig, logger: TypeKroLogger, deps?: AlchemyPreHoistDeps, abortSignal?: AbortSignal): Promise<Set<string>>;
166
168
  /**
167
169
  * Test-only export of the alchemy pre-hoist namespace resolver (finding #1, v7) so the
168
170
  * deterministic unit test can prove the per-instance-exact-or-fail-closed behavior with
169
171
  * injected API mocks (no cluster).
170
172
  */
171
173
  export declare const existingInstanceNamespacesAlchemyForTest: typeof _existingInstanceNamespacesAlchemy;
174
+ declare function _assertNoSingletonDrift<T extends Enhanced<unknown, unknown>>(props: TypeKroResourceProps<T>, logger: TypeKroLogger, abortSignal?: AbortSignal, deps?: {
175
+ readonly api?: {
176
+ read(spec: unknown): Promise<unknown>;
177
+ };
178
+ }): Promise<void>;
172
179
  /**
173
180
  * Decode one operation from the canonical KRO outer bundle persisted by
174
181
  * Alchemy. The operation record, rather than the JSON-flattened resource, is