Spaces:
Sleeping
Sleeping
| """ | |
| Settings & Health tab — API key management, health checks, and version info. | |
| """ | |
| import gradio as gr | |
| from core import config, runner | |
| from core.formatter import format_result | |
| def create_settings_tab(session_keys): | |
| """Build the Settings & Health tab.""" | |
| with gr.Tab("⚙️ Settings & Health"): | |
| gr.Markdown("## API Key Configuration\nKeys are stored in session only — never written to disk.") | |
| key_inputs = {} | |
| with gr.Row(): | |
| with gr.Column(): | |
| for key_name, meta in list(config.API_KEYS.items())[:4]: | |
| key_inputs[key_name] = gr.Textbox( | |
| label=f"{meta['label']}", | |
| info=f"{meta['description']} — [Get key]({meta['url']})", | |
| type="password", | |
| value="", | |
| placeholder="Paste key here...", | |
| ) | |
| with gr.Column(): | |
| for key_name, meta in list(config.API_KEYS.items())[4:]: | |
| key_inputs[key_name] = gr.Textbox( | |
| label=f"{meta['label']}", | |
| info=f"{meta['description']} — [Get key]({meta['url']})", | |
| type="password", | |
| value="", | |
| placeholder="Paste key here...", | |
| ) | |
| gr.Markdown("### Additional Configuration") | |
| config_inputs = {} | |
| for var_name, meta in config.CONFIG_VARS.items(): | |
| config_inputs[var_name] = gr.Textbox( | |
| label=meta["label"], | |
| info=meta["description"], | |
| value="", | |
| placeholder="Leave blank for default", | |
| ) | |
| save_btn = gr.Button("💾 Save Keys to Session", variant="primary") | |
| save_status = gr.Markdown("") | |
| gr.Markdown("---") | |
| gr.Markdown("## System Checks") | |
| with gr.Row(): | |
| health_btn = gr.Button("🏥 Health Check", variant="secondary") | |
| version_btn = gr.Button("ℹ️ Version Info", variant="secondary") | |
| check_output_md = gr.Markdown("") | |
| with gr.Accordion("Raw JSON", open=False): | |
| check_output_json = gr.Code(language="json") | |
| def save_keys(*values): | |
| all_keys = list(config.API_KEYS.keys()) + list(config.CONFIG_VARS.keys()) | |
| keys = {} | |
| for name, val in zip(all_keys, values): | |
| keys[name] = val.strip() if val else "" | |
| filled = sum(1 for v in keys.values() if v) | |
| return keys, f"**Saved {filled} key(s) to session.** These will be used for all commands." | |
| all_key_components = list(key_inputs.values()) + list(config_inputs.values()) | |
| save_btn.click( | |
| fn=save_keys, | |
| inputs=all_key_components, | |
| outputs=[session_keys, save_status], | |
| ) | |
| def run_health(keys): | |
| env = config.build_env_overrides(keys) | |
| result = runner.run_markdown(["health", "--apis-only"], env_overrides=env, timeout=30) | |
| md, js = format_result(result) | |
| return md, js | |
| health_btn.click( | |
| fn=run_health, | |
| inputs=[session_keys], | |
| outputs=[check_output_md, check_output_json], | |
| ) | |
| def run_version(keys): | |
| env = config.build_env_overrides(keys) | |
| result = runner.run_markdown(["version"], env_overrides=env, timeout=10) | |
| md, js = format_result(result) | |
| return md, js | |
| version_btn.click( | |
| fn=run_version, | |
| inputs=[session_keys], | |
| outputs=[check_output_md, check_output_json], | |
| ) | |