gitextract_onovndeo/ ├── .changelogrc ├── .editorconfig ├── .env.sample ├── .github/ │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── BUG.md │ │ ├── DOCS.md │ │ ├── FEATURE_REQUEST.md │ │ ├── IMPROVEMENT.md │ │ └── QUESTION.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── build.yml │ ├── lint.yml │ ├── pre-release-nodejs-bridge.yml │ ├── pre-release-python-bridge.yml │ ├── pre-release-tcp-server.yml │ └── tests.yml ├── .gitignore ├── .gitpod.yml ├── .husky/ │ ├── commit-msg │ └── pre-commit ├── .lintstagedrc ├── .npmrc ├── .nvmrc ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── app/ │ ├── src/ │ │ ├── css/ │ │ │ ├── style.scss │ │ │ └── voice-energy/ │ │ │ ├── base.scss │ │ │ ├── idle.scss │ │ │ ├── listening.scss │ │ │ ├── main.scss │ │ │ ├── processing.scss │ │ │ └── talking.scss │ │ ├── custom-aurora-components/ │ │ │ ├── index.ts │ │ │ └── timer/ │ │ │ ├── index.ts │ │ │ └── timer.tsx │ │ ├── index.html │ │ └── js/ │ │ ├── chatbot.js │ │ ├── client.js │ │ ├── constants.js │ │ ├── init.jsx │ │ ├── listener.js │ │ ├── main.js │ │ ├── onkeydown.js │ │ ├── recorder.js │ │ ├── render-aurora-component.js │ │ ├── suggestion-handler.js │ │ ├── tool-ui-handler.js │ │ └── voice-energy.js │ └── vite.config.js ├── bin/ │ ├── cmake/ │ │ └── versions.json │ ├── llama.cpp/ │ │ └── versions.json │ ├── ninja/ │ │ └── versions.json │ └── pytorch/ │ └── versions.json ├── bridges/ │ ├── nodejs/ │ │ ├── .npmrc │ │ ├── package.json │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── main.ts │ │ │ ├── sdk/ │ │ │ │ ├── aurora/ │ │ │ │ │ ├── button.ts │ │ │ │ │ ├── card.ts │ │ │ │ │ ├── checkbox.ts │ │ │ │ │ ├── circular-progress.ts │ │ │ │ │ ├── flexbox.ts │ │ │ │ │ ├── form.ts │ │ │ │ │ ├── icon-button.ts │ │ │ │ │ ├── icon.ts │ │ │ │ │ ├── image.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── input.ts │ │ │ │ │ ├── link.ts │ │ │ │ │ ├── list-header.ts │ │ │ │ │ ├── list-item.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── loader.ts │ │ │ │ │ ├── progress.ts │ │ │ │ │ ├── radio-group.ts │ │ │ │ │ ├── radio.ts │ │ │ │ │ ├── range-slider.ts │ │ │ │ │ ├── scroll-container.ts │ │ │ │ │ ├── select-option.ts │ │ │ │ │ ├── select.ts │ │ │ │ │ ├── status.ts │ │ │ │ │ ├── switch.ts │ │ │ │ │ ├── tab-content.ts │ │ │ │ │ ├── tab-group.ts │ │ │ │ │ ├── tab-list.ts │ │ │ │ │ ├── tab.ts │ │ │ │ │ ├── text.ts │ │ │ │ │ └── widget-wrapper.ts │ │ │ │ ├── base-tool.ts │ │ │ │ ├── leon.ts │ │ │ │ ├── memory.ts │ │ │ │ ├── network.ts │ │ │ │ ├── packages/ │ │ │ │ │ └── lodash.ts │ │ │ │ ├── params-helper.ts │ │ │ │ ├── settings.ts │ │ │ │ ├── tool-manager.ts │ │ │ │ ├── tool-reporter.ts │ │ │ │ ├── toolkit-config.ts │ │ │ │ ├── tools/ │ │ │ │ │ ├── assemblyai_audio/ │ │ │ │ │ │ ├── assemblyai_audio-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── bash/ │ │ │ │ │ │ ├── bash-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── cerebras/ │ │ │ │ │ │ ├── cerebras-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── chatterbox_onnx/ │ │ │ │ │ │ ├── chatterbox_onnx-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── context/ │ │ │ │ │ │ ├── context-tool.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ecapa/ │ │ │ │ │ │ ├── ecapa-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── elevenlabs_audio/ │ │ │ │ │ │ ├── elevenlabs_audio-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── faster_whisper/ │ │ │ │ │ │ ├── faster_whisper-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── ffmpeg/ │ │ │ │ │ │ ├── ffmpeg-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── ffprobe/ │ │ │ │ │ │ ├── ffprobe-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── grok/ │ │ │ │ │ │ ├── grok-tool.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── memory/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── memory-tool.ts │ │ │ │ │ │ ├── qmd-embed-worker.mjs │ │ │ │ │ │ ├── qmd-retrieval.ts │ │ │ │ │ │ └── qmd-store.ts │ │ │ │ │ ├── open-meteo/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── open-meteo-tool.ts │ │ │ │ │ ├── openai_audio/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── openai_audio-tool.ts │ │ │ │ │ ├── opencode/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ │ └── prompt.md │ │ │ │ │ │ └── opencode-tool.ts │ │ │ │ │ ├── openrouter/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── openrouter-tool.ts │ │ │ │ │ ├── qwen3_asr/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── qwen3_asr-tool.ts │ │ │ │ │ ├── qwen3_tts/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── qwen3_tts-tool.ts │ │ │ │ │ ├── transcription-schema.ts │ │ │ │ │ ├── ultimate_vocal_remover_onnx/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── ultimate_vocal_remover_onnx-tool.ts │ │ │ │ │ └── ytdlp/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── yt-dlp.conf │ │ │ │ │ └── ytdlp-tool.ts │ │ │ │ ├── types.ts │ │ │ │ ├── utils.ts │ │ │ │ ├── widget-component.ts │ │ │ │ └── widget.ts │ │ │ ├── tool-runtime.ts │ │ │ └── version.ts │ │ └── tsconfig.json │ ├── python/ │ │ ├── dist/ │ │ │ └── .gitkeep │ │ └── src/ │ │ ├── Pipfile │ │ ├── constants.py │ │ ├── main.py │ │ ├── sdk/ │ │ │ ├── aurora/ │ │ │ │ ├── button.py │ │ │ │ ├── card.py │ │ │ │ ├── checkbox.py │ │ │ │ ├── circular_progress.py │ │ │ │ ├── flexbox.py │ │ │ │ ├── form.py │ │ │ │ ├── icon.py │ │ │ │ ├── icon_button.py │ │ │ │ ├── image.py │ │ │ │ ├── input.py │ │ │ │ ├── link.py │ │ │ │ ├── list.py │ │ │ │ ├── list_header.py │ │ │ │ ├── list_item.py │ │ │ │ ├── loader.py │ │ │ │ ├── progress.py │ │ │ │ ├── radio.py │ │ │ │ ├── radio_group.py │ │ │ │ ├── range_slider.py │ │ │ │ ├── scroll_container.py │ │ │ │ ├── select.py │ │ │ │ ├── select_option.py │ │ │ │ ├── status.py │ │ │ │ ├── switch.py │ │ │ │ ├── tab.py │ │ │ │ ├── tab_content.py │ │ │ │ ├── tab_group.py │ │ │ │ ├── tab_list.py │ │ │ │ ├── text.py │ │ │ │ └── widget_wrapper.py │ │ │ ├── base_tool.py │ │ │ ├── leon.py │ │ │ ├── memory.py │ │ │ ├── network.py │ │ │ ├── params_helper.py │ │ │ ├── settings.py │ │ │ ├── tool_manager.py │ │ │ ├── toolkit_config.py │ │ │ ├── tools/ │ │ │ │ ├── assemblyai_audio/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── assemblyai_audio_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── bash/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── bash_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── cerebras/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── cerebras_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── chatterbox_onnx/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── chatterbox_onnx_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── ecapa/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── ecapa_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── elevenlabs_audio/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── elevenlabs_audio_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── faster_whisper/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── faster_whisper_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── ffmpeg/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── ffmpeg_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── ffprobe/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── ffprobe_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── grok/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── grok_tool.py │ │ │ │ │ └── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── open_meteo/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ └── open_meteo_tool.py │ │ │ │ ├── openai_audio/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ └── openai_audio_tool.py │ │ │ │ ├── opencode/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── lib/ │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ └── prompt.md │ │ │ │ │ └── opencode_tool.py │ │ │ │ ├── openrouter/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ └── openrouter_tool.py │ │ │ │ ├── qwen3_asr/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ └── qwen3_asr_tool.py │ │ │ │ ├── qwen3_tts/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ └── qwen3_tts_tool.py │ │ │ │ ├── transcription_schema.py │ │ │ │ ├── ultimate_vocal_remover_onnx/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ └── ultimate_vocal_remover_onnx_tool.py │ │ │ │ └── ytdlp/ │ │ │ │ ├── __init__.py │ │ │ │ ├── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── yt-dlp.conf │ │ │ │ └── ytdlp_tool.py │ │ │ ├── types.py │ │ │ ├── utils.py │ │ │ ├── widget.py │ │ │ └── widget_component.py │ │ ├── setup.py │ │ └── version.py │ └── toolkits/ │ ├── business_finance/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── calendar_scheduling/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── coding_development/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ ├── toolkit.json │ │ └── tools/ │ │ └── opencode.tool.json │ ├── communication/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ ├── toolkit.json │ │ └── tools/ │ │ ├── cerebras.tool.json │ │ └── openrouter.tool.json │ ├── dialog/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── file_system/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── food_drink/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── games/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── health_fitness/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── media_generation/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── movies_tv/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── music_audio/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ ├── toolkit.json │ │ └── tools/ │ │ ├── assemblyai_audio.tool.json │ │ ├── chatterbox_onnx.tool.json │ │ ├── ecapa.tool.json │ │ ├── elevenlabs_audio.tool.json │ │ ├── faster_whisper.tool.json │ │ ├── openai_audio.tool.json │ │ ├── qwen3_asr.tool.json │ │ ├── qwen3_tts.tool.json │ │ └── ultimate_vocal_remover_onnx.tool.json │ ├── news/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── operating_system_control/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ ├── toolkit.json │ │ └── tools/ │ │ └── bash.tool.json │ ├── productivity_collaboration/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── search_web/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ ├── toolkit.json │ │ └── tools/ │ │ └── grok.tool.json │ ├── shopping/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── smart_home/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── social_media/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── sport/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── structured_knowledge/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ ├── toolkit.json │ │ └── tools/ │ │ ├── context.tool.json │ │ └── memory.tool.json │ ├── system_utilities/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── travel_transportation/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ └── toolkit.json │ ├── video_streaming/ │ │ ├── settings/ │ │ │ └── .gitkeep │ │ ├── toolkit.json │ │ └── tools/ │ │ ├── ffmpeg.tool.json │ │ ├── ffprobe.tool.json │ │ └── ytdlp.tool.json │ └── weather/ │ ├── settings/ │ │ └── .gitkeep │ ├── toolkit.json │ └── tools/ │ └── openmeteo.tool.json ├── core/ │ ├── config/ │ │ ├── synchronizer/ │ │ │ └── google-drive.sample.json │ │ └── voice/ │ │ ├── amazon.sample.json │ │ ├── google-cloud.sample.json │ │ ├── watson-stt.sample.json │ │ └── watson-tts.sample.json │ ├── context/ │ │ ├── .gitkeep │ │ ├── ARCHITECTURE.md │ │ └── LEON.md │ ├── data/ │ │ ├── en/ │ │ │ ├── answers.json │ │ │ ├── global-entities/ │ │ │ │ ├── color.json │ │ │ │ ├── handsign.json │ │ │ │ ├── language.json │ │ │ │ └── level.json │ │ │ └── global-resolvers/ │ │ │ └── affirmation_denial.json │ │ ├── fr/ │ │ │ ├── answers.json │ │ │ ├── global-entities/ │ │ │ │ ├── color.json │ │ │ │ └── level.json │ │ │ └── global-resolvers/ │ │ │ └── affirmation_denial.json │ │ └── models/ │ │ ├── .gitkeep │ │ ├── audio/ │ │ │ ├── asr/ │ │ │ │ └── .gitkeep │ │ │ ├── tts/ │ │ │ │ ├── .gitkeep │ │ │ │ ├── bert-base-french-europeana-cased/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── bert-base-uncased/ │ │ │ │ │ └── .gitkeep │ │ │ │ └── config.json │ │ │ └── wake_word/ │ │ │ ├── .gitkeep │ │ │ ├── Hey_Leon.onnx │ │ │ ├── embedding.onnx │ │ │ └── melspectrogram.onnx │ │ └── llm/ │ │ └── .gitkeep │ ├── langs.json │ ├── memory/ │ │ └── .gitkeep │ └── skills-endpoints.json ├── eslint.config.mjs ├── hotword/ │ ├── README.md │ ├── index.js │ ├── models/ │ │ ├── leon-en.pmdl │ │ └── leon-fr.pmdl │ └── package.json ├── jsconfig.json ├── logs/ │ └── .gitkeep ├── nodemon.json ├── nodemon.nolint.json ├── package.json ├── scripts/ │ ├── app/ │ │ ├── build-app.js │ │ └── run-build-app.js │ ├── assets/ │ │ ├── CHANGELOG-TEMPLATE.md │ │ ├── leon.lv │ │ ├── nodejs-bridge-intent-object.json │ │ └── python-bridge-intent-object.json │ ├── build-binaries.js │ ├── check-os.js │ ├── check.js │ ├── clean-test-dbs.js │ ├── commit-msg.js │ ├── generate/ │ │ ├── generate-http-api-key.js │ │ ├── generate-json-schemas.js │ │ ├── generate-prompt.js │ │ ├── generate-skills-endpoints.js │ │ ├── run-generate-http-api-key.js │ │ ├── run-generate-json-schemas.js │ │ ├── run-generate-prompt.js │ │ └── run-generate-skills-endpoints.js │ ├── lint.js │ ├── out/ │ │ └── .gitkeep │ ├── prompt-templates/ │ │ ├── create-skill-template.md │ │ └── create-tool-template.md │ ├── release/ │ │ ├── generate-changelog.js │ │ ├── pre-release-binaries.js │ │ ├── prepare-release.js │ │ └── update-version.js │ ├── run-agentic-loop-vitest.ts │ ├── run-clean-test-dbs.js │ ├── setup/ │ │ ├── create-instance-id.js │ │ ├── preinstall.js │ │ ├── set-ffprobe-permissions.js │ │ ├── setup-binaries.js │ │ ├── setup-cmake.js │ │ ├── setup-core.js │ │ ├── setup-dotenv.js │ │ ├── setup-llama-cpp.js │ │ ├── setup-local-llm.js │ │ ├── setup-ninja.js │ │ ├── setup-nvidia-libs.js │ │ ├── setup-python-dev-env.js │ │ ├── setup-pytorch.js │ │ ├── setup-qmd-llm.js │ │ ├── setup-skills/ │ │ │ ├── install-nodejs-skills-packages.js │ │ │ ├── setup-skills-settings.js │ │ │ └── setup-skills.js │ │ ├── setup-tcp-server-models.js │ │ └── setup.js │ ├── setup-offline/ │ │ ├── run-setup-hotword.js │ │ ├── run-setup-stt.js │ │ ├── run-setup-tts.js │ │ ├── setup-hotword.js │ │ ├── setup-offline.js │ │ ├── setup-stt.js │ │ └── setup-tts.js │ ├── skill-package.js │ ├── test-module.js │ └── train/ │ ├── run-train.js │ ├── train-llm-actions-classifier.js │ ├── train-main-model/ │ │ ├── train-global-entities.js │ │ └── train-skills-actions.js │ ├── train-resolvers-model/ │ │ ├── train-global-resolvers.js │ │ └── train-skills-resolvers.js │ ├── train-skill-router-duty.js │ └── train.js ├── server/ │ └── src/ │ ├── ajv.ts │ ├── constants.ts │ ├── conversation-logger.ts │ ├── core/ │ │ ├── asr/ │ │ │ ├── asr.ts │ │ │ └── types.ts │ │ ├── brain/ │ │ │ ├── answer-queue.ts │ │ │ ├── brain.ts │ │ │ ├── dialog-action-skill-handler.ts │ │ │ ├── logic-action-skill-handler.ts │ │ │ └── types.ts │ │ ├── context-manager/ │ │ │ ├── context-file-factory.ts │ │ │ ├── context-file.ts │ │ │ ├── context-files/ │ │ │ │ ├── activity-context-file.ts │ │ │ │ ├── architecture-context-file.ts │ │ │ │ ├── browser-history-context-file.ts │ │ │ │ ├── gpu-compute-context-file.ts │ │ │ │ ├── habits-context-file.ts │ │ │ │ ├── home-context-file.ts │ │ │ │ ├── host-system-context-file.ts │ │ │ │ ├── leon-context-file.ts │ │ │ │ ├── leon-runtime-context-file.ts │ │ │ │ ├── local-inventory-context-file.ts │ │ │ │ ├── media-profile-context-file.ts │ │ │ │ ├── network-ecosystem-context-file.ts │ │ │ │ ├── owner-context-file.ts │ │ │ │ ├── storage-context-file.ts │ │ │ │ ├── system-resources-context-file.ts │ │ │ │ └── workspace-intelligence-context-file.ts │ │ │ ├── context-manager.ts │ │ │ ├── context-probe-helper.ts │ │ │ ├── context-refresh-worker.ts │ │ │ ├── context-state-store.ts │ │ │ ├── index.ts │ │ │ ├── owner-profile-sync.ts │ │ │ └── owner-profile.ts │ │ ├── http-server/ │ │ │ ├── api/ │ │ │ │ ├── fetch-widget/ │ │ │ │ │ ├── get.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── info/ │ │ │ │ │ ├── get.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── llm-inference/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── post.ts │ │ │ │ ├── open-path/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── post.ts │ │ │ │ ├── run-action/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── post.ts │ │ │ │ └── utterance/ │ │ │ │ ├── index.ts │ │ │ │ └── post.ts │ │ │ ├── http-server.ts │ │ │ ├── old-server.js │ │ │ └── plugins/ │ │ │ ├── cors.ts │ │ │ ├── key.ts │ │ │ └── other.ts │ │ ├── index.ts │ │ ├── llm-manager/ │ │ │ ├── llm-duties/ │ │ │ │ ├── action-calling-llm-duty.ts │ │ │ │ ├── action-recognition-llm-duty.ts │ │ │ │ ├── conversation-llm-duty.ts │ │ │ │ ├── custom-llm-duty.ts │ │ │ │ ├── custom-ner-llm-duty.ts │ │ │ │ ├── paraphrase-llm-duty.ts │ │ │ │ ├── react-llm-duty/ │ │ │ │ │ ├── catalog.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── execution.ts │ │ │ │ │ ├── final-answer.ts │ │ │ │ │ ├── history-compaction.ts │ │ │ │ │ ├── metrics.ts │ │ │ │ │ ├── phase-helpers.ts │ │ │ │ │ ├── phase-policy.ts │ │ │ │ │ ├── phases.ts │ │ │ │ │ ├── plan-contract.ts │ │ │ │ │ ├── plan-widget.ts │ │ │ │ │ ├── planning.ts │ │ │ │ │ ├── recovery-planning.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── react-llm-duty.ts │ │ │ │ ├── skill-router-llm-duty.ts │ │ │ │ └── slot-filling-llm-duty.ts │ │ │ ├── llm-duty.ts │ │ │ ├── llm-manager.ts │ │ │ ├── llm-provider.ts │ │ │ ├── llm-providers/ │ │ │ │ ├── ai-sdk-remote-llm-provider.ts │ │ │ │ ├── anthropic-llm-provider.ts │ │ │ │ ├── cerebras-llm-provider.ts │ │ │ │ ├── groq-llm-provider.ts │ │ │ │ ├── huggingface-llm-provider.ts │ │ │ │ ├── llamacpp-llm-provider.ts │ │ │ │ ├── local-llm-provider.ts │ │ │ │ ├── moonshotai-llm-provider.ts │ │ │ │ ├── openai-llm-provider.ts │ │ │ │ ├── openrouter-llm-provider.ts │ │ │ │ ├── sglang-llm-provider.ts │ │ │ │ └── z-ai-llm-provider.ts │ │ │ ├── persona.ts │ │ │ ├── streaming-chunk.ts │ │ │ ├── types.ts │ │ │ └── warm-up-llm-duties.ts │ │ ├── memory-manager/ │ │ │ ├── index.ts │ │ │ ├── memory-manager.ts │ │ │ ├── memory-repository.ts │ │ │ ├── qmd-backend.ts │ │ │ ├── sql/ │ │ │ │ └── schema.sql │ │ │ ├── summarizer.ts │ │ │ └── types.ts │ │ ├── nlp/ │ │ │ ├── conversation.ts │ │ │ ├── nlu/ │ │ │ │ ├── action-loop.ts │ │ │ │ ├── model-loader.ts │ │ │ │ ├── ner.ts │ │ │ │ ├── nlu-process-result-updater.ts │ │ │ │ ├── nlu.ts │ │ │ │ └── slot-filling.ts │ │ │ └── types.ts │ │ ├── pulse-manager.ts │ │ ├── self-model-manager.ts │ │ ├── socket-server.ts │ │ ├── stt/ │ │ │ ├── parsers/ │ │ │ │ ├── coqui-stt-parser.ts │ │ │ │ ├── google-cloud-stt-parser.ts │ │ │ │ ├── local-parser.ts │ │ │ │ └── watson-stt-parser.ts │ │ │ ├── stt-parser-base.ts │ │ │ ├── stt.ts │ │ │ └── types.ts │ │ ├── tcp-client.ts │ │ ├── tool-executor.ts │ │ ├── toolkit-registry.ts │ │ └── tts/ │ │ ├── synthesizers/ │ │ │ ├── amazon-polly-synthesizer.ts │ │ │ ├── flite-synthesizer.ts │ │ │ ├── google-cloud-tts-synthesizer.ts │ │ │ ├── local-synthesizer.ts │ │ │ └── watson-tts-synthesizer.ts │ │ ├── tts-synthesizer-base.ts │ │ ├── tts.ts │ │ └── types.ts │ ├── declarations.d.ts │ ├── global.d.ts │ ├── helpers/ │ │ ├── date-helper.ts │ │ ├── file-helper.ts │ │ ├── lang-helper.ts │ │ ├── loader-helper.ts │ │ ├── log-helper.ts │ │ ├── network-helper.ts │ │ ├── skill-domain-helper.ts │ │ ├── string-helper.ts │ │ └── system-helper.ts │ ├── index.ts │ ├── intent-object.sample.json │ ├── pre-check.ts │ ├── schemas/ │ │ ├── global-data-schemas.ts │ │ ├── skill-schemas.ts │ │ ├── tool-schemas.ts │ │ ├── toolkit-schemas.ts │ │ └── voice-config-schemas.ts │ ├── telemetry.ts │ ├── tool-call-logger.ts │ ├── types.ts │ ├── updater.ts │ └── utilities.ts ├── skills/ │ ├── bash_skill/ │ │ ├── README.md │ │ ├── locales/ │ │ │ └── en.json │ │ ├── skill.json │ │ └── src/ │ │ ├── actions/ │ │ │ └── execute.py │ │ └── settings.sample.json │ ├── business_finance/ │ │ └── domain.json │ ├── color_skill/ │ │ ├── README.md │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ └── tell_hexadecimal_color.py │ │ │ ├── lib/ │ │ │ │ ├── .gitkeep │ │ │ │ └── hexa_colors.py │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ └── .gitkeep │ │ └── test/ │ │ └── .gitkeep │ ├── food_drink/ │ │ └── domain.json │ ├── games/ │ │ ├── akinator/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ └── en.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ ├── guess.py │ │ │ │ │ ├── retry.py │ │ │ │ │ └── setup.py │ │ │ │ ├── lib/ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── main.py │ │ │ │ │ ├── memory.py │ │ │ │ │ └── question_widget.py │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ └── domain.json │ ├── good_bye_skill/ │ │ ├── README.md │ │ ├── config/ │ │ │ ├── en.json │ │ │ └── fr.json │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ └── test/ │ │ └── .gitkeep │ ├── greeting_skill/ │ │ ├── README.md │ │ ├── locales/ │ │ │ ├── en.json │ │ │ └── fr.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ └── greet.py │ │ │ ├── lib/ │ │ │ │ └── .gitkeep │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ └── .gitkeep │ │ └── test/ │ │ └── .gitkeep │ ├── guess_the_number_skill/ │ │ ├── README.md │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ ├── guess.py │ │ │ │ ├── replay.py │ │ │ │ └── set_up.py │ │ │ ├── lib/ │ │ │ │ ├── .gitkeep │ │ │ │ └── memory.py │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ └── .gitkeep │ │ └── test/ │ │ └── .gitkeep │ ├── health_fitness/ │ │ └── domain.json │ ├── knowledge_education/ │ │ └── domain.json │ ├── leon/ │ │ ├── age/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ └── en.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ └── run.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── getTimeDifferenceBetweenDates.ts │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── domain.json │ │ ├── good_bye/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── help/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ └── en.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ └── help.ts │ │ │ │ ├── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── introduction/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ ├── introduce_leon.py │ │ │ │ │ └── remember.py │ │ │ │ ├── lib/ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── memory.py │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── joke/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── meaning_of_life/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── random_number/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ └── run.py │ │ │ │ ├── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ ├── .gitkeep │ │ │ │ └── number_widget.py │ │ │ └── test/ │ │ │ └── .gitkeep │ │ └── thanks/ │ │ ├── README.md │ │ ├── config/ │ │ │ ├── en.json │ │ │ └── fr.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ └── test/ │ │ └── .gitkeep │ ├── mbti_skill/ │ │ ├── README.md │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ ├── quiz.py │ │ │ │ └── set_up.py │ │ │ ├── lib/ │ │ │ │ ├── .gitkeep │ │ │ │ └── memory.py │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ └── .gitkeep │ │ └── test/ │ │ └── .gitkeep │ ├── movies_tv/ │ │ └── domain.json │ ├── music_audio/ │ │ └── domain.json │ ├── music_audio_toolkit_skill/ │ │ ├── README.md │ │ ├── locales/ │ │ │ └── en.json │ │ ├── skill.json │ │ └── src/ │ │ ├── actions/ │ │ │ ├── dub_audio.ts │ │ │ ├── split_instrumental_vocal.ts │ │ │ └── transcribe_audio.ts │ │ └── settings.sample.json │ ├── news/ │ │ ├── domain.json │ │ ├── github_trends/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ └── run.py │ │ │ │ ├── lib/ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── github_lang.py │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ └── product_hunt_trends/ │ │ ├── README.md │ │ ├── config/ │ │ │ ├── en.json │ │ │ └── fr.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ └── run.py │ │ │ ├── lib/ │ │ │ │ └── .gitkeep │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ └── .gitkeep │ │ └── test/ │ │ └── .gitkeep │ ├── partner_assistant_skill/ │ │ ├── README.md │ │ ├── config/ │ │ │ ├── en.json │ │ │ └── fr.json │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ └── tell_about_assistant.py │ │ │ ├── lib/ │ │ │ │ └── .gitkeep │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ └── .gitkeep │ │ └── test/ │ │ └── .gitkeep │ ├── podcast_generator_skill/ │ │ ├── locales/ │ │ │ └── en.json │ │ ├── skill.json │ │ └── src/ │ │ ├── actions/ │ │ │ └── generate.ts │ │ └── settings.sample.json │ ├── productivity/ │ │ └── domain.json │ ├── rochambeau_skill/ │ │ ├── README.md │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ ├── play.py │ │ │ │ └── rematch.py │ │ │ ├── lib/ │ │ │ │ └── .gitkeep │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ └── .gitkeep │ │ └── test/ │ │ └── .gitkeep │ ├── search_web_toolkit_skill/ │ │ ├── locales/ │ │ │ └── en.json │ │ ├── skill.json │ │ └── src/ │ │ ├── actions/ │ │ │ └── search.ts │ │ └── settings.sample.json │ ├── shopping/ │ │ └── domain.json │ ├── skill_writer_skill/ │ │ ├── locales/ │ │ │ └── en.json │ │ ├── skill.json │ │ └── src/ │ │ ├── actions/ │ │ │ ├── create_skill.ts │ │ │ └── modify_skill.ts │ │ ├── lib/ │ │ │ ├── skill-plan-llm.ts │ │ │ ├── skill-plan.ts │ │ │ └── skill-prompt.ts │ │ └── settings.sample.json │ ├── smart_home/ │ │ └── domain.json │ ├── social_communication/ │ │ ├── conversation/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ └── en.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ ├── chit_chat.ts │ │ │ │ │ └── converse.ts │ │ │ │ ├── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ └── domain.json │ ├── sport/ │ │ └── domain.json │ ├── timer_skill/ │ │ ├── README.md │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ ├── cancel_timer.ts │ │ │ │ ├── check_timer.ts │ │ │ │ └── set_timer.ts │ │ │ ├── lib/ │ │ │ │ ├── .gitkeep │ │ │ │ └── memory.ts │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ ├── .gitkeep │ │ │ ├── components/ │ │ │ │ └── timer.ts │ │ │ └── timer-widget.ts │ │ └── test/ │ │ └── .gitkeep │ ├── todo_list_skill/ │ │ ├── README.md │ │ ├── config/ │ │ │ ├── en.json │ │ │ └── fr.json │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ ├── add_todos.py │ │ │ │ ├── complete_items.py │ │ │ │ ├── create_list.py │ │ │ │ ├── delete_list.py │ │ │ │ ├── get_all_lists.py │ │ │ │ ├── get_list_items.py │ │ │ │ ├── rename_list.py │ │ │ │ └── uncomplete_items.py │ │ │ ├── lib/ │ │ │ │ ├── .gitkeep │ │ │ │ └── memory.py │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ ├── .gitkeep │ │ │ ├── list_of_lists_widget.py │ │ │ └── todos_list_widget.py │ │ └── test/ │ │ └── .gitkeep │ ├── translator_poc_skill/ │ │ ├── README.md │ │ ├── config/ │ │ │ └── en.json │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ └── translate.ts │ │ │ ├── lib/ │ │ │ │ └── .gitkeep │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ └── .gitkeep │ │ └── test/ │ │ └── .gitkeep │ ├── travel_transportation/ │ │ └── domain.json │ ├── tsconfig.json │ ├── unknown/ │ │ ├── domain.json │ │ └── widget-playground/ │ │ ├── README.md │ │ ├── config/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ └── run.ts │ │ │ ├── lib/ │ │ │ │ └── .gitkeep │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ ├── .gitkeep │ │ │ └── playground-test.ts │ │ └── test/ │ │ └── .gitkeep │ ├── utilities/ │ │ ├── date_time/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ └── en.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ ├── current_date.ts │ │ │ │ │ ├── current_date_time.ts │ │ │ │ │ ├── current_date_time_with_time_zone.ts │ │ │ │ │ ├── current_time.ts │ │ │ │ │ ├── current_week_number.ts │ │ │ │ │ └── days_countdown.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ ├── constants.ts │ │ │ │ │ └── zeroPad.ts │ │ │ │ ├── package.json │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── domain.json │ │ ├── have_i_been_pwned/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ └── run.py │ │ │ │ ├── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── is_it_down/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ └── run.py │ │ │ │ ├── lib/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── speed_test/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ └── run.py │ │ │ │ ├── lib/ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── speedtest.py │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ └── .gitkeep │ │ │ └── test/ │ │ │ └── .gitkeep │ │ ├── timer/ │ │ │ ├── README.md │ │ │ ├── config/ │ │ │ │ └── en.json │ │ │ ├── memory/ │ │ │ │ └── .gitkeep │ │ │ ├── skill.json │ │ │ ├── src/ │ │ │ │ ├── actions/ │ │ │ │ │ ├── cancel_timer.ts │ │ │ │ │ ├── check_timer.ts │ │ │ │ │ └── set_timer.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── memory.ts │ │ │ │ ├── settings.sample.json │ │ │ │ └── widgets/ │ │ │ │ ├── .gitkeep │ │ │ │ ├── components/ │ │ │ │ │ └── timer.ts │ │ │ │ └── timer-widget.ts │ │ │ └── test/ │ │ │ └── .gitkeep │ │ └── translator-poc/ │ │ ├── README.md │ │ ├── config/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ └── translate.ts │ │ │ ├── lib/ │ │ │ │ └── .gitkeep │ │ │ ├── settings.sample.json │ │ │ └── widgets/ │ │ │ └── .gitkeep │ │ └── test/ │ │ └── .gitkeep │ ├── video_summarizer_skill/ │ │ ├── locales/ │ │ │ └── en.json │ │ ├── skill.json │ │ └── src/ │ │ ├── actions/ │ │ │ ├── prepare_audio.ts │ │ │ └── summarize_transcription.ts │ │ └── settings.sample.json │ ├── video_translator_skill/ │ │ ├── README.md │ │ ├── locales/ │ │ │ └── en.json │ │ ├── memory/ │ │ │ └── .gitkeep │ │ ├── skill.json │ │ └── src/ │ │ ├── actions/ │ │ │ ├── create_new_audio.ts │ │ │ ├── detect_genders.ts │ │ │ ├── download_video.ts │ │ │ ├── extract_audio.ts │ │ │ ├── get_speakers_references.ts │ │ │ ├── merge_audio.ts │ │ │ └── translate_transcription.ts │ │ ├── lib/ │ │ │ └── memory.ts │ │ ├── settings.sample.json │ │ └── widgets/ │ │ └── download-progress-widget.ts │ ├── voice_designer_skill/ │ │ ├── locales/ │ │ │ └── en.json │ │ ├── skill.json │ │ └── src/ │ │ ├── actions/ │ │ │ └── design_and_speak.ts │ │ └── settings.sample.json │ ├── weather/ │ │ └── domain.json │ └── weather_forecast_skill/ │ ├── locales/ │ │ └── en.json │ ├── skill.json │ └── src/ │ ├── actions/ │ │ └── get_forecast.ts │ ├── settings.sample.json │ └── widgets/ │ └── weather-forecast-widget.ts ├── tcp_server/ │ ├── settings.json │ └── src/ │ ├── Pipfile │ ├── lib/ │ │ ├── asr/ │ │ │ └── api.py │ │ ├── constants.py │ │ ├── nlp.py │ │ ├── tcp_server.py │ │ ├── tmp/ │ │ │ └── .gitkeep │ │ ├── tts/ │ │ │ ├── __init__.py │ │ │ ├── api.py │ │ │ ├── attentions.py │ │ │ ├── commons.py │ │ │ ├── models.py │ │ │ ├── modules.py │ │ │ ├── monotonic_align/ │ │ │ │ ├── __init__.py │ │ │ │ └── core.py │ │ │ ├── split_utils.py │ │ │ ├── text/ │ │ │ │ ├── __init__.py │ │ │ │ ├── cleaner.py │ │ │ │ ├── cleaner_multiling.py │ │ │ │ ├── cmudict.rep │ │ │ │ ├── cmudict_cache.pickle │ │ │ │ ├── english.py │ │ │ │ ├── english_bert.py │ │ │ │ ├── english_utils/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── abbreviations.py │ │ │ │ │ ├── number_norm.py │ │ │ │ │ └── time_norm.py │ │ │ │ ├── fr_phonemizer/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base.py │ │ │ │ │ ├── cleaner.py │ │ │ │ │ ├── en_symbols.json │ │ │ │ │ ├── example_ipa.txt │ │ │ │ │ ├── fr_symbols.json │ │ │ │ │ ├── fr_to_ipa.py │ │ │ │ │ ├── french_abbreviations.py │ │ │ │ │ ├── french_symbols.txt │ │ │ │ │ ├── gruut_wrapper.py │ │ │ │ │ └── punctuation.py │ │ │ │ ├── french.py │ │ │ │ ├── french_bert.py │ │ │ │ ├── opencpop-strict.txt │ │ │ │ └── symbols.py │ │ │ ├── transforms.py │ │ │ └── utils.py │ │ ├── utils.py │ │ └── wake_word/ │ │ └── api.py │ ├── main.py │ ├── setup.py │ └── version.py ├── test/ │ ├── agentic-loop/ │ │ ├── e2e/ │ │ │ ├── provider-matrix.ts │ │ │ ├── react-provider-smoke.spec.ts │ │ │ └── run-agentic-loop-provider-scenario.ts │ │ └── unit/ │ │ └── react-llm-duty.spec.ts │ ├── assets/ │ │ ├── broken-leon-model.nlp │ │ └── expressions.json │ ├── e2e/ │ │ ├── modules/ │ │ │ ├── e2e.modules.jest.json │ │ │ └── e2e.modules.setup.js │ │ ├── nlp-modules.spec.js │ │ └── over-http.spec.js │ ├── json/ │ │ ├── is-valid.spec.js │ │ ├── json.jest.json │ │ ├── no-punctuation.spec.js │ │ └── punctuation.spec.js │ ├── paths.setup.js │ └── unit/ │ ├── server/ │ │ ├── core/ │ │ │ ├── asr.spec.js │ │ │ ├── brain.spec.js │ │ │ ├── ner.spec.js │ │ │ ├── nlu.spec.js │ │ │ ├── server.spec.js │ │ │ └── synchronizer.spec.js │ │ ├── helpers/ │ │ │ ├── date.spec.js │ │ │ ├── loader.spec.js │ │ │ ├── log.spec.js │ │ │ ├── os.spec.js │ │ │ └── string.spec.js │ │ ├── stt/ │ │ │ ├── coqui/ │ │ │ │ └── parser.spec.js │ │ │ └── stt.spec.js │ │ └── tts/ │ │ ├── flite/ │ │ │ └── synthesizer.spec.js │ │ └── tts.spec.js │ ├── unit.jest.json │ └── unit.setup.js ├── tsconfig.json └── vitest.agentic-loop.config.ts