aws-samples / aws-samples/sample-autonomous-cloud-coding-agents
feat(cli): read stack outputs in one call and derive repo show's default geography
- Lenguaje dominante
- TypeScript
- Estrellas
- 146
- Forks
- 46
- Merge medio
- 3 d 10 h
- PR fusionados (30 d)
- 24
Descripción
### Component
Scripts / CLI (`cli/src/stack-outputs.ts`, `cli/src/platform-doctor.ts`, `cli/src/repo-display.ts`)
### Describe the feature
Two related inefficiencies in how the CLI reads stack outputs.
**1. One `DescribeStacks` call per output.** `getStackOutput` issues a fresh `DescribeStacksCommand` each time and caches nothing:
```ts
// cli/src/stack-outputs.ts
const result = await cf.send(new DescribeStacksCommand({ StackName: stackName }));
```
`runPlatformDoctor` now reads nine outputs, so one `bgagent platform doctor` makes nine calls that each return the same full stack description. They run concurrently in a `Promise.all`, so the wall-clock cost is small, but it is nine API calls where one would do — and `DescribeStacks` is a throttled control-plane operation, so it is the kind of thing that degrades on a busy account rather than on a developer laptop.
**2. `repo show` reports a hardcoded default geography.** `PLATFORM_REPO_DEFAULTS.model_id` is a compile-time literal:
```ts
// cli/src/repo-display.ts
model_id: 'global.anthropic.claude-opus-5',
```
The effective default is `.`, so on a deployment using any other geography `repo show` displays a model the stack does not grant for every repo that sets no override. Correct on the shipped default only.
### Use case
The second is the user-visible one: an operator on a non-`global` deployment reads `repo show`, sees `global.anthropic.claude-opus-5`, and has been told the wrong thing about their own stack — the same class of "documented value diverges from deployed value" the geography work otherwise closes. The first is cheap hygiene that gets slightly worse each time a check is added.
### Proposed solution
- Fetch the stack once and read outputs from that result (either a `describeStack`-level helper that returns all outputs, or a short-lived per-invocation cache keyed by region+stack). `getStackOutput` already has a `getStack` internal that would be the natural seam.
- Derive the displayed default from the stack's `BedrockGeoRegion` output when available, and fall back to the literal only when it is absent (the same degradation `repo onboard --model` already uses for older stacks).
### Other information
Both raised during review of #806 and deliberately deferred: the PR's scope is making an unusable model fail early rather than at turn 0, and neither of these changes that behaviour. The `BedrockGeoRegion` / `BedrockModelIds` outputs that #806 adds are what make the second one implementable.
Guía de contribución
Línea de trabajo
Empieza por cli/src/stack-outputs.ts y su getStack interno existente; después, sigue los llamadores en cli/src/platform-doctor.ts y cli/src/repo-display.ts. Verifica cómo se exponen BedrockGeoRegion y otras salidas del stack, e inspecciona el fallback existente de repo onboard. Se considera terminado cuando una descripción del stack sirve para las lecturas de platform doctor y repo show deriva su geografía predeterminada del stack, recurriendo al fallback cuando la salida no está presente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- aws, typescript
- Área
- cli, cloud
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Activo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 68/100