superqode 2.4.29__tar.gz → 2.4.30__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 (1137) hide show
  1. {superqode-2.4.29 → superqode-2.4.30}/CHANGELOG.md +32 -0
  2. {superqode-2.4.29 → superqode-2.4.30}/PKG-INFO +1 -1
  3. {superqode-2.4.29 → superqode-2.4.30}/pyproject.toml +1 -1
  4. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/__init__.py +1 -1
  5. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/client.py +3 -0
  6. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/client.py +4 -1
  7. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/discovery.py +17 -1
  8. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/schema.py +4 -0
  9. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/harness_picker.py +6 -0
  10. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/agent_run.py +14 -0
  11. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/commands_impl.py +3 -3
  12. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/connect.py +178 -32
  13. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/acp.py +9 -8
  14. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/hub.py +21 -3
  15. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/main.py +8 -0
  16. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/acp_registry.py +62 -4
  17. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/connection_profiles.py +140 -85
  18. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/credentials.py +11 -4
  19. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/env_introspect.py +19 -2
  20. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/gateway/litellm_gateway.py +10 -0
  21. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/harness_catalog.py +45 -1
  22. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/registry.py +20 -0
  23. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/subscription_env.py +12 -2
  24. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/codex_sdk.py +2 -2
  25. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/copilot_sdk.py +2 -2
  26. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/registry.py +2 -2
  27. {superqode-2.4.29 → superqode-2.4.30}/src/superqode.egg-info/PKG-INFO +1 -1
  28. {superqode-2.4.29 → superqode-2.4.30}/src/superqode.egg-info/SOURCES.txt +1 -0
  29. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_registry.py +1 -1
  30. {superqode-2.4.29 → superqode-2.4.30}/tests/test_cli_contract.py +3 -1
  31. {superqode-2.4.29 → superqode-2.4.30}/tests/test_cli_reference_coverage.py +21 -0
  32. {superqode-2.4.29 → superqode-2.4.30}/tests/test_connect_harness_screen.py +18 -8
  33. superqode-2.4.30/tests/test_connect_subscription_routes.py +279 -0
  34. {superqode-2.4.29 → superqode-2.4.30}/tests/test_connection_profiles.py +41 -13
  35. {superqode-2.4.29 → superqode-2.4.30}/tests/test_env_introspect.py +3 -1
  36. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_hub_catalog.py +22 -0
  37. {superqode-2.4.29 → superqode-2.4.30}/tests/test_subscription_billing_policy.py +56 -0
  38. {superqode-2.4.29 → superqode-2.4.30}/tests/test_zai_provider.py +1 -1
  39. {superqode-2.4.29 → superqode-2.4.30}/LICENSE +0 -0
  40. {superqode-2.4.29 → superqode-2.4.30}/MANIFEST.in +0 -0
  41. {superqode-2.4.29 → superqode-2.4.30}/NOTICE +0 -0
  42. {superqode-2.4.29 → superqode-2.4.30}/README.md +0 -0
  43. {superqode-2.4.29 → superqode-2.4.30}/examples/README.md +0 -0
  44. {superqode-2.4.29 → superqode-2.4.30}/examples/a2a/README.md +0 -0
  45. {superqode-2.4.29 → superqode-2.4.30}/examples/a2a/smoke_client.py +0 -0
  46. {superqode-2.4.29 → superqode-2.4.30}/examples/bench/dspy-comprehension.manifest.yaml +0 -0
  47. {superqode-2.4.29 → superqode-2.4.30}/examples/bench/dspy-comprehension.yaml +0 -0
  48. {superqode-2.4.29 → superqode-2.4.30}/examples/bench/jev-tool-routing/README.md +0 -0
  49. {superqode-2.4.29 → superqode-2.4.30}/examples/bench/jev-tool-routing/calc.py +0 -0
  50. {superqode-2.4.29 → superqode-2.4.30}/examples/bench/jev-tool-routing/test_calc.py +0 -0
  51. {superqode-2.4.29 → superqode-2.4.30}/examples/bench/spec-core.yaml +0 -0
  52. {superqode-2.4.29 → superqode-2.4.30}/examples/bench/spec-deepagents.yaml +0 -0
  53. {superqode-2.4.29 → superqode-2.4.30}/examples/bench/spec-prime-agent.yaml +0 -0
  54. {superqode-2.4.29 → superqode-2.4.30}/examples/byok-acp-team.yaml +0 -0
  55. {superqode-2.4.29 → superqode-2.4.30}/examples/codex_sdk_quickstart.py +0 -0
  56. {superqode-2.4.29 → superqode-2.4.30}/examples/evals/omni-release.yaml +0 -0
  57. {superqode-2.4.29 → superqode-2.4.30}/examples/evals/omni-tiny.yaml +0 -0
  58. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/README.md +0 -0
  59. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/manifest-guard/context.md +0 -0
  60. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/manifest-guard/hooks.py +0 -0
  61. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/manifest-guard/tools.py +0 -0
  62. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/packages/README.md +0 -0
  63. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/packages/broken-extension/src/superqode_example_broken/__init__.py +0 -0
  64. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/packages/policy-extension/src/superqode_example_policy/__init__.py +0 -0
  65. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/packages/skill-extension/src/superqode_example_skill/SKILL.md +0 -0
  66. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/packages/skill-extension/src/superqode_example_skill/__init__.py +0 -0
  67. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/packages/tool-extension/src/superqode_example_tool/__init__.py +0 -0
  68. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/packages/tool-extension-v2/src/superqode_example_tool/__init__.py +0 -0
  69. {superqode-2.4.29 → superqode-2.4.30}/examples/extensions/python-package/src/superqode_example_extension/__init__.py +0 -0
  70. {superqode-2.4.29 → superqode-2.4.30}/examples/harness-packages/README.md +0 -0
  71. {superqode-2.4.29 → superqode-2.4.30}/examples/harness-packages/hello-harness/src/superqode_hello_harness/__init__.py +0 -0
  72. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/coding.yaml +0 -0
  73. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/deepagents.yaml +0 -0
  74. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/deepseek-harness.yaml +0 -0
  75. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/ds4.yaml +0 -0
  76. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/gemma4.yaml +0 -0
  77. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/google-adk.yaml +0 -0
  78. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/local-recursive-dynamic.yaml +0 -0
  79. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/mcp-docs.yaml +0 -0
  80. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/no-tool.yaml +0 -0
  81. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/omni-tiny-local.yaml +0 -0
  82. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/omnigent-multi-agent.yaml +0 -0
  83. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/openai-agents.yaml +0 -0
  84. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/prime-agent.yaml +0 -0
  85. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/pydanticai.yaml +0 -0
  86. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/rlm-code-lid.yaml +0 -0
  87. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/systemone/factory-route.yaml +0 -0
  88. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/systemone/ticket-triage.yaml +0 -0
  89. {superqode-2.4.29 → superqode-2.4.30}/examples/harnesses/systemone/tool-gate.yaml +0 -0
  90. {superqode-2.4.29 → superqode-2.4.30}/examples/local-models-team.yaml +0 -0
  91. {superqode-2.4.29 → superqode-2.4.30}/examples/mcp/local_docs_server.py +0 -0
  92. {superqode-2.4.29 → superqode-2.4.30}/examples/omnigent-multi-agent.agent.yaml +0 -0
  93. {superqode-2.4.29 → superqode-2.4.30}/examples/qm-deployment-layer/README.md +0 -0
  94. {superqode-2.4.29 → superqode-2.4.30}/examples/qm-deployment-layer/sandbox/skills/superqode-harness/SKILL.md +0 -0
  95. {superqode-2.4.29 → superqode-2.4.30}/examples/rlm-demo/INCIDENT.md +0 -0
  96. {superqode-2.4.29 → superqode-2.4.30}/examples/rlm-demo/README.md +0 -0
  97. {superqode-2.4.29 → superqode-2.4.30}/examples/rlm-demo/RUNBOOK.md +0 -0
  98. {superqode-2.4.29 → superqode-2.4.30}/examples/rlm-demo/deploy_audit/__init__.py +0 -0
  99. {superqode-2.4.29 → superqode-2.4.30}/examples/rlm-demo/deploy_audit/parser.py +0 -0
  100. {superqode-2.4.29 → superqode-2.4.30}/examples/rlm-demo/deploy_audit/report.py +0 -0
  101. {superqode-2.4.29 → superqode-2.4.30}/examples/rlm-demo/rlm-docker.yaml +0 -0
  102. {superqode-2.4.29 → superqode-2.4.30}/examples/rlm-demo/rlm-monty.yaml +0 -0
  103. {superqode-2.4.29 → superqode-2.4.30}/examples/rlm-demo/tests/test_report.py +0 -0
  104. {superqode-2.4.29 → superqode-2.4.30}/examples/simple-team.yaml +0 -0
  105. {superqode-2.4.29 → superqode-2.4.30}/examples/systemone/rubric-eval.yaml +0 -0
  106. {superqode-2.4.29 → superqode-2.4.30}/examples/systemone/ticket-triage-pack.yaml +0 -0
  107. {superqode-2.4.29 → superqode-2.4.30}/examples/tune/README.md +0 -0
  108. {superqode-2.4.29 → superqode-2.4.30}/scripts/check_release_metadata.py +0 -0
  109. {superqode-2.4.29 → superqode-2.4.30}/setup.cfg +0 -0
  110. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/__init__.py +0 -0
  111. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/client.py +0 -0
  112. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/conformance.py +0 -0
  113. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/connection.py +0 -0
  114. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/context.py +0 -0
  115. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/inspect.py +0 -0
  116. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/keys.py +0 -0
  117. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/limits.py +0 -0
  118. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/oauth.py +0 -0
  119. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/presets.py +0 -0
  120. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/registry.py +0 -0
  121. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/reply.py +0 -0
  122. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/security.py +0 -0
  123. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/server.py +0 -0
  124. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/shortlist.py +0 -0
  125. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/skills.py +0 -0
  126. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/tools.py +0 -0
  127. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/trust.py +0 -0
  128. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/types.py +0 -0
  129. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/understand.py +0 -0
  130. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/a2a/workflows.py +0 -0
  131. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/__init__.py +0 -0
  132. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/doctor.py +0 -0
  133. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/permission_screen.py +0 -0
  134. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/permission_store.py +0 -0
  135. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/render.py +0 -0
  136. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/server.py +0 -0
  137. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/session_store.py +0 -0
  138. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/slash.py +0 -0
  139. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/tool_call_context.py +0 -0
  140. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp/types.py +0 -0
  141. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/acp_discovery.py +0 -0
  142. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/__init__.py +0 -0
  143. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/auto_memory.py +0 -0
  144. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/command_safety.py +0 -0
  145. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/compaction.py +0 -0
  146. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/context_manager.py +0 -0
  147. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/edit_strategies.py +0 -0
  148. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/exec_policy.py +0 -0
  149. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/hooks.py +0 -0
  150. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/instructions.py +0 -0
  151. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/loop.py +0 -0
  152. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/loop_guard.py +0 -0
  153. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/loop_policy.py +0 -0
  154. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/network_policy.py +0 -0
  155. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/output_handler.py +0 -0
  156. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/parallel_compare.py +0 -0
  157. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/peer_agents.py +0 -0
  158. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/plan_mode.py +0 -0
  159. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/reminders.py +0 -0
  160. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/rubric.py +0 -0
  161. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/session_manager.py +0 -0
  162. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/structured_output.py +0 -0
  163. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/summarization.py +0 -0
  164. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/system_prompts.py +0 -0
  165. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/terminal_output_limits.py +0 -0
  166. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/text_tool_calls.py +0 -0
  167. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/tool_args.py +0 -0
  168. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/tool_tracking.py +0 -0
  169. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent/utility_model.py +0 -0
  170. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent_output.py +0 -0
  171. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agent_stream.py +0 -0
  172. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/__init__.py +0 -0
  173. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/acp_registry.py +0 -0
  174. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/agent.minimax.io.toml +0 -0
  175. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/agentpool.phil65.github.io.toml +0 -0
  176. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/agoragentic.com.toml +0 -0
  177. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/ampcode.com.toml +0 -0
  178. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/antigravity.google.toml +0 -0
  179. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/augmentcode.com.toml +0 -0
  180. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/autodev.github.io.toml +0 -0
  181. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/blackbox.ai.toml +0 -0
  182. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/bub.dev.toml +0 -0
  183. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/cagent.dev.toml +0 -0
  184. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/claude.com.toml +0 -0
  185. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/cline.bot.toml +0 -0
  186. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
  187. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/codebuddy.tencent.com.toml +0 -0
  188. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/codex.openai.com.toml +0 -0
  189. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/compassap.ai.toml +0 -0
  190. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/copilot.github.com.toml +0 -0
  191. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/cortex.snowflake.com.toml +0 -0
  192. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/corust.ai.toml +0 -0
  193. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/crow-ai.dev.toml +0 -0
  194. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/cursor.com.toml +0 -0
  195. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/deepagents-code.langchain.com.toml +0 -0
  196. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/deepagents.langchain.com.toml +0 -0
  197. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/devin.ai.toml +0 -0
  198. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/dimcode.dev.toml +0 -0
  199. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/dirac.run.toml +0 -0
  200. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/factory.ai.toml +0 -0
  201. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/fastagent.ai.toml +0 -0
  202. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/fount.dev.toml +0 -0
  203. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/fx.sh.toml +0 -0
  204. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/geminicli.com.toml +0 -0
  205. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/glm.z.ai.toml +0 -0
  206. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
  207. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/harnlang.com.toml +0 -0
  208. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/hermes-agent.nousresearch.com.toml +0 -0
  209. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
  210. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/kilo.ai.toml +0 -0
  211. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/kimchi.dev.toml +0 -0
  212. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
  213. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/kiro.dev.toml +0 -0
  214. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
  215. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/minioncode.dev.toml +0 -0
  216. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/mistral-vibe.mistral.ai.toml +0 -0
  217. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/omp.sh.toml +0 -0
  218. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/openclaw.ai.toml +0 -0
  219. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/opencode.ai.toml +0 -0
  220. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/openhands.dev.toml +0 -0
  221. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/pi.dev.toml +0 -0
  222. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/poolside.ai.toml +0 -0
  223. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/primeintellect.ai.toml +0 -0
  224. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/qoder.com.toml +0 -0
  225. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/qwenlm.github.io.toml +0 -0
  226. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/sigit.dev.toml +0 -0
  227. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/stakpak.dev.toml +0 -0
  228. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/stdiobus.dev.toml +0 -0
  229. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/vtcode.dev.toml +0 -0
  230. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/data/x.ai.toml +0 -0
  231. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/free_models.py +0 -0
  232. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/install_commands.py +0 -0
  233. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/messaging.py +0 -0
  234. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/official_acp.py +0 -0
  235. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/persona.py +0 -0
  236. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/registry.py +0 -0
  237. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/agents/unified.py +0 -0
  238. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/__init__.py +0 -0
  239. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/async_utils.py +0 -0
  240. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/capabilities.py +0 -0
  241. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/constants.py +0 -0
  242. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/css.py +0 -0
  243. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/inputs.py +0 -0
  244. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/__init__.py +0 -0
  245. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/actions_misc.py +0 -0
  246. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/build_harness.py +0 -0
  247. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/clickable_commands.py +0 -0
  248. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/codex.py +0 -0
  249. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/completion.py +0 -0
  250. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/dialogs.py +0 -0
  251. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/events.py +0 -0
  252. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/explore.py +0 -0
  253. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/factory.py +0 -0
  254. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/feedback.py +0 -0
  255. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/formatting.py +0 -0
  256. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/harness_hub.py +0 -0
  257. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_clipboard.py +0 -0
  258. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_completion_helpers.py +0 -0
  259. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_diff_review.py +0 -0
  260. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_exit_lifecycle.py +0 -0
  261. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_file_view.py +0 -0
  262. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_interaction_mode.py +0 -0
  263. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_mcp_attach.py +0 -0
  264. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_message_queue.py +0 -0
  265. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_permissions.py +0 -0
  266. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_recipes_skills.py +0 -0
  267. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_share.py +0 -0
  268. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_startup.py +0 -0
  269. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_todos_plan.py +0 -0
  270. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_vim.py +0 -0
  271. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helper_wizard.py +0 -0
  272. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/helpers.py +0 -0
  273. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/huggingface.py +0 -0
  274. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/local_models.py +0 -0
  275. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/mcp.py +0 -0
  276. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/model_catalog.py +0 -0
  277. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/pickers.py +0 -0
  278. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/pipy_commands.py +0 -0
  279. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/rlm_commands.py +0 -0
  280. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/sidebar.py +0 -0
  281. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/slash_commands.py +0 -0
  282. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/switchboard.py +0 -0
  283. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/mixins/tour.py +0 -0
  284. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/models.py +0 -0
  285. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/navigation.py +0 -0
  286. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/outcomes.py +0 -0
  287. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/progress.py +0 -0
  288. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/project_ui_state.py +0 -0
  289. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/prompt_stack.py +0 -0
  290. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/recipes.py +0 -0
  291. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/session_state.py +0 -0
  292. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/suggester.py +0 -0
  293. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/theme_bridge.py +0 -0
  294. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/welcome.py +0 -0
  295. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app/widgets.py +0 -0
  296. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app_enhanced.py +0 -0
  297. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/app_main.py +0 -0
  298. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/approval.py +0 -0
  299. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/atomic.py +0 -0
  300. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/auth/__init__.py +0 -0
  301. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/benchmarks.py +0 -0
  302. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/channels/__init__.py +0 -0
  303. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/channels/config.py +0 -0
  304. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/channels/discord.py +0 -0
  305. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/channels/service.py +0 -0
  306. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/channels/slack.py +0 -0
  307. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/channels/telegram.py +0 -0
  308. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/claude.py +0 -0
  309. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/code_theme.py +0 -0
  310. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/codex.py +0 -0
  311. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/__init__.py +0 -0
  312. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/a2a.py +0 -0
  313. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/a2a_connect.py +0 -0
  314. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/a2a_keys.py +0 -0
  315. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/agents.py +0 -0
  316. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/auth.py +0 -0
  317. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/benchmark.py +0 -0
  318. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/config.py +0 -0
  319. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/connect.py +0 -0
  320. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/daemon.py +0 -0
  321. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/factory.py +0 -0
  322. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/gauge.py +0 -0
  323. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/__init__.py +0 -0
  324. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/_group.py +0 -0
  325. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/_helpers.py +0 -0
  326. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/bench.py +0 -0
  327. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/candidates.py +0 -0
  328. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/evaluation.py +0 -0
  329. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/evidence.py +0 -0
  330. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/inbox.py +0 -0
  331. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/lifecycle.py +0 -0
  332. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/logbook.py +0 -0
  333. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/observability.py +0 -0
  334. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/optimization.py +0 -0
  335. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/promotion.py +0 -0
  336. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/protocol.py +0 -0
  337. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/registry.py +0 -0
  338. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/replay.py +0 -0
  339. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/run_history.py +0 -0
  340. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/systemone.py +0 -0
  341. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/tune.py +0 -0
  342. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/harness/worker.py +0 -0
  343. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/hub.py +0 -0
  344. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/local.py +0 -0
  345. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/memory.py +0 -0
  346. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/models.py +0 -0
  347. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/optimize.py +0 -0
  348. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/plugins.py +0 -0
  349. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/policy.py +0 -0
  350. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/profiles.py +0 -0
  351. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/providers.py +0 -0
  352. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/runtime.py +0 -0
  353. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/sandbox.py +0 -0
  354. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/serve.py +0 -0
  355. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/sessions.py +0 -0
  356. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/share.py +0 -0
  357. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/skillopt.py +0 -0
  358. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/skills.py +0 -0
  359. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/tools.py +0 -0
  360. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/trust.py +0 -0
  361. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/uhp.py +0 -0
  362. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/update.py +0 -0
  363. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/commands/work.py +0 -0
  364. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/config/__init__.py +0 -0
  365. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/config/loader.py +0 -0
  366. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/config/schema.py +0 -0
  367. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/core/__init__.py +0 -0
  368. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/danger.py +0 -0
  369. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/data/eval_fixtures/ci-dynamic-root-cause.log +0 -0
  370. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/data/eval_fixtures/ci-root-cause.log +0 -0
  371. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/data/eval_packs/decision-routing.yaml +0 -0
  372. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/data/eval_packs/decision-tool-gate.yaml +0 -0
  373. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/data/eval_packs/local_dynamic_workflow_smoke.yaml +0 -0
  374. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/data/eval_packs/local_recursive_smoke.yaml +0 -0
  375. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/data/superqode-template.yaml +0 -0
  376. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/design_system.py +0 -0
  377. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/dialogs/__init__.py +0 -0
  378. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/dialogs/base.py +0 -0
  379. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/dialogs/model.py +0 -0
  380. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/dialogs/provider.py +0 -0
  381. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/dialogs/runtime.py +0 -0
  382. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/diff_view.py +0 -0
  383. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/enterprise.py +0 -0
  384. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/evaluation/__init__.py +0 -0
  385. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/evaluation/adapters.py +0 -0
  386. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/evaluation/behaviors.py +0 -0
  387. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/evaluation/engine.py +0 -0
  388. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/evaluation/scenarios.py +0 -0
  389. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/execution/__init__.py +0 -0
  390. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/execution/linter.py +0 -0
  391. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/execution/modes.py +0 -0
  392. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/execution/resolver.py +0 -0
  393. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/execution/runner.py +0 -0
  394. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/extensions.py +0 -0
  395. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/file_explorer.py +0 -0
  396. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/file_viewer.py +0 -0
  397. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/flash.py +0 -0
  398. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/gauge/__init__.py +0 -0
  399. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/gauge/levels.py +0 -0
  400. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/gauge/record.py +0 -0
  401. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/gauge/sources.py +0 -0
  402. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/governance.py +0 -0
  403. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/__init__.py +0 -0
  404. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/accelerator.py +0 -0
  405. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/agent_importer.py +0 -0
  406. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/approval_memory.py +0 -0
  407. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/__init__.py +0 -0
  408. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/base.py +0 -0
  409. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/deepagents.py +0 -0
  410. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/dsh.py +0 -0
  411. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/managed.py +0 -0
  412. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/pipy.py +0 -0
  413. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/prime_agent.py +0 -0
  414. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/pydanticai.py +0 -0
  415. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/registry.py +0 -0
  416. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/rlm.py +0 -0
  417. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/rlm_code.py +0 -0
  418. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/runtime.py +0 -0
  419. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/systemone.py +0 -0
  420. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/tau.py +0 -0
  421. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/backends/uhp.py +0 -0
  422. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/bench.py +0 -0
  423. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/catalog.py +0 -0
  424. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/compiler.py +0 -0
  425. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/conformance.py +0 -0
  426. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/context_handles.py +0 -0
  427. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/diagnostics.py +0 -0
  428. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/discovery.py +0 -0
  429. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/drift.py +0 -0
  430. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/eval.py +0 -0
  431. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/evaluators.py +0 -0
  432. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/events.py +0 -0
  433. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/explain.py +0 -0
  434. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/hooks.py +0 -0
  435. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/kernel.py +0 -0
  436. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/loader.py +0 -0
  437. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/mcp_bridge.py +0 -0
  438. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/model_policy.py +0 -0
  439. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/model_routes.py +0 -0
  440. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/observability.py +0 -0
  441. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/omni.py +0 -0
  442. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/omnigent_importer.py +0 -0
  443. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/optimize.py +0 -0
  444. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/output.py +0 -0
  445. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/permissions.py +0 -0
  446. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/pipy_adapter.py +0 -0
  447. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/pipy_extensions.py +0 -0
  448. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/promotion.py +0 -0
  449. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/protocol.py +0 -0
  450. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/protocol_adapters.py +0 -0
  451. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/protocol_controller.py +0 -0
  452. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/registry.py +0 -0
  453. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/rlm_adapter.py +0 -0
  454. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/rlm_code_adapter.py +0 -0
  455. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/sandbox.py +0 -0
  456. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/self_improve.py +0 -0
  457. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/spec.py +0 -0
  458. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/store.py +0 -0
  459. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/tau_adapter.py +0 -0
  460. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/tau_management.py +0 -0
  461. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/templates.py +0 -0
  462. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/testing.py +0 -0
  463. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/uhp_adapter.py +0 -0
  464. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/uhp_client.py +0 -0
  465. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/uhp_server.py +0 -0
  466. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/wizard.py +0 -0
  467. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/workflow.py +0 -0
  468. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/harness/workflow_presets.py +0 -0
  469. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/headless.py +0 -0
  470. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/history.py +0 -0
  471. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/image_input.py +0 -0
  472. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/jev_tools/__init__.py +0 -0
  473. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/jev_tools/codex.py +0 -0
  474. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/jev_tools/sdk.py +0 -0
  475. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/jev_tools/service.py +0 -0
  476. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/__init__.py +0 -0
  477. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/airplane.py +0 -0
  478. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/bench.py +0 -0
  479. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/build.py +0 -0
  480. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/code_index.py +0 -0
  481. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/devstral.yaml +0 -0
  482. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/ds4.yaml +0 -0
  483. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/gemma4.yaml +0 -0
  484. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/glm.yaml +0 -0
  485. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/gpt-oss.yaml +0 -0
  486. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/kimi.yaml +0 -0
  487. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/laguna.yaml +0 -0
  488. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/minimax.yaml +0 -0
  489. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/qwen-coder.yaml +0 -0
  490. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/model-packs/qwen3.yaml +0 -0
  491. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/data/stack_matrix.yaml +0 -0
  492. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/doctor.py +0 -0
  493. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/engines.py +0 -0
  494. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/guardrails.py +0 -0
  495. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/hardware.py +0 -0
  496. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/install.py +0 -0
  497. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/inventory.py +0 -0
  498. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/labs.py +0 -0
  499. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/laguna.py +0 -0
  500. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/matrix.py +0 -0
  501. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/migrate.py +0 -0
  502. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/optimize.py +0 -0
  503. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/packs.py +0 -0
  504. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/repo.py +0 -0
  505. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/servers.py +0 -0
  506. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/setup.py +0 -0
  507. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/local/smoke.py +0 -0
  508. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/logging/__init__.py +0 -0
  509. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/logging/adapters.py +0 -0
  510. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/logging/formatter.py +0 -0
  511. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/logging/integration.py +0 -0
  512. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/logging/sinks.py +0 -0
  513. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/logging/unified_log.py +0 -0
  514. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/lsp/__init__.py +0 -0
  515. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/lsp/client.py +0 -0
  516. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/__init__.py +0 -0
  517. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/auth_storage.py +0 -0
  518. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/client.py +0 -0
  519. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/config.py +0 -0
  520. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/elicitation.py +0 -0
  521. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/harness_server.py +0 -0
  522. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/hf_auth.py +0 -0
  523. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/integration.py +0 -0
  524. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/jev_router_server.py +0 -0
  525. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/oauth.py +0 -0
  526. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/oauth_callback.py +0 -0
  527. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/sampling.py +0 -0
  528. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/search.py +0 -0
  529. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/mcp/types.py +0 -0
  530. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/memory/__init__.py +0 -0
  531. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/memory/config.py +0 -0
  532. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/memory/providers.py +0 -0
  533. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/memory/types.py +0 -0
  534. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/notifications.py +0 -0
  535. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/optimize/__init__.py +0 -0
  536. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/optimize/launchers.py +0 -0
  537. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/optimize/profiles.py +0 -0
  538. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/permissions/__init__.py +0 -0
  539. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/permissions/rules.py +0 -0
  540. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/__init__.py +0 -0
  541. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/ai/__init__.py +0 -0
  542. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/ai/fake.py +0 -0
  543. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/ai/gateway.py +0 -0
  544. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/ai/models.py +0 -0
  545. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/ai/transform.py +0 -0
  546. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/coding_session.py +0 -0
  547. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/compaction.py +0 -0
  548. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/config.py +0 -0
  549. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/event_stream.py +0 -0
  550. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/events.py +0 -0
  551. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/harness.py +0 -0
  552. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/harness_events.py +0 -0
  553. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/loop.py +0 -0
  554. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/messages.py +0 -0
  555. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/permissions.py +0 -0
  556. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/prompt_templates.py +0 -0
  557. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/provider_events.py +0 -0
  558. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/resources.py +0 -0
  559. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/session/__init__.py +0 -0
  560. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/session/codec.py +0 -0
  561. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/session/entries.py +0 -0
  562. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/session/jsonl.py +0 -0
  563. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/session/memory.py +0 -0
  564. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/session/repository.py +0 -0
  565. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/session/session.py +0 -0
  566. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/session/storage.py +0 -0
  567. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/signals.py +0 -0
  568. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/skills.py +0 -0
  569. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/stream.py +0 -0
  570. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/system_prompt.py +0 -0
  571. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/tools/__init__.py +0 -0
  572. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/tools/base.py +0 -0
  573. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/tools/edit_diff.py +0 -0
  574. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/tools/files.py +0 -0
  575. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/tools/paths.py +0 -0
  576. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/tools/registry.py +0 -0
  577. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/tools/search.py +0 -0
  578. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/tools/shell.py +0 -0
  579. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/tools/truncate.py +0 -0
  580. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/types.py +0 -0
  581. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pipy/validation.py +0 -0
  582. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/plan.py +0 -0
  583. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/platform_locks.py +0 -0
  584. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/plugins.py +0 -0
  585. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/project_trust.py +0 -0
  586. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/__init__.py +0 -0
  587. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/_builtin_profiles.py +0 -0
  588. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/acp_free_models.py +0 -0
  589. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/acp_models.py +0 -0
  590. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/apple_fm.py +0 -0
  591. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/catalog.py +0 -0
  592. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/copilot_auth.py +0 -0
  593. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/dynamic.py +0 -0
  594. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/free_inference.py +0 -0
  595. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/gateway/__init__.py +0 -0
  596. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/gateway/base.py +0 -0
  597. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
  598. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/gateway/synthetic.py +0 -0
  599. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/grok_cli_auth.py +0 -0
  600. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/health.py +0 -0
  601. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/huggingface/__init__.py +0 -0
  602. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/huggingface/convert.py +0 -0
  603. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/huggingface/downloader.py +0 -0
  604. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/huggingface/endpoints.py +0 -0
  605. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/huggingface/fetch.py +0 -0
  606. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/huggingface/hub.py +0 -0
  607. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/huggingface/inference.py +0 -0
  608. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
  609. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/live_models.py +0 -0
  610. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/__init__.py +0 -0
  611. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/_mlx_worker.py +0 -0
  612. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/base.py +0 -0
  613. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/capabilities.py +0 -0
  614. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/context_probe.py +0 -0
  615. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/discovery.py +0 -0
  616. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/ds4.py +0 -0
  617. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/lmstudio.py +0 -0
  618. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/mlx.py +0 -0
  619. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/mlx_engine.py +0 -0
  620. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/mlx_tools.py +0 -0
  621. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/ollama.py +0 -0
  622. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/sglang.py +0 -0
  623. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/smoke.py +0 -0
  624. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/tgi.py +0 -0
  625. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/tool_support.py +0 -0
  626. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local/vllm.py +0 -0
  627. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/local_order.py +0 -0
  628. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/manager.py +0 -0
  629. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/model_specs.py +0 -0
  630. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/models.py +0 -0
  631. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/models_dev.py +0 -0
  632. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/opencode_models.py +0 -0
  633. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/__init__.py +0 -0
  634. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
  635. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/converters/messages.py +0 -0
  636. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/converters/tools.py +0 -0
  637. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
  638. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/schema/models.py +0 -0
  639. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
  640. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
  641. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
  642. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
  643. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
  644. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
  645. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
  646. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/prime_agent.py +0 -0
  647. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/profiles.py +0 -0
  648. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/recommendations.py +0 -0
  649. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/subscription_login.py +0 -0
  650. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/uhp.py +0 -0
  651. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/providers/usage.py +0 -0
  652. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/pure_mode.py +0 -0
  653. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/py.typed +0 -0
  654. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rendering/__init__.py +0 -0
  655. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rendering/html_export.py +0 -0
  656. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rendering/markdown.py +0 -0
  657. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rendering/systemone.py +0 -0
  658. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rendering/transcript_export.py +0 -0
  659. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/__init__.py +0 -0
  660. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/coding_session.py +0 -0
  661. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/config.py +0 -0
  662. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/context.py +0 -0
  663. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/identity.py +0 -0
  664. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/kernel.py +0 -0
  665. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/kernel_backend.py +0 -0
  666. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/kernel_docker.py +0 -0
  667. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/kernel_monty.py +0 -0
  668. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/kernel_server.py +0 -0
  669. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/policy.py +0 -0
  670. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/root_runtime.py +0 -0
  671. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/root_worker.py +0 -0
  672. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/sandbox.py +0 -0
  673. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/subcalls.py +0 -0
  674. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/supervisor.py +0 -0
  675. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/worker.py +0 -0
  676. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/rlm/worker_process.py +0 -0
  677. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/__init__.py +0 -0
  678. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/adk.py +0 -0
  679. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/antigravity_cli.py +0 -0
  680. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/antigravity_managed.py +0 -0
  681. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/antigravity_sdk.py +0 -0
  682. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/antigravity_status.py +0 -0
  683. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/base.py +0 -0
  684. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/builtin.py +0 -0
  685. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/claude_agent_sdk.py +0 -0
  686. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/devin_cli.py +0 -0
  687. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/devin_status.py +0 -0
  688. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/errors.py +0 -0
  689. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/openai_agents.py +0 -0
  690. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/openai_sandbox.py +0 -0
  691. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/openai_session.py +0 -0
  692. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/pydanticai.py +0 -0
  693. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/tool_bridge.py +0 -0
  694. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/tool_bridge_openai.py +0 -0
  695. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/tool_bridge_pydanticai.py +0 -0
  696. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/runtime/vendor_cli.py +0 -0
  697. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/safety/__init__.py +0 -0
  698. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/safety/sandbox.py +0 -0
  699. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/safety/warnings.py +0 -0
  700. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/sandbox/__init__.py +0 -0
  701. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/sandbox/backends.py +0 -0
  702. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/sandbox/execution.py +0 -0
  703. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/sandbox/local_sandbox.py +0 -0
  704. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/search_registry.py +0 -0
  705. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/server/__init__.py +0 -0
  706. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/server/api.py +0 -0
  707. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/server/web.py +0 -0
  708. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/session/__init__.py +0 -0
  709. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/session/factory.py +0 -0
  710. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/session/harness_bridge.py +0 -0
  711. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/session/persistence.py +0 -0
  712. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/session/share_artifacts.py +0 -0
  713. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/session/sharing.py +0 -0
  714. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/session/switchboard.py +0 -0
  715. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/session.py +0 -0
  716. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/sidebar.py +0 -0
  717. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/skillopt.py +0 -0
  718. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/skills.py +0 -0
  719. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/stream_view.py +0 -0
  720. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/styles/__init__.py +0 -0
  721. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/__init__.py +0 -0
  722. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/audit.py +0 -0
  723. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/client.py +0 -0
  724. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/compose.py +0 -0
  725. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/config.py +0 -0
  726. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/context_prune.py +0 -0
  727. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/decision.py +0 -0
  728. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/live.py +0 -0
  729. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/pack.py +0 -0
  730. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/packs/context_prune.yaml +0 -0
  731. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/packs/factory_route.yaml +0 -0
  732. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/packs/rubric.yaml +0 -0
  733. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/packs/tool_gate.yaml +0 -0
  734. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/runtime.py +0 -0
  735. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/state.py +0 -0
  736. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/tool_router.py +0 -0
  737. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/tool_search.py +0 -0
  738. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/tune.py +0 -0
  739. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/systemone/types.py +0 -0
  740. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tool_call.py +0 -0
  741. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tool_gateway/__init__.py +0 -0
  742. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tool_gateway/app.py +0 -0
  743. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tool_gateway/routing.py +0 -0
  744. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/__init__.py +0 -0
  745. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/agent_tools.py +0 -0
  746. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/apply_patch.py +0 -0
  747. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/base.py +0 -0
  748. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/batch_tool.py +0 -0
  749. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/compact_tool.py +0 -0
  750. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/context_handle.py +0 -0
  751. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/context_tools.py +0 -0
  752. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/core_tools.py +0 -0
  753. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/diagnostics.py +0 -0
  754. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/diff_utils.py +0 -0
  755. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/discovery.py +0 -0
  756. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/display.py +0 -0
  757. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/dynamic_workflow.py +0 -0
  758. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/edit_tools.py +0 -0
  759. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/enhanced_base.py +0 -0
  760. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/env_policy.py +0 -0
  761. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/file_tools.py +0 -0
  762. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/file_tracking.py +0 -0
  763. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/governed.py +0 -0
  764. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/harness_agent_session.py +0 -0
  765. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/image_tools.py +0 -0
  766. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/lsp_tools.py +0 -0
  767. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/mcp_tools.py +0 -0
  768. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/monty_tool.py +0 -0
  769. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/network_tools.py +0 -0
  770. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/output_spill.py +0 -0
  771. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/peer_agent_tools.py +0 -0
  772. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/permissions.py +0 -0
  773. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/post_edit.py +0 -0
  774. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/question_tool.py +0 -0
  775. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/request_permissions_tool.py +0 -0
  776. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/search_tools.py +0 -0
  777. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/semantic_search.py +0 -0
  778. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/shell_session.py +0 -0
  779. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/shell_tools.py +0 -0
  780. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/skill_tools.py +0 -0
  781. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/spawn_harness.py +0 -0
  782. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/todo_tools.py +0 -0
  783. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/tool_search.py +0 -0
  784. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/validation.py +0 -0
  785. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tools/web_tools.py +0 -0
  786. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tui_integration.py +0 -0
  787. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tui_widgets/__init__.py +0 -0
  788. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
  789. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tui_widgets/widgets/progress.py +0 -0
  790. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
  791. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/undo_manager.py +0 -0
  792. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/utils/__init__.py +0 -0
  793. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/utils/error_handling.py +0 -0
  794. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/utils/fuzzy.py +0 -0
  795. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/__init__.py +0 -0
  796. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/a2a_connect.py +0 -0
  797. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/agent_store.py +0 -0
  798. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/agent_switcher.py +0 -0
  799. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/animation_manager.py +0 -0
  800. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/code_context.py +0 -0
  801. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/command_palette.py +0 -0
  802. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/connection_status.py +0 -0
  803. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/conversation_history.py +0 -0
  804. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/diff_indicator.py +0 -0
  805. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/enhanced_status_bar.py +0 -0
  806. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/enhanced_toast.py +0 -0
  807. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/file_browser.py +0 -0
  808. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/file_editor.py +0 -0
  809. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/file_reference.py +0 -0
  810. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/harness_hub.py +0 -0
  811. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/history_search.py +0 -0
  812. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/leader_key.py +0 -0
  813. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/mode_switcher.py +0 -0
  814. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/model_picker.py +0 -0
  815. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/outcome_screen.py +0 -0
  816. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/permission_preview.py +0 -0
  817. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/prompt.py +0 -0
  818. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/provider_connect.py +0 -0
  819. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/pty_shell.py +0 -0
  820. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/resizable_sidebar.py +0 -0
  821. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/response_changes.py +0 -0
  822. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/response_display.py +0 -0
  823. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/rewind_overlay.py +0 -0
  824. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/rich_tool_display.py +0 -0
  825. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/session_browser.py +0 -0
  826. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/sidebar_panels.py +0 -0
  827. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/slash_commands.py +0 -0
  828. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/slash_complete.py +0 -0
  829. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/split_view.py +0 -0
  830. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/status_bar.py +0 -0
  831. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/superqode_display.py +0 -0
  832. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/systemone_tune.py +0 -0
  833. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/theme_picker.py +0 -0
  834. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/thinking.py +0 -0
  835. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/thinking_display.py +0 -0
  836. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/throbber.py +0 -0
  837. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/toast.py +0 -0
  838. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/uhp_connect.py +0 -0
  839. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/widgets/unified_output.py +0 -0
  840. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workorders/__init__.py +0 -0
  841. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workorders/cockpit.py +0 -0
  842. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workorders/integration.py +0 -0
  843. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workorders/models.py +0 -0
  844. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workorders/runner.py +0 -0
  845. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workorders/store.py +0 -0
  846. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workorders/usage.py +0 -0
  847. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workorders/worker.py +0 -0
  848. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/__init__.py +0 -0
  849. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/artifacts.py +0 -0
  850. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/change_summary.py +0 -0
  851. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/coordinator.py +0 -0
  852. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/diff_tracker.py +0 -0
  853. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/git_guard.py +0 -0
  854. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/git_snapshot.py +0 -0
  855. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/manager.py +0 -0
  856. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/snapshot.py +0 -0
  857. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/watcher.py +0 -0
  858. {superqode-2.4.29 → superqode-2.4.30}/src/superqode/workspace/worktree.py +0 -0
  859. {superqode-2.4.29 → superqode-2.4.30}/src/superqode.egg-info/dependency_links.txt +0 -0
  860. {superqode-2.4.29 → superqode-2.4.30}/src/superqode.egg-info/entry_points.txt +0 -0
  861. {superqode-2.4.29 → superqode-2.4.30}/src/superqode.egg-info/requires.txt +0 -0
  862. {superqode-2.4.29 → superqode-2.4.30}/src/superqode.egg-info/top_level.txt +0 -0
  863. {superqode-2.4.29 → superqode-2.4.30}/tests/test_030_candidate.py +0 -0
  864. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_bridge.py +0 -0
  865. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_conformance.py +0 -0
  866. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_connect.py +0 -0
  867. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_context.py +0 -0
  868. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_keys.py +0 -0
  869. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_limits.py +0 -0
  870. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_oauth.py +0 -0
  871. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_registry.py +0 -0
  872. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_security.py +0 -0
  873. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_shortlist.py +0 -0
  874. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_trust.py +0 -0
  875. {superqode-2.4.29 → superqode-2.4.30}/tests/test_a2a_understand.py +0 -0
  876. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_agent_dispatch.py +0 -0
  877. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_client.py +0 -0
  878. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_free_models.py +0 -0
  879. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_parent_tool_linking.py +0 -0
  880. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_permission_store.py +0 -0
  881. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_render.py +0 -0
  882. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_server.py +0 -0
  883. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_session_store.py +0 -0
  884. {superqode-2.4.29 → superqode-2.4.30}/tests/test_acp_slash.py +0 -0
  885. {superqode-2.4.29 → superqode-2.4.30}/tests/test_adaptive_compaction.py +0 -0
  886. {superqode-2.4.29 → superqode-2.4.30}/tests/test_agent_importer.py +0 -0
  887. {superqode-2.4.29 → superqode-2.4.30}/tests/test_agent_install_commands.py +0 -0
  888. {superqode-2.4.29 → superqode-2.4.30}/tests/test_agent_loop_harness.py +0 -0
  889. {superqode-2.4.29 → superqode-2.4.30}/tests/test_agent_memory.py +0 -0
  890. {superqode-2.4.29 → superqode-2.4.30}/tests/test_agents_md_compat.py +0 -0
  891. {superqode-2.4.29 → superqode-2.4.30}/tests/test_agy_tui_commands.py +0 -0
  892. {superqode-2.4.29 → superqode-2.4.30}/tests/test_app_main_contract.py +0 -0
  893. {superqode-2.4.29 → superqode-2.4.30}/tests/test_apply_patch.py +0 -0
  894. {superqode-2.4.29 → superqode-2.4.30}/tests/test_auth.py +0 -0
  895. {superqode-2.4.29 → superqode-2.4.30}/tests/test_bash_spill.py +0 -0
  896. {superqode-2.4.29 → superqode-2.4.30}/tests/test_benchmarks.py +0 -0
  897. {superqode-2.4.29 → superqode-2.4.30}/tests/test_catalog_freshness.py +0 -0
  898. {superqode-2.4.29 → superqode-2.4.30}/tests/test_change_summary.py +0 -0
  899. {superqode-2.4.29 → superqode-2.4.30}/tests/test_channels.py +0 -0
  900. {superqode-2.4.29 → superqode-2.4.30}/tests/test_cli_commands.py +0 -0
  901. {superqode-2.4.29 → superqode-2.4.30}/tests/test_cli_connect.py +0 -0
  902. {superqode-2.4.29 → superqode-2.4.30}/tests/test_clickable_commands.py +0 -0
  903. {superqode-2.4.29 → superqode-2.4.30}/tests/test_command_safety.py +0 -0
  904. {superqode-2.4.29 → superqode-2.4.30}/tests/test_commands_runtime.py +0 -0
  905. {superqode-2.4.29 → superqode-2.4.30}/tests/test_compaction.py +0 -0
  906. {superqode-2.4.29 → superqode-2.4.30}/tests/test_conditional_instructions.py +0 -0
  907. {superqode-2.4.29 → superqode-2.4.30}/tests/test_config_loader.py +0 -0
  908. {superqode-2.4.29 → superqode-2.4.30}/tests/test_config_runtime.py +0 -0
  909. {superqode-2.4.29 → superqode-2.4.30}/tests/test_connect_setup.py +0 -0
  910. {superqode-2.4.29 → superqode-2.4.30}/tests/test_context_handles.py +0 -0
  911. {superqode-2.4.29 → superqode-2.4.30}/tests/test_context_probe.py +0 -0
  912. {superqode-2.4.29 → superqode-2.4.30}/tests/test_context_prune.py +0 -0
  913. {superqode-2.4.29 → superqode-2.4.30}/tests/test_context_remaining.py +0 -0
  914. {superqode-2.4.29 → superqode-2.4.30}/tests/test_copilot_login_ux.py +0 -0
  915. {superqode-2.4.29 → superqode-2.4.30}/tests/test_copilot_tui_commands.py +0 -0
  916. {superqode-2.4.29 → superqode-2.4.30}/tests/test_create_skill_tool.py +0 -0
  917. {superqode-2.4.29 → superqode-2.4.30}/tests/test_decision_evaluators.py +0 -0
  918. {superqode-2.4.29 → superqode-2.4.30}/tests/test_deepagents_model_spec.py +0 -0
  919. {superqode-2.4.29 → superqode-2.4.30}/tests/test_deferred_tools.py +0 -0
  920. {superqode-2.4.29 → superqode-2.4.30}/tests/test_design_system_contrast.py +0 -0
  921. {superqode-2.4.29 → superqode-2.4.30}/tests/test_developer_workflow_docs.py +0 -0
  922. {superqode-2.4.29 → superqode-2.4.30}/tests/test_ds4_local_client.py +0 -0
  923. {superqode-2.4.29 → superqode-2.4.30}/tests/test_dsh_harness.py +0 -0
  924. {superqode-2.4.29 → superqode-2.4.30}/tests/test_dx_enhancements.py +0 -0
  925. {superqode-2.4.29 → superqode-2.4.30}/tests/test_dynamic_workflow_tool.py +0 -0
  926. {superqode-2.4.29 → superqode-2.4.30}/tests/test_edit_line_number_strip.py +0 -0
  927. {superqode-2.4.29 → superqode-2.4.30}/tests/test_execution_resolver.py +0 -0
  928. {superqode-2.4.29 → superqode-2.4.30}/tests/test_extensions.py +0 -0
  929. {superqode-2.4.29 → superqode-2.4.30}/tests/test_final_parity_wave.py +0 -0
  930. {superqode-2.4.29 → superqode-2.4.30}/tests/test_free_models.py +0 -0
  931. {superqode-2.4.29 → superqode-2.4.30}/tests/test_governance.py +0 -0
  932. {superqode-2.4.29 → superqode-2.4.30}/tests/test_grok_cli_auth.py +0 -0
  933. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_agent_session.py +0 -0
  934. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_backends.py +0 -0
  935. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_bench.py +0 -0
  936. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_bench_paths.py +0 -0
  937. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_catalog.py +0 -0
  938. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_connect_catalog.py +0 -0
  939. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_drift.py +0 -0
  940. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_eval_splits.py +0 -0
  941. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_examples.py +0 -0
  942. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_explain.py +0 -0
  943. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_hooks.py +0 -0
  944. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_hub_screen.py +0 -0
  945. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_kernel.py +0 -0
  946. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_mcp_server.py +0 -0
  947. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_model_policy.py +0 -0
  948. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_observability.py +0 -0
  949. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_omni.py +0 -0
  950. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_output.py +0 -0
  951. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_permissions.py +0 -0
  952. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_promotion.py +0 -0
  953. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_protocol.py +0 -0
  954. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_sandbox.py +0 -0
  955. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_seesaw_dimensions.py +0 -0
  956. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_self_improve.py +0 -0
  957. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_session_bridge.py +0 -0
  958. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_spec.py +0 -0
  959. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_store.py +0 -0
  960. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_usage.py +0 -0
  961. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_wizard.py +0 -0
  962. {superqode-2.4.29 → superqode-2.4.30}/tests/test_harness_workflow.py +0 -0
  963. {superqode-2.4.29 → superqode-2.4.30}/tests/test_headless.py +0 -0
  964. {superqode-2.4.29 → superqode-2.4.30}/tests/test_hf_fetch.py +0 -0
  965. {superqode-2.4.29 → superqode-2.4.30}/tests/test_hooks.py +0 -0
  966. {superqode-2.4.29 → superqode-2.4.30}/tests/test_install_script.py +0 -0
  967. {superqode-2.4.29 → superqode-2.4.30}/tests/test_integration_docs.py +0 -0
  968. {superqode-2.4.29 → superqode-2.4.30}/tests/test_jev_tools_sdk.py +0 -0
  969. {superqode-2.4.29 → superqode-2.4.30}/tests/test_kimi_k3_provider.py +0 -0
  970. {superqode-2.4.29 → superqode-2.4.30}/tests/test_kimi_k3_routes.py +0 -0
  971. {superqode-2.4.29 → superqode-2.4.30}/tests/test_linter_runner.py +0 -0
  972. {superqode-2.4.29 → superqode-2.4.30}/tests/test_litellm_gateway.py +0 -0
  973. {superqode-2.4.29 → superqode-2.4.30}/tests/test_live_acp_registry.py +0 -0
  974. {superqode-2.4.29 → superqode-2.4.30}/tests/test_live_models.py +0 -0
  975. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_airplane.py +0 -0
  976. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_build.py +0 -0
  977. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_code_index.py +0 -0
  978. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_install.py +0 -0
  979. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_labs.py +0 -0
  980. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_migrate.py +0 -0
  981. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_model_optimizations.py +0 -0
  982. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_packs.py +0 -0
  983. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_sandbox.py +0 -0
  984. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_search.py +0 -0
  985. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_servers.py +0 -0
  986. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_setup.py +0 -0
  987. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_smoke.py +0 -0
  988. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_stack.py +0 -0
  989. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_tool_capabilities.py +0 -0
  990. {superqode-2.4.29 → superqode-2.4.30}/tests/test_local_tool_support.py +0 -0
  991. {superqode-2.4.29 → superqode-2.4.30}/tests/test_login_api.py +0 -0
  992. {superqode-2.4.29 → superqode-2.4.30}/tests/test_loop_guard.py +0 -0
  993. {superqode-2.4.29 → superqode-2.4.30}/tests/test_managed_harness_backend.py +0 -0
  994. {superqode-2.4.29 → superqode-2.4.30}/tests/test_markdown_render.py +0 -0
  995. {superqode-2.4.29 → superqode-2.4.30}/tests/test_mcp.py +0 -0
  996. {superqode-2.4.29 → superqode-2.4.30}/tests/test_mcp_example_server.py +0 -0
  997. {superqode-2.4.29 → superqode-2.4.30}/tests/test_mcp_integration.py +0 -0
  998. {superqode-2.4.29 → superqode-2.4.30}/tests/test_mcp_live.py +0 -0
  999. {superqode-2.4.29 → superqode-2.4.30}/tests/test_mcp_oauth_generalized.py +0 -0
  1000. {superqode-2.4.29 → superqode-2.4.30}/tests/test_mcp_tools_runtime.py +0 -0
  1001. {superqode-2.4.29 → superqode-2.4.30}/tests/test_mcp_two_way.py +0 -0
  1002. {superqode-2.4.29 → superqode-2.4.30}/tests/test_memory_recall.py +0 -0
  1003. {superqode-2.4.29 → superqode-2.4.30}/tests/test_mlx_tools.py +0 -0
  1004. {superqode-2.4.29 → superqode-2.4.30}/tests/test_model_profiles.py +0 -0
  1005. {superqode-2.4.29 → superqode-2.4.30}/tests/test_model_specs.py +0 -0
  1006. {superqode-2.4.29 → superqode-2.4.30}/tests/test_models_dev.py +0 -0
  1007. {superqode-2.4.29 → superqode-2.4.30}/tests/test_monty_tool.py +0 -0
  1008. {superqode-2.4.29 → superqode-2.4.30}/tests/test_navigation_history.py +0 -0
  1009. {superqode-2.4.29 → superqode-2.4.30}/tests/test_network_policy.py +0 -0
  1010. {superqode-2.4.29 → superqode-2.4.30}/tests/test_ollama_client.py +0 -0
  1011. {superqode-2.4.29 → superqode-2.4.30}/tests/test_omnigent_agent_session_smoke.py +0 -0
  1012. {superqode-2.4.29 → superqode-2.4.30}/tests/test_omnigent_importer.py +0 -0
  1013. {superqode-2.4.29 → superqode-2.4.30}/tests/test_openai_session.py +0 -0
  1014. {superqode-2.4.29 → superqode-2.4.30}/tests/test_optimize_harnesses.py +0 -0
  1015. {superqode-2.4.29 → superqode-2.4.30}/tests/test_output_spill.py +0 -0
  1016. {superqode-2.4.29 → superqode-2.4.30}/tests/test_parallel_compare.py +0 -0
  1017. {superqode-2.4.29 → superqode-2.4.30}/tests/test_peer_agents.py +0 -0
  1018. {superqode-2.4.29 → superqode-2.4.30}/tests/test_plugin_hook_wiring.py +0 -0
  1019. {superqode-2.4.29 → superqode-2.4.30}/tests/test_plugins.py +0 -0
  1020. {superqode-2.4.29 → superqode-2.4.30}/tests/test_policies_and_turndiff.py +0 -0
  1021. {superqode-2.4.29 → superqode-2.4.30}/tests/test_post_edit_verify.py +0 -0
  1022. {superqode-2.4.29 → superqode-2.4.30}/tests/test_prime_agent_client.py +0 -0
  1023. {superqode-2.4.29 → superqode-2.4.30}/tests/test_prime_agent_harness.py +0 -0
  1024. {superqode-2.4.29 → superqode-2.4.30}/tests/test_prime_agent_provider.py +0 -0
  1025. {superqode-2.4.29 → superqode-2.4.30}/tests/test_prime_command_surface.py +0 -0
  1026. {superqode-2.4.29 → superqode-2.4.30}/tests/test_prime_tui_rpc.py +0 -0
  1027. {superqode-2.4.29 → superqode-2.4.30}/tests/test_progressive_discovery.py +0 -0
  1028. {superqode-2.4.29 → superqode-2.4.30}/tests/test_progressive_reveals.py +0 -0
  1029. {superqode-2.4.29 → superqode-2.4.30}/tests/test_project_trust.py +0 -0
  1030. {superqode-2.4.29 → superqode-2.4.30}/tests/test_prompt_stack.py +0 -0
  1031. {superqode-2.4.29 → superqode-2.4.30}/tests/test_provider_catalog.py +0 -0
  1032. {superqode-2.4.29 → superqode-2.4.30}/tests/test_provider_dynamic.py +0 -0
  1033. {superqode-2.4.29 → superqode-2.4.30}/tests/test_provider_models.py +0 -0
  1034. {superqode-2.4.29 → superqode-2.4.30}/tests/test_provider_recommendations.py +0 -0
  1035. {superqode-2.4.29 → superqode-2.4.30}/tests/test_published_agent_card.py +0 -0
  1036. {superqode-2.4.29 → superqode-2.4.30}/tests/test_pure_mode_sessions.py +0 -0
  1037. {superqode-2.4.29 → superqode-2.4.30}/tests/test_qm_deployment_layer.py +0 -0
  1038. {superqode-2.4.29 → superqode-2.4.30}/tests/test_rate_limit_retry.py +0 -0
  1039. {superqode-2.4.29 → superqode-2.4.30}/tests/test_read_tool_limits.py +0 -0
  1040. {superqode-2.4.29 → superqode-2.4.30}/tests/test_reasoning_and_budget.py +0 -0
  1041. {superqode-2.4.29 → superqode-2.4.30}/tests/test_recursive_eval_packs.py +0 -0
  1042. {superqode-2.4.29 → superqode-2.4.30}/tests/test_release_metadata.py +0 -0
  1043. {superqode-2.4.29 → superqode-2.4.30}/tests/test_rlm_code_integration.py +0 -0
  1044. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_adk.py +0 -0
  1045. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_antigravity_cli.py +0 -0
  1046. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_antigravity_managed.py +0 -0
  1047. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_antigravity_sdk.py +0 -0
  1048. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_builtin.py +0 -0
  1049. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_claude_agent_sdk.py +0 -0
  1050. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_codex_sdk.py +0 -0
  1051. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_copilot_sdk.py +0 -0
  1052. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_devin_cli.py +0 -0
  1053. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_dialog.py +0 -0
  1054. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_openai_agents.py +0 -0
  1055. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_openai_events.py +0 -0
  1056. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_openai_hitl.py +0 -0
  1057. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_openai_sandbox.py +0 -0
  1058. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_protocol.py +0 -0
  1059. {superqode-2.4.29 → superqode-2.4.30}/tests/test_runtime_pydanticai.py +0 -0
  1060. {superqode-2.4.29 → superqode-2.4.30}/tests/test_sandbox_backends.py +0 -0
  1061. {superqode-2.4.29 → superqode-2.4.30}/tests/test_sandbox_execution.py +0 -0
  1062. {superqode-2.4.29 → superqode-2.4.30}/tests/test_search_roots.py +0 -0
  1063. {superqode-2.4.29 → superqode-2.4.30}/tests/test_semantic_search.py +0 -0
  1064. {superqode-2.4.29 → superqode-2.4.30}/tests/test_session_browser.py +0 -0
  1065. {superqode-2.4.29 → superqode-2.4.30}/tests/test_session_switchboard.py +0 -0
  1066. {superqode-2.4.29 → superqode-2.4.30}/tests/test_shell_session.py +0 -0
  1067. {superqode-2.4.29 → superqode-2.4.30}/tests/test_simple_login.py +0 -0
  1068. {superqode-2.4.29 → superqode-2.4.30}/tests/test_simple_query_fastpath.py +0 -0
  1069. {superqode-2.4.29 → superqode-2.4.30}/tests/test_skillopt.py +0 -0
  1070. {superqode-2.4.29 → superqode-2.4.30}/tests/test_slash_runtime.py +0 -0
  1071. {superqode-2.4.29 → superqode-2.4.30}/tests/test_spawn_harness_tool.py +0 -0
  1072. {superqode-2.4.29 → superqode-2.4.30}/tests/test_status_bar_layout.py +0 -0
  1073. {superqode-2.4.29 → superqode-2.4.30}/tests/test_steering_continue_reminders.py +0 -0
  1074. {superqode-2.4.29 → superqode-2.4.30}/tests/test_streaming_tool_calls.py +0 -0
  1075. {superqode-2.4.29 → superqode-2.4.30}/tests/test_subscription_login.py +0 -0
  1076. {superqode-2.4.29 → superqode-2.4.30}/tests/test_subscription_login_consent.py +0 -0
  1077. {superqode-2.4.29 → superqode-2.4.30}/tests/test_synthetic_gateways.py +0 -0
  1078. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_audit.py +0 -0
  1079. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_decision.py +0 -0
  1080. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_discovery.py +0 -0
  1081. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_general.py +0 -0
  1082. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_live.py +0 -0
  1083. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_live_recorded.py +0 -0
  1084. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_loop.py +0 -0
  1085. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_regressions.py +0 -0
  1086. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_state.py +0 -0
  1087. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_stub.py +0 -0
  1088. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_tool_gate.py +0 -0
  1089. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_tool_router.py +0 -0
  1090. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_tune.py +0 -0
  1091. {superqode-2.4.29 → superqode-2.4.30}/tests/test_systemone_types.py +0 -0
  1092. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tau_harness_adapter.py +0 -0
  1093. {superqode-2.4.29 → superqode-2.4.30}/tests/test_terminal_output_limits.py +0 -0
  1094. {superqode-2.4.29 → superqode-2.4.30}/tests/test_theme_contrast.py +0 -0
  1095. {superqode-2.4.29 → superqode-2.4.30}/tests/test_theme_picker.py +0 -0
  1096. {superqode-2.4.29 → superqode-2.4.30}/tests/test_theme_repaint.py +0 -0
  1097. {superqode-2.4.29 → superqode-2.4.30}/tests/test_todo_tools.py +0 -0
  1098. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tool_args_repair.py +0 -0
  1099. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tool_batch_safety.py +0 -0
  1100. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tool_bridge.py +0 -0
  1101. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tool_bridge_openai.py +0 -0
  1102. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tool_call_repair.py +0 -0
  1103. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tool_discovery_pipeline.py +0 -0
  1104. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tool_gateway.py +0 -0
  1105. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tool_output_pruning.py +0 -0
  1106. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tool_tracking.py +0 -0
  1107. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tools.py +0 -0
  1108. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_change_summary.py +0 -0
  1109. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_chat_mode.py +0 -0
  1110. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_diagnostics.py +0 -0
  1111. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_exit.py +0 -0
  1112. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_feedback.py +0 -0
  1113. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_image_voice.py +0 -0
  1114. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_launch_performance.py +0 -0
  1115. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_llamacpp_connect.py +0 -0
  1116. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_markdown_cleanup.py +0 -0
  1117. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_mlx_connect.py +0 -0
  1118. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_mounted.py +0 -0
  1119. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_navigation.py +0 -0
  1120. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_onboarding.py +0 -0
  1121. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_regressions.py +0 -0
  1122. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_smoke.py +0 -0
  1123. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_tool_display.py +0 -0
  1124. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tui_workspace_reliability.py +0 -0
  1125. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tune_credentials.py +0 -0
  1126. {superqode-2.4.29 → superqode-2.4.30}/tests/test_tune_preferences.py +0 -0
  1127. {superqode-2.4.29 → superqode-2.4.30}/tests/test_uhp_backend.py +0 -0
  1128. {superqode-2.4.29 → superqode-2.4.30}/tests/test_uhp_client.py +0 -0
  1129. {superqode-2.4.29 → superqode-2.4.30}/tests/test_uhp_connect.py +0 -0
  1130. {superqode-2.4.29 → superqode-2.4.30}/tests/test_uhp_server.py +0 -0
  1131. {superqode-2.4.29 → superqode-2.4.30}/tests/test_update_command.py +0 -0
  1132. {superqode-2.4.29 → superqode-2.4.30}/tests/test_vendor_cli_runtime.py +0 -0
  1133. {superqode-2.4.29 → superqode-2.4.30}/tests/test_version.py +0 -0
  1134. {superqode-2.4.29 → superqode-2.4.30}/tests/test_view_image.py +0 -0
  1135. {superqode-2.4.29 → superqode-2.4.30}/tests/test_web_server_auth.py +0 -0
  1136. {superqode-2.4.29 → superqode-2.4.30}/tests/test_workorders.py +0 -0
  1137. {superqode-2.4.29 → superqode-2.4.30}/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
+ ## [2.4.30] - 2026-09-29
11
+
12
+ ### Added
13
+
14
+ - Gemini CLI subscription discovery with Google sign-in setup and explicit
15
+ vendor-agent alternatives in the native harness model-source menu.
16
+ - Account connections for OpenCode, fast-agent, Pi and omp, including
17
+ fast-agent Codex plan launch settings and reconnect support.
18
+ - Native MiniMax Token Plan model access with a separate validated subscription
19
+ credential and endpoint.
20
+
21
+ ### Fixed
22
+
23
+ - Keep subscription credentials separate from general API billing. Z.AI and
24
+ Alibaba Coding Plan choices explain supported-agent setup; Kimi and Copilot
25
+ alternatives explicitly identify their vendor harness.
26
+ - Preserve the current agent and credentials when model setup fails, and
27
+ restore the saved native harness and exact model route on reconnect.
28
+ - Retain ACP registry package versions, launch arguments, scoped environment
29
+ defaults and user-defined command overrides. Binary-only agents show
30
+ matching platform download and checksum guidance.
31
+ - Apply subscription billing guards after child-environment overlays and keep
32
+ explicit Copilot tokens scoped to Copilot. OAuth/local agent health checks
33
+ require only explicitly declared environment variables.
34
+ - Target the active Python environment and installed SuperQode version in SDK
35
+ setup hints; keep public installation guidance independent of the exporting
36
+ machine's installed extras.
37
+ - Prevent interactive account and plan shortcuts from falling through to an
38
+ unrelated default provider in headless mode.
39
+ - Correct connection documentation, readiness guidance, Gemini discovery and
40
+ Qoder/Poolside capability declarations, and refresh the published Hub catalog.
41
+
10
42
  ## [2.4.29] - 2026-09-29
11
43
 
12
44
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superqode
3
- Version: 2.4.29
3
+ Version: 2.4.30
4
4
  Summary: The harness layer for coding agents
5
5
  Author-email: Shashi Jagtap <info@super-agentic.ai>
6
6
  Maintainer-email: Shashi Jagtap <info@super-agentic.ai>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superqode"
3
- version = "2.4.29"
3
+ version = "2.4.30"
4
4
  description = "The harness layer for coding agents"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -38,7 +38,7 @@ __all__ = [
38
38
  "sidebar",
39
39
  ]
40
40
 
41
- __version__ = "2.4.29"
41
+ __version__ = "2.4.30"
42
42
 
43
43
  # Stable, lightweight public extension surface. Importing this package does
44
44
  # not discover or execute third-party extensions; discovery happens only when
@@ -304,6 +304,9 @@ class ACPClient:
304
304
  # Applied last so a caller can override the defaults above.
305
305
  for name, value in (self.extra_env or {}).items():
306
306
  env[str(name)] = str(value)
307
+ if self.subscription_vendor:
308
+ env, removed = subscription_child_env(self.subscription_vendor, env)
309
+ self.stripped_api_keys = list(dict.fromkeys([*self.stripped_api_keys, *removed]))
307
310
 
308
311
  # OpenCode's verbose logs are useful for debugging, but expensive on
309
312
  # normal runs because every non-JSON line has to be parsed and routed
@@ -153,7 +153,9 @@ class ACPAgentManager:
153
153
  self.connection: ClientSideConnection | None = None
154
154
  self._response_queue: asyncio.Queue = asyncio.Queue()
155
155
 
156
- async def connect_to_agent(self, command: str, cwd: str | None = None) -> bool:
156
+ async def connect_to_agent(
157
+ self, command: str, cwd: str | None = None, *, extra_env: dict[str, str] | None = None
158
+ ) -> bool:
157
159
  """Connect to an ACP agent.
158
160
 
159
161
  Args:
@@ -189,6 +191,7 @@ class ACPAgentManager:
189
191
  stdin=asyncio.subprocess.PIPE,
190
192
  stdout=asyncio.subprocess.PIPE,
191
193
  cwd=cwd or os.getcwd(),
194
+ env={**os.environ, **extra_env} if extra_env else None,
192
195
  )
193
196
 
194
197
  if proc.stdin is None or proc.stdout is None:
@@ -77,6 +77,7 @@ async def read_agents(include_registry: bool = False) -> dict[str, "Agent"]:
77
77
  if file.name.endswith(".toml") and file.is_file():
78
78
  try:
79
79
  agent: "Agent" = tomllib.load(file.open("rb"))
80
+ agent["user_defined"] = search_path == user_agent_dir
80
81
  if agent.get("active", True):
81
82
  # Validate required fields
82
83
  required_fields = ["identity", "name", "short_name", "protocol"]
@@ -115,7 +116,16 @@ async def read_agents(include_registry: bool = False) -> dict[str, "Agent"]:
115
116
  for warning in warnings:
116
117
  console.print(f"[yellow]Warning: {warning}[/yellow]")
117
118
 
118
- agent_map = {agent["identity"]: agent for agent in agents}
119
+ agent_map = {}
120
+ for agent in agents:
121
+ if agent.get("user_defined"):
122
+ short_name = str(agent.get("short_name") or "").casefold()
123
+ agent_map = {
124
+ identity: existing
125
+ for identity, existing in agent_map.items()
126
+ if str(existing.get("short_name") or "").casefold() != short_name
127
+ }
128
+ agent_map[agent["identity"]] = agent
119
129
 
120
130
  # Ensure the bundled catalog has stable terminal groups even before the
121
131
  # first network refresh.
@@ -153,6 +163,12 @@ async def read_agents(include_registry: bool = False) -> dict[str, "Agent"]:
153
163
  existing["registry_id"] = converted.get("registry_id", "")
154
164
  existing["registry_version"] = converted.get("registry_version", "")
155
165
  existing["registry_source"] = converted.get("registry_source", "")
166
+ existing["registry_license"] = converted.get("registry_license", "")
167
+ existing["registry_license_url"] = converted.get("registry_license_url", "")
168
+ if not existing.get("user_defined"):
169
+ existing["launch_env"] = converted.get("launch_env", {})
170
+ if converted.get("registry_source") == "official-registry":
171
+ existing["run_command"] = converted["run_command"]
156
172
  existing["catalog_tier"] = converted.get("catalog_tier", "all")
157
173
  existing["recommended"] = converted.get("recommended", False)
158
174
  existing["tags"] = sorted(
@@ -110,6 +110,10 @@ class Agent(TypedDict):
110
110
  welcome: NotRequired[str]
111
111
  """A Markdown document shown to the user when the conversation starts. Should contain a welcome message and any advice on getting started."""
112
112
  run_command: dict[OS, str]
113
+ launch_env: NotRequired[dict[str, str]]
114
+ user_defined: NotRequired[bool]
115
+ """Distribution defaults applied only to this agent's subprocess."""
116
+ required_env: NotRequired[list[str]]
113
117
  """Command to run the agent, by OS or wildcard."""
114
118
  actions: dict[OS, dict[Action, Command]]
115
119
  """Scripts to perform actions, typically at least to install the agent."""
@@ -13,6 +13,7 @@ VENDOR_HARNESS_IDS = (
13
13
  "kimi-code",
14
14
  "qwen-code",
15
15
  "antigravity",
16
+ "gemini-cli",
16
17
  "grok",
17
18
  "copilot",
18
19
  "cursor",
@@ -80,6 +81,11 @@ def harness_install_extra(entry) -> str:
80
81
  """Return the controlled SuperQode extra for an unavailable harness."""
81
82
  if bool(getattr(entry, "available", False)):
82
83
  return ""
84
+ return harness_source_extra(entry)
85
+
86
+
87
+ def harness_source_extra(entry) -> str:
88
+ """Declared optional extra, independent of this machine's installation."""
83
89
  return _OPTIONAL_HARNESS_EXTRAS.get(str(getattr(entry, "source", "") or ""), "")
84
90
 
85
91
 
@@ -2057,6 +2057,20 @@ class AgentRunMixin:
2057
2057
  # Closed/Open key paths set this at :connect time. Merge last so the
2058
2058
  # child sees the resolved key; never setdefault into SuperQode's env.
2059
2059
  # Only the agent the key was resolved for receives it.
2060
+ selected_agent = getattr(get_session(), "connected_agent", None) or {}
2061
+ override_name = f"SUPERQODE_{agent_type.upper().replace('-', '_')}_ACP_COMMAND"
2062
+ if (
2063
+ isinstance(selected_agent, dict)
2064
+ and (
2065
+ selected_agent.get("user_defined")
2066
+ or (
2067
+ selected_agent.get("registry_source") == "official-registry"
2068
+ and agent_type not in {"prime-agent", "prime"}
2069
+ )
2070
+ )
2071
+ and not os.getenv(override_name)
2072
+ ):
2073
+ command = selected_agent.get("run_command", {}).get("*", "") or command
2060
2074
  acp_extra_env = self._merge_acp_session_extra_env(agent_type, acp_extra_env)
2061
2075
 
2062
2076
  mode_label = {"auto": "🟢 AUTO", "ask": "🟡 ASK", "deny": "🔴 DENY"}.get(
@@ -805,7 +805,7 @@ class CommandImplMixin:
805
805
 
806
806
  def _show_vendor_runtime_setup(self, log) -> None:
807
807
  """Show optional vendor SDK and external CLI setup without installing."""
808
- from superqode.providers.env_introspect import install_command
808
+ from superqode.providers.env_introspect import active_install_command as install_command
809
809
 
810
810
  text = Text()
811
811
  text.append("\n Vendor runtime setup\n\n", style=f"bold {THEME['purple']}")
@@ -2871,7 +2871,7 @@ class CommandImplMixin:
2871
2871
  style=THEME["text"],
2872
2872
  )
2873
2873
  if not sdk_ok:
2874
- from superqode.providers.env_introspect import install_command
2874
+ from superqode.providers.env_introspect import active_install_command as install_command
2875
2875
 
2876
2876
  text.append("\n SDK setup ", style=THEME["muted"])
2877
2877
  text.append(f"{install_command('copilot-sdk')}\n", style=THEME["cyan"])
@@ -3199,7 +3199,7 @@ class CommandImplMixin:
3199
3199
  f"{feature} is provided by the GitHub Copilot SDK, and only the "
3200
3200
  "Copilot CLI route is available here."
3201
3201
  )
3202
- from superqode.providers.env_introspect import install_command
3202
+ from superqode.providers.env_introspect import active_install_command as install_command
3203
3203
 
3204
3204
  log.add_info(f"Install the SDK with: {install_command('copilot-sdk')}")
3205
3205
  return True
@@ -175,6 +175,23 @@ class ConnectMixin:
175
175
  # A harness that allows no providers for a mode must not offer the row:
176
176
  # selecting it would open a picker with nothing in it.
177
177
  offered = [row for row in profiles if self._key_models_row_offered(row.id)]
178
+ key_session = getattr(self, "_key_harness_session", None)
179
+ if key_session:
180
+ from superqode.providers.harness_catalog import get_entry
181
+ from superqode.providers.connection_profiles import ConnectionProfile
182
+
183
+ entry = get_entry(key_session.entry_id)
184
+ if entry and any(spec.mode == "subscription" for spec in entry.auth):
185
+ offered.append(
186
+ ConnectionProfile(
187
+ id=f"account-{entry.id}",
188
+ label="Use this agent's subscription / account",
189
+ description="Use the model and account configured in this agent; keeps its coding loop",
190
+ connector="harness-account",
191
+ runtime=entry.id,
192
+ menu=menu,
193
+ )
194
+ )
178
195
  return offered or profiles
179
196
 
180
197
  def _key_models_row_offered(self, row_id: str) -> bool:
@@ -770,6 +787,12 @@ class ConnectMixin:
770
787
  ) -> dict[str, str]:
771
788
  """Merge session extra env into the child env if it belongs to this agent."""
772
789
  merged = dict(acp_extra_env or {})
790
+ agent = getattr(get_session(), "connected_agent", None) or {}
791
+ if (
792
+ isinstance(agent, dict)
793
+ and agent.get("short_name", "").lower() == (agent_type or "").lower()
794
+ ):
795
+ merged = {**(agent.get("launch_env") or {}), **merged}
773
796
  extra = getattr(self, "_acp_extra_env", None) or {}
774
797
  owned = (getattr(self, "_acp_extra_env_agent", None) or "").strip().lower()
775
798
  current = (agent_type or "").strip().lower()
@@ -1514,7 +1537,7 @@ class ConnectMixin:
1514
1537
  pass
1515
1538
  self._open_connect_screen(log)
1516
1539
  conn = profile.connector
1517
- if conn not in {"byok", "local", "key-harness"}:
1540
+ if conn not in {"byok", "local", "key-harness", "harness-account"}:
1518
1541
  self._clear_key_harness_session()
1519
1542
  if getattr(profile, "id", "") == "copilot-acp" and log is not None:
1520
1543
  log.add_info(
@@ -1614,11 +1637,7 @@ class ConnectMixin:
1614
1637
  elif conn == "byok":
1615
1638
  # Subscription-plan entries reuse the direct-provider engine, but
1616
1639
  # that transport detail must not relabel their auth/billing as BYOK.
1617
- from superqode.providers.connection_profiles import CONNECT_MENU_PLAN
1618
-
1619
- self._next_direct_auth_mode = (
1620
- "subscription" if getattr(profile, "menu", "") == CONNECT_MENU_PLAN else "byok"
1621
- )
1640
+ self._next_direct_auth_mode = getattr(profile, "auth_mode", "") or "byok"
1622
1641
  self._direct_connection_profile_id = str(getattr(profile, "id", "") or "")
1623
1642
  # An acp-attach session keeps this picker: the selection is diverted
1624
1643
  # to the agent in _connect_byok_mode rather than at the menu.
@@ -1689,6 +1708,57 @@ class ConnectMixin:
1689
1708
  from superqode.providers.connection_profiles import CONNECT_MENU_PLAN
1690
1709
 
1691
1710
  self._show_connect_type_picker(log, menu=CONNECT_MENU_PLAN)
1711
+ elif conn == "plan-guidance":
1712
+ log.add_info(profile.unavailable_hint)
1713
+ log.add_info(
1714
+ "Your current harness and model have been kept. Choose the agent route explicitly to switch."
1715
+ )
1716
+ elif conn == "plan-agent":
1717
+ from superqode.providers.connection_profiles import get_connection_profile
1718
+
1719
+ target = get_connection_profile(profile.acp_agent or "")
1720
+ if target is None:
1721
+ log.add_error("This account has no supported agent connection.")
1722
+ return
1723
+ log.add_info(
1724
+ f"Using {target.label}'s coding loop through {target.transport or target.connector}."
1725
+ )
1726
+ self._dispatch_connection_profile(target, log)
1727
+ elif conn == "harness-account":
1728
+ from superqode.providers.harness_catalog import get_entry
1729
+
1730
+ key_session = getattr(self, "_key_harness_session", None)
1731
+ entry = get_entry(key_session.entry_id if key_session else profile.runtime or "")
1732
+ spec = (
1733
+ next((s for s in entry.auth if s.mode == "subscription"), None) if entry else None
1734
+ )
1735
+ if not entry or not spec or not entry.acp_agent:
1736
+ log.add_error("This harness does not expose a supported account route.")
1737
+ return
1738
+ from superqode.agents.registry import get_registry_agent_by_short_name
1739
+ from superqode.commands.acp import check_agent_installed
1740
+
1741
+ agent_data = get_registry_agent_by_short_name(entry.acp_agent)
1742
+ if agent_data and not check_agent_installed(agent_data):
1743
+ installer = getattr(self, "_show_agent_install_picker", None)
1744
+ if callable(installer) and installer(
1745
+ agent_data,
1746
+ log,
1747
+ on_ready=lambda: self._dispatch_connection_profile(profile, log),
1748
+ ):
1749
+ return
1750
+ log.add_info(f"Install {entry.label} first. {spec.notes}")
1751
+ return
1752
+ self._clear_key_harness_session()
1753
+ self._clear_acp_extra_env()
1754
+ self._acp_subscription_vendor = "codex" if entry.acp_agent == "fast-agent" else None
1755
+ self._connecting_profile_id = f"account-{entry.id}"
1756
+ log.add_info(
1757
+ spec.notes
1758
+ or "Using the agent's configured account and model; sign-in is checked by the agent."
1759
+ )
1760
+ self._connect_acp_cmd(entry.acp_agent, log)
1761
+ self._set_acp_extra_env(dict(spec.account_env), entry.acp_agent)
1692
1762
  elif conn == "vendor-picker":
1693
1763
  from superqode.providers.connection_profiles import CONNECT_MENU_VENDORS
1694
1764
 
@@ -2823,7 +2893,6 @@ class ConnectMixin:
2823
2893
  pass
2824
2894
  if self._redirect_harness_only_provider(provider, log):
2825
2895
  return
2826
- self._clear_acp_extra_env()
2827
2896
  if provider == "grok-cli":
2828
2897
  # The BYOK provider/model picker can reach this route without
2829
2898
  # passing through `:grok api`. Refresh the imported CLI credential
@@ -2859,25 +2928,19 @@ class ConnectMixin:
2859
2928
  )
2860
2929
  return
2861
2930
 
2862
- # Clear any existing ACP connection when switching to BYOK
2863
- if hasattr(self, "_acp_client") and self._acp_client:
2864
- # Disconnect ACP client if switching from ACP to BYOK
2865
- try:
2866
- if self._acp_loop_runner is not None:
2867
- self._acp_loop_runner.run(self._acp_client.stop())
2868
- else:
2869
- asyncio.create_task(self._acp_client.stop())
2870
- except Exception:
2871
- pass
2872
- self._acp_client = None
2873
- self._acp_client_key = None
2931
+ # Validate plan credentials before disconnecting the current session.
2932
+ # A missing plan key must never fall through to a global OpenAI key.
2933
+ if provider_def.auth_mode == "subscription" and provider_def.env_vars:
2934
+ from superqode.providers.credentials import provider_api_key
2935
+
2936
+ if not provider_api_key(provider_def):
2937
+ log.add_error(
2938
+ f"{provider_def.name} requires its own subscription key "
2939
+ f"({', '.join(provider_def.env_vars)}). General API keys are not used. "
2940
+ f"Run superqode auth login {provider}."
2941
+ )
2942
+ return
2874
2943
 
2875
- # Clear session state
2876
- session = get_session()
2877
- if hasattr(session, "connected_agent"):
2878
- session.connected_agent = None
2879
- if hasattr(session, "acp_manager"):
2880
- session.acp_manager = None
2881
2944
  from superqode.providers.registry import ProviderCategory
2882
2945
  from superqode.pure_mode import PureMode
2883
2946
  from superqode.agent.system_prompts import SystemPromptLevel
@@ -2950,6 +3013,26 @@ class ConnectMixin:
2950
3013
  log.write_feedback(t)
2951
3014
  return
2952
3015
 
3016
+ # Clear any existing ACP connection when switching to BYOK
3017
+ self._clear_acp_extra_env()
3018
+ if hasattr(self, "_acp_client") and self._acp_client:
3019
+ # Disconnect ACP client if switching from ACP to BYOK
3020
+ try:
3021
+ if self._acp_loop_runner is not None:
3022
+ self._acp_loop_runner.run(self._acp_client.stop())
3023
+ else:
3024
+ asyncio.create_task(self._acp_client.stop())
3025
+ except Exception:
3026
+ pass
3027
+ self._acp_client = None
3028
+ self._acp_client_key = None
3029
+
3030
+ # Clear session state
3031
+ session = get_session()
3032
+ if hasattr(session, "connected_agent"):
3033
+ session.connected_agent = None
3034
+ if hasattr(session, "acp_manager"):
3035
+ session.acp_manager = None
2953
3036
  # Store previous provider for quick switching
2954
3037
  if hasattr(self, "current_provider") and self.current_provider:
2955
3038
  self._previous_provider = (self.current_provider, self.current_model)
@@ -3071,12 +3154,11 @@ class ConnectMixin:
3071
3154
  else:
3072
3155
  exec_mode = "byok"
3073
3156
 
3074
- requested_auth = str(getattr(self, "_direct_auth_mode", "") or "").lower()
3075
3157
  auth_mode = (
3076
3158
  "local"
3077
3159
  if exec_mode == "local"
3078
3160
  else "subscription"
3079
- if requested_auth == "subscription"
3161
+ if provider_def.auth_mode == "subscription"
3080
3162
  else "byok"
3081
3163
  )
3082
3164
 
@@ -3159,7 +3241,7 @@ class ConnectMixin:
3159
3241
  title = (
3160
3242
  "Local Model Selected"
3161
3243
  if local
3162
- else "Subscription Connected"
3244
+ else "Subscription Model Selected"
3163
3245
  if subscription
3164
3246
  else "Provider Connected"
3165
3247
  )
@@ -3179,6 +3261,26 @@ class ConnectMixin:
3179
3261
  t.append(" Model ", style=THEME["muted"])
3180
3262
  t.append(model, style=f"bold {THEME['cyan']}")
3181
3263
  t.append("\n")
3264
+ t.append(" Harness ", style=THEME["muted"])
3265
+ t.append(
3266
+ str(getattr(self, "current_harness", "") or os.getenv("SUPERQODE_HARNESS", "core")),
3267
+ style=THEME["text"],
3268
+ )
3269
+ t.append("\n")
3270
+ from superqode.providers.dynamic import resolve_provider_def, resolve_base_url
3271
+ from urllib.parse import urlsplit, urlunsplit
3272
+
3273
+ definition = resolve_provider_def(provider)
3274
+ endpoint = resolve_base_url(definition) if definition else ""
3275
+ if endpoint:
3276
+ parsed = urlsplit(endpoint)
3277
+ # Never display URL credentials or query tokens in the transcript.
3278
+ public_endpoint = urlunsplit(
3279
+ (parsed.scheme, parsed.netloc.rsplit("@", 1)[-1], parsed.path, "", "")
3280
+ )
3281
+ t.append(" Endpoint ", style=THEME["muted"])
3282
+ t.append(public_endpoint, style=THEME["dim"])
3283
+ t.append("\n")
3182
3284
  if host:
3183
3285
  t.append(" Host ", style=THEME["muted"])
3184
3286
  t.append(host, style=THEME["dim"])
@@ -3186,6 +3288,8 @@ class ConnectMixin:
3186
3288
  t.append(
3187
3289
  "\n Validating the local server..."
3188
3290
  if local
3291
+ else "\n Configured. Account access is verified on the first request."
3292
+ if subscription
3189
3293
  else "\n Ready. Type a message to start.",
3190
3294
  style=THEME["muted"],
3191
3295
  )
@@ -3213,7 +3317,9 @@ class ConnectMixin:
3213
3317
  dedupe_key=f"connection:{mode}:{provider}:{model}",
3214
3318
  )
3215
3319
  vendor_owned = False
3216
- harness = str(getattr(self, "current_harness", "") or "core")
3320
+ harness = str(
3321
+ getattr(self, "current_harness", "") or os.getenv("SUPERQODE_HARNESS", "core")
3322
+ )
3217
3323
  key_session = getattr(self, "_key_harness_session", None)
3218
3324
  if key_session is not None:
3219
3325
  from superqode.providers.harness_catalog import get_entry
@@ -3408,12 +3514,48 @@ class ConnectMixin:
3408
3514
  provider = str(connection.get("provider") or "")
3409
3515
  model = str(connection.get("model") or "")
3410
3516
 
3517
+ # Restore the agent/account route before considering any stale model
3518
+ # fields from a previous native connection. This also restores account
3519
+ # launch defaults (for example fast-agent's codexplan).
3520
+ if acp_agent and profile_id:
3521
+ from superqode.providers.connection_profiles import get_connection_profile
3522
+
3523
+ profile = get_connection_profile(profile_id)
3524
+ if profile and profile.connector in {"acp", "harness-account"}:
3525
+ self._dispatch_connection_profile(profile, log)
3526
+ return
3527
+
3411
3528
  if category == "acp" or (auth_mode == "acp" and not after_auth):
3412
3529
  if acp_agent:
3413
3530
  self._connect_acp_cmd(acp_agent, log)
3414
3531
  return
3415
- elif auth_mode == "subscription" and provider and model:
3416
- self._direct_auth_mode = "subscription"
3532
+ elif (
3533
+ provider
3534
+ and model
3535
+ and not after_auth
3536
+ and (auth_mode == "subscription" or category in {"models", "plan"})
3537
+ ):
3538
+ saved_harness = str(connection.get("harness_id") or "")
3539
+ if saved_harness:
3540
+ from superqode.providers.dynamic import resolve_provider_def
3541
+ from superqode.providers.credentials import provider_api_key
3542
+ from superqode.pure_mode import PureMode
3543
+
3544
+ definition = resolve_provider_def(provider)
3545
+ # Let the normal connector explain missing credentials without
3546
+ # replacing the active harness first.
3547
+ if definition and definition.env_vars and not provider_api_key(definition):
3548
+ self._connect_byok_mode(provider, model, log)
3549
+ return
3550
+ try:
3551
+ pure = getattr(self, "_pure_mode", None) or PureMode()
3552
+ pure.select_harness(saved_harness)
3553
+ except (FileNotFoundError, ValueError) as exc:
3554
+ log.add_error(f"Cannot restore harness {saved_harness}: {exc}")
3555
+ return
3556
+ self._pure_mode = pure
3557
+ os.environ["SUPERQODE_HARNESS"] = saved_harness
3558
+ self._direct_auth_mode = auth_mode
3417
3559
  self._direct_connection_profile_id = profile_id
3418
3560
  self._connect_byok_mode(provider, model, log)
3419
3561
  return
@@ -3613,6 +3755,10 @@ class ConnectMixin:
3613
3755
  badges = profile.badges
3614
3756
  if is_highlighted and badges:
3615
3757
  append_wrapped(" · ".join(badges), THEME["dim"])
3758
+ if is_highlighted and profile.available and profile.verify_on_connect:
3759
+ append_wrapped(
3760
+ "Installed · account sign-in is verified on first use", THEME["muted"]
3761
+ )
3616
3762
  if is_highlighted and not profile.available and profile.unavailable_hint:
3617
3763
  append_wrapped(profile.unavailable_hint, THEME["warning"])
3618
3764
 
@@ -4205,7 +4351,7 @@ class ConnectMixin:
4205
4351
  profile_id=profile_id,
4206
4352
  acp_agent=acp_agent,
4207
4353
  openness="",
4208
- provider=str(getattr(self, "current_provider", "") or ""),
4354
+ provider="",
4209
4355
  model=str(getattr(self, "current_model", "") or ""),
4210
4356
  transport="ACP",
4211
4357
  after_auth="",
@@ -460,13 +460,9 @@ def validate_agent_environment(agent: "Agent") -> list[str]:
460
460
  agent_name = agent.get("short_name", "").lower()
461
461
 
462
462
  # Define known environment variable requirements for agents
463
- env_requirements = {
464
- "claude": ["ANTHROPIC_API_KEY"],
465
- "opencode": ["ZHIPUAI_API_KEY"], # GLM-4.7 uses ZHIPUAI
466
- "gemini": ["GOOGLE_API_KEY"],
467
- "openai": ["OPENAI_API_KEY"],
468
- "kimi": ["MOONSHOT_API_KEY"],
469
- }
463
+ # Many agents support account sign-in and local models without API keys.
464
+ # Require only variables explicitly declared by this configured agent.
465
+ env_requirements = {agent_name: agent.get("required_env", [])}
470
466
 
471
467
  # Check if agent requires specific environment variables
472
468
  if agent_name in env_requirements:
@@ -625,7 +621,12 @@ async def connect_to_agent(agent_identifier: str, project_dir: str | None = None
625
621
  try:
626
622
  # Connect to the agent
627
623
  cwd = project_dir or os.getcwd()
628
- success = await manager.connect_to_agent(run_command, cwd)
624
+ launch_env = agent.get("launch_env") or {}
625
+ success = (
626
+ await manager.connect_to_agent(run_command, cwd, extra_env=launch_env)
627
+ if launch_env
628
+ else await manager.connect_to_agent(run_command, cwd)
629
+ )
629
630
 
630
631
  if not success:
631
632
  _console.print(f"[red]Failed to connect to {agent['name']}.[/red]")
@@ -7,7 +7,11 @@ from datetime import UTC, datetime
7
7
  from pathlib import Path
8
8
  from typing import Any, Iterable
9
9
 
10
- from superqode.app.harness_picker import HarnessPickerItem, harness_picker_items
10
+ from superqode.app.harness_picker import (
11
+ HarnessPickerItem,
12
+ harness_picker_items,
13
+ harness_source_extra,
14
+ )
11
15
 
12
16
 
13
17
  HUB_SCHEMA_VERSION = "1.7"
@@ -97,6 +101,7 @@ def readiness_label(readiness: str) -> str:
97
101
 
98
102
 
99
103
  _DOCS_BY_ID = {
104
+ "gemini-cli": "https://geminicli.com/docs/get-started/authentication/",
100
105
  "codex": f"{DOCS_BASE}providers/codex/",
101
106
  "claude": f"{DOCS_BASE}providers/anthropic-claude/",
102
107
  "antigravity": f"{DOCS_BASE}providers/antigravity/",
@@ -121,6 +126,7 @@ _DOCS_BY_ID = {
121
126
  }
122
127
 
123
128
  _HOMEPAGE_BY_ID = {
129
+ "gemini-cli": "https://geminicli.com/",
124
130
  "codex": "https://openai.com/codex/",
125
131
  "claude": "https://www.anthropic.com/claude-code",
126
132
  "cursor": "https://cursor.com/",
@@ -193,6 +199,7 @@ _PROJECT_OPENNESS = HubOpenness("open", "Apache-2.0", PROJECT_REPOSITORY)
193
199
  #
194
200
  _LANGCHAIN_DEEPAGENTS = HubOpenness("open", "MIT", "https://github.com/langchain-ai/deepagents")
195
201
  _OPENNESS_BY_ID: dict[str, HubOpenness] = {
202
+ "gemini-cli": HubOpenness("open", "Apache-2.0", "https://github.com/google-gemini/gemini-cli"),
196
203
  "deepagents": _LANGCHAIN_DEEPAGENTS,
197
204
  "deepagents-code": _LANGCHAIN_DEEPAGENTS,
198
205
  "acp:deepagents": _LANGCHAIN_DEEPAGENTS,
@@ -766,6 +773,14 @@ class HubSetupStep:
766
773
 
767
774
 
768
775
  _SETUP_STEPS_BY_ID = {
776
+ "gemini-cli": (
777
+ HubSetupStep("Install Gemini CLI", "npm install -g @google/gemini-cli"),
778
+ HubSetupStep(
779
+ "Sign in with your Google plan account",
780
+ "gemini",
781
+ "Choose Sign in with Google for Google AI Pro / Ultra or Code Assist.",
782
+ ),
783
+ ),
769
784
  "codex": (
770
785
  HubSetupStep(
771
786
  "Install the SuperQode Codex integration",
@@ -1577,10 +1592,13 @@ def hub_record(
1577
1592
  details = (
1578
1593
  _connection_details(item) if item.kind in {"connection", "acp"} else _native_details(item)
1579
1594
  )
1580
- if portable_install_commands and item.install_extra:
1595
+ # A public catalog must carry installation instructions even when the
1596
+ # exporting machine already has this optional integration installed.
1597
+ portable_extra = item.install_extra or harness_source_extra(item)
1598
+ if portable_install_commands and portable_extra:
1581
1599
  from superqode.providers.env_introspect import install_command
1582
1600
 
1583
- command = install_command(item.install_extra)
1601
+ command = install_command(portable_extra)
1584
1602
  details = {
1585
1603
  **details,
1586
1604
  "install_command": command,