alchemy 2.0.0-beta.64 → 2.0.0-beta.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/AWS/EC2/InternetGateway.d.ts.map +1 -1
- package/lib/AWS/EC2/InternetGateway.js +8 -3
- package/lib/AWS/EC2/InternetGateway.js.map +1 -1
- package/lib/AWS/EC2/LingeringEnis.d.ts +26 -0
- package/lib/AWS/EC2/LingeringEnis.d.ts.map +1 -0
- package/lib/AWS/EC2/LingeringEnis.js +128 -0
- package/lib/AWS/EC2/LingeringEnis.js.map +1 -0
- package/lib/AWS/EC2/SecurityGroup.d.ts.map +1 -1
- package/lib/AWS/EC2/SecurityGroup.js +14 -14
- package/lib/AWS/EC2/SecurityGroup.js.map +1 -1
- package/lib/AWS/EC2/Subnet.d.ts.map +1 -1
- package/lib/AWS/EC2/Subnet.js +13 -21
- package/lib/AWS/EC2/Subnet.js.map +1 -1
- package/lib/AWS/ECR/Image.d.ts +1 -0
- package/lib/AWS/ECR/Image.d.ts.map +1 -1
- package/lib/AWS/EKS/Addon.d.ts.map +1 -1
- package/lib/AWS/EKS/Addon.js +15 -3
- package/lib/AWS/EKS/Addon.js.map +1 -1
- package/lib/AWS/EKS/Deployment.d.ts +10 -1
- package/lib/AWS/EKS/Deployment.d.ts.map +1 -1
- package/lib/AWS/EKS/Deployment.js +10 -4
- package/lib/AWS/EKS/Deployment.js.map +1 -1
- package/lib/AWS/EKS/HyperPod.d.ts +57 -0
- package/lib/AWS/EKS/HyperPod.d.ts.map +1 -0
- package/lib/AWS/EKS/HyperPod.js +46 -0
- package/lib/AWS/EKS/HyperPod.js.map +1 -0
- package/lib/AWS/EKS/Job.d.ts +10 -1
- package/lib/AWS/EKS/Job.d.ts.map +1 -1
- package/lib/AWS/EKS/Job.js +16 -6
- package/lib/AWS/EKS/Job.js.map +1 -1
- package/lib/AWS/EKS/internal/client.d.ts +4 -3
- package/lib/AWS/EKS/internal/client.d.ts.map +1 -1
- package/lib/AWS/EKS/internal/client.js +33 -2
- package/lib/AWS/EKS/internal/client.js.map +1 -1
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +1 -1
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Providers.d.ts.map +1 -1
- package/lib/AWS/Providers.js +4 -1
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/AWS/SageMaker/Cluster.d.ts +327 -0
- package/lib/AWS/SageMaker/Cluster.d.ts.map +1 -0
- package/lib/AWS/SageMaker/Cluster.js +469 -0
- package/lib/AWS/SageMaker/Cluster.js.map +1 -0
- package/lib/AWS/SageMaker/ClusterSchedulerConfig.d.ts +96 -0
- package/lib/AWS/SageMaker/ClusterSchedulerConfig.d.ts.map +1 -0
- package/lib/AWS/SageMaker/ClusterSchedulerConfig.js +270 -0
- package/lib/AWS/SageMaker/ClusterSchedulerConfig.js.map +1 -0
- package/lib/AWS/SageMaker/ComputeQuota.d.ts +106 -0
- package/lib/AWS/SageMaker/ComputeQuota.d.ts.map +1 -0
- package/lib/AWS/SageMaker/ComputeQuota.js +268 -0
- package/lib/AWS/SageMaker/ComputeQuota.js.map +1 -0
- package/lib/AWS/SageMaker/index.d.ts +3 -0
- package/lib/AWS/SageMaker/index.d.ts.map +1 -1
- package/lib/AWS/SageMaker/index.js +3 -0
- package/lib/AWS/SageMaker/index.js.map +1 -1
- package/lib/Bundle/PurePlugin.d.ts +29 -7
- package/lib/Bundle/PurePlugin.d.ts.map +1 -1
- package/lib/Bundle/PurePlugin.js +56 -33
- package/lib/Bundle/PurePlugin.js.map +1 -1
- package/lib/Cli/commands/nuke.d.ts.map +1 -1
- package/lib/Cli/commands/nuke.js +231 -37
- package/lib/Cli/commands/nuke.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +1 -1
- package/lib/Cloudflare/Workers/Assets.d.ts +26 -8
- package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Assets.js +46 -1
- package/lib/Cloudflare/Workers/Assets.js.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +2 -2
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +39 -6
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +7 -5
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +0 -1
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +2 -2
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts +20 -1
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.js +11 -0
- package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.js +10 -4
- package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts +2 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.js +5 -5
- package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
- package/lib/Cloudflare/Workflows/index.d.ts +1 -1
- package/lib/Cloudflare/Workflows/index.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/index.js +1 -1
- package/lib/Cloudflare/Workflows/index.js.map +1 -1
- package/lib/Docker/Container.d.ts +26 -0
- package/lib/Docker/Container.d.ts.map +1 -1
- package/lib/Docker/Container.js +20 -1
- package/lib/Docker/Container.js.map +1 -1
- package/lib/Docker/Docker.d.ts +2 -0
- package/lib/Docker/Docker.d.ts.map +1 -1
- package/lib/Docker/Docker.js.map +1 -1
- package/lib/Output.d.ts +4 -1
- package/lib/Output.d.ts.map +1 -1
- package/lib/Output.js.map +1 -1
- package/lib/Provider.d.ts +20 -0
- package/lib/Provider.d.ts.map +1 -1
- package/lib/Provider.js.map +1 -1
- package/lib/Random.d.ts +1 -1
- package/lib/Random.d.ts.map +1 -1
- package/lib/Resource.d.ts +14 -1
- package/lib/Resource.d.ts.map +1 -1
- package/lib/Resource.js.map +1 -1
- package/lib/SQL/D1.d.ts +1 -1
- package/lib/SQL/D1.js +1 -1
- package/lib/SQL/Postgres.d.ts +1 -1
- package/lib/SQL/Postgres.js +1 -1
- package/lib/State/HttpStateApi.d.ts +11 -11
- package/lib/Test/Alchemy.d.ts +1 -1
- package/lib/Test/Alchemy.js +1 -1
- package/lib/Test/Vitest.d.ts +58 -0
- package/lib/Test/Vitest.d.ts.map +1 -0
- package/lib/Test/Vitest.js +114 -0
- package/lib/Test/Vitest.js.map +1 -0
- package/lib/Util/proxy-chain.d.ts +5 -0
- package/lib/Util/proxy-chain.d.ts.map +1 -1
- package/lib/Util/proxy-chain.js +52 -4
- package/lib/Util/proxy-chain.js.map +1 -1
- package/package.json +23 -15
- package/src/AWS/EC2/InternetGateway.ts +8 -3
- package/src/AWS/EC2/LingeringEnis.ts +169 -0
- package/src/AWS/EC2/SecurityGroup.ts +24 -28
- package/src/AWS/EC2/Subnet.ts +23 -34
- package/src/AWS/EKS/Addon.ts +17 -4
- package/src/AWS/EKS/Deployment.ts +26 -5
- package/src/AWS/EKS/HyperPod.ts +97 -0
- package/src/AWS/EKS/Job.ts +32 -7
- package/src/AWS/EKS/internal/client.ts +40 -3
- package/src/AWS/Lambda/Function.ts +5 -3
- package/src/AWS/Providers.ts +6 -0
- package/src/AWS/SageMaker/Cluster.ts +775 -0
- package/src/AWS/SageMaker/ClusterSchedulerConfig.ts +430 -0
- package/src/AWS/SageMaker/ComputeQuota.ts +426 -0
- package/src/AWS/SageMaker/index.ts +3 -0
- package/src/Bundle/PurePlugin.ts +92 -39
- package/src/Cli/commands/nuke.ts +295 -56
- package/src/Cloudflare/Workers/Assets.ts +53 -1
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +46 -7
- package/src/Cloudflare/Workers/Worker.ts +7 -5
- package/src/Cloudflare/Workers/WorkerBundle.ts +31 -1
- package/src/Cloudflare/Workers/WorkerProvider.ts +18 -4
- package/src/Cloudflare/Workflows/WorkflowBridge.ts +5 -5
- package/src/Cloudflare/Workflows/index.ts +1 -1
- package/src/Docker/Container.ts +30 -1
- package/src/Docker/Docker.ts +2 -0
- package/src/Output.ts +19 -11
- package/src/Provider.ts +20 -0
- package/src/Resource.ts +18 -1
- package/src/SQL/D1.ts +1 -1
- package/src/SQL/Postgres.ts +1 -1
- package/src/Test/Alchemy.ts +1 -1
- package/src/Test/Vitest.ts +244 -0
- package/src/Util/proxy-chain.ts +73 -4
- package/lib/SQL/index.d.ts +0 -4
- package/lib/SQL/index.d.ts.map +0 -1
- package/lib/SQL/index.js +0 -4
- package/lib/SQL/index.js.map +0 -1
- package/src/SQL/index.ts +0 -3
|
@@ -10,6 +10,7 @@ import { AwsClient } from "aws4fetch";
|
|
|
10
10
|
import * as Data from "effect/Data";
|
|
11
11
|
import * as Effect from "effect/Effect";
|
|
12
12
|
import * as Redacted from "effect/Redacted";
|
|
13
|
+
import * as Schedule from "effect/Schedule";
|
|
13
14
|
import * as https from "node:https";
|
|
14
15
|
import { AWSEnvironment } from "../../Environment.ts";
|
|
15
16
|
import {
|
|
@@ -30,7 +31,13 @@ export class KubernetesApiError extends Data.TaggedError("KubernetesApiError")<{
|
|
|
30
31
|
path: string;
|
|
31
32
|
statusCode: number;
|
|
32
33
|
body: string;
|
|
33
|
-
}> {
|
|
34
|
+
}> {
|
|
35
|
+
override get message(): string {
|
|
36
|
+
return `${this.method} ${this.path} responded ${this.statusCode}: ${
|
|
37
|
+
this.body.length > 0 ? this.body.slice(0, 1000) : "(empty body)"
|
|
38
|
+
}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
34
41
|
|
|
35
42
|
export interface KubernetesClusterConnection {
|
|
36
43
|
clusterName: string;
|
|
@@ -163,7 +170,20 @@ const requestJson = Effect.fn(function* ({
|
|
|
163
170
|
: new Error(
|
|
164
171
|
`Failed Kubernetes ${method} ${path}: ${error instanceof Error ? error.message : String(error)}`,
|
|
165
172
|
),
|
|
166
|
-
})
|
|
173
|
+
}).pipe(
|
|
174
|
+
// Transport-level failures (ECONNREFUSED/ECONNRESET/ETIMEDOUT/DNS)
|
|
175
|
+
// are transient — a fresh EKS endpoint's NLB can refuse connections
|
|
176
|
+
// for a short window after the cluster reports ACTIVE. Every request
|
|
177
|
+
// here is idempotent (GET / SSA PATCH / DELETE), so retry them; HTTP
|
|
178
|
+
// errors (KubernetesApiError) are handled by the callers.
|
|
179
|
+
Effect.retry({
|
|
180
|
+
while: (e): boolean => !(e instanceof KubernetesApiError),
|
|
181
|
+
schedule: Schedule.max([
|
|
182
|
+
Schedule.spaced("5 seconds"),
|
|
183
|
+
Schedule.recurs(8),
|
|
184
|
+
]),
|
|
185
|
+
}),
|
|
186
|
+
);
|
|
167
187
|
});
|
|
168
188
|
|
|
169
189
|
// ─────────────────────────────────────────────────────── kind discovery ──
|
|
@@ -285,7 +305,24 @@ export const applyObject = Effect.fn(function* ({
|
|
|
285
305
|
method: "PATCH",
|
|
286
306
|
path,
|
|
287
307
|
body: object,
|
|
288
|
-
})
|
|
308
|
+
}).pipe(
|
|
309
|
+
// A freshly ACTIVE cluster's API server briefly 5xxes while warming
|
|
310
|
+
// up, and the creator's bootstrap access entry propagates
|
|
311
|
+
// asynchronously (401/403 in the first minute) — retry transient
|
|
312
|
+
// failures for ~1 min.
|
|
313
|
+
Effect.retry({
|
|
314
|
+
while: (e): boolean =>
|
|
315
|
+
e instanceof KubernetesApiError &&
|
|
316
|
+
(e.statusCode >= 500 ||
|
|
317
|
+
e.statusCode === 429 ||
|
|
318
|
+
e.statusCode === 401 ||
|
|
319
|
+
e.statusCode === 403),
|
|
320
|
+
schedule: Schedule.max([
|
|
321
|
+
Schedule.spaced("6 seconds"),
|
|
322
|
+
Schedule.recurs(10),
|
|
323
|
+
]),
|
|
324
|
+
}),
|
|
325
|
+
);
|
|
289
326
|
});
|
|
290
327
|
|
|
291
328
|
export const deleteObject = Effect.fn(function* ({
|
|
@@ -1420,8 +1420,10 @@ export default handler;
|
|
|
1420
1420
|
// config untouched (precreate stub); `[]` explicitly clears mounts.
|
|
1421
1421
|
fileSystemConfigs?: Lambda.FileSystemConfig[];
|
|
1422
1422
|
// Effective VPC attachment (prop ∪ binding-channel requests).
|
|
1423
|
-
//
|
|
1424
|
-
//
|
|
1423
|
+
// Omitted for the precreate stub: `news` is UNRESOLVED at precreate
|
|
1424
|
+
// (Output-valued subnet/security-group ids would fail to serialize),
|
|
1425
|
+
// and the stub doesn't need connectivity — `reconcile` attaches the
|
|
1426
|
+
// resolved VPC config afterwards.
|
|
1425
1427
|
vpc?: FunctionProps["vpc"];
|
|
1426
1428
|
session: { note: (note: string) => Effect.Effect<void> };
|
|
1427
1429
|
}) => Effect.Effect<
|
|
@@ -1438,7 +1440,7 @@ export default handler;
|
|
|
1438
1440
|
functionName,
|
|
1439
1441
|
preferUpdate,
|
|
1440
1442
|
fileSystemConfigs,
|
|
1441
|
-
vpc
|
|
1443
|
+
vpc,
|
|
1442
1444
|
session,
|
|
1443
1445
|
}: {
|
|
1444
1446
|
id: string;
|
package/src/AWS/Providers.ts
CHANGED
|
@@ -846,6 +846,9 @@ export const providers = () =>
|
|
|
846
846
|
SageMaker.EndpointConfig,
|
|
847
847
|
SageMaker.Endpoint,
|
|
848
848
|
SageMaker.FeatureGroup,
|
|
849
|
+
SageMaker.Cluster,
|
|
850
|
+
SageMaker.ClusterSchedulerConfig,
|
|
851
|
+
SageMaker.ComputeQuota,
|
|
849
852
|
Scheduler.Schedule,
|
|
850
853
|
Scheduler.ScheduleGroup,
|
|
851
854
|
Schemas.Discoverer,
|
|
@@ -1468,6 +1471,9 @@ export const providers = () =>
|
|
|
1468
1471
|
SageMaker.EndpointConfigProvider(),
|
|
1469
1472
|
SageMaker.EndpointProvider(),
|
|
1470
1473
|
SageMaker.FeatureGroupProvider(),
|
|
1474
|
+
SageMaker.ClusterProvider(),
|
|
1475
|
+
SageMaker.ClusterSchedulerConfigProvider(),
|
|
1476
|
+
SageMaker.ComputeQuotaProvider(),
|
|
1471
1477
|
Account.AccountNameProvider(),
|
|
1472
1478
|
Account.AlternateContactProvider(),
|
|
1473
1479
|
Account.ContactInformationProvider(),
|