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.
Files changed (288) hide show
  1. superqode/__init__.py +33 -0
  2. superqode/acp/__init__.py +23 -0
  3. superqode/acp/client.py +913 -0
  4. superqode/acp/permission_screen.py +457 -0
  5. superqode/acp/types.py +480 -0
  6. superqode/acp_discovery.py +856 -0
  7. superqode/agent/__init__.py +22 -0
  8. superqode/agent/edit_strategies.py +334 -0
  9. superqode/agent/loop.py +892 -0
  10. superqode/agent/qe_report_templates.py +39 -0
  11. superqode/agent/system_prompts.py +353 -0
  12. superqode/agent_output.py +721 -0
  13. superqode/agent_stream.py +953 -0
  14. superqode/agents/__init__.py +59 -0
  15. superqode/agents/acp_registry.py +305 -0
  16. superqode/agents/client.py +249 -0
  17. superqode/agents/data/augmentcode.com.toml +51 -0
  18. superqode/agents/data/cagent.dev.toml +51 -0
  19. superqode/agents/data/claude.com.toml +60 -0
  20. superqode/agents/data/codeassistant.dev.toml +51 -0
  21. superqode/agents/data/codex.openai.com.toml +57 -0
  22. superqode/agents/data/fastagent.ai.toml +66 -0
  23. superqode/agents/data/geminicli.com.toml +77 -0
  24. superqode/agents/data/goose.block.xyz.toml +54 -0
  25. superqode/agents/data/junie.jetbrains.com.toml +56 -0
  26. superqode/agents/data/kimi.moonshot.cn.toml +57 -0
  27. superqode/agents/data/llmlingagent.dev.toml +51 -0
  28. superqode/agents/data/molt.bot.toml +49 -0
  29. superqode/agents/data/opencode.ai.toml +60 -0
  30. superqode/agents/data/stakpak.dev.toml +51 -0
  31. superqode/agents/data/vtcode.dev.toml +51 -0
  32. superqode/agents/discovery.py +266 -0
  33. superqode/agents/messaging.py +160 -0
  34. superqode/agents/persona.py +166 -0
  35. superqode/agents/registry.py +421 -0
  36. superqode/agents/schema.py +72 -0
  37. superqode/agents/unified.py +367 -0
  38. superqode/app/__init__.py +111 -0
  39. superqode/app/constants.py +314 -0
  40. superqode/app/css.py +366 -0
  41. superqode/app/models.py +118 -0
  42. superqode/app/suggester.py +125 -0
  43. superqode/app/widgets.py +1591 -0
  44. superqode/app_enhanced.py +399 -0
  45. superqode/app_main.py +17187 -0
  46. superqode/approval.py +312 -0
  47. superqode/atomic.py +296 -0
  48. superqode/commands/__init__.py +1 -0
  49. superqode/commands/acp.py +965 -0
  50. superqode/commands/agents.py +180 -0
  51. superqode/commands/auth.py +278 -0
  52. superqode/commands/config.py +374 -0
  53. superqode/commands/init.py +826 -0
  54. superqode/commands/providers.py +819 -0
  55. superqode/commands/qe.py +1145 -0
  56. superqode/commands/roles.py +380 -0
  57. superqode/commands/serve.py +172 -0
  58. superqode/commands/suggestions.py +127 -0
  59. superqode/commands/superqe.py +460 -0
  60. superqode/config/__init__.py +51 -0
  61. superqode/config/loader.py +812 -0
  62. superqode/config/schema.py +498 -0
  63. superqode/core/__init__.py +111 -0
  64. superqode/core/roles.py +281 -0
  65. superqode/danger.py +386 -0
  66. superqode/data/superqode-template.yaml +1522 -0
  67. superqode/design_system.py +1080 -0
  68. superqode/dialogs/__init__.py +6 -0
  69. superqode/dialogs/base.py +39 -0
  70. superqode/dialogs/model.py +130 -0
  71. superqode/dialogs/provider.py +870 -0
  72. superqode/diff_view.py +919 -0
  73. superqode/enterprise.py +21 -0
  74. superqode/evaluation/__init__.py +25 -0
  75. superqode/evaluation/adapters.py +93 -0
  76. superqode/evaluation/behaviors.py +89 -0
  77. superqode/evaluation/engine.py +209 -0
  78. superqode/evaluation/scenarios.py +96 -0
  79. superqode/execution/__init__.py +36 -0
  80. superqode/execution/linter.py +538 -0
  81. superqode/execution/modes.py +347 -0
  82. superqode/execution/resolver.py +283 -0
  83. superqode/execution/runner.py +642 -0
  84. superqode/file_explorer.py +811 -0
  85. superqode/file_viewer.py +471 -0
  86. superqode/flash.py +183 -0
  87. superqode/guidance/__init__.py +58 -0
  88. superqode/guidance/config.py +203 -0
  89. superqode/guidance/prompts.py +71 -0
  90. superqode/harness/__init__.py +54 -0
  91. superqode/harness/accelerator.py +291 -0
  92. superqode/harness/config.py +319 -0
  93. superqode/harness/validator.py +147 -0
  94. superqode/history.py +279 -0
  95. superqode/integrations/superopt_runner.py +124 -0
  96. superqode/logging/__init__.py +49 -0
  97. superqode/logging/adapters.py +219 -0
  98. superqode/logging/formatter.py +923 -0
  99. superqode/logging/integration.py +341 -0
  100. superqode/logging/sinks.py +170 -0
  101. superqode/logging/unified_log.py +417 -0
  102. superqode/lsp/__init__.py +26 -0
  103. superqode/lsp/client.py +544 -0
  104. superqode/main.py +1069 -0
  105. superqode/mcp/__init__.py +89 -0
  106. superqode/mcp/auth_storage.py +380 -0
  107. superqode/mcp/client.py +1236 -0
  108. superqode/mcp/config.py +319 -0
  109. superqode/mcp/integration.py +337 -0
  110. superqode/mcp/oauth.py +436 -0
  111. superqode/mcp/oauth_callback.py +385 -0
  112. superqode/mcp/types.py +290 -0
  113. superqode/memory/__init__.py +31 -0
  114. superqode/memory/feedback.py +342 -0
  115. superqode/memory/store.py +522 -0
  116. superqode/notifications.py +369 -0
  117. superqode/optimization/__init__.py +5 -0
  118. superqode/optimization/config.py +33 -0
  119. superqode/permissions/__init__.py +25 -0
  120. superqode/permissions/rules.py +488 -0
  121. superqode/plan.py +323 -0
  122. superqode/providers/__init__.py +33 -0
  123. superqode/providers/gateway/__init__.py +165 -0
  124. superqode/providers/gateway/base.py +228 -0
  125. superqode/providers/gateway/litellm_gateway.py +1170 -0
  126. superqode/providers/gateway/openresponses_gateway.py +436 -0
  127. superqode/providers/health.py +297 -0
  128. superqode/providers/huggingface/__init__.py +74 -0
  129. superqode/providers/huggingface/downloader.py +472 -0
  130. superqode/providers/huggingface/endpoints.py +442 -0
  131. superqode/providers/huggingface/hub.py +531 -0
  132. superqode/providers/huggingface/inference.py +394 -0
  133. superqode/providers/huggingface/transformers_runner.py +516 -0
  134. superqode/providers/local/__init__.py +100 -0
  135. superqode/providers/local/base.py +438 -0
  136. superqode/providers/local/discovery.py +418 -0
  137. superqode/providers/local/lmstudio.py +256 -0
  138. superqode/providers/local/mlx.py +457 -0
  139. superqode/providers/local/ollama.py +486 -0
  140. superqode/providers/local/sglang.py +268 -0
  141. superqode/providers/local/tgi.py +260 -0
  142. superqode/providers/local/tool_support.py +477 -0
  143. superqode/providers/local/vllm.py +258 -0
  144. superqode/providers/manager.py +1338 -0
  145. superqode/providers/models.py +1016 -0
  146. superqode/providers/models_dev.py +578 -0
  147. superqode/providers/openresponses/__init__.py +87 -0
  148. superqode/providers/openresponses/converters/__init__.py +17 -0
  149. superqode/providers/openresponses/converters/messages.py +343 -0
  150. superqode/providers/openresponses/converters/tools.py +268 -0
  151. superqode/providers/openresponses/schema/__init__.py +56 -0
  152. superqode/providers/openresponses/schema/models.py +585 -0
  153. superqode/providers/openresponses/streaming/__init__.py +5 -0
  154. superqode/providers/openresponses/streaming/parser.py +338 -0
  155. superqode/providers/openresponses/tools/__init__.py +21 -0
  156. superqode/providers/openresponses/tools/apply_patch.py +352 -0
  157. superqode/providers/openresponses/tools/code_interpreter.py +290 -0
  158. superqode/providers/openresponses/tools/file_search.py +333 -0
  159. superqode/providers/openresponses/tools/mcp_adapter.py +252 -0
  160. superqode/providers/registry.py +716 -0
  161. superqode/providers/usage.py +332 -0
  162. superqode/pure_mode.py +384 -0
  163. superqode/qr/__init__.py +23 -0
  164. superqode/qr/dashboard.py +781 -0
  165. superqode/qr/generator.py +1018 -0
  166. superqode/qr/templates.py +135 -0
  167. superqode/safety/__init__.py +41 -0
  168. superqode/safety/sandbox.py +413 -0
  169. superqode/safety/warnings.py +256 -0
  170. superqode/server/__init__.py +33 -0
  171. superqode/server/lsp_server.py +775 -0
  172. superqode/server/web.py +250 -0
  173. superqode/session/__init__.py +25 -0
  174. superqode/session/persistence.py +580 -0
  175. superqode/session/sharing.py +477 -0
  176. superqode/session.py +475 -0
  177. superqode/sidebar.py +2991 -0
  178. superqode/stream_view.py +648 -0
  179. superqode/styles/__init__.py +3 -0
  180. superqode/superqe/__init__.py +184 -0
  181. superqode/superqe/acp_runner.py +1064 -0
  182. superqode/superqe/constitution/__init__.py +62 -0
  183. superqode/superqe/constitution/evaluator.py +308 -0
  184. superqode/superqe/constitution/loader.py +432 -0
  185. superqode/superqe/constitution/schema.py +250 -0
  186. superqode/superqe/events.py +591 -0
  187. superqode/superqe/frameworks/__init__.py +65 -0
  188. superqode/superqe/frameworks/base.py +234 -0
  189. superqode/superqe/frameworks/e2e.py +263 -0
  190. superqode/superqe/frameworks/executor.py +237 -0
  191. superqode/superqe/frameworks/javascript.py +409 -0
  192. superqode/superqe/frameworks/python.py +373 -0
  193. superqode/superqe/frameworks/registry.py +92 -0
  194. superqode/superqe/mcp_tools/__init__.py +47 -0
  195. superqode/superqe/mcp_tools/core_tools.py +418 -0
  196. superqode/superqe/mcp_tools/registry.py +230 -0
  197. superqode/superqe/mcp_tools/testing_tools.py +167 -0
  198. superqode/superqe/noise.py +89 -0
  199. superqode/superqe/orchestrator.py +778 -0
  200. superqode/superqe/roles.py +609 -0
  201. superqode/superqe/session.py +713 -0
  202. superqode/superqe/skills/__init__.py +57 -0
  203. superqode/superqe/skills/base.py +106 -0
  204. superqode/superqe/skills/core_skills.py +899 -0
  205. superqode/superqe/skills/registry.py +90 -0
  206. superqode/superqe/verifier.py +101 -0
  207. superqode/superqe_cli.py +76 -0
  208. superqode/tool_call.py +358 -0
  209. superqode/tools/__init__.py +93 -0
  210. superqode/tools/agent_tools.py +496 -0
  211. superqode/tools/base.py +324 -0
  212. superqode/tools/batch_tool.py +133 -0
  213. superqode/tools/diagnostics.py +311 -0
  214. superqode/tools/edit_tools.py +653 -0
  215. superqode/tools/enhanced_base.py +515 -0
  216. superqode/tools/file_tools.py +269 -0
  217. superqode/tools/file_tracking.py +45 -0
  218. superqode/tools/lsp_tools.py +610 -0
  219. superqode/tools/network_tools.py +350 -0
  220. superqode/tools/permissions.py +400 -0
  221. superqode/tools/question_tool.py +324 -0
  222. superqode/tools/search_tools.py +598 -0
  223. superqode/tools/shell_tools.py +259 -0
  224. superqode/tools/todo_tools.py +121 -0
  225. superqode/tools/validation.py +80 -0
  226. superqode/tools/web_tools.py +639 -0
  227. superqode/tui.py +1152 -0
  228. superqode/tui_integration.py +875 -0
  229. superqode/tui_widgets/__init__.py +27 -0
  230. superqode/tui_widgets/widgets/__init__.py +18 -0
  231. superqode/tui_widgets/widgets/progress.py +185 -0
  232. superqode/tui_widgets/widgets/tool_display.py +188 -0
  233. superqode/undo_manager.py +574 -0
  234. superqode/utils/__init__.py +5 -0
  235. superqode/utils/error_handling.py +323 -0
  236. superqode/utils/fuzzy.py +257 -0
  237. superqode/widgets/__init__.py +477 -0
  238. superqode/widgets/agent_collab.py +390 -0
  239. superqode/widgets/agent_store.py +936 -0
  240. superqode/widgets/agent_switcher.py +395 -0
  241. superqode/widgets/animation_manager.py +284 -0
  242. superqode/widgets/code_context.py +356 -0
  243. superqode/widgets/command_palette.py +412 -0
  244. superqode/widgets/connection_status.py +537 -0
  245. superqode/widgets/conversation_history.py +470 -0
  246. superqode/widgets/diff_indicator.py +155 -0
  247. superqode/widgets/enhanced_status_bar.py +385 -0
  248. superqode/widgets/enhanced_toast.py +476 -0
  249. superqode/widgets/file_browser.py +809 -0
  250. superqode/widgets/file_reference.py +585 -0
  251. superqode/widgets/issue_timeline.py +340 -0
  252. superqode/widgets/leader_key.py +264 -0
  253. superqode/widgets/mode_switcher.py +445 -0
  254. superqode/widgets/model_picker.py +234 -0
  255. superqode/widgets/permission_preview.py +1205 -0
  256. superqode/widgets/prompt.py +358 -0
  257. superqode/widgets/provider_connect.py +725 -0
  258. superqode/widgets/pty_shell.py +587 -0
  259. superqode/widgets/qe_dashboard.py +321 -0
  260. superqode/widgets/resizable_sidebar.py +377 -0
  261. superqode/widgets/response_changes.py +218 -0
  262. superqode/widgets/response_display.py +528 -0
  263. superqode/widgets/rich_tool_display.py +613 -0
  264. superqode/widgets/sidebar_panels.py +1180 -0
  265. superqode/widgets/slash_complete.py +356 -0
  266. superqode/widgets/split_view.py +612 -0
  267. superqode/widgets/status_bar.py +273 -0
  268. superqode/widgets/superqode_display.py +786 -0
  269. superqode/widgets/thinking_display.py +815 -0
  270. superqode/widgets/throbber.py +87 -0
  271. superqode/widgets/toast.py +206 -0
  272. superqode/widgets/unified_output.py +1073 -0
  273. superqode/workspace/__init__.py +75 -0
  274. superqode/workspace/artifacts.py +472 -0
  275. superqode/workspace/coordinator.py +353 -0
  276. superqode/workspace/diff_tracker.py +429 -0
  277. superqode/workspace/git_guard.py +373 -0
  278. superqode/workspace/git_snapshot.py +526 -0
  279. superqode/workspace/manager.py +750 -0
  280. superqode/workspace/snapshot.py +357 -0
  281. superqode/workspace/watcher.py +535 -0
  282. superqode/workspace/worktree.py +440 -0
  283. superqode-0.1.5.dist-info/METADATA +204 -0
  284. superqode-0.1.5.dist-info/RECORD +288 -0
  285. superqode-0.1.5.dist-info/WHEEL +5 -0
  286. superqode-0.1.5.dist-info/entry_points.txt +3 -0
  287. superqode-0.1.5.dist-info/licenses/LICENSE +648 -0
  288. 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
+ """