superqode 0.2.7__tar.gz → 0.2.9__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.2.7 → superqode-0.2.9}/CHANGELOG.md +32 -0
- {superqode-0.2.7/src/superqode.egg-info → superqode-0.2.9}/PKG-INFO +2 -1
- {superqode-0.2.7 → superqode-0.2.9}/README.md +1 -0
- {superqode-0.2.7 → superqode-0.2.9}/pyproject.toml +1 -1
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/__init__.py +1 -1
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/server.py +101 -7
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp_discovery.py +48 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/loop.py +58 -0
- superqode-0.2.9/src/superqode/agents/data/x.ai.toml +81 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/constants.py +20 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/suggester.py +11 -8
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app_main.py +289 -27
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/acp.py +0 -1
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/__init__.py +32 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/eval.py +186 -3
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/kernel.py +42 -8
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/loader.py +71 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/optimize.py +43 -4
- superqode-0.2.9/src/superqode/harness/self_improve.py +1363 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/spec.py +14 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/main.py +701 -1
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/connection_profiles.py +16 -1
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/litellm_gateway.py +15 -5
- superqode-0.2.9/src/superqode/providers/grok_cli_auth.py +135 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/manager.py +5 -4
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/models.py +157 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/registry.py +42 -9
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/pure_mode.py +3 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/codex_sdk.py +53 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/slash_complete.py +54 -8
- {superqode-0.2.7 → superqode-0.2.9/src/superqode.egg-info}/PKG-INFO +2 -1
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/SOURCES.txt +7 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_registry.py +33 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_server.py +63 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_cli_commands.py +1 -1
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_cli_connect.py +7 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_connection_profiles.py +42 -3
- superqode-0.2.9/tests/test_grok_cli_auth.py +255 -0
- superqode-0.2.9/tests/test_harness_eval_splits.py +99 -0
- superqode-0.2.9/tests/test_harness_self_improve.py +377 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_spec.py +37 -0
- superqode-0.2.9/tests/test_harness_usage.py +159 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_live_models.py +9 -0
- superqode-0.2.9/tests/test_provider_models.py +213 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_slash_runtime.py +2 -1
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_smoke.py +41 -4
- superqode-0.2.7/tests/test_provider_models.py +0 -124
- {superqode-0.2.7 → superqode-0.2.9}/LICENSE +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/MANIFEST.in +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/README.md +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/byok-acp-team.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/coding.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/deepagents.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/ds4.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/gemma4.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/google-adk.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/local-recursive-dynamic.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/no-tool.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/omnigent-multi-agent.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/openai-agents.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/pydanticai.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/local-models-team.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/omnigent-multi-agent.agent.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/examples/simple-team.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/setup.cfg +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/client.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/presets.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/registry.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/server.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/skills.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/types.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/workflows.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/client.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/doctor.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/permission_screen.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/permission_store.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/render.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/session_store.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/slash.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/tool_call_context.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/types.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/auto_memory.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/command_safety.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/compaction.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/context_manager.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/edit_strategies.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/exec_policy.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/hooks.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/loop_guard.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/network_policy.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/output_handler.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/parallel_compare.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/peer_agents.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/plan_mode.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/reminders.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/rubric.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/session_manager.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/structured_output.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/summarization.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/system_prompts.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/terminal_output_limits.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/text_tool_calls.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/tool_args.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/tool_tracking.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/utility_model.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent_output.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent_stream.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/acp_registry.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/client.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/agentpool.phil65.github.io.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/ampcode.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/augmentcode.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/autodev.github.io.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/blackbox.ai.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/bub.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/cagent.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/claude.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/cline.bot.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/codex.openai.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/copilot.github.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/crow-ai.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/cursor.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/factory.ai.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/fastagent.ai.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/fount.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/geminicli.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/hermes-agent.nousresearch.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/kiro.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/minioncode.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/mistral-vibe.mistral.ai.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/openclaw.ai.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/opencode.ai.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/openhands.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/pi.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/poolside.ai.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/qoder.com.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/qwenlm.github.io.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/sigit.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/stakpak.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/stdiobus.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/vtcode.dev.toml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/discovery.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/free_models.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/messaging.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/official_acp.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/persona.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/registry.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/schema.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/unified.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/css.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/models.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/theme_bridge.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/widgets.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app_enhanced.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/approval.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/atomic.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/auth/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/benchmarks.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/config.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/discord.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/service.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/slack.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/telegram.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/claude.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/codex.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/a2a.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/agents.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/auth.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/config.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/daemon.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/local.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/providers.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/runtime.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/serve.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/sessions.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/config/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/config/loader.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/config/schema.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/core/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/danger.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/eval_fixtures/ci-dynamic-root-cause.log +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/eval_fixtures/ci-root-cause.log +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/eval_packs/local_dynamic_workflow_smoke.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/eval_packs/local_recursive_smoke.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/superqode-template.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/design_system.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/base.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/model.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/provider.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/runtime.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/diff_view.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/enterprise.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/adapters.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/behaviors.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/engine.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/scenarios.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/linter.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/modes.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/resolver.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/runner.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/file_explorer.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/file_viewer.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/flash.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/accelerator.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/agent_importer.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/approval_memory.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/base.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/deepagents.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/managed.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/pydanticai.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/registry.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/runtime.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/compiler.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/context_handles.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/diagnostics.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/events.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/explain.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/hooks.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/mcp_bridge.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/model_policy.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/observability.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/omnigent_importer.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/output.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/permissions.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/registry.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/sandbox.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/store.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/templates.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/testing.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/wizard.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/workflow.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/workflow_presets.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/headless.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/history.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/airplane.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/bench.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/build.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/code_index.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/devstral.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/ds4.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/gemma4.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/glm.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/gpt-oss.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/minimax.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/qwen-coder.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/qwen3.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/stack_matrix.yaml +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/doctor.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/engines.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/guardrails.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/hardware.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/inventory.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/labs.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/matrix.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/migrate.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/optimize.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/packs.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/repo.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/servers.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/setup.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/smoke.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/adapters.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/formatter.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/integration.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/sinks.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/unified_log.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/lsp/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/lsp/client.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/auth_storage.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/client.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/config.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/elicitation.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/harness_server.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/hf_auth.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/integration.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/oauth.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/oauth_callback.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/sampling.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/search.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/types.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/memory/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/memory/config.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/memory/providers.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/memory/types.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/notifications.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/permissions/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/permissions/rules.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/plan.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/plugins.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/project_trust.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/_builtin_profiles.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/acp_free_models.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/acp_models.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/acp_registry.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/apple_fm.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/catalog.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/credentials.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/dynamic.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/env_introspect.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/free_inference.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/base.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/synthetic.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/health.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/convert.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/downloader.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/endpoints.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/fetch.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/hub.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/inference.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/live_models.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/_mlx_worker.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/base.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/context_probe.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/discovery.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/ds4.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/lmstudio.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/mlx.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/mlx_engine.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/mlx_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/ollama.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/sglang.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/smoke.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/tgi.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/tool_support.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/vllm.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/model_specs.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/models_dev.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/opencode_models.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/converters/messages.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/converters/tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/schema/models.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/profiles.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/recommendations.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/usage.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/py.typed +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/rendering/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/rendering/html_export.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/rendering/markdown.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/rendering/transcript_export.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/adk.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/base.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/builtin.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/claude_agent_sdk.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/errors.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/openai_agents.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/openai_sandbox.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/openai_session.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/pydanticai.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/registry.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/tool_bridge.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/tool_bridge_openai.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/tool_bridge_pydanticai.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/safety/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/safety/sandbox.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/safety/warnings.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sandbox/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sandbox/backends.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sandbox/execution.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sandbox/local_sandbox.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/search_registry.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/server/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/server/api.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/server/web.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/factory.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/persistence.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/share_artifacts.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/sharing.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/switchboard.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sidebar.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/skillopt.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/skills.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/stream_view.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/styles/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tool_call.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/agent_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/apply_patch.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/base.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/batch_tool.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/compact_tool.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/context_handle.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/context_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/diagnostics.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/diff_utils.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/display.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/dynamic_workflow.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/edit_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/enhanced_base.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/env_policy.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/file_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/file_tracking.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/harness_agent_session.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/image_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/lsp_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/mcp_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/monty_tool.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/network_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/output_spill.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/peer_agent_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/permissions.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/post_edit.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/question_tool.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/request_permissions_tool.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/search_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/semantic_search.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/shell_session.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/shell_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/skill_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/spawn_harness.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/todo_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/tool_search.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/validation.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/web_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_integration.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_widgets/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_widgets/widgets/progress.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/undo_manager.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/utils/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/utils/error_handling.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/utils/fuzzy.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/agent_store.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/agent_switcher.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/animation_manager.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/code_context.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/command_palette.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/connection_status.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/conversation_history.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/diff_indicator.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/enhanced_status_bar.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/enhanced_toast.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/file_browser.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/file_reference.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/leader_key.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/mode_switcher.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/model_picker.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/permission_preview.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/prompt.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/provider_connect.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/pty_shell.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/resizable_sidebar.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/response_changes.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/response_display.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/rewind_overlay.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/rich_tool_display.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/sidebar_panels.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/slash_commands.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/split_view.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/status_bar.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/superqode_display.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/theme_picker.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/thinking.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/thinking_display.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/throbber.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/toast.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/unified_output.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/__init__.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/artifacts.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/change_summary.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/coordinator.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/diff_tracker.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/git_guard.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/git_snapshot.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/manager.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/snapshot.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/watcher.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/worktree.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/dependency_links.txt +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/entry_points.txt +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/requires.txt +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/top_level.txt +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_client.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_free_models.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_parent_tool_linking.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_permission_store.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_render.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_session_store.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_slash.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_adaptive_compaction.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_agent_importer.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_agent_loop_harness.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_agent_memory.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_agents_md_compat.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_apply_patch.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_auth.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_bash_spill.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_benchmarks.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_change_summary.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_channels.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_cli_reference_coverage.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_command_safety.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_commands_runtime.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_compaction.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_config_loader.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_config_runtime.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_connect_setup.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_context_handles.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_context_probe.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_context_remaining.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_create_skill_tool.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_deferred_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_developer_workflow_docs.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_ds4_local_client.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_dynamic_workflow_tool.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_edit_line_number_strip.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_env_introspect.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_execution_resolver.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_final_parity_wave.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_free_models.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_agent_session.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_backends.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_examples.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_explain.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_hooks.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_kernel.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_mcp_server.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_model_policy.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_observability.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_output.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_permissions.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_sandbox.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_seesaw_dimensions.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_store.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_wizard.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_workflow.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_headless.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_hf_fetch.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_hooks.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_linter_runner.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_litellm_gateway.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_airplane.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_build.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_code_index.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_labs.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_migrate.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_model_optimizations.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_packs.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_sandbox.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_search.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_servers.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_setup.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_smoke.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_stack.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_tool_support.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_login_api.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_loop_guard.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_managed_harness_backend.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_markdown_render.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_integration.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_live.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_oauth_generalized.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_tools_runtime.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_two_way.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_memory_recall.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_mlx_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_model_profiles.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_model_specs.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_monty_tool.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_network_policy.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_ollama_client.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_omnigent_agent_session_smoke.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_omnigent_importer.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_openai_session.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_output_spill.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_parallel_compare.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_peer_agents.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_plugin_hook_wiring.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_plugins.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_policies_and_turndiff.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_post_edit_verify.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_project_trust.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_provider_catalog.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_provider_dynamic.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_provider_recommendations.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_pure_mode_sessions.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_rate_limit_retry.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_read_tool_limits.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_reasoning_and_budget.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_recursive_eval_packs.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_adk.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_builtin.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_claude_agent_sdk.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_codex_sdk.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_dialog.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_openai_agents.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_openai_events.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_openai_hitl.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_openai_sandbox.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_protocol.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_pydanticai.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_sandbox_backends.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_sandbox_execution.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_search_roots.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_semantic_search.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_session_switchboard.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_shell_session.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_simple_login.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_simple_query_fastpath.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_skillopt.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_spawn_harness_tool.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_steering_continue_reminders.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_synthetic_gateways.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_terminal_output_limits.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_theme_picker.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_todo_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_args_repair.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_batch_safety.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_bridge.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_bridge_openai.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_call_repair.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_output_pruning.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_tracking.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tools.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_change_summary.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_chat_mode.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_exit.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_llamacpp_connect.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_markdown_cleanup.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_mlx_connect.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_mounted.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_tool_display.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_version.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_view_image.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_web_server_auth.py +0 -0
- {superqode-0.2.7 → superqode-0.2.9}/tests/test_workspace.py +0 -0
|
@@ -7,6 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.9] - 2026-07-09
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Grok subscription profile (`:connect grok`)** - New connection profile that runs xAI's official Grok Build coding agent through its native ACP server (`grok agent stdio`) on an eligible SuperGrok/X Premium+ account. Includes agent-registry and discovery entries, a `:grok` command surface (`connect`, `status`, `login`, `help`), completion/suggestion wiring, and docs across the provider, CLI-reference, connection-profiles, and TUI pages.
|
|
15
|
+
- **Opt-in direct API on the Grok subscription (`:grok api`)** - Explicitly imports the local `grok login` session token into SuperQode's 0600 auth store and connects the new `grok-cli` provider against the CLI chat proxy xAI documents (`https://cli-chat-proxy.grok.com/v1`), sending the required `X-XAI-Token-Auth` and `x-grok-model-override` headers. `:grok api off` removes the token; `:grok status` reports token state. The default ACP path still never reads the CLI's credentials.
|
|
16
|
+
- **Grok 4.5 in the xAI BYOK catalog** - Added `grok-4.5` (500K context, reasoning efforts, vision), `grok-4.3` (1M context), and `grok-build-0.1` with current pricing; refreshed registry example models, base URL, and docs links.
|
|
17
|
+
- **`ProviderDef.extra_headers`** - Curated providers can now declare required HTTP headers (with a `{model}` placeholder) applied per-request by the LiteLLM gateway, and can opt into per-request `api_base`/`api_key` routing without env mutation.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **Stale models.dev cache hiding new models** - A months-old on-disk models.dev cache no longer replaces newer curated builtin model lists (it previously hid day-one models like `grok-4.5` and mispriced lookups via fuzzy matching). Live provider lists now only override builtins when they are at least as new by release date.
|
|
22
|
+
- **Retired xAI models removed** - Dropped `grok-3`, `grok-3-mini`, `grok-2`, and `grok-beta` from the BYOK pickers to match xAI's current catalog; video-generation models are now excluded from chat model lists.
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- **Release metadata** - Bumped the package version, runtime `__version__`, lockfile package entry, and ACP registry metadata to `0.2.9`.
|
|
27
|
+
|
|
28
|
+
## [0.2.8] - 2026-07-07
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
|
|
32
|
+
- **Self-improving harness loop** - Added `harness mine-failures`, `harness logbook`, and `harness improve` workflows for mining failures, maintaining repo-local harness memory, exporting bounded improvement projects, and feeding evidence into candidate generation.
|
|
33
|
+
- **Candidate audit and ledger** - Added `harness audit-candidate` plus `harness candidates list/show/export` to record accepted and rejected harness candidates, detect protected-surface edits, permission widening, weakened checks, duplicate rejected edits, and missing held-out gates.
|
|
34
|
+
- **Held-in / held-out eval splits** - Added split-aware eval tasks and `harness eval --split {all,held-in,held-out}` so candidate improvements can be gated separately from training/proposal tasks.
|
|
35
|
+
- **Harness usage metrics** - Harness runs and eval scorecards now aggregate token, latency, and cost metrics where providers expose them.
|
|
36
|
+
- **Self-improvement docs** - Documented the end-to-end loop, optimization policy fields, candidate audit gates, candidate ledger, and logbook pruning.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
|
|
40
|
+
- **Release metadata** - Bumped the package version, runtime `__version__`, lockfile package entry, and ACP registry metadata to `0.2.8`.
|
|
41
|
+
|
|
10
42
|
## [0.2.7] - 2026-07-05
|
|
11
43
|
|
|
12
44
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: superqode
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.9
|
|
4
4
|
Summary: SuperQode: harness engineering framework for coding agents, optimized for local and open models
|
|
5
5
|
Author-email: Shashi Jagtap <info@super-agentic.ai>
|
|
6
6
|
Maintainer-email: Shashi Jagtap <info@super-agentic.ai>
|
|
@@ -356,6 +356,7 @@ Inside the TUI, start with `:help` and these commands:
|
|
|
356
356
|
:connect codex # Codex SDK with local Codex login
|
|
357
357
|
:connect claude # Claude Code through ACP
|
|
358
358
|
:connect antigravity # local Antigravity CLI handoff
|
|
359
|
+
:connect grok # Grok Build via the official Grok CLI (subscription)
|
|
359
360
|
:connect byok # hosted provider/API-key path
|
|
360
361
|
:connect local # local model provider
|
|
361
362
|
:tree # saved session branches
|
|
@@ -228,6 +228,7 @@ Inside the TUI, start with `:help` and these commands:
|
|
|
228
228
|
:connect codex # Codex SDK with local Codex login
|
|
229
229
|
:connect claude # Claude Code through ACP
|
|
230
230
|
:connect antigravity # local Antigravity CLI handoff
|
|
231
|
+
:connect grok # Grok Build via the official Grok CLI (subscription)
|
|
231
232
|
:connect byok # hosted provider/API-key path
|
|
232
233
|
:connect local # local model provider
|
|
233
234
|
:tree # saved session branches
|
|
@@ -46,6 +46,7 @@ from acp.schema import (
|
|
|
46
46
|
PermissionOption,
|
|
47
47
|
PromptCapabilities,
|
|
48
48
|
TerminalAuthMethod,
|
|
49
|
+
ToolCallLocation,
|
|
49
50
|
ToolCallUpdate,
|
|
50
51
|
)
|
|
51
52
|
|
|
@@ -98,6 +99,74 @@ def _tool_kind(name: str) -> str:
|
|
|
98
99
|
return "other"
|
|
99
100
|
|
|
100
101
|
|
|
102
|
+
# Argument keys that carry the tool's target, by role. Cover both snake_case and
|
|
103
|
+
# camelCase spellings since specs and external runtimes disagree on convention.
|
|
104
|
+
_PATH_ARG_KEYS = ("file_path", "filePath", "path", "file", "abs_path", "filename", "target_file")
|
|
105
|
+
_COMMAND_ARG_KEYS = ("command", "cmd", "script")
|
|
106
|
+
_PATTERN_ARG_KEYS = ("pattern", "query", "regex", "search")
|
|
107
|
+
_URL_ARG_KEYS = ("url", "uri")
|
|
108
|
+
|
|
109
|
+
_TITLE_LIMIT = 120
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def _first_str(args: dict[str, Any], keys: tuple[str, ...]) -> str:
|
|
113
|
+
for key in keys:
|
|
114
|
+
value = args.get(key)
|
|
115
|
+
if isinstance(value, str) and value.strip():
|
|
116
|
+
return value.strip()
|
|
117
|
+
return ""
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def _clip_title(text: str) -> str:
|
|
121
|
+
text = " ".join(text.split())
|
|
122
|
+
if len(text) <= _TITLE_LIMIT:
|
|
123
|
+
return text
|
|
124
|
+
return text[: _TITLE_LIMIT - 1] + "…"
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def _tool_title(name: str, arguments: Any) -> str:
|
|
128
|
+
"""Human-readable tool_call title: verb + target, not just the tool name.
|
|
129
|
+
|
|
130
|
+
Editors surface ``title`` directly (Zed, JetBrains) while ``raw_input`` is
|
|
131
|
+
hidden behind an expander, so the file path / command must be in the title.
|
|
132
|
+
"""
|
|
133
|
+
args = arguments if isinstance(arguments, dict) else {}
|
|
134
|
+
kind = _tool_kind(name)
|
|
135
|
+
path = _first_str(args, _PATH_ARG_KEYS)
|
|
136
|
+
if kind == "execute":
|
|
137
|
+
command = _first_str(args, _COMMAND_ARG_KEYS)
|
|
138
|
+
return _clip_title(command) if command else name
|
|
139
|
+
if kind == "read" and path:
|
|
140
|
+
return _clip_title(f"Read {path}")
|
|
141
|
+
if kind == "edit" and path:
|
|
142
|
+
verb = "Write" if "write" in name.lower() or "create" in name.lower() else "Edit"
|
|
143
|
+
return _clip_title(f"{verb} {path}")
|
|
144
|
+
if kind == "search":
|
|
145
|
+
pattern = _first_str(args, _PATTERN_ARG_KEYS)
|
|
146
|
+
if pattern:
|
|
147
|
+
return _clip_title(f"Search {pattern}" + (f" in {path}" if path else ""))
|
|
148
|
+
if kind == "fetch":
|
|
149
|
+
url = _first_str(args, _URL_ARG_KEYS)
|
|
150
|
+
if url:
|
|
151
|
+
return _clip_title(f"Fetch {url}")
|
|
152
|
+
if path:
|
|
153
|
+
return _clip_title(f"{name} {path}")
|
|
154
|
+
return name
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def _tool_locations(arguments: Any) -> list[ToolCallLocation] | None:
|
|
158
|
+
"""File locations for follow-the-agent UIs, when the arguments name a path."""
|
|
159
|
+
args = arguments if isinstance(arguments, dict) else {}
|
|
160
|
+
path = _first_str(args, _PATH_ARG_KEYS)
|
|
161
|
+
if not path:
|
|
162
|
+
return None
|
|
163
|
+
location = ToolCallLocation(path=path)
|
|
164
|
+
line = args.get("line") or args.get("start_line") or args.get("offset")
|
|
165
|
+
if isinstance(line, int) and line > 0:
|
|
166
|
+
location.line = line
|
|
167
|
+
return [location]
|
|
168
|
+
|
|
169
|
+
|
|
101
170
|
def _prompt_to_text(blocks: list[Any] | None) -> str:
|
|
102
171
|
"""Flatten ACP prompt content blocks into one harness prompt string."""
|
|
103
172
|
parts: list[str] = []
|
|
@@ -430,32 +499,55 @@ class SuperQodeAcpAgent:
|
|
|
430
499
|
await self._send_update(session_id, update_agent_thought_text(text))
|
|
431
500
|
elif event_type == "tool_call":
|
|
432
501
|
name = str(data.get("tool_name") or "tool")
|
|
502
|
+
arguments = data.get("arguments")
|
|
433
503
|
call_id = tracker.start(name)
|
|
434
504
|
await self._send_update(
|
|
435
505
|
session_id,
|
|
436
506
|
start_tool_call(
|
|
437
507
|
call_id,
|
|
438
|
-
name,
|
|
508
|
+
_tool_title(name, arguments),
|
|
439
509
|
kind=_tool_kind(name),
|
|
440
510
|
status="in_progress",
|
|
441
|
-
|
|
511
|
+
locations=_tool_locations(arguments),
|
|
512
|
+
raw_input=arguments,
|
|
442
513
|
),
|
|
443
514
|
)
|
|
444
515
|
elif event_type == "tool_result":
|
|
445
516
|
name = str(data.get("tool_name") or "tool")
|
|
446
517
|
call_id = tracker.finish(name)
|
|
447
|
-
if call_id is None:
|
|
448
|
-
return
|
|
449
518
|
success = data.get("success", True)
|
|
450
519
|
output = data.get("output") if success else (data.get("error") or data.get("output"))
|
|
451
520
|
content = []
|
|
452
521
|
if output:
|
|
453
522
|
content.append(tool_content(text_block(_clip(output))))
|
|
523
|
+
status = "completed" if success else "failed"
|
|
524
|
+
if call_id is None:
|
|
525
|
+
# Runtimes like codex-sdk report tools only on completion; synthesize
|
|
526
|
+
# the tool_call rather than dropping the result on the floor.
|
|
527
|
+
arguments = data.get("arguments") or {
|
|
528
|
+
key: data[key] for key in ("command", "path") if data.get(key)
|
|
529
|
+
}
|
|
530
|
+
call_id = tracker.start(name)
|
|
531
|
+
tracker.finish(name)
|
|
532
|
+
await self._send_update(
|
|
533
|
+
session_id,
|
|
534
|
+
start_tool_call(
|
|
535
|
+
call_id,
|
|
536
|
+
_tool_title(name, arguments),
|
|
537
|
+
kind=_tool_kind(name),
|
|
538
|
+
status=status,
|
|
539
|
+
locations=_tool_locations(arguments),
|
|
540
|
+
raw_input=arguments or None,
|
|
541
|
+
content=content or None,
|
|
542
|
+
raw_output=output,
|
|
543
|
+
),
|
|
544
|
+
)
|
|
545
|
+
return
|
|
454
546
|
await self._send_update(
|
|
455
547
|
session_id,
|
|
456
548
|
update_tool_call(
|
|
457
549
|
call_id,
|
|
458
|
-
status=
|
|
550
|
+
status=status,
|
|
459
551
|
content=content or None,
|
|
460
552
|
raw_output=output,
|
|
461
553
|
),
|
|
@@ -472,6 +564,7 @@ class SuperQodeAcpAgent:
|
|
|
472
564
|
return True
|
|
473
565
|
item = dict(pending[0])
|
|
474
566
|
tool_name = str(item.get("tool_name") or "tool")
|
|
567
|
+
arguments = item.get("arguments")
|
|
475
568
|
call_id = str(item.get("tool_call_id") or tracker.start(tool_name))
|
|
476
569
|
response = await self._conn.request_permission(
|
|
477
570
|
options=[
|
|
@@ -484,10 +577,11 @@ class SuperQodeAcpAgent:
|
|
|
484
577
|
session_id=session.session_id,
|
|
485
578
|
tool_call=ToolCallUpdate(
|
|
486
579
|
tool_call_id=call_id,
|
|
487
|
-
title=tool_name,
|
|
580
|
+
title=_tool_title(tool_name, arguments),
|
|
488
581
|
kind=_tool_kind(tool_name),
|
|
489
582
|
status="pending",
|
|
490
|
-
|
|
583
|
+
locations=_tool_locations(arguments),
|
|
584
|
+
raw_input=arguments,
|
|
491
585
|
),
|
|
492
586
|
)
|
|
493
587
|
outcome = getattr(response, "outcome", None)
|
|
@@ -212,6 +212,21 @@ KNOWN_AGENTS: List[Dict[str, Any]] = [
|
|
|
212
212
|
"check_command": ["codex", "--version"],
|
|
213
213
|
},
|
|
214
214
|
# =========================================================================
|
|
215
|
+
# Grok Build - xAI's official CLI with native ACP support
|
|
216
|
+
# =========================================================================
|
|
217
|
+
{
|
|
218
|
+
"name": "Grok Build",
|
|
219
|
+
"short_name": "grok",
|
|
220
|
+
"command": ["grok", "agent", "stdio"],
|
|
221
|
+
"icon": "G",
|
|
222
|
+
"color": "#e5e7eb",
|
|
223
|
+
"description": "xAI's official Grok Build coding agent with native ACP support",
|
|
224
|
+
"website": "https://x.ai/cli",
|
|
225
|
+
"requires_api_key": False,
|
|
226
|
+
"api_key_env_vars": ["XAI_API_KEY", "GROK_CODE_XAI_API_KEY"],
|
|
227
|
+
"check_command": ["grok", "--version"],
|
|
228
|
+
},
|
|
229
|
+
# =========================================================================
|
|
215
230
|
# 4. JetBrains Junie - JetBrains AI Agent
|
|
216
231
|
# =========================================================================
|
|
217
232
|
{
|
|
@@ -659,6 +674,39 @@ class ACPDiscovery:
|
|
|
659
674
|
id="gpt-4o", name="GPT-4o", provider="openai", description="Multimodal GPT"
|
|
660
675
|
),
|
|
661
676
|
],
|
|
677
|
+
# Grok Build follows the signed-in account's current default. The
|
|
678
|
+
# bare "grok-build" id is the CLI's own default-model alias; the
|
|
679
|
+
# rest are real xAI model ids a user can pin explicitly.
|
|
680
|
+
"grok": [
|
|
681
|
+
AgentModel(
|
|
682
|
+
id="grok-build",
|
|
683
|
+
name="Grok Build (account default)",
|
|
684
|
+
provider="xai",
|
|
685
|
+
description="Official Grok Build default alias, currently Grok 4.5",
|
|
686
|
+
context_window=500000,
|
|
687
|
+
),
|
|
688
|
+
AgentModel(
|
|
689
|
+
id="grok-4.5",
|
|
690
|
+
name="Grok 4.5",
|
|
691
|
+
provider="xai",
|
|
692
|
+
description="xAI's flagship model for agentic coding and reasoning",
|
|
693
|
+
context_window=500000,
|
|
694
|
+
),
|
|
695
|
+
AgentModel(
|
|
696
|
+
id="grok-build-0.1",
|
|
697
|
+
name="Grok Build 0.1",
|
|
698
|
+
provider="xai",
|
|
699
|
+
description="Fast coding model tuned for agentic engineering loops",
|
|
700
|
+
context_window=256000,
|
|
701
|
+
),
|
|
702
|
+
AgentModel(
|
|
703
|
+
id="grok-4.3",
|
|
704
|
+
name="Grok 4.3",
|
|
705
|
+
provider="xai",
|
|
706
|
+
description="1M-context Grok for document-heavy work",
|
|
707
|
+
context_window=1000000,
|
|
708
|
+
),
|
|
709
|
+
],
|
|
662
710
|
# JetBrains Junie
|
|
663
711
|
"junie": [
|
|
664
712
|
AgentModel(id="auto", name="Auto", description="Automatic model selection"),
|
|
@@ -605,6 +605,11 @@ class AgentResponse:
|
|
|
605
605
|
# and any schema-validation errors (empty list means valid).
|
|
606
606
|
structured_output: Optional[Any] = None
|
|
607
607
|
schema_errors: Optional[List[str]] = None
|
|
608
|
+
input_tokens: Optional[int] = None
|
|
609
|
+
output_tokens: Optional[int] = None
|
|
610
|
+
total_tokens: Optional[int] = None
|
|
611
|
+
cost_usd: Optional[float] = None
|
|
612
|
+
cost_currency: Optional[str] = None
|
|
608
613
|
|
|
609
614
|
|
|
610
615
|
class ToolApprovalRequired(RuntimeError):
|
|
@@ -1991,8 +1996,60 @@ class AgentLoop:
|
|
|
1991
1996
|
from .hooks import SESSION_START, STOP, USER_PROMPT_SUBMIT
|
|
1992
1997
|
|
|
1993
1998
|
lifecycle_ctx = self._lifecycle_context()
|
|
1999
|
+
usage_input_tokens = 0
|
|
2000
|
+
usage_output_tokens = 0
|
|
2001
|
+
usage_total_tokens = 0
|
|
2002
|
+
usage_cost = 0.0
|
|
2003
|
+
usage_seen = False
|
|
2004
|
+
cost_seen = False
|
|
2005
|
+
cost_currency = "USD"
|
|
2006
|
+
|
|
2007
|
+
def _record_gateway_usage(gateway_response) -> None:
|
|
2008
|
+
nonlocal usage_input_tokens
|
|
2009
|
+
nonlocal usage_output_tokens
|
|
2010
|
+
nonlocal usage_total_tokens
|
|
2011
|
+
nonlocal usage_cost
|
|
2012
|
+
nonlocal usage_seen
|
|
2013
|
+
nonlocal cost_seen
|
|
2014
|
+
nonlocal cost_currency
|
|
2015
|
+
usage = getattr(gateway_response, "usage", None)
|
|
2016
|
+
if usage is not None:
|
|
2017
|
+
prompt_tokens = int(getattr(usage, "prompt_tokens", 0) or 0)
|
|
2018
|
+
completion_tokens = int(getattr(usage, "completion_tokens", 0) or 0)
|
|
2019
|
+
total_tokens = int(getattr(usage, "total_tokens", 0) or 0)
|
|
2020
|
+
if total_tokens <= 0:
|
|
2021
|
+
total_tokens = prompt_tokens + completion_tokens
|
|
2022
|
+
usage_input_tokens += prompt_tokens
|
|
2023
|
+
usage_output_tokens += completion_tokens
|
|
2024
|
+
usage_total_tokens += total_tokens
|
|
2025
|
+
usage_seen = True
|
|
2026
|
+
cost = getattr(gateway_response, "cost", None)
|
|
2027
|
+
if cost is not None:
|
|
2028
|
+
input_cost = float(getattr(cost, "input_cost", 0.0) or 0.0)
|
|
2029
|
+
output_cost = float(getattr(cost, "output_cost", 0.0) or 0.0)
|
|
2030
|
+
total_cost = float(getattr(cost, "total_cost", 0.0) or 0.0)
|
|
2031
|
+
if total_cost == 0.0 and (input_cost or output_cost):
|
|
2032
|
+
total_cost = input_cost + output_cost
|
|
2033
|
+
usage_cost += total_cost
|
|
2034
|
+
cost_currency = str(getattr(cost, "currency", None) or cost_currency or "USD")
|
|
2035
|
+
cost_seen = True
|
|
1994
2036
|
|
|
1995
2037
|
async def _finish(response: AgentResponse) -> AgentResponse:
|
|
2038
|
+
if usage_seen:
|
|
2039
|
+
response.input_tokens = (
|
|
2040
|
+
usage_input_tokens if response.input_tokens is None else response.input_tokens
|
|
2041
|
+
)
|
|
2042
|
+
response.output_tokens = (
|
|
2043
|
+
usage_output_tokens if response.output_tokens is None else response.output_tokens
|
|
2044
|
+
)
|
|
2045
|
+
response.total_tokens = (
|
|
2046
|
+
usage_total_tokens if response.total_tokens is None else response.total_tokens
|
|
2047
|
+
)
|
|
2048
|
+
if cost_seen:
|
|
2049
|
+
response.cost_usd = usage_cost if response.cost_usd is None else response.cost_usd
|
|
2050
|
+
response.cost_currency = (
|
|
2051
|
+
cost_currency if response.cost_currency is None else response.cost_currency
|
|
2052
|
+
)
|
|
1996
2053
|
self.run_active = False
|
|
1997
2054
|
await self.hooks.fire(STOP, self._lifecycle_context(), response)
|
|
1998
2055
|
# Opt-in automatic memory extraction, off the hot path.
|
|
@@ -2156,6 +2213,7 @@ class AgentLoop:
|
|
|
2156
2213
|
error=str(e),
|
|
2157
2214
|
)
|
|
2158
2215
|
)
|
|
2216
|
+
_record_gateway_usage(response)
|
|
2159
2217
|
await self.hooks.fire(AFTER_LLM_CALL, lifecycle_ctx, response)
|
|
2160
2218
|
|
|
2161
2219
|
# Extract thinking content if available
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Official Grok CLI agent entry.
|
|
2
|
+
# https://x.ai/cli
|
|
3
|
+
|
|
4
|
+
identity = "x.ai"
|
|
5
|
+
name = "Grok Build"
|
|
6
|
+
short_name = "grok"
|
|
7
|
+
url = "https://x.ai/cli"
|
|
8
|
+
protocol = "acp"
|
|
9
|
+
author_name = "xAI"
|
|
10
|
+
author_url = "https://x.ai"
|
|
11
|
+
publisher_name = "SuperQode"
|
|
12
|
+
publisher_url = "https://github.com/SuperagenticAI/superqode"
|
|
13
|
+
type = "coding"
|
|
14
|
+
description = "xAI's official Grok Build coding agent, connected through its native ACP server."
|
|
15
|
+
tags = ["xai", "grok", "subscription", "byok", "acp"]
|
|
16
|
+
run_command."*" = "grok agent stdio"
|
|
17
|
+
api_key_env_vars = ["XAI_API_KEY", "GROK_CODE_XAI_API_KEY"]
|
|
18
|
+
|
|
19
|
+
help = '''
|
|
20
|
+
# Grok Build
|
|
21
|
+
|
|
22
|
+
Grok Build is xAI's official coding agent. SuperQode starts its native ACP server with:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
grok agent stdio
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# macOS / Linux / WSL
|
|
32
|
+
curl -fsSL https://x.ai/cli/install.sh | bash
|
|
33
|
+
|
|
34
|
+
# Windows PowerShell
|
|
35
|
+
irm https://x.ai/cli/install.ps1 | iex
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Subscription login
|
|
39
|
+
|
|
40
|
+
Grok Build is available to eligible SuperGrok and X Premium+ accounts.
|
|
41
|
+
Authenticate the official CLI before connecting:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
grok login
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
For an SSH or headless machine, use device authentication:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
grok login --device-auth
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Then connect in SuperQode with `:connect grok` or `superqode --connect grok`.
|
|
54
|
+
The official CLI keeps subscription credentials locally (`~/.grok/auth.json`);
|
|
55
|
+
SuperQode does not copy the token. Eligibility and available models are
|
|
56
|
+
determined by xAI for the signed-in account.
|
|
57
|
+
|
|
58
|
+
## Models
|
|
59
|
+
|
|
60
|
+
Grok Build defaults to its `grok-build` alias (currently Grok 4.5). Pin a
|
|
61
|
+
specific model from SuperQode with `:grok connect grok-4.5` or
|
|
62
|
+
`:grok connect grok-build-0.1`; the hint is forwarded through ACP.
|
|
63
|
+
|
|
64
|
+
## Direct API on your subscription (opt-in)
|
|
65
|
+
|
|
66
|
+
`:grok api [model]` imports the local `grok login` session token into
|
|
67
|
+
SuperQode's own auth store and connects the `grok-cli` provider against the
|
|
68
|
+
CLI chat proxy documented by xAI. Remove it anytime with `:grok api off`.
|
|
69
|
+
CLI sessions last about 7 days; re-run `grok login` when they expire.
|
|
70
|
+
|
|
71
|
+
## BYOK
|
|
72
|
+
|
|
73
|
+
For direct xAI API usage, set `XAI_API_KEY` and connect `xai/grok-4.5` through
|
|
74
|
+
the BYOK provider picker. API usage is billed separately from a consumer
|
|
75
|
+
subscription. The CLI itself also accepts `GROK_CODE_XAI_API_KEY` for
|
|
76
|
+
headless, key-based runs.
|
|
77
|
+
'''
|
|
78
|
+
|
|
79
|
+
[actions."*".install]
|
|
80
|
+
command = "curl -fsSL https://x.ai/cli/install.sh | bash"
|
|
81
|
+
description = "Install the official Grok CLI"
|
|
@@ -141,6 +141,7 @@ AGENT_COLORS = {
|
|
|
141
141
|
"claude": "#d97706", # Anthropic Orange
|
|
142
142
|
"claude-code": "#d97706", # Anthropic Orange
|
|
143
143
|
"codex": "#10b981", # Green
|
|
144
|
+
"grok": "#e5e7eb", # xAI neutral, readable on the dark TUI
|
|
144
145
|
"junie": "#fe315d", # JetBrains Pink
|
|
145
146
|
"goose": "#8b5cf6", # Block Purple
|
|
146
147
|
"kimi": "#5b21b6", # Moonshot Deep Purple
|
|
@@ -162,6 +163,7 @@ AGENT_ICONS = {
|
|
|
162
163
|
"claude": "🧡", # Orange heart - Anthropic's warm AI
|
|
163
164
|
"claude-code": "🧡", # Orange heart - Anthropic's warm AI
|
|
164
165
|
"codex": "📜", # Scroll
|
|
166
|
+
"grok": "G", # Grok Build
|
|
165
167
|
"junie": "🧠", # Brain - JetBrains intelligence
|
|
166
168
|
"goose": "🦆", # Duck - Block's Goose
|
|
167
169
|
"kimi": "🌙", # Moon - Moonshot AI's Kimi
|
|
@@ -251,6 +253,7 @@ COMMANDS = [
|
|
|
251
253
|
":connect codex",
|
|
252
254
|
":connect claude",
|
|
253
255
|
":connect antigravity",
|
|
256
|
+
":connect grok",
|
|
254
257
|
":connect byok",
|
|
255
258
|
":connect local",
|
|
256
259
|
":connect acp",
|
|
@@ -266,6 +269,10 @@ COMMANDS = [
|
|
|
266
269
|
":antigravity migrate",
|
|
267
270
|
":antigravity launch",
|
|
268
271
|
":agy",
|
|
272
|
+
":grok",
|
|
273
|
+
":grok status",
|
|
274
|
+
":grok login",
|
|
275
|
+
":grok api",
|
|
269
276
|
":exit",
|
|
270
277
|
":quit",
|
|
271
278
|
":help",
|
|
@@ -371,6 +378,7 @@ COMMANDS = [
|
|
|
371
378
|
":serve web",
|
|
372
379
|
":serve harness",
|
|
373
380
|
":serve api",
|
|
381
|
+
":serve acp",
|
|
374
382
|
":profiles",
|
|
375
383
|
":profiles list",
|
|
376
384
|
":doctor",
|
|
@@ -587,6 +595,18 @@ COMMANDS = [
|
|
|
587
595
|
":harness observability",
|
|
588
596
|
":harness observability status",
|
|
589
597
|
":harness observability export",
|
|
598
|
+
":harness mine-failures",
|
|
599
|
+
":harness logbook",
|
|
600
|
+
":harness logbook update",
|
|
601
|
+
":harness logbook show",
|
|
602
|
+
":harness logbook export",
|
|
603
|
+
":harness logbook prune",
|
|
604
|
+
":harness audit-candidate",
|
|
605
|
+
":harness candidates",
|
|
606
|
+
":harness candidates list",
|
|
607
|
+
":harness candidates show",
|
|
608
|
+
":harness candidates export",
|
|
609
|
+
":harness improve",
|
|
590
610
|
":harness optimize",
|
|
591
611
|
":harness optimize-inspect",
|
|
592
612
|
":harness optimize-ledger",
|
|
@@ -71,25 +71,28 @@ class CommandSuggester(Suggester):
|
|
|
71
71
|
":connect": 0,
|
|
72
72
|
":connect acp": 1,
|
|
73
73
|
":connect antigravity": 2,
|
|
74
|
-
":connect
|
|
75
|
-
":connect
|
|
76
|
-
":
|
|
77
|
-
":
|
|
74
|
+
":connect grok": 3,
|
|
75
|
+
":connect byok": 4,
|
|
76
|
+
":connect local": 5,
|
|
77
|
+
":exit": 6,
|
|
78
|
+
":quit": 7,
|
|
78
79
|
},
|
|
79
80
|
":c": {
|
|
80
81
|
":connect": 0,
|
|
81
82
|
":connect acp": 1,
|
|
82
83
|
":connect antigravity": 2,
|
|
83
|
-
":connect
|
|
84
|
-
":connect
|
|
84
|
+
":connect grok": 3,
|
|
85
|
+
":connect byok": 4,
|
|
86
|
+
":connect local": 5,
|
|
85
87
|
":clear": 20,
|
|
86
88
|
},
|
|
87
89
|
":co": {
|
|
88
90
|
":connect": 0,
|
|
89
91
|
":connect acp": 1,
|
|
90
92
|
":connect antigravity": 2,
|
|
91
|
-
":connect
|
|
92
|
-
":connect
|
|
93
|
+
":connect grok": 3,
|
|
94
|
+
":connect byok": 4,
|
|
95
|
+
":connect local": 5,
|
|
93
96
|
},
|
|
94
97
|
":q": {
|
|
95
98
|
":quit": 0,
|