CLI
fp — sin interfaz, programable, orientada a la captura, con un contrato de códigos de salida en el que puedes confiar.
Qué es
Una CLI de verdad, no un mando a distancia para una ventana abierta. Funciona en un servidor, en CI y en un contenedor sin pantalla.
El código de salida es una superficie pública de la API, tan estable como la salida JSON. Cambiar lo que significa un código es un cambio incompatible.
fp login
fp capture "the thing I will otherwise forget"
fp query "meeting notes" --ndjson | jq .titleComandos
| Comando | Hace |
|---|---|
fp capture [TEXT…] | captura a la bandeja de entrada desde argumentos, un archivo o stdin |
fp add --last | captura el comando anterior, su salida, su código de salida y su duración |
fp ask "QUESTION" | una respuesta con citas a nivel de bloque que puedes abrir |
fp query TEXT | búsqueda de texto, una página; --ndjson emite en streaming. Los filtros estructurados son solo por MCP (fastpad_query) |
fp watch | el flujo de cambios del espacio de trabajo, como tubería |
fp turns | propuestas pendientes de revisión |
fp diff TURN_ID | una propuesta como diferencia bloque a bloque |
fp turn-abandon TURN_ID | descarta una propuesta; aceptar una requiere un permiso (abajo) |
fp pull / fp push | la copia Markdown, de ida y de vuelta |
fp mcp | un puente MCP local por stdio y un intermediario de credenciales del llavero |
fp agents | principales de agente, scopes, autonomía y última actividad |
fp commands --json | la tabla de comandos, como datos |
--json, --ndjson, --quiet, --dry-run, --profile y --timeout funcionan en todos los comandos. En cualquiera de los dos modos JSON, la prosa nunca toca stdout.
Códigos de salida
| Código | Significa |
|---|---|
0 | el efecto solicitado ocurrió |
1 | fallo sin clasificar |
2 | error de uso: comando desconocido, bandera incorrecta, falta stdin |
3 | sin autenticar, o la credencial fue rechazada |
4 | el objetivo no existe, o ya no es visible |
5 | conflicto: estado caducado, idempotencia, ambigüedad |
6 | límite de tasa; retry_after_ms va en el documento de problema |
7 | aceptado localmente y encolado para reenvío. No es un fallo |
8 | denegado por política, incluido todo intento de aprobar una propuesta |
fp --exit-codes # prints the contractLa captura nunca falla
fp capture no falla ante un error de red. Escribe en una cola local duradera con una clave de idempotencia y sale con 7, y el siguiente comando que funcione la vacía. La captura es la interacción que decide si sigues usando una app de notas, así que tiene que funcionar en un avión.
fp capture --status # pending / delivered / failed
fp capture --flush # drain now; safe from cron or a shell hookfp accept necesita una concesión
Acepta un turno que abrió tu credencial, y solo si esa credencial lleva turns:accept — algo que un fp login normal nunca pide. Inicia sesión con fp login --scope turns:accept para obtenerlo, y la página de aprobación lo nombra. Sin el scope, fp accept termina con código 8 y approve-not-permitted; ejecuta fp diff para leer la propuesta y entrega a una persona la URL con la que termina.
Cada aceptación desde la terminal se registra como cualquier otra aceptación de agente: atribuida a la credencial, marcada como agent_accepted y listada en la página de actividad de agentes para que alguien la revise o la revierta.