Casos y traspasos
Inicie un trabajo real, asigne responsabilidades, preserve los resultados, revise y reanude.
Iniciar e inspeccionar un caso
Al crear en un Espacio, incluido el predeterminado guardado, elija exactamente una opción: --private, --team-ids "$TEAM_ID" (IDs separados por comas o un array JSON) o --access con la configuración completa. En el JSON de --request son private, teamIds y access; no las combine. En el espacio personal pueden omitirse. El acceso de edición del Equipo cubre al creador sin añadir un permiso directo redundante.
epismo case start --version-id "$VERSION_ID" --input '{"customer":"Acme"}' --private
epismo case start --title "Review contract exception" --private
epismo case get <case-id-or-code>
epismo case list --status open
epismo case list --assigned-to <user-id>
epismo case list --sharing-scope anyoneLas consultas de detalle y acceso aceptan UUID o código inmutable como PANDA-317. Las demás operaciones usan el UUID. Case get incluye los últimos diez Registros. Continúe con records_next_cursor y records_scope (self) en CLI, o recordsNextCursor y recordsScope en API/MCP.
Los Casos públicos muestran el título, entrada, Tareas, Registros y traspasos legibles actuales, incluidas las incorporaciones posteriores. Conservan referencias públicas de autores y responsables, pero omiten permisos privados, fuentes vinculadas, informes y resúmenes de Review y configuración privada. La publicación permite solo leer. Los lectores explícitos también pueden leer Casos privados y sus fuentes; escribir requiere edición.
Las lecturas públicas de casos cuestan 0 créditos sin iniciar sesión en Web, CLI, API y MCP. Las lecturas de trabajo en API / CLI / MCP agrupan las lecturas auxiliares en un solo case get de 1 crédito; las lecturas normales de Web siguen gratis.
Utilice un caso respaldado por una versión cuando la guía sea importante para la reproducibilidad; Utilice un caso ad hoc cuando sea útil compartir el asunto pero no exista un playbook. Ninguno de los formularios crea tareas automáticamente.
Asignar y coordinar
epismo case access get <case-id>
epismo case access set <case-id> --access '{"visibility":"restricted","grants":{"<user-or-team-uuid>":"editor"}}' --lock-version <n>
epismo case assign <case-id> --assigned-to <user-id> --lock-version <n>
epismo case task create <case-id> --kind work --title "Verify totals" \
--instructions "Use the latest invoice" --assigned-to <user-id>
epismo case task create <case-id> --kind approval --title "Approve recommendation" \
--subject-record-id <record-id> --assigned-to <user-id>
epismo task list --status openAgregue un usuario a la ACL del caso antes de la asignación. Asigne el caso para la responsabilidad de todo el asunto y una tarea para un trabajo o aprobación explícito. Una tarea de aprobación debe identificar su registro temático exacto. task list muestra por defecto las tareas asignadas al usuario actual; use --assigned-to solo para otro responsable.
Conectar transferencias de casos (handoffs)
epismo case handoff create <from-case-id> --to-case-id <to-case-id>
epismo case handoff create <to-case-id> --from-case-id <from-case-id>
epismo case handoff remove <case-id> <handoff-id>
epismo case handoff graph get <case-id> --scope connected
epismo case handoff candidates list <case-id> --direction outgoingConecte casos secuenciales o dependientes mediante transferencias dirigidas (fromCaseId -> toCaseId). Crear o eliminar una transferencia requiere lectura en el origen y acceso de trabajo en el destino, de modo que un caso público puede continuarse en un caso que usted pueda editar, pero un lector no puede adjuntar trabajo a un caso público. Los bucles y ciclos se rechazan estrictamente. Inspeccione el DAG con epismo case handoff graph get.
Agregar, actualizar y leer registros
epismo case record append <case-id> --kind output --origin agent --content "..."
epismo case record append <case-id> --kind note --origin agent --content "..."
epismo case record append <case-id> --task-id <task-id> --request @evidence.json
epismo case record update <record-id> --content "..."
epismo case record delete <record-id>
epismo case record list <case-id> --scope ancestors --order ascLas mutaciones de Casos y Tareas requieren el último expectedLockVersion (la lectura devuelve lockVersion). Ante un conflicto, lea el estado actual y reconsidere el cambio. Los editores pueden asignar, cambiar títulos, cerrar, reabrir, reemplazar todos los permisos, archivar y restaurar. La asignación no concede acceso: el destinatario debe tener edición. Eliminar permisos no cambia al responsable. Los iniciadores, autores y aprobaciones completadas permanecen como historial.
Los clientes escriben Registros de tipo note, output o agreement. activity lo escribe el servidor. AI review crea informes en lugar de Registros de revisión. Los autores pueden editar o redactar sus Registros no sistémicos mientras conserven edición del Caso abierto. Use --scope (self, ancestors, descendants, neighbors, connected) para líneas temporales conectadas; los filtros solo acotan resultados autorizados y los cursores conservan la paginación.
Los registros usan note, output, activity, agreement (reservado al sistema) o agreement. Los nuevos registros y los cambios de tipo aceptan note, output o agreement. Las evaluaciones humanas y de agentes pueden guardarse como notas; AI Review guarda informes separados.
Actualizar y cerrar
epismo task update <task-id> --title "Verify totals and tax" \
--instructions "Use the signed invoice" --assigned-to <user-id> --lock-version <n>
epismo task set status <task-id> --status approved --lock-version <n>
epismo task set status <task-id> --status open --lock-version <n>
epismo case update <case-id> --title "Updated title" --lock-version <n>
epismo case update <case-id> --input '{"customer":"Acme"}' --lock-version <n>
epismo case update <case-id> --version-id <version-id> \
--input '{"customer":"Acme"}' --lock-version <n>
epismo report case get <case-id>
epismo report case generate <case-id>
epismo report case act <case-id> --report-id <report-id> --proposal-id <proposal-id> \
--action create
epismo report case act <case-id> --report-id <report-id> --proposal-id <proposal-id> --action dismiss
epismo case close <case-id> --status completed --lock-version <n>
epismo case reopen <case-id> --lock-version <n>Use completed o cancelled para tareas work, y approved, rejected o cancelled para tareas approval. Use open para reabrir una tarea terminada mientras su caso siga abierto. Guarde los detalles y motivos en registros.
Use --version-id para adjuntar o sustituir una versión legible y no archivada de un playbook en un caso abierto (open). Omita el campo para conservar la selección actual. Para quitar el playbook, use epismo case update CASE_ID --request '{"version_id":null,"expected_lock_version":3}'. Omita --input para reutilizar la entrada actual o envíe el objeto completo de sustitución en la misma actualización. La entrada resultante debe cumplir el esquema de la versión seleccionada, si la hay; si falla la validación, no se guarda ningún cambio. Los cambios crean actividades del sistema y conservan las tareas, los registros y los informes existentes. Las tareas mantienen sus referencias originales a pasos.
Puede agregar registros finales de forma atómica mientras cierra una tarea o caso proporcionando la matriz records a través de --request o el indicador correspondiente. La finalización requiere que todas las tareas estén cerradas. La cancelación cambia las tareas abiertas restantes a cancelled; reabrir el caso las deja cerradas.
Los editores del caso pueden usar epismo report case generate <case-id> (o el alias epismo case report generate; POST /v1/cases/{caseId}/report) para encolar una evaluación asíncrona de AI review sobre las evidencias y registros del caso. La generación devuelve de inmediato los metadatos del trabajo. Review utiliza instrucciones de evaluación integradas; no admite instrucciones personalizadas de la cuenta propietaria ni prompts por solicitud. La búsqueda web durante la evaluación se puede habilitar si la política del espacio de trabajo lo permite.
Una vez procesado, inspeccione el informe y las acciones propuestas con epismo report case get <case-id> (GET /v1/cases/{caseId}/report). La respuesta incluye el estado del informe, hallazgos sintetizados y propuestas accionables. Los editores pueden confirmar o descartar propuestas con epismo report case act <case-id> --report-id <report-id> --proposal-id <proposal-id> --action <create|dismiss> (POST /v1/cases/{caseId}/report/actions). Revise todo el contenido de la propuesta guardada y envíe reportId, proposalId y action (create o dismiss), con feedback opcional al descartar. La creación utiliza el contenido guardado sin cambios para crear una tarea, un caso con un enlace de traspaso dirigido, una sugerencia o un playbook con su primera versión. No envíe title, content, cambios de definición ni idempotencyKey; los reintentos utilizan la identidad de la propuesta. Las decisiones se conservan por propuesta: repetir una ya atendida devuelve el informe guardado actual sin crear más trabajo.
Los nuevos casos y playbooks utilizan la cuenta de facturación activa de quien confirma, con acceso restringido al creador; no se copian los permisos ni las fuentes externas del caso original. Crear un caso añade un enlace de traspaso dirigido desde el caso evaluado sin cerrarlo. La creación de playbooks se propone con moderación, cuando hay evidencia de un patrón recurrente y un uso futuro probable; las recomendaciones de creación ya atendidas no se vuelven a proponer para ese caso. Un informe desactualizado muestra un aviso orientativo de reevaluación y no bloquea las acciones; siguen aplicándose los permisos actuales y la validación de cada operación.
Fuentes externas
epismo case source link <case-id> --url "https://acme.slack.com/archives/C123/p1234567890123456"
epismo case source link "$CASE_ID" --url "https://docs.google.com/document/d/FILE_ID/edit"
epismo case get <case-id>
epismo case source refresh <case-id> <source-id>
epismo case source get <case-id> <source-id>
epismo case source unlink <case-id> <source-id>Vincule un hilo de Slack, un mensaje/hilo de Discord o un archivo nativo de Google Docs, Sheets o Slides con su cuenta conectada en el espacio activo. Slack y Discord requieren un espacio de trabajo; Google Drive admite espacios personales y de trabajo. Primero conecte Google Drive y seleccione el archivo con Google Picker en Web; una URL por sí sola no concede acceso. Las fuentes de Google Drive usan la clave de proveedor gdrive. Vincular y desvincular cuestan 2 créditos cada uno; la captura inicial está incluida al vincular. Cada actualización manual o automática completada cuesta 1 crédito a la cuenta de facturación de ese caso. Los casos cerrados solo se actualizan por solicitud explícita. Encolar, fallar, paginar y reintentar no tienen costo; las solicitudes agrupadas en una captura generan un solo cargo para ese caso. case get incluye sources solo para colaboradores de trabajo. Las lecturas usan capturas guardadas; compruebe el estado y las fechas. Si se omite contenido, obtenga la fuente completa más reciente con su ID. No se conserva contenido histórico. Las fuentes son independientes de los registros y no se incluyen en respuestas públicas. Consulte Slack, Discord y Google Drive para compartir, actualizar automáticamente y eliminar capturas.
La configuración explícita de creación y los cambios de acceso usan access: { visibility, grants }: visibilidad restricted/public y claves UUID de usuarios o equipos, o correos de usuarios registrados, con valores viewer/editor. Los correos se resuelven a UUID antes de guardar; las respuestas usan UUID. Un correo no registrado o roles en conflicto para el mismo usuario resuelto rechazan toda la operación. Cada cambio reemplaza el objeto completo; conserve los permisos ajenos al cambio e incluya el suyo si desea mantenerlo. Los propietarios conservan la gestión independientemente de los permisos. Los responsables y mantenedores no reciben acceso implícito. Los editores pueden consultar y reemplazar permisos, conservar al menos un editor explícito al cambiar permisos, archivar y restaurar. El JSON normal omite mapas privados; los editores pueden obtenerlos con access-get. Consulte Acceso e identidad.
Propiedad, responsabilidad y ciclo de vida
Playbooks y Casos tienen una cuenta propietaria de Usuario o Espacio de trabajo (ownerId), que también paga su uso. El propietario personal tiene todos los derechos; los Owners y Admins actuales ejercen esos derechos para un Espacio de trabajo. Los demás miembros necesitan permisos explícitos de usuario o Equipo, o visibilidad pública para leer contenido publicado. La membresía por sí sola no concede acceso. Al eliminar un miembro, se revocan sus permisos directos sobre los recursos propiedad de ese Espacio, incluidos los completados y archivados. Si la eliminación dejara algún recurso sin editor explícito, añada primero otro usuario o equipo editor, incluidos los recursos completados o archivados. Se conservan los permisos sobre recursos personales y de otros Espacios. Los permisos de Equipo y administración dependen de la membresía actual. El SSO obligatorio se aplica a los miembros; los usuarios externos con permisos directos usan la autenticación normal de Epismo. El acceso de Equipo entre espacios verifica el SSO del espacio de participación. Los listados usan permisos explícitos y la visibilidad pública admitida; la propiedad por sí sola no incluye un recurso.
Omita ownerId al crear o copiar para usar el Espacio de trabajo activo, o su cuenta personal si no hay uno seleccionado. La selección explícita también requiere autorización. Cuando hay un Espacio seleccionado, incluido el predeterminado de la conexión, la creación requiere exactamente una opción: private: true, teamIds no vacío o access. En el espacio personal puede omitirse la configuración. El permiso de edición del Equipo cubre al creador sin añadir un permiso directo redundante; se conserva un permiso directo solicitado explícitamente. Mantener o tener asignado un recurso no sustituye los permisos.
Archivar es distinto de cerrar. Los editores y propietarios pueden archivar desde Web, CLI, API o MCP. Los Casos archivados salen de vistas activas, recuentos y grafos y no pueden abrirse, pero conservan su trabajo. Liste con archived=true (case list --archived) para obtener el UUID y la última versión de bloqueo; restaurar conserva estado, responsables y permisos. Solo un propietario puede eliminar definitivamente un Caso archivado, con el último expectedLockVersion. Se eliminan sus Tareas, Registros, Fuentes y enlaces; otros Casos y el contenido original del proveedor permanecen.
epismo case list --archived
epismo case archive <case-id> --lock-version <n>
epismo case restore <case-id> --lock-version <n>
epismo case delete <case-id> --lock-version <n>Transfiera la propiedad de un Caso con epismo_case_owner_transfer, case owner transfer <case-id> --owner-id <account-id> --lock-version <n> o PATCH /v1/cases/{caseId}/owner (ownerId, expectedLockVersion, idempotencyKey). Requiere propiedad actual. Un Caso personal puede pasar al Espacio conectado; si es público, también exige gestión del Espacio de destino. Un Caso del Espacio puede pasar a su creador o a un Owner de ese Espacio. Se rechazan transferencias entre usuarios o entre Espacios. Se conservan asignación y permisos, cambia la cuenta de facturación y se borran los informes de Review derivados. Reasignar por sí solo no realiza estos cambios de propiedad.
epismo case owner transfer <case-id> --owner-id <account-id> --lock-version <n>Descubra Casos públicos con epismo case list --sharing-scope anyone, sin necesidad de iniciar sesión. Los resultados se ordenan por actualización e incluyen Casos sin Registros. Filtre el Playbook de origen con --playbook-id. Con sesión iniciada, omita --sharing-scope para incluir todas las clasificaciones legibles o elija only_me, shared o anyone. Los filtros no conceden acceso; consulte Acceso e identidad.
Consultar evaluaciones guardadas
El detalle del caso incluye el último informe accesible y el trabajo de generación sin cargar el historial ni ejecutar IA. Usa report case list (o el alias case report list) para obtener resúmenes del más reciente al más antiguo, --page-size y --cursor para paginar, y report case get --report-id para leer una evaluación completa guardada.
El historial exige acceso de trabajo actual al caso y devuelve solo evaluaciones que coinciden con la audiencia compartida actual. Los lectores públicos no reciben informes ni resúmenes. Los informes reemplazados tienen historical: true y son de solo lectura: crear o descartar una propuesta pendiente de uno devuelve HTTP 409. Lee el informe más reciente y reconsidera la propuesta antes de actuar. Los cambios de evidencia por sí solos siguen mostrando un aviso orientativo de reevaluación.
epismo report case list CASE_ID --page-size 20
epismo report case list CASE_ID --cursor NEXT_CURSOR
epismo report case get CASE_ID --report-id REPORT_IDInformes personales y de equipo
Los informes personales son privados para quien los generó en la cuenta de facturación activa. Los informes de equipo y las decisiones sobre propuestas se comparten con los miembros actuales desde el espacio activo. Consulta AI review para los criterios de selección, salud, historial y permisos de los informes.
epismo report personal generate --idempotency-key UUID
epismo report personal get --job-id JOB_ID
epismo report personal list --page-size 20
epismo report personal get --report-id REPORT_ID
epismo report personal act REPORT_ID --proposal-id PROPOSAL_ID --action create
epismo -w acme report team generate TEAM_ID --idempotency-key UUID
epismo -w acme report team get TEAM_ID --job-id JOB_ID
epismo -w acme report team list TEAM_ID --page-size 20
epismo -w acme report team get TEAM_ID --report-id REPORT_ID
epismo -w acme report team act REPORT_ID --proposal-id PROPOSAL_ID --action dismissLa generación devuelve un trabajo. Consulta con --job-id o selecciona un informe guardado con --report-id, pero no ambos. Pagina el historial con --page-size y --cursor. Reutiliza --idempotency-key UUID al reintentar la generación. Lee toda la propuesta antes de act; los reintentos de acciones usan su identidad, así que omite --idempotency-key. La salida usa snake_case, como subject_type y evaluated_at, y el campo compartido health.