Limpiar Notebook
La selección automática por el Main o su propietario designado siempre utiliza únicamente
scope=current-task a continuación, nunca el valor predeterminado de toda la sesión. Úsalo cuando existan
registros desechables comprobados, después del resultado y las verificaciones requeridas y después de que
la limpieza del scratch de la tarea haya finalizado usando su propiedad/enlaces. De lo contrario, no inicies
un flujo de trabajo de limpieza. Las instrucciones de retención, los resultados del Notebook solicitados, los
originales requeridos y los enlaces aún en uso son exclusiones. No los muevas ni archives meramente para
permitir la eliminación. Pausa, bloqueo, espera de aprobación, fin de turno, detención del agente y
cancelación sin descarte no son finalización; conserva la continuación necesaria.
Una invocación pública directa sin ese
ámbito autoriza la eliminación de todo el directorio del Notebook de la Tarea para esta sesión de
Cursor, incluidos los registros completados. Para ese valor predeterminado público, no esperes la
finalización de la tarea ni solicites una segunda confirmación.
Valor predeterminado público de toda la sesión
Toma el session_id actual solo cuando esté explícitamente disponible en el
contexto de la tarea de Cursor. Con los elementos integrados de Node.js, calcula sessionKey como
Buffer.from(session_id, 'utf8').toString('hex'), luego calcula el destino exacto
como path.join(os.tmpdir(), 'scope-focus', 'task-notebook', sessionKey).
Requiere un ID de sesión no vacío. Si no está disponible, no elimines nada e informa
que el notebook de la sesión actual no se puede identificar. Nunca infieras una sesión
a partir de un listado de directorios, un notebook antiguo u otra tarea.
Si el destino está ausente, informa que no era necesario eliminar nada. Si está presente, verifica
que la raíz del notebook de Scope Focus y el destino sean directorios reales, no enlaces simbólicos. Cuando
plan.md exista, requiere que sea un archivo regular, no un enlace simbólico, y requiere que su
cabecera Session: coincida con el ID de sesión actual. Enumera su contenido y
vuelve a verificar el destino exacto y las exclusiones antes de la eliminación. No sigas enlaces
fuera del destino y no elimines otros directorios de sesión, archivos de repositorio
o informes HTML almacenados en otro lugar.
Elimina solo el destino verificado con fs.rmSync(target, { recursive: true }),
sin force ni globs. Confirma que el destino esté ausente después e informa el
resultado. Si la propiedad o el destino son ambiguos, no elimines nada e informa la
razón exacta. No crees un notebook de reemplazo automáticamente.
scope=current-task
Se usa automáticamente para registros elegibles de la tarea actual o ante una solicitud explícita que nombre este ámbito. Nunca autoriza la eliminación de toda la sesión. Espera el resultado sustancial real, la evidencia requerida y cada CLEAN seleccionado u obligatorio, más el resultado final del notebook con la limpieza aún pendiente. Mantén los registros necesarios para la continuación mientras alguna de estas condiciones no se cumpla.
Requiere la clave de tarea exacta, su relación con esta ejecución completada y
o bien un session_id actual explícitamente disponible o bien una ruta de plan.md
del notebook explícitamente proporcionada para la misma tarea seleccionada bajo el contrato de
continuación manual del Task Notebook. No busques notebooks ni infieras la sesión actual
a partir de directorios o registros antiguos. Para una sesión actual, calcula la ruta de la clave de sesión
existente anterior. Para una ruta manual proporcionada, valida la cabecera
Session: original con respecto a su directorio de clave de sesión y la relación explícita
con esta tarea; no la reasignes a la sesión actual.
Resuelve el os.tmpdir() real con fs.realpathSync. Requiere que el directorio de sesión del notebook
esté directamente dentro de su espacio de nombres scope-focus/task-notebook. El
espacio de nombres, la sesión y los directorios de tareas deben ser directorios reales, no enlaces simbólicos;
el plan de entrada, cuando esté presente, debe ser un archivo regular. Valida la contención
canónica y cada componente de ruta afectado antes de la mutación. Una clave de tarea debe
ser un nombre base seguro para el sistema de archivos, nunca un separador, . o ... Verifica Session:,
Task:, la selección directa o la selección automática con su fuente de orden y necesidad,
y la asociación de ejecución exacta. El localizador raíz proporcionado por Main tiene prioridad
sobre el localizador de enlace local de un hijo; los metadatos por sí solos no otorgan propiedad. Una ruta manual
proporcionada debe pasar las mismas verificaciones de ubicación y propiedad que una calculada.
Enumera solo los destinos y exclusiones exactos. Elimina el directorio de la clave de tarea
solo cuando su contenido sean registros comprobados de esta ejecución; conserva los
originales requeridos, los resultados, otras tareas y cada entrada desconocida o ambigua. La propiedad
desconocida bloquea la eliminación de ese destino, no el permiso para eliminar su padre.
Elimina el plan.md de entrada de la sesión solo si su cabecera aún nombra esta ejecución.
Si ahora pertenece a otra tarea, consérvalo y usa los registros de propiedad establecidos
para el directorio de esta tarea; esa cabecera diferente no es autoridad para
eliminar otra tarea. La prueba faltante o contradictoria no autoriza ninguna eliminación.
Vuelve a verificar las rutas exactas, la propiedad, la finalización y las exclusiones inmediatamente antes
de la eliminación. Usa los elementos integrados de Node.js para los destinos comprobados, sin force, globs o
seguir enlaces simbólicos. Elimina los directorios padre de sesión y espacio de nombres solo si
están realmente vacíos; conserva otras claves de tarea y sesiones. Confirma que los destinos
seleccionados estén ausentes y que las exclusiones permanezcan después. Si ya están
ausentes, no crees nada. Informa el resultado real o la limitación concreta; no crees
un notebook de reemplazo, migración o archivo.
Si la eliminación elegible requerida permanece incompleta, conserva la continuación necesaria e informa el trabajo restante concreto. Los registros desconocidos o retenidos están excluidos de la eliminación automática, no son permiso para eliminar su padre. No declares finalización completa mientras quede trabajo obligatorio.