From 96f88d388e8803dd22c1dcc292cce1cecdaeccb3 Mon Sep 17 00:00:00 2001 From: Jesse Turner Date: Wed, 25 Mar 2026 18:55:55 -0400 Subject: [PATCH 1/3] feat: upgrade default Python runtime to PYTHON_3_14 Add PYTHON_3_14 to the PythonRuntime enum and make it the default across all agent, MCP, and generate workflows. Updates defaults, fallbacks, TUI options, tests, docs, and snapshots. Constraint: PYTHON_3_14 must be added to the Zod enum in schema/constants.ts as all other types derive from it Rejected: Only adding enum without changing default | user requested default upgrade Confidence: high Scope-risk: broad Co-Authored-By: Claude Opus 4.6 --- docs/configuration.md | 4 ++-- docs/container-builds.md | 2 +- .../__tests__/__snapshots__/assets.snapshot.test.ts.snap | 2 +- src/assets/agents/AGENTS.md | 2 +- .../agent/generate/__tests__/schema-mapper.test.ts | 2 +- src/cli/primitives/AgentPrimitive.tsx | 2 +- src/cli/tui/screens/agent/types.ts | 2 +- src/cli/tui/screens/generate/defaults.ts | 2 +- src/cli/tui/screens/mcp/types.ts | 5 +++-- src/lib/packaging/__tests__/python.test.ts | 4 ++++ src/lib/packaging/index.ts | 2 +- src/lib/packaging/python.ts | 2 +- src/schema/__tests__/constants.test.ts | 4 ++-- src/schema/constants.ts | 2 +- src/schema/llm-compacted/agentcore.ts | 2 +- src/schema/llm-compacted/mcp.ts | 2 +- src/tui-harness/helpers.ts | 2 +- 17 files changed, 24 insertions(+), 19 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 50ae79817..291b4c1fd 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -29,7 +29,7 @@ Main project configuration using a **flat resource model**. Agents, memories, an "build": "CodeZip", "entrypoint": "main.py", "codeLocation": "app/MyAgent/", - "runtimeVersion": "PYTHON_3_12" + "runtimeVersion": "PYTHON_3_14" } ], "memories": [ @@ -187,7 +187,7 @@ on the next deployment. "build": "CodeZip", "entrypoint": "main.py", "codeLocation": "app/MyAgent/", - "runtimeVersion": "PYTHON_3_12", + "runtimeVersion": "PYTHON_3_14", "networkMode": "PUBLIC", "envVars": [{ "name": "MY_VAR", "value": "my-value" }], "instrumentation": { diff --git a/docs/container-builds.md b/docs/container-builds.md index de4e20071..f4760fcda 100644 --- a/docs/container-builds.md +++ b/docs/container-builds.md @@ -59,7 +59,7 @@ In `agentcore.json`, set `"build": "Container"`: "build": "Container", "entrypoint": "main.py", "codeLocation": "app/MyAgent/", - "runtimeVersion": "PYTHON_3_12" + "runtimeVersion": "PYTHON_3_14" } ``` diff --git a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap index 45a1406cd..17515ae6f 100644 --- a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap +++ b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap @@ -4327,7 +4327,7 @@ file maps to a JSON config file and includes validation constraints as comments. - **BuildType**: \`'CodeZip'\` | \`'Container'\` - **NetworkMode**: \`'PUBLIC'\` -- **RuntimeVersion**: \`'PYTHON_3_10'\` | \`'PYTHON_3_11'\` | \`'PYTHON_3_12'\` | \`'PYTHON_3_13'\` +- **RuntimeVersion**: \`'PYTHON_3_10'\` | \`'PYTHON_3_11'\` | \`'PYTHON_3_12'\` | \`'PYTHON_3_13'\` | \`'PYTHON_3_14'\` - **MemoryStrategyType**: \`'SEMANTIC'\` | \`'SUMMARIZATION'\` | \`'USER_PREFERENCE'\` ### Build Types diff --git a/src/assets/agents/AGENTS.md b/src/assets/agents/AGENTS.md index a0f5b18ee..736e945ab 100644 --- a/src/assets/agents/AGENTS.md +++ b/src/assets/agents/AGENTS.md @@ -62,7 +62,7 @@ file maps to a JSON config file and includes validation constraints as comments. - **BuildType**: `'CodeZip'` | `'Container'` - **NetworkMode**: `'PUBLIC'` -- **RuntimeVersion**: `'PYTHON_3_10'` | `'PYTHON_3_11'` | `'PYTHON_3_12'` | `'PYTHON_3_13'` +- **RuntimeVersion**: `'PYTHON_3_10'` | `'PYTHON_3_11'` | `'PYTHON_3_12'` | `'PYTHON_3_13'` | `'PYTHON_3_14'` - **MemoryStrategyType**: `'SEMANTIC'` | `'SUMMARIZATION'` | `'USER_PREFERENCE'` ### Build Types diff --git a/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts b/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts index 29dac9bbc..4baba38b0 100644 --- a/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts +++ b/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts @@ -88,7 +88,7 @@ describe('mapGenerateConfigToAgent', () => { expect(result.name).toBe('TestProject'); expect(result.build).toBe('CodeZip'); expect(result.entrypoint).toBe('main.py'); - expect(result.runtimeVersion).toBe('PYTHON_3_12'); + expect(result.runtimeVersion).toBe('PYTHON_3_14'); expect(result.networkMode).toBe('PUBLIC'); expect(result.protocol).toBe('HTTP'); }); diff --git a/src/cli/primitives/AgentPrimitive.tsx b/src/cli/primitives/AgentPrimitive.tsx index 4af6449f4..cf7d9438c 100644 --- a/src/cli/primitives/AgentPrimitive.tsx +++ b/src/cli/primitives/AgentPrimitive.tsx @@ -397,7 +397,7 @@ export class AgentPrimitive extends BasePrimitive { expect(extractPythonVersion('PYTHON_3_13' as PythonRuntime)).toBe('3.13'); }); + it('extracts 3.14 from PYTHON_3_14', () => { + expect(extractPythonVersion('PYTHON_3_14' as PythonRuntime)).toBe('3.14'); + }); + it('throws for unsupported runtime string', () => { expect(() => extractPythonVersion('RUBY_3_0' as PythonRuntime)).toThrow('Unsupported Python runtime'); }); diff --git a/src/lib/packaging/index.ts b/src/lib/packaging/index.ts index daa7bb325..747d01547 100644 --- a/src/lib/packaging/index.ts +++ b/src/lib/packaging/index.ts @@ -78,7 +78,7 @@ export async function packRuntime(spec: AgentEnvSpec, options?: PackageOptions): * Defaults to Python if no runtimeVersion is specified. */ export function packCodeZipSync(config: CodeBundleConfig | AgentEnvSpec, options?: PackageOptions): ArtifactResult { - const runtimeVersion = config.runtimeVersion ?? 'PYTHON_3_12'; + const runtimeVersion = config.runtimeVersion ?? 'PYTHON_3_14'; const packager = getCodeZipPackager(runtimeVersion); return packager.packCodeZip(config as AgentEnvSpec, options); } diff --git a/src/lib/packaging/python.ts b/src/lib/packaging/python.ts index c2efd8dfe..e4fc860b5 100644 --- a/src/lib/packaging/python.ts +++ b/src/lib/packaging/python.ts @@ -155,7 +155,7 @@ export class PythonCodeZipPackager implements RuntimePackager { */ export class PythonCodeZipPackagerSync implements CodeZipPackager { packCodeZip(config: AgentEnvSpec, options: PackageOptions = {}): ArtifactResult { - const runtimeVersion = config.runtimeVersion ?? 'PYTHON_3_12'; + const runtimeVersion = config.runtimeVersion ?? 'PYTHON_3_14'; if (!isPythonRuntimeVersion(runtimeVersion)) { throw new PackagingError(`Python packager only supports Python runtimes. Received: ${runtimeVersion}`); diff --git a/src/schema/__tests__/constants.test.ts b/src/schema/__tests__/constants.test.ts index b9ba68940..b0d8052fa 100644 --- a/src/schema/__tests__/constants.test.ts +++ b/src/schema/__tests__/constants.test.ts @@ -60,13 +60,13 @@ describe('ModelProviderSchema', () => { }); describe('PythonRuntimeSchema', () => { - it.each(['PYTHON_3_10', 'PYTHON_3_11', 'PYTHON_3_12', 'PYTHON_3_13'])('accepts "%s"', version => { + it.each(['PYTHON_3_10', 'PYTHON_3_11', 'PYTHON_3_12', 'PYTHON_3_13', 'PYTHON_3_14'])('accepts "%s"', version => { expect(PythonRuntimeSchema.safeParse(version).success).toBe(true); }); it('rejects unsupported versions', () => { expect(PythonRuntimeSchema.safeParse('PYTHON_3_9').success).toBe(false); - expect(PythonRuntimeSchema.safeParse('PYTHON_3_14').success).toBe(false); + expect(PythonRuntimeSchema.safeParse('PYTHON_3_15').success).toBe(false); }); }); diff --git a/src/schema/constants.ts b/src/schema/constants.ts index 5f1d2ecd0..b707ec65d 100644 --- a/src/schema/constants.ts +++ b/src/schema/constants.ts @@ -140,7 +140,7 @@ export function isReservedProjectName(name: string): boolean { // Infrastructure Constants (shared between agent-env and mcp schemas) // ============================================================================ -export const PythonRuntimeSchema = z.enum(['PYTHON_3_10', 'PYTHON_3_11', 'PYTHON_3_12', 'PYTHON_3_13']); +export const PythonRuntimeSchema = z.enum(['PYTHON_3_10', 'PYTHON_3_11', 'PYTHON_3_12', 'PYTHON_3_13', 'PYTHON_3_14']); export type PythonRuntime = z.infer; export const NodeRuntimeSchema = z.enum(['NODE_18', 'NODE_20', 'NODE_22']); diff --git a/src/schema/llm-compacted/agentcore.ts b/src/schema/llm-compacted/agentcore.ts index b75969e1e..68841251c 100644 --- a/src/schema/llm-compacted/agentcore.ts +++ b/src/schema/llm-compacted/agentcore.ts @@ -24,7 +24,7 @@ interface AgentCoreProjectSpec { // ───────────────────────────────────────────────────────────────────────────── type BuildType = 'CodeZip' | 'Container'; -type PythonRuntime = 'PYTHON_3_10' | 'PYTHON_3_11' | 'PYTHON_3_12' | 'PYTHON_3_13'; +type PythonRuntime = 'PYTHON_3_10' | 'PYTHON_3_11' | 'PYTHON_3_12' | 'PYTHON_3_13' | 'PYTHON_3_14'; type NodeRuntime = 'NODE_18' | 'NODE_20' | 'NODE_22'; type RuntimeVersion = PythonRuntime | NodeRuntime; type NetworkMode = 'PUBLIC' | 'VPC'; diff --git a/src/schema/llm-compacted/mcp.ts b/src/schema/llm-compacted/mcp.ts index 045af8e03..009c9a7ca 100644 --- a/src/schema/llm-compacted/mcp.ts +++ b/src/schema/llm-compacted/mcp.ts @@ -177,6 +177,6 @@ interface IamPolicyDocument { // ───────────────────────────────────────────────────────────────────────────── type GatewayTargetType = 'lambda' | 'mcpServer' | 'openApiSchema' | 'smithyModel' | 'apiGateway' | 'lambdaFunctionArn'; -type PythonRuntime = 'PYTHON_3_10' | 'PYTHON_3_11' | 'PYTHON_3_12' | 'PYTHON_3_13'; +type PythonRuntime = 'PYTHON_3_10' | 'PYTHON_3_11' | 'PYTHON_3_12' | 'PYTHON_3_13' | 'PYTHON_3_14'; type NodeRuntime = 'NODE_18' | 'NODE_20' | 'NODE_22'; type NetworkMode = 'PUBLIC' | 'VPC'; diff --git a/src/tui-harness/helpers.ts b/src/tui-harness/helpers.ts index 5e02fa762..9de4fb5c2 100644 --- a/src/tui-harness/helpers.ts +++ b/src/tui-harness/helpers.ts @@ -103,7 +103,7 @@ export async function createMinimalProjectDir( build: 'CodeZip', entrypoint: 'main.py:handler', codeLocation: 'app/TestAgent', - runtimeVersion: 'PYTHON_3_12', + runtimeVersion: 'PYTHON_3_14', }); // Create the agent code directory so the CLI does not complain. From 6c60afde2de955e55a5ab14addaa2fc978bdfb83 Mon Sep 17 00:00:00 2001 From: Jesse Turner Date: Wed, 25 Mar 2026 19:40:47 -0400 Subject: [PATCH 2/3] fix: revert default Python to PYTHON_3_13, keep PYTHON_3_14 in enum The Bedrock AgentCore service API does not yet accept PYTHON_3_14. CloudFormation validation rejects it at deploy time: "PYTHON_3_14 is not a valid enum value. Supported values: [PYTHON_3_10, PYTHON_3_11, PYTHON_3_12, PYTHON_3_13]" Keep PYTHON_3_14 in the Zod enum for forward-compatibility but revert all defaults and fallbacks back to PYTHON_3_13. Constraint: Service API only supports PYTHON_3_10 through PYTHON_3_13 Rejected: Default to PYTHON_3_14 | service rejects at deploy time Confidence: high Scope-risk: narrow Co-Authored-By: Claude Opus 4.6 --- docs/configuration.md | 4 ++-- docs/container-builds.md | 2 +- .../agent/generate/__tests__/schema-mapper.test.ts | 2 +- src/cli/primitives/AgentPrimitive.tsx | 2 +- src/cli/tui/screens/agent/types.ts | 2 +- src/cli/tui/screens/generate/defaults.ts | 2 +- src/cli/tui/screens/mcp/types.ts | 5 ++--- src/lib/packaging/index.ts | 2 +- src/lib/packaging/python.ts | 2 +- src/tui-harness/helpers.ts | 2 +- 10 files changed, 12 insertions(+), 13 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 291b4c1fd..9b6b67ae3 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -29,7 +29,7 @@ Main project configuration using a **flat resource model**. Agents, memories, an "build": "CodeZip", "entrypoint": "main.py", "codeLocation": "app/MyAgent/", - "runtimeVersion": "PYTHON_3_14" + "runtimeVersion": "PYTHON_3_13" } ], "memories": [ @@ -187,7 +187,7 @@ on the next deployment. "build": "CodeZip", "entrypoint": "main.py", "codeLocation": "app/MyAgent/", - "runtimeVersion": "PYTHON_3_14", + "runtimeVersion": "PYTHON_3_13", "networkMode": "PUBLIC", "envVars": [{ "name": "MY_VAR", "value": "my-value" }], "instrumentation": { diff --git a/docs/container-builds.md b/docs/container-builds.md index f4760fcda..cd3cdc154 100644 --- a/docs/container-builds.md +++ b/docs/container-builds.md @@ -59,7 +59,7 @@ In `agentcore.json`, set `"build": "Container"`: "build": "Container", "entrypoint": "main.py", "codeLocation": "app/MyAgent/", - "runtimeVersion": "PYTHON_3_14" + "runtimeVersion": "PYTHON_3_13" } ``` diff --git a/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts b/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts index 4baba38b0..2eba934a5 100644 --- a/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts +++ b/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts @@ -88,7 +88,7 @@ describe('mapGenerateConfigToAgent', () => { expect(result.name).toBe('TestProject'); expect(result.build).toBe('CodeZip'); expect(result.entrypoint).toBe('main.py'); - expect(result.runtimeVersion).toBe('PYTHON_3_14'); + expect(result.runtimeVersion).toBe('PYTHON_3_13'); expect(result.networkMode).toBe('PUBLIC'); expect(result.protocol).toBe('HTTP'); }); diff --git a/src/cli/primitives/AgentPrimitive.tsx b/src/cli/primitives/AgentPrimitive.tsx index cf7d9438c..9d2adc0e3 100644 --- a/src/cli/primitives/AgentPrimitive.tsx +++ b/src/cli/primitives/AgentPrimitive.tsx @@ -397,7 +397,7 @@ export class AgentPrimitive extends BasePrimitive Date: Wed, 25 Mar 2026 19:49:17 -0400 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20remove=20PYTHON=5F3=5F14=20from=20en?= =?UTF-8?q?um=20=E2=80=94=20service=20does=20not=20support=20it=20yet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Bedrock AgentCore API only accepts PYTHON_3_10 through PYTHON_3_13. Remove PYTHON_3_14 entirely to avoid deploy failures for users. Co-Authored-By: Claude Opus 4.6 --- .../__tests__/__snapshots__/assets.snapshot.test.ts.snap | 2 +- src/assets/agents/AGENTS.md | 2 +- src/lib/packaging/__tests__/python.test.ts | 4 ---- src/schema/__tests__/constants.test.ts | 4 ++-- src/schema/constants.ts | 2 +- src/schema/llm-compacted/agentcore.ts | 2 +- src/schema/llm-compacted/mcp.ts | 2 +- 7 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap index 17515ae6f..45a1406cd 100644 --- a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap +++ b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap @@ -4327,7 +4327,7 @@ file maps to a JSON config file and includes validation constraints as comments. - **BuildType**: \`'CodeZip'\` | \`'Container'\` - **NetworkMode**: \`'PUBLIC'\` -- **RuntimeVersion**: \`'PYTHON_3_10'\` | \`'PYTHON_3_11'\` | \`'PYTHON_3_12'\` | \`'PYTHON_3_13'\` | \`'PYTHON_3_14'\` +- **RuntimeVersion**: \`'PYTHON_3_10'\` | \`'PYTHON_3_11'\` | \`'PYTHON_3_12'\` | \`'PYTHON_3_13'\` - **MemoryStrategyType**: \`'SEMANTIC'\` | \`'SUMMARIZATION'\` | \`'USER_PREFERENCE'\` ### Build Types diff --git a/src/assets/agents/AGENTS.md b/src/assets/agents/AGENTS.md index 736e945ab..a0f5b18ee 100644 --- a/src/assets/agents/AGENTS.md +++ b/src/assets/agents/AGENTS.md @@ -62,7 +62,7 @@ file maps to a JSON config file and includes validation constraints as comments. - **BuildType**: `'CodeZip'` | `'Container'` - **NetworkMode**: `'PUBLIC'` -- **RuntimeVersion**: `'PYTHON_3_10'` | `'PYTHON_3_11'` | `'PYTHON_3_12'` | `'PYTHON_3_13'` | `'PYTHON_3_14'` +- **RuntimeVersion**: `'PYTHON_3_10'` | `'PYTHON_3_11'` | `'PYTHON_3_12'` | `'PYTHON_3_13'` - **MemoryStrategyType**: `'SEMANTIC'` | `'SUMMARIZATION'` | `'USER_PREFERENCE'` ### Build Types diff --git a/src/lib/packaging/__tests__/python.test.ts b/src/lib/packaging/__tests__/python.test.ts index 1640e9581..2a912be28 100644 --- a/src/lib/packaging/__tests__/python.test.ts +++ b/src/lib/packaging/__tests__/python.test.ts @@ -19,10 +19,6 @@ describe('extractPythonVersion', () => { expect(extractPythonVersion('PYTHON_3_13' as PythonRuntime)).toBe('3.13'); }); - it('extracts 3.14 from PYTHON_3_14', () => { - expect(extractPythonVersion('PYTHON_3_14' as PythonRuntime)).toBe('3.14'); - }); - it('throws for unsupported runtime string', () => { expect(() => extractPythonVersion('RUBY_3_0' as PythonRuntime)).toThrow('Unsupported Python runtime'); }); diff --git a/src/schema/__tests__/constants.test.ts b/src/schema/__tests__/constants.test.ts index b0d8052fa..b9ba68940 100644 --- a/src/schema/__tests__/constants.test.ts +++ b/src/schema/__tests__/constants.test.ts @@ -60,13 +60,13 @@ describe('ModelProviderSchema', () => { }); describe('PythonRuntimeSchema', () => { - it.each(['PYTHON_3_10', 'PYTHON_3_11', 'PYTHON_3_12', 'PYTHON_3_13', 'PYTHON_3_14'])('accepts "%s"', version => { + it.each(['PYTHON_3_10', 'PYTHON_3_11', 'PYTHON_3_12', 'PYTHON_3_13'])('accepts "%s"', version => { expect(PythonRuntimeSchema.safeParse(version).success).toBe(true); }); it('rejects unsupported versions', () => { expect(PythonRuntimeSchema.safeParse('PYTHON_3_9').success).toBe(false); - expect(PythonRuntimeSchema.safeParse('PYTHON_3_15').success).toBe(false); + expect(PythonRuntimeSchema.safeParse('PYTHON_3_14').success).toBe(false); }); }); diff --git a/src/schema/constants.ts b/src/schema/constants.ts index b707ec65d..5f1d2ecd0 100644 --- a/src/schema/constants.ts +++ b/src/schema/constants.ts @@ -140,7 +140,7 @@ export function isReservedProjectName(name: string): boolean { // Infrastructure Constants (shared between agent-env and mcp schemas) // ============================================================================ -export const PythonRuntimeSchema = z.enum(['PYTHON_3_10', 'PYTHON_3_11', 'PYTHON_3_12', 'PYTHON_3_13', 'PYTHON_3_14']); +export const PythonRuntimeSchema = z.enum(['PYTHON_3_10', 'PYTHON_3_11', 'PYTHON_3_12', 'PYTHON_3_13']); export type PythonRuntime = z.infer; export const NodeRuntimeSchema = z.enum(['NODE_18', 'NODE_20', 'NODE_22']); diff --git a/src/schema/llm-compacted/agentcore.ts b/src/schema/llm-compacted/agentcore.ts index 68841251c..b75969e1e 100644 --- a/src/schema/llm-compacted/agentcore.ts +++ b/src/schema/llm-compacted/agentcore.ts @@ -24,7 +24,7 @@ interface AgentCoreProjectSpec { // ───────────────────────────────────────────────────────────────────────────── type BuildType = 'CodeZip' | 'Container'; -type PythonRuntime = 'PYTHON_3_10' | 'PYTHON_3_11' | 'PYTHON_3_12' | 'PYTHON_3_13' | 'PYTHON_3_14'; +type PythonRuntime = 'PYTHON_3_10' | 'PYTHON_3_11' | 'PYTHON_3_12' | 'PYTHON_3_13'; type NodeRuntime = 'NODE_18' | 'NODE_20' | 'NODE_22'; type RuntimeVersion = PythonRuntime | NodeRuntime; type NetworkMode = 'PUBLIC' | 'VPC'; diff --git a/src/schema/llm-compacted/mcp.ts b/src/schema/llm-compacted/mcp.ts index 009c9a7ca..045af8e03 100644 --- a/src/schema/llm-compacted/mcp.ts +++ b/src/schema/llm-compacted/mcp.ts @@ -177,6 +177,6 @@ interface IamPolicyDocument { // ───────────────────────────────────────────────────────────────────────────── type GatewayTargetType = 'lambda' | 'mcpServer' | 'openApiSchema' | 'smithyModel' | 'apiGateway' | 'lambdaFunctionArn'; -type PythonRuntime = 'PYTHON_3_10' | 'PYTHON_3_11' | 'PYTHON_3_12' | 'PYTHON_3_13' | 'PYTHON_3_14'; +type PythonRuntime = 'PYTHON_3_10' | 'PYTHON_3_11' | 'PYTHON_3_12' | 'PYTHON_3_13'; type NodeRuntime = 'NODE_18' | 'NODE_20' | 'NODE_22'; type NetworkMode = 'PUBLIC' | 'VPC';