superqode 0.1.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- superqode/__init__.py +33 -0
- superqode/acp/__init__.py +23 -0
- superqode/acp/client.py +913 -0
- superqode/acp/permission_screen.py +457 -0
- superqode/acp/types.py +480 -0
- superqode/acp_discovery.py +856 -0
- superqode/agent/__init__.py +22 -0
- superqode/agent/edit_strategies.py +334 -0
- superqode/agent/loop.py +892 -0
- superqode/agent/qe_report_templates.py +39 -0
- superqode/agent/system_prompts.py +353 -0
- superqode/agent_output.py +721 -0
- superqode/agent_stream.py +953 -0
- superqode/agents/__init__.py +59 -0
- superqode/agents/acp_registry.py +305 -0
- superqode/agents/client.py +249 -0
- superqode/agents/data/augmentcode.com.toml +51 -0
- superqode/agents/data/cagent.dev.toml +51 -0
- superqode/agents/data/claude.com.toml +60 -0
- superqode/agents/data/codeassistant.dev.toml +51 -0
- superqode/agents/data/codex.openai.com.toml +57 -0
- superqode/agents/data/fastagent.ai.toml +66 -0
- superqode/agents/data/geminicli.com.toml +77 -0
- superqode/agents/data/goose.block.xyz.toml +54 -0
- superqode/agents/data/junie.jetbrains.com.toml +56 -0
- superqode/agents/data/kimi.moonshot.cn.toml +57 -0
- superqode/agents/data/llmlingagent.dev.toml +51 -0
- superqode/agents/data/molt.bot.toml +49 -0
- superqode/agents/data/opencode.ai.toml +60 -0
- superqode/agents/data/stakpak.dev.toml +51 -0
- superqode/agents/data/vtcode.dev.toml +51 -0
- superqode/agents/discovery.py +266 -0
- superqode/agents/messaging.py +160 -0
- superqode/agents/persona.py +166 -0
- superqode/agents/registry.py +421 -0
- superqode/agents/schema.py +72 -0
- superqode/agents/unified.py +367 -0
- superqode/app/__init__.py +111 -0
- superqode/app/constants.py +314 -0
- superqode/app/css.py +366 -0
- superqode/app/models.py +118 -0
- superqode/app/suggester.py +125 -0
- superqode/app/widgets.py +1591 -0
- superqode/app_enhanced.py +399 -0
- superqode/app_main.py +17187 -0
- superqode/approval.py +312 -0
- superqode/atomic.py +296 -0
- superqode/commands/__init__.py +1 -0
- superqode/commands/acp.py +965 -0
- superqode/commands/agents.py +180 -0
- superqode/commands/auth.py +278 -0
- superqode/commands/config.py +374 -0
- superqode/commands/init.py +826 -0
- superqode/commands/providers.py +819 -0
- superqode/commands/qe.py +1145 -0
- superqode/commands/roles.py +380 -0
- superqode/commands/serve.py +172 -0
- superqode/commands/suggestions.py +127 -0
- superqode/commands/superqe.py +460 -0
- superqode/config/__init__.py +51 -0
- superqode/config/loader.py +812 -0
- superqode/config/schema.py +498 -0
- superqode/core/__init__.py +111 -0
- superqode/core/roles.py +281 -0
- superqode/danger.py +386 -0
- superqode/data/superqode-template.yaml +1522 -0
- superqode/design_system.py +1080 -0
- superqode/dialogs/__init__.py +6 -0
- superqode/dialogs/base.py +39 -0
- superqode/dialogs/model.py +130 -0
- superqode/dialogs/provider.py +870 -0
- superqode/diff_view.py +919 -0
- superqode/enterprise.py +21 -0
- superqode/evaluation/__init__.py +25 -0
- superqode/evaluation/adapters.py +93 -0
- superqode/evaluation/behaviors.py +89 -0
- superqode/evaluation/engine.py +209 -0
- superqode/evaluation/scenarios.py +96 -0
- superqode/execution/__init__.py +36 -0
- superqode/execution/linter.py +538 -0
- superqode/execution/modes.py +347 -0
- superqode/execution/resolver.py +283 -0
- superqode/execution/runner.py +642 -0
- superqode/file_explorer.py +811 -0
- superqode/file_viewer.py +471 -0
- superqode/flash.py +183 -0
- superqode/guidance/__init__.py +58 -0
- superqode/guidance/config.py +203 -0
- superqode/guidance/prompts.py +71 -0
- superqode/harness/__init__.py +54 -0
- superqode/harness/accelerator.py +291 -0
- superqode/harness/config.py +319 -0
- superqode/harness/validator.py +147 -0
- superqode/history.py +279 -0
- superqode/integrations/superopt_runner.py +124 -0
- superqode/logging/__init__.py +49 -0
- superqode/logging/adapters.py +219 -0
- superqode/logging/formatter.py +923 -0
- superqode/logging/integration.py +341 -0
- superqode/logging/sinks.py +170 -0
- superqode/logging/unified_log.py +417 -0
- superqode/lsp/__init__.py +26 -0
- superqode/lsp/client.py +544 -0
- superqode/main.py +1069 -0
- superqode/mcp/__init__.py +89 -0
- superqode/mcp/auth_storage.py +380 -0
- superqode/mcp/client.py +1236 -0
- superqode/mcp/config.py +319 -0
- superqode/mcp/integration.py +337 -0
- superqode/mcp/oauth.py +436 -0
- superqode/mcp/oauth_callback.py +385 -0
- superqode/mcp/types.py +290 -0
- superqode/memory/__init__.py +31 -0
- superqode/memory/feedback.py +342 -0
- superqode/memory/store.py +522 -0
- superqode/notifications.py +369 -0
- superqode/optimization/__init__.py +5 -0
- superqode/optimization/config.py +33 -0
- superqode/permissions/__init__.py +25 -0
- superqode/permissions/rules.py +488 -0
- superqode/plan.py +323 -0
- superqode/providers/__init__.py +33 -0
- superqode/providers/gateway/__init__.py +165 -0
- superqode/providers/gateway/base.py +228 -0
- superqode/providers/gateway/litellm_gateway.py +1170 -0
- superqode/providers/gateway/openresponses_gateway.py +436 -0
- superqode/providers/health.py +297 -0
- superqode/providers/huggingface/__init__.py +74 -0
- superqode/providers/huggingface/downloader.py +472 -0
- superqode/providers/huggingface/endpoints.py +442 -0
- superqode/providers/huggingface/hub.py +531 -0
- superqode/providers/huggingface/inference.py +394 -0
- superqode/providers/huggingface/transformers_runner.py +516 -0
- superqode/providers/local/__init__.py +100 -0
- superqode/providers/local/base.py +438 -0
- superqode/providers/local/discovery.py +418 -0
- superqode/providers/local/lmstudio.py +256 -0
- superqode/providers/local/mlx.py +457 -0
- superqode/providers/local/ollama.py +486 -0
- superqode/providers/local/sglang.py +268 -0
- superqode/providers/local/tgi.py +260 -0
- superqode/providers/local/tool_support.py +477 -0
- superqode/providers/local/vllm.py +258 -0
- superqode/providers/manager.py +1338 -0
- superqode/providers/models.py +1016 -0
- superqode/providers/models_dev.py +578 -0
- superqode/providers/openresponses/__init__.py +87 -0
- superqode/providers/openresponses/converters/__init__.py +17 -0
- superqode/providers/openresponses/converters/messages.py +343 -0
- superqode/providers/openresponses/converters/tools.py +268 -0
- superqode/providers/openresponses/schema/__init__.py +56 -0
- superqode/providers/openresponses/schema/models.py +585 -0
- superqode/providers/openresponses/streaming/__init__.py +5 -0
- superqode/providers/openresponses/streaming/parser.py +338 -0
- superqode/providers/openresponses/tools/__init__.py +21 -0
- superqode/providers/openresponses/tools/apply_patch.py +352 -0
- superqode/providers/openresponses/tools/code_interpreter.py +290 -0
- superqode/providers/openresponses/tools/file_search.py +333 -0
- superqode/providers/openresponses/tools/mcp_adapter.py +252 -0
- superqode/providers/registry.py +716 -0
- superqode/providers/usage.py +332 -0
- superqode/pure_mode.py +384 -0
- superqode/qr/__init__.py +23 -0
- superqode/qr/dashboard.py +781 -0
- superqode/qr/generator.py +1018 -0
- superqode/qr/templates.py +135 -0
- superqode/safety/__init__.py +41 -0
- superqode/safety/sandbox.py +413 -0
- superqode/safety/warnings.py +256 -0
- superqode/server/__init__.py +33 -0
- superqode/server/lsp_server.py +775 -0
- superqode/server/web.py +250 -0
- superqode/session/__init__.py +25 -0
- superqode/session/persistence.py +580 -0
- superqode/session/sharing.py +477 -0
- superqode/session.py +475 -0
- superqode/sidebar.py +2991 -0
- superqode/stream_view.py +648 -0
- superqode/styles/__init__.py +3 -0
- superqode/superqe/__init__.py +184 -0
- superqode/superqe/acp_runner.py +1064 -0
- superqode/superqe/constitution/__init__.py +62 -0
- superqode/superqe/constitution/evaluator.py +308 -0
- superqode/superqe/constitution/loader.py +432 -0
- superqode/superqe/constitution/schema.py +250 -0
- superqode/superqe/events.py +591 -0
- superqode/superqe/frameworks/__init__.py +65 -0
- superqode/superqe/frameworks/base.py +234 -0
- superqode/superqe/frameworks/e2e.py +263 -0
- superqode/superqe/frameworks/executor.py +237 -0
- superqode/superqe/frameworks/javascript.py +409 -0
- superqode/superqe/frameworks/python.py +373 -0
- superqode/superqe/frameworks/registry.py +92 -0
- superqode/superqe/mcp_tools/__init__.py +47 -0
- superqode/superqe/mcp_tools/core_tools.py +418 -0
- superqode/superqe/mcp_tools/registry.py +230 -0
- superqode/superqe/mcp_tools/testing_tools.py +167 -0
- superqode/superqe/noise.py +89 -0
- superqode/superqe/orchestrator.py +778 -0
- superqode/superqe/roles.py +609 -0
- superqode/superqe/session.py +713 -0
- superqode/superqe/skills/__init__.py +57 -0
- superqode/superqe/skills/base.py +106 -0
- superqode/superqe/skills/core_skills.py +899 -0
- superqode/superqe/skills/registry.py +90 -0
- superqode/superqe/verifier.py +101 -0
- superqode/superqe_cli.py +76 -0
- superqode/tool_call.py +358 -0
- superqode/tools/__init__.py +93 -0
- superqode/tools/agent_tools.py +496 -0
- superqode/tools/base.py +324 -0
- superqode/tools/batch_tool.py +133 -0
- superqode/tools/diagnostics.py +311 -0
- superqode/tools/edit_tools.py +653 -0
- superqode/tools/enhanced_base.py +515 -0
- superqode/tools/file_tools.py +269 -0
- superqode/tools/file_tracking.py +45 -0
- superqode/tools/lsp_tools.py +610 -0
- superqode/tools/network_tools.py +350 -0
- superqode/tools/permissions.py +400 -0
- superqode/tools/question_tool.py +324 -0
- superqode/tools/search_tools.py +598 -0
- superqode/tools/shell_tools.py +259 -0
- superqode/tools/todo_tools.py +121 -0
- superqode/tools/validation.py +80 -0
- superqode/tools/web_tools.py +639 -0
- superqode/tui.py +1152 -0
- superqode/tui_integration.py +875 -0
- superqode/tui_widgets/__init__.py +27 -0
- superqode/tui_widgets/widgets/__init__.py +18 -0
- superqode/tui_widgets/widgets/progress.py +185 -0
- superqode/tui_widgets/widgets/tool_display.py +188 -0
- superqode/undo_manager.py +574 -0
- superqode/utils/__init__.py +5 -0
- superqode/utils/error_handling.py +323 -0
- superqode/utils/fuzzy.py +257 -0
- superqode/widgets/__init__.py +477 -0
- superqode/widgets/agent_collab.py +390 -0
- superqode/widgets/agent_store.py +936 -0
- superqode/widgets/agent_switcher.py +395 -0
- superqode/widgets/animation_manager.py +284 -0
- superqode/widgets/code_context.py +356 -0
- superqode/widgets/command_palette.py +412 -0
- superqode/widgets/connection_status.py +537 -0
- superqode/widgets/conversation_history.py +470 -0
- superqode/widgets/diff_indicator.py +155 -0
- superqode/widgets/enhanced_status_bar.py +385 -0
- superqode/widgets/enhanced_toast.py +476 -0
- superqode/widgets/file_browser.py +809 -0
- superqode/widgets/file_reference.py +585 -0
- superqode/widgets/issue_timeline.py +340 -0
- superqode/widgets/leader_key.py +264 -0
- superqode/widgets/mode_switcher.py +445 -0
- superqode/widgets/model_picker.py +234 -0
- superqode/widgets/permission_preview.py +1205 -0
- superqode/widgets/prompt.py +358 -0
- superqode/widgets/provider_connect.py +725 -0
- superqode/widgets/pty_shell.py +587 -0
- superqode/widgets/qe_dashboard.py +321 -0
- superqode/widgets/resizable_sidebar.py +377 -0
- superqode/widgets/response_changes.py +218 -0
- superqode/widgets/response_display.py +528 -0
- superqode/widgets/rich_tool_display.py +613 -0
- superqode/widgets/sidebar_panels.py +1180 -0
- superqode/widgets/slash_complete.py +356 -0
- superqode/widgets/split_view.py +612 -0
- superqode/widgets/status_bar.py +273 -0
- superqode/widgets/superqode_display.py +786 -0
- superqode/widgets/thinking_display.py +815 -0
- superqode/widgets/throbber.py +87 -0
- superqode/widgets/toast.py +206 -0
- superqode/widgets/unified_output.py +1073 -0
- superqode/workspace/__init__.py +75 -0
- superqode/workspace/artifacts.py +472 -0
- superqode/workspace/coordinator.py +353 -0
- superqode/workspace/diff_tracker.py +429 -0
- superqode/workspace/git_guard.py +373 -0
- superqode/workspace/git_snapshot.py +526 -0
- superqode/workspace/manager.py +750 -0
- superqode/workspace/snapshot.py +357 -0
- superqode/workspace/watcher.py +535 -0
- superqode/workspace/worktree.py +440 -0
- superqode-0.1.5.dist-info/METADATA +204 -0
- superqode-0.1.5.dist-info/RECORD +288 -0
- superqode-0.1.5.dist-info/WHEEL +5 -0
- superqode-0.1.5.dist-info/entry_points.txt +3 -0
- superqode-0.1.5.dist-info/licenses/LICENSE +648 -0
- superqode-0.1.5.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SuperQode App Constants - Theme, Icons, Colors, and Messages.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
# Clean ASCII art for SUPERQODE - Standard style (upright, thin)
|
|
6
|
+
ASCII_LOGO = """
|
|
7
|
+
____ _ _ ____ _____ ____ ___ ___ ____ _____
|
|
8
|
+
/ ___|| | | | _ \\| ____| _ \\ / _ \\ / _ \\| _ \\| ____|
|
|
9
|
+
\\___ \\| | | | |_) | _| | |_) | | | || | | | | | | _|
|
|
10
|
+
___) | |_| | __/| |___| _ <| |_| || |_| | |_| | |___
|
|
11
|
+
|____/ \\___/|_| |_____|_| \\_\\\\__\\_\\ \\___/|____/|_____|
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
# Compact logo for header
|
|
15
|
+
COMPACT_LOGO = """ ____ _ _ ____ _____ ____ ___ ___ ____ _____
|
|
16
|
+
|____/ \\___/|_| |_____|_| \\_\\\\__\\_\\ \\___/|____/|_____|"""
|
|
17
|
+
|
|
18
|
+
TAGLINE_PART1 = "Orchestrate Coding Agents"
|
|
19
|
+
TAGLINE_PART2 = "Automate Your SDLC"
|
|
20
|
+
|
|
21
|
+
# Normal purple → pink → orange gradient for ASCII logo
|
|
22
|
+
GRADIENT = ["#7c3aed", "#a855f7", "#c084fc", "#ec4899", "#f97316", "#fb923c"]
|
|
23
|
+
|
|
24
|
+
# Rainbow gradient for animations
|
|
25
|
+
RAINBOW = ["#ef4444", "#f97316", "#eab308", "#22c55e", "#06b6d4", "#3b82f6", "#8b5cf6", "#ec4899"]
|
|
26
|
+
|
|
27
|
+
THEME = {
|
|
28
|
+
"bg": "#000000",
|
|
29
|
+
"surface": "#000000",
|
|
30
|
+
"surface2": "#0a0a0a",
|
|
31
|
+
"border": "#1a1a1a",
|
|
32
|
+
"border_active": "#2a2a2a",
|
|
33
|
+
"purple": "#a855f7",
|
|
34
|
+
"magenta": "#d946ef",
|
|
35
|
+
"pink": "#ec4899",
|
|
36
|
+
"rose": "#fb7185",
|
|
37
|
+
"orange": "#f97316",
|
|
38
|
+
"gold": "#fbbf24",
|
|
39
|
+
"yellow": "#eab308",
|
|
40
|
+
"cyan": "#06b6d4",
|
|
41
|
+
"teal": "#14b8a6",
|
|
42
|
+
"green": "#22c55e",
|
|
43
|
+
"success": "#22c55e",
|
|
44
|
+
"error": "#ef4444",
|
|
45
|
+
"warning": "#f59e0b",
|
|
46
|
+
"text": "#e4e4e7",
|
|
47
|
+
"muted": "#71717a",
|
|
48
|
+
"dim": "#52525b",
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
# Rich emoji set for different contexts
|
|
52
|
+
ICONS = {
|
|
53
|
+
# Status
|
|
54
|
+
"done": "✓",
|
|
55
|
+
"pending": "○",
|
|
56
|
+
"active": "●",
|
|
57
|
+
"error": "✗",
|
|
58
|
+
"warning": "⚠",
|
|
59
|
+
"success": "✅",
|
|
60
|
+
"fail": "❌",
|
|
61
|
+
"loading": "◌",
|
|
62
|
+
# Navigation
|
|
63
|
+
"home": "🏠",
|
|
64
|
+
"back": "←",
|
|
65
|
+
"forward": "→",
|
|
66
|
+
"up": "↑",
|
|
67
|
+
"down": "↓",
|
|
68
|
+
# Actions
|
|
69
|
+
"run": "▶",
|
|
70
|
+
"stop": "■",
|
|
71
|
+
"pause": "⏸",
|
|
72
|
+
"refresh": "🔄",
|
|
73
|
+
"search": "🔍",
|
|
74
|
+
# Objects
|
|
75
|
+
"file": "📄",
|
|
76
|
+
"folder": "📁",
|
|
77
|
+
"code": "💻",
|
|
78
|
+
"terminal": "🖥️",
|
|
79
|
+
"shell": "$",
|
|
80
|
+
"link": "🔗",
|
|
81
|
+
"key": "🔑",
|
|
82
|
+
"lock": "🔒",
|
|
83
|
+
"unlock": "🔓",
|
|
84
|
+
# Team & Agents
|
|
85
|
+
"team": "👥",
|
|
86
|
+
"robot": "🤖",
|
|
87
|
+
"brain": "🧠",
|
|
88
|
+
"dev": "💻",
|
|
89
|
+
"qa": "🧪",
|
|
90
|
+
"devops": "⚙️",
|
|
91
|
+
"user": "👤",
|
|
92
|
+
"agent": "🤖",
|
|
93
|
+
# Communication
|
|
94
|
+
"task": "📋",
|
|
95
|
+
"handoff": "🔄",
|
|
96
|
+
"context": "📎",
|
|
97
|
+
"message": "💬",
|
|
98
|
+
"send": "📤",
|
|
99
|
+
"receive": "📥",
|
|
100
|
+
"chat": "💭",
|
|
101
|
+
# Effects
|
|
102
|
+
"spark": "✨",
|
|
103
|
+
"magic": "🪄",
|
|
104
|
+
"rocket": "🚀",
|
|
105
|
+
"crystal": "🔮",
|
|
106
|
+
"zap": "⚡",
|
|
107
|
+
"bulb": "💡",
|
|
108
|
+
"target": "🎯",
|
|
109
|
+
"fire": "🔥",
|
|
110
|
+
"star": "⭐",
|
|
111
|
+
"gem": "💎",
|
|
112
|
+
"crown": "👑",
|
|
113
|
+
"trophy": "🏆",
|
|
114
|
+
# Emotions
|
|
115
|
+
"heart": "💜",
|
|
116
|
+
"wave": "👋",
|
|
117
|
+
"eyes": "👀",
|
|
118
|
+
"think": "🤔",
|
|
119
|
+
"celebrate": "🎉",
|
|
120
|
+
"cool": "😎",
|
|
121
|
+
"thumbsup": "👍",
|
|
122
|
+
# Technical
|
|
123
|
+
"api": "🔌",
|
|
124
|
+
"database": "🗄️",
|
|
125
|
+
"cloud": "☁️",
|
|
126
|
+
"server": "🖥️",
|
|
127
|
+
"git": "📦",
|
|
128
|
+
"docker": "🐳",
|
|
129
|
+
"test": "🧪",
|
|
130
|
+
"bug": "🐛",
|
|
131
|
+
# Help
|
|
132
|
+
"help": "❓",
|
|
133
|
+
"info": "ℹ️",
|
|
134
|
+
"tip": "💡",
|
|
135
|
+
"exit": "👋",
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
# 14 Official ACP Agents - Colors
|
|
139
|
+
AGENT_COLORS = {
|
|
140
|
+
# Tier 1 - Major Agents
|
|
141
|
+
"gemini": "#4285f4", # Google Blue
|
|
142
|
+
"claude": "#d97706", # Anthropic Orange
|
|
143
|
+
"claude-code": "#d97706", # Anthropic Orange
|
|
144
|
+
"codex": "#10b981", # OpenAI Green
|
|
145
|
+
"junie": "#fe315d", # JetBrains Pink
|
|
146
|
+
"goose": "#8b5cf6", # Block Purple
|
|
147
|
+
"kimi": "#5b21b6", # Moonshot Deep Purple
|
|
148
|
+
"opencode": "#22c55e", # Open Source Green
|
|
149
|
+
# Tier 2 - Community Agents
|
|
150
|
+
"stakpak": "#0ea5e9", # Sky Blue
|
|
151
|
+
"vtcode": "#f59e0b", # Amber
|
|
152
|
+
"auggie": "#ec4899", # Pink
|
|
153
|
+
"code-assistant": "#f97316", # Rust Orange
|
|
154
|
+
"cagent": "#6366f1", # Indigo
|
|
155
|
+
"fast-agent": "#14b8a6", # Teal
|
|
156
|
+
"llmling-agent": "#a855f7", # Purple
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
# 14 Official ACP Agents - Icons
|
|
160
|
+
AGENT_ICONS = {
|
|
161
|
+
# Tier 1 - Major Agents
|
|
162
|
+
"gemini": "✨", # Sparkles - Google Gemini's multimodal nature
|
|
163
|
+
"claude": "🧡", # Orange heart - Anthropic's warm AI
|
|
164
|
+
"claude-code": "🧡", # Orange heart - Anthropic's warm AI
|
|
165
|
+
"codex": "📜", # Scroll - OpenAI codex knowledge
|
|
166
|
+
"junie": "🧠", # Brain - JetBrains intelligence
|
|
167
|
+
"goose": "🦆", # Duck - Block's Goose
|
|
168
|
+
"kimi": "🌙", # Moon - Moonshot AI's Kimi
|
|
169
|
+
"opencode": "🌿", # Seedling - open source growth
|
|
170
|
+
# Tier 2 - Community Agents
|
|
171
|
+
"stakpak": "📦", # Package - code packages
|
|
172
|
+
"vtcode": "⚡", # Lightning - versatile & fast
|
|
173
|
+
"auggie": "🔮", # Crystal ball - Augment's AI vision
|
|
174
|
+
"code-assistant": "🦀", # Crab - Rust language
|
|
175
|
+
"cagent": "🤖", # Robot - multi-agent orchestration
|
|
176
|
+
"fast-agent": "🚀", # Rocket - fast workflows
|
|
177
|
+
"llmling-agent": "🔗", # Link - framework connections
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
# Rich thinking messages with emojis - FUN & ENGAGING!
|
|
181
|
+
THINKING_MSGS = [
|
|
182
|
+
# Classic thinking
|
|
183
|
+
("🧠 Analyzing your request", "brain"),
|
|
184
|
+
("🔍 Understanding context", "search"),
|
|
185
|
+
("💭 Thinking deeply", "think"),
|
|
186
|
+
("⚙️ Processing information", "gear"),
|
|
187
|
+
# Fun & playful
|
|
188
|
+
("🎪 Juggling possibilities", "circus"),
|
|
189
|
+
("🎨 Painting a solution", "art"),
|
|
190
|
+
("🧩 Piecing together the puzzle", "puzzle"),
|
|
191
|
+
("🎭 Getting into character", "theater"),
|
|
192
|
+
("🎲 Rolling for initiative", "dice"),
|
|
193
|
+
("🎸 Jamming on your code", "music"),
|
|
194
|
+
("🎬 Directing the scene", "movie"),
|
|
195
|
+
("🎡 Spinning up ideas", "wheel"),
|
|
196
|
+
# Food & cooking
|
|
197
|
+
("👨🍳 Cooking up something special", "chef"),
|
|
198
|
+
("🍳 Frying some fresh code", "cooking"),
|
|
199
|
+
("🥘 Simmering the solution", "stew"),
|
|
200
|
+
("🍕 Serving hot code", "pizza"),
|
|
201
|
+
("☕ Brewing the perfect response", "coffee"),
|
|
202
|
+
# Space & science
|
|
203
|
+
("🚀 Launching into action", "rocket"),
|
|
204
|
+
("🌟 Aligning the stars", "stars"),
|
|
205
|
+
("🔭 Scanning the codeverse", "telescope"),
|
|
206
|
+
("⚛️ Splitting atoms of logic", "atom"),
|
|
207
|
+
("🌌 Exploring the galaxy", "galaxy"),
|
|
208
|
+
("🛸 Beaming down answers", "ufo"),
|
|
209
|
+
# Magic & fantasy
|
|
210
|
+
("🪄 Casting a spell", "magic"),
|
|
211
|
+
("🔮 Consulting the crystal ball", "crystal"),
|
|
212
|
+
("✨ Sprinkling some magic", "sparkle"),
|
|
213
|
+
("🧙 Wizarding up a solution", "wizard"),
|
|
214
|
+
("🦄 Summoning unicorn power", "unicorn"),
|
|
215
|
+
("🐉 Awakening the code dragon", "dragon"),
|
|
216
|
+
# Tech & coding
|
|
217
|
+
("💻 Compiling thoughts", "computer"),
|
|
218
|
+
("🔧 Tightening the bolts", "wrench"),
|
|
219
|
+
("⚡ Supercharging neurons", "lightning"),
|
|
220
|
+
("🔥 Firing up the engines", "fire"),
|
|
221
|
+
("💡 Light bulb moment incoming", "bulb"),
|
|
222
|
+
("🎯 Locking onto target", "target"),
|
|
223
|
+
# Nature & animals
|
|
224
|
+
("🐝 Busy as a bee", "bee"),
|
|
225
|
+
("🦊 Being clever like a fox", "fox"),
|
|
226
|
+
("🐙 Multitasking like an octopus", "octopus"),
|
|
227
|
+
("🦅 Eagle-eye analyzing", "eagle"),
|
|
228
|
+
("🐢 Slow and steady wins", "turtle"),
|
|
229
|
+
# Sports & action
|
|
230
|
+
("🏃 Sprinting to the finish", "runner"),
|
|
231
|
+
("🎳 Bowling a strike", "bowling"),
|
|
232
|
+
("🏄 Riding the code wave", "surf"),
|
|
233
|
+
("⛷️ Skiing through logic", "ski"),
|
|
234
|
+
("🎿 Slaloming past bugs", "slalom"),
|
|
235
|
+
# Building & crafting
|
|
236
|
+
("🏗️ Constructing the answer", "construction"),
|
|
237
|
+
("🧱 Building brick by brick", "bricks"),
|
|
238
|
+
("🪚 Carving out a solution", "saw"),
|
|
239
|
+
("🎨 Masterpiece in progress", "palette"),
|
|
240
|
+
("📐 Measuring twice, coding once", "ruler"),
|
|
241
|
+
# Celebration vibes
|
|
242
|
+
("🎉 Party in the processor", "party"),
|
|
243
|
+
("🎊 Confetti of creativity", "confetti"),
|
|
244
|
+
("🥳 Getting excited about this", "celebrate"),
|
|
245
|
+
("💃 Dancing through the code", "dance"),
|
|
246
|
+
("🕺 Grooving to the algorithm", "groove"),
|
|
247
|
+
]
|
|
248
|
+
|
|
249
|
+
# Commands for autocompletion - ordered by priority (most common first)
|
|
250
|
+
COMMANDS = [
|
|
251
|
+
":help",
|
|
252
|
+
":clear",
|
|
253
|
+
":exit",
|
|
254
|
+
":quit",
|
|
255
|
+
":dev fullstack",
|
|
256
|
+
":dev frontend",
|
|
257
|
+
":dev backend",
|
|
258
|
+
":qe fullstack",
|
|
259
|
+
":qe unit_tester",
|
|
260
|
+
":qe api_tester",
|
|
261
|
+
":devops fullstack",
|
|
262
|
+
":devops cicd_engineer",
|
|
263
|
+
":agents connect",
|
|
264
|
+
":agents connect opencode",
|
|
265
|
+
":agents list",
|
|
266
|
+
":agents install",
|
|
267
|
+
":agents model",
|
|
268
|
+
":providers list",
|
|
269
|
+
":providers use",
|
|
270
|
+
":providers show",
|
|
271
|
+
":roles",
|
|
272
|
+
":team",
|
|
273
|
+
":handoff",
|
|
274
|
+
":context",
|
|
275
|
+
":disconnect",
|
|
276
|
+
":files",
|
|
277
|
+
":find",
|
|
278
|
+
":sidebar",
|
|
279
|
+
":toggle_thinking",
|
|
280
|
+
":home",
|
|
281
|
+
# Init command
|
|
282
|
+
":init",
|
|
283
|
+
# Coding agent commands
|
|
284
|
+
":approve",
|
|
285
|
+
":approve all",
|
|
286
|
+
":reject",
|
|
287
|
+
":reject all",
|
|
288
|
+
":diff",
|
|
289
|
+
":diff split",
|
|
290
|
+
":diff unified",
|
|
291
|
+
":plan",
|
|
292
|
+
":plan clear",
|
|
293
|
+
":undo",
|
|
294
|
+
":history",
|
|
295
|
+
":history clear",
|
|
296
|
+
# File viewer commands
|
|
297
|
+
":view",
|
|
298
|
+
":view info",
|
|
299
|
+
":search",
|
|
300
|
+
# Copy/Open commands
|
|
301
|
+
":copy",
|
|
302
|
+
":open",
|
|
303
|
+
# MCP commands
|
|
304
|
+
":mcp list",
|
|
305
|
+
":mcp status",
|
|
306
|
+
":mcp tools",
|
|
307
|
+
":mcp connect",
|
|
308
|
+
":mcp disconnect",
|
|
309
|
+
# Approval mode commands
|
|
310
|
+
":mode auto",
|
|
311
|
+
":mode ask",
|
|
312
|
+
":mode deny",
|
|
313
|
+
":mode",
|
|
314
|
+
]
|
superqode/app/css.py
ADDED
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SuperQode App CSS Styles.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
APP_CSS = """
|
|
6
|
+
Screen { background: #000000; }
|
|
7
|
+
|
|
8
|
+
#main-grid { height: 100%; layout: horizontal; }
|
|
9
|
+
|
|
10
|
+
/* Sidebar - hidden by default */
|
|
11
|
+
#sidebar {
|
|
12
|
+
width: 80;
|
|
13
|
+
background: #000000;
|
|
14
|
+
border-right: tall #1a1a1a;
|
|
15
|
+
display: none;
|
|
16
|
+
}
|
|
17
|
+
#sidebar.visible {
|
|
18
|
+
display: block;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Compact sidebar (tree only) */
|
|
22
|
+
#compact-sidebar {
|
|
23
|
+
width: 32;
|
|
24
|
+
background: #000000;
|
|
25
|
+
border-right: tall #1a1a1a;
|
|
26
|
+
display: none;
|
|
27
|
+
padding: 1;
|
|
28
|
+
}
|
|
29
|
+
#compact-sidebar.visible { display: block; }
|
|
30
|
+
#sidebar-title { text-align: center; color: #a855f7; text-style: bold; margin-bottom: 1; }
|
|
31
|
+
#sidebar-tree { height: 1fr; background: #000000; }
|
|
32
|
+
|
|
33
|
+
/* Collapsible Sidebar (new) */
|
|
34
|
+
CollapsibleSidebar {
|
|
35
|
+
width: 100%;
|
|
36
|
+
height: 100%;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
CollapsibleSidebar #file-search.-hidden {
|
|
40
|
+
display: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
CollapsibleSidebar Collapsible {
|
|
44
|
+
border: none;
|
|
45
|
+
background: #000000;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
CollapsibleSidebar CollapsibleTitle {
|
|
49
|
+
background: #0a0a0a;
|
|
50
|
+
padding: 0 1;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
CollapsibleSidebar CollapsibleTitle:hover {
|
|
54
|
+
background: #1a1a1a;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Main content - Warp style layout */
|
|
58
|
+
#content { width: 1fr; layout: vertical; }
|
|
59
|
+
|
|
60
|
+
/* Status bar - ALWAYS visible at top, never hidden */
|
|
61
|
+
#status-bar { height: 2; min-height: 2; background: #0a0a0a; padding: 0 1; border-bottom: solid #27272a; }
|
|
62
|
+
|
|
63
|
+
/* Scanning line - shown at TOP when agent is thinking */
|
|
64
|
+
#thinking-wave { height: 1; width: 100%; margin: 0; padding: 0; display: none; }
|
|
65
|
+
#thinking-wave.visible { display: block; }
|
|
66
|
+
|
|
67
|
+
/* Scanning line - shown at BOTTOM when agent is thinking */
|
|
68
|
+
#thinking-wave-bottom { height: 1; width: 100%; margin: 0; padding: 0; display: none; }
|
|
69
|
+
#thinking-wave-bottom.visible { display: block; }
|
|
70
|
+
|
|
71
|
+
/* Conversation - main response area (expandable) - FULL WIDTH */
|
|
72
|
+
#conversation {
|
|
73
|
+
height: 1fr;
|
|
74
|
+
margin: 0;
|
|
75
|
+
background: #000000;
|
|
76
|
+
border: round #1a1a1a;
|
|
77
|
+
padding: 0 1;
|
|
78
|
+
overflow-x: hidden;
|
|
79
|
+
width: 100%;
|
|
80
|
+
}
|
|
81
|
+
#log {
|
|
82
|
+
height: 100%;
|
|
83
|
+
background: #000000;
|
|
84
|
+
color: #e4e4e7;
|
|
85
|
+
overflow-x: hidden;
|
|
86
|
+
overflow-y: auto;
|
|
87
|
+
width: 100%;
|
|
88
|
+
}
|
|
89
|
+
ConversationLog {
|
|
90
|
+
background: #000000;
|
|
91
|
+
width: 100%;
|
|
92
|
+
padding: 0;
|
|
93
|
+
margin: 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Prompt area - at TOP (below SuperQode logo), hidden when agent is thinking */
|
|
97
|
+
#prompt-area { height: auto; padding: 0 1; background: #000000; margin-top: 0; border-bottom: solid #1a1a1a; }
|
|
98
|
+
#prompt-area.hidden { display: none; }
|
|
99
|
+
#mode-badge { height: auto; text-align: center; margin-bottom: 0; }
|
|
100
|
+
#input-box { height: 3; background: #000000; border: tall #1a1a1a; margin: 0 4; margin-top: 1; }
|
|
101
|
+
#input-box:focus-within { border: tall #a855f7; }
|
|
102
|
+
#prompt-symbol { width: 3; color: #ec4899; text-style: bold; padding: 0 1; }
|
|
103
|
+
#prompt-input { background: transparent; border: none; }
|
|
104
|
+
#hints { text-align: center; color: #52525b; height: 1; margin-top: 1; padding: 0; }
|
|
105
|
+
|
|
106
|
+
/* Streaming thinking indicator with changing text - shown when agent is thinking */
|
|
107
|
+
#streaming-thinking { height: auto; text-align: left; padding: 0 2; margin-bottom: 1; display: none; }
|
|
108
|
+
#streaming-thinking.visible { display: block; }
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
/* Enhanced sidebar styles */
|
|
112
|
+
EnhancedSidebar {
|
|
113
|
+
width: 100%;
|
|
114
|
+
height: 100%;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
ColorfulDirectoryTree {
|
|
118
|
+
background: #000000;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
ColorfulDirectoryTree > .tree--guides {
|
|
122
|
+
color: #1a1a1a;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
ColorfulDirectoryTree > .tree--cursor {
|
|
126
|
+
background: #3f3f46;
|
|
127
|
+
color: #ec4899;
|
|
128
|
+
text-style: bold;
|
|
129
|
+
border-left: tall #a855f7;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
ColorfulDirectoryTree:focus > .tree--cursor {
|
|
133
|
+
background: #52525b;
|
|
134
|
+
color: #ec4899;
|
|
135
|
+
text-style: bold;
|
|
136
|
+
border-left: tall #a855f7;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* Resizable Sidebar Divider */
|
|
140
|
+
#sidebar-divider {
|
|
141
|
+
width: 1;
|
|
142
|
+
height: 100%;
|
|
143
|
+
background: #1a1a1a;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
#sidebar-divider:hover {
|
|
147
|
+
background: #7c3aed;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
#sidebar-divider.dragging {
|
|
151
|
+
background: #a855f7;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
#sidebar-divider.-hidden {
|
|
155
|
+
display: none;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* Panel Styles */
|
|
159
|
+
.panel-header {
|
|
160
|
+
height: 2;
|
|
161
|
+
background: #0a0a0a;
|
|
162
|
+
border-bottom: solid #1a1a1a;
|
|
163
|
+
padding: 0 1;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.panel-content {
|
|
167
|
+
height: 1fr;
|
|
168
|
+
background: #000000;
|
|
169
|
+
padding: 1;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.panel-footer {
|
|
173
|
+
height: 2;
|
|
174
|
+
background: #0a0a0a;
|
|
175
|
+
border-top: solid #1a1a1a;
|
|
176
|
+
padding: 0 1;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.panel-item {
|
|
180
|
+
height: auto;
|
|
181
|
+
padding: 0 1;
|
|
182
|
+
margin-bottom: 1;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.panel-item:hover {
|
|
186
|
+
background: #0a0a0a;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.panel-item.selected {
|
|
190
|
+
background: #7c3aed20;
|
|
191
|
+
border-left: solid #7c3aed;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* Agent Panel */
|
|
195
|
+
AgentPanel {
|
|
196
|
+
height: 100%;
|
|
197
|
+
background: #000000;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
AgentPanel .stat-row {
|
|
201
|
+
height: 1;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
AgentPanel .stat-label {
|
|
205
|
+
width: 12;
|
|
206
|
+
color: #71717a;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
AgentPanel .stat-value {
|
|
210
|
+
width: 1fr;
|
|
211
|
+
color: #e4e4e7;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/* Context Panel */
|
|
215
|
+
ContextPanel {
|
|
216
|
+
height: 100%;
|
|
217
|
+
background: #000000;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
ContextPanel .context-file {
|
|
221
|
+
height: 2;
|
|
222
|
+
padding: 0 1;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
ContextPanel .context-file:hover {
|
|
226
|
+
background: #0a0a0a;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/* Terminal Panel */
|
|
230
|
+
TerminalPanel {
|
|
231
|
+
height: 100%;
|
|
232
|
+
background: #000000;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
TerminalPanel #terminal-output {
|
|
236
|
+
height: 1fr;
|
|
237
|
+
background: #0c0c0c;
|
|
238
|
+
padding: 1;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
TerminalPanel #terminal-input Input {
|
|
242
|
+
width: 100%;
|
|
243
|
+
background: #0a0a0a;
|
|
244
|
+
border: solid #1a1a1a;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
TerminalPanel #terminal-input Input:focus {
|
|
248
|
+
border: solid #7c3aed;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* Diff Panel */
|
|
252
|
+
DiffPanel {
|
|
253
|
+
height: 100%;
|
|
254
|
+
background: #000000;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
DiffPanel .diff-file {
|
|
258
|
+
height: 2;
|
|
259
|
+
padding: 0 1;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
DiffPanel .diff-file:hover {
|
|
263
|
+
background: #0a0a0a;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
DiffPanel .diff-file.selected {
|
|
267
|
+
background: #7c3aed20;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/* History Panel */
|
|
271
|
+
HistoryPanel {
|
|
272
|
+
height: 100%;
|
|
273
|
+
background: #000000;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
HistoryPanel .history-message {
|
|
277
|
+
height: auto;
|
|
278
|
+
padding: 1;
|
|
279
|
+
border-bottom: solid #0a0a0a;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
HistoryPanel .history-message:hover {
|
|
283
|
+
background: #0a0a0a;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/* Sidebar Tab Bar - Compact */
|
|
287
|
+
SidebarTabs {
|
|
288
|
+
height: 2;
|
|
289
|
+
width: 100%;
|
|
290
|
+
background: #000000;
|
|
291
|
+
border-bottom: solid #1a1a1a;
|
|
292
|
+
overflow-x: auto;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
SidebarTabs .tab {
|
|
296
|
+
width: auto;
|
|
297
|
+
min-width: 3;
|
|
298
|
+
height: 100%;
|
|
299
|
+
content-align: center middle;
|
|
300
|
+
text-align: center;
|
|
301
|
+
background: #000000;
|
|
302
|
+
padding: 0 1;
|
|
303
|
+
margin: 0 1;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/* Colorful icons - each tab has its own color */
|
|
307
|
+
SidebarTabs #tab-files {
|
|
308
|
+
color: #3b82f6;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
SidebarTabs #tab-code {
|
|
312
|
+
color: #8b5cf6;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
SidebarTabs #tab-changes {
|
|
316
|
+
color: #10b981;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
SidebarTabs #tab-search {
|
|
320
|
+
color: #f59e0b;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
SidebarTabs #tab-agent {
|
|
324
|
+
color: #ec4899;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
SidebarTabs #tab-context {
|
|
328
|
+
color: #06b6d4;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
SidebarTabs #tab-diff {
|
|
332
|
+
color: #14b8a6;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
SidebarTabs #tab-history {
|
|
336
|
+
color: #a855f7;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
SidebarTabs #tab-qe {
|
|
340
|
+
color: #f59e0b;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
SidebarTabs .tab:hover {
|
|
344
|
+
text-style: bold;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
SidebarTabs .tab.active {
|
|
348
|
+
background: #27272a;
|
|
349
|
+
border-bottom: tall #a855f7;
|
|
350
|
+
text-style: bold;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
/* Hidden view class for panel switching */
|
|
355
|
+
#files-view.-hidden,
|
|
356
|
+
#code-view.-hidden,
|
|
357
|
+
#changes-view.-hidden,
|
|
358
|
+
#search-view.-hidden,
|
|
359
|
+
#agent-view.-hidden,
|
|
360
|
+
#context-view.-hidden,
|
|
361
|
+
#terminal-view.-hidden,
|
|
362
|
+
#diff-view.-hidden,
|
|
363
|
+
#history-view.-hidden {
|
|
364
|
+
display: none;
|
|
365
|
+
}
|
|
366
|
+
"""
|