if(CONFIG_EXAMPLES_AI_AGENT_VELA)
set(AGENT_SRCS
src/agent_main.c
src/core/message_bus.c
src/core/message_bus_tap.c
src/core/agent_loop.c
src/core/agent_trace.c
src/core/context_builder.c
src/core/memory_store.c
src/core/session_mgr.c
src/core/arena_alloc.c
src/llm/llm_proxy.c
src/llm/llm_parse.c
src/llm/llm_vision.c
src/llm/llm_router.c
src/llm/llm_cache.c
src/infra/http_proxy.c
src/infra/vela_tls.c
src/infra/config_store.c
src/infra/network_manager.c
src/infra/url_parse.c
src/infra/a2a_handler.c
src/infra/cron_service.c
src/infra/heartbeat.c
src/channels/nsh_commands.c
src/channels/cmd_llm.c
src/channels/cmd_voice.c
src/channels/cmd_channel.c
src/channels/ws_server.c
src/tools/tool_registry.c
src/tools/tool_files.c
src/tools/tool_get_time.c
src/tools/tool_web_search.c
src/tools/tool_cron.c
src/tools/tool_fetch_url.c
src/tools/tool_feishu_doc.c
src/tools/tool_feishu_chat.c
src/tools/tool_vision.c
src/tools/tool_shell.c
src/tools/tool_system.c
src/tools/tool_health.c
src/tools/tool_control.c
src/tools/tool_media.c
src/tools/tool_proxyquickapp.c
src/tools/skill_loader.c
src/tools/tool_guard.c
src/tools/tool_amap.c
src/voice/volc_tts.c
src/voice/volc_tts_ws.c
src/voice/volc_asr.c
src/voice/voice_tts.c
src/voice/voice_asr.c
src/voice/audio_capture.c
src/voice/audio_playback.c
src/voice/voice_channel.c
src/stubs.c
src/ui/qrcode_display.c
)
if(CONFIG_AI_AGENT_FEISHU)
list(APPEND AGENT_SRCS
src/channels/feishu_bot.c
src/channels/feishu_ws.c
src/channels/feishu_http.c
src/channels/feishu_proto.c
src/channels/feishu_recv.c
src/channels/feishu_send.c
)
endif()
if(CONFIG_AI_AGENT_MQTT)
list(APPEND AGENT_SRCS src/channels/mqtt_channel.c)
endif()
if(CONFIG_AI_AGENT_WEIXIN)
list(APPEND AGENT_SRCS src/channels/weixin_channel.c)
endif()
if(CONFIG_AI_AGENT_SKILL_SYNC)
list(APPEND AGENT_SRCS src/tools/skill_sync.c)
endif()
if(CONFIG_AI_AGENT_TEST)
list(APPEND AGENT_SRCS tests/integs/test_vision_integ.c)
endif()
if(CONFIG_AI_AGENT_LVGL_UI)
list(APPEND AGENT_SRCS src/ui/lvgl_ui_channel.c)
endif()
if(CONFIG_AI_AGENT_CAMERA)
list(APPEND AGENT_SRCS src/tools/tool_camera.c)
endif()
if(CONFIG_AI_AGENT_NODE)
list(APPEND AGENT_SRCS
src/node/node_client.c
src/node/node_manager.c
)
endif()
if(CONFIG_AI_AGENT_MCP)
list(APPEND AGENT_SRCS
src/tools/mcp_bridge.c
src/tools/mcp_server.c
src/tools/mcp_tool_registry.c
src/tools/mcp_builtin_tools.c
src/tools/mcp_client.c
)
endif()
if(CONFIG_AI_AGENT_BLE_GATT)
list(APPEND AGENT_SRCS src/infra/ble_gatt.c)
endif()
if(CONFIG_AI_AGENT_BLE_NET)
list(APPEND AGENT_SRCS src/infra/ble_net.c)
endif()
if(CONFIG_AI_AGENT_XIAOZHI)
list(APPEND AGENT_SRCS
src/channels/xiaozhi_channel.c
src/channels/xiaozhi_opus.c
src/channels/xiaozhi_udp.c
)
endif()
set(CJSON_INC ${NUTTX_APPS_DIR}/netutils/cjson/cJSON)
set(MBEDTLS_INC ${NUTTX_APPS_DIR}/crypto/mbedtls/mbedtls/include)
set(TOPICS_INC ${CMAKE_SOURCE_DIR}/../frameworks/system/topics/include)
set(VIBRATOR_INC ${CMAKE_SOURCE_DIR}/../frameworks/system/vibrator)
set(MEDIA_INC ${CMAKE_SOURCE_DIR}/../frameworks/multimedia/media/include)
set(MQTTC_INC ${NUTTX_APPS_DIR}/netutils/mqttc/MQTT-C/include)
if(CONFIG_AI_AGENT_AUDIO_PREPROCESS)
set(BES_AEC_INC ${NUTTX_APPS_DIR}/vendor/xiaomi/miwear/bes_aec/inc)
endif()
set(AGENT_INCDIRS
include
src
tests
${CJSON_INC}
${MBEDTLS_INC}
${TOPICS_INC}
${VIBRATOR_INC}
${MEDIA_INC}
${MQTTC_INC}
)
if(CONFIG_AI_AGENT_AUDIO_PREPROCESS)
list(APPEND AGENT_INCDIRS ${BES_AEC_INC})
endif()
nuttx_add_application(
NAME
${CONFIG_EXAMPLES_AI_AGENT_VELA_PROGNAME}
SRCS
${AGENT_SRCS}
INCLUDE_DIRECTORIES
${AGENT_INCDIRS}
DEPENDS
mqttc
STACKSIZE
${CONFIG_EXAMPLES_AI_AGENT_VELA_STACKSIZE}
PRIORITY
${CONFIG_EXAMPLES_AI_AGENT_VELA_PRIORITY}
)
add_custom_target(agent_touch_main ALL
COMMAND ${CMAKE_COMMAND} -E touch
${CMAKE_CURRENT_SOURCE_DIR}/src/agent_main.c
COMMENT "Refreshing AI Agent build timestamp"
)
endif()