superqode 0.1.5__tar.gz → 0.1.7__tar.gz

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 (305) hide show
  1. {superqode-0.1.5/src/superqode.egg-info → superqode-0.1.7}/PKG-INFO +14 -8
  2. {superqode-0.1.5 → superqode-0.1.7}/README.md +13 -7
  3. {superqode-0.1.5 → superqode-0.1.7}/pyproject.toml +1 -1
  4. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/__init__.py +1 -1
  5. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp_discovery.py +4 -3
  6. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/acp_registry.py +1 -1
  7. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/messaging.py +2 -0
  8. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/registry.py +1 -1
  9. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app_main.py +23 -12
  10. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/main.py +2 -2
  11. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/mlx.py +31 -1
  12. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/registry.py +2 -0
  13. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/provider_connect.py +46 -3
  14. {superqode-0.1.5 → superqode-0.1.7/src/superqode.egg-info}/PKG-INFO +14 -8
  15. {superqode-0.1.5 → superqode-0.1.7}/LICENSE +0 -0
  16. {superqode-0.1.5 → superqode-0.1.7}/setup.cfg +0 -0
  17. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp/__init__.py +0 -0
  18. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp/client.py +0 -0
  19. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp/permission_screen.py +0 -0
  20. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp/types.py +0 -0
  21. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/__init__.py +0 -0
  22. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/edit_strategies.py +0 -0
  23. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/loop.py +0 -0
  24. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/qe_report_templates.py +0 -0
  25. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/system_prompts.py +0 -0
  26. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent_output.py +0 -0
  27. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent_stream.py +0 -0
  28. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/__init__.py +0 -0
  29. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/client.py +0 -0
  30. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/augmentcode.com.toml +0 -0
  31. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/cagent.dev.toml +0 -0
  32. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/claude.com.toml +0 -0
  33. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
  34. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/codex.openai.com.toml +0 -0
  35. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/fastagent.ai.toml +0 -0
  36. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/geminicli.com.toml +0 -0
  37. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
  38. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
  39. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
  40. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
  41. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/molt.bot.toml +0 -0
  42. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/opencode.ai.toml +0 -0
  43. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/stakpak.dev.toml +0 -0
  44. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/vtcode.dev.toml +0 -0
  45. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/discovery.py +0 -0
  46. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/persona.py +0 -0
  47. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/schema.py +0 -0
  48. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/unified.py +0 -0
  49. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/__init__.py +0 -0
  50. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/constants.py +0 -0
  51. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/css.py +0 -0
  52. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/models.py +0 -0
  53. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/suggester.py +0 -0
  54. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/widgets.py +0 -0
  55. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app_enhanced.py +0 -0
  56. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/approval.py +0 -0
  57. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/atomic.py +0 -0
  58. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/__init__.py +0 -0
  59. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/acp.py +0 -0
  60. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/agents.py +0 -0
  61. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/auth.py +0 -0
  62. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/config.py +0 -0
  63. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/init.py +0 -0
  64. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/providers.py +0 -0
  65. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/qe.py +0 -0
  66. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/roles.py +0 -0
  67. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/serve.py +0 -0
  68. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/suggestions.py +0 -0
  69. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/superqe.py +0 -0
  70. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/config/__init__.py +0 -0
  71. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/config/loader.py +0 -0
  72. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/config/schema.py +0 -0
  73. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/core/__init__.py +0 -0
  74. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/core/roles.py +0 -0
  75. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/danger.py +0 -0
  76. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/data/superqode-template.yaml +0 -0
  77. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/design_system.py +0 -0
  78. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/dialogs/__init__.py +0 -0
  79. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/dialogs/base.py +0 -0
  80. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/dialogs/model.py +0 -0
  81. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/dialogs/provider.py +0 -0
  82. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/diff_view.py +0 -0
  83. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/enterprise.py +0 -0
  84. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/__init__.py +0 -0
  85. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/adapters.py +0 -0
  86. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/behaviors.py +0 -0
  87. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/engine.py +0 -0
  88. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/scenarios.py +0 -0
  89. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/__init__.py +0 -0
  90. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/linter.py +0 -0
  91. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/modes.py +0 -0
  92. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/resolver.py +0 -0
  93. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/runner.py +0 -0
  94. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/file_explorer.py +0 -0
  95. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/file_viewer.py +0 -0
  96. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/flash.py +0 -0
  97. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/guidance/__init__.py +0 -0
  98. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/guidance/config.py +0 -0
  99. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/guidance/prompts.py +0 -0
  100. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/harness/__init__.py +0 -0
  101. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/harness/accelerator.py +0 -0
  102. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/harness/config.py +0 -0
  103. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/harness/validator.py +0 -0
  104. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/history.py +0 -0
  105. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/integrations/superopt_runner.py +0 -0
  106. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/__init__.py +0 -0
  107. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/adapters.py +0 -0
  108. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/formatter.py +0 -0
  109. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/integration.py +0 -0
  110. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/sinks.py +0 -0
  111. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/unified_log.py +0 -0
  112. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/lsp/__init__.py +0 -0
  113. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/lsp/client.py +0 -0
  114. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/__init__.py +0 -0
  115. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/auth_storage.py +0 -0
  116. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/client.py +0 -0
  117. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/config.py +0 -0
  118. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/integration.py +0 -0
  119. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/oauth.py +0 -0
  120. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/oauth_callback.py +0 -0
  121. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/types.py +0 -0
  122. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/memory/__init__.py +0 -0
  123. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/memory/feedback.py +0 -0
  124. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/memory/store.py +0 -0
  125. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/notifications.py +0 -0
  126. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/optimization/__init__.py +0 -0
  127. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/optimization/config.py +0 -0
  128. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/permissions/__init__.py +0 -0
  129. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/permissions/rules.py +0 -0
  130. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/plan.py +0 -0
  131. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/__init__.py +0 -0
  132. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/gateway/__init__.py +0 -0
  133. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/gateway/base.py +0 -0
  134. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/gateway/litellm_gateway.py +0 -0
  135. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
  136. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/health.py +0 -0
  137. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/__init__.py +0 -0
  138. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/downloader.py +0 -0
  139. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/endpoints.py +0 -0
  140. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/hub.py +0 -0
  141. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/inference.py +0 -0
  142. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
  143. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/__init__.py +0 -0
  144. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/base.py +0 -0
  145. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/discovery.py +0 -0
  146. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/lmstudio.py +0 -0
  147. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/ollama.py +0 -0
  148. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/sglang.py +0 -0
  149. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/tgi.py +0 -0
  150. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/tool_support.py +0 -0
  151. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/vllm.py +0 -0
  152. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/manager.py +0 -0
  153. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/models.py +0 -0
  154. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/models_dev.py +0 -0
  155. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/__init__.py +0 -0
  156. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
  157. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/converters/messages.py +0 -0
  158. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/converters/tools.py +0 -0
  159. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
  160. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/schema/models.py +0 -0
  161. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
  162. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
  163. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
  164. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
  165. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
  166. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
  167. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
  168. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/usage.py +0 -0
  169. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/pure_mode.py +0 -0
  170. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/qr/__init__.py +0 -0
  171. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/qr/dashboard.py +0 -0
  172. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/qr/generator.py +0 -0
  173. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/qr/templates.py +0 -0
  174. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/safety/__init__.py +0 -0
  175. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/safety/sandbox.py +0 -0
  176. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/safety/warnings.py +0 -0
  177. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/server/__init__.py +0 -0
  178. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/server/lsp_server.py +0 -0
  179. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/server/web.py +0 -0
  180. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/session/__init__.py +0 -0
  181. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/session/persistence.py +0 -0
  182. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/session/sharing.py +0 -0
  183. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/session.py +0 -0
  184. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/sidebar.py +0 -0
  185. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/stream_view.py +0 -0
  186. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/styles/__init__.py +0 -0
  187. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/__init__.py +0 -0
  188. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/acp_runner.py +0 -0
  189. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/constitution/__init__.py +0 -0
  190. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/constitution/evaluator.py +0 -0
  191. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/constitution/loader.py +0 -0
  192. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/constitution/schema.py +0 -0
  193. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/events.py +0 -0
  194. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/__init__.py +0 -0
  195. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/base.py +0 -0
  196. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/e2e.py +0 -0
  197. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/executor.py +0 -0
  198. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/javascript.py +0 -0
  199. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/python.py +0 -0
  200. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/registry.py +0 -0
  201. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/mcp_tools/__init__.py +0 -0
  202. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/mcp_tools/core_tools.py +0 -0
  203. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/mcp_tools/registry.py +0 -0
  204. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/mcp_tools/testing_tools.py +0 -0
  205. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/noise.py +0 -0
  206. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/orchestrator.py +0 -0
  207. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/roles.py +0 -0
  208. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/session.py +0 -0
  209. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/skills/__init__.py +0 -0
  210. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/skills/base.py +0 -0
  211. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/skills/core_skills.py +0 -0
  212. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/skills/registry.py +0 -0
  213. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/verifier.py +0 -0
  214. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe_cli.py +0 -0
  215. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tool_call.py +0 -0
  216. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/__init__.py +0 -0
  217. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/agent_tools.py +0 -0
  218. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/base.py +0 -0
  219. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/batch_tool.py +0 -0
  220. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/diagnostics.py +0 -0
  221. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/edit_tools.py +0 -0
  222. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/enhanced_base.py +0 -0
  223. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/file_tools.py +0 -0
  224. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/file_tracking.py +0 -0
  225. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/lsp_tools.py +0 -0
  226. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/network_tools.py +0 -0
  227. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/permissions.py +0 -0
  228. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/question_tool.py +0 -0
  229. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/search_tools.py +0 -0
  230. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/shell_tools.py +0 -0
  231. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/todo_tools.py +0 -0
  232. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/validation.py +0 -0
  233. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/web_tools.py +0 -0
  234. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui.py +0 -0
  235. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_integration.py +0 -0
  236. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_widgets/__init__.py +0 -0
  237. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
  238. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_widgets/widgets/progress.py +0 -0
  239. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
  240. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/undo_manager.py +0 -0
  241. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/utils/__init__.py +0 -0
  242. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/utils/error_handling.py +0 -0
  243. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/utils/fuzzy.py +0 -0
  244. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/__init__.py +0 -0
  245. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/agent_collab.py +0 -0
  246. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/agent_store.py +0 -0
  247. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/agent_switcher.py +0 -0
  248. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/animation_manager.py +0 -0
  249. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/code_context.py +0 -0
  250. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/command_palette.py +0 -0
  251. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/connection_status.py +0 -0
  252. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/conversation_history.py +0 -0
  253. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/diff_indicator.py +0 -0
  254. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/enhanced_status_bar.py +0 -0
  255. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/enhanced_toast.py +0 -0
  256. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/file_browser.py +0 -0
  257. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/file_reference.py +0 -0
  258. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/issue_timeline.py +0 -0
  259. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/leader_key.py +0 -0
  260. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/mode_switcher.py +0 -0
  261. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/model_picker.py +0 -0
  262. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/permission_preview.py +0 -0
  263. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/prompt.py +0 -0
  264. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/pty_shell.py +0 -0
  265. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/qe_dashboard.py +0 -0
  266. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/resizable_sidebar.py +0 -0
  267. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/response_changes.py +0 -0
  268. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/response_display.py +0 -0
  269. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/rich_tool_display.py +0 -0
  270. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/sidebar_panels.py +0 -0
  271. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/slash_complete.py +0 -0
  272. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/split_view.py +0 -0
  273. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/status_bar.py +0 -0
  274. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/superqode_display.py +0 -0
  275. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/thinking_display.py +0 -0
  276. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/throbber.py +0 -0
  277. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/toast.py +0 -0
  278. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/unified_output.py +0 -0
  279. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/__init__.py +0 -0
  280. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/artifacts.py +0 -0
  281. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/coordinator.py +0 -0
  282. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/diff_tracker.py +0 -0
  283. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/git_guard.py +0 -0
  284. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/git_snapshot.py +0 -0
  285. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/manager.py +0 -0
  286. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/snapshot.py +0 -0
  287. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/watcher.py +0 -0
  288. {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/worktree.py +0 -0
  289. {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/SOURCES.txt +0 -0
  290. {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/dependency_links.txt +0 -0
  291. {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/entry_points.txt +0 -0
  292. {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/requires.txt +0 -0
  293. {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/top_level.txt +0 -0
  294. {superqode-0.1.5 → superqode-0.1.7}/tests/test_acp_client.py +0 -0
  295. {superqode-0.1.5 → superqode-0.1.7}/tests/test_cli_commands.py +0 -0
  296. {superqode-0.1.5 → superqode-0.1.7}/tests/test_linter_runner.py +0 -0
  297. {superqode-0.1.5 → superqode-0.1.7}/tests/test_login_api.py +0 -0
  298. {superqode-0.1.5 → superqode-0.1.7}/tests/test_mcp.py +0 -0
  299. {superqode-0.1.5 → superqode-0.1.7}/tests/test_mcp_integration.py +0 -0
  300. {superqode-0.1.5 → superqode-0.1.7}/tests/test_mcp_live.py +0 -0
  301. {superqode-0.1.5 → superqode-0.1.7}/tests/test_orchestrator.py +0 -0
  302. {superqode-0.1.5 → superqode-0.1.7}/tests/test_oss_integration.py +0 -0
  303. {superqode-0.1.5 → superqode-0.1.7}/tests/test_simple_login.py +0 -0
  304. {superqode-0.1.5 → superqode-0.1.7}/tests/test_tools.py +0 -0
  305. {superqode-0.1.5 → superqode-0.1.7}/tests/test_workspace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superqode
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: SuperQode: Super Quality Engineering for Agentic Coding Teams
5
5
  Author-email: Shashi Jagtap <info@super-agentic.ai>
6
6
  Maintainer-email: Shashi Jagtap <info@super-agentic.ai>
@@ -69,9 +69,8 @@ Requires-Dist: mkdocs-minify-plugin>=0.7.0; extra == "docs"
69
69
  Dynamic: license-file
70
70
 
71
71
  <p align="center">
72
- <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/super-qode-header.png" alt="SuperQode Banner">
72
+ <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/superqode.png" alt="SuperQode TUI">
73
73
  </p>
74
-
75
74
  <p align="center">
76
75
  <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/superqode-logo.png" alt="SuperQode Logo" width="200">
77
76
  </p>
@@ -106,6 +105,8 @@ Dynamic: license-file
106
105
 
107
106
  ---
108
107
 
108
+
109
+
109
110
  ## What is SuperQode and SuperQE?
110
111
 
111
112
  **SuperQE** is the quality paradigm and automation CLI: Super Quality Engineering for Agentic AI. It uses QE coding agents to break and validate code written by coding agents. SuperQE can spawn a team of QE agents with different testing personas in a multi-agent setup to stress your code from many angles.
@@ -114,6 +115,14 @@ Dynamic: license-file
114
115
 
115
116
  **Note (Enterprise):** Enterprise adds powerful automation, deep evaluation testing, and enterprise integrations (Moltbot first; more bot integrations coming).
116
117
 
118
+ ## Demo Video
119
+
120
+ Watch the demo: [SuperQode Demo](https://www.youtube.com/watch?v=x2V323HgXRk)
121
+
122
+ <p align="center">
123
+ <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/super-qode-header.png" alt="SuperQode Banner">
124
+ </p>
125
+
117
126
  ## Quick Start
118
127
 
119
128
  ### Installation
@@ -127,7 +136,8 @@ uv tool install superqode
127
136
  pip install superqode
128
137
  ```
129
138
 
130
- **Alternate (No Python Required)**
139
+ **Alternate (No Python Required, SuperQode TUI Only)**
140
+ > Note: SuperQE (CLI) requires the Python install above (uv or pip).
131
141
  ```bash
132
142
  # Using Homebrew (macOS/Linux)
133
143
  brew install SuperagenticAI/superqode/superqode
@@ -144,10 +154,6 @@ cd your-project
144
154
  superqode
145
155
  ```
146
156
 
147
- <p align="center">
148
- <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/superqode.png" alt="SuperQode TUI">
149
- </p>
150
-
151
157
  **Automated QE (CI/CD)**
152
158
  ```bash
153
159
  cd your-project
@@ -1,7 +1,6 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/super-qode-header.png" alt="SuperQode Banner">
2
+ <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/superqode.png" alt="SuperQode TUI">
3
3
  </p>
4
-
5
4
  <p align="center">
6
5
  <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/superqode-logo.png" alt="SuperQode Logo" width="200">
7
6
  </p>
@@ -36,6 +35,8 @@
36
35
 
37
36
  ---
38
37
 
38
+
39
+
39
40
  ## What is SuperQode and SuperQE?
40
41
 
41
42
  **SuperQE** is the quality paradigm and automation CLI: Super Quality Engineering for Agentic AI. It uses QE coding agents to break and validate code written by coding agents. SuperQE can spawn a team of QE agents with different testing personas in a multi-agent setup to stress your code from many angles.
@@ -44,6 +45,14 @@
44
45
 
45
46
  **Note (Enterprise):** Enterprise adds powerful automation, deep evaluation testing, and enterprise integrations (Moltbot first; more bot integrations coming).
46
47
 
48
+ ## Demo Video
49
+
50
+ Watch the demo: [SuperQode Demo](https://www.youtube.com/watch?v=x2V323HgXRk)
51
+
52
+ <p align="center">
53
+ <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/super-qode-header.png" alt="SuperQode Banner">
54
+ </p>
55
+
47
56
  ## Quick Start
48
57
 
49
58
  ### Installation
@@ -57,7 +66,8 @@ uv tool install superqode
57
66
  pip install superqode
58
67
  ```
59
68
 
60
- **Alternate (No Python Required)**
69
+ **Alternate (No Python Required, SuperQode TUI Only)**
70
+ > Note: SuperQE (CLI) requires the Python install above (uv or pip).
61
71
  ```bash
62
72
  # Using Homebrew (macOS/Linux)
63
73
  brew install SuperagenticAI/superqode/superqode
@@ -74,10 +84,6 @@ cd your-project
74
84
  superqode
75
85
  ```
76
86
 
77
- <p align="center">
78
- <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/superqode.png" alt="SuperQode TUI">
79
- </p>
80
-
81
87
  **Automated QE (CI/CD)**
82
88
  ```bash
83
89
  cd your-project
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superqode"
3
- version = "0.1.5"
3
+ version = "0.1.7"
4
4
  description = "SuperQode: Super Quality Engineering for Agentic Coding Teams"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -30,4 +30,4 @@ __all__ = [
30
30
  "sidebar",
31
31
  ]
32
32
 
33
- __version__ = "0.1.5"
33
+ __version__ = "0.1.6"
@@ -365,10 +365,10 @@ KNOWN_AGENTS: List[Dict[str, Any]] = [
365
365
  {
366
366
  "name": "fast-agent",
367
367
  "short_name": "fast-agent",
368
- "command": ["fast-agent", "--acp"],
368
+ "command": ["fast-agent-acp", "-x"],
369
369
  "alt_commands": [
370
- ["fastagent", "--acp"],
371
- ["npx", "-y", "fast-agent", "--acp"],
370
+ ["fast-agent-acp"],
371
+ ["fast-agent", "serve","--transport","acp"],
372
372
  ],
373
373
  "icon": "🚀",
374
374
  "color": "#14b8a6",
@@ -675,6 +675,7 @@ class ACPDiscovery:
675
675
  AgentModel(id="claude-3-5-sonnet", name="Claude 3.5 Sonnet", is_free=True),
676
676
  AgentModel(id="gpt-4o", name="GPT-4o", is_free=True),
677
677
  AgentModel(id="gemini-2.5-pro", name="Gemini 2.5 Pro", is_free=True),
678
+ AgentModel(id="kimi-k2.5-free", name="Kimi K2.5 (Free)", is_free=True),
678
679
  ],
679
680
  # Stakpak
680
681
  "stakpak": [
@@ -243,7 +243,7 @@ ACP_AGENTS_REGISTRY: dict[str, AgentMetadata] = {
243
243
  "author_name": "fast-agent",
244
244
  "author_url": "https://github.com/evalstate",
245
245
  "description": "Create and interact with sophisticated Agents and Workflows in minutes. MCP native.",
246
- "run_command": "fast-agent --acp",
246
+ "run_command": "fast-agent-acp -x",
247
247
  "status": "available",
248
248
  "installation_command": "uv tool install fast-agent-mcp",
249
249
  "installation_instructions": "Install fast-agent via uv. Native MCP support.",
@@ -15,12 +15,14 @@ def map_model_to_opencode(model_name: str) -> str:
15
15
  model_mapping = {
16
16
  "glm-4.7": "glm-4.7-free",
17
17
  "grok-code": "grok-code",
18
+ "kimi-k2.5": "kimi-k2.5-free",
18
19
  "gpt-5-nano": "gpt-5-nano",
19
20
  "big-pickle": "big-pickle",
20
21
  "minimax-m2.1": "minimax-m2.1-free",
21
22
  # Strip provider prefix if present
22
23
  "opencode/glm-4.7-free": "glm-4.7-free",
23
24
  "opencode/grok-code": "grok-code",
25
+ "opencode/kimi-k2.5-free": "kimi-k2.5-free",
24
26
  "opencode/gpt-5-nano": "gpt-5-nano",
25
27
  "opencode/big-pickle": "big-pickle",
26
28
  "opencode/minimax-m2.1-free": "minimax-m2.1-free",
@@ -232,7 +232,7 @@ AGENTS: Dict[str, AgentDef] = {
232
232
  docs_url="https://github.com/evalstate/fast-agent",
233
233
  capabilities=["Workflows", "MCP native", "Fast setup"],
234
234
  connection_type="stdio",
235
- command="fast-agent --acp",
235
+ command="fast-agent-acp",
236
236
  ),
237
237
  "llmling-agent": AgentDef(
238
238
  id="llmling-agent",
@@ -648,6 +648,7 @@ class SuperQodeApp(App):
648
648
  return [
649
649
  {"id": "glm-4.7-free", "name": "GLM-4.7 (Free)", "context": 8192},
650
650
  {"id": "grok-code", "name": "Grok Code", "context": 4096},
651
+ {"id": "kimi-k2.5-free", "name": "Kimi K2.5 (Free)", "context": 8192},
651
652
  {"id": "gpt-5-nano", "name": "GPT-5 Nano", "context": 4096},
652
653
  {"id": "minimax-m2.1-free", "name": "MiniMax M2.1 (Free)", "context": 4096},
653
654
  {"id": "big-pickle", "name": "Big Pickle", "context": 2048},
@@ -823,6 +824,13 @@ class SuperQodeApp(App):
823
824
  "recommended": True,
824
825
  "desc": "xAI - Fast coding model",
825
826
  },
827
+ {
828
+ "id": "opencode/kimi-k2.5-free",
829
+ "name": "Kimi K2.5",
830
+ "free": True,
831
+ "recommended": True,
832
+ "desc": "Moonshot AI - K2.5 free tier",
833
+ },
826
834
  {
827
835
  "id": "opencode/minimax-m2.1-free",
828
836
  "name": "MiniMax M2.1",
@@ -3552,7 +3560,9 @@ class SuperQodeApp(App):
3552
3560
  log.add_info(
3553
3561
  "⚡ Power QE roles: unit, integration, api, ui, accessibility, security, usability"
3554
3562
  )
3555
- log.add_info("💡 Update each role's job_description in superqode.yaml for best results.")
3563
+ log.add_info(
3564
+ "💡 Update each role's job_description in superqode.yaml for best results."
3565
+ )
3556
3566
  else:
3557
3567
  # Fallback: create basic config if template not found
3558
3568
  default_config = """# =============================================================================
@@ -3703,7 +3713,9 @@ team:
3703
3713
  log.add_info(
3704
3714
  "⚡ Power QE roles: unit, integration, api, ui, accessibility, security, usability"
3705
3715
  )
3706
- log.add_info("💡 Update each role's job_description in superqode.yaml for best results.")
3716
+ log.add_info(
3717
+ "💡 Update each role's job_description in superqode.yaml for best results."
3718
+ )
3707
3719
 
3708
3720
  t = Text()
3709
3721
  t.append("\n Quick start:\n", style=THEME["muted"])
@@ -3995,12 +4007,6 @@ team:
3995
4007
  if self._handle_byok_model_selection(text, log):
3996
4008
  return
3997
4009
 
3998
- # Check if user is asking about the model - intercept and answer directly
3999
- if self._is_model_query(text):
4000
- log.add_user(text)
4001
- self._answer_model_query(log)
4002
- return
4003
-
4004
4010
  # Parse @file references and include file content
4005
4011
  file_context = ""
4006
4012
  if "@" in text:
@@ -4945,7 +4951,7 @@ team:
4945
4951
  command = "cagent --acp"
4946
4952
  model_display = f"cagent/{model}" if model else "cagent/auto"
4947
4953
  elif agent_type == "fast-agent":
4948
- command = "fast-agent --acp"
4954
+ command = "fast-agent-acp -x"
4949
4955
  model_display = f"fast-agent/{model}" if model else "fast-agent/auto"
4950
4956
  elif agent_type == "llmling-agent":
4951
4957
  command = "llmling-agent --acp"
@@ -5204,9 +5210,12 @@ team:
5204
5210
  if getattr(client, "_process", None) is not None:
5205
5211
  self._agent_process = client._process # type: ignore[attr-defined]
5206
5212
 
5207
- # Set model for agents that support it
5208
- if model and agent_type in ("codex", "openhands"):
5209
- await client.set_model(model)
5213
+ # Set model for agents that support ACP model selection
5214
+ if model and agent_type in ("codex", "openhands", "opencode"):
5215
+ model_id = model
5216
+ if agent_type == "opencode" and not model_id.startswith("opencode/"):
5217
+ model_id = f"opencode/{model_id}"
5218
+ await client.set_model(model_id)
5210
5219
 
5211
5220
  prompt_task = asyncio.create_task(client.send_prompt(message))
5212
5221
 
@@ -10071,6 +10080,8 @@ team:
10071
10080
  "glm-4.7": "glm-4.7-free",
10072
10081
  "glm-4.7-free": "glm-4.7-free",
10073
10082
  "grok-code": "grok-code",
10083
+ "kimi-k2.5": "kimi-k2.5-free",
10084
+ "kimi-k2.5-free": "kimi-k2.5-free",
10074
10085
  "minimax-m2.1": "minimax-m2.1-free",
10075
10086
  "minimax-m2.1-free": "minimax-m2.1-free",
10076
10087
  "gpt-5-nano": "gpt-5-nano",
@@ -863,8 +863,8 @@ team:
863
863
  Ensure security, monitoring, and deployment best practices.
864
864
 
865
865
  # =============================================================================
866
- # Available free models: glm-4.7-free, grok-code, gpt-5-nano,
867
- # minimax-m2.1-free, big-pickle
866
+ # Available free models: glm-4.7-free, grok-code, kimi-k2.5-free,
867
+ # gpt-5-nano, minimax-m2.1-free, big-pickle
868
868
  # =============================================================================
869
869
  """
870
870
 
@@ -142,6 +142,36 @@ class MLXClient(LocalProviderClient):
142
142
 
143
143
  return models
144
144
 
145
+ @staticmethod
146
+ def _model_from_cache(model_info: Dict[str, Any], running: bool = False) -> LocalModel:
147
+ """Build a LocalModel from cached HuggingFace model metadata."""
148
+ model_id = model_info["id"]
149
+
150
+ format_note = ""
151
+ if "mlx" in model_id.lower():
152
+ format_note = " (MLX format)"
153
+ elif "4bit" in model_id.lower() or "8bit" in model_id.lower():
154
+ format_note = " (quantized)"
155
+
156
+ return LocalModel(
157
+ id=model_id,
158
+ name=f"{model_id.split('/')[-1]} (cached){format_note}",
159
+ size_bytes=model_info["size_bytes"],
160
+ quantization=detect_quantization(model_id),
161
+ context_window=4096,
162
+ supports_tools=likely_supports_tools(model_id),
163
+ supports_vision=False,
164
+ family=detect_model_family(model_id),
165
+ running=running,
166
+ modified_at=model_info.get("modified"),
167
+ details={
168
+ "cached_path": model_info.get("path"),
169
+ "source": "huggingface_cache",
170
+ "supported_formats": ["MLX", "safetensors"],
171
+ "notes": "Works with mlx_lm.convert and mlx_lm.server",
172
+ },
173
+ )
174
+
145
175
  @staticmethod
146
176
  def _get_directory_size(path: str) -> int:
147
177
  """Get total size of directory in bytes."""
@@ -311,7 +341,7 @@ class MLXClient(LocalProviderClient):
311
341
  async def list_models(self) -> List[LocalModel]:
312
342
  """List available models from MLX server."""
313
343
  try:
314
- response = await self._async_request("GET", "/v1/models")
344
+ response = await self._async_request("GET", "/v1/models", timeout=8.0)
315
345
  models = response.get("data", [])
316
346
 
317
347
  result = []
@@ -433,6 +433,7 @@ PROVIDERS: Dict[str, ProviderDef] = {
433
433
  example_models=[
434
434
  "glm-4.7-free",
435
435
  "grok-code",
436
+ "kimi-k2.5-free",
436
437
  "gpt-5-nano",
437
438
  "minimax-m2.1-free",
438
439
  "big-pickle",
@@ -440,6 +441,7 @@ PROVIDERS: Dict[str, ProviderDef] = {
440
441
  free_models=[
441
442
  "glm-4.7-free",
442
443
  "grok-code",
444
+ "kimi-k2.5-free",
443
445
  "gpt-5-nano",
444
446
  "minimax-m2.1-free",
445
447
  "big-pickle",
@@ -420,7 +420,11 @@ class ProviderConnectWidget(Container):
420
420
  return
421
421
 
422
422
  # Try getting models from the database (includes live models.dev data)
423
- db_models = get_models_for_provider(provider_id)
423
+ # Only use DB models if we did not load local models for local providers.
424
+ if not self._models:
425
+ db_models = get_models_for_provider(provider_id)
426
+ else:
427
+ db_models = {}
424
428
 
425
429
  if db_models:
426
430
  # Store both model IDs and their info
@@ -468,11 +472,50 @@ class ProviderConnectWidget(Container):
468
472
  return
469
473
 
470
474
  client = client_class()
475
+
476
+ if provider_id == "mlx":
477
+ # MLX server can be slow to respond during model load.
478
+ # Try listing models directly before falling back to cache.
479
+ models = []
480
+ try:
481
+ models = await client.list_models()
482
+ except Exception:
483
+ models = []
484
+
485
+ if not models:
486
+ try:
487
+ models = MLXClient.get_available_models()
488
+ except Exception:
489
+ models = []
490
+
491
+ cached = []
492
+ try:
493
+ cache_models = MLXClient.discover_huggingface_models()
494
+ for model_info in cache_models:
495
+ model_id = model_info["id"]
496
+ if any(m.id == model_id for m in models):
497
+ continue
498
+ cached.append(MLXClient._model_from_cache(model_info, running=False))
499
+ except Exception:
500
+ cached = []
501
+
502
+ # Running models first, then cached models
503
+ models = models + cached
504
+ models_sorted = sorted(models, key=lambda m: (not m.running, m.name))
505
+
506
+ self._models = [m.id for m in models_sorted]
507
+ self._local_models = {m.id: m for m in models_sorted}
508
+ self._model_info = {}
509
+ return
510
+
471
511
  if await client.is_available():
472
512
  models = await client.list_models()
473
513
 
474
- self._models = [m.id for m in models]
475
- self._local_models = {m.id: m for m in models}
514
+ # Preserve order while ensuring running models appear first.
515
+ models_sorted = sorted(models, key=lambda m: (not m.running, m.name))
516
+
517
+ self._models = [m.id for m in models_sorted]
518
+ self._local_models = {m.id: m for m in models_sorted}
476
519
  self._model_info = {}
477
520
  else:
478
521
  self._models = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superqode
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: SuperQode: Super Quality Engineering for Agentic Coding Teams
5
5
  Author-email: Shashi Jagtap <info@super-agentic.ai>
6
6
  Maintainer-email: Shashi Jagtap <info@super-agentic.ai>
@@ -69,9 +69,8 @@ Requires-Dist: mkdocs-minify-plugin>=0.7.0; extra == "docs"
69
69
  Dynamic: license-file
70
70
 
71
71
  <p align="center">
72
- <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/super-qode-header.png" alt="SuperQode Banner">
72
+ <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/superqode.png" alt="SuperQode TUI">
73
73
  </p>
74
-
75
74
  <p align="center">
76
75
  <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/superqode-logo.png" alt="SuperQode Logo" width="200">
77
76
  </p>
@@ -106,6 +105,8 @@ Dynamic: license-file
106
105
 
107
106
  ---
108
107
 
108
+
109
+
109
110
  ## What is SuperQode and SuperQE?
110
111
 
111
112
  **SuperQE** is the quality paradigm and automation CLI: Super Quality Engineering for Agentic AI. It uses QE coding agents to break and validate code written by coding agents. SuperQE can spawn a team of QE agents with different testing personas in a multi-agent setup to stress your code from many angles.
@@ -114,6 +115,14 @@ Dynamic: license-file
114
115
 
115
116
  **Note (Enterprise):** Enterprise adds powerful automation, deep evaluation testing, and enterprise integrations (Moltbot first; more bot integrations coming).
116
117
 
118
+ ## Demo Video
119
+
120
+ Watch the demo: [SuperQode Demo](https://www.youtube.com/watch?v=x2V323HgXRk)
121
+
122
+ <p align="center">
123
+ <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/super-qode-header.png" alt="SuperQode Banner">
124
+ </p>
125
+
117
126
  ## Quick Start
118
127
 
119
128
  ### Installation
@@ -127,7 +136,8 @@ uv tool install superqode
127
136
  pip install superqode
128
137
  ```
129
138
 
130
- **Alternate (No Python Required)**
139
+ **Alternate (No Python Required, SuperQode TUI Only)**
140
+ > Note: SuperQE (CLI) requires the Python install above (uv or pip).
131
141
  ```bash
132
142
  # Using Homebrew (macOS/Linux)
133
143
  brew install SuperagenticAI/superqode/superqode
@@ -144,10 +154,6 @@ cd your-project
144
154
  superqode
145
155
  ```
146
156
 
147
- <p align="center">
148
- <img src="https://raw.githubusercontent.com/SuperagenticAI/superqode/main/assets/superqode.png" alt="SuperQode TUI">
149
- </p>
150
-
151
157
  **Automated QE (CI/CD)**
152
158
  ```bash
153
159
  cd your-project
File without changes
File without changes