aws / aws/agentcore-cli

`add agent --type byo` ignores `--language TypeScript`

Open Beginner friendly
#2,075 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
283
Forks
95
Avg merge
1d 2h
Merged PRs (30d)
183

Description

### Description

`agentcore add agent --type byo --language TypeScript` registers the agent with `"runtimeVersion": "PYTHON_3_14"` in agentcore.json, ignoring `--language`. Packaging then selects the Python CodeZip packager and fails looking for pyproject.toml, so the BYO + TypeScript combination advertised by the `--language` help text (`Python (create), or Python/TypeScript/Other (BYO)`) cannot succeed with CLI flags alone.

### Steps to Reproduce

1. Create a project and add a BYO TypeScript agent:
```bash
agentcore create --name ByoRepro --no-agent
cd ByoRepro
agentcore add agent --name ByoRepro --type byo --code-location app/ByoRepro --entrypoint main.ts --language TypeScript --build CodeZip --framework Strands --model-provider Bedrock --memory none
```
2. Put a TypeScript agent in `app/ByoRepro/` (`main.ts` + `package.json`, `npm install` run).
3. Run `agentcore package` (or `agentcore deploy`) and observe the Python packager error. Inspect `agentcore/agentcore.json` to see the registered `runtimeVersion`.

### Expected Behavior

With `--language TypeScript`, the BYO path writes `"runtimeVersion": "NODE_22"` and defaults the entrypoint to `main.js`, the way the create path does via `DEFAULT_RUNTIME_BY_LANGUAGE` / `DEFAULT_ENTRYPOINT_BY_LANGUAGE`. (`main.js` because the Node CodeZip packager bundles the `main.ts` source into `main.js`, and the service rejects a `.ts` entrypoint for Node runtimes: `Entrypoint file type does not match your selected runtime. For NODE_22 runtime, your file should end with .js extension.`)

### Actual Behavior

1. `agentcore/agentcore.json` gets a Python runtime despite `--language TypeScript`:
```json
{
"name": "ByoRepro",
"build": "CodeZip",
"entrypoint": "main.ts",
"codeLocation": "app/ByoRepro/",
"runtimeVersion": "PYTHON_3_14",
"networkMode": "PUBLIC",
"protocol": "HTTP"
}
```
2. Packaging fails: `Required project file not found: .../app/ByoRepro/pyproject.toml`.

### CLI Version

0.27.1

### Operating System

Linux

### Additional Context

Root cause: `handleByoPath` in `src/cli/primitives/AgentPrimitive.tsx` hardcodes `runtimeVersion: DEFAULT_PYTHON_VERSION` and never consults `options.language`, while the create path maps language through `DEFAULT_RUNTIME_BY_LANGUAGE` / `DEFAULT_ENTRYPOINT_BY_LANGUAGE` (`src/cli/operations/agent/generate/schema-mapper.ts`).

Verified workaround: hand-editing agentcore.json after `add agent` (`"runtimeVersion": "NODE_22"`, `"entrypoint": "main.js"`) makes the same project deploy and invoke successfully, so the defect is confined to what the BYO path writes.

`--language Other` is BYO-only and has no entry in `DEFAULT_RUNTIME_BY_LANGUAGE`; this report is only about `TypeScript` silently mapping to Python.

I'm happy to send a PR applying the two language maps in `handleByoPath` (Python/TypeScript only, current behavior preserved for `Other`).

Contributor guide

Open the contributing guide

Research direction

Start in src/cli/primitives/AgentPrimitive.tsx at handleByoPath and compare its runtime and entrypoint handling with DEFAULT_RUNTIME_BY_LANGUAGE and DEFAULT_ENTRYPOINT_BY_LANGUAGE in src/cli/operations/agent/generate/schema-mapper.ts. Verify that a BYO TypeScript agent records NODE_22 and main.js while preserving the existing Other behavior, then confirm packaging no longer selects the Python CodeZip path.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
cli
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
86/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.