Paso 2 — Monta el sandbox
Objetivo
Sección titulada «Objetivo»Antes de poder ejecutar edit_image.py remotamente, ese script y la imagen de entrada tienen que existir dentro del sandbox. Esto se hace con sources: una lista de archivos que la Interactions API monta en el sistema de archivos del entorno al crearlo.
Dónde va
Sección titulada «Dónde va»En lib/geminiAgent.js, dentro de buildEnvironment, verás:
function buildEnvironment({ base64Image }) { const scriptContent = fs.readFileSync(SCRIPT_PATH, "utf-8");
// TODO (Paso 2): declara aquí la constante `sources`, un arreglo con los // dos archivos que el Managed Agent necesita en /workspace: la imagen del // usuario (`base64Image` -> /workspace/input.base64) y el script de // edición (`scriptContent` -> /workspace/edit_image.py). // Código completo y explicación -> Paso 2 del codelab.
// TODO (Paso 3): ...
throw new Error( "Completa los Pasos 2 y 3 del codelab en buildEnvironment() (lib/geminiAgent.js).", );
return { sources, ...environment };}Reemplaza el bloque del Paso 2 (déjalo debajo de const scriptContent = ... y encima del TODO del Paso 3, que resolverás en la próxima página) por:
const sources = [ { type: "inline", content: base64Image, target: "/workspace/input.base64", }, { type: "inline", content: scriptContent, target: "/workspace/edit_image.py", }, ];No borres todavía el throw ni el TODO del Paso 3 — los completarás en la siguiente página. Es normal que el archivo no compile/funcione hasta terminar ambos.
Cómo funciona
Sección titulada «Cómo funciona»- Cada entrada de
sourceses de tipo"inline": elcontentviaja como texto dentro del propio request de creación del entorno (no es una URL ni una referencia a un archivo ya subido). targetes la ruta absoluta donde ese contenido aparecerá dentro del sandbox. Aquí usamos/workspace, la carpeta de trabajo estándar del agente.- La imagen viaja como base64 sin decodificar (
/workspace/input.base64) porquesourcessolo transporta texto — el propioedit_image.pyse encargará de decodificarla a JPEG dentro del sandbox (verás el flag--decodemás adelante). - El script Python (
scriptContent) se lee del disco local confs.readFileSync(SCRIPT_PATH, ...)cada vez que se crea un sandbox nuevo — así cualquier cambio que hagas enscripts/edit_image.pyse refleja automáticamente en la próxima edición, sin necesidad de “desplegar” el script por separado.
Continúa a Paso 3 — Protege la API key para terminar buildEnvironment.