Configuracion
Herramientas personalizadas (UDTs)
FoxAgent soporta herramientas definidas por el usuario (UDTs) que tu agente de IA puede invocar. Las UDTs son clases VFP que heredan de FoxAgentTool y exponen parametros y logica de ejecucion.
Ejemplo de UDT
* GetSaldoTool.prg - Coloca este archivo en tu carpeta Tools\
DEFINE CLASS GetSaldoTool AS FoxAgentTool
ToolName = "get_saldo"
ToolDescription = "Obtiene el saldo de un cliente por su codigo"
FUNCTION DefineParameters()
THIS.AddParam("clienteCode", "number", "Codigo del cliente", .T.)
ENDFUNC
FUNCTION Execute(toContext)
LOCAL lnCode, lcResult
lnCode = THIS.GetParam("clienteCode")
* Tu logica de negocio aqui
lcResult = "Cliente " + TRANSFORM(lnCode) + ": $1500.00"
RETURN THIS.Ok(lcResult)
ENDFUNC
ENDDEFINE Tipos de parametros soportados
Al definir parametros con AddParam(), puedes usar los siguientes tipos:
| Tipo | Descripcion | Ejemplo |
|---|---|---|
"string" | Texto de cualquier longitud | THIS.AddParam("nombre", "string", "Nombre del cliente", .T.) |
"number" | Numero entero o decimal | THIS.AddParam("cantidad", "number", "Cantidad", .T.) |
"boolean" | Valor logico (.T. o .F.) | THIS.AddParam("activo", "boolean", "Esta activo?", .F.) |
"date" | Fecha (formato YYYY-MM-DD) | THIS.AddParam("fecha", "date", "Fecha de inicio", .F.) |
"object" | Objeto JSON complejo | THIS.AddParam("filtro", "object", "Filtros avanzados", .F.) |
El cuarto parametro de AddParam() indica si el parametro es obligatorio (.T.) u opcional (.F.).
Ejemplo con multiples parametros
* SearchClientsTool.prg
DEFINE CLASS SearchClientsTool AS FoxAgentTool
ToolName = "search_clients"
ToolDescription = "Busca clientes por nombre, codigo postal o saldo minimo"
FUNCTION DefineParameters()
THIS.AddParam("searchText", "string", "Texto a buscar en nombre o codigo", .T.)
THIS.AddParam("postalCode", "string", "Filtrar por codigo postal", .F.)
THIS.AddParam("minBalance", "number", "Saldo minimo requerido", .F.)
THIS.AddParam("activeOnly", "boolean", "Solo clientes activos", .F.)
ENDFUNC
FUNCTION Execute(toContext)
LOCAL lcSearch, lcPostal, lnMinBal, llActive
LOCAL lcQuery, lcResult
lcSearch = THIS.GetParam("searchText")
lcPostal = THIS.GetParam("postalCode")
lnMinBal = THIS.GetParam("minBalance")
llActive = THIS.GetParam("activeOnly")
* Construir consulta dinamica
lcQuery = "SELECT * FROM CLIENTES WHERE "
lcQuery = lcQuery + "(cNombre LIKE '%" + lcSearch + "%' OR cCodigo = '" + lcSearch + "')"
IF !EMPTY(lcPostal)
lcQuery = lcQuery + " AND cCodPost = '" + lcPostal + "'"
ENDIF
IF lnMinBal > 0
lcQuery = lcQuery + " AND nSaldo >= " + TRANSFORM(lnMinBal)
ENDIF
IF llActive
lcQuery = lcQuery + " AND lActivo = .T."
ENDIF
* Ejecutar y retornar resultados
&lcQuery INTO CURSOR curResult
SELECT * FROM curResult INTO ARRAY laResult
lcResult = TRANSFORM(ALEN(laResult,1)) + " clientes encontrados"
RETURN THIS.Ok(lcResult)
ENDFUNC
ENDDEFINE Descubrimiento automatico
Las UDTs se cargan automaticamente desde la carpeta configurada con SetToolsFolder(). Solo necesitas colocar tus archivos .prg en esa carpeta y FoxAgent los descubrira al conectar.
LOCAL loBridge
loBridge = CREATEOBJECT("FoxAgent.Bridge")
loBridge.SetInstance(_VFP)
loBridge.SetToolsFolder("C:\MiProyecto\Tools") && Scan automatico
loBridge.Connect("mi-app-001", "Mi App", 3) Sistema de roles
FoxAgent tiene 4 niveles de permisos que controlan que herramientas puede usar tu agente de IA:
| Nivel | Nombre | Acceso |
|---|---|---|
| 0 | Observer | Solo lectura: listar instancias, ver variables, cursores, formularios |
| 1 | Operator | Lectura + escritura: set_variable, exec_command, UDTs |
| 2 | Developer | Operator + get_call_stack, get_object_members, reload_procedure |
| 3 | Admin | Developer + close_cursors, execute_tool, build_project |
El rol se establece al conectar con Connect(instanceId, displayName, role) y puede cambiarse en caliente con set_role.
Licencia
FoxAgent usa licencias validadas. Coloca el archivo foxagent.lic junto al ejecutable del Broker:
# Ruta de la licencia
C:\Program Files\FoxAgent\foxagent.lic
# Sin licencia, el Broker arranca en modo evaluacion Herramientas integradas
FoxAgent incluye 33 herramientas integradas organizadas por nivel:
Inspeccion (Nivel 0)
list_instances— Ver instancias VFP conectadasget_variables— Leer variables publicasget_cursors— Ver cursores abiertosget_cursor_data— Leer filas de un cursorget_active_form— Formulario activoget_form_controls— Controles del formulariotake_screenshot— Captura de pantallaeval_expression— Evaluar expresion VFP
Ejecucion (Nivel 1)
set_variable— Asignar variableexec_command— Ejecutar comando VFPset_control_value— Cambiar valor de controlrefresh_form— Refrescar formulario
Desarrollo (Nivel 2)
get_call_stack— Pila de llamadasget_object_members— Miembros de objetoreload_procedure— Recargar PRGrun_report— Ejecutar reporteget_project_structure— Estructura del proyectoget_source_file— Codigo fuentebuild_project— Compilar proyecto
Admin (Nivel 3)
close_cursors— Cerrar cursoresexecute_tool— Ejecutar UDTget_tools— Lista de herramientas