Harden /review_prs Stage-2 sketch against `args` arriving as a JSON string

Abierto Apto para principiantes
#670 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
1/5
Tiempo estimado
Menos de una hora
Aptitud para principiantes
92/100
Tipo de issue
Documentación
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
javascript

Línea de trabajo

Abre .abca/commands/review_prs.md y lee el esquema de Stage-2 alrededor de las líneas 142–164, además de la prosa de Notes. Actualiza el esquema y la explicación para que Workflow args se normalicen tanto si llegan como una JSON string como si llegan como un array antes de usar .map. La tarea estará terminada cuando los dos criterios de aceptación estén reflejados en este archivo sin cambiar el comportamiento adaptable del esquema.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement P2

Problem

The /review_prs command (.abca/commands/review_prs.md) documents Stage 2 with an illustrative Workflow sketch (lines ~142–164) that the operator regenerates per invocation. That sketch iterates the PR descriptors with args.map(...) directly.

In practice the Workflow harness may deliver args to the script as a JSON-encoded string rather than a parsed array — even when the caller passes a genuine JSON array in the Workflow tool call. When that happens the script throws immediately:

Error: args.map is not a function ('args.map' is undefined)

before any review agent spawns. Because the skill is (correctly) a sketch that gets regenerated each run, every regeneration risks re-hitting this footgun. Observed live during the carve S1–S8 stacked-PR review train (2026-07-28): the first Workflow launch died in ~7ms with agent_count: 0; a one-line defensive unpack fixed it and the resumed run proceeded normally.

Why not freeze the whole script into the skill

The sketch is intentionally adaptable — N==1 skips the Workflow, arg modes differ (explicit list vs. review-requested:@me vs. NL filter), and diff baselining differs for a stack (each PR vs its parent branch) vs. a flat batch (each vs main). Freezing a full script would bake away that variance and pull orchestration mechanics back into a skill that deliberately stays a thin orchestrator. So the fix is a doc hardening, not a canned script.

Proposed fix (small, docs-only)

In the Stage-2 sketch, unpack defensively before iterating and add a half-sentence caveat:

// Workflow may deliver `args` as a JSON string; tolerate either form.
const prs = typeof args === 'string' ? JSON.parse(args) : args
const results = await parallel(prs.map((pr) => () => agent(...)))

Add one line to the Notes / Stage-2 prose noting that Workflow args can arrive JSON-encoded, so generated scripts should normalize before .map.

Scope

  • Docs only: .abca/commands/review_prs.md.
  • No code, no CDK, no agent-runtime change.
  • Self-sufficiency bar for the skill is preserved: a competent agent regenerating the script from the prose will no longer trip on the string/array ambiguity.

Acceptance criteria

  • Stage-2 sketch normalizes args (string-or-array) before .map.
  • A one-line caveat in the prose explains why.
  • No other behavior change; the sketch remains a sketch (not a frozen script).
Lenguaje dominante
TypeScript
Estrellas
170
Forks
52
Merge medio
2 d 21 h
PR fusionados (30 d)
11

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de aws-samples/sample-autonomous-cloud-coding-agents

Todos los issues de aws-samples/sample-autonomous-cloud-coding-agents

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.