Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
358ed7e
feat(typescript): scaffold TypeScript language support (WIP checkpoint)
jesseturner21 Apr 21, 2026
b37d493
docs(typescript): add progress tracker for TS support initiative
jesseturner21 Apr 21, 2026
0a87cdb
docs(typescript): log 3417f9a in progress tracker
jesseturner21 Apr 21, 2026
ca7264b
feat(typescript): unblock dev mode for TS agents (Phase 2)
jesseturner21 Apr 21, 2026
5642921
docs(typescript): log a487f19 in progress tracker
jesseturner21 Apr 21, 2026
2c1e7fc
feat(typescript): author TS/Strands HTTP template assets (Phase 3)
jesseturner21 Apr 21, 2026
fe47bae
docs(typescript): log 6f1aeed + f6ed2e9 in progress tracker
jesseturner21 Apr 21, 2026
ecfbc2a
feat(typescript): add container template for TS agents (Phase 4)
jesseturner21 Apr 21, 2026
aca0e69
docs(typescript): log 003f672 + 076a4aa in progress tracker
jesseturner21 Apr 21, 2026
9d493e3
feat(typescript): Node setup helper + create-flow wiring (Phase 5)
jesseturner21 Apr 21, 2026
e5590cf
docs(typescript): log f015ce7 + 5c2af7d in progress tracker
jesseturner21 Apr 21, 2026
1e24a98
test(typescript): add TS dev-server spec + create-flow integ block; f…
jesseturner21 Apr 21, 2026
4c73b4e
docs(typescript): log c22147d in progress tracker
jesseturner21 Apr 21, 2026
71ee643
test(typescript): add TUI walkthrough for create TypeScript + Strands
jesseturner21 Apr 21, 2026
197e41f
docs(typescript): log 7af265e in progress tracker
jesseturner21 Apr 21, 2026
fce50f4
fix(typescript): replace Python-only guard in create validator with S…
jesseturner21 Apr 21, 2026
c339f67
docs(typescript): phase 7 user docs + phase 8 verification log
jesseturner21 Apr 21, 2026
b2eb1fa
docs(typescript): add manual test plan with progress-tracker checklist
jesseturner21 Apr 22, 2026
c14cc78
docs(typescript): add code pointers to TS test plan for targeted fixes
jesseturner21 Apr 22, 2026
997c1e8
fix(typescript): make scaffolded TS agent installable and bootable
jesseturner21 Apr 22, 2026
89e3323
fix(typescript): run npm install during non-interactive create for TS…
jesseturner21 Apr 22, 2026
40d0e36
fix(typescript): surface real npm install error in interactive create…
jesseturner21 Apr 22, 2026
ca77d1d
docs(typescript): add completed test plan results for TS support bug …
jesseturner21 Apr 22, 2026
70c7953
fix(typescript): make container build succeed for scaffolded TS agent
jesseturner21 Apr 23, 2026
e5ad996
fix(typescript): move tsx into dependencies so containers boot withou…
jesseturner21 Apr 23, 2026
9472f8e
fix(typescript): reject --protocol MCP + --language TypeScript with a…
jesseturner21 Apr 23, 2026
5126142
fix(typescript): enable TypeScript option in interactive create wizard
jesseturner21 Apr 23, 2026
a927a9a
fix(typescript): gate MCP and A2A protocols behind Python-only until …
jesseturner21 Apr 23, 2026
091ce80
feat(dev): enable dev mode for TypeScript agents (CodeZip + Container…
jesseturner21 Apr 24, 2026
fe56048
fix(dev): detect TS server readiness in terminal TUI mode
jesseturner21 Apr 24, 2026
32d006a
fix(typescript): use correct Strands SDK stream event types in template
jesseturner21 Apr 24, 2026
a21dbfd
fix(invoke): include text/event-stream in Accept header for HTTP invoke
jesseturner21 Apr 24, 2026
cafed9c
fix(typescript): disable memory for TypeScript agents and clean up te…
jesseturner21 Apr 27, 2026
b60db2d
feat(typescript): add Vercel AI SDK framework for TypeScript agents
jesseturner21 Apr 28, 2026
fbdeb95
fix(vercelai): fix dependency versions, model ID, and Bedrock credent…
jesseturner21 Apr 28, 2026
730e01c
fix(dev): prefer explicit credentials over AWS_PROFILE in container dev
jesseturner21 Apr 28, 2026
b632ac2
fix(dev): resolve AWS credentials on host for container dev mode
jesseturner21 Apr 29, 2026
7fa54ad
fix(dev): detect and skip container runtime shims that masquerade as …
jesseturner21 Apr 29, 2026
fddaad1
fix: set typescript agent port to 8080
avi-alpert Apr 30, 2026
aebae2c
chore: remove development tracking docs from PR
jesseturner21 May 1, 2026
afdc9f1
fix: update runCLI call to use options object and format frameworks.md
jesseturner21 May 1, 2026
5576fbe
fix(test): update container-dev-server test for resolveHostCredential…
jesseturner21 May 1, 2026
b7bd53e
style: format container-dev-server test with prettier
jesseturner21 May 1, 2026
f140073
fix: wire up agent templates with PORT option
avi-alpert May 4, 2026
76e3fff
feat: add Node.js OTEL support and fix CJS import.meta.url crash
jesseturner21 May 11, 2026
87b2f66
fix: switch Node CodeZip bundling to ESM format
jesseturner21 May 11, 2026
8a7ac68
fix: add createRequire banner to ESM bundles for CJS compat
jesseturner21 May 11, 2026
198b69e
fix: use CJS format with package.json type:commonjs in zip
jesseturner21 May 11, 2026
7da712f
fix: copy dynamic require deps into _deps dir for Node CodeZip bundles
jesseturner21 May 11, 2026
174e9fc
fix: update otel-register.ts to use OpenTelemetry SDK v2.x API
jesseturner21 May 11, 2026
1ed9e14
test: fix node-packager tests and update snapshots for CJS bundling
jesseturner21 May 11, 2026
b8dd9e2
fix: TypeScript template and packaging fixes for Node CodeZip
jesseturner21 May 11, 2026
0e81fd5
refactor: inline otel-register into main.ts for local + deployed tracing
jesseturner21 May 11, 2026
23e0965
test: update asset snapshots for otel-register import in main.ts
jesseturner21 May 11, 2026
95437e8
fix: use Resource class instead of resourceFromAttributes for OTEL v1…
jesseturner21 May 11, 2026
1581f97
fix(dev): use fixed port 8080 for TypeScript HTTP agents in web UI
jesseturner21 May 12, 2026
4fdb507
fix(templates): fix TypeScript non-Bedrock model provider templates
jesseturner21 May 12, 2026
1d1cf0c
docs: update bugbash status — all Container + non-Bedrock combos tested
jesseturner21 May 12, 2026
9219f89
docs: update bugbash status — deploy, invoke, and remove lifecycle te…
jesseturner21 May 12, 2026
235df8f
fix(templates): fix withApiKey call syntax in TypeScript non-Bedrock …
jesseturner21 May 12, 2026
ef6f1f3
docs: update bugbash status — withApiKey fix resolves deployed invoke
jesseturner21 May 12, 2026
ac5876f
fix(dev): allow web UI port fallback for TypeScript HTTP agents
jesseturner21 May 12, 2026
39c1837
test(e2e): add TypeScript Strands and VercelAI e2e tests
jesseturner21 May 12, 2026
8fe40a9
test(e2e): skip logs and traces tests for TypeScript agents
jesseturner21 May 12, 2026
1606019
fix(templates): bump bedrock-agentcore SDK to ^0.2.4
jesseturner21 May 13, 2026
f6dd69c
fix(tui): remove duplicate project name in create-prompt phase
jesseturner21 May 13, 2026
1f9b330
ci(e2e): add cdk_branch input to override CDK source branch
jesseturner21 May 13, 2026
cd1ee54
Revert "ci(e2e): add cdk_branch input to override CDK source branch"
jesseturner21 May 13, 2026
521e643
Reapply "ci(e2e): add cdk_branch input to override CDK source branch"
jesseturner21 May 13, 2026
580cd10
fix(templates): remove OTEL, session storage, and gateway from TS tem…
jesseturner21 May 13, 2026
485cbda
fix(dev): use dynamic port assignment for TS HTTP agents in web UI
jesseturner21 May 13, 2026
301e286
docs: add explanatory comments for container credentials and node pat…
jesseturner21 May 13, 2026
590b136
docs: add VercelAI to CLI help text and documentation
jesseturner21 May 13, 2026
1c291bc
fix: make reserved-name error message language-neutral
jesseturner21 May 13, 2026
9fc7adb
fix: hide traces UI for TypeScript agents
jesseturner21 May 13, 2026
402af8e
fix(templates): rename handler to callback in Strands TS tool config
jesseturner21 May 13, 2026
904cd70
fix(templates): remove unused deps from Strands TS package.json
jesseturner21 May 13, 2026
18e4f89
docs(templates): fix stale README info in TS templates
jesseturner21 May 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ on:
aws_region:
description: 'AWS region for deployment'
default: 'us-east-1'
cdk_branch:
description: 'CDK repo branch to build from (default: main)'
default: 'main'
pull_request_target:
branches: [main]

Expand Down Expand Up @@ -78,9 +81,11 @@ jobs:

# Build @aws/agentcore-cdk from source for cross-package testing.
# Requires secrets: CDK_REPO_NAME (org/repo), CDK_REPO_TOKEN (fine-grained PAT)
- name: Build CDK package from main
- name: Build CDK package
run: |
git clone --depth 1 "https://x-access-token:${CDK_REPO_TOKEN}@github.com/${CDK_REPO}.git" /tmp/cdk-repo
CDK_BRANCH="${{ inputs.cdk_branch || 'main' }}"
echo "Building CDK from branch: $CDK_BRANCH"
git clone --depth 1 --branch "$CDK_BRANCH" "https://x-access-token:${CDK_REPO_TOKEN}@github.com/${CDK_REPO}.git" /tmp/cdk-repo
cd /tmp/cdk-repo
npm ci
npm run build
Expand Down
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
CHANGELOG.md
src/assets/**/*.md
.github/scripts/prompts/
src/assets/**/*.ts
src/assets/**/*.json
src/assets/**/*.template
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ Each primitive extends `BasePrimitive` and implements: `add()`, `remove()`, `pre

Current primitives:

- `AgentPrimitive` — agent creation (template + BYO), removal, credential resolution
- `AgentPrimitive` — agent creation (template + BYO), removal, credential resolution. Template agents: Strands,
LangChain_LangGraph, GoogleADK, OpenAIAgents, VercelAI
- `MemoryPrimitive` — memory creation with strategies, removal
- `CredentialPrimitive` — credential creation, .env management, removal
- `EvaluatorPrimitive` — custom evaluator creation/removal with cross-reference validation
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,12 @@ agentcore invoke

## Supported Frameworks

| Framework | Notes |
| ------------------- | ----------------------------- |
| Strands Agents | AWS-native, streaming support |
| LangChain/LangGraph | Graph-based workflows |
| Google ADK | Gemini models only |
| OpenAI Agents | OpenAI models only |
| Framework | Notes |
| ------------------- | --------------------------------------------------- |
| Strands Agents | AWS-native, streaming support (Python + TypeScript) |
| LangChain/LangGraph | Graph-based workflows |
| Google ADK | Gemini models only |
| OpenAI Agents | OpenAI models only |

## Supported Model Providers

Expand Down
13 changes: 10 additions & 3 deletions docs/commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,13 @@ agentcore create \
# Skip agent creation
agentcore create --name MyProject --no-agent

# TypeScript (Strands or Vercel AI)
agentcore create \
--name MyTsProject \
--language TypeScript \
--framework Strands \
--model-provider Bedrock

# Preview without creating
agentcore create --name MyProject --defaults --dry-run

Expand All @@ -71,8 +78,8 @@ agentcore create \
| `--defaults` | Use defaults (Python, Strands, Bedrock, no memory) |
| `--no-agent` | Skip agent creation |
| `--type <type>` | `create` (default) or `import` |
| `--language <lang>` | `Python` (default) |
| `--framework <fw>` | `Strands`, `LangChain_LangGraph`, `GoogleADK`, `OpenAIAgents` |
| `--language <lang>` | `Python` (default) or `TypeScript` (Strands-only; see [Frameworks](frameworks.md#supported-languages)) |
| `--framework <fw>` | `Strands`, `LangChain_LangGraph`, `GoogleADK`, `OpenAIAgents`, `VercelAI` |
| `--model-provider <p>` | `Bedrock`, `Anthropic`, `OpenAI`, `Gemini` |
| `--build <type>` | `CodeZip` (default) or `Container` (see [Container Builds](container-builds.md)) |
| `--api-key <key>` | API key for non-Bedrock providers |
Expand Down Expand Up @@ -202,7 +209,7 @@ agentcore add agent \
| `--type <type>` | `create` (default), `byo`, or `import` |
| `--build <type>` | `CodeZip` (default) or `Container` (see [Container Builds](container-builds.md)) |
| `--language <lang>` | `Python` (create); `Python`, `TypeScript`, `Other` (BYO) |
| `--framework <fw>` | `Strands`, `LangChain_LangGraph`, `GoogleADK`, `OpenAIAgents` |
| `--framework <fw>` | `Strands`, `LangChain_LangGraph`, `GoogleADK`, `OpenAIAgents`, `VercelAI` |
| `--model-provider <p>` | `Bedrock`, `Anthropic`, `OpenAI`, `Gemini` |
| `--api-key <key>` | API key for non-Bedrock providers |
| `--memory <opt>` | `none`, `shortTerm`, `longAndShortTerm` (create and import; see [Memory Shorthand Mapping](memory.md#--memory-shorthand-mapping)) |
Expand Down
22 changes: 22 additions & 0 deletions docs/container-builds.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,28 @@ The template uses `ghcr.io/astral-sh/uv:python3.12-bookworm-slim` as the base im

You can customize the Dockerfile freely — add system packages, change the base image, or use multi-stage builds.

### TypeScript Dockerfile

For TypeScript agents, the generated `Dockerfile` uses `public.ecr.aws/docker/library/node:22-slim`:

- **Layer caching**: `package.json` (+ `package-lock.json` if present) is copied first, then `npm ci --omit=dev` runs
(falls back to `npm install` when no lockfile is present)
- **Non-root**: Runs as `bedrock_agentcore` (UID 1000), matching the Python image
- **Entrypoint**: `npx tsx main.ts` — no compile step, so dev and container runtime share the same entry shape
- **Ports**: Exposes 8080 / 8000 / 9000 to match the HTTP / MCP / A2A contract

Example `agentcore.json` for a TypeScript container agent:

```json
{
"name": "MyTsAgent",
"build": "Container",
"entrypoint": "main.ts",
"codeLocation": "app/MyTsAgent/",
"runtimeVersion": "NODE_22"
}
```

## Configuration

In `agentcore.json`, set `"build": "Container"`:
Expand Down
60 changes: 49 additions & 11 deletions docs/frameworks.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@
AgentCore CLI supports multiple agent frameworks for template-based agent creation, plus a BYO (Bring Your Own) option
for existing code.

## Supported Languages

| Language | Supported Frameworks | Runtime | Notes |
| ---------- | -------------------- | ------------ | ---------------------------------------------------------------------------------- |
| Python | All frameworks | Python 3.12+ | Default language. Uses `uv` for dependency management. |
| TypeScript | Strands, Vercel AI | Node 22 | Uses `npm` + `tsx` for the dev loop. Other frameworks are not yet available in TS. |

Pass `--language TypeScript` to `agentcore create` or `agentcore add agent` to scaffold a TypeScript project. The
framework is restricted to `Strands` or `VercelAI`; other values are rejected. See
[Local Development](local-development.md#typescript-agents) for the TS dev loop.

## Available Frameworks

| Framework | Supported Model Providers |
Expand All @@ -11,6 +22,7 @@ for existing code.
| **LangChain_LangGraph** | Bedrock, Anthropic, OpenAI, Gemini |
| **GoogleADK** | Gemini only |
| **OpenAIAgents** | OpenAI only |
| **VercelAI** | Bedrock, Anthropic, OpenAI, Gemini |

## Framework Selection Guide

Expand All @@ -26,8 +38,13 @@ AWS's native agent framework designed for Amazon Bedrock.

**Model providers:** Bedrock, Anthropic, OpenAI, Gemini

**Languages:** Python, TypeScript

```bash
agentcore create --framework Strands --model-provider Bedrock

# TypeScript variant
agentcore create --framework Strands --model-provider Bedrock --language TypeScript
```

### LangChain / LangGraph
Expand Down Expand Up @@ -76,6 +93,27 @@ OpenAI's native agent framework.
agentcore create --framework OpenAIAgents --model-provider OpenAI --api-key sk-...
```

### Vercel AI SDK

Vercel's AI SDK for building AI-powered applications.

**Best for:**

- Full-stack AI applications with streaming support
- Projects using Vercel's ecosystem
- TypeScript-first agent development

**Model providers:** Bedrock, Anthropic, OpenAI, Gemini

**Languages:** Python, TypeScript

```bash
agentcore create --framework VercelAI --model-provider Bedrock

# TypeScript variant
agentcore create --framework VercelAI --model-provider Bedrock --language TypeScript
```

## Import from Bedrock Agents

If you have an existing Bedrock Agent, you can import its configuration and translate it into runnable Strands or
Expand Down Expand Up @@ -151,19 +189,19 @@ agentcore add agent \

## Framework Comparison

| Feature | Strands | LangChain | GoogleADK | OpenAIAgents |
| ---------------------- | ------- | --------- | --------- | ------------ |
| Multi-provider support | Yes | Yes | No | No |
| AWS Bedrock native | Yes | No | No | No |
| Tool ecosystem | Growing | Extensive | Moderate | Moderate |
| Memory integration | Native | Via libs | Via libs | Via libs |
| Feature | Strands | LangChain | GoogleADK | OpenAIAgents | VercelAI |
| ---------------------- | ------- | --------- | --------- | ------------ | -------- |
| Multi-provider support | Yes | Yes | No | No | Yes |
| AWS Bedrock native | Yes | No | No | No | No |
| Tool ecosystem | Growing | Extensive | Moderate | Moderate | Moderate |
| Memory integration | Native | Via libs | Via libs | Via libs | Via libs |

## Protocol Compatibility

Not all frameworks support all protocol modes. MCP protocol is a standalone tool server with no framework.

| Protocol | Supported Frameworks |
| -------- | ----------------------------------------------------- |
| **HTTP** | Strands, LangChain_LangGraph, GoogleADK, OpenAIAgents |
| **MCP** | None (standalone tool server) |
| **A2A** | Strands, GoogleADK, LangChain_LangGraph |
| Protocol | Supported Frameworks |
| -------- | --------------------------------------------------------------- |
| **HTTP** | Strands, LangChain_LangGraph, GoogleADK, OpenAIAgents, VercelAI |
| **MCP** | None (standalone tool server) |
| **A2A** | Strands, GoogleADK, LangChain_LangGraph |
10 changes: 10 additions & 0 deletions docs/local-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ The dev server automatically:
2. Runs `uv sync` to install dependencies from `pyproject.toml`
3. Starts uvicorn with your agent

### TypeScript Agents

TypeScript agents (Strands-only) use Node 22 and `tsx` for the dev loop:

1. Runs `npm install` on first scaffold to populate `node_modules/` from `package.json`
2. Starts the agent with `npx tsx watch main.ts` — file changes reload automatically
3. No compile step is required; `tsx` executes `.ts` sources directly

Set `AGENTCORE_SKIP_INSTALL=1` to skip `npm install` if you want to manage dependencies yourself.

### API Keys

For non-Bedrock providers, add keys to `agentcore/.env.local`:
Expand Down
15 changes: 10 additions & 5 deletions e2e-tests/e2e-helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ interface E2EConfig {
requiredEnvVar?: string;
build?: string;
memory?: string;
/** Language for the agent project. Defaults to 'Python'. */
language?: 'Python' | 'TypeScript';
/** Skip logs and traces tests. */
skipObservability?: boolean;
/** Lifecycle configuration to pass via --idle-timeout / --max-lifetime flags. */
lifecycleConfig?: {
idleTimeout?: number;
Expand All @@ -37,7 +41,8 @@ interface E2EConfig {

export function createE2ESuite(cfg: E2EConfig) {
const hasApiKey = !cfg.requiredEnvVar || !!process.env[cfg.requiredEnvVar];
const canRun = baseCanRun && hasApiKey;
const needsUv = cfg.language !== 'TypeScript';
const canRun = prereqs.npm && prereqs.git && hasAws && hasApiKey && (!needsUv || prereqs.uv);

describe.sequential(`e2e: ${cfg.framework}/${cfg.modelProvider} — create → deploy → invoke`, () => {
let testDir: string;
Expand All @@ -58,7 +63,7 @@ export function createE2ESuite(cfg: E2EConfig) {
'--name',
agentName,
'--language',
'Python',
cfg.language ?? 'Python',
'--framework',
cfg.framework,
'--model-provider',
Expand Down Expand Up @@ -221,7 +226,7 @@ export function createE2ESuite(cfg: E2EConfig) {
120000
);

it.skipIf(!canRun)(
it.skipIf(!canRun || !!cfg.skipObservability)(
'logs returns entries from the invocation',
async () => {
await retry(
Expand Down Expand Up @@ -250,7 +255,7 @@ export function createE2ESuite(cfg: E2EConfig) {
120000
);

it.skipIf(!canRun)(
it.skipIf(!canRun || !!cfg.skipObservability)(
'logs supports level filtering',
async () => {
// --level error should succeed even if no error-level logs exist
Expand All @@ -261,7 +266,7 @@ export function createE2ESuite(cfg: E2EConfig) {
120000
);

it.skipIf(!canRun)(
it.skipIf(!canRun || !!cfg.skipObservability)(
'traces list succeeds after invocation',
async () => {
// traces list has no --json flag — verify exit code and non-empty output
Expand Down
8 changes: 8 additions & 0 deletions e2e-tests/ts-strands-bedrock.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { createE2ESuite } from './e2e-helper.js';

createE2ESuite({
framework: 'Strands',
modelProvider: 'Bedrock',
language: 'TypeScript',
skipObservability: true,
});
8 changes: 8 additions & 0 deletions e2e-tests/ts-vercelai-bedrock.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { createE2ESuite } from './e2e-helper.js';

createE2ESuite({
framework: 'VercelAI',
modelProvider: 'Bedrock',
language: 'TypeScript',
skipObservability: true,
});
48 changes: 48 additions & 0 deletions integ-tests/create-with-agent.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,51 @@ describe('integration: create with Python agent', () => {
expect(await exists(join(agentDir, '.venv')), '.venv/ should exist in agent directory').toBeTruthy();
});
});

describe('integration: create with TypeScript agent', () => {
let testDir: string;

beforeAll(async () => {
testDir = join(tmpdir(), `agentcore-integ-ts-${randomUUID()}`);
await mkdir(testDir, { recursive: true });
});

afterAll(async () => {
await rm(testDir, { recursive: true, force: true });
});

it.skipIf(!hasNpm || !hasGit)('scaffolds a TypeScript Strands agent with main.ts entrypoint', async () => {
const name = `TsAgent${Date.now().toString().slice(-6)}`;
// Skip the real npm install to keep the test fast and offline-safe.
const result = await runCLI(
[
'create',
'--name',
name,
'--language',
'TypeScript',
'--framework',
'Strands',
'--model-provider',
'Bedrock',
'--memory',
'none',
'--json',
],
testDir,
{ skipInstall: true }
);

expect(result.exitCode, `stderr: ${result.stderr}`).toBe(0);

const json = JSON.parse(result.stdout);
expect(json.success).toBe(true);

const agentDir = join(json.projectPath, 'app', json.agentName || name);
expect(await exists(join(agentDir, 'main.ts')), 'main.ts should exist').toBeTruthy();
expect(await exists(join(agentDir, 'package.json')), 'package.json should exist').toBeTruthy();
expect(await exists(join(agentDir, 'tsconfig.json')), 'tsconfig.json should exist').toBeTruthy();
expect(await exists(join(agentDir, 'model', 'load.ts')), 'model/load.ts should exist').toBeTruthy();
expect(await exists(join(agentDir, 'mcp_client', 'client.ts')), 'mcp_client/client.ts should exist').toBeTruthy();
});
});
Loading
Loading