The proxy path (llm_http_via_proxy) stripped HTTP headers but did not
decode chunked transfer-encoding, leaving hex size prefixes in the body
and causing cJSON_Parse to fail with 0 bytes text.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use MIMI_SPIFFS_BASE to centralize file path definitions, making the
base path configurable instead of hardcoded.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Remove the ui/ directory containing config_screen stubs that were
left over from the display removal. This code was not compiled
(not listed in CMakeLists.txt) and had no callers.
Signed-off-by: Asklv <boironic@gmail.com>
The code calls free() without including <stdlib.h>, which triggers
implicit declaration warnings during the build.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Remove button and IMU source files from the build. Drop the 'driver'
component dependency which was only needed for GPIO/I2C used by the
removed peripherals.
Signed-off-by: Asklv <boironic@gmail.com>
Remove button_Init(), imu_manager_init(), and
imu_manager_set_shake_callback() calls from mimi.c along with
their corresponding include directives.
Signed-off-by: Asklv <boironic@gmail.com>
Remove the buttons/ directory including multi_button library and
button_driver. Physical button input is not needed for the current
headless Telegram/WebSocket interaction model.
Signed-off-by: Asklv <boironic@gmail.com>
Remove the entire imu/ directory including I2C_Driver, QMI8658
accelerometer/gyroscope driver, and imu_manager. These hardware
peripherals are not used in the current mimiclaw product scope.
Signed-off-by: Asklv <boironic@gmail.com>
On ESP IDF 5.5 the get_current_time tool returns ESP_ERR_NOT_FOUND because
there is no "Date" header. This is because esp_http_client_get_header
only reads request headers. Response headers are only available via the
HTTP_EVENT_ON_HEADER event callback. They're dispatched and freed as they're
parsed.
Register an event handler that captures the "Date" header during HTTP response
parsing. The date string from this header is available as part of user context
after the HTTP request is finished.
- Remove unused context_build_messages() (superseded by direct cJSON in agent_loop)
- Remove unused llm_chat() and its helper extract_text_* functions (superseded by llm_chat_tools)
- Remove ota_manager.c from build (never called)
- Remove config_screen.c stub from build (no-op module)
- Remove unused PWR_KEY_State, Button_GPIO_Get_Level; drop config_screen dependency from button_driver
- Fix incorrect type cast in tool_get_time.c (char[64] cast to char**)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch primary console from USB Serial/JTAG to UART so log output
doesn't block when the device is powered by a wall charger. USB
Serial/JTAG remains available as secondary console for debugging.
Closes#60
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a heartbeat timer that reads /spiffs/config/HEARTBEAT.md every 30
minutes and sends a prompt to the agent if actionable tasks are found.
Skips empty lines, headers, and completed checkboxes. Includes a
heartbeat_trigger CLI command for manual testing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bring back two-layer configuration: build-time defaults from mimi_secrets.h
with runtime NVS overrides via serial CLI. NVS values take highest priority
so a pre-flashed board can be reconfigured anywhere with just a USB cable.
Restored CLI commands: wifi_set, set_tg_token, set_api_key, set_model,
set_proxy, clear_proxy, set_search_key. Added new commands: config_show
(displays all config with sensitive fields masked), config_reset (clears
all NVS overrides), and help (lists all commands).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All configuration is now done exclusively through mimi_secrets.h at build time.
Removed NVS read/write logic, CLI config commands (wifi_set, set_tg_token,
set_api_key, set_model, set_proxy, clear_proxy, set_search_key), and setter
functions from all modules. CLI retains debug/maintenance commands only.
Updated all documentation to reflect the change.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move working indicator into ReAct loop so it fires before every
llm_chat_tools call (including tool-use iterations), and randomly
select from 5 cute phrases using esp_random().
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Enable the agent to persist memories by adding 4 SPIFFS file tools
(read_file, write_file, edit_file, list_dir) with path validation,
and update the system prompt with memory guidelines pointing to
/spiffs/memory/MEMORY.md and daily notes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Send "mimi😗is working..." to user when processing starts.
List get_current_time in system prompt available tools so the agent
knows to call it for time/date queries. Remove auto time fetch from
system prompt builder — agent calls the tool on demand.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fetches real time via HTTP Date header (works through proxy),
sets system clock, and returns formatted local time to the agent.
Also adds MIMI_TIMEZONE config and updates default model to claude-opus-4-5.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>