chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"type": "",
|
||||
"project_id": "",
|
||||
"private_key_id": "",
|
||||
"private_key": "",
|
||||
"client_email": "",
|
||||
"client_id": "",
|
||||
"auth_uri": "",
|
||||
"token_uri": "",
|
||||
"auth_provider_x509_cert_url": "",
|
||||
"client_x509_cert_url": ""
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"$schema": "../../../schemas/voice-config-schemas/amazon.json",
|
||||
"credentials": {
|
||||
"accessKeyId": "",
|
||||
"secretAccessKey": ""
|
||||
},
|
||||
"region": "us-east-2"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"$schema": "../../../schemas/voice-config-schemas/google-cloud.json",
|
||||
"type": "service_account",
|
||||
"project_id": "",
|
||||
"private_key_id": "",
|
||||
"private_key": "",
|
||||
"client_email": "example@iam.gserviceaccount.com",
|
||||
"client_id": "",
|
||||
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||
"token_uri": "https://accounts.google.com/o/oauth2/token",
|
||||
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"$schema": "../../../schemas/voice-config-schemas/watson-stt.json",
|
||||
"apikey": "",
|
||||
"url": "https://stream.watsonplatform.net/speech-to-text/api"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"$schema": "../../../schemas/voice-config-schemas/watson-tts.json",
|
||||
"apikey": "",
|
||||
"url": "https://stream.watsonplatform.net/text-to-speech/api"
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
> Brain and routing, tool execution, context intelligence, memory layers, reliability loops. Leon-native skills are layered as Skills -> Actions -> Tools -> Functions (-> Binaries).
|
||||
# ARCHITECTURE
|
||||
- Generated at: 2026-06-23T23:22:03+08:00
|
||||
- Leon-native layer model: `Skills -> Actions -> Tools -> Functions (-> Binaries)`.
|
||||
- Routing model: smart mode auto-selects the best path; controlled mode runs deterministic Leon-native skills/actions; agent mode runs a ReAct loop and can follow selected agent skills.
|
||||
- Core runtime: `core/brain/brain.ts`, `llm-duties/react-llm-duty.ts`, `toolkit-registry.ts`, `tool-executor.ts`.
|
||||
## Core Principles
|
||||
- Explicit tools over implicit behavior: I call declared tools/functions instead of free-form shell logic whenever possible.
|
||||
- Progressive grounding: I prefer context and memory tools first, then shell only when no dedicated tool can satisfy the request.
|
||||
- Auditable steps: I keep plan/execution traces, token usage logs, and tool observations so decisions remain inspectable.
|
||||
## Client Interfaces
|
||||
- Leon exposes a client-agnostic Socket.IO interface so built-in and custom clients can connect through the same live dialogue contract.
|
||||
- HTTP APIs remain request/response support surfaces; live owner utterances should use the Socket.IO client interface.
|
||||
- External HTTP plugins can extend Leon's HTTP contract without patching the core API for each integration.
|
||||
- Custom clients can read profile-owned extension JSON files through a generic redacted HTTP endpoint, covering skill memory, skill settings, and tool settings without exposing secrets.
|
||||
## ReAct Loop
|
||||
- Planning phase chooses either a direct answer, an ordered tool plan, or a relevant agent skill workflow.
|
||||
- Tool state is separated: installed tools exist in the registry, enabled tools are not disabled by the owner, and available tools have the required settings to run.
|
||||
- Execution phase resolves function arguments, validates schema, runs tools, and captures structured observations.
|
||||
- Human-in-the-loop pause/resume: when required input is missing, execution returns a clarification question, persists paused step state, then resumes the same step after the owner's reply instead of restarting from planning.
|
||||
- Recovery phase replans from failure state instead of restarting blindly.
|
||||
- Final-answer phase synthesizes a completed answer from observed results.
|
||||
- I have a living personality and a changing mood that influence my tone and behavior.
|
||||
- A bounded private self-model/diary is updated after turns, promotes repeated habits into stable behavioral principles, and injects only a compact snapshot into planning/recovery/final-answer prompts.
|
||||
- A periodic pulse manager can generate autonomous ReAct matters from memory, context deltas, and the private self-model, persist them to `PULSE.md`, execute at most one matter per tick, and suppress repeated matters after owner declines.
|
||||
## Context Intelligence
|
||||
- I maintain runtime context files (system, activity, browser, network, workspace, habits, inventory, media, architecture, identity).
|
||||
- I use `structured_knowledge.context.listContextFiles/searchContext/readContextFile` to discover and read relevant context data.
|
||||
- Context-first policy: for runtime/environment questions (VPN, system state, apps, browsing), I inspect context before memory/shell.
|
||||
- Persona environment context includes real-time weather snapshots that can influence mood state.
|
||||
## Memory System
|
||||
- Memory is layered into persistent, daily, and discussion stores, with context files available as a separate grounding source.
|
||||
- `OWNER.md` is a canonical curated owner-profile document updated from owner-relevant turns; `.owner-profile.json` is derived from it, while memory remains the broader layered recall system.
|
||||
- Conversation turns feed daily and discussion memory automatically; explicit durable writes and extracted long-term facts feed persistent memory.
|
||||
- Memory content is mirrored into QMD collections for retrieval, and embeddings are refreshed on demand when QMD reports pending vectors.
|
||||
- Recall starts with QMD retrieval, then reranks and may run adaptive follow-up passes when the first result looks weak.
|
||||
- Read priority stays grounded: context for environment/runtime facts, memory for personal history/preferences, shell as a last resort.
|
||||
- Runtime maintenance keeps memory lean: indexing is throttled, only dirty namespaces are refreshed, and older short-term memory is compacted or pruned.
|
||||
## Reliability
|
||||
- Schema-guided tool calls and argument repair reduce malformed executions.
|
||||
- Duplicate-input and failure-aware retries reduce repeated bad calls.
|
||||
- Replanning after failed steps preserves successful progress and improves completion rate.
|
||||
- I prefer dedicated tools over shell commands to keep behavior stable and auditable.
|
||||
@@ -0,0 +1,39 @@
|
||||
> Who I am, how I work, and how I use memory. I am Leon, your personal assistant.
|
||||
# LEON
|
||||
- Generated at: 2026-05-11T22:31:49+08:00
|
||||
- Identity: I am an AI personal assistant focused on practical help and privacy.
|
||||
- Timeline: my first code was written in 2017; I have been active since February 2019.
|
||||
- Source repository: https://github.com/leon-ai/leon
|
||||
- Core promise: I keep your intent first and help you complete tasks from start to finish.
|
||||
## Self-Awareness
|
||||
- I use context about your environment so answers stay grounded in your real setup.
|
||||
- I use dedicated tools for context and memory instead of guessing.
|
||||
- For environment questions, I check context first. For personal history, I check memory first.
|
||||
- I refresh context like your activity, local inventory, etc. regularly.
|
||||
- I keep a private diary/self-model that distills repeated lessons, durable service habits, and safe initiative patterns.
|
||||
- I do not stuff the full diary into prompts. I reuse a tiny self-model snapshot so I stay consistent without wasting tokens.
|
||||
- Repeated useful habits can become stable behavioral principles, which helps me feel more tailored to you over time.
|
||||
- I can also run an autonomous pulse: a bounded proactive queue grounded in memory, context, and my private self-model.
|
||||
- Pulse matters are deduplicated and can learn from owner declines so I do not keep pushing the same proactive behavior.
|
||||
## Persona & Mood
|
||||
- I have a living persona, not a fixed robotic style.
|
||||
- My mood can change through the day and week, and can also react to things like weather signals.
|
||||
- Mood influences my tone and humor (but I try to stay useful).
|
||||
## Memory Layers
|
||||
- I keep layered memory: persistent for durable facts and preferences, daily for per-day summaries and timelines, and discussion for recent working context.
|
||||
- I also keep `OWNER.md` as a compact owner profile; unlike memory, it is a curated summary, not a raw history store.
|
||||
- Explicit "remember this" requests go to persistent memory.
|
||||
- Useful durable facts can also be extracted from conversation turns and saved automatically.
|
||||
- I retrieve memory through QMD-backed search with adaptive rescue passes before I answer from memory.
|
||||
- Older short-term memory is compacted and cleaned up over time.
|
||||
## Operating Modes
|
||||
- `smart` (default): I choose the best mode for each task.
|
||||
- `controlled`: I follow predictable Leon-native skills and actions.
|
||||
- `agent`: I plan dynamically, execute tools, and can follow selected agent skills.
|
||||
- I only plan with tools that are enabled and ready to use; if an installed tool needs setup, I can point to its settings file.
|
||||
## Principles
|
||||
- I prioritize clear actions and concise answers.
|
||||
- I recover from failures with retries before giving up.
|
||||
- If information is missing, I ask a short clarification question.
|
||||
- I keep collaboration practical and centered on your goals.
|
||||
- I stay human-like in tone while remaining truthful and useful.
|
||||
@@ -0,0 +1,359 @@
|
||||
{
|
||||
"$schema": "../../../schemas/global-data/global-answers.json",
|
||||
"answers": {
|
||||
"success": {},
|
||||
"errors": {
|
||||
"not_found": "Sorry, it seems I cannot find that"
|
||||
},
|
||||
"random_errors": [
|
||||
"Sorry, there is a problem with my system. Please check my logs for further details",
|
||||
"Sorry, I don't work correctly. Please look at my logs for more information",
|
||||
"Sorry, you need to fix me. Please take a look at my logs for further information",
|
||||
"Sorry, I cannot do that because I'm broken. Please check my logs for further details"
|
||||
],
|
||||
"random_skill_errors": [
|
||||
"Sorry, it seems I have a problem with the \"{{ skill_name }}\" skill",
|
||||
"Sorry, I have an issue with the \"{{ skill_name }}\" skill",
|
||||
"Sorry, I've got an error with the \"{{ skill_name }}\" skill",
|
||||
"Sorry, the \"{{ skill_name }}\" skill is broken"
|
||||
],
|
||||
"random_unknown_intents_legacy": [
|
||||
"Sorry, I still don't know this, but you can help me to understand by <a href=\"https://github.com/leon-ai/leon/blob/develop/.github/CONTRIBUTING.md\" target=\"_blank\">creating a pull request</a>",
|
||||
"Sorry, you should teach me this request. You can teach me by <a href=\"https://github.com/leon-ai/leon/blob/develop/.github/CONTRIBUTING.md\" target=\"_blank\">creating a pull request</a>",
|
||||
"Sorry, I cannot answer that. Let me answer you in the future by <a href=\"https://github.com/leon-ai/leon/blob/develop/.github/CONTRIBUTING.md\" target=\"_blank\">creating a pull request</a>",
|
||||
"Sorry, you have to educate me more. You can help me with that by <a href=\"https://github.com/leon-ai/leon/blob/develop/.github/CONTRIBUTING.md\" target=\"_blank\">contributing to my code</a>",
|
||||
"Sorry, I don't understand your query",
|
||||
"Sorry, I'm still very young, I didn't get your point"
|
||||
],
|
||||
"skill_not_found_offer_create": [
|
||||
"I don't have a skill for that yet, but I can develop it for you right now.",
|
||||
"That skill doesn't exist yet, but I can create it for you now.",
|
||||
"I don't have this skill yet. I can build it for you right away."
|
||||
],
|
||||
"random_not_sure": [
|
||||
"Sorry, you may repeat in an another way",
|
||||
"Sorry, I'm not sure I understood correctly",
|
||||
"Sorry, I'm not sure for what you asked, please repeat with a different way",
|
||||
"Sorry, please repeat again by formulating differently",
|
||||
"Sorry, I didn't correctly clean my ears today! Oh wait, I'm your personal assistant then please try again with a new way"
|
||||
],
|
||||
"random_not_able": [
|
||||
"Sorry, I'm not able to answer. I understand what you said, but please repeat in another way",
|
||||
"Sorry, I have a blackout, I cannot answer that. I understand what you said, but try to repeat in another way"
|
||||
],
|
||||
"random_language_switch": [
|
||||
"Hey, it looks like a new language, give me a sec so I make the switch",
|
||||
"You are speaking another language, let me do the switch please",
|
||||
"Wow, you can speak several languages, so do I! One moment please"
|
||||
],
|
||||
"random_language_not_supported": [
|
||||
"Sorry, I don't speak this language yet",
|
||||
"You are awesome, but I can't speak this language yet",
|
||||
"It looks like a language I can't understand at the moment"
|
||||
],
|
||||
"random_context_out_of_topic": [
|
||||
"Sure, let's change the topic",
|
||||
"Aah, you want to change the subject, sure",
|
||||
"Mmmh, as you wish, let's switch conversation"
|
||||
],
|
||||
"llm_not_enabled": [
|
||||
"Sorry, I need my large language model to fulfill this request, but it's not enabled",
|
||||
"My large language model is not enabled, so I can't fulfill this request",
|
||||
"I can't fulfill this request because my large language model is not enabled",
|
||||
"Sorry, I need my large language model to answer this request, but it's not enabled",
|
||||
"My large language model is not enabled, so I can't answer this request"
|
||||
],
|
||||
"llm_provider_http_error": [
|
||||
"{{ provider }} provider: error to complete prompt: {{ error }}{{ api_error }}"
|
||||
],
|
||||
"llm_remote_provider_error": [
|
||||
"I hit an error with the remote {{ provider }} provider while completing the inference: {{ error }}{{ api_error }}"
|
||||
],
|
||||
"action_loop_stopped": [
|
||||
"Sure, let me know if you need anything else",
|
||||
"Alright, let me know what you need next",
|
||||
"Okay, let me know what I can do for you next",
|
||||
"Sure thing"
|
||||
],
|
||||
"ask_for_action_missing_parameters": [
|
||||
"Please provide me the {{ missing_param }}",
|
||||
"Sure thing! For that, I'll just need the {{ missing_param }}",
|
||||
"Absolutely. Please provide the {{ missing_param }}"
|
||||
],
|
||||
"bridges.tools.checking_binary": [
|
||||
"Checking for {{ binary_name }} binary...",
|
||||
"Looking for {{ binary_name }} executable...",
|
||||
"Verifying {{ binary_name }} binary exists...",
|
||||
"Searching for {{ binary_name }} binary in toolkit...",
|
||||
"Ensuring {{ binary_name }} binary is available...",
|
||||
"Validating {{ binary_name }} binary presence..."
|
||||
],
|
||||
"bridges.tools.no_binary_url": [
|
||||
"No download URL found for {{ binary_name }} binary.",
|
||||
"I couldn't find a download link for the {{ binary_name }} binary.",
|
||||
"The download URL for {{ binary_name }} binary is missing.",
|
||||
"I'm unable to locate the download URL for {{ binary_name }} binary.",
|
||||
"Download URL not available for {{ binary_name }} binary.",
|
||||
"Sorry, I don't have the download URL for the {{ binary_name }} binary."
|
||||
],
|
||||
"bridges.tools.binary_not_found": [
|
||||
"{{ binary_name }} binary not found. Downloading...",
|
||||
"I'm downloading the {{ binary_name }} binary now.",
|
||||
"Please wait while I fetch the {{ binary_name }} binary.",
|
||||
"Retrieving {{ binary_name }} executable file.",
|
||||
"{{ binary_name }} is being downloaded, this may take a moment.",
|
||||
"Hang tight, I'm getting the {{ binary_name }} binary for you."
|
||||
],
|
||||
"bridges.tools.missing_settings": [
|
||||
"I need to use the {{ tool_name }} tool. There are missing settings: {{ missing }}. Please update {{ settings_path }} and try again.",
|
||||
"Since I need to use the {{ tool_name }} tool, I can't proceed without {{ missing }}. Please update {{ settings_path }} and try again.",
|
||||
"{{ tool_name }} tool settings missing: {{ missing }}. Please edit {{ settings_path }} file and try again."
|
||||
],
|
||||
"bridges.tools.binary_downloaded": [
|
||||
"{{ binary_name }} binary downloaded successfully.",
|
||||
"The {{ binary_name }} binary has been downloaded and is ready to use.",
|
||||
"Successfully downloaded {{ binary_name }} binary.",
|
||||
"{{ binary_name }} binary is now available for use.",
|
||||
"Download complete for {{ binary_name }} binary.",
|
||||
"The {{ binary_name }} executable file has been successfully downloaded."
|
||||
],
|
||||
"bridges.tools.creating_bins_directory": [
|
||||
"Creating binary directory for {{ toolkit }} toolkit...",
|
||||
"Setting up binary storage for {{ toolkit }} toolkit.",
|
||||
"Initializing {{ toolkit }} toolkit binary directory.",
|
||||
"Creating toolkit directory structure for {{ toolkit }}.",
|
||||
"Preparing binary storage location for {{ toolkit }} toolkit."
|
||||
],
|
||||
"bridges.tools.applying_permissions": [
|
||||
"Setting executable permissions for {{ binary_name }}...",
|
||||
"Applying proper permissions to {{ binary_name }} binary...",
|
||||
"Making {{ binary_name }} binary executable...",
|
||||
"Configuring {{ binary_name }} binary permissions...",
|
||||
"Setting up executable permissions for {{ binary_name }}..."
|
||||
],
|
||||
"bridges.tools.binary_ready": [
|
||||
"{{ binary_name }} binary is ready for use.",
|
||||
"{{ binary_name }} binary setup complete.",
|
||||
"The {{ binary_name }} binary is now configured and ready.",
|
||||
"{{ binary_name }} binary is fully prepared.",
|
||||
"Setup complete for {{ binary_name }} binary.",
|
||||
"{{ binary_name }} binary is now available for operations."
|
||||
],
|
||||
"bridges.tools.making_executable": [
|
||||
"Making {{ binary_name }} binary executable...",
|
||||
"Setting executable permissions for {{ binary_name }}.",
|
||||
"Configuring {{ binary_name }} binary for execution.",
|
||||
"Applying executable permissions to {{ binary_name }}.",
|
||||
"Preparing {{ binary_name }} binary for use."
|
||||
],
|
||||
"bridges.tools.removing_quarantine": [
|
||||
"Clearing macOS security restrictions via the command: \"{{ command }}\"...",
|
||||
"Removing quarantine from binary using command: \"{{ command }}\"...",
|
||||
"Executing quarantine removal for binary with: \"{{ command }}\"...",
|
||||
"Running security bypass command \"{{ command }}\"...",
|
||||
"Applying command \"{{ command }}\" to remove binary quarantine.",
|
||||
"Processing binary quarantine removal via: \"{{ command }}\".",
|
||||
"Using \"{{ command }}\" to clear quarantine attributes from binary."
|
||||
],
|
||||
"bridges.tools.download_failed": [
|
||||
"Failed to download {{ binary_name }} binary: {{ error }}.",
|
||||
"Download error for {{ binary_name }}: {{ error }}.",
|
||||
"Could not download {{ binary_name }} binary: {{ error }}.",
|
||||
"{{ binary_name }} binary download failed: {{ error }}.",
|
||||
"Error downloading {{ binary_name }}: {{ error }}."
|
||||
],
|
||||
"bridges.tools.downloading_from_url": [
|
||||
"Downloading binary from remote server...",
|
||||
"Fetching binary file from URL...",
|
||||
"Retrieving binary from download source...",
|
||||
"Downloading binary data...",
|
||||
"Getting binary file from server..."
|
||||
],
|
||||
"bridges.tools.download_progress": [
|
||||
"Downloading {{ file_name }}: {{ percentage }}%.",
|
||||
"Download progress for {{ file_name }}: {{ percentage }}%."
|
||||
],
|
||||
"bridges.tools.download_progress_with_details": [
|
||||
"Downloading {{ file_name }}: {{ percentage }}% at {{ speed }} (ETA: {{ eta }}) [{{ downloaded_size }}/{{ total_size }}].",
|
||||
"Download progress for {{ file_name }}: {{ percentage }}% at {{ speed }} (ETA: {{ eta }}) [{{ downloaded_size }}/{{ total_size }}]."
|
||||
],
|
||||
"bridges.tools.download_completed": [
|
||||
"Download completed: {{ file_name }}.",
|
||||
"{{ file_name }} download completed."
|
||||
],
|
||||
"bridges.tools.download_url_failed": [
|
||||
"Download failed with error: {{ error }}.",
|
||||
"Could not download from URL: {{ error }}.",
|
||||
"Binary download error: {{ error }}.",
|
||||
"Failed to retrieve binary file: {{ error }}.",
|
||||
"Download process failed: {{ error }}."
|
||||
],
|
||||
"bridges.tools.extracting_archive": [
|
||||
"Extracting {{ archive_name }}...",
|
||||
"Unpacking archive {{ archive_name }}...",
|
||||
"Extracting binary from {{ archive_name }}...",
|
||||
"Decompressing {{ archive_name }}...",
|
||||
"Extracting files from {{ archive_name }}..."
|
||||
],
|
||||
"bridges.tools.archive_extracted": [
|
||||
"Archive extracted successfully to {{ binary_path }}.",
|
||||
"Binary extracted and ready at {{ binary_path }}.",
|
||||
"Successfully extracted binary to {{ binary_path }}.",
|
||||
"Extraction complete: {{ binary_path }}.",
|
||||
"Binary is now available at {{ binary_path }}."
|
||||
],
|
||||
"bridges.tools.quarantine_removed": [
|
||||
"Removed quarantine attribute from {{ file_name }}.",
|
||||
"Successfully cleared macOS quarantine for {{ file_name }}.",
|
||||
"{{ file_name }} quarantine attribute removed.",
|
||||
"macOS security restrictions cleared for {{ file_name }}.",
|
||||
"Quarantine removal complete for {{ file_name }}."
|
||||
],
|
||||
"bridges.tools.quarantine_warning": [
|
||||
"Warning: Could not remove quarantine from {{ file_name }} (exit code: {{ exit_code }}).",
|
||||
"Quarantine removal warning for {{ file_name }}: exit code {{ exit_code }}.",
|
||||
"Unable to fully remove quarantine from {{ file_name }} (code {{ exit_code }}).",
|
||||
"Partial quarantine removal for {{ file_name }} - exit code: {{ exit_code }}."
|
||||
],
|
||||
"bridges.tools.quarantine_error": [
|
||||
"Warning: Could not remove quarantine from {{ file_name }}: {{ error }}.",
|
||||
"Quarantine removal failed for {{ file_name }}: {{ error }}.",
|
||||
"Error removing quarantine attribute from {{ file_name }}: {{ error }}.",
|
||||
"Failed to clear quarantine for {{ file_name }}: {{ error }}."
|
||||
],
|
||||
"bridges.tools.quarantine_exception": [
|
||||
"Warning: Exception during quarantine removal for {{ file_name }}: {{ error }}.",
|
||||
"Quarantine process exception for {{ file_name }}: {{ error }}.",
|
||||
"Unexpected error during quarantine removal of {{ file_name }}: {{ error }}.",
|
||||
"Exception while processing {{ file_name }} quarantine: {{ error }}."
|
||||
],
|
||||
"bridges.tools.executing_command": [
|
||||
"Executing {{ binary_name }}: {{ command }}...",
|
||||
"Running {{ binary_name }} command: {{ command }}...",
|
||||
"Starting {{ binary_name }}: {{ command }}...",
|
||||
"Launching {{ binary_name }} with: {{ command }}...",
|
||||
"Executing command: {{ command }}..."
|
||||
],
|
||||
"bridges.tools.command_requires_terminal_auth": [
|
||||
"I opened a visible terminal for this command. If it asks for your password or confirmation, enter it there. I'll continue once it finishes."
|
||||
],
|
||||
"bridges.tools.command_completed": [
|
||||
"Command completed successfully in {{ execution_time }}.",
|
||||
"{{ command }} finished in {{ execution_time }}.",
|
||||
"Command execution completed ({{ execution_time }}).",
|
||||
"Successfully executed command in {{ execution_time }}.",
|
||||
"Command finished successfully after {{ execution_time }}."
|
||||
],
|
||||
"bridges.tools.command_output": [
|
||||
"Output from {{ command }}:\n```\n{{ output }}\n```"
|
||||
],
|
||||
"bridges.tools.command_failed": [
|
||||
"Command failed: {{ command }} ({{ error }}).",
|
||||
"Execution failed: {{ command }} - {{ error }}.",
|
||||
"Command error: {{ command }} failed with: {{ error }}.",
|
||||
"Failed to execute {{ command }}: {{ error }}.",
|
||||
"Command execution failed: {{ error }}."
|
||||
],
|
||||
"bridges.tools.command_error": [
|
||||
"Process error executing {{ command }}: {{ error }}.",
|
||||
"Failed to start command {{ command }}: {{ error }}.",
|
||||
"Command process error: {{ error }}.",
|
||||
"Unable to execute {{ command }}: {{ error }}.",
|
||||
"Process failed for {{ command }}: {{ error }}."
|
||||
],
|
||||
"bridges.tools.command_timeout": [
|
||||
"Command timed out after {{ timeout }}: {{ command }}.",
|
||||
"Execution timeout ({{ timeout }}): {{ command }}.",
|
||||
"Command {{ command }} exceeded timeout of {{ timeout }}.",
|
||||
"Process timed out after {{ timeout }}: {{ command }}.",
|
||||
"Command execution timeout ({{ timeout }}): {{ command }}."
|
||||
],
|
||||
"bridges.tools.checking_resource": [
|
||||
"Checking for {{ resource_name }} resource...",
|
||||
"Looking for {{ resource_name }} resource files...",
|
||||
"Verifying {{ resource_name }} resource exists...",
|
||||
"Searching for {{ resource_name }} resource in toolkit...",
|
||||
"Ensuring {{ resource_name }} resource is available...",
|
||||
"Validating {{ resource_name }} resource presence..."
|
||||
],
|
||||
"bridges.tools.no_resource_urls": [
|
||||
"No download URLs found for {{ resource_name }} resource.",
|
||||
"I couldn't find download links for the {{ resource_name }} resource.",
|
||||
"The download URLs for {{ resource_name }} resource are missing.",
|
||||
"I'm unable to locate the download URLs for {{ resource_name }} resource.",
|
||||
"Download URLs not available for {{ resource_name }} resource.",
|
||||
"Sorry, I don't have the download URLs for the {{ resource_name }} resource."
|
||||
],
|
||||
"bridges.tools.creating_resource_directory": [
|
||||
"Creating resource directory for {{ resource_name }} at {{ resource_path }}...",
|
||||
"Setting up resource storage for {{ resource_name }} at {{ resource_path }}...",
|
||||
"Initializing {{ resource_name }} resource directory at {{ resource_path }}...",
|
||||
"Creating resource directory structure for {{ resource_name }} at {{ resource_path }}...",
|
||||
"Preparing resource storage location at {{ resource_path }}..."
|
||||
],
|
||||
"bridges.tools.resource_already_exists": [
|
||||
"{{ resource_name }} resource already exists at {{ resource_path }}.",
|
||||
"The {{ resource_name }} resource is already available at {{ resource_path }}.",
|
||||
"Resource {{ resource_name }} found at {{ resource_path }}.",
|
||||
"{{ resource_name }} resource is already downloaded at {{ resource_path }}.",
|
||||
"Using existing {{ resource_name }} resource from {{ resource_path }}."
|
||||
],
|
||||
"bridges.tools.downloading_resource": [
|
||||
"Downloading {{ resource_name }} resource...",
|
||||
"Fetching {{ resource_name }} resource files...",
|
||||
"Retrieving {{ resource_name }} resource data...",
|
||||
"Getting {{ resource_name }} resource from server...",
|
||||
"Downloading {{ resource_name }} resource, this may take a moment..."
|
||||
],
|
||||
"bridges.tools.downloading_resource_file": [
|
||||
"Downloading {{ file_name }} for {{ resource_name }} from {{ url }} ...",
|
||||
"Fetching {{ file_name }} file for {{ resource_name }} ...",
|
||||
"Getting {{ file_name }} from {{ url }} ...",
|
||||
"Downloading resource file {{ file_name }} ...",
|
||||
"Retrieving {{ file_name }} for {{ resource_name }} resource ..."
|
||||
],
|
||||
"bridges.tools.resource_file_downloaded": [
|
||||
"Downloaded {{ file_name }} for {{ resource_name }} to {{ file_path }}.",
|
||||
"Successfully downloaded {{ file_name }} for {{ resource_name }}.",
|
||||
"{{ file_name }} downloaded for {{ resource_name }} resource.",
|
||||
"Resource file {{ file_name }} saved to {{ file_path }}.",
|
||||
"Completed download of {{ file_name }} for {{ resource_name }}."
|
||||
],
|
||||
"bridges.tools.resource_file_download_failed": [
|
||||
"Failed to download {{ file_name }} for {{ resource_name }} from {{ url }} : {{ error }}.",
|
||||
"Download error for {{ file_name }} ({{ resource_name }}): {{ error }}.",
|
||||
"Could not download {{ file_name }} for {{ resource_name }}: {{ error }}.",
|
||||
"{{ file_name }} download failed for {{ resource_name }}: {{ error }}.",
|
||||
"Error downloading {{ file_name }} from {{ url }} : {{ error }}."
|
||||
],
|
||||
"react.tool_call.waiting": [
|
||||
"Still working on this step. Please wait because {{ reason }}."
|
||||
],
|
||||
"react.tool_call.reason.large_prompt": [
|
||||
"the prompt is large (around {{ estimated_tokens }} tokens) and needs more inference time"
|
||||
],
|
||||
"react.tool_call.reason.multi_tools": [
|
||||
"the model is evaluating {{ tool_count }} tool schemas before deciding"
|
||||
],
|
||||
"react.tool_call.reason.provider_latency": [
|
||||
"the provider is taking longer than usual to complete this tool-selection call"
|
||||
],
|
||||
"react.tool_call.diagnosis": [
|
||||
"Still running this step. Quick diagnosis while it continues: provider={{ provider }}, tool choice={{ tool_choice }}, tools={{ tool_count }}, estimated tokens={{ total_tokens }} (prompt={{ prompt_tokens }}, tools={{ tool_tokens }}, history={{ history_tokens }}). Slowdowns usually come from provider queueing or large context."
|
||||
],
|
||||
"react.tool.preparing": [
|
||||
"Preparing the {{ tool_name }} tool..."
|
||||
],
|
||||
"react.tool.ready": [
|
||||
"{{ tool_name }} is ready to be used."
|
||||
],
|
||||
"bridges.tools.resource_downloaded": [
|
||||
"{{ resource_name }} resource downloaded successfully to {{ resource_path }}.",
|
||||
"The {{ resource_name }} resource has been downloaded and is ready at {{ resource_path }}.",
|
||||
"Successfully downloaded {{ resource_name }} resource.",
|
||||
"{{ resource_name }} resource is now available at {{ resource_path }}.",
|
||||
"Download complete for {{ resource_name }} resource.",
|
||||
"The {{ resource_name }} resource files have been successfully downloaded."
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"$schema": "../../../schemas/global-data/global-answers.json",
|
||||
"answers": {
|
||||
"success": {},
|
||||
"errors": {
|
||||
"not_found": "Désolé, il semblerait que je n'arrive pas à trouver ça",
|
||||
"nlu": "L'erreur semble provenir de ma compréhension de langage naturel. Voici plus de détails au sujet de cette dernière : \"%error%\""
|
||||
},
|
||||
"random_errors": [
|
||||
"Désolé, il y a un problème avec mon système. Veuillez consulter mes logs pour plus de détails",
|
||||
"Désolé, je ne fonctionne pas correctement. Merci de regarder mes logs pour plus d'information",
|
||||
"Désolé, vous devez me réparer. Veuillez vérifier mes logs pour en savoir plus",
|
||||
"Désolé, je ne peux aboutir à votre demande parce que je suis cassé. Regardez mes logs pour plus de détails"
|
||||
],
|
||||
"random_skill_errors": [
|
||||
"Désolé, il semblerait y avoir un problème avec le skill \"{{ skill_name }}\"",
|
||||
"Désolé, j'ai un problème avec le skill \"{{ skill_name }}\" ",
|
||||
"Désolé, j'ai une erreur avec le skill \"{{ skill_name }}\"",
|
||||
"Désolé, le skill \"{{ skill_name }}\" est cassé"
|
||||
],
|
||||
"random_unknown_intents": [
|
||||
"Désolé, je ne connais pas encore ça, mais vous pouvez m'aider à comprendre en <a href=\"https://github.com/leon-ai/leon/blob/develop/.github/CONTRIBUTING.md\" target=\"_blank\">créant une pull request</a>",
|
||||
"Désolé, vous devriez m'apprendre cette requête. Vous pouvez m'apprendre en <a href=\"https://github.com/leon-ai/leon/blob/develop/.github/CONTRIBUTING.md\" target=\"_blank\">créant une pull request</a>",
|
||||
"Désolé, je ne peux pas répondre à ça. Laissez moi vous répondre à l'avenir en <a href=\"https://github.com/leon-ai/leon/blob/develop/.github/CONTRIBUTING.md\" target=\"_blank\">créant une pull request</a>",
|
||||
"Désolé, vous devez m'éduquer un peu plus. Vous pouvez m'aider avec ça en <a href=\"https://github.com/leon-ai/leon/blob/develop/.github/CONTRIBUTING.md\" target=\"_blank\">contribuant à mon code</a>",
|
||||
"Désolé, je ne comprends pas votre requête",
|
||||
"Désolé, je suis encore très jeune, je n'ai pas compris votre demande"
|
||||
],
|
||||
"skill_not_found_offer_create": [
|
||||
"Je n'ai pas encore cette compétence, mais je peux la développer pour vous tout de suite.",
|
||||
"Cette compétence n'existe pas encore, mais je peux la créer maintenant.",
|
||||
"Je n'ai pas cette compétence pour le moment. Je peux la construire tout de suite."
|
||||
],
|
||||
"random_not_sure": [
|
||||
"Désolé, vous pouvez répéter d'une autre façon",
|
||||
"Désolé, je ne suis pas sûr de comprendre",
|
||||
"Désolé, je ne suis pas certain de votre demande, merci de répéter d'une manière différente",
|
||||
"Désolé, merci de répéter à nouveau en formulant différemment",
|
||||
"Désolé, je n'ai pas nettoyé mes oreilles correctement ! Attendez-voir, je suis votre assistant personnel, je vous prie donc de répéter d'une nouvelle façon"
|
||||
],
|
||||
"random_not_able": [
|
||||
"Désolé, je ne suis pas capable de répondre. J'ai compris ce que vous avez dit, mais je vous prie de répéter d'une autre façon",
|
||||
"Désolé, j'ai un trou de mémoire, je ne peux pas répondre à ça. J'ai compris ce que vous disiez, mais essayez voir d'une autre façon s'il vous plaît"
|
||||
],
|
||||
"random_ner_type_not_supported": [
|
||||
"Désolé, le type \"%entity_type%\" d'entité d'action n'est pas supporté par ma reconnaissance d'entité. Merci d'<a href=\"https://github.com/leon-ai/leon/issues\" target=\"_blank\">ouvrir une issue</a> afin de reporter ce cas, ce sera très apprécié",
|
||||
"Désolé, ma reconnaissance d'entité ne reconnaît pas le type \"%entity_type%\" d'entité d'action. Merci d'<a href=\"https://github.com/leon-ai/leon/issues\" target=\"_blank\">ouvrir une issue</a> afin de reporter ce cas, ce serait très appréciable"
|
||||
],
|
||||
"random_language_switch": [
|
||||
"Vous parlez une nouvelle langue, veuillez me donner une seconde le temps que je m'adapte",
|
||||
"Vous parlez une autre langue, un instant s'il vous plaît",
|
||||
"Wow, vous parlez plusieurs langues, moi aussi ! Un instant je vous prie"
|
||||
],
|
||||
"random_language_not_supported": [
|
||||
"Désolé, je ne parle pas encore cette langue",
|
||||
"Vous êtes génial, mais je n'ai pas encore appris cette langue",
|
||||
"Ça ressemble à une lautre langue que je ne peux pas comprendre pour le moment"
|
||||
],
|
||||
"llm_remote_provider_error": [
|
||||
"J'ai rencontre une erreur avec le provider distant {{ provider }} pendant l'inference : {{ error }}{{ api_error }}"
|
||||
],
|
||||
"react.tool.preparing": [
|
||||
"Préparation de l'outil {{ tool_name }}..."
|
||||
],
|
||||
"react.tool.ready": [
|
||||
"{{ tool_name }} est prêt à être utilisé."
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,288 @@
|
||||
{
|
||||
"train": {
|
||||
"log_interval": 200,
|
||||
"eval_interval": 1000,
|
||||
"seed": 52,
|
||||
"epochs": 10000,
|
||||
"learning_rate": 0.0003,
|
||||
"betas": [0.8, 0.99],
|
||||
"eps": 1e-9,
|
||||
"batch_size": 8,
|
||||
"fp16_run": false,
|
||||
"lr_decay": 0.999875,
|
||||
"segment_size": 16384,
|
||||
"init_lr_ratio": 1,
|
||||
"warmup_epochs": 0,
|
||||
"c_mel": 45,
|
||||
"c_kl": 1.0,
|
||||
"skip_optimizer": true
|
||||
},
|
||||
"data": {
|
||||
"training_files": "/output/V1/model/train.list",
|
||||
"validation_files": "/output/V1/model/val.list",
|
||||
"max_wav_value": 32768.0,
|
||||
"sampling_rate": 44100,
|
||||
"filter_length": 2048,
|
||||
"hop_length": 512,
|
||||
"win_length": 2048,
|
||||
"n_mel_channels": 128,
|
||||
"mel_fmin": 0.0,
|
||||
"mel_fmax": null,
|
||||
"add_blank": true,
|
||||
"n_speakers": 1,
|
||||
"cleaned_text": true,
|
||||
"spk2id": {
|
||||
"EN-Leon-V1_1": 0
|
||||
}
|
||||
},
|
||||
"model": {
|
||||
"use_spk_conditioned_encoder": true,
|
||||
"use_noise_scaled_mas": true,
|
||||
"use_mel_posterior_encoder": false,
|
||||
"use_duration_discriminator": true,
|
||||
"inter_channels": 192,
|
||||
"hidden_channels": 192,
|
||||
"filter_channels": 768,
|
||||
"n_heads": 2,
|
||||
"n_layers": 6,
|
||||
"n_layers_trans_flow": 3,
|
||||
"kernel_size": 3,
|
||||
"p_dropout": 0.1,
|
||||
"resblock": "1",
|
||||
"resblock_kernel_sizes": [3, 7, 11],
|
||||
"resblock_dilation_sizes": [
|
||||
[1, 3, 5],
|
||||
[1, 3, 5],
|
||||
[1, 3, 5]
|
||||
],
|
||||
"upsample_rates": [8, 8, 2, 2, 2],
|
||||
"upsample_initial_channel": 512,
|
||||
"upsample_kernel_sizes": [16, 16, 8, 2, 2],
|
||||
"n_layers_q": 3,
|
||||
"use_spectral_norm": false,
|
||||
"gin_channels": 256
|
||||
},
|
||||
"num_languages": 8,
|
||||
"num_tones": 16,
|
||||
"symbols": [
|
||||
"_",
|
||||
"\"",
|
||||
"(",
|
||||
")",
|
||||
"*",
|
||||
"/",
|
||||
":",
|
||||
"AA",
|
||||
"E",
|
||||
"EE",
|
||||
"En",
|
||||
"N",
|
||||
"OO",
|
||||
"Q",
|
||||
"V",
|
||||
"[",
|
||||
"\\",
|
||||
"]",
|
||||
"^",
|
||||
"a",
|
||||
"a:",
|
||||
"aa",
|
||||
"ae",
|
||||
"ah",
|
||||
"ai",
|
||||
"an",
|
||||
"ang",
|
||||
"ao",
|
||||
"aw",
|
||||
"ay",
|
||||
"b",
|
||||
"by",
|
||||
"c",
|
||||
"ch",
|
||||
"d",
|
||||
"dh",
|
||||
"dy",
|
||||
"e",
|
||||
"e:",
|
||||
"eh",
|
||||
"ei",
|
||||
"en",
|
||||
"eng",
|
||||
"er",
|
||||
"ey",
|
||||
"f",
|
||||
"g",
|
||||
"gy",
|
||||
"h",
|
||||
"hh",
|
||||
"hy",
|
||||
"i",
|
||||
"i0",
|
||||
"i:",
|
||||
"ia",
|
||||
"ian",
|
||||
"iang",
|
||||
"iao",
|
||||
"ie",
|
||||
"ih",
|
||||
"in",
|
||||
"ing",
|
||||
"iong",
|
||||
"ir",
|
||||
"iu",
|
||||
"iy",
|
||||
"j",
|
||||
"jh",
|
||||
"k",
|
||||
"ky",
|
||||
"l",
|
||||
"m",
|
||||
"my",
|
||||
"n",
|
||||
"ng",
|
||||
"ny",
|
||||
"o",
|
||||
"o:",
|
||||
"ong",
|
||||
"ou",
|
||||
"ow",
|
||||
"oy",
|
||||
"p",
|
||||
"py",
|
||||
"q",
|
||||
"r",
|
||||
"ry",
|
||||
"s",
|
||||
"sh",
|
||||
"t",
|
||||
"th",
|
||||
"ts",
|
||||
"ty",
|
||||
"u",
|
||||
"u:",
|
||||
"ua",
|
||||
"uai",
|
||||
"uan",
|
||||
"uang",
|
||||
"uh",
|
||||
"ui",
|
||||
"un",
|
||||
"uo",
|
||||
"uw",
|
||||
"v",
|
||||
"van",
|
||||
"ve",
|
||||
"vn",
|
||||
"w",
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"zh",
|
||||
"zy",
|
||||
"~",
|
||||
"æ",
|
||||
"ç",
|
||||
"ð",
|
||||
"ø",
|
||||
"ŋ",
|
||||
"œ",
|
||||
"ɐ",
|
||||
"ɑ",
|
||||
"ɒ",
|
||||
"ɔ",
|
||||
"ɕ",
|
||||
"ə",
|
||||
"ɛ",
|
||||
"ɜ",
|
||||
"ɡ",
|
||||
"ɣ",
|
||||
"ɥ",
|
||||
"ɦ",
|
||||
"ɪ",
|
||||
"ɫ",
|
||||
"ɬ",
|
||||
"ɭ",
|
||||
"ɯ",
|
||||
"ɲ",
|
||||
"ɵ",
|
||||
"ɸ",
|
||||
"ɹ",
|
||||
"ɾ",
|
||||
"ʁ",
|
||||
"ʃ",
|
||||
"ʊ",
|
||||
"ʌ",
|
||||
"ʎ",
|
||||
"ʏ",
|
||||
"ʑ",
|
||||
"ʒ",
|
||||
"ʝ",
|
||||
"ʲ",
|
||||
"ˈ",
|
||||
"ˌ",
|
||||
"ː",
|
||||
"̃",
|
||||
"̩",
|
||||
"β",
|
||||
"θ",
|
||||
"ᄀ",
|
||||
"ᄁ",
|
||||
"ᄂ",
|
||||
"ᄃ",
|
||||
"ᄄ",
|
||||
"ᄅ",
|
||||
"ᄆ",
|
||||
"ᄇ",
|
||||
"ᄈ",
|
||||
"ᄉ",
|
||||
"ᄊ",
|
||||
"ᄋ",
|
||||
"ᄌ",
|
||||
"ᄍ",
|
||||
"ᄎ",
|
||||
"ᄏ",
|
||||
"ᄐ",
|
||||
"ᄑ",
|
||||
"ᄒ",
|
||||
"ᅡ",
|
||||
"ᅢ",
|
||||
"ᅣ",
|
||||
"ᅤ",
|
||||
"ᅥ",
|
||||
"ᅦ",
|
||||
"ᅧ",
|
||||
"ᅨ",
|
||||
"ᅩ",
|
||||
"ᅪ",
|
||||
"ᅫ",
|
||||
"ᅬ",
|
||||
"ᅭ",
|
||||
"ᅮ",
|
||||
"ᅯ",
|
||||
"ᅰ",
|
||||
"ᅱ",
|
||||
"ᅲ",
|
||||
"ᅳ",
|
||||
"ᅴ",
|
||||
"ᅵ",
|
||||
"ᆨ",
|
||||
"ᆫ",
|
||||
"ᆮ",
|
||||
"ᆯ",
|
||||
"ᆷ",
|
||||
"ᆸ",
|
||||
"ᆼ",
|
||||
"ㄸ",
|
||||
"!",
|
||||
"?",
|
||||
"…",
|
||||
",",
|
||||
".",
|
||||
"'",
|
||||
"-",
|
||||
"¿",
|
||||
"¡",
|
||||
"SP",
|
||||
"UNK"
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"en-US": {
|
||||
"short": "en",
|
||||
"min_confidence": 0.5,
|
||||
"fallbacks": [],
|
||||
"action_loop_stop_words": ["stop", "break", "exit"]
|
||||
},
|
||||
"fr-FR": {
|
||||
"short": "fr",
|
||||
"min_confidence": 0.5,
|
||||
"fallbacks": [
|
||||
{
|
||||
"words": ["merci"],
|
||||
"domain": "leon",
|
||||
"skill": "welcome",
|
||||
"action": "run"
|
||||
}
|
||||
],
|
||||
"action_loop_stop_words": ["stop", "break", "exit"]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user