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.
- {superqode-0.1.5/src/superqode.egg-info → superqode-0.1.7}/PKG-INFO +14 -8
- {superqode-0.1.5 → superqode-0.1.7}/README.md +13 -7
- {superqode-0.1.5 → superqode-0.1.7}/pyproject.toml +1 -1
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/__init__.py +1 -1
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp_discovery.py +4 -3
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/acp_registry.py +1 -1
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/messaging.py +2 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/registry.py +1 -1
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app_main.py +23 -12
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/main.py +2 -2
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/mlx.py +31 -1
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/registry.py +2 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/provider_connect.py +46 -3
- {superqode-0.1.5 → superqode-0.1.7/src/superqode.egg-info}/PKG-INFO +14 -8
- {superqode-0.1.5 → superqode-0.1.7}/LICENSE +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/setup.cfg +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp/client.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp/permission_screen.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/acp/types.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/edit_strategies.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/loop.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/qe_report_templates.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent/system_prompts.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent_output.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agent_stream.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/client.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/augmentcode.com.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/cagent.dev.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/claude.com.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/codex.openai.com.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/fastagent.ai.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/geminicli.com.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/molt.bot.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/opencode.ai.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/stakpak.dev.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/data/vtcode.dev.toml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/discovery.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/persona.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/schema.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/agents/unified.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/constants.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/css.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/models.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/suggester.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app/widgets.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/app_enhanced.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/approval.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/atomic.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/acp.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/agents.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/auth.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/config.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/init.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/providers.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/qe.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/roles.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/serve.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/suggestions.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/commands/superqe.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/config/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/config/loader.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/config/schema.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/core/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/core/roles.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/danger.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/data/superqode-template.yaml +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/design_system.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/dialogs/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/dialogs/base.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/dialogs/model.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/dialogs/provider.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/diff_view.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/enterprise.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/adapters.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/behaviors.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/engine.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/evaluation/scenarios.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/linter.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/modes.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/resolver.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/execution/runner.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/file_explorer.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/file_viewer.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/flash.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/guidance/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/guidance/config.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/guidance/prompts.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/harness/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/harness/accelerator.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/harness/config.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/harness/validator.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/history.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/integrations/superopt_runner.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/adapters.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/formatter.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/integration.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/sinks.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/logging/unified_log.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/lsp/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/lsp/client.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/auth_storage.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/client.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/config.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/integration.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/oauth.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/oauth_callback.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/mcp/types.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/memory/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/memory/feedback.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/memory/store.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/notifications.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/optimization/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/optimization/config.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/permissions/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/permissions/rules.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/plan.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/gateway/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/gateway/base.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/gateway/litellm_gateway.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/health.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/downloader.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/endpoints.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/hub.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/inference.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/base.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/discovery.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/lmstudio.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/ollama.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/sglang.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/tgi.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/tool_support.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/local/vllm.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/manager.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/models.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/models_dev.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/converters/messages.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/converters/tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/schema/models.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/providers/usage.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/pure_mode.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/qr/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/qr/dashboard.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/qr/generator.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/qr/templates.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/safety/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/safety/sandbox.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/safety/warnings.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/server/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/server/lsp_server.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/server/web.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/session/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/session/persistence.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/session/sharing.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/session.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/sidebar.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/stream_view.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/styles/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/acp_runner.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/constitution/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/constitution/evaluator.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/constitution/loader.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/constitution/schema.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/events.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/base.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/e2e.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/executor.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/javascript.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/python.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/frameworks/registry.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/mcp_tools/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/mcp_tools/core_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/mcp_tools/registry.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/mcp_tools/testing_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/noise.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/orchestrator.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/roles.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/session.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/skills/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/skills/base.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/skills/core_skills.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/skills/registry.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe/verifier.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/superqe_cli.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tool_call.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/agent_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/base.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/batch_tool.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/diagnostics.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/edit_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/enhanced_base.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/file_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/file_tracking.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/lsp_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/network_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/permissions.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/question_tool.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/search_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/shell_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/todo_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/validation.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tools/web_tools.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_integration.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_widgets/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_widgets/widgets/progress.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/undo_manager.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/utils/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/utils/error_handling.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/utils/fuzzy.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/agent_collab.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/agent_store.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/agent_switcher.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/animation_manager.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/code_context.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/command_palette.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/connection_status.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/conversation_history.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/diff_indicator.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/enhanced_status_bar.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/enhanced_toast.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/file_browser.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/file_reference.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/issue_timeline.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/leader_key.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/mode_switcher.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/model_picker.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/permission_preview.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/prompt.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/pty_shell.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/qe_dashboard.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/resizable_sidebar.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/response_changes.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/response_display.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/rich_tool_display.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/sidebar_panels.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/slash_complete.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/split_view.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/status_bar.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/superqode_display.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/thinking_display.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/throbber.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/toast.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/widgets/unified_output.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/__init__.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/artifacts.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/coordinator.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/diff_tracker.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/git_guard.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/git_snapshot.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/manager.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/snapshot.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/watcher.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode/workspace/worktree.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/SOURCES.txt +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/dependency_links.txt +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/entry_points.txt +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/requires.txt +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/src/superqode.egg-info/top_level.txt +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_acp_client.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_cli_commands.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_linter_runner.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_login_api.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_mcp.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_mcp_integration.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_mcp_live.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_orchestrator.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_oss_integration.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_simple_login.py +0 -0
- {superqode-0.1.5 → superqode-0.1.7}/tests/test_tools.py +0 -0
- {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.
|
|
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/
|
|
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/
|
|
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
|
|
@@ -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", "
|
|
368
|
+
"command": ["fast-agent-acp", "-x"],
|
|
369
369
|
"alt_commands": [
|
|
370
|
-
["
|
|
371
|
-
["
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
5208
|
-
if model and agent_type in ("codex", "openhands"):
|
|
5209
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
475
|
-
|
|
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.
|
|
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/
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|