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.
Files changed (667) hide show
  1. {superqode-0.2.7 → superqode-0.2.9}/CHANGELOG.md +32 -0
  2. {superqode-0.2.7/src/superqode.egg-info → superqode-0.2.9}/PKG-INFO +2 -1
  3. {superqode-0.2.7 → superqode-0.2.9}/README.md +1 -0
  4. {superqode-0.2.7 → superqode-0.2.9}/pyproject.toml +1 -1
  5. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/__init__.py +1 -1
  6. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/server.py +101 -7
  7. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp_discovery.py +48 -0
  8. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/loop.py +58 -0
  9. superqode-0.2.9/src/superqode/agents/data/x.ai.toml +81 -0
  10. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/constants.py +20 -0
  11. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/suggester.py +11 -8
  12. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app_main.py +289 -27
  13. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/acp.py +0 -1
  14. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/__init__.py +32 -0
  15. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/eval.py +186 -3
  16. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/kernel.py +42 -8
  17. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/loader.py +71 -0
  18. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/optimize.py +43 -4
  19. superqode-0.2.9/src/superqode/harness/self_improve.py +1363 -0
  20. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/spec.py +14 -0
  21. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/main.py +701 -1
  22. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/connection_profiles.py +16 -1
  23. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/litellm_gateway.py +15 -5
  24. superqode-0.2.9/src/superqode/providers/grok_cli_auth.py +135 -0
  25. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/manager.py +5 -4
  26. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/models.py +157 -0
  27. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/registry.py +42 -9
  28. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/pure_mode.py +3 -0
  29. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/codex_sdk.py +53 -0
  30. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/slash_complete.py +54 -8
  31. {superqode-0.2.7 → superqode-0.2.9/src/superqode.egg-info}/PKG-INFO +2 -1
  32. {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/SOURCES.txt +7 -0
  33. {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_registry.py +33 -0
  34. {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_server.py +63 -0
  35. {superqode-0.2.7 → superqode-0.2.9}/tests/test_cli_commands.py +1 -1
  36. {superqode-0.2.7 → superqode-0.2.9}/tests/test_cli_connect.py +7 -0
  37. {superqode-0.2.7 → superqode-0.2.9}/tests/test_connection_profiles.py +42 -3
  38. superqode-0.2.9/tests/test_grok_cli_auth.py +255 -0
  39. superqode-0.2.9/tests/test_harness_eval_splits.py +99 -0
  40. superqode-0.2.9/tests/test_harness_self_improve.py +377 -0
  41. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_spec.py +37 -0
  42. superqode-0.2.9/tests/test_harness_usage.py +159 -0
  43. {superqode-0.2.7 → superqode-0.2.9}/tests/test_live_models.py +9 -0
  44. superqode-0.2.9/tests/test_provider_models.py +213 -0
  45. {superqode-0.2.7 → superqode-0.2.9}/tests/test_slash_runtime.py +2 -1
  46. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_smoke.py +41 -4
  47. superqode-0.2.7/tests/test_provider_models.py +0 -124
  48. {superqode-0.2.7 → superqode-0.2.9}/LICENSE +0 -0
  49. {superqode-0.2.7 → superqode-0.2.9}/MANIFEST.in +0 -0
  50. {superqode-0.2.7 → superqode-0.2.9}/examples/README.md +0 -0
  51. {superqode-0.2.7 → superqode-0.2.9}/examples/byok-acp-team.yaml +0 -0
  52. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/coding.yaml +0 -0
  53. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/deepagents.yaml +0 -0
  54. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/ds4.yaml +0 -0
  55. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/gemma4.yaml +0 -0
  56. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/google-adk.yaml +0 -0
  57. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/local-recursive-dynamic.yaml +0 -0
  58. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/no-tool.yaml +0 -0
  59. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/omnigent-multi-agent.yaml +0 -0
  60. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/openai-agents.yaml +0 -0
  61. {superqode-0.2.7 → superqode-0.2.9}/examples/harnesses/pydanticai.yaml +0 -0
  62. {superqode-0.2.7 → superqode-0.2.9}/examples/local-models-team.yaml +0 -0
  63. {superqode-0.2.7 → superqode-0.2.9}/examples/omnigent-multi-agent.agent.yaml +0 -0
  64. {superqode-0.2.7 → superqode-0.2.9}/examples/simple-team.yaml +0 -0
  65. {superqode-0.2.7 → superqode-0.2.9}/setup.cfg +0 -0
  66. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/__init__.py +0 -0
  67. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/client.py +0 -0
  68. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/presets.py +0 -0
  69. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/registry.py +0 -0
  70. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/server.py +0 -0
  71. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/skills.py +0 -0
  72. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/tools.py +0 -0
  73. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/types.py +0 -0
  74. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/a2a/workflows.py +0 -0
  75. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/__init__.py +0 -0
  76. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/client.py +0 -0
  77. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/doctor.py +0 -0
  78. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/permission_screen.py +0 -0
  79. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/permission_store.py +0 -0
  80. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/render.py +0 -0
  81. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/session_store.py +0 -0
  82. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/slash.py +0 -0
  83. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/tool_call_context.py +0 -0
  84. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/acp/types.py +0 -0
  85. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/__init__.py +0 -0
  86. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/auto_memory.py +0 -0
  87. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/command_safety.py +0 -0
  88. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/compaction.py +0 -0
  89. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/context_manager.py +0 -0
  90. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/edit_strategies.py +0 -0
  91. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/exec_policy.py +0 -0
  92. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/hooks.py +0 -0
  93. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/loop_guard.py +0 -0
  94. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/network_policy.py +0 -0
  95. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/output_handler.py +0 -0
  96. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/parallel_compare.py +0 -0
  97. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/peer_agents.py +0 -0
  98. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/plan_mode.py +0 -0
  99. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/reminders.py +0 -0
  100. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/rubric.py +0 -0
  101. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/session_manager.py +0 -0
  102. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/structured_output.py +0 -0
  103. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/summarization.py +0 -0
  104. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/system_prompts.py +0 -0
  105. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/terminal_output_limits.py +0 -0
  106. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/text_tool_calls.py +0 -0
  107. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/tool_args.py +0 -0
  108. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/tool_tracking.py +0 -0
  109. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent/utility_model.py +0 -0
  110. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent_output.py +0 -0
  111. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agent_stream.py +0 -0
  112. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/__init__.py +0 -0
  113. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/acp_registry.py +0 -0
  114. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/client.py +0 -0
  115. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/agentpool.phil65.github.io.toml +0 -0
  116. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/ampcode.com.toml +0 -0
  117. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/augmentcode.com.toml +0 -0
  118. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/autodev.github.io.toml +0 -0
  119. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/blackbox.ai.toml +0 -0
  120. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/bub.dev.toml +0 -0
  121. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/cagent.dev.toml +0 -0
  122. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/claude.com.toml +0 -0
  123. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/cline.bot.toml +0 -0
  124. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
  125. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/codex.openai.com.toml +0 -0
  126. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/copilot.github.com.toml +0 -0
  127. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/crow-ai.dev.toml +0 -0
  128. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/cursor.com.toml +0 -0
  129. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/factory.ai.toml +0 -0
  130. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/fastagent.ai.toml +0 -0
  131. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/fount.dev.toml +0 -0
  132. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/geminicli.com.toml +0 -0
  133. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
  134. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/hermes-agent.nousresearch.com.toml +0 -0
  135. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
  136. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
  137. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/kiro.dev.toml +0 -0
  138. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
  139. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/minioncode.dev.toml +0 -0
  140. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/mistral-vibe.mistral.ai.toml +0 -0
  141. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/openclaw.ai.toml +0 -0
  142. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/opencode.ai.toml +0 -0
  143. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/openhands.dev.toml +0 -0
  144. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/pi.dev.toml +0 -0
  145. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/poolside.ai.toml +0 -0
  146. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/qoder.com.toml +0 -0
  147. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/qwenlm.github.io.toml +0 -0
  148. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/sigit.dev.toml +0 -0
  149. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/stakpak.dev.toml +0 -0
  150. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/stdiobus.dev.toml +0 -0
  151. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/data/vtcode.dev.toml +0 -0
  152. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/discovery.py +0 -0
  153. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/free_models.py +0 -0
  154. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/messaging.py +0 -0
  155. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/official_acp.py +0 -0
  156. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/persona.py +0 -0
  157. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/registry.py +0 -0
  158. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/schema.py +0 -0
  159. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/agents/unified.py +0 -0
  160. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/__init__.py +0 -0
  161. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/css.py +0 -0
  162. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/models.py +0 -0
  163. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/theme_bridge.py +0 -0
  164. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app/widgets.py +0 -0
  165. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/app_enhanced.py +0 -0
  166. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/approval.py +0 -0
  167. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/atomic.py +0 -0
  168. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/auth/__init__.py +0 -0
  169. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/benchmarks.py +0 -0
  170. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/__init__.py +0 -0
  171. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/config.py +0 -0
  172. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/discord.py +0 -0
  173. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/service.py +0 -0
  174. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/slack.py +0 -0
  175. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/channels/telegram.py +0 -0
  176. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/claude.py +0 -0
  177. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/codex.py +0 -0
  178. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/__init__.py +0 -0
  179. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/a2a.py +0 -0
  180. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/agents.py +0 -0
  181. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/auth.py +0 -0
  182. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/config.py +0 -0
  183. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/daemon.py +0 -0
  184. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/local.py +0 -0
  185. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/providers.py +0 -0
  186. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/runtime.py +0 -0
  187. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/serve.py +0 -0
  188. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/commands/sessions.py +0 -0
  189. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/config/__init__.py +0 -0
  190. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/config/loader.py +0 -0
  191. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/config/schema.py +0 -0
  192. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/core/__init__.py +0 -0
  193. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/danger.py +0 -0
  194. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/eval_fixtures/ci-dynamic-root-cause.log +0 -0
  195. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/eval_fixtures/ci-root-cause.log +0 -0
  196. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/eval_packs/local_dynamic_workflow_smoke.yaml +0 -0
  197. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/eval_packs/local_recursive_smoke.yaml +0 -0
  198. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/data/superqode-template.yaml +0 -0
  199. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/design_system.py +0 -0
  200. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/__init__.py +0 -0
  201. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/base.py +0 -0
  202. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/model.py +0 -0
  203. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/provider.py +0 -0
  204. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/dialogs/runtime.py +0 -0
  205. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/diff_view.py +0 -0
  206. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/enterprise.py +0 -0
  207. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/__init__.py +0 -0
  208. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/adapters.py +0 -0
  209. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/behaviors.py +0 -0
  210. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/engine.py +0 -0
  211. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/evaluation/scenarios.py +0 -0
  212. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/__init__.py +0 -0
  213. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/linter.py +0 -0
  214. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/modes.py +0 -0
  215. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/resolver.py +0 -0
  216. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/execution/runner.py +0 -0
  217. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/file_explorer.py +0 -0
  218. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/file_viewer.py +0 -0
  219. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/flash.py +0 -0
  220. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/accelerator.py +0 -0
  221. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/agent_importer.py +0 -0
  222. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/approval_memory.py +0 -0
  223. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/__init__.py +0 -0
  224. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/base.py +0 -0
  225. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/deepagents.py +0 -0
  226. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/managed.py +0 -0
  227. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/pydanticai.py +0 -0
  228. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/registry.py +0 -0
  229. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/backends/runtime.py +0 -0
  230. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/compiler.py +0 -0
  231. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/context_handles.py +0 -0
  232. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/diagnostics.py +0 -0
  233. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/events.py +0 -0
  234. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/explain.py +0 -0
  235. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/hooks.py +0 -0
  236. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/mcp_bridge.py +0 -0
  237. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/model_policy.py +0 -0
  238. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/observability.py +0 -0
  239. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/omnigent_importer.py +0 -0
  240. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/output.py +0 -0
  241. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/permissions.py +0 -0
  242. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/registry.py +0 -0
  243. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/sandbox.py +0 -0
  244. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/store.py +0 -0
  245. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/templates.py +0 -0
  246. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/testing.py +0 -0
  247. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/wizard.py +0 -0
  248. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/workflow.py +0 -0
  249. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/harness/workflow_presets.py +0 -0
  250. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/headless.py +0 -0
  251. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/history.py +0 -0
  252. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/__init__.py +0 -0
  253. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/airplane.py +0 -0
  254. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/bench.py +0 -0
  255. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/build.py +0 -0
  256. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/code_index.py +0 -0
  257. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/devstral.yaml +0 -0
  258. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/ds4.yaml +0 -0
  259. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/gemma4.yaml +0 -0
  260. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/glm.yaml +0 -0
  261. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/gpt-oss.yaml +0 -0
  262. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/minimax.yaml +0 -0
  263. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/qwen-coder.yaml +0 -0
  264. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/model-packs/qwen3.yaml +0 -0
  265. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/data/stack_matrix.yaml +0 -0
  266. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/doctor.py +0 -0
  267. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/engines.py +0 -0
  268. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/guardrails.py +0 -0
  269. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/hardware.py +0 -0
  270. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/inventory.py +0 -0
  271. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/labs.py +0 -0
  272. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/matrix.py +0 -0
  273. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/migrate.py +0 -0
  274. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/optimize.py +0 -0
  275. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/packs.py +0 -0
  276. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/repo.py +0 -0
  277. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/servers.py +0 -0
  278. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/setup.py +0 -0
  279. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/local/smoke.py +0 -0
  280. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/__init__.py +0 -0
  281. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/adapters.py +0 -0
  282. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/formatter.py +0 -0
  283. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/integration.py +0 -0
  284. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/sinks.py +0 -0
  285. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/logging/unified_log.py +0 -0
  286. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/lsp/__init__.py +0 -0
  287. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/lsp/client.py +0 -0
  288. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/__init__.py +0 -0
  289. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/auth_storage.py +0 -0
  290. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/client.py +0 -0
  291. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/config.py +0 -0
  292. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/elicitation.py +0 -0
  293. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/harness_server.py +0 -0
  294. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/hf_auth.py +0 -0
  295. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/integration.py +0 -0
  296. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/oauth.py +0 -0
  297. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/oauth_callback.py +0 -0
  298. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/sampling.py +0 -0
  299. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/search.py +0 -0
  300. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/mcp/types.py +0 -0
  301. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/memory/__init__.py +0 -0
  302. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/memory/config.py +0 -0
  303. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/memory/providers.py +0 -0
  304. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/memory/types.py +0 -0
  305. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/notifications.py +0 -0
  306. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/permissions/__init__.py +0 -0
  307. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/permissions/rules.py +0 -0
  308. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/plan.py +0 -0
  309. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/plugins.py +0 -0
  310. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/project_trust.py +0 -0
  311. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/__init__.py +0 -0
  312. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/_builtin_profiles.py +0 -0
  313. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/acp_free_models.py +0 -0
  314. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/acp_models.py +0 -0
  315. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/acp_registry.py +0 -0
  316. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/apple_fm.py +0 -0
  317. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/catalog.py +0 -0
  318. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/credentials.py +0 -0
  319. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/dynamic.py +0 -0
  320. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/env_introspect.py +0 -0
  321. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/free_inference.py +0 -0
  322. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/__init__.py +0 -0
  323. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/base.py +0 -0
  324. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
  325. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/gateway/synthetic.py +0 -0
  326. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/health.py +0 -0
  327. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/__init__.py +0 -0
  328. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/convert.py +0 -0
  329. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/downloader.py +0 -0
  330. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/endpoints.py +0 -0
  331. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/fetch.py +0 -0
  332. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/hub.py +0 -0
  333. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/inference.py +0 -0
  334. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
  335. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/live_models.py +0 -0
  336. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/__init__.py +0 -0
  337. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/_mlx_worker.py +0 -0
  338. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/base.py +0 -0
  339. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/context_probe.py +0 -0
  340. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/discovery.py +0 -0
  341. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/ds4.py +0 -0
  342. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/lmstudio.py +0 -0
  343. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/mlx.py +0 -0
  344. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/mlx_engine.py +0 -0
  345. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/mlx_tools.py +0 -0
  346. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/ollama.py +0 -0
  347. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/sglang.py +0 -0
  348. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/smoke.py +0 -0
  349. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/tgi.py +0 -0
  350. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/tool_support.py +0 -0
  351. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/local/vllm.py +0 -0
  352. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/model_specs.py +0 -0
  353. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/models_dev.py +0 -0
  354. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/opencode_models.py +0 -0
  355. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/__init__.py +0 -0
  356. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
  357. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/converters/messages.py +0 -0
  358. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/converters/tools.py +0 -0
  359. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
  360. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/schema/models.py +0 -0
  361. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
  362. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
  363. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
  364. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
  365. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
  366. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
  367. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
  368. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/profiles.py +0 -0
  369. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/recommendations.py +0 -0
  370. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/providers/usage.py +0 -0
  371. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/py.typed +0 -0
  372. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/rendering/__init__.py +0 -0
  373. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/rendering/html_export.py +0 -0
  374. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/rendering/markdown.py +0 -0
  375. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/rendering/transcript_export.py +0 -0
  376. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/__init__.py +0 -0
  377. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/adk.py +0 -0
  378. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/base.py +0 -0
  379. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/builtin.py +0 -0
  380. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/claude_agent_sdk.py +0 -0
  381. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/errors.py +0 -0
  382. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/openai_agents.py +0 -0
  383. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/openai_sandbox.py +0 -0
  384. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/openai_session.py +0 -0
  385. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/pydanticai.py +0 -0
  386. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/registry.py +0 -0
  387. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/tool_bridge.py +0 -0
  388. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/tool_bridge_openai.py +0 -0
  389. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/runtime/tool_bridge_pydanticai.py +0 -0
  390. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/safety/__init__.py +0 -0
  391. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/safety/sandbox.py +0 -0
  392. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/safety/warnings.py +0 -0
  393. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sandbox/__init__.py +0 -0
  394. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sandbox/backends.py +0 -0
  395. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sandbox/execution.py +0 -0
  396. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sandbox/local_sandbox.py +0 -0
  397. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/search_registry.py +0 -0
  398. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/server/__init__.py +0 -0
  399. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/server/api.py +0 -0
  400. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/server/web.py +0 -0
  401. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/__init__.py +0 -0
  402. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/factory.py +0 -0
  403. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/persistence.py +0 -0
  404. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/share_artifacts.py +0 -0
  405. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/sharing.py +0 -0
  406. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session/switchboard.py +0 -0
  407. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/session.py +0 -0
  408. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/sidebar.py +0 -0
  409. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/skillopt.py +0 -0
  410. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/skills.py +0 -0
  411. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/stream_view.py +0 -0
  412. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/styles/__init__.py +0 -0
  413. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tool_call.py +0 -0
  414. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/__init__.py +0 -0
  415. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/agent_tools.py +0 -0
  416. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/apply_patch.py +0 -0
  417. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/base.py +0 -0
  418. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/batch_tool.py +0 -0
  419. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/compact_tool.py +0 -0
  420. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/context_handle.py +0 -0
  421. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/context_tools.py +0 -0
  422. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/diagnostics.py +0 -0
  423. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/diff_utils.py +0 -0
  424. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/display.py +0 -0
  425. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/dynamic_workflow.py +0 -0
  426. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/edit_tools.py +0 -0
  427. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/enhanced_base.py +0 -0
  428. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/env_policy.py +0 -0
  429. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/file_tools.py +0 -0
  430. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/file_tracking.py +0 -0
  431. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/harness_agent_session.py +0 -0
  432. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/image_tools.py +0 -0
  433. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/lsp_tools.py +0 -0
  434. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/mcp_tools.py +0 -0
  435. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/monty_tool.py +0 -0
  436. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/network_tools.py +0 -0
  437. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/output_spill.py +0 -0
  438. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/peer_agent_tools.py +0 -0
  439. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/permissions.py +0 -0
  440. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/post_edit.py +0 -0
  441. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/question_tool.py +0 -0
  442. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/request_permissions_tool.py +0 -0
  443. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/search_tools.py +0 -0
  444. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/semantic_search.py +0 -0
  445. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/shell_session.py +0 -0
  446. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/shell_tools.py +0 -0
  447. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/skill_tools.py +0 -0
  448. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/spawn_harness.py +0 -0
  449. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/todo_tools.py +0 -0
  450. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/tool_search.py +0 -0
  451. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/validation.py +0 -0
  452. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tools/web_tools.py +0 -0
  453. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_integration.py +0 -0
  454. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_widgets/__init__.py +0 -0
  455. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
  456. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_widgets/widgets/progress.py +0 -0
  457. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
  458. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/undo_manager.py +0 -0
  459. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/utils/__init__.py +0 -0
  460. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/utils/error_handling.py +0 -0
  461. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/utils/fuzzy.py +0 -0
  462. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/__init__.py +0 -0
  463. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/agent_store.py +0 -0
  464. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/agent_switcher.py +0 -0
  465. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/animation_manager.py +0 -0
  466. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/code_context.py +0 -0
  467. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/command_palette.py +0 -0
  468. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/connection_status.py +0 -0
  469. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/conversation_history.py +0 -0
  470. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/diff_indicator.py +0 -0
  471. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/enhanced_status_bar.py +0 -0
  472. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/enhanced_toast.py +0 -0
  473. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/file_browser.py +0 -0
  474. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/file_reference.py +0 -0
  475. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/leader_key.py +0 -0
  476. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/mode_switcher.py +0 -0
  477. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/model_picker.py +0 -0
  478. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/permission_preview.py +0 -0
  479. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/prompt.py +0 -0
  480. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/provider_connect.py +0 -0
  481. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/pty_shell.py +0 -0
  482. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/resizable_sidebar.py +0 -0
  483. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/response_changes.py +0 -0
  484. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/response_display.py +0 -0
  485. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/rewind_overlay.py +0 -0
  486. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/rich_tool_display.py +0 -0
  487. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/sidebar_panels.py +0 -0
  488. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/slash_commands.py +0 -0
  489. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/split_view.py +0 -0
  490. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/status_bar.py +0 -0
  491. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/superqode_display.py +0 -0
  492. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/theme_picker.py +0 -0
  493. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/thinking.py +0 -0
  494. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/thinking_display.py +0 -0
  495. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/throbber.py +0 -0
  496. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/toast.py +0 -0
  497. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/widgets/unified_output.py +0 -0
  498. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/__init__.py +0 -0
  499. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/artifacts.py +0 -0
  500. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/change_summary.py +0 -0
  501. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/coordinator.py +0 -0
  502. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/diff_tracker.py +0 -0
  503. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/git_guard.py +0 -0
  504. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/git_snapshot.py +0 -0
  505. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/manager.py +0 -0
  506. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/snapshot.py +0 -0
  507. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/watcher.py +0 -0
  508. {superqode-0.2.7 → superqode-0.2.9}/src/superqode/workspace/worktree.py +0 -0
  509. {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/dependency_links.txt +0 -0
  510. {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/entry_points.txt +0 -0
  511. {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/requires.txt +0 -0
  512. {superqode-0.2.7 → superqode-0.2.9}/src/superqode.egg-info/top_level.txt +0 -0
  513. {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_client.py +0 -0
  514. {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_free_models.py +0 -0
  515. {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_parent_tool_linking.py +0 -0
  516. {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_permission_store.py +0 -0
  517. {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_render.py +0 -0
  518. {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_session_store.py +0 -0
  519. {superqode-0.2.7 → superqode-0.2.9}/tests/test_acp_slash.py +0 -0
  520. {superqode-0.2.7 → superqode-0.2.9}/tests/test_adaptive_compaction.py +0 -0
  521. {superqode-0.2.7 → superqode-0.2.9}/tests/test_agent_importer.py +0 -0
  522. {superqode-0.2.7 → superqode-0.2.9}/tests/test_agent_loop_harness.py +0 -0
  523. {superqode-0.2.7 → superqode-0.2.9}/tests/test_agent_memory.py +0 -0
  524. {superqode-0.2.7 → superqode-0.2.9}/tests/test_agents_md_compat.py +0 -0
  525. {superqode-0.2.7 → superqode-0.2.9}/tests/test_apply_patch.py +0 -0
  526. {superqode-0.2.7 → superqode-0.2.9}/tests/test_auth.py +0 -0
  527. {superqode-0.2.7 → superqode-0.2.9}/tests/test_bash_spill.py +0 -0
  528. {superqode-0.2.7 → superqode-0.2.9}/tests/test_benchmarks.py +0 -0
  529. {superqode-0.2.7 → superqode-0.2.9}/tests/test_change_summary.py +0 -0
  530. {superqode-0.2.7 → superqode-0.2.9}/tests/test_channels.py +0 -0
  531. {superqode-0.2.7 → superqode-0.2.9}/tests/test_cli_reference_coverage.py +0 -0
  532. {superqode-0.2.7 → superqode-0.2.9}/tests/test_command_safety.py +0 -0
  533. {superqode-0.2.7 → superqode-0.2.9}/tests/test_commands_runtime.py +0 -0
  534. {superqode-0.2.7 → superqode-0.2.9}/tests/test_compaction.py +0 -0
  535. {superqode-0.2.7 → superqode-0.2.9}/tests/test_config_loader.py +0 -0
  536. {superqode-0.2.7 → superqode-0.2.9}/tests/test_config_runtime.py +0 -0
  537. {superqode-0.2.7 → superqode-0.2.9}/tests/test_connect_setup.py +0 -0
  538. {superqode-0.2.7 → superqode-0.2.9}/tests/test_context_handles.py +0 -0
  539. {superqode-0.2.7 → superqode-0.2.9}/tests/test_context_probe.py +0 -0
  540. {superqode-0.2.7 → superqode-0.2.9}/tests/test_context_remaining.py +0 -0
  541. {superqode-0.2.7 → superqode-0.2.9}/tests/test_create_skill_tool.py +0 -0
  542. {superqode-0.2.7 → superqode-0.2.9}/tests/test_deferred_tools.py +0 -0
  543. {superqode-0.2.7 → superqode-0.2.9}/tests/test_developer_workflow_docs.py +0 -0
  544. {superqode-0.2.7 → superqode-0.2.9}/tests/test_ds4_local_client.py +0 -0
  545. {superqode-0.2.7 → superqode-0.2.9}/tests/test_dynamic_workflow_tool.py +0 -0
  546. {superqode-0.2.7 → superqode-0.2.9}/tests/test_edit_line_number_strip.py +0 -0
  547. {superqode-0.2.7 → superqode-0.2.9}/tests/test_env_introspect.py +0 -0
  548. {superqode-0.2.7 → superqode-0.2.9}/tests/test_execution_resolver.py +0 -0
  549. {superqode-0.2.7 → superqode-0.2.9}/tests/test_final_parity_wave.py +0 -0
  550. {superqode-0.2.7 → superqode-0.2.9}/tests/test_free_models.py +0 -0
  551. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_agent_session.py +0 -0
  552. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_backends.py +0 -0
  553. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_examples.py +0 -0
  554. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_explain.py +0 -0
  555. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_hooks.py +0 -0
  556. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_kernel.py +0 -0
  557. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_mcp_server.py +0 -0
  558. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_model_policy.py +0 -0
  559. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_observability.py +0 -0
  560. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_output.py +0 -0
  561. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_permissions.py +0 -0
  562. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_sandbox.py +0 -0
  563. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_seesaw_dimensions.py +0 -0
  564. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_store.py +0 -0
  565. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_wizard.py +0 -0
  566. {superqode-0.2.7 → superqode-0.2.9}/tests/test_harness_workflow.py +0 -0
  567. {superqode-0.2.7 → superqode-0.2.9}/tests/test_headless.py +0 -0
  568. {superqode-0.2.7 → superqode-0.2.9}/tests/test_hf_fetch.py +0 -0
  569. {superqode-0.2.7 → superqode-0.2.9}/tests/test_hooks.py +0 -0
  570. {superqode-0.2.7 → superqode-0.2.9}/tests/test_linter_runner.py +0 -0
  571. {superqode-0.2.7 → superqode-0.2.9}/tests/test_litellm_gateway.py +0 -0
  572. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_airplane.py +0 -0
  573. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_build.py +0 -0
  574. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_code_index.py +0 -0
  575. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_labs.py +0 -0
  576. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_migrate.py +0 -0
  577. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_model_optimizations.py +0 -0
  578. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_packs.py +0 -0
  579. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_sandbox.py +0 -0
  580. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_search.py +0 -0
  581. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_servers.py +0 -0
  582. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_setup.py +0 -0
  583. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_smoke.py +0 -0
  584. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_stack.py +0 -0
  585. {superqode-0.2.7 → superqode-0.2.9}/tests/test_local_tool_support.py +0 -0
  586. {superqode-0.2.7 → superqode-0.2.9}/tests/test_login_api.py +0 -0
  587. {superqode-0.2.7 → superqode-0.2.9}/tests/test_loop_guard.py +0 -0
  588. {superqode-0.2.7 → superqode-0.2.9}/tests/test_managed_harness_backend.py +0 -0
  589. {superqode-0.2.7 → superqode-0.2.9}/tests/test_markdown_render.py +0 -0
  590. {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp.py +0 -0
  591. {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_integration.py +0 -0
  592. {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_live.py +0 -0
  593. {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_oauth_generalized.py +0 -0
  594. {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_tools_runtime.py +0 -0
  595. {superqode-0.2.7 → superqode-0.2.9}/tests/test_mcp_two_way.py +0 -0
  596. {superqode-0.2.7 → superqode-0.2.9}/tests/test_memory_recall.py +0 -0
  597. {superqode-0.2.7 → superqode-0.2.9}/tests/test_mlx_tools.py +0 -0
  598. {superqode-0.2.7 → superqode-0.2.9}/tests/test_model_profiles.py +0 -0
  599. {superqode-0.2.7 → superqode-0.2.9}/tests/test_model_specs.py +0 -0
  600. {superqode-0.2.7 → superqode-0.2.9}/tests/test_monty_tool.py +0 -0
  601. {superqode-0.2.7 → superqode-0.2.9}/tests/test_network_policy.py +0 -0
  602. {superqode-0.2.7 → superqode-0.2.9}/tests/test_ollama_client.py +0 -0
  603. {superqode-0.2.7 → superqode-0.2.9}/tests/test_omnigent_agent_session_smoke.py +0 -0
  604. {superqode-0.2.7 → superqode-0.2.9}/tests/test_omnigent_importer.py +0 -0
  605. {superqode-0.2.7 → superqode-0.2.9}/tests/test_openai_session.py +0 -0
  606. {superqode-0.2.7 → superqode-0.2.9}/tests/test_output_spill.py +0 -0
  607. {superqode-0.2.7 → superqode-0.2.9}/tests/test_parallel_compare.py +0 -0
  608. {superqode-0.2.7 → superqode-0.2.9}/tests/test_peer_agents.py +0 -0
  609. {superqode-0.2.7 → superqode-0.2.9}/tests/test_plugin_hook_wiring.py +0 -0
  610. {superqode-0.2.7 → superqode-0.2.9}/tests/test_plugins.py +0 -0
  611. {superqode-0.2.7 → superqode-0.2.9}/tests/test_policies_and_turndiff.py +0 -0
  612. {superqode-0.2.7 → superqode-0.2.9}/tests/test_post_edit_verify.py +0 -0
  613. {superqode-0.2.7 → superqode-0.2.9}/tests/test_project_trust.py +0 -0
  614. {superqode-0.2.7 → superqode-0.2.9}/tests/test_provider_catalog.py +0 -0
  615. {superqode-0.2.7 → superqode-0.2.9}/tests/test_provider_dynamic.py +0 -0
  616. {superqode-0.2.7 → superqode-0.2.9}/tests/test_provider_recommendations.py +0 -0
  617. {superqode-0.2.7 → superqode-0.2.9}/tests/test_pure_mode_sessions.py +0 -0
  618. {superqode-0.2.7 → superqode-0.2.9}/tests/test_rate_limit_retry.py +0 -0
  619. {superqode-0.2.7 → superqode-0.2.9}/tests/test_read_tool_limits.py +0 -0
  620. {superqode-0.2.7 → superqode-0.2.9}/tests/test_reasoning_and_budget.py +0 -0
  621. {superqode-0.2.7 → superqode-0.2.9}/tests/test_recursive_eval_packs.py +0 -0
  622. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_adk.py +0 -0
  623. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_builtin.py +0 -0
  624. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_claude_agent_sdk.py +0 -0
  625. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_codex_sdk.py +0 -0
  626. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_dialog.py +0 -0
  627. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_openai_agents.py +0 -0
  628. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_openai_events.py +0 -0
  629. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_openai_hitl.py +0 -0
  630. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_openai_sandbox.py +0 -0
  631. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_protocol.py +0 -0
  632. {superqode-0.2.7 → superqode-0.2.9}/tests/test_runtime_pydanticai.py +0 -0
  633. {superqode-0.2.7 → superqode-0.2.9}/tests/test_sandbox_backends.py +0 -0
  634. {superqode-0.2.7 → superqode-0.2.9}/tests/test_sandbox_execution.py +0 -0
  635. {superqode-0.2.7 → superqode-0.2.9}/tests/test_search_roots.py +0 -0
  636. {superqode-0.2.7 → superqode-0.2.9}/tests/test_semantic_search.py +0 -0
  637. {superqode-0.2.7 → superqode-0.2.9}/tests/test_session_switchboard.py +0 -0
  638. {superqode-0.2.7 → superqode-0.2.9}/tests/test_shell_session.py +0 -0
  639. {superqode-0.2.7 → superqode-0.2.9}/tests/test_simple_login.py +0 -0
  640. {superqode-0.2.7 → superqode-0.2.9}/tests/test_simple_query_fastpath.py +0 -0
  641. {superqode-0.2.7 → superqode-0.2.9}/tests/test_skillopt.py +0 -0
  642. {superqode-0.2.7 → superqode-0.2.9}/tests/test_spawn_harness_tool.py +0 -0
  643. {superqode-0.2.7 → superqode-0.2.9}/tests/test_steering_continue_reminders.py +0 -0
  644. {superqode-0.2.7 → superqode-0.2.9}/tests/test_synthetic_gateways.py +0 -0
  645. {superqode-0.2.7 → superqode-0.2.9}/tests/test_terminal_output_limits.py +0 -0
  646. {superqode-0.2.7 → superqode-0.2.9}/tests/test_theme_picker.py +0 -0
  647. {superqode-0.2.7 → superqode-0.2.9}/tests/test_todo_tools.py +0 -0
  648. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_args_repair.py +0 -0
  649. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_batch_safety.py +0 -0
  650. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_bridge.py +0 -0
  651. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_bridge_openai.py +0 -0
  652. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_call_repair.py +0 -0
  653. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_output_pruning.py +0 -0
  654. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tool_tracking.py +0 -0
  655. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tools.py +0 -0
  656. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_change_summary.py +0 -0
  657. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_chat_mode.py +0 -0
  658. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_exit.py +0 -0
  659. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_llamacpp_connect.py +0 -0
  660. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_markdown_cleanup.py +0 -0
  661. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_mlx_connect.py +0 -0
  662. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_mounted.py +0 -0
  663. {superqode-0.2.7 → superqode-0.2.9}/tests/test_tui_tool_display.py +0 -0
  664. {superqode-0.2.7 → superqode-0.2.9}/tests/test_version.py +0 -0
  665. {superqode-0.2.7 → superqode-0.2.9}/tests/test_view_image.py +0 -0
  666. {superqode-0.2.7 → superqode-0.2.9}/tests/test_web_server_auth.py +0 -0
  667. {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.7
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superqode"
3
- version = "0.2.7"
3
+ version = "0.2.9"
4
4
  description = "SuperQode: harness engineering framework for coding agents, optimized for local and open models"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -30,4 +30,4 @@ __all__ = [
30
30
  "sidebar",
31
31
  ]
32
32
 
33
- __version__ = "0.2.7"
33
+ __version__ = "0.2.9"
@@ -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
- raw_input=data.get("arguments"),
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="completed" if success else "failed",
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
- raw_input=item.get("arguments"),
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 byok": 3,
75
- ":connect local": 4,
76
- ":exit": 5,
77
- ":quit": 6,
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 byok": 3,
84
- ":connect local": 4,
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 byok": 3,
92
- ":connect local": 4,
93
+ ":connect grok": 3,
94
+ ":connect byok": 4,
95
+ ":connect local": 5,
93
96
  },
94
97
  ":q": {
95
98
  ":quit": 0,