superqode 2.2.4__tar.gz → 2.3.0__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 (1036) hide show
  1. {superqode-2.2.4 → superqode-2.3.0}/CHANGELOG.md +74 -17
  2. {superqode-2.2.4 → superqode-2.3.0}/PKG-INFO +9 -4
  3. {superqode-2.2.4 → superqode-2.3.0}/README.md +8 -3
  4. {superqode-2.2.4 → superqode-2.3.0}/pyproject.toml +1 -1
  5. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/__init__.py +1 -1
  6. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/uhp.py +3 -3
  7. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/runtime.py +10 -0
  8. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/uhp_client.py +69 -17
  9. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/uhp_server.py +288 -37
  10. {superqode-2.2.4 → superqode-2.3.0}/src/superqode.egg-info/PKG-INFO +9 -4
  11. {superqode-2.2.4 → superqode-2.3.0}/tests/test_uhp_client.py +107 -2
  12. {superqode-2.2.4 → superqode-2.3.0}/tests/test_uhp_connect.py +1 -1
  13. {superqode-2.2.4 → superqode-2.3.0}/tests/test_uhp_server.py +417 -3
  14. {superqode-2.2.4 → superqode-2.3.0}/LICENSE +0 -0
  15. {superqode-2.2.4 → superqode-2.3.0}/MANIFEST.in +0 -0
  16. {superqode-2.2.4 → superqode-2.3.0}/NOTICE +0 -0
  17. {superqode-2.2.4 → superqode-2.3.0}/examples/README.md +0 -0
  18. {superqode-2.2.4 → superqode-2.3.0}/examples/a2a/README.md +0 -0
  19. {superqode-2.2.4 → superqode-2.3.0}/examples/a2a/smoke_client.py +0 -0
  20. {superqode-2.2.4 → superqode-2.3.0}/examples/bench/dspy-comprehension.manifest.yaml +0 -0
  21. {superqode-2.2.4 → superqode-2.3.0}/examples/bench/dspy-comprehension.yaml +0 -0
  22. {superqode-2.2.4 → superqode-2.3.0}/examples/bench/spec-core.yaml +0 -0
  23. {superqode-2.2.4 → superqode-2.3.0}/examples/bench/spec-deepagents.yaml +0 -0
  24. {superqode-2.2.4 → superqode-2.3.0}/examples/bench/spec-prime-agent.yaml +0 -0
  25. {superqode-2.2.4 → superqode-2.3.0}/examples/byok-acp-team.yaml +0 -0
  26. {superqode-2.2.4 → superqode-2.3.0}/examples/codex_sdk_quickstart.py +0 -0
  27. {superqode-2.2.4 → superqode-2.3.0}/examples/evals/omni-release.yaml +0 -0
  28. {superqode-2.2.4 → superqode-2.3.0}/examples/evals/omni-tiny.yaml +0 -0
  29. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/README.md +0 -0
  30. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/manifest-guard/context.md +0 -0
  31. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/manifest-guard/hooks.py +0 -0
  32. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/manifest-guard/tools.py +0 -0
  33. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/packages/README.md +0 -0
  34. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/packages/broken-extension/src/superqode_example_broken/__init__.py +0 -0
  35. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/packages/policy-extension/src/superqode_example_policy/__init__.py +0 -0
  36. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/packages/skill-extension/src/superqode_example_skill/SKILL.md +0 -0
  37. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/packages/skill-extension/src/superqode_example_skill/__init__.py +0 -0
  38. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/packages/tool-extension/src/superqode_example_tool/__init__.py +0 -0
  39. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/packages/tool-extension-v2/src/superqode_example_tool/__init__.py +0 -0
  40. {superqode-2.2.4 → superqode-2.3.0}/examples/extensions/python-package/src/superqode_example_extension/__init__.py +0 -0
  41. {superqode-2.2.4 → superqode-2.3.0}/examples/harness-packages/README.md +0 -0
  42. {superqode-2.2.4 → superqode-2.3.0}/examples/harness-packages/hello-harness/src/superqode_hello_harness/__init__.py +0 -0
  43. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/coding.yaml +0 -0
  44. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/deepagents.yaml +0 -0
  45. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/deepseek-harness.yaml +0 -0
  46. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/ds4.yaml +0 -0
  47. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/gemma4.yaml +0 -0
  48. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/google-adk.yaml +0 -0
  49. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/local-recursive-dynamic.yaml +0 -0
  50. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/mcp-docs.yaml +0 -0
  51. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/no-tool.yaml +0 -0
  52. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/omni-tiny-local.yaml +0 -0
  53. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/omnigent-multi-agent.yaml +0 -0
  54. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/openai-agents.yaml +0 -0
  55. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/prime-agent.yaml +0 -0
  56. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/pydanticai.yaml +0 -0
  57. {superqode-2.2.4 → superqode-2.3.0}/examples/harnesses/rlm-code-lid.yaml +0 -0
  58. {superqode-2.2.4 → superqode-2.3.0}/examples/local-models-team.yaml +0 -0
  59. {superqode-2.2.4 → superqode-2.3.0}/examples/mcp/local_docs_server.py +0 -0
  60. {superqode-2.2.4 → superqode-2.3.0}/examples/omnigent-multi-agent.agent.yaml +0 -0
  61. {superqode-2.2.4 → superqode-2.3.0}/examples/qm-deployment-layer/README.md +0 -0
  62. {superqode-2.2.4 → superqode-2.3.0}/examples/qm-deployment-layer/sandbox/skills/superqode-harness/SKILL.md +0 -0
  63. {superqode-2.2.4 → superqode-2.3.0}/examples/rlm-demo/INCIDENT.md +0 -0
  64. {superqode-2.2.4 → superqode-2.3.0}/examples/rlm-demo/README.md +0 -0
  65. {superqode-2.2.4 → superqode-2.3.0}/examples/rlm-demo/RUNBOOK.md +0 -0
  66. {superqode-2.2.4 → superqode-2.3.0}/examples/rlm-demo/deploy_audit/__init__.py +0 -0
  67. {superqode-2.2.4 → superqode-2.3.0}/examples/rlm-demo/deploy_audit/parser.py +0 -0
  68. {superqode-2.2.4 → superqode-2.3.0}/examples/rlm-demo/deploy_audit/report.py +0 -0
  69. {superqode-2.2.4 → superqode-2.3.0}/examples/rlm-demo/rlm-docker.yaml +0 -0
  70. {superqode-2.2.4 → superqode-2.3.0}/examples/rlm-demo/rlm-monty.yaml +0 -0
  71. {superqode-2.2.4 → superqode-2.3.0}/examples/rlm-demo/tests/test_report.py +0 -0
  72. {superqode-2.2.4 → superqode-2.3.0}/examples/simple-team.yaml +0 -0
  73. {superqode-2.2.4 → superqode-2.3.0}/scripts/check_release_metadata.py +0 -0
  74. {superqode-2.2.4 → superqode-2.3.0}/setup.cfg +0 -0
  75. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/__init__.py +0 -0
  76. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/client.py +0 -0
  77. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/conformance.py +0 -0
  78. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/connection.py +0 -0
  79. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/context.py +0 -0
  80. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/inspect.py +0 -0
  81. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/keys.py +0 -0
  82. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/limits.py +0 -0
  83. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/oauth.py +0 -0
  84. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/presets.py +0 -0
  85. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/registry.py +0 -0
  86. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/reply.py +0 -0
  87. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/security.py +0 -0
  88. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/server.py +0 -0
  89. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/shortlist.py +0 -0
  90. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/skills.py +0 -0
  91. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/tools.py +0 -0
  92. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/trust.py +0 -0
  93. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/types.py +0 -0
  94. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/understand.py +0 -0
  95. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/a2a/workflows.py +0 -0
  96. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/__init__.py +0 -0
  97. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/client.py +0 -0
  98. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/doctor.py +0 -0
  99. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/permission_screen.py +0 -0
  100. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/permission_store.py +0 -0
  101. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/render.py +0 -0
  102. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/server.py +0 -0
  103. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/session_store.py +0 -0
  104. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/slash.py +0 -0
  105. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/tool_call_context.py +0 -0
  106. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp/types.py +0 -0
  107. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/acp_discovery.py +0 -0
  108. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/__init__.py +0 -0
  109. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/auto_memory.py +0 -0
  110. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/command_safety.py +0 -0
  111. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/compaction.py +0 -0
  112. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/context_manager.py +0 -0
  113. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/edit_strategies.py +0 -0
  114. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/exec_policy.py +0 -0
  115. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/hooks.py +0 -0
  116. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/loop.py +0 -0
  117. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/loop_guard.py +0 -0
  118. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/loop_policy.py +0 -0
  119. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/network_policy.py +0 -0
  120. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/output_handler.py +0 -0
  121. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/parallel_compare.py +0 -0
  122. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/peer_agents.py +0 -0
  123. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/plan_mode.py +0 -0
  124. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/reminders.py +0 -0
  125. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/rubric.py +0 -0
  126. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/session_manager.py +0 -0
  127. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/structured_output.py +0 -0
  128. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/summarization.py +0 -0
  129. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/system_prompts.py +0 -0
  130. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/terminal_output_limits.py +0 -0
  131. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/text_tool_calls.py +0 -0
  132. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/tool_args.py +0 -0
  133. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/tool_tracking.py +0 -0
  134. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent/utility_model.py +0 -0
  135. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent_output.py +0 -0
  136. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agent_stream.py +0 -0
  137. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/__init__.py +0 -0
  138. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/acp_registry.py +0 -0
  139. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/client.py +0 -0
  140. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/agentpool.phil65.github.io.toml +0 -0
  141. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/ampcode.com.toml +0 -0
  142. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/augmentcode.com.toml +0 -0
  143. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/autodev.github.io.toml +0 -0
  144. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/blackbox.ai.toml +0 -0
  145. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/bub.dev.toml +0 -0
  146. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/cagent.dev.toml +0 -0
  147. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/claude.com.toml +0 -0
  148. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/cline.bot.toml +0 -0
  149. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
  150. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/codebuddy.tencent.com.toml +0 -0
  151. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/codex.openai.com.toml +0 -0
  152. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/copilot.github.com.toml +0 -0
  153. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/cortex.snowflake.com.toml +0 -0
  154. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/crow-ai.dev.toml +0 -0
  155. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/cursor.com.toml +0 -0
  156. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/deepagents-code.langchain.com.toml +0 -0
  157. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/deepagents.langchain.com.toml +0 -0
  158. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/devin.ai.toml +0 -0
  159. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/dirac.run.toml +0 -0
  160. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/factory.ai.toml +0 -0
  161. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/fastagent.ai.toml +0 -0
  162. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/fount.dev.toml +0 -0
  163. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/fx.sh.toml +0 -0
  164. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/geminicli.com.toml +0 -0
  165. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/glm.z.ai.toml +0 -0
  166. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
  167. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/harnlang.com.toml +0 -0
  168. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/hermes-agent.nousresearch.com.toml +0 -0
  169. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
  170. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/kilo.ai.toml +0 -0
  171. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
  172. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/kiro.dev.toml +0 -0
  173. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
  174. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/minioncode.dev.toml +0 -0
  175. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/mistral-vibe.mistral.ai.toml +0 -0
  176. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/openclaw.ai.toml +0 -0
  177. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/opencode.ai.toml +0 -0
  178. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/openhands.dev.toml +0 -0
  179. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/pi.dev.toml +0 -0
  180. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/poolside.ai.toml +0 -0
  181. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/primeintellect.ai.toml +0 -0
  182. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/qoder.com.toml +0 -0
  183. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/qwenlm.github.io.toml +0 -0
  184. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/sigit.dev.toml +0 -0
  185. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/stakpak.dev.toml +0 -0
  186. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/stdiobus.dev.toml +0 -0
  187. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/vtcode.dev.toml +0 -0
  188. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/data/x.ai.toml +0 -0
  189. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/discovery.py +0 -0
  190. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/free_models.py +0 -0
  191. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/install_commands.py +0 -0
  192. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/messaging.py +0 -0
  193. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/official_acp.py +0 -0
  194. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/persona.py +0 -0
  195. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/registry.py +0 -0
  196. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/schema.py +0 -0
  197. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/agents/unified.py +0 -0
  198. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/__init__.py +0 -0
  199. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/async_utils.py +0 -0
  200. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/capabilities.py +0 -0
  201. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/constants.py +0 -0
  202. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/css.py +0 -0
  203. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/harness_picker.py +0 -0
  204. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/inputs.py +0 -0
  205. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/__init__.py +0 -0
  206. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/actions_misc.py +0 -0
  207. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/agent_run.py +0 -0
  208. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/build_harness.py +0 -0
  209. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/clickable_commands.py +0 -0
  210. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/codex.py +0 -0
  211. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/commands_impl.py +0 -0
  212. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/completion.py +0 -0
  213. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/connect.py +0 -0
  214. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/dialogs.py +0 -0
  215. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/events.py +0 -0
  216. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/explore.py +0 -0
  217. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/factory.py +0 -0
  218. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/feedback.py +0 -0
  219. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/formatting.py +0 -0
  220. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/harness_hub.py +0 -0
  221. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_clipboard.py +0 -0
  222. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_completion_helpers.py +0 -0
  223. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_diff_review.py +0 -0
  224. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_exit_lifecycle.py +0 -0
  225. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_file_view.py +0 -0
  226. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_interaction_mode.py +0 -0
  227. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_mcp_attach.py +0 -0
  228. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_message_queue.py +0 -0
  229. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_permissions.py +0 -0
  230. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_recipes_skills.py +0 -0
  231. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_share.py +0 -0
  232. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_startup.py +0 -0
  233. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_todos_plan.py +0 -0
  234. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_vim.py +0 -0
  235. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helper_wizard.py +0 -0
  236. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/helpers.py +0 -0
  237. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/huggingface.py +0 -0
  238. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/local_models.py +0 -0
  239. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/mcp.py +0 -0
  240. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/model_catalog.py +0 -0
  241. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/pickers.py +0 -0
  242. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/pipy_commands.py +0 -0
  243. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/rlm_commands.py +0 -0
  244. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/sidebar.py +0 -0
  245. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/slash_commands.py +0 -0
  246. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/switchboard.py +0 -0
  247. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/mixins/tour.py +0 -0
  248. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/models.py +0 -0
  249. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/navigation.py +0 -0
  250. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/outcomes.py +0 -0
  251. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/progress.py +0 -0
  252. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/prompt_stack.py +0 -0
  253. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/recipes.py +0 -0
  254. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/session_state.py +0 -0
  255. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/suggester.py +0 -0
  256. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/theme_bridge.py +0 -0
  257. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/welcome.py +0 -0
  258. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app/widgets.py +0 -0
  259. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app_enhanced.py +0 -0
  260. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/app_main.py +0 -0
  261. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/approval.py +0 -0
  262. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/atomic.py +0 -0
  263. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/auth/__init__.py +0 -0
  264. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/benchmarks.py +0 -0
  265. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/channels/__init__.py +0 -0
  266. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/channels/config.py +0 -0
  267. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/channels/discord.py +0 -0
  268. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/channels/service.py +0 -0
  269. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/channels/slack.py +0 -0
  270. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/channels/telegram.py +0 -0
  271. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/claude.py +0 -0
  272. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/codex.py +0 -0
  273. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/__init__.py +0 -0
  274. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/a2a.py +0 -0
  275. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/a2a_connect.py +0 -0
  276. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/a2a_keys.py +0 -0
  277. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/acp.py +0 -0
  278. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/agents.py +0 -0
  279. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/auth.py +0 -0
  280. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/benchmark.py +0 -0
  281. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/config.py +0 -0
  282. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/connect.py +0 -0
  283. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/daemon.py +0 -0
  284. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/factory.py +0 -0
  285. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/gauge.py +0 -0
  286. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/__init__.py +0 -0
  287. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/_group.py +0 -0
  288. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/_helpers.py +0 -0
  289. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/bench.py +0 -0
  290. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/candidates.py +0 -0
  291. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/evaluation.py +0 -0
  292. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/evidence.py +0 -0
  293. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/inbox.py +0 -0
  294. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/lifecycle.py +0 -0
  295. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/logbook.py +0 -0
  296. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/observability.py +0 -0
  297. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/optimization.py +0 -0
  298. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/promotion.py +0 -0
  299. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/protocol.py +0 -0
  300. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/registry.py +0 -0
  301. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/replay.py +0 -0
  302. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/run_history.py +0 -0
  303. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/harness/worker.py +0 -0
  304. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/hub.py +0 -0
  305. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/local.py +0 -0
  306. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/memory.py +0 -0
  307. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/models.py +0 -0
  308. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/plugins.py +0 -0
  309. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/policy.py +0 -0
  310. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/profiles.py +0 -0
  311. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/providers.py +0 -0
  312. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/runtime.py +0 -0
  313. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/sandbox.py +0 -0
  314. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/serve.py +0 -0
  315. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/sessions.py +0 -0
  316. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/share.py +0 -0
  317. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/skillopt.py +0 -0
  318. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/skills.py +0 -0
  319. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/tools.py +0 -0
  320. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/trust.py +0 -0
  321. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/update.py +0 -0
  322. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/commands/work.py +0 -0
  323. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/config/__init__.py +0 -0
  324. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/config/loader.py +0 -0
  325. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/config/schema.py +0 -0
  326. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/core/__init__.py +0 -0
  327. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/danger.py +0 -0
  328. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/data/eval_fixtures/ci-dynamic-root-cause.log +0 -0
  329. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/data/eval_fixtures/ci-root-cause.log +0 -0
  330. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/data/eval_packs/local_dynamic_workflow_smoke.yaml +0 -0
  331. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/data/eval_packs/local_recursive_smoke.yaml +0 -0
  332. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/data/superqode-template.yaml +0 -0
  333. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/design_system.py +0 -0
  334. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/dialogs/__init__.py +0 -0
  335. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/dialogs/base.py +0 -0
  336. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/dialogs/model.py +0 -0
  337. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/dialogs/provider.py +0 -0
  338. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/dialogs/runtime.py +0 -0
  339. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/diff_view.py +0 -0
  340. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/enterprise.py +0 -0
  341. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/evaluation/__init__.py +0 -0
  342. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/evaluation/adapters.py +0 -0
  343. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/evaluation/behaviors.py +0 -0
  344. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/evaluation/engine.py +0 -0
  345. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/evaluation/scenarios.py +0 -0
  346. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/execution/__init__.py +0 -0
  347. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/execution/linter.py +0 -0
  348. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/execution/modes.py +0 -0
  349. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/execution/resolver.py +0 -0
  350. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/execution/runner.py +0 -0
  351. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/extensions.py +0 -0
  352. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/file_explorer.py +0 -0
  353. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/file_viewer.py +0 -0
  354. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/flash.py +0 -0
  355. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/gauge/__init__.py +0 -0
  356. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/gauge/levels.py +0 -0
  357. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/gauge/record.py +0 -0
  358. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/gauge/sources.py +0 -0
  359. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/governance.py +0 -0
  360. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/__init__.py +0 -0
  361. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/accelerator.py +0 -0
  362. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/agent_importer.py +0 -0
  363. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/approval_memory.py +0 -0
  364. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/__init__.py +0 -0
  365. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/base.py +0 -0
  366. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/deepagents.py +0 -0
  367. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/dsh.py +0 -0
  368. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/managed.py +0 -0
  369. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/pipy.py +0 -0
  370. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/prime_agent.py +0 -0
  371. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/pydanticai.py +0 -0
  372. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/registry.py +0 -0
  373. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/rlm.py +0 -0
  374. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/rlm_code.py +0 -0
  375. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/tau.py +0 -0
  376. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/backends/uhp.py +0 -0
  377. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/bench.py +0 -0
  378. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/catalog.py +0 -0
  379. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/compiler.py +0 -0
  380. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/conformance.py +0 -0
  381. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/context_handles.py +0 -0
  382. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/diagnostics.py +0 -0
  383. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/discovery.py +0 -0
  384. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/drift.py +0 -0
  385. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/eval.py +0 -0
  386. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/events.py +0 -0
  387. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/explain.py +0 -0
  388. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/hooks.py +0 -0
  389. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/hub.py +0 -0
  390. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/kernel.py +0 -0
  391. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/loader.py +0 -0
  392. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/mcp_bridge.py +0 -0
  393. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/model_policy.py +0 -0
  394. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/model_routes.py +0 -0
  395. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/observability.py +0 -0
  396. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/omni.py +0 -0
  397. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/omnigent_importer.py +0 -0
  398. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/optimize.py +0 -0
  399. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/output.py +0 -0
  400. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/permissions.py +0 -0
  401. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/pipy_adapter.py +0 -0
  402. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/pipy_extensions.py +0 -0
  403. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/promotion.py +0 -0
  404. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/protocol.py +0 -0
  405. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/protocol_adapters.py +0 -0
  406. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/protocol_controller.py +0 -0
  407. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/registry.py +0 -0
  408. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/rlm_adapter.py +0 -0
  409. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/rlm_code_adapter.py +0 -0
  410. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/sandbox.py +0 -0
  411. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/self_improve.py +0 -0
  412. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/spec.py +0 -0
  413. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/store.py +0 -0
  414. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/tau_adapter.py +0 -0
  415. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/tau_management.py +0 -0
  416. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/templates.py +0 -0
  417. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/testing.py +0 -0
  418. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/uhp_adapter.py +0 -0
  419. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/wizard.py +0 -0
  420. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/workflow.py +0 -0
  421. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/harness/workflow_presets.py +0 -0
  422. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/headless.py +0 -0
  423. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/history.py +0 -0
  424. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/__init__.py +0 -0
  425. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/airplane.py +0 -0
  426. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/bench.py +0 -0
  427. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/build.py +0 -0
  428. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/code_index.py +0 -0
  429. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/devstral.yaml +0 -0
  430. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/ds4.yaml +0 -0
  431. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/gemma4.yaml +0 -0
  432. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/glm.yaml +0 -0
  433. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/gpt-oss.yaml +0 -0
  434. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/kimi.yaml +0 -0
  435. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/laguna.yaml +0 -0
  436. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/minimax.yaml +0 -0
  437. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/qwen-coder.yaml +0 -0
  438. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/model-packs/qwen3.yaml +0 -0
  439. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/data/stack_matrix.yaml +0 -0
  440. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/doctor.py +0 -0
  441. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/engines.py +0 -0
  442. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/guardrails.py +0 -0
  443. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/hardware.py +0 -0
  444. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/inventory.py +0 -0
  445. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/labs.py +0 -0
  446. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/laguna.py +0 -0
  447. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/matrix.py +0 -0
  448. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/migrate.py +0 -0
  449. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/optimize.py +0 -0
  450. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/packs.py +0 -0
  451. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/repo.py +0 -0
  452. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/servers.py +0 -0
  453. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/setup.py +0 -0
  454. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/local/smoke.py +0 -0
  455. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/logging/__init__.py +0 -0
  456. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/logging/adapters.py +0 -0
  457. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/logging/formatter.py +0 -0
  458. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/logging/integration.py +0 -0
  459. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/logging/sinks.py +0 -0
  460. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/logging/unified_log.py +0 -0
  461. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/lsp/__init__.py +0 -0
  462. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/lsp/client.py +0 -0
  463. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/main.py +0 -0
  464. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/__init__.py +0 -0
  465. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/auth_storage.py +0 -0
  466. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/client.py +0 -0
  467. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/config.py +0 -0
  468. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/elicitation.py +0 -0
  469. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/harness_server.py +0 -0
  470. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/hf_auth.py +0 -0
  471. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/integration.py +0 -0
  472. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/oauth.py +0 -0
  473. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/oauth_callback.py +0 -0
  474. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/sampling.py +0 -0
  475. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/search.py +0 -0
  476. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/mcp/types.py +0 -0
  477. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/memory/__init__.py +0 -0
  478. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/memory/config.py +0 -0
  479. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/memory/providers.py +0 -0
  480. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/memory/types.py +0 -0
  481. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/notifications.py +0 -0
  482. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/permissions/__init__.py +0 -0
  483. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/permissions/rules.py +0 -0
  484. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/__init__.py +0 -0
  485. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/ai/__init__.py +0 -0
  486. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/ai/fake.py +0 -0
  487. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/ai/gateway.py +0 -0
  488. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/ai/models.py +0 -0
  489. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/ai/transform.py +0 -0
  490. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/coding_session.py +0 -0
  491. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/compaction.py +0 -0
  492. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/config.py +0 -0
  493. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/event_stream.py +0 -0
  494. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/events.py +0 -0
  495. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/harness.py +0 -0
  496. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/harness_events.py +0 -0
  497. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/loop.py +0 -0
  498. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/messages.py +0 -0
  499. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/permissions.py +0 -0
  500. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/prompt_templates.py +0 -0
  501. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/provider_events.py +0 -0
  502. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/resources.py +0 -0
  503. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/session/__init__.py +0 -0
  504. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/session/codec.py +0 -0
  505. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/session/entries.py +0 -0
  506. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/session/jsonl.py +0 -0
  507. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/session/memory.py +0 -0
  508. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/session/repository.py +0 -0
  509. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/session/session.py +0 -0
  510. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/session/storage.py +0 -0
  511. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/signals.py +0 -0
  512. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/skills.py +0 -0
  513. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/stream.py +0 -0
  514. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/system_prompt.py +0 -0
  515. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/tools/__init__.py +0 -0
  516. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/tools/base.py +0 -0
  517. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/tools/edit_diff.py +0 -0
  518. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/tools/files.py +0 -0
  519. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/tools/paths.py +0 -0
  520. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/tools/registry.py +0 -0
  521. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/tools/search.py +0 -0
  522. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/tools/shell.py +0 -0
  523. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/tools/truncate.py +0 -0
  524. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/types.py +0 -0
  525. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pipy/validation.py +0 -0
  526. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/plan.py +0 -0
  527. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/platform_locks.py +0 -0
  528. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/plugins.py +0 -0
  529. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/project_trust.py +0 -0
  530. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/__init__.py +0 -0
  531. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/_builtin_profiles.py +0 -0
  532. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/acp_free_models.py +0 -0
  533. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/acp_models.py +0 -0
  534. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/acp_registry.py +0 -0
  535. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/apple_fm.py +0 -0
  536. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/catalog.py +0 -0
  537. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/connection_profiles.py +0 -0
  538. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/copilot_auth.py +0 -0
  539. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/credentials.py +0 -0
  540. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/dynamic.py +0 -0
  541. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/env_introspect.py +0 -0
  542. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/free_inference.py +0 -0
  543. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/gateway/__init__.py +0 -0
  544. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/gateway/base.py +0 -0
  545. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/gateway/litellm_gateway.py +0 -0
  546. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
  547. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/gateway/synthetic.py +0 -0
  548. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/grok_cli_auth.py +0 -0
  549. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/harness_catalog.py +0 -0
  550. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/health.py +0 -0
  551. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/huggingface/__init__.py +0 -0
  552. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/huggingface/convert.py +0 -0
  553. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/huggingface/downloader.py +0 -0
  554. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/huggingface/endpoints.py +0 -0
  555. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/huggingface/fetch.py +0 -0
  556. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/huggingface/hub.py +0 -0
  557. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/huggingface/inference.py +0 -0
  558. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
  559. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/live_models.py +0 -0
  560. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/__init__.py +0 -0
  561. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/_mlx_worker.py +0 -0
  562. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/base.py +0 -0
  563. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/capabilities.py +0 -0
  564. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/context_probe.py +0 -0
  565. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/discovery.py +0 -0
  566. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/ds4.py +0 -0
  567. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/lmstudio.py +0 -0
  568. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/mlx.py +0 -0
  569. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/mlx_engine.py +0 -0
  570. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/mlx_tools.py +0 -0
  571. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/ollama.py +0 -0
  572. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/sglang.py +0 -0
  573. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/smoke.py +0 -0
  574. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/tgi.py +0 -0
  575. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/tool_support.py +0 -0
  576. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/local/vllm.py +0 -0
  577. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/manager.py +0 -0
  578. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/model_specs.py +0 -0
  579. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/models.py +0 -0
  580. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/models_dev.py +0 -0
  581. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/opencode_models.py +0 -0
  582. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/__init__.py +0 -0
  583. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
  584. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/converters/messages.py +0 -0
  585. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/converters/tools.py +0 -0
  586. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
  587. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/schema/models.py +0 -0
  588. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
  589. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
  590. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
  591. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
  592. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
  593. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
  594. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
  595. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/prime_agent.py +0 -0
  596. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/profiles.py +0 -0
  597. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/recommendations.py +0 -0
  598. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/registry.py +0 -0
  599. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/subscription_env.py +0 -0
  600. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/subscription_login.py +0 -0
  601. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/uhp.py +0 -0
  602. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/providers/usage.py +0 -0
  603. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/pure_mode.py +0 -0
  604. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/py.typed +0 -0
  605. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rendering/__init__.py +0 -0
  606. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rendering/html_export.py +0 -0
  607. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rendering/markdown.py +0 -0
  608. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rendering/transcript_export.py +0 -0
  609. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/__init__.py +0 -0
  610. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/coding_session.py +0 -0
  611. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/config.py +0 -0
  612. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/context.py +0 -0
  613. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/identity.py +0 -0
  614. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/kernel.py +0 -0
  615. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/kernel_backend.py +0 -0
  616. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/kernel_docker.py +0 -0
  617. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/kernel_monty.py +0 -0
  618. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/kernel_server.py +0 -0
  619. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/policy.py +0 -0
  620. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/root_runtime.py +0 -0
  621. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/root_worker.py +0 -0
  622. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/sandbox.py +0 -0
  623. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/subcalls.py +0 -0
  624. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/supervisor.py +0 -0
  625. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/worker.py +0 -0
  626. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/rlm/worker_process.py +0 -0
  627. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/__init__.py +0 -0
  628. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/adk.py +0 -0
  629. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/antigravity_cli.py +0 -0
  630. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/antigravity_managed.py +0 -0
  631. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/antigravity_sdk.py +0 -0
  632. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/antigravity_status.py +0 -0
  633. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/base.py +0 -0
  634. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/builtin.py +0 -0
  635. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/claude_agent_sdk.py +0 -0
  636. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/codex_sdk.py +0 -0
  637. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/copilot_sdk.py +0 -0
  638. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/devin_cli.py +0 -0
  639. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/devin_status.py +0 -0
  640. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/errors.py +0 -0
  641. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/openai_agents.py +0 -0
  642. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/openai_sandbox.py +0 -0
  643. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/openai_session.py +0 -0
  644. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/pydanticai.py +0 -0
  645. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/registry.py +0 -0
  646. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/tool_bridge.py +0 -0
  647. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/tool_bridge_openai.py +0 -0
  648. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/tool_bridge_pydanticai.py +0 -0
  649. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/runtime/vendor_cli.py +0 -0
  650. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/safety/__init__.py +0 -0
  651. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/safety/sandbox.py +0 -0
  652. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/safety/warnings.py +0 -0
  653. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/sandbox/__init__.py +0 -0
  654. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/sandbox/backends.py +0 -0
  655. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/sandbox/execution.py +0 -0
  656. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/sandbox/local_sandbox.py +0 -0
  657. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/search_registry.py +0 -0
  658. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/server/__init__.py +0 -0
  659. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/server/api.py +0 -0
  660. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/server/web.py +0 -0
  661. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/session/__init__.py +0 -0
  662. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/session/factory.py +0 -0
  663. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/session/persistence.py +0 -0
  664. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/session/share_artifacts.py +0 -0
  665. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/session/sharing.py +0 -0
  666. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/session/switchboard.py +0 -0
  667. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/session.py +0 -0
  668. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/sidebar.py +0 -0
  669. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/skillopt.py +0 -0
  670. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/skills.py +0 -0
  671. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/stream_view.py +0 -0
  672. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/styles/__init__.py +0 -0
  673. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tool_call.py +0 -0
  674. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/__init__.py +0 -0
  675. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/agent_tools.py +0 -0
  676. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/apply_patch.py +0 -0
  677. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/base.py +0 -0
  678. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/batch_tool.py +0 -0
  679. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/compact_tool.py +0 -0
  680. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/context_handle.py +0 -0
  681. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/context_tools.py +0 -0
  682. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/core_tools.py +0 -0
  683. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/diagnostics.py +0 -0
  684. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/diff_utils.py +0 -0
  685. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/display.py +0 -0
  686. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/dynamic_workflow.py +0 -0
  687. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/edit_tools.py +0 -0
  688. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/enhanced_base.py +0 -0
  689. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/env_policy.py +0 -0
  690. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/file_tools.py +0 -0
  691. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/file_tracking.py +0 -0
  692. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/governed.py +0 -0
  693. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/harness_agent_session.py +0 -0
  694. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/image_tools.py +0 -0
  695. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/lsp_tools.py +0 -0
  696. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/mcp_tools.py +0 -0
  697. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/monty_tool.py +0 -0
  698. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/network_tools.py +0 -0
  699. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/output_spill.py +0 -0
  700. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/peer_agent_tools.py +0 -0
  701. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/permissions.py +0 -0
  702. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/post_edit.py +0 -0
  703. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/question_tool.py +0 -0
  704. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/request_permissions_tool.py +0 -0
  705. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/search_tools.py +0 -0
  706. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/semantic_search.py +0 -0
  707. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/shell_session.py +0 -0
  708. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/shell_tools.py +0 -0
  709. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/skill_tools.py +0 -0
  710. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/spawn_harness.py +0 -0
  711. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/todo_tools.py +0 -0
  712. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/tool_search.py +0 -0
  713. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/validation.py +0 -0
  714. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tools/web_tools.py +0 -0
  715. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tui_integration.py +0 -0
  716. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tui_widgets/__init__.py +0 -0
  717. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
  718. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tui_widgets/widgets/progress.py +0 -0
  719. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
  720. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/undo_manager.py +0 -0
  721. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/utils/__init__.py +0 -0
  722. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/utils/error_handling.py +0 -0
  723. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/utils/fuzzy.py +0 -0
  724. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/__init__.py +0 -0
  725. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/a2a_connect.py +0 -0
  726. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/agent_store.py +0 -0
  727. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/agent_switcher.py +0 -0
  728. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/animation_manager.py +0 -0
  729. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/code_context.py +0 -0
  730. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/command_palette.py +0 -0
  731. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/connection_status.py +0 -0
  732. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/conversation_history.py +0 -0
  733. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/diff_indicator.py +0 -0
  734. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/enhanced_status_bar.py +0 -0
  735. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/enhanced_toast.py +0 -0
  736. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/file_browser.py +0 -0
  737. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/file_reference.py +0 -0
  738. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/harness_hub.py +0 -0
  739. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/leader_key.py +0 -0
  740. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/mode_switcher.py +0 -0
  741. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/model_picker.py +0 -0
  742. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/outcome_screen.py +0 -0
  743. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/permission_preview.py +0 -0
  744. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/prompt.py +0 -0
  745. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/provider_connect.py +0 -0
  746. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/pty_shell.py +0 -0
  747. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/resizable_sidebar.py +0 -0
  748. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/response_changes.py +0 -0
  749. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/response_display.py +0 -0
  750. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/rewind_overlay.py +0 -0
  751. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/rich_tool_display.py +0 -0
  752. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/sidebar_panels.py +0 -0
  753. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/slash_commands.py +0 -0
  754. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/slash_complete.py +0 -0
  755. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/split_view.py +0 -0
  756. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/status_bar.py +0 -0
  757. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/superqode_display.py +0 -0
  758. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/theme_picker.py +0 -0
  759. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/thinking.py +0 -0
  760. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/thinking_display.py +0 -0
  761. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/throbber.py +0 -0
  762. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/toast.py +0 -0
  763. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/uhp_connect.py +0 -0
  764. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/widgets/unified_output.py +0 -0
  765. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workorders/__init__.py +0 -0
  766. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workorders/cockpit.py +0 -0
  767. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workorders/integration.py +0 -0
  768. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workorders/models.py +0 -0
  769. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workorders/runner.py +0 -0
  770. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workorders/store.py +0 -0
  771. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workorders/usage.py +0 -0
  772. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workorders/worker.py +0 -0
  773. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/__init__.py +0 -0
  774. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/artifacts.py +0 -0
  775. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/change_summary.py +0 -0
  776. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/coordinator.py +0 -0
  777. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/diff_tracker.py +0 -0
  778. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/git_guard.py +0 -0
  779. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/git_snapshot.py +0 -0
  780. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/manager.py +0 -0
  781. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/snapshot.py +0 -0
  782. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/watcher.py +0 -0
  783. {superqode-2.2.4 → superqode-2.3.0}/src/superqode/workspace/worktree.py +0 -0
  784. {superqode-2.2.4 → superqode-2.3.0}/src/superqode.egg-info/SOURCES.txt +0 -0
  785. {superqode-2.2.4 → superqode-2.3.0}/src/superqode.egg-info/dependency_links.txt +0 -0
  786. {superqode-2.2.4 → superqode-2.3.0}/src/superqode.egg-info/entry_points.txt +0 -0
  787. {superqode-2.2.4 → superqode-2.3.0}/src/superqode.egg-info/requires.txt +0 -0
  788. {superqode-2.2.4 → superqode-2.3.0}/src/superqode.egg-info/top_level.txt +0 -0
  789. {superqode-2.2.4 → superqode-2.3.0}/tests/test_030_candidate.py +0 -0
  790. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_bridge.py +0 -0
  791. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_conformance.py +0 -0
  792. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_connect.py +0 -0
  793. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_context.py +0 -0
  794. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_keys.py +0 -0
  795. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_limits.py +0 -0
  796. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_oauth.py +0 -0
  797. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_security.py +0 -0
  798. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_shortlist.py +0 -0
  799. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_trust.py +0 -0
  800. {superqode-2.2.4 → superqode-2.3.0}/tests/test_a2a_understand.py +0 -0
  801. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_agent_dispatch.py +0 -0
  802. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_client.py +0 -0
  803. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_free_models.py +0 -0
  804. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_parent_tool_linking.py +0 -0
  805. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_permission_store.py +0 -0
  806. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_registry.py +0 -0
  807. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_render.py +0 -0
  808. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_server.py +0 -0
  809. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_session_store.py +0 -0
  810. {superqode-2.2.4 → superqode-2.3.0}/tests/test_acp_slash.py +0 -0
  811. {superqode-2.2.4 → superqode-2.3.0}/tests/test_adaptive_compaction.py +0 -0
  812. {superqode-2.2.4 → superqode-2.3.0}/tests/test_agent_importer.py +0 -0
  813. {superqode-2.2.4 → superqode-2.3.0}/tests/test_agent_install_commands.py +0 -0
  814. {superqode-2.2.4 → superqode-2.3.0}/tests/test_agent_loop_harness.py +0 -0
  815. {superqode-2.2.4 → superqode-2.3.0}/tests/test_agent_memory.py +0 -0
  816. {superqode-2.2.4 → superqode-2.3.0}/tests/test_agents_md_compat.py +0 -0
  817. {superqode-2.2.4 → superqode-2.3.0}/tests/test_agy_tui_commands.py +0 -0
  818. {superqode-2.2.4 → superqode-2.3.0}/tests/test_app_main_contract.py +0 -0
  819. {superqode-2.2.4 → superqode-2.3.0}/tests/test_apply_patch.py +0 -0
  820. {superqode-2.2.4 → superqode-2.3.0}/tests/test_auth.py +0 -0
  821. {superqode-2.2.4 → superqode-2.3.0}/tests/test_bash_spill.py +0 -0
  822. {superqode-2.2.4 → superqode-2.3.0}/tests/test_benchmarks.py +0 -0
  823. {superqode-2.2.4 → superqode-2.3.0}/tests/test_catalog_freshness.py +0 -0
  824. {superqode-2.2.4 → superqode-2.3.0}/tests/test_change_summary.py +0 -0
  825. {superqode-2.2.4 → superqode-2.3.0}/tests/test_channels.py +0 -0
  826. {superqode-2.2.4 → superqode-2.3.0}/tests/test_cli_commands.py +0 -0
  827. {superqode-2.2.4 → superqode-2.3.0}/tests/test_cli_connect.py +0 -0
  828. {superqode-2.2.4 → superqode-2.3.0}/tests/test_cli_contract.py +0 -0
  829. {superqode-2.2.4 → superqode-2.3.0}/tests/test_cli_reference_coverage.py +0 -0
  830. {superqode-2.2.4 → superqode-2.3.0}/tests/test_clickable_commands.py +0 -0
  831. {superqode-2.2.4 → superqode-2.3.0}/tests/test_command_safety.py +0 -0
  832. {superqode-2.2.4 → superqode-2.3.0}/tests/test_commands_runtime.py +0 -0
  833. {superqode-2.2.4 → superqode-2.3.0}/tests/test_compaction.py +0 -0
  834. {superqode-2.2.4 → superqode-2.3.0}/tests/test_config_loader.py +0 -0
  835. {superqode-2.2.4 → superqode-2.3.0}/tests/test_config_runtime.py +0 -0
  836. {superqode-2.2.4 → superqode-2.3.0}/tests/test_connect_harness_screen.py +0 -0
  837. {superqode-2.2.4 → superqode-2.3.0}/tests/test_connect_setup.py +0 -0
  838. {superqode-2.2.4 → superqode-2.3.0}/tests/test_connection_profiles.py +0 -0
  839. {superqode-2.2.4 → superqode-2.3.0}/tests/test_context_handles.py +0 -0
  840. {superqode-2.2.4 → superqode-2.3.0}/tests/test_context_probe.py +0 -0
  841. {superqode-2.2.4 → superqode-2.3.0}/tests/test_context_remaining.py +0 -0
  842. {superqode-2.2.4 → superqode-2.3.0}/tests/test_copilot_login_ux.py +0 -0
  843. {superqode-2.2.4 → superqode-2.3.0}/tests/test_copilot_tui_commands.py +0 -0
  844. {superqode-2.2.4 → superqode-2.3.0}/tests/test_create_skill_tool.py +0 -0
  845. {superqode-2.2.4 → superqode-2.3.0}/tests/test_deepagents_model_spec.py +0 -0
  846. {superqode-2.2.4 → superqode-2.3.0}/tests/test_deferred_tools.py +0 -0
  847. {superqode-2.2.4 → superqode-2.3.0}/tests/test_design_system_contrast.py +0 -0
  848. {superqode-2.2.4 → superqode-2.3.0}/tests/test_developer_workflow_docs.py +0 -0
  849. {superqode-2.2.4 → superqode-2.3.0}/tests/test_ds4_local_client.py +0 -0
  850. {superqode-2.2.4 → superqode-2.3.0}/tests/test_dsh_harness.py +0 -0
  851. {superqode-2.2.4 → superqode-2.3.0}/tests/test_dynamic_workflow_tool.py +0 -0
  852. {superqode-2.2.4 → superqode-2.3.0}/tests/test_edit_line_number_strip.py +0 -0
  853. {superqode-2.2.4 → superqode-2.3.0}/tests/test_env_introspect.py +0 -0
  854. {superqode-2.2.4 → superqode-2.3.0}/tests/test_execution_resolver.py +0 -0
  855. {superqode-2.2.4 → superqode-2.3.0}/tests/test_extensions.py +0 -0
  856. {superqode-2.2.4 → superqode-2.3.0}/tests/test_final_parity_wave.py +0 -0
  857. {superqode-2.2.4 → superqode-2.3.0}/tests/test_free_models.py +0 -0
  858. {superqode-2.2.4 → superqode-2.3.0}/tests/test_governance.py +0 -0
  859. {superqode-2.2.4 → superqode-2.3.0}/tests/test_grok_cli_auth.py +0 -0
  860. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_agent_session.py +0 -0
  861. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_backends.py +0 -0
  862. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_bench.py +0 -0
  863. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_bench_paths.py +0 -0
  864. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_catalog.py +0 -0
  865. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_connect_catalog.py +0 -0
  866. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_drift.py +0 -0
  867. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_eval_splits.py +0 -0
  868. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_examples.py +0 -0
  869. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_explain.py +0 -0
  870. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_hooks.py +0 -0
  871. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_hub_catalog.py +0 -0
  872. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_hub_screen.py +0 -0
  873. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_kernel.py +0 -0
  874. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_mcp_server.py +0 -0
  875. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_model_policy.py +0 -0
  876. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_observability.py +0 -0
  877. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_omni.py +0 -0
  878. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_output.py +0 -0
  879. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_permissions.py +0 -0
  880. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_promotion.py +0 -0
  881. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_protocol.py +0 -0
  882. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_sandbox.py +0 -0
  883. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_seesaw_dimensions.py +0 -0
  884. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_self_improve.py +0 -0
  885. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_spec.py +0 -0
  886. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_store.py +0 -0
  887. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_usage.py +0 -0
  888. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_wizard.py +0 -0
  889. {superqode-2.2.4 → superqode-2.3.0}/tests/test_harness_workflow.py +0 -0
  890. {superqode-2.2.4 → superqode-2.3.0}/tests/test_headless.py +0 -0
  891. {superqode-2.2.4 → superqode-2.3.0}/tests/test_hf_fetch.py +0 -0
  892. {superqode-2.2.4 → superqode-2.3.0}/tests/test_hooks.py +0 -0
  893. {superqode-2.2.4 → superqode-2.3.0}/tests/test_install_script.py +0 -0
  894. {superqode-2.2.4 → superqode-2.3.0}/tests/test_integration_docs.py +0 -0
  895. {superqode-2.2.4 → superqode-2.3.0}/tests/test_kimi_k3_provider.py +0 -0
  896. {superqode-2.2.4 → superqode-2.3.0}/tests/test_kimi_k3_routes.py +0 -0
  897. {superqode-2.2.4 → superqode-2.3.0}/tests/test_linter_runner.py +0 -0
  898. {superqode-2.2.4 → superqode-2.3.0}/tests/test_litellm_gateway.py +0 -0
  899. {superqode-2.2.4 → superqode-2.3.0}/tests/test_live_acp_registry.py +0 -0
  900. {superqode-2.2.4 → superqode-2.3.0}/tests/test_live_models.py +0 -0
  901. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_airplane.py +0 -0
  902. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_build.py +0 -0
  903. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_code_index.py +0 -0
  904. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_labs.py +0 -0
  905. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_migrate.py +0 -0
  906. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_model_optimizations.py +0 -0
  907. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_packs.py +0 -0
  908. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_sandbox.py +0 -0
  909. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_search.py +0 -0
  910. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_servers.py +0 -0
  911. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_setup.py +0 -0
  912. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_smoke.py +0 -0
  913. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_stack.py +0 -0
  914. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_tool_capabilities.py +0 -0
  915. {superqode-2.2.4 → superqode-2.3.0}/tests/test_local_tool_support.py +0 -0
  916. {superqode-2.2.4 → superqode-2.3.0}/tests/test_login_api.py +0 -0
  917. {superqode-2.2.4 → superqode-2.3.0}/tests/test_loop_guard.py +0 -0
  918. {superqode-2.2.4 → superqode-2.3.0}/tests/test_managed_harness_backend.py +0 -0
  919. {superqode-2.2.4 → superqode-2.3.0}/tests/test_markdown_render.py +0 -0
  920. {superqode-2.2.4 → superqode-2.3.0}/tests/test_mcp.py +0 -0
  921. {superqode-2.2.4 → superqode-2.3.0}/tests/test_mcp_example_server.py +0 -0
  922. {superqode-2.2.4 → superqode-2.3.0}/tests/test_mcp_integration.py +0 -0
  923. {superqode-2.2.4 → superqode-2.3.0}/tests/test_mcp_live.py +0 -0
  924. {superqode-2.2.4 → superqode-2.3.0}/tests/test_mcp_oauth_generalized.py +0 -0
  925. {superqode-2.2.4 → superqode-2.3.0}/tests/test_mcp_tools_runtime.py +0 -0
  926. {superqode-2.2.4 → superqode-2.3.0}/tests/test_mcp_two_way.py +0 -0
  927. {superqode-2.2.4 → superqode-2.3.0}/tests/test_memory_recall.py +0 -0
  928. {superqode-2.2.4 → superqode-2.3.0}/tests/test_mlx_tools.py +0 -0
  929. {superqode-2.2.4 → superqode-2.3.0}/tests/test_model_profiles.py +0 -0
  930. {superqode-2.2.4 → superqode-2.3.0}/tests/test_model_specs.py +0 -0
  931. {superqode-2.2.4 → superqode-2.3.0}/tests/test_models_dev.py +0 -0
  932. {superqode-2.2.4 → superqode-2.3.0}/tests/test_monty_tool.py +0 -0
  933. {superqode-2.2.4 → superqode-2.3.0}/tests/test_navigation_history.py +0 -0
  934. {superqode-2.2.4 → superqode-2.3.0}/tests/test_network_policy.py +0 -0
  935. {superqode-2.2.4 → superqode-2.3.0}/tests/test_ollama_client.py +0 -0
  936. {superqode-2.2.4 → superqode-2.3.0}/tests/test_omnigent_agent_session_smoke.py +0 -0
  937. {superqode-2.2.4 → superqode-2.3.0}/tests/test_omnigent_importer.py +0 -0
  938. {superqode-2.2.4 → superqode-2.3.0}/tests/test_openai_session.py +0 -0
  939. {superqode-2.2.4 → superqode-2.3.0}/tests/test_output_spill.py +0 -0
  940. {superqode-2.2.4 → superqode-2.3.0}/tests/test_parallel_compare.py +0 -0
  941. {superqode-2.2.4 → superqode-2.3.0}/tests/test_peer_agents.py +0 -0
  942. {superqode-2.2.4 → superqode-2.3.0}/tests/test_plugin_hook_wiring.py +0 -0
  943. {superqode-2.2.4 → superqode-2.3.0}/tests/test_plugins.py +0 -0
  944. {superqode-2.2.4 → superqode-2.3.0}/tests/test_policies_and_turndiff.py +0 -0
  945. {superqode-2.2.4 → superqode-2.3.0}/tests/test_post_edit_verify.py +0 -0
  946. {superqode-2.2.4 → superqode-2.3.0}/tests/test_prime_agent_client.py +0 -0
  947. {superqode-2.2.4 → superqode-2.3.0}/tests/test_prime_agent_harness.py +0 -0
  948. {superqode-2.2.4 → superqode-2.3.0}/tests/test_prime_agent_provider.py +0 -0
  949. {superqode-2.2.4 → superqode-2.3.0}/tests/test_prime_command_surface.py +0 -0
  950. {superqode-2.2.4 → superqode-2.3.0}/tests/test_prime_tui_rpc.py +0 -0
  951. {superqode-2.2.4 → superqode-2.3.0}/tests/test_progressive_discovery.py +0 -0
  952. {superqode-2.2.4 → superqode-2.3.0}/tests/test_progressive_reveals.py +0 -0
  953. {superqode-2.2.4 → superqode-2.3.0}/tests/test_project_trust.py +0 -0
  954. {superqode-2.2.4 → superqode-2.3.0}/tests/test_prompt_stack.py +0 -0
  955. {superqode-2.2.4 → superqode-2.3.0}/tests/test_provider_catalog.py +0 -0
  956. {superqode-2.2.4 → superqode-2.3.0}/tests/test_provider_dynamic.py +0 -0
  957. {superqode-2.2.4 → superqode-2.3.0}/tests/test_provider_models.py +0 -0
  958. {superqode-2.2.4 → superqode-2.3.0}/tests/test_provider_recommendations.py +0 -0
  959. {superqode-2.2.4 → superqode-2.3.0}/tests/test_pure_mode_sessions.py +0 -0
  960. {superqode-2.2.4 → superqode-2.3.0}/tests/test_qm_deployment_layer.py +0 -0
  961. {superqode-2.2.4 → superqode-2.3.0}/tests/test_rate_limit_retry.py +0 -0
  962. {superqode-2.2.4 → superqode-2.3.0}/tests/test_read_tool_limits.py +0 -0
  963. {superqode-2.2.4 → superqode-2.3.0}/tests/test_reasoning_and_budget.py +0 -0
  964. {superqode-2.2.4 → superqode-2.3.0}/tests/test_recursive_eval_packs.py +0 -0
  965. {superqode-2.2.4 → superqode-2.3.0}/tests/test_release_metadata.py +0 -0
  966. {superqode-2.2.4 → superqode-2.3.0}/tests/test_rlm_code_integration.py +0 -0
  967. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_adk.py +0 -0
  968. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_antigravity_cli.py +0 -0
  969. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_antigravity_managed.py +0 -0
  970. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_antigravity_sdk.py +0 -0
  971. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_builtin.py +0 -0
  972. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_claude_agent_sdk.py +0 -0
  973. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_codex_sdk.py +0 -0
  974. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_copilot_sdk.py +0 -0
  975. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_devin_cli.py +0 -0
  976. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_dialog.py +0 -0
  977. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_openai_agents.py +0 -0
  978. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_openai_events.py +0 -0
  979. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_openai_hitl.py +0 -0
  980. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_openai_sandbox.py +0 -0
  981. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_protocol.py +0 -0
  982. {superqode-2.2.4 → superqode-2.3.0}/tests/test_runtime_pydanticai.py +0 -0
  983. {superqode-2.2.4 → superqode-2.3.0}/tests/test_sandbox_backends.py +0 -0
  984. {superqode-2.2.4 → superqode-2.3.0}/tests/test_sandbox_execution.py +0 -0
  985. {superqode-2.2.4 → superqode-2.3.0}/tests/test_search_roots.py +0 -0
  986. {superqode-2.2.4 → superqode-2.3.0}/tests/test_semantic_search.py +0 -0
  987. {superqode-2.2.4 → superqode-2.3.0}/tests/test_session_switchboard.py +0 -0
  988. {superqode-2.2.4 → superqode-2.3.0}/tests/test_shell_session.py +0 -0
  989. {superqode-2.2.4 → superqode-2.3.0}/tests/test_simple_login.py +0 -0
  990. {superqode-2.2.4 → superqode-2.3.0}/tests/test_simple_query_fastpath.py +0 -0
  991. {superqode-2.2.4 → superqode-2.3.0}/tests/test_skillopt.py +0 -0
  992. {superqode-2.2.4 → superqode-2.3.0}/tests/test_slash_runtime.py +0 -0
  993. {superqode-2.2.4 → superqode-2.3.0}/tests/test_spawn_harness_tool.py +0 -0
  994. {superqode-2.2.4 → superqode-2.3.0}/tests/test_status_bar_layout.py +0 -0
  995. {superqode-2.2.4 → superqode-2.3.0}/tests/test_steering_continue_reminders.py +0 -0
  996. {superqode-2.2.4 → superqode-2.3.0}/tests/test_streaming_tool_calls.py +0 -0
  997. {superqode-2.2.4 → superqode-2.3.0}/tests/test_subscription_billing_policy.py +0 -0
  998. {superqode-2.2.4 → superqode-2.3.0}/tests/test_subscription_login.py +0 -0
  999. {superqode-2.2.4 → superqode-2.3.0}/tests/test_subscription_login_consent.py +0 -0
  1000. {superqode-2.2.4 → superqode-2.3.0}/tests/test_synthetic_gateways.py +0 -0
  1001. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tau_harness_adapter.py +0 -0
  1002. {superqode-2.2.4 → superqode-2.3.0}/tests/test_terminal_output_limits.py +0 -0
  1003. {superqode-2.2.4 → superqode-2.3.0}/tests/test_theme_contrast.py +0 -0
  1004. {superqode-2.2.4 → superqode-2.3.0}/tests/test_theme_picker.py +0 -0
  1005. {superqode-2.2.4 → superqode-2.3.0}/tests/test_theme_repaint.py +0 -0
  1006. {superqode-2.2.4 → superqode-2.3.0}/tests/test_todo_tools.py +0 -0
  1007. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tool_args_repair.py +0 -0
  1008. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tool_batch_safety.py +0 -0
  1009. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tool_bridge.py +0 -0
  1010. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tool_bridge_openai.py +0 -0
  1011. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tool_call_repair.py +0 -0
  1012. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tool_output_pruning.py +0 -0
  1013. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tool_tracking.py +0 -0
  1014. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tools.py +0 -0
  1015. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_change_summary.py +0 -0
  1016. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_chat_mode.py +0 -0
  1017. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_diagnostics.py +0 -0
  1018. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_exit.py +0 -0
  1019. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_feedback.py +0 -0
  1020. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_launch_performance.py +0 -0
  1021. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_llamacpp_connect.py +0 -0
  1022. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_markdown_cleanup.py +0 -0
  1023. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_mlx_connect.py +0 -0
  1024. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_mounted.py +0 -0
  1025. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_onboarding.py +0 -0
  1026. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_smoke.py +0 -0
  1027. {superqode-2.2.4 → superqode-2.3.0}/tests/test_tui_tool_display.py +0 -0
  1028. {superqode-2.2.4 → superqode-2.3.0}/tests/test_uhp_backend.py +0 -0
  1029. {superqode-2.2.4 → superqode-2.3.0}/tests/test_update_command.py +0 -0
  1030. {superqode-2.2.4 → superqode-2.3.0}/tests/test_vendor_cli_runtime.py +0 -0
  1031. {superqode-2.2.4 → superqode-2.3.0}/tests/test_version.py +0 -0
  1032. {superqode-2.2.4 → superqode-2.3.0}/tests/test_view_image.py +0 -0
  1033. {superqode-2.2.4 → superqode-2.3.0}/tests/test_web_server_auth.py +0 -0
  1034. {superqode-2.2.4 → superqode-2.3.0}/tests/test_workorders.py +0 -0
  1035. {superqode-2.2.4 → superqode-2.3.0}/tests/test_workspace.py +0 -0
  1036. {superqode-2.2.4 → superqode-2.3.0}/tests/test_zai_provider.py +0 -0
@@ -7,6 +7,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.3.0] - 2026-09-13
11
+
12
+ The UHP server release. `serve uhp` serves session listing, inspection and
13
+ turn history, so a client can find a session it did not record and rebuild its
14
+ transcript. Core conformance stays at 40 of 40 with no skips.
15
+
16
+ ### 🧩 Unified Harness Protocol
17
+
18
+ - **Sessions are inspectable.** `GET /v1/sessions` lists them newest first,
19
+ with cursor pagination that states the end of the listing instead of leaving
20
+ a client to infer it from a short page. `GET /v1/sessions/{id}` returns one,
21
+ and `GET /v1/sessions/{id}/turns` returns its ordered task history, each
22
+ turn carrying its response id, status, prompt and answer.
23
+ - **Session listing is off on a shared bind.** The capability follows whether
24
+ the bind takes a caller-supplied provider key. One bearer shared by every
25
+ caller means a session list would hand each of them the others' prompts and
26
+ answers, so the public bind reports `session_listing: false` and answers
27
+ 404, which is what a Core server does. A local bind reports it true.
28
+ - Resuming a UHP session against a Core server no longer fails with an opaque
29
+ transport error. Turn history is an Extended surface, so a Core server
30
+ answering 404 there is correct and means there is no history to read. The
31
+ client now says the route cannot resume that session instead of reporting a
32
+ server failure.
33
+
34
+ ## [2.2.5] - 2026-09-13
35
+
36
+ SuperQode's UHP server adopts protocol `2026-09-12` and passes the UHP
37
+ conformance suite at class core, 40 of 40 checks with no skips. Every
38
+ capability it advertises it now implements, cancellation included.
39
+
40
+ ### 🧩 Unified Harness Protocol
41
+
42
+ - **UHP `2026-09-12`.** The client targets it and the server serves it
43
+ alongside `2026-08-11`, from one code path, because the newer version is
44
+ additive. The server echoes the version the caller asked for; a caller who
45
+ names none gets the default, which is now `2026-09-12`.
46
+ - The client drops to `2026-08-11` by itself when a server answers
47
+ `unsupported_protocol_version`, so an older server still works.
48
+ - Discovery reports `plugins: false`. The chapter is new in `2026-09-12` and
49
+ belongs to class Full, and a capability a server does not implement is
50
+ reported false instead of omitted.
51
+ - **Six specification requirements the Core suite does not reach.** A response
52
+ now names the harness that served it when the request named none; a
53
+ `previous_response_id` the server no longer retains is `404 session_expired`
54
+ instead of a quiet new session; a model the harness cannot serve is
55
+ `422 model_unavailable` instead of being echoed back as the model that ran;
56
+ session ids carry the specified `hsess` prefix; a repeated `Idempotency-Key`
57
+ waits for the first run instead of returning its in-flight record; and
58
+ `timeout_seconds`, `max_step`, `max_output_tokens` and `background` are
59
+ honoured instead of being accepted and dropped. Work stopped at a budget
60
+ reports `incomplete`, never `completed`.
61
+ - **Cancellation stops the work.** `POST /v1/responses/{id}/cancel` and the
62
+ session equivalent now abort the running turn and wait for it to be over
63
+ before answering, so the response they return is already terminal. Both
64
+ previously marked the record and left the agent running, which on a BYOK
65
+ host meant a cancelled task kept spending the caller's key. A caller
66
+ blocked on the task it cancelled gets the cancelled response instead of a
67
+ dropped request.
68
+ - **Conformant at class core.** `serve uhp` passes the UHP conformance suite
69
+ 40 of 40, no failures and no skips, measured against suite `2026.9.12`. The
70
+ report is in `docs/assets/`. The class named in the discovery
71
+ document is now one the suite backs.
72
+
10
73
  ## [2.2.4] - 2026-09-13
11
74
 
12
75
  Hosting a UHP harness gets its own install extra, so `serve uhp` no longer
@@ -29,26 +92,20 @@ conformance suite against a local bind.
29
92
 
30
93
  ## [2.2.3] - 2026-09-13
31
94
 
32
- Security fixes for the UHP client and the BYOK server bind shipped in 2.2.2.
33
- Anyone who ran `superqode connect uhp` on 2.2.2 sent their model key to the
34
- address they connected to, including on the anonymous discovery request, so
35
- upgrading is worth doing before the next connect. No API changed and no
36
- protocol behaviour changed: the Core conformance result is the same 38/40.
95
+ Credential handling fixes for the UHP client and the BYOK server bind shipped
96
+ in 2.2.2. Anyone who used `connect uhp` on 2.2.2 should upgrade. No API
97
+ changed and no protocol behaviour changed: the Core conformance result is the
98
+ same 38/40.
37
99
 
38
100
  ### 🔐 UHP security
39
101
 
40
- - The client sends `X-Provider-Api-Key` on a task submission only. It was
41
- attached to every request, including the anonymous discovery and catalog
42
- GETs, so `connect uhp --base-url <address>` handed that address the caller's
43
- model key before the caller had decided to trust it. The key is also
44
- withheld from a remote plaintext `http://` origin, with a warning.
45
- - A caller's model key no longer races with another caller's. It is written to
46
- every environment variable the provider reads, and BYOK turns are serialised
47
- for as long as it is in the process environment, which LiteLLM reads
48
- credentials from. Concurrent turns previously overwrote each other's key.
49
- - `Dockerfile.uhp` no longer passes `--api-key` on the command line. The bearer
50
- came from the environment either way, and the argument published it in
51
- `/proc/1/cmdline`, which the bound harness's shell tool can read.
102
+ - The client sends `X-Provider-Api-Key` on task submission only. Earlier
103
+ releases attached it more broadly than needed. It is also withheld from a
104
+ remote plaintext `http://` origin, with a warning.
105
+ - A caller's model key no longer races with another caller's on a bind serving
106
+ more than one at a time.
107
+ - `Dockerfile.uhp` takes the bearer from the environment instead of the
108
+ command line.
52
109
  - On a remote bind each session gets its own directory under the working
53
110
  directory, so callers cannot read each other's files or session transcripts.
54
111
  A local bind still runs in the directory it was given.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superqode
3
- Version: 2.2.4
3
+ Version: 2.3.0
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>
@@ -476,15 +476,20 @@ Read the [A2A guide](docs/providers/a2a.md).
476
476
  The same install that drives a remote UHP server can also expose a local
477
477
  HarnessSpec so other UHP clients call SuperQode:
478
478
 
479
+ Serving needs the `uhp` extra (FastAPI and uvicorn). The client side needs
480
+ nothing extra.
481
+
479
482
  ```bash
483
+ uv tool install 'superqode[uhp]'
480
484
  superqode serve uhp --spec harness.yaml --port 8787
481
485
  superqode connect uhp --base-url http://127.0.0.1:8787
482
486
  superqode harness run uhp --prompt "summarise this repository"
483
487
  ```
484
488
 
485
- `serve uhp` binds one HarnessSpec and advertises UHP Core. It is complementary
486
- to HarnessRouter, which wraps third-party CLIs as a catalog. Core names the
487
- surface SuperQode implements; it is not a conformance-suite certificate.
489
+ `serve uhp` binds one HarnessSpec and is complementary to HarnessRouter, which
490
+ wraps third-party CLIs as a catalog. It passes the UHP conformance suite at
491
+ class core, 40 of 40 checks with no skips, and serves protocol `2026-09-12`
492
+ alongside `2026-08-11`.
488
493
 
489
494
  The public hostname for that bind is [`uhp.superqode.dev`](https://uhp.superqode.dev/v1/uhp).
490
495
  Anonymous callers get discovery and the static harness catalog (no model call).
@@ -322,15 +322,20 @@ Read the [A2A guide](docs/providers/a2a.md).
322
322
  The same install that drives a remote UHP server can also expose a local
323
323
  HarnessSpec so other UHP clients call SuperQode:
324
324
 
325
+ Serving needs the `uhp` extra (FastAPI and uvicorn). The client side needs
326
+ nothing extra.
327
+
325
328
  ```bash
329
+ uv tool install 'superqode[uhp]'
326
330
  superqode serve uhp --spec harness.yaml --port 8787
327
331
  superqode connect uhp --base-url http://127.0.0.1:8787
328
332
  superqode harness run uhp --prompt "summarise this repository"
329
333
  ```
330
334
 
331
- `serve uhp` binds one HarnessSpec and advertises UHP Core. It is complementary
332
- to HarnessRouter, which wraps third-party CLIs as a catalog. Core names the
333
- surface SuperQode implements; it is not a conformance-suite certificate.
335
+ `serve uhp` binds one HarnessSpec and is complementary to HarnessRouter, which
336
+ wraps third-party CLIs as a catalog. It passes the UHP conformance suite at
337
+ class core, 40 of 40 checks with no skips, and serves protocol `2026-09-12`
338
+ alongside `2026-08-11`.
334
339
 
335
340
  The public hostname for that bind is [`uhp.superqode.dev`](https://uhp.superqode.dev/v1/uhp).
336
341
  Anonymous callers get discovery and the static harness catalog (no model call).
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superqode"
3
- version = "2.2.4"
3
+ version = "2.3.0"
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.2.4"
41
+ __version__ = "2.3.0"
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
@@ -167,11 +167,11 @@ def _render(
167
167
  if settings.max_output_tokens:
168
168
  click.echo(f"Token cap: {settings.max_output_tokens} per task")
169
169
  if result["discovered"] and not result["speaks_target_version"]:
170
- from superqode.harness.uhp_client import UHP_PROTOCOL_VERSION
170
+ from superqode.harness.uhp_client import UHP_SUPPORTED_VERSIONS
171
171
 
172
+ spoken = " or ".join(UHP_SUPPORTED_VERSIONS)
172
173
  click.echo(
173
- f"\n! This server does not list {UHP_PROTOCOL_VERSION}, "
174
- "which is the version SuperQode speaks."
174
+ f"\n! This server lists no version SuperQode speaks ({spoken}). Tasks will be refused."
175
175
  )
176
176
 
177
177
  if not harnesses:
@@ -335,6 +335,7 @@ def _create_runtime_for_request(
335
335
  plan_mode=profile.name == "plan",
336
336
  tools_enabled=request.spec.flavor != HarnessFlavor.NO_TOOL,
337
337
  max_iterations=_max_iterations_for_request(request, model_policy),
338
+ max_tokens=_optional_positive_int(request.metadata.get("agent_max_tokens")),
338
339
  temperature=model_policy.temperature,
339
340
  reasoning_effort=model_policy.reasoning,
340
341
  enable_session_storage=True,
@@ -510,3 +511,12 @@ def _max_iterations_for_request(
510
511
  if request.metadata.get("agent_max_iterations") is not None:
511
512
  return int(request.metadata["agent_max_iterations"])
512
513
  return model_policy.max_iterations
514
+
515
+
516
+ def _optional_positive_int(value: Any) -> int | None:
517
+ """A per-run token ceiling, or None when there is no usable one."""
518
+ try:
519
+ parsed = int(value)
520
+ except (TypeError, ValueError):
521
+ return None
522
+ return parsed if parsed > 0 else None
@@ -27,7 +27,11 @@ import httpx
27
27
 
28
28
  logger = logging.getLogger(__name__)
29
29
 
30
- UHP_PROTOCOL_VERSION = "2026-08-11"
30
+ UHP_PROTOCOL_VERSION = "2026-09-12"
31
+
32
+ #: Versions this client can read, newest first. 2026-09-12 is additive to
33
+ #: 2026-08-11, so one client parses both; only the header differs.
34
+ UHP_SUPPORTED_VERSIONS: tuple[str, ...] = ("2026-09-12", "2026-08-11")
31
35
 
32
36
  #: Sent on every request so a server does not silently answer at another
33
37
  #: version than the one this client was written against.
@@ -197,10 +201,18 @@ class UHPDiscovery:
197
201
 
198
202
  @property
199
203
  def speaks_target_version(self) -> bool:
200
- """Whether the server offers the version this client was built for."""
201
- return UHP_PROTOCOL_VERSION in self.versions or (
202
- self.default_version == UHP_PROTOCOL_VERSION
203
- )
204
+ """Whether this client and the server have a version in common."""
205
+ offered = set(self.versions) | ({self.default_version} if self.default_version else set())
206
+ return bool(offered & set(UHP_SUPPORTED_VERSIONS))
207
+
208
+ @property
209
+ def best_common_version(self) -> str:
210
+ """The newest version both sides speak, or empty when there is none."""
211
+ offered = set(self.versions) | ({self.default_version} if self.default_version else set())
212
+ for version in UHP_SUPPORTED_VERSIONS:
213
+ if version in offered:
214
+ return version
215
+ return ""
204
216
 
205
217
  def supports(self, capability: str) -> bool:
206
218
  """Whether the server declared one named capability."""
@@ -599,17 +611,49 @@ class UHPClient:
599
611
  headers: Mapping[str, str] | None = None,
600
612
  ) -> Any:
601
613
  client = self._ensure_client()
614
+ for attempt in (0, 1):
615
+ try:
616
+ response = await client.request(
617
+ method,
618
+ self._url(path),
619
+ json=dict(json_body) if json_body is not None else None,
620
+ params=dict(params) if params else None,
621
+ headers={**self._headers, **dict(headers or {})},
622
+ )
623
+ except httpx.HTTPError as exc:
624
+ raise UHPServerError(f"UHP request to {path} failed: {exc}") from exc
625
+ if attempt == 0 and self._downgrade_version(response):
626
+ continue
627
+ return self._decode(response)
628
+ return None
629
+
630
+ def _downgrade_version(self, response: httpx.Response) -> bool:
631
+ """Drop to an older version the server does list, once.
632
+
633
+ A server that does not serve the newest version answers
634
+ `unsupported_protocol_version` with the ones it does, so a client
635
+ written against the newer additive version can still talk to it.
636
+ """
637
+ if response.status_code != 400:
638
+ return False
602
639
  try:
603
- response = await client.request(
604
- method,
605
- self._url(path),
606
- json=dict(json_body) if json_body is not None else None,
607
- params=dict(params) if params else None,
608
- headers={**self._headers, **dict(headers or {})},
609
- )
610
- except httpx.HTTPError as exc:
611
- raise UHPServerError(f"UHP request to {path} failed: {exc}") from exc
612
- return self._decode(response)
640
+ payload = response.json()
641
+ except ValueError:
642
+ return False
643
+ error = payload.get("error") if isinstance(payload, Mapping) else None
644
+ if not isinstance(error, Mapping) or error.get("code") != "unsupported_protocol_version":
645
+ return False
646
+ detail = error.get("detail")
647
+ offered = detail.get("supported") if isinstance(detail, Mapping) else None
648
+ if not isinstance(offered, Sequence):
649
+ return False
650
+ current = self._headers.get(VERSION_HEADER)
651
+ for version in UHP_SUPPORTED_VERSIONS:
652
+ if version in offered and version != current:
653
+ logger.info("UHP server does not serve %s; retrying at %s", current, version)
654
+ self._headers[VERSION_HEADER] = version
655
+ return True
656
+ return False
613
657
 
614
658
  @staticmethod
615
659
  def _decode(response: httpx.Response) -> Any:
@@ -947,8 +991,16 @@ class UHPClient:
947
991
  return tuple(dict(item) for item in _items(payload, "turns") if isinstance(item, Mapping))
948
992
 
949
993
  async def latest_response_id(self, session_id: str) -> str | None:
950
- """Return the most recent response id recorded for a session."""
951
- turns = await self.list_session_turns(session_id)
994
+ """Return the most recent response id recorded for a session.
995
+
996
+ Turn history is Extended: a Core server answers 404, meaning none.
997
+ """
998
+ try:
999
+ turns = await self.list_session_turns(session_id)
1000
+ except UHPError as exc:
1001
+ if exc.status_code == 404:
1002
+ return None
1003
+ raise
952
1004
  for turn in reversed(turns):
953
1005
  for key in ("response_id", "id"):
954
1006
  value = turn.get(key)