feat: import agents_and_robots platform as unibots (Matrix-out, unibus transport)
Reemplaza el scaffold del echobot por la plataforma completa de bots traida desde ~/DataProyects/Github/agents_and_robots tras la operacion Matrix-out: los bots ya no hablan por Matrix sino por el bus unibus (modelo todo-rooms + E2E via shell/transportunibus sobre github.com/enmanuel/unibus/pkg/client). - go.mod: replace de unibus -> ../unibus y de fn-registry -> ../../../.. (paths relativos reajustados a la nueva ubicacion dentro de fn_registry). - app.md: bump a 0.2.0, descripcion + arquitectura + comandos + gotchas reales. - modulo Go conservado como github.com/enmanuel/agents (sin reescribir imports). agents_and_robots queda archivado como museo de la era Matrix.
This commit is contained in:
Executable
+94
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env bash
|
||||
# new.sh — Scaffolder interactivo para automatizaciones cron
|
||||
# Crea crons/<name>/schedule.yaml y el archivo de prompt/mensaje vacío.
|
||||
set -euo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
|
||||
echo "=== Nueva automatización cron ==="
|
||||
echo ""
|
||||
|
||||
# Nombre
|
||||
read -rp "Nombre de la automatización (ej: weekly-report): " NAME
|
||||
NAME="${NAME// /-}"
|
||||
NAME="${NAME,,}" # lowercase
|
||||
if [[ -z "$NAME" ]]; then
|
||||
echo "Error: el nombre no puede estar vacío." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ -d "$REPO_ROOT/crons/$NAME" ]]; then
|
||||
echo "Error: ya existe crons/$NAME/" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Descripción
|
||||
read -rp "Descripción breve: " DESCRIPTION
|
||||
if [[ -z "$DESCRIPTION" ]]; then
|
||||
echo "Error: la descripción no puede estar vacía." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Tipo de acción
|
||||
echo ""
|
||||
echo "Tipo de acción:"
|
||||
echo " 1) send_message — envía un mensaje estático o plantilla"
|
||||
echo " 2) llm_prompt — llama al LLM con un prompt y envía la respuesta"
|
||||
read -rp "Selecciona [1/2]: " ACTION_TYPE_NUM
|
||||
case "$ACTION_TYPE_NUM" in
|
||||
1) ACTION_KIND="send_message"; PROMPT_FILE="message.md" ;;
|
||||
2) ACTION_KIND="llm_prompt"; PROMPT_FILE="prompt.md" ;;
|
||||
*)
|
||||
echo "Error: selección inválida. Usa 1 o 2." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Cron expression
|
||||
DEFAULT_CRON="0 9 * * *"
|
||||
read -rp "Cron expression [default: $DEFAULT_CRON]: " CRON_EXPR
|
||||
CRON_EXPR="${CRON_EXPR:-$DEFAULT_CRON}"
|
||||
|
||||
# Crear estructura
|
||||
CRON_DIR="$REPO_ROOT/crons/$NAME"
|
||||
PROMPTS_DIR="$CRON_DIR/prompts"
|
||||
mkdir -p "$PROMPTS_DIR"
|
||||
|
||||
# schedule.yaml
|
||||
cat > "$CRON_DIR/schedule.yaml" <<EOF
|
||||
# Automatización: $NAME
|
||||
name: $NAME
|
||||
description: "$DESCRIPTION"
|
||||
|
||||
# Cron por defecto
|
||||
default_cron: "$CRON_EXPR"
|
||||
|
||||
# Acción
|
||||
action:
|
||||
kind: $ACTION_KIND
|
||||
# Relativo a la raíz del proyecto
|
||||
template: crons/$NAME/prompts/$PROMPT_FILE
|
||||
|
||||
# Sala de salida por defecto (vacío = el agente debe configurar output_room)
|
||||
default_output_room: ""
|
||||
EOF
|
||||
|
||||
# Archivo de prompt/mensaje
|
||||
touch "$PROMPTS_DIR/$PROMPT_FILE"
|
||||
|
||||
echo ""
|
||||
echo "✓ Creado: crons/$NAME/schedule.yaml"
|
||||
echo "✓ Creado: crons/$NAME/prompts/$PROMPT_FILE"
|
||||
echo ""
|
||||
echo "Edita crons/$NAME/prompts/$PROMPT_FILE con el contenido deseado."
|
||||
echo ""
|
||||
echo "Añade esto a agents/<id>/config.yaml:"
|
||||
echo ""
|
||||
echo " schedules:"
|
||||
echo " - name: $NAME"
|
||||
echo " cron: \"$CRON_EXPR\""
|
||||
echo " output_room: \"!TUROOM:matrix-af2f3d.organic-machine.com\""
|
||||
echo " action:"
|
||||
echo " kind: $ACTION_KIND"
|
||||
echo " template: \"crons/$NAME/prompts/$PROMPT_FILE\""
|
||||
echo ""
|
||||
echo "O usa: ./dev-scripts/cron/apply.sh $NAME <agent-id>"
|
||||
Reference in New Issue
Block a user