Skip to content

feat(project): add agent-python-strands-container template - #2201

Merged
tejaskash merged 2 commits into
refactorfrom
feat/template-agent-python-strands-container
Sep 3, 2026
Merged

feat(project): add agent-python-strands-container template#2201
tejaskash merged 2 commits into
refactorfrom
feat/template-agent-python-strands-container

Conversation

@tejaskash

Copy link
Copy Markdown
Contributor

Summary

The TUI create wizard has no build question, so a Container build of the Strands agent was unreachable from it. This adds an agent-python-strands-container template preset: agent-python-strands with build: Container, which keeps the Dockerfile and .dockerignore in the scaffold.

  • shortcuts.ts: the preset. The --template enum is derived from the table, so the flag accepts it automatically.
  • create/screen.tsx: the wizard option, placed after the recommended Strands entry. The three memory-step gates that hardcoded "agent-python-strands" are now one asksMemory helper keyed on the preset's framework.
  • README: one example line.

On the CLI this is a second spelling of --template agent-python-strands --build Container. The preset exists for the TUI, and the parameterized test asserts both spellings scaffold identically.

Behavior change: because the memory gate keys off framework, a2a-python-strands now also gets the memory question in the wizard. Its resolver supports memory and its preset already defaults to long and short-term, matching the flag path.

Testing

  • bun test: 2854 pass. tsc --noEmit clean.
  • Flags: built dist/index.js, ran project create --template agent-python-strands-container. Dockerfile and .dockerignore present, CMD rendered with opentelemetry-instrument, spec has build: Container and no runtimeVersion, memory with four strategies, uv.lock generated.
  • TUI: drove the wizard through the TUI harness. New option renders, selecting it shows the memory step, review shows the template, project created. The TUI scaffold and the flag scaffold diff identically apart from the project name.
  • Live deploy to us-east-1: runtime reached READY with an ECR container URI, project invoke runtime returned the expected reply over the event stream. Torn down with project remove all --yes then project deploy --yes. Stack and ECR repository gone.

The TUI create wizard has no build question, so a Container build of the
Strands agent was unreachable from it. The new preset is agent-python-strands
with build Container, which keeps the Dockerfile and .dockerignore in the
scaffold. The wizard's memory step now keys off the preset's framework rather
than one hardcoded template name.
@github-actions github-actions Bot added the size/s PR size: S label Sep 3, 2026
@agentcore-devx-automation agentcore-devx-automation Bot added agentcore-harness-reviewing AgentCore Harness review in progress claude-security-reviewing Claude Code /security-review in progress labels Sep 3, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automation agentcore-devx-automation Bot removed the claude-security-reviewing Claude Code /security-review in progress label Sep 3, 2026

@agentcore-devx-automation agentcore-devx-automation Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AgentCore Harness Review

Verdict: Looks good

Small, contained change. The new template shortcut, wizard option, and tests all fit cleanly into the existing patterns, and resolveRuntimeTemplateShortcut already handles Container builds omitting runtimeVersion.

One thing worth double-checking (not a blocker):

  • screen.tsxasksMemory also flips a2a-python-strands. The old code gated the memory step on values.template === "agent-python-strands"; the new asksMemory helper returns true for any template with framework === "strands". a2a-python-strands is in TEMPLATE_OPTIONS and has framework: "strands", so the wizard will now show a memory step for it too (previously it silently used the template default longAndShortTerm). This is probably an intentional consistency fix, but it's a user-visible change that isn't called out in the PR description. If it's intentional, a follow-up test covering the a2a flow (analogous to the new strands-container test) would lock it in; if not, gate on build/name explicitly.

Otherwise LGTM.

@agentcore-devx-automation agentcore-devx-automation Bot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Sep 3, 2026
…emory test

A --build CodeZip override on a Container preset now takes the runtime
version from LANGUAGE_VERSION_DEFAULTS for the preset's language instead of
always PYTHON_3_14. The container wizard test is parameterized to also cover
a2a-python-strands, which gains the memory step from the framework-based gate.
@tejaskash

Copy link
Copy Markdown
Contributor Author

Addressed in 57110ac: the CodeZip-override fallback now reads LANGUAGE_VERSION_DEFAULTS[template.language], and the container wizard test is a test.each that also drives a2a-python-strands through the memory step.

@github-actions github-actions Bot added size/s PR size: S and removed size/s PR size: S labels Sep 3, 2026
@agentcore-devx-automation agentcore-devx-automation Bot added the claude-security-reviewing Claude Code /security-review in progress label Sep 3, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automation agentcore-devx-automation Bot removed the claude-security-reviewing Claude Code /security-review in progress label Sep 3, 2026
@tejaskash
tejaskash merged commit 43871fd into refactor Sep 3, 2026
20 of 21 checks passed
@tejaskash
tejaskash deleted the feat/template-agent-python-strands-container branch September 3, 2026 22:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s PR size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants