danielmiessler.fabric/internal/i18n/locales/en.json
Kayvan Sylvan 9b724f8cec fix: persist refreshed Codex tokens and reactivate configured vendors
- Persist rotated Codex OAuth tokens after every successful refresh.
- Reload stored credentials under cross-process locks before refreshing.
- Write environment updates atomically with secret-only file permissions.
- Preserve existing environment values while skipping empty replacements.
- Activate configured vendors lazily and surface configuration failures immediately.
- Reuse valid refresh tokens before starting interactive authentication.
- Localize Codex setup, provider, request, and persistence errors.
- Upgrade AI, cloud, telemetry, and supporting Go dependencies.
- Set Claude Opus 5 as default changelog summarizer.
- Document `.env` token sensitivity and rewrite behavior.
2026-08-27 18:12:08 -07:00

766 lines
58 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"abacus_models_endpoint_status": "abacus models endpoint returned status %d",
"additional_yt_dlp_args": "Additional arguments to pass to yt-dlp (e.g. '--cookies-from-browser brave')",
"address_to_bind_rest_api": "The address to bind the REST API",
"anthropic_stream_error": "Stream error: %v",
"api_key_secure_server_routes": "API key used to secure server routes",
"application_options_header": "Application Options:",
"apply_variables_to_input": "Apply variables to user input",
"attachment_could_not_determine_mimetype": "could not determine mimetype of URL",
"attachment_file_not_exist": "file %s does not exist",
"attachment_no_content_available": "no content available",
"attachment_no_type_no_content": "attachment has no type and no content to derive it from",
"attachment_path_or_url_help": "Attachment path or URL (e.g. for OpenAI image recognition messages)",
"audio_output_file_specified_but_not_tts_model": "audio output file '%s' specified but model '%s' is not a TTS model. Please use a TTS model like gemini-2.5-flash-preview-tts",
"audio_video_file_transcribe": "Audio or video file to transcribe",
"available_models_header": "Available models",
"available_transcription_models": "Available transcription models:",
"available_vendors_header": "Available Vendors:",
"azure_api_key_required": "Azure API key is required",
"azure_api_version_question": "Enter the Azure API version (leave blank for default)",
"azure_base_url_question": "API Base URL",
"azure_base_url_required": "Azure base URL is required",
"azure_credential_failure": "failed to create Azure credential",
"azure_deployments_question": "Enter your Azure deployment names (comma-separated)",
"azure_deployments_required": "at least one Azure deployment name is required",
"azure_failed_extract_deployment": "failed to extract deployment name from request",
"azure_model_field_empty": "model field is empty in request body",
"azure_request_body_nil": "request body is nil",
"azureaigateway_aoai_no_choices": "no choices in Azure OpenAI response",
"azureaigateway_aoai_parse_response_failed": "failed to parse Azure OpenAI response: %w",
"azureaigateway_api_version_question": "Azure OpenAI API version (default: 2025-04-01-preview, leave empty for default)",
"azureaigateway_backend_not_initialized": "backend not initialized - run 'fabric --setup' to configure",
"azureaigateway_backend_type_question": "Select backend type (bedrock, azure-openai, vertex-ai)",
"azureaigateway_bedrock_no_text_blocks": "no text content blocks in Bedrock response",
"azureaigateway_bedrock_parse_response_failed": "failed to parse Bedrock response: %w",
"azureaigateway_failed_create_request": "AzureAIGateway: failed to create request: %w",
"azureaigateway_failed_read_response": "AzureAIGateway: failed to read response: %w",
"azureaigateway_gateway_url_https_required": "gateway URL must use HTTPS scheme",
"azureaigateway_gateway_url_question": "Enter your Azure APIM Gateway base URL (e.g., https://gateway.company.com)",
"azureaigateway_gateway_url_required": "azure APIM gateway URL is required",
"azureaigateway_http_error": "AzureAIGateway: HTTP %d: %s",
"azureaigateway_http_request_failed": "AzureAIGateway: HTTP request failed: %w",
"azureaigateway_invalid_gateway_url": "invalid gateway URL: %w",
"azureaigateway_no_valid_messages": "no valid messages after filtering empty content",
"azureaigateway_prepare_request_failed": "AzureAIGateway: %w",
"azureaigateway_response_too_large": "AzureAIGateway: response too large (>%d bytes)",
"azureaigateway_subscription_key_question": "Enter your Azure APIM subscription key",
"azureaigateway_subscription_key_required": "azure APIM subscription key is required",
"azureaigateway_unsupported_backend": "unsupported backend: %s (valid options: bedrock, azure-openai, vertex-ai)",
"azureaigateway_vertexai_no_content": "no content in Vertex AI response",
"azureaigateway_vertexai_parse_response_failed": "failed to parse Vertex AI response: %w",
"background_type_help": "Background type: opaque, transparent (default: opaque, only for PNG/WebP)",
"bedrock_api_key_label": "Enter your Bedrock API Key / ABSK token (recommended — same key used by Claude Code)",
"bedrock_aws_access_key_label": "Enter your AWS Access Key ID (only if not using API Key above)",
"bedrock_aws_region_label": "Enter your AWS Region (e.g. us-east-1, us-west-2, eu-west-1, ap-southeast-1)",
"bedrock_aws_secret_key_label": "Enter your AWS Secret Access Key (only if not using API Key above)",
"bedrock_client_not_initialized": "Bedrock client not initialized — run 'fabric --setup' to configure",
"bedrock_converse_failed": "bedrock converse failed for model %s: %w",
"bedrock_conversestream_failed": "bedrock conversestream failed for model %s: %w",
"bedrock_empty_response_content": "empty response content",
"bedrock_failed_list_foundation_models": "failed to list foundation models: %w",
"bedrock_failed_list_inference_profiles": "failed to list inference profiles: %w",
"bedrock_fetch_regions_bad_status": "botocore endpoints returned unexpected status",
"bedrock_fetch_regions_failed": "failed to fetch Bedrock regions from botocore",
"bedrock_fetch_regions_parse_failed": "failed to parse botocore endpoints.json",
"bedrock_invalid_aws_region": "invalid AWS region: %s",
"bedrock_listmodels_fallback": "Bedrock ListModels API failed, using static fallback",
"bedrock_panic_sendstream": "panic in SendStream: %v",
"bedrock_setup_auth_option_accesskey": " [2] AWS Access Key + Secret Key",
"bedrock_setup_auth_option_apikey": " [1] Bedrock API Key / ABSK token (recommended — same as Claude Code)",
"bedrock_setup_auth_prompt": "Enter 1 or 2",
"bedrock_setup_choose_auth_method": " Choose authentication method:",
"bedrock_setup_choose_model": " Choose default model (unprefixed IDs work in any region; us./eu./ap. are region-specific):",
"bedrock_setup_choose_region": " Choose AWS Region:",
"bedrock_setup_header": "[Bedrock]",
"bedrock_setup_invalid_auth_selection": "invalid selection: %s (enter 1 or 2)",
"bedrock_setup_model_custom_prompt": "Enter model ID (e.g. anthropic.claude-opus-4-6-v1)",
"bedrock_setup_model_option_custom": " [0] Enter a different model ID",
"bedrock_setup_model_prompt": "Enter model number or 0 to type your own",
"bedrock_setup_region_custom_prompt": "Enter custom AWS region (e.g. us-east-1)",
"bedrock_setup_region_option_custom": " [0] Enter a different region",
"bedrock_setup_region_prompt": "Enter region number or 0 for custom",
"bedrock_setup_selected_model": " ✓ Selected model: %s",
"bedrock_setup_use_with": " Use with: fabric -m %s -V Bedrock",
"bedrock_unable_load_aws_config": "unable to load AWS Config: %w",
"bedrock_unable_load_aws_config_with_region": "unable to load AWS Config with region %s: %w",
"bedrock_unexpected_content_block_type": "unexpected content block type: %T",
"bedrock_unexpected_response_type": "unexpected response type: %T",
"bedrock_unknown_stream_event_type": "unknown stream event type: %T",
"cannot_convert_string": "cannot convert string %q to %v",
"change_default_model": "Change default model",
"chat_error_content_fields_misused": "can't use both Content and MultiContent properties simultaneously",
"chatter_error_empty_response": "empty response",
"chatter_error_find_context": "could not find context %s: %v",
"chatter_error_find_session": "could not find session %s: %v",
"chatter_error_get_pattern": "could not get pattern %s: %v",
"chatter_error_load_strategy": "could not load strategy %s: %v",
"chatter_error_no_messages_provided": "no messages provided",
"chatter_error_no_session_pattern_user_messages": "no session, pattern or user messages provided",
"chatter_error_stream_update": "Error: %s",
"chatter_help_review_changes_with_git_diff": "You can review the changes with 'git diff' if you're using git.",
"chatter_info_file_changes_applied_successfully": "Successfully applied file changes.",
"chatter_log_stream_usage_metadata": "[Metadata] Input: %d | Output: %d | Total: %d",
"chatter_prompt_enforce_response_language": "%s\n\nIMPORTANT: First, execute the instructions provided in this prompt using the user's input. Second, ensure your entire final response, including any section headers or titles generated as part of executing the instructions, is written ONLY in the %s language.",
"chatter_warning_apply_file_changes_failed": "Warning: Failed to apply file changes: %v",
"chatter_warning_get_current_directory_failed": "Warning: Failed to get current directory: %v",
"chatter_warning_parse_file_changes_failed": "Warning: Failed to parse file changes: %v",
"choose_context_from_available": "Choose a context from the available contexts",
"choose_model": "Choose model",
"choose_pattern_from_available": "Choose a pattern from the available patterns",
"choose_session_from_available": "Choose a session from the available sessions",
"choose_strategy_from_available": "Choose a strategy from the available strategies",
"codex_api_base_url_question": "Enter your Codex API base URL",
"codex_auth_base_url_invalid": "invalid codex auth base url: %w",
"codex_auth_base_url_question": "Enter your Codex OAuth base URL",
"codex_browser_open_fallback": "If your browser did not open, navigate to this URL to authenticate:",
"codex_decode_models_response_failed": "failed to decode codex models response: %w",
"codex_decode_refresh_response_failed": "failed to decode refreshed Codex token response: %w",
"codex_decode_token_response_failed": "failed to decode codex token exchange response: %w",
"codex_image_file_not_supported": "Codex vendor does not support --image-file. Use an image attachment instead.",
"codex_login_account_changed": "Codex login is linked to a different ChatGPT account than the stored configuration. Please rerun 'fabric --setup'.",
"codex_login_completed": "Codex login completed",
"codex_login_failed": "Codex login failed: %s",
"codex_login_invalid": "Codex login is no longer valid. Please rerun 'fabric --setup'.",
"codex_login_missing_account_claim": "Codex login did not include a ChatGPT account ID. This login state is not supported.",
"codex_login_missing_auth_code": "Codex login did not return an authorization code.",
"codex_login_missing_tokens": "Codex login did not return the required access and refresh tokens.",
"codex_login_refresh_failed": "Codex login could not be refreshed. Please rerun 'fabric --setup'.",
"codex_login_return_to_fabric": "Return to Fabric.",
"codex_login_revoked": "Codex login has expired or been revoked. Please rerun 'fabric --setup'.",
"codex_login_server_stopped": "Codex login callback server stopped before authentication completed.",
"codex_login_state_mismatch": "Codex login could not be verified because the OAuth state did not match.",
"codex_login_timed_out": "Codex login timed out before authentication completed.",
"codex_oauth_missing_auth_code": "Missing authorization code",
"codex_oauth_random_state_failed": "failed to generate secure random oauth state: %w",
"codex_oauth_server_start_failed": "failed to start local oauth callback server: %w",
"codex_oauth_state_mismatch": "State mismatch",
"codex_provider_error": "codex provider error (status %d): %s",
"codex_refresh_failed_status": "failed to refresh codex login (status %d)",
"codex_refresh_login_failed": "failed to refresh Codex login: %w",
"codex_refresh_token_required": "Codex refresh token is required. Please rerun 'fabric --setup'.",
"codex_replay_body_unavailable": "request body cannot be replayed for Codex re-authentication retry",
"codex_request_failed": "codex request failed: %w",
"codex_request_failed_status": "codex request failed with status %d",
"codex_starting_browser_login": "Starting browser-based OpenAI login for Codex.",
"codex_token_exchange_failed": "codex token exchange failed: %w",
"codex_token_persist_failed": "failed to persist Codex login: %w",
"codex_token_refresh_missing_access_token": "Codex token refresh did not return an access token.",
"codex_usage_limit_reached": "codex usage limit reached",
"command_completed_successfully": "Command completed successfully",
"compression_level_jpeg_webp": "Compression level 0-100 for JPEG/WebP formats (default: not set)",
"config_file_not_found": "config file not found: %s",
"convert_html_readability": "Convert HTML input into a clean, readable view",
"copilot_debug_created_conversation": "Created Copilot conversation: %s",
"copilot_debug_failed_parse_sse_event": "failed to parse SSE event: %v",
"copilot_error_chat_request": "chat request failed: %s - %s",
"copilot_error_create_conversation": "failed to create conversation: %s - %s",
"copilot_error_reading_stream": "error reading stream: %w",
"copilot_error_stream_request": "stream request failed: %s - %s",
"copilot_failed_create_conversation": "failed to create conversation: %w",
"copilot_failed_send_message": "failed to send message: %w",
"copilot_failed_stream_message": "failed to stream message: %w",
"copilot_tenant_client_id_required": "tenant ID and client ID are required",
"copy_to_clipboard": "Copy to clipboard",
"could_not_copy_to_clipboard": "could not copy to clipboard: %v",
"could_not_create_config_dir": "could not create config directory: %w",
"could_not_create_env_file": "could not create .env file: %w",
"could_not_determine_home_dir": "could not determine user home directory: %w",
"could_not_stat_env_file": "could not stat .env file: %w",
"custom_notification_command": "Custom command to run for notifications (overrides built-in notifications)",
"custom_patterns_directory_question": "Enter the path to your custom patterns directory",
"custom_patterns_label": "Custom Patterns",
"custom_patterns_setup_description": "Custom Patterns - Set directory for your custom patterns",
"custom_patterns_warning_create_directory": "Warning: Could not create custom patterns directory %s: %v\n",
"db_error_loading_env_file": "error loading .env file: %w",
"db_error_updating_env_file": "error updating .env file: %w",
"defaults_model_context_length_question": "Enter model context length",
"defaults_model_question": "Enter the index or the name of your default model",
"defaults_setup_description": "Default AI Vendor and Model",
"digitalocean_failed_parse_control_plane_url": "failed to parse DigitalOcean control plane URL: %w",
"digitalocean_model_list_unavailable": "DigitalOcean model list unavailable. Set DIGITALOCEAN_TOKEN to fetch models from the control plane",
"digitalocean_model_list_unavailable_with_error": "DigitalOcean model list unavailable: %w. Set DIGITALOCEAN_TOKEN to fetch models from the control plane",
"digitalocean_models_request_failed_read_error": "DigitalOcean models request failed with status %d: %w",
"digitalocean_models_request_failed_with_status": "DigitalOcean models request failed with status %d: %s",
"disable_openai_responses_api": "Disable OpenAI Responses API (default: false)",
"disable_pattern_variable_replacement": "Disable pattern variable replacement",
"enable_web_search_tool": "Enable web search tool for supported models (Anthropic, OpenAI, Gemini, Grok)",
"end_tag_thinking_sections": "End tag for thinking sections",
"error_creating_audio_file": "error creating audio file: %v",
"error_creating_file": "error creating file: %v",
"error_fetching_playlist_videos": "error fetching playlist videos: %w",
"error_parsing_config_file": "error parsing config file: %w",
"error_reading_config_file": "error reading config file: %w",
"error_reading_piped_message": "error reading piped message from stdin: %w",
"error_writing_audio_data": "error writing audio data to file: %v",
"error_writing_to_file": "error writing to file: %v",
"extension_cmd_template_required": "command template is required for operation %s",
"extension_command_template_label": " Command Template: %s\n",
"extension_config_hash_mismatch": "config file hash mismatch for %s",
"extension_config_path_label": " Config Path: %s\n\n",
"extension_description_label": " Description: %s\n",
"extension_empty_command": "empty command after formatting",
"extension_executable_hash_mismatch": "executable hash mismatch for %s",
"extension_executable_label": " Executable: %s\n",
"extension_executable_not_found": "executable not found: %w",
"extension_executable_required": "executable path is required",
"extension_executing_command": "Executing command: %s\n",
"extension_execution_failed_err": "execution failed: %w\nerr: %s",
"extension_execution_failed_stderr": "execution failed: %w\nstderr: %s",
"extension_execution_timed_out": "execution timed out after %v",
"extension_failed_format_command": "failed to format command: %w",
"extension_failed_get_absolute_path": "failed to get absolute path: %w",
"extension_failed_get_extension": "failed to get extension: %w",
"extension_failed_get_output_path": "failed to get output path: %w\nerr: %s",
"extension_failed_hash_executable": "failed to hash executable: %w",
"extension_failed_marshal_registry": "failed to marshal extension registry: %w",
"extension_failed_parse_config": "failed to parse config file: %w",
"extension_failed_parse_registry": "failed to parse extension registry: %w",
"extension_failed_read_config": "failed to read config file: %w",
"extension_failed_read_output_file": "failed to read output file: %w",
"extension_failed_read_registry": "failed to read extension registry: %w",
"extension_failed_register": "failed to register extension: %w",
"extension_failed_remove": "failed to remove extension: %w",
"extension_failed_verify_executable": "failed to verify executable: %w",
"extension_file_config_label": " File Configuration:\n",
"extension_invalid_config_path": "invalid config path: %w",
"extension_invalid_definition": "invalid extension definition: %w",
"extension_invalid_timeout": "invalid timeout value '%s': must be a duration like '30s' or '1m': %w",
"extension_invalid_timeout_format": "invalid timeout format: %w",
"extension_name_contains_spaces": "extension name '%s' contains spaces - names must not contain spaces",
"extension_name_detail_label": "Name: %s\n",
"extension_name_empty": "extension name cannot be empty",
"extension_name_label": "Extension: %s\n",
"extension_name_required": "extension name is required",
"extension_no_file_config": "no file configuration found",
"extension_no_output_file": "no output file specified in configuration",
"extension_not_found": "extension %s not found",
"extension_operation_not_found": "operation %s not found for extension %s",
"extension_operation_required": "at least one operation must be defined",
"extension_operations_label": " Operations:\n",
"extension_registered_success": "Successfully registered extension:\n",
"extension_registry_not_initialized": "extension registry not initialized",
"extension_status_disabled": " Status: DISABLED - Hash verification failed: %v\n",
"extension_status_enabled": " Status: ENABLED\n",
"extension_timeout_label": " Timeout: %s\n",
"extension_type_label": " Type: %s\n",
"extension_type_required": "extension type is required",
"extension_version_label": " Version: %s\n",
"extension_warning_load_registry": "Warning: could not load extension registry: %v\n",
"fabric_command_complete": "Fabric Command Complete",
"fabric_command_complete_with_pattern": "Fabric: %s Complete",
"fetch_content_exceeds_limit": "fetch: content too large: exceeds %d bytes",
"fetch_content_not_utf8": "fetch: content is not valid UTF-8 text",
"fetch_content_null_bytes": "fetch: content contains null bytes",
"fetch_content_too_large": "fetch: content too large: %d bytes (max %d bytes)",
"fetch_error_create_request": "fetch: error creating request: %v",
"fetch_error_fetching_url": "fetch: error fetching URL: %v",
"fetch_error_reading_response": "fetch: error reading response: %v",
"fetch_http_error": "fetch: HTTP error: %d - %s",
"fetch_unknown_operation": "fetch: unknown operation %q (supported: get)",
"fetch_unsupported_content_type": "fetch: unsupported content type %q - only text content allowed",
"file_already_exists_choose_different": "file %s already exists. Please choose a different filename or remove the existing file",
"file_already_exists_not_overwriting": "file %s already exists, not overwriting. Rename the existing file or choose a different name",
"file_manager_applied_operation": "Applied %s operation to %s",
"file_manager_empty_path": "empty path for file change %d",
"file_manager_failed_create_directory": "failed to create directory %s for file change %d: %w",
"file_manager_failed_parse_json": "failed to parse %s JSON: %w",
"file_manager_failed_write_file": "failed to write file %s for file change %d: %w",
"file_manager_file_content_too_large": "file content too large for file change %d: %d bytes",
"file_manager_invalid_format_no_json_array": "invalid %s format: no JSON array found",
"file_manager_invalid_format_unbalanced_brackets": "invalid %s format: unbalanced brackets",
"file_manager_invalid_operation": "invalid operation for file change %d: %s",
"file_manager_suspicious_path": "suspicious path for file change %d: %s",
"gemini_audio_data_too_small": "audio data too small: %d bytes, minimum required: %d",
"gemini_empty_pcm_data": "empty PCM data provided",
"gemini_invalid_location_format": "invalid search location format %q: must be timezone (e.g., 'America/Los_Angeles') or language code (e.g., 'en-US')",
"gemini_invalid_voice": "invalid voice '%s'. Valid voices are: %v",
"gemini_no_audio_data": "no audio data received from TTS model",
"gemini_no_text_for_tts": "no text content found for TTS generation",
"gemini_pcm_data_too_large": "PCM data too large: %d bytes, maximum allowed: %d",
"gemini_stream_error": "Error: %v",
"gemini_tts_failed": "TTS generation failed: %w",
"gemini_unexpected_data_type": "unexpected data type: %s, expected audio data",
"gemini_voice_not_found": "voice '%s' not found",
"gemini_wav_data_invalid": "generated WAV data is invalid: %d bytes, minimum required: %d",
"gemini_wav_generation_failed": "failed to generate WAV file: %w",
"githelper_failed_clone_repository": "failed to clone repository: %w",
"githelper_failed_create_dest_directory": "failed to create destination directory: %w",
"githelper_failed_create_temp_directory": "failed to create temp directory: %w",
"githelper_failed_get_commit": "failed to get commit: %w",
"githelper_failed_get_head": "failed to get repository HEAD: %w",
"githelper_failed_get_tree": "failed to get tree: %w",
"githelper_failed_git_cli_clone": "git clone failed: %w: %s",
"githelper_failed_git_cli_fallback": "%w; git CLI fallback also failed: %v",
"grab_comments_from_youtube": "Grab comments from YouTube video and send to chat",
"grab_transcript_from_youtube": "Grab transcript from YouTube video and send to chat (it is used per default).",
"grab_transcript_with_timestamps": "Grab transcript from YouTube video with timestamps and send to chat",
"groups_items_number_out_of_range": "number %d is out of range",
"help_message": "Show this help message",
"help_options_header": "Help Options:",
"html_readability_error": "use original input, because can't apply html readability",
"i18n_download_failed": "failed to download translation for language '%s': %v",
"i18n_load_failed": "failed to load translation file: %v",
"image_compression_jpeg_webp_only": "image compression can only be used with JPEG and WebP formats, not %s",
"image_compression_range_error": "image compression must be between 0 and 100, got %d",
"image_dimensions_help": "Image dimensions: 1024x1024, 1536x1024, 1024x1536, auto (default: auto)",
"image_file_already_exists": "image file already exists: %s",
"image_parameters_require_image_file": "image parameters (--image-size, --image-quality, --image-background, --image-compression) can only be used with --image-file",
"image_quality_help": "Image quality: low, medium, high, auto (default: auto)",
"invalid_config_path": "invalid config path: %w",
"invalid_image_background": "invalid image background '%s'. Supported backgrounds: opaque, transparent",
"invalid_image_file_extension": "invalid image file extension '%s'. Supported formats: .png, .jpeg, .jpg, .webp",
"invalid_image_quality": "invalid image quality '%s'. Supported qualities: low, medium, high, auto",
"invalid_image_size": "invalid image size '%s'. Supported sizes: 1024x1024, 1536x1024, 1024x1536, auto",
"jina_error_creating_request": "error creating request: %v",
"jina_error_reading_response_body": "error reading response body: %v",
"jina_error_sending_request": "error sending request: %v",
"jina_label": "Jina AI",
"jina_setup_description": "Jina AI Service - to grab a webpage as clean, LLM-friendly text",
"language_label": "Language",
"language_output_question": "Enter your default output language (for example: zh_CN)",
"language_setup_description": "Language - Default AI Vendor Output Language",
"list_all_available_models": "List all available models",
"list_all_contexts": "List all contexts",
"list_all_patterns": "List all patterns",
"list_all_registered_extensions": "List all registered extensions",
"list_all_sessions": "List all sessions",
"list_all_strategies": "List all strategies",
"list_all_vendors": "List all vendors",
"list_gemini_tts_voices": "List all available Gemini TTS voices",
"list_transcription_models": "List all available transcription models",
"lmstudio_api_url_question": "Enter your %v URL (as a reminder, it is usually %v)",
"lmstudio_error_reading_response": "error reading response: %w",
"lmstudio_failed_create_request": "failed to create request: %w",
"lmstudio_failed_decode_response": "failed to decode response: %w",
"lmstudio_failed_marshal_payload": "failed to marshal payload: %w",
"lmstudio_failed_send_request": "failed to send request: %w",
"lmstudio_invalid_response_missing_choices": "invalid response format: missing or empty choices",
"lmstudio_invalid_response_missing_content": "invalid response format: missing or non-string content in message",
"lmstudio_invalid_response_missing_message": "invalid response format: missing message in first choice",
"lmstudio_invalid_response_missing_text": "invalid response format: missing or non-string text in first choice",
"lmstudio_no_embeddings_returned": "no embeddings returned",
"lmstudio_unexpected_status_code": "unexpected status code: %d",
"model_context_length_ollama": "Model context length (only affects ollama)",
"model_for_transcription": "Model to use for transcription (separate from chat model)",
"no_description_available": "No description available",
"no_items_found": "No %s",
"no_notification_system_available": "no notification system available",
"notifications_no_provider_available": "no notification provider available",
"number_of_latest_patterns": "Number of latest patterns to list",
"ollama_cannot_parse_url": "cannot parse URL '%s': %v",
"ollama_chat_request_failed": "Chat request failed: %v",
"ollama_empty_address": "empty address",
"ollama_error_building_chat_url": "error building /chat URL: %v",
"ollama_error_creating_chat_request": "error creating /chat request: %v",
"ollama_error_endpoint": "testing endpoint",
"ollama_error_getting_chat_body": "error getting /chat body: %v",
"ollama_error_marshalling_body": "error marshalling body: %v",
"ollama_error_parse_upstream_response": "Error: failed to parse upstream response",
"ollama_error_prefix": "Error: %s",
"ollama_error_reading_body": "error reading body: %v",
"ollama_error_scanning_body": "error scanning body: %v",
"ollama_error_unmarshalling_body": "error unmarshalling body: %v",
"ollama_error_writing_response": "error writing response: %v",
"ollama_failed_create_request": "failed to create request",
"ollama_failed_decode_data_url": "failed to decode data URL: %v",
"ollama_failed_fetch_image": "failed to fetch image from %s: %s",
"ollama_failed_scan_sse_stream": "failed to scan SSE response stream: %v",
"ollama_failed_unmarshal_fabric_response": "failed to unmarshal Fabric response",
"ollama_http_timeout_question": "Enter the HTTP timeout (e.g., 20m, 60s)",
"ollama_invalid_address": "invalid address: %w",
"ollama_invalid_address_missing_host": "invalid address: missing host",
"ollama_invalid_address_missing_hostname": "invalid address: missing hostname",
"ollama_invalid_address_path_not_allowed": "invalid address: path component not allowed in bare address",
"ollama_invalid_data_url_format": "invalid data URL format",
"ollama_invalid_http_timeout_using_default": "invalid HTTP timeout '%s': %v, using default",
"ollama_invalid_num_ctx_in_request": "invalid num_ctx in request: %v",
"ollama_no_content_from_upstream": "no content received from upstream Fabric server",
"ollama_num_ctx_exceeds_maximum": "num_ctx exceeds maximum allowed value of %d",
"ollama_num_ctx_invalid_type": "num_ctx must be a number, got invalid type",
"ollama_num_ctx_must_be_finite": "num_ctx must be a finite number",
"ollama_num_ctx_must_be_integer": "num_ctx must be an integer, got float with fractional part",
"ollama_num_ctx_must_be_positive": "num_ctx must be positive, got: %d",
"ollama_num_ctx_must_be_valid_number": "num_ctx must be a valid number",
"ollama_num_ctx_must_be_valid_number_got": "num_ctx must be a valid number, got: %s",
"ollama_num_ctx_value_out_of_range": "num_ctx value out of range",
"ollama_num_ctx_value_too_large": "num_ctx value too large: %d",
"ollama_sse_buffer_limit": "SSE line exceeds 1MB buffer limit - data line too large",
"ollama_upstream_non_2xx": "Upstream Fabric server returned non-2xx status %d: %s",
"ollama_upstream_non_2xx_body_unreadable": "Upstream Fabric server returned non-2xx status %d and body could not be read: %v",
"ollama_upstream_returned_status": "upstream Fabric server returned status %d",
"ollama_warning_no_content": "Warning: no content received from upstream Fabric server",
"ollama_warning_parse_variables": "Warning: failed to parse options.variables as JSON: %v",
"openai_api_base_url_not_configured": "API base URL not configured for provider %s",
"openai_audio_ffmpeg_failed": "ffmpeg failed: %v: %s",
"openai_audio_ffmpeg_not_found_install": "ffmpeg not found: please install",
"openai_audio_file_exceeds_limit_enable_split": "File %s exceeds the 25MB limit; use --split-media-file to enable automatic splitting",
"openai_audio_file_exceeds_limit_splitting": "File %s is larger than the size limit... splitting into chunks...",
"openai_audio_model_not_supported_for_transcription": "model '%s' is not supported for transcription",
"openai_audio_running_ffmpeg_split_chunks": "Running ffmpeg to split audio into %d-second chunks...",
"openai_audio_unable_to_split_acceptable_size_chunks": "unable to split file into acceptably sized chunks",
"openai_audio_unsupported_audio_format": "unsupported audio format '%s'",
"openai_audio_using_model_to_transcribe_part": "Using model %s to transcribe part %d (filename: %s)...",
"openai_compatible_unknown_static_model_list": "unknown static model list: %s",
"openai_failed_to_create_models_url": "failed to create models URL: %w",
"openai_image_failed_to_create_directory": "failed to create directory %s: %w",
"openai_image_failed_to_decode_image_data": "failed to decode image data: %w",
"openai_image_failed_to_save_image": "failed to save image to %s: %w",
"openai_image_saved_to": "Image saved to: %s",
"openai_model_no_image_generation": "model '%s' does not support image generation. Supported models: %s",
"openai_models_rate_limited": "rate limit exceeded fetching models from provider %s; retry after %s seconds",
"openai_models_response_too_large": "models response too large from provider %s (>%d bytes)",
"openai_unable_to_parse_models_response": "unable to parse models response; raw response: %s",
"openai_unexpected_status_code_read_error": "unexpected status code: %d from provider %s (failed to read response body: %v)",
"openai_unexpected_status_code_with_body": "unexpected status code: %d from provider %s, response body: %s",
"openai_warning_model_no_image_generation": "Warning: Model '%s' does not support image generation. Supported models: %s. Consider using -m gpt-5.2 for image generation.\n",
"optional_marker": "(optional)",
"options_placeholder": "[OPTIONS]",
"output_entire_session": "Output the entire session (also a temporary one) to the output file",
"output_full": "Output: %s",
"output_raw_list_shell_completion": "Output raw list without headers/formatting (for shell completion)",
"output_to_file": "Output to file",
"output_truncated": "Output: %s...",
"output_video_metadata": "Output video metadata",
"path_to_yaml_config": "Path to YAML config file",
"pattern_not_found_list_available": "pattern '%s' not found. Run 'fabric -l' to see available patterns",
"pattern_invalid_name": "invalid pattern name: %q",
"pattern_not_found_no_patterns": "pattern '%s' not found.\n\nNo patterns are installed! To fix this:\n • Run 'fabric --setup' to configure and download patterns\n • Or run 'fabric -U' to download/update patterns directly",
"pattern_variables_help": "Values for pattern variables, e.g. -v=#role:expert -v=#points:30",
"patterns_cloning_repository": "Cloning repository %s (path: %s)...\n",
"patterns_debug_included_custom_directory": "📂 Also included patterns from custom directory: %s\n",
"patterns_detected_old_path": "🔄 Detected old pattern path 'patterns', trying migration to 'data/patterns'...",
"patterns_download_success": "✅ Successfully downloaded and installed patterns to %s\n",
"patterns_downloaded_temp": "Downloaded %d patterns to temporary directory\n",
"patterns_downloading": "Downloading patterns and Populating %s...\n",
"patterns_error_create_directory": "could not create pattern directory: %v",
"patterns_error_get_home_directory": "could not get home directory: %v",
"patterns_error_load_from_file": "could not load pattern from file %s: %w",
"patterns_error_read_pattern_file": "could not read pattern file %s: %v",
"patterns_error_read_unique_file": "could not read unique patterns file. Please run --updatepatterns (%s)",
"patterns_error_resolve_file_path": "could not resolve file path: %v",
"patterns_error_save_pattern": "could not save pattern: %v",
"patterns_failed_access_directory": "failed to access patterns directory '%s': %w",
"patterns_failed_create_temp_dir": "failed to create temp directory: %w",
"patterns_failed_create_temp_folder": "failed to create temporary patterns folder: %w",
"patterns_failed_download_from_git": "failed to download patterns from git repository: %w",
"patterns_failed_download_from_repo": "failed to download patterns from %s: %w",
"patterns_failed_loaded_marker": "failed to create loaded marker file '%s': %w",
"patterns_failed_move_patterns": "failed to move patterns to config directory: %w",
"patterns_failed_move_test_patterns": "failed to move test patterns to temp folder: %w",
"patterns_failed_read_directory": "failed to read patterns directory: %w",
"patterns_failed_read_temp_directory": "failed to read temp patterns directory: %w",
"patterns_failed_unique_file": "failed to create unique patterns file: %w",
"patterns_failed_write_unique_file": "failed to write unique patterns file: %w",
"patterns_found_new_path": "✅ Found %d patterns at new path '%s', updating configuration...\n",
"patterns_git_repo_folder_question": "Enter the default folder in the Git repository where patterns are stored",
"patterns_git_repo_url_question": "Enter the default Git repository URL for the patterns",
"patterns_loader_label": "Patterns Loader",
"patterns_no_patterns_copied": "no patterns were successfully copied to %s",
"patterns_no_patterns_found_in_directories": "no patterns found in directories %s and %s",
"patterns_no_patterns_found_in_directory": "no patterns found in directory %s",
"patterns_no_patterns_migration_failed": "no patterns found in repository at path %s and migration failed: %w",
"patterns_not_found_header": "⚠️ No patterns found!",
"patterns_option_run_setup": "Option 1 (Recommended): Run setup to download patterns",
"patterns_option_run_setup_command": "fabric --setup",
"patterns_option_run_update": "Option 2: Download/update patterns directly",
"patterns_option_run_update_command": "fabric -U",
"patterns_preserve_warning": "Warning: failed to preserve custom pattern '%s': %v\n",
"patterns_preserved_custom_pattern": "Preserved custom pattern: %s\n",
"patterns_required_to_work": "Patterns are required for Fabric to work. To fix this:",
"patterns_saving_updated_configuration": "💾 Saving updated configuration (path changed from '%s' to '%s')...\n",
"patterns_setup_description": "Patterns - Downloads patterns",
"patterns_unable_to_find_or_migrate": "unable to find patterns at current path '%s' or migrate to new structure",
"patterns_unique_file_created": "📝 Created unique patterns file with %d patterns\n",
"patterns_warning_custom_directory": "Warning: Could not read custom patterns directory %s: %v\n",
"patterns_warning_remove_test_folder": "Warning: failed to remove test temporary folder '%s': %v\n",
"perplexity_api_key_not_configured": "API key not configured for %s. Set %s environment variable or run 'fabric --setup' to configure %s",
"perplexity_api_request_failed": "Perplexity API request failed: %w",
"perplexity_citations_header": "\n\n**Citations:**\n",
"perplexity_failed_configure": "failed to configure Perplexity: %w",
"perplexity_streaming_error": "Perplexity streaming error: %v",
"plugin_configured": " ✓",
"plugin_enable_bool_question": "Enable %v %v (true/false)",
"plugin_enter_value": "Enter your %v %v",
"plugin_invalid_bool": "invalid bool: %q",
"plugin_invalid_boolean_value": "invalid boolean value: %v",
"plugin_not_configured": " ⚠️ NOT CONFIGURED",
"plugin_question_bool": "%v%v (true/false, leave empty for '%s' or type '%v' to remove the value):",
"plugin_question_optional": "%v%v (leave empty to skip):",
"plugin_question_with_default": "%v%v (leave empty for '%s' or type '%v' to remove the value):",
"plugin_registry_could_not_find_vendor": "could not find vendor",
"plugin_registry_error_configuring_custom_patterns": "error configuring CustomPatterns: %w",
"plugin_registry_model_not_available_for_vendor": "model %s not available for vendor %s",
"plugin_registry_run_setup_select_defaults": "please run 'fabric --setup' and select default model and vendor",
"plugin_setting_not_valid": "%v=%v, is not valid",
"plugin_setup_configured": "[%v] configured",
"plugin_setup_skipped": "[%v] skipped\n",
"prefer_playlist_over_video": "Prefer playlist over video if both ids are present in the URL",
"print_context": "Print context",
"print_current_version": "Print current version",
"print_metadata_to_stderr": "Print metadata (input/output tokens) to stderr",
"print_pattern_contents": "Print the contents of the named pattern to the terminal",
"print_session": "Print session",
"register_new_extension": "Register a new extension from config file path",
"remove_registered_extension": "Remove a registered extension by name",
"required_marker": "[required]",
"run_setup_for_reconfigurable_parts": "Run setup for all reconfigurable parts of fabric",
"save_generated_image_to_file": "Save generated image to specified file path (e.g., 'output.png')",
"scrape_website_url": "Scrape website URL to markdown using Jina AI",
"scraping_not_configured": "scraping functionality is not configured. Please set up Jina to enable scraping",
"search_question_jina": "Search question using Jina AI",
"seed_for_lmm_generation": "Seed to be used for LMM generation",
"send_desktop_notification": "Send desktop notification when command completes",
"serve_fabric_api_ollama_endpoints": "Serve the Fabric Rest API with ollama endpoints",
"serve_fabric_rest_api": "Serve the Fabric Rest API",
"server_chat_error": "Error: %v",
"server_error_marshaling_response": "error marshaling response: %v",
"server_error_writing_response": "error writing response: %v",
"server_invalid_request_format": "invalid request format: %v",
"sessions_creating_new": "Creating new session: %s\n",
"set_debug_level": "Set debug level (0=off, 1=basic, 2=detailed, 3=trace, 4=wire)",
"set_frequency_penalty": "Set frequency penalty",
"set_location_web_search": "Set location for web search results (e.g., 'America/Los_Angeles')",
"set_presence_penalty": "Set presence penalty",
"set_reasoning_thinking_level": "Set reasoning/thinking level (e.g., off, low, medium, high, or numeric tokens for Anthropic or Google Gemini)",
"set_temperature": "Set temperature",
"set_top_p": "Set top P",
"setup_add_more_providers_later": "You'll be able to add more providers later with 'fabric --setup'",
"setup_ai_provider_required": "Fabric needs at least one AI provider to work.",
"setup_available_ai_providers": "Available AI Providers:",
"setup_available_plugins": "Available plugins:",
"setup_complete_header": "✅ Setup complete! You can now use Fabric.",
"setup_configure_more": "• Configure more settings: fabric --setup",
"setup_enter_ai_provider_number": "AI Provider Number",
"setup_failed_download_patterns": "failed to download patterns: %w",
"setup_failed_download_strategies": "failed to download strategies: %w",
"setup_failed_set_defaults": "failed to set default vendor and model: %w",
"setup_invalid_selection": "invalid selection: %s",
"setup_list_patterns": "• List available patterns: fabric -l",
"setup_next_steps": "Next steps:",
"setup_no_ai_provider_selected": "no AI provider selected - at least one is required",
"setup_optional_configuration_header": "━━━ OPTIONAL CONFIGURATION ━━━\n\nOptional Tools",
"setup_plugin_number": "Plugin Number",
"setup_plugin_prompt": "Enter the number of the plugin to setup",
"setup_required_configuration_header": "━━━ REQUIRED CONFIGURATION ━━━\n\nAI Vendors [at least one required]",
"setup_required_tools": "Required Tools",
"setup_step_configure_ai_provider": "🤖 Step 3: Configure an AI provider",
"setup_step_downloading_patterns": "📥 Step 1: Downloading patterns (required for Fabric to work)...",
"setup_step_downloading_strategies": "📥 Step 2: Downloading strategies (required for Fabric to work)...",
"setup_step_setting_defaults": "⚙️ Step 4: Setting default vendor and model...",
"setup_try_pattern": "• Try a pattern: echo 'your text' | fabric --pattern summarize",
"setup_validation_ai_provider_configured": "✓ AI Provider configured",
"setup_validation_ai_provider_missing": "✗ AI Provider not configured - Required for Fabric to work",
"setup_validation_complete": "✓ All required components configured!",
"setup_validation_defaults_configured": "✓ Default vendor/model set: %s/%s",
"setup_validation_defaults_missing": "✗ Default vendor/model not set - Required for Fabric to work",
"setup_validation_header": "Configuration Status:",
"setup_validation_incomplete_help": "Run 'fabric --setup' again to configure missing items,\nor run 'fabric -U' to download patterns and strategies.",
"setup_validation_incomplete_warning": "⚠️ Setup incomplete! Missing required components.",
"setup_validation_patterns_configured": "✓ Patterns downloaded",
"setup_validation_patterns_missing": "✗ Patterns not found - Required for Fabric to work",
"setup_validation_strategies_configured": "✓ Strategies downloaded",
"setup_validation_strategies_missing": "✗ Strategies not found - Required for Fabric to work",
"setup_welcome_header": "🎉 Welcome to Fabric! Let's get you set up.",
"show_dry_run": "Show what would be sent to the model without actually sending it",
"specify_language_code": "Specify the Language Code for the chat, e.g. -g=en -g=zh -g=pt-BR -g=pt-PT",
"specify_vendor_for_model": "Specify vendor for the selected model (e.g., -V \"LM Studio\" -m openai/gpt-oss-20b)",
"split_media_files_ffmpeg": "Split audio/video files larger than 25MB using ffmpeg",
"spotify_api_request_failed": "API request failed: status %d, body: %s",
"spotify_audio_preview_label": "**Audio Preview**: %s",
"spotify_client_id_question": "Enter your Spotify CLIENT ID",
"spotify_client_secret_question": "Enter your Spotify CLIENT SECRET",
"spotify_description_header": "## Description",
"spotify_duration_label": "**Duration**: %d minutes",
"spotify_episode_header": "# Spotify Episode",
"spotify_error_getting_metadata": "error getting Spotify metadata: %v",
"spotify_explicit_label": "**Explicit**: %v",
"spotify_failed_create_request": "failed to create request: %w",
"spotify_failed_create_token_request": "failed to create token request: %w",
"spotify_failed_decode_token_response": "failed to decode token response: %w",
"spotify_failed_execute_request": "failed to execute request: %w",
"spotify_failed_get_access_token": "failed to get access token: status %d, body: %s",
"spotify_failed_get_show_episodes": "failed to get show episodes: %w",
"spotify_failed_parse_episode_metadata": "failed to parse episode metadata: %w",
"spotify_failed_parse_episodes": "failed to parse episodes: %w",
"spotify_failed_parse_search_results": "failed to parse search results: %w",
"spotify_failed_parse_show_metadata": "failed to parse show metadata: %w",
"spotify_failed_read_response_body": "failed to read response body: %w",
"spotify_failed_request_access_token": "failed to request access token: %w",
"spotify_invalid_url": "invalid Spotify URL, can't get show or episode ID: '%s'",
"spotify_label": "Spotify",
"spotify_language_field_label": "**Language**: %s",
"spotify_languages_label": "**Languages**: %s",
"spotify_media_type_label": "**Media Type**: %s",
"spotify_no_episode_found": "no episode found with ID: %s",
"spotify_no_show_found": "no show found with ID: %s",
"spotify_not_configured": "Spotify is not configured, please run the setup procedure",
"spotify_publisher_label": "**Publisher**: %s",
"spotify_release_date_label": "**Release Date**: %s",
"spotify_search_description_label": "- **Description**: %s",
"spotify_search_episodes_label": "- **Episodes**: %d",
"spotify_search_failed": "search failed: %w",
"spotify_search_publisher_label": "- **Publisher**: %s",
"spotify_search_results_header": "# Spotify Search Results",
"spotify_search_url_label": "- **URL**: %s",
"spotify_setup_description": "Spotify - to grab podcast/show metadata from Spotify",
"spotify_show_header": "# Spotify Podcast/Show",
"spotify_show_name_label": "**Show**: %s",
"spotify_title_label": "**Title**: %s",
"spotify_total_episodes_label": "**Total Episodes**: %d",
"spotify_url_help": "Spotify podcast or episode URL to grab metadata from and send to chat",
"spotify_url_label": "**URL**: %s",
"start_tag_thinking_sections": "Start tag for thinking sections",
"storage_error_delete": "could not delete %s: %v",
"storage_error_load": "could not load %s: %v",
"storage_error_marshal": "could not marshal %s: %s",
"storage_error_read_directory": "could not read items from directory: %v",
"storage_error_rename": "could not rename %s to %s: %v",
"storage_error_resolve_directory": "could not resolve directory path: %v",
"storage_error_save": "could not save %s: %v",
"storage_error_stat_entry": "could not stat entry %s: %v",
"storage_error_unmarshal": "could not unmarshal %s: %s",
"strategies_available_header": "Available Strategies:",
"strategies_cloning_repository": "Cloning repository %s (path: %s)...\n",
"strategies_download_success": "✅ Successfully downloaded and installed strategies to %s\n",
"strategies_downloaded_count": "Downloaded %d strategies\n",
"strategies_downloading": "Downloading strategies and Populating %s...\n",
"strategies_failed_create_directory": "failed to create strategies directory: %w",
"strategies_failed_download": "failed to download strategies: %w",
"strategies_git_repo_folder_question": "Enter the default folder in the Git repository where strategies are stored",
"strategies_git_repo_url_question": "Enter the default Git repository URL for the strategies",
"strategies_home_dir_error": "could not get home directory: %v",
"strategies_home_dir_fallback": "could not get home directory: %v, using current directory instead",
"strategies_label": "Prompt Strategies",
"strategies_none_found": "no strategies found. Please run 'fabric --setup' to download strategies",
"strategies_setup_description": "Strategies - Downloads Prompting Strategies (like chain of thought)",
"strategy_not_found": "strategy %s not found. Please run 'fabric --liststrategies' for list",
"strategy_path_traversal": "strategy name %q resolves outside the strategy directory",
"stream_help": "Stream",
"suppress_thinking_tags": "Suppress text enclosed in thinking tags",
"template_datetime_error_invalid_number": "invalid number in relative time: %q",
"template_datetime_error_invalid_relative_format": "invalid relative time format",
"template_datetime_error_invalid_unit": "invalid time unit: %q",
"template_datetime_error_relative_requires_value": "relative time requires a value",
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
"template_extension_error": "extension %s error: %v",
"template_file_error_expand_home_dir": "file: could not expand home directory: %v",
"template_file_error_invalid_line_count": "file: invalid line count %q",
"template_file_error_line_count_positive": "file: line count must be positive",
"template_file_error_open_file": "file: could not open: %v",
"template_file_error_path_contains_parent_ref": "file: path cannot contain '..'",
"template_file_error_read_file": "file: could not read: %v",
"template_file_error_scanner_read": "file: error reading: %v",
"template_file_error_size_exceeds_limit": "file: size %d exceeds limit of %d bytes",
"template_file_error_stat_file": "file: could not stat file: %v",
"template_file_error_stat_open_file": "file: could not stat: %v",
"template_file_error_tail_requires_path_lines": "file: tail requires format path|lines",
"template_file_error_unknown_operation": "file: unknown operation %q (supported: read, tail, exists, size, modified)",
"template_file_log_cleaned_path": "File: cleaned path %q",
"template_file_log_exists_for_path": "File: exists=%v for path %q",
"template_file_log_modified_for_path": "File: modified=%q for path %q",
"template_file_log_operation_value": "File: operation=%q value=%q",
"template_file_log_read_bytes": "File: read %d bytes",
"template_file_log_read_total_return_last": "File: read %d lines total, returning last %d",
"template_file_log_reading_last_lines": "File: reading last %d lines from %q",
"template_file_log_size_for_path": "File: size=%d for path %q",
"template_file_log_tail_returning_lines": "File: tail returning %d lines",
"template_file_log_validating_path": "File: validating path %q",
"template_hash_open_file": "open file: %w",
"template_hash_read_file": "read file: %w",
"template_missing_required_variable": "missing required variable: %s",
"template_plugin_error": "plugin %s error: %v",
"template_processing_stuck": "template processing stuck - potential infinite loop",
"template_sys_error_env_requires_var": "env: variable name required",
"template_sys_error_home": "failed to get home directory: %v",
"template_sys_error_hostname": "failed to get hostname: %v",
"template_sys_error_pwd": "failed to get working directory: %v",
"template_sys_error_unknown_operation": "sys: unknown operation %q",
"template_sys_error_user": "failed to get current user: %v",
"template_text_empty_input": "text: empty input for operation %q",
"template_text_unknown_operation": "text: unknown text operation %q (supported: upper, lower, title, trim)",
"template_unknown_plugin_namespace": "unknown plugin namespace: %s",
"template_utils_failed_get_absolute_path": "failed to get absolute path: %w",
"template_utils_failed_get_home_dir": "failed to get user home directory: %w",
"template_utils_path_not_exist": "path does not exist: %w",
"transcription_model_required": "transcription model is required (use --transcribe-model)",
"transparent_background_png_webp_only": "transparent background can only be used with PNG and WebP formats, not %s",
"tts_audio_generated_successfully": "TTS audio generated successfully and saved to: %s\n",
"tts_model_requires_audio_output": "TTS model '%s' requires audio output. Please specify an audio output file with -o flag (e.g., -o output.wav)",
"tts_voice_name": "TTS voice name for supported models (e.g., Kore, Charon, Puck)",
"unsupported_conversion": "unsupported conversion from %v to %v",
"update_patterns": "Update patterns",
"usage_header": "Usage:",
"use_model_defaults_raw_help": "Use the defaults of the model without sending chat options (temperature, top_p, etc.). Only affects OpenAI-compatible providers. Anthropic models always use smart parameter selection to comply with model-specific requirements.",
"util_error_accessing_config_path": "error accessing default config path: %w",
"util_error_determine_home_directory": "could not determine user home directory: %w",
"util_error_get_absolute_path": "could not get absolute path",
"util_error_path_is_empty": "path is empty",
"util_error_resolve_home_directory": "could not resolve home directory",
"util_error_resolve_symlinks": "could not resolve symlinks: %w",
"vendor_no_transcription_support": "vendor %s does not support audio transcription",
"vendor_not_configured": "vendor %s not configured",
"vendor_not_found": "vendor %s not found",
"vendors_no_ai_vendors_configured_read_models": "no AI vendors configured to read models from",
"vertexai_client_not_initialized": "VertexAI client not initialized",
"vertexai_error_api_status": "API returned status %d: %s",
"vertexai_error_create_request": "failed to create request: %w",
"vertexai_error_parse_response": "failed to parse response: %w",
"vertexai_error_read_response": "failed to read response: %w",
"vertexai_error_request_failed": "request failed: %w",
"vertexai_error_response_too_large": "response too large (>%d bytes)",
"vertexai_failed_gemini_client": "failed to create Gemini client: %w",
"vertexai_failed_google_credentials": "failed to get Google credentials (ensure ADC is configured): %w",
"vertexai_no_content_in_response": "no content in response",
"vertexai_no_conversational_models": "no conversational models found",
"vertexai_no_models_found": "no models found from any publisher",
"vertexai_no_valid_messages": "no valid messages to send",
"vertexai_stream_error": "Error: %v",
"wipe_context": "Wipe context",
"wipe_session": "Wipe session",
"youtube_api_key_required": "YouTube API key required for comments and metadata. Run 'fabric --setup' to configure",
"youtube_auth_required_bot_detection": "YouTube requires authentication (bot detection). Use --yt-dlp-args='--cookies-from-browser BROWSER' where BROWSER is chrome, firefox, brave, etc.",
"youtube_empty_seconds_string": "empty seconds string",
"youtube_error_getting_comments": "error getting comments: %v",
"youtube_error_getting_metadata": "error getting video metadata: %v",
"youtube_error_getting_video_details": "error getting video details: %v",
"youtube_error_parsing_duration": "error parsing video duration: %v",
"youtube_error_saving_csv": "error saving videos to CSV: %v",
"youtube_extract_visual_data_help": "Extract visual data from video using OCR and FFmpeg",
"youtube_failed_create_temp_dir": "failed to create temp directory: %v",
"youtube_failed_fetch_comments": "failed to fetch comments: %v",
"youtube_failed_get_stream_url": "failed to get stream URL via yt-dlp: %v",
"youtube_failed_parse_http_stream_url": "failed to parse valid HTTP stream URL from yt-dlp output",
"youtube_failed_walk_directory": "failed to walk directory: %v",
"youtube_ffmpeg_frame_extraction_failed": "ffmpeg frame extraction failed: %v, output: %s",
"youtube_ffmpeg_required_visual_extraction": "ffmpeg is required for visual extraction but not found in PATH",
"youtube_invalid_duration_string": "invalid duration string: %s",
"youtube_invalid_seconds_format": "invalid seconds format %q: %w",
"youtube_invalid_timestamp_format": "invalid timestamp format: %s",
"youtube_invalid_url": "invalid YouTube URL, can't get video or playlist ID: '%s'",
"youtube_invalid_ytdlp_arguments": "invalid yt-dlp arguments: %v",
"youtube_label": "YouTube",
"youtube_no_clear_text_visual_frames": "no clear text found in video visual frames",
"youtube_no_transcript_content": "no transcript content found in VTT file",
"youtube_no_url_provided": "No YouTube URL provided",
"youtube_no_video_found_with_id": "no video found with ID: %s",
"youtube_no_video_id_found": "no video ID found in URL",
"youtube_no_vtt_files_found": "no VTT files found in directory",
"youtube_not_configured": "YouTube is not configured, please run the setup procedure",
"youtube_playlist_header": "Playlist: %s",
"youtube_playlist_saved_to": "Playlist saved to %s",
"youtube_rate_limit_exceeded": "YouTube rate limit exceeded. Try again later or use different yt-dlp arguments like '--sleep-requests 1' to slow down requests.",
"youtube_setup_description": "YouTube - to grab video transcripts (via yt-dlp) and comments/metadata (via YouTube API)",
"youtube_tesseract_frame_failed": "tesseract failed on frame %d: %v, stderr: %s",
"youtube_tesseract_required_visual_extraction": "tesseract is required for visual extraction but not found in PATH",
"youtube_url_help": "YouTube video or play list \"URL\" to grab transcript, comments from it and send to chat or print it put to the console and store it in the output file",
"youtube_url_is_playlist_not_video": "URL is a playlist, not a video",
"youtube_video_id_title_header": "VideoID: Title",
"youtube_visual_fps_help": "Extract a specific number of frames per second instead of using scene detection",
"youtube_visual_frame_cue": "[VISUAL FRAME CUE]",
"youtube_visual_sensitivity_help": "Tolerance for FFmpeg scene detection (0.0 - 1.0)",
"youtube_ytdlp_not_found": "yt-dlp not found in PATH. Please install yt-dlp to use YouTube transcript functionality",
"youtube_ytdlp_required_visual_extraction": "yt-dlp is required for visual extraction but not found in PATH",
"youtube_ytdlp_stderr_error": "error reading yt-dlp stderr"
}