superqode 2.4.28__tar.gz → 2.4.30__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1137) hide show
  1. {superqode-2.4.28 → superqode-2.4.30}/CHANGELOG.md +70 -0
  2. {superqode-2.4.28 → superqode-2.4.30}/PKG-INFO +1 -1
  3. {superqode-2.4.28 → superqode-2.4.30}/pyproject.toml +1 -1
  4. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/__init__.py +1 -1
  5. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/client.py +10 -1
  6. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/loop.py +17 -4
  7. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/client.py +4 -1
  8. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/discovery.py +17 -1
  9. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/schema.py +4 -0
  10. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/constants.py +3 -0
  11. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/css.py +5 -0
  12. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/harness_picker.py +6 -0
  13. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/inputs.py +13 -0
  14. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/actions_misc.py +59 -0
  15. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/agent_run.py +62 -3
  16. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/commands_impl.py +7 -4
  17. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/connect.py +178 -32
  18. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/events.py +30 -62
  19. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_mcp_attach.py +132 -6
  20. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_startup.py +52 -10
  21. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helpers.py +2 -1
  22. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/sidebar.py +13 -1
  23. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/slash_commands.py +54 -8
  24. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app_main.py +36 -17
  25. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/acp.py +9 -8
  26. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/hub.py +21 -3
  27. superqode-2.4.30/src/superqode/image_input.py +129 -0
  28. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/main.py +8 -0
  29. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/acp_registry.py +62 -4
  30. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/connection_profiles.py +140 -85
  31. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/credentials.py +11 -4
  32. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/env_introspect.py +19 -2
  33. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/gateway/base.py +1 -1
  34. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/gateway/litellm_gateway.py +10 -0
  35. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/harness_catalog.py +45 -1
  36. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/registry.py +20 -0
  37. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/subscription_env.py +12 -2
  38. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pure_mode.py +16 -4
  39. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/codex_sdk.py +2 -2
  40. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/copilot_sdk.py +2 -2
  41. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/registry.py +2 -2
  42. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/sidebar.py +232 -62
  43. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/command_palette.py +72 -24
  44. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/file_reference.py +11 -0
  45. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/history_search.py +64 -38
  46. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/slash_complete.py +3 -0
  47. {superqode-2.4.28 → superqode-2.4.30}/src/superqode.egg-info/PKG-INFO +1 -1
  48. {superqode-2.4.28 → superqode-2.4.30}/src/superqode.egg-info/SOURCES.txt +4 -0
  49. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_registry.py +1 -1
  50. {superqode-2.4.28 → superqode-2.4.30}/tests/test_cli_contract.py +3 -1
  51. {superqode-2.4.28 → superqode-2.4.30}/tests/test_cli_reference_coverage.py +22 -0
  52. {superqode-2.4.28 → superqode-2.4.30}/tests/test_connect_harness_screen.py +18 -8
  53. superqode-2.4.30/tests/test_connect_subscription_routes.py +279 -0
  54. {superqode-2.4.28 → superqode-2.4.30}/tests/test_connection_profiles.py +41 -13
  55. {superqode-2.4.28 → superqode-2.4.30}/tests/test_env_introspect.py +3 -1
  56. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_hub_catalog.py +22 -0
  57. {superqode-2.4.28 → superqode-2.4.30}/tests/test_pure_mode_sessions.py +5 -1
  58. {superqode-2.4.28 → superqode-2.4.30}/tests/test_subscription_billing_policy.py +56 -0
  59. superqode-2.4.30/tests/test_tui_image_voice.py +568 -0
  60. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_mounted.py +32 -1
  61. superqode-2.4.30/tests/test_tui_navigation.py +247 -0
  62. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_smoke.py +2 -2
  63. {superqode-2.4.28 → superqode-2.4.30}/tests/test_zai_provider.py +1 -1
  64. {superqode-2.4.28 → superqode-2.4.30}/LICENSE +0 -0
  65. {superqode-2.4.28 → superqode-2.4.30}/MANIFEST.in +0 -0
  66. {superqode-2.4.28 → superqode-2.4.30}/NOTICE +0 -0
  67. {superqode-2.4.28 → superqode-2.4.30}/README.md +0 -0
  68. {superqode-2.4.28 → superqode-2.4.30}/examples/README.md +0 -0
  69. {superqode-2.4.28 → superqode-2.4.30}/examples/a2a/README.md +0 -0
  70. {superqode-2.4.28 → superqode-2.4.30}/examples/a2a/smoke_client.py +0 -0
  71. {superqode-2.4.28 → superqode-2.4.30}/examples/bench/dspy-comprehension.manifest.yaml +0 -0
  72. {superqode-2.4.28 → superqode-2.4.30}/examples/bench/dspy-comprehension.yaml +0 -0
  73. {superqode-2.4.28 → superqode-2.4.30}/examples/bench/jev-tool-routing/README.md +0 -0
  74. {superqode-2.4.28 → superqode-2.4.30}/examples/bench/jev-tool-routing/calc.py +0 -0
  75. {superqode-2.4.28 → superqode-2.4.30}/examples/bench/jev-tool-routing/test_calc.py +0 -0
  76. {superqode-2.4.28 → superqode-2.4.30}/examples/bench/spec-core.yaml +0 -0
  77. {superqode-2.4.28 → superqode-2.4.30}/examples/bench/spec-deepagents.yaml +0 -0
  78. {superqode-2.4.28 → superqode-2.4.30}/examples/bench/spec-prime-agent.yaml +0 -0
  79. {superqode-2.4.28 → superqode-2.4.30}/examples/byok-acp-team.yaml +0 -0
  80. {superqode-2.4.28 → superqode-2.4.30}/examples/codex_sdk_quickstart.py +0 -0
  81. {superqode-2.4.28 → superqode-2.4.30}/examples/evals/omni-release.yaml +0 -0
  82. {superqode-2.4.28 → superqode-2.4.30}/examples/evals/omni-tiny.yaml +0 -0
  83. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/README.md +0 -0
  84. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/manifest-guard/context.md +0 -0
  85. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/manifest-guard/hooks.py +0 -0
  86. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/manifest-guard/tools.py +0 -0
  87. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/packages/README.md +0 -0
  88. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/packages/broken-extension/src/superqode_example_broken/__init__.py +0 -0
  89. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/packages/policy-extension/src/superqode_example_policy/__init__.py +0 -0
  90. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/packages/skill-extension/src/superqode_example_skill/SKILL.md +0 -0
  91. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/packages/skill-extension/src/superqode_example_skill/__init__.py +0 -0
  92. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/packages/tool-extension/src/superqode_example_tool/__init__.py +0 -0
  93. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/packages/tool-extension-v2/src/superqode_example_tool/__init__.py +0 -0
  94. {superqode-2.4.28 → superqode-2.4.30}/examples/extensions/python-package/src/superqode_example_extension/__init__.py +0 -0
  95. {superqode-2.4.28 → superqode-2.4.30}/examples/harness-packages/README.md +0 -0
  96. {superqode-2.4.28 → superqode-2.4.30}/examples/harness-packages/hello-harness/src/superqode_hello_harness/__init__.py +0 -0
  97. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/coding.yaml +0 -0
  98. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/deepagents.yaml +0 -0
  99. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/deepseek-harness.yaml +0 -0
  100. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/ds4.yaml +0 -0
  101. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/gemma4.yaml +0 -0
  102. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/google-adk.yaml +0 -0
  103. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/local-recursive-dynamic.yaml +0 -0
  104. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/mcp-docs.yaml +0 -0
  105. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/no-tool.yaml +0 -0
  106. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/omni-tiny-local.yaml +0 -0
  107. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/omnigent-multi-agent.yaml +0 -0
  108. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/openai-agents.yaml +0 -0
  109. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/prime-agent.yaml +0 -0
  110. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/pydanticai.yaml +0 -0
  111. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/rlm-code-lid.yaml +0 -0
  112. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/systemone/factory-route.yaml +0 -0
  113. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/systemone/ticket-triage.yaml +0 -0
  114. {superqode-2.4.28 → superqode-2.4.30}/examples/harnesses/systemone/tool-gate.yaml +0 -0
  115. {superqode-2.4.28 → superqode-2.4.30}/examples/local-models-team.yaml +0 -0
  116. {superqode-2.4.28 → superqode-2.4.30}/examples/mcp/local_docs_server.py +0 -0
  117. {superqode-2.4.28 → superqode-2.4.30}/examples/omnigent-multi-agent.agent.yaml +0 -0
  118. {superqode-2.4.28 → superqode-2.4.30}/examples/qm-deployment-layer/README.md +0 -0
  119. {superqode-2.4.28 → superqode-2.4.30}/examples/qm-deployment-layer/sandbox/skills/superqode-harness/SKILL.md +0 -0
  120. {superqode-2.4.28 → superqode-2.4.30}/examples/rlm-demo/INCIDENT.md +0 -0
  121. {superqode-2.4.28 → superqode-2.4.30}/examples/rlm-demo/README.md +0 -0
  122. {superqode-2.4.28 → superqode-2.4.30}/examples/rlm-demo/RUNBOOK.md +0 -0
  123. {superqode-2.4.28 → superqode-2.4.30}/examples/rlm-demo/deploy_audit/__init__.py +0 -0
  124. {superqode-2.4.28 → superqode-2.4.30}/examples/rlm-demo/deploy_audit/parser.py +0 -0
  125. {superqode-2.4.28 → superqode-2.4.30}/examples/rlm-demo/deploy_audit/report.py +0 -0
  126. {superqode-2.4.28 → superqode-2.4.30}/examples/rlm-demo/rlm-docker.yaml +0 -0
  127. {superqode-2.4.28 → superqode-2.4.30}/examples/rlm-demo/rlm-monty.yaml +0 -0
  128. {superqode-2.4.28 → superqode-2.4.30}/examples/rlm-demo/tests/test_report.py +0 -0
  129. {superqode-2.4.28 → superqode-2.4.30}/examples/simple-team.yaml +0 -0
  130. {superqode-2.4.28 → superqode-2.4.30}/examples/systemone/rubric-eval.yaml +0 -0
  131. {superqode-2.4.28 → superqode-2.4.30}/examples/systemone/ticket-triage-pack.yaml +0 -0
  132. {superqode-2.4.28 → superqode-2.4.30}/examples/tune/README.md +0 -0
  133. {superqode-2.4.28 → superqode-2.4.30}/scripts/check_release_metadata.py +0 -0
  134. {superqode-2.4.28 → superqode-2.4.30}/setup.cfg +0 -0
  135. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/__init__.py +0 -0
  136. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/client.py +0 -0
  137. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/conformance.py +0 -0
  138. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/connection.py +0 -0
  139. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/context.py +0 -0
  140. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/inspect.py +0 -0
  141. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/keys.py +0 -0
  142. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/limits.py +0 -0
  143. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/oauth.py +0 -0
  144. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/presets.py +0 -0
  145. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/registry.py +0 -0
  146. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/reply.py +0 -0
  147. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/security.py +0 -0
  148. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/server.py +0 -0
  149. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/shortlist.py +0 -0
  150. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/skills.py +0 -0
  151. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/tools.py +0 -0
  152. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/trust.py +0 -0
  153. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/types.py +0 -0
  154. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/understand.py +0 -0
  155. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/a2a/workflows.py +0 -0
  156. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/__init__.py +0 -0
  157. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/doctor.py +0 -0
  158. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/permission_screen.py +0 -0
  159. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/permission_store.py +0 -0
  160. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/render.py +0 -0
  161. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/server.py +0 -0
  162. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/session_store.py +0 -0
  163. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/slash.py +0 -0
  164. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/tool_call_context.py +0 -0
  165. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp/types.py +0 -0
  166. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/acp_discovery.py +0 -0
  167. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/__init__.py +0 -0
  168. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/auto_memory.py +0 -0
  169. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/command_safety.py +0 -0
  170. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/compaction.py +0 -0
  171. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/context_manager.py +0 -0
  172. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/edit_strategies.py +0 -0
  173. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/exec_policy.py +0 -0
  174. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/hooks.py +0 -0
  175. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/instructions.py +0 -0
  176. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/loop_guard.py +0 -0
  177. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/loop_policy.py +0 -0
  178. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/network_policy.py +0 -0
  179. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/output_handler.py +0 -0
  180. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/parallel_compare.py +0 -0
  181. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/peer_agents.py +0 -0
  182. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/plan_mode.py +0 -0
  183. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/reminders.py +0 -0
  184. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/rubric.py +0 -0
  185. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/session_manager.py +0 -0
  186. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/structured_output.py +0 -0
  187. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/summarization.py +0 -0
  188. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/system_prompts.py +0 -0
  189. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/terminal_output_limits.py +0 -0
  190. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/text_tool_calls.py +0 -0
  191. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/tool_args.py +0 -0
  192. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/tool_tracking.py +0 -0
  193. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent/utility_model.py +0 -0
  194. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent_output.py +0 -0
  195. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agent_stream.py +0 -0
  196. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/__init__.py +0 -0
  197. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/acp_registry.py +0 -0
  198. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/agent.minimax.io.toml +0 -0
  199. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/agentpool.phil65.github.io.toml +0 -0
  200. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/agoragentic.com.toml +0 -0
  201. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/ampcode.com.toml +0 -0
  202. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/antigravity.google.toml +0 -0
  203. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/augmentcode.com.toml +0 -0
  204. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/autodev.github.io.toml +0 -0
  205. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/blackbox.ai.toml +0 -0
  206. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/bub.dev.toml +0 -0
  207. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/cagent.dev.toml +0 -0
  208. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/claude.com.toml +0 -0
  209. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/cline.bot.toml +0 -0
  210. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
  211. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/codebuddy.tencent.com.toml +0 -0
  212. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/codex.openai.com.toml +0 -0
  213. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/compassap.ai.toml +0 -0
  214. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/copilot.github.com.toml +0 -0
  215. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/cortex.snowflake.com.toml +0 -0
  216. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/corust.ai.toml +0 -0
  217. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/crow-ai.dev.toml +0 -0
  218. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/cursor.com.toml +0 -0
  219. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/deepagents-code.langchain.com.toml +0 -0
  220. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/deepagents.langchain.com.toml +0 -0
  221. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/devin.ai.toml +0 -0
  222. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/dimcode.dev.toml +0 -0
  223. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/dirac.run.toml +0 -0
  224. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/factory.ai.toml +0 -0
  225. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/fastagent.ai.toml +0 -0
  226. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/fount.dev.toml +0 -0
  227. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/fx.sh.toml +0 -0
  228. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/geminicli.com.toml +0 -0
  229. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/glm.z.ai.toml +0 -0
  230. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
  231. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/harnlang.com.toml +0 -0
  232. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/hermes-agent.nousresearch.com.toml +0 -0
  233. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
  234. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/kilo.ai.toml +0 -0
  235. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/kimchi.dev.toml +0 -0
  236. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
  237. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/kiro.dev.toml +0 -0
  238. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
  239. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/minioncode.dev.toml +0 -0
  240. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/mistral-vibe.mistral.ai.toml +0 -0
  241. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/omp.sh.toml +0 -0
  242. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/openclaw.ai.toml +0 -0
  243. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/opencode.ai.toml +0 -0
  244. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/openhands.dev.toml +0 -0
  245. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/pi.dev.toml +0 -0
  246. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/poolside.ai.toml +0 -0
  247. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/primeintellect.ai.toml +0 -0
  248. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/qoder.com.toml +0 -0
  249. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/qwenlm.github.io.toml +0 -0
  250. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/sigit.dev.toml +0 -0
  251. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/stakpak.dev.toml +0 -0
  252. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/stdiobus.dev.toml +0 -0
  253. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/vtcode.dev.toml +0 -0
  254. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/data/x.ai.toml +0 -0
  255. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/free_models.py +0 -0
  256. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/install_commands.py +0 -0
  257. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/messaging.py +0 -0
  258. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/official_acp.py +0 -0
  259. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/persona.py +0 -0
  260. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/registry.py +0 -0
  261. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/agents/unified.py +0 -0
  262. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/__init__.py +0 -0
  263. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/async_utils.py +0 -0
  264. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/capabilities.py +0 -0
  265. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/__init__.py +0 -0
  266. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/build_harness.py +0 -0
  267. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/clickable_commands.py +0 -0
  268. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/codex.py +0 -0
  269. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/completion.py +0 -0
  270. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/dialogs.py +0 -0
  271. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/explore.py +0 -0
  272. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/factory.py +0 -0
  273. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/feedback.py +0 -0
  274. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/formatting.py +0 -0
  275. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/harness_hub.py +0 -0
  276. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_clipboard.py +0 -0
  277. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_completion_helpers.py +0 -0
  278. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_diff_review.py +0 -0
  279. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_exit_lifecycle.py +0 -0
  280. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_file_view.py +0 -0
  281. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_interaction_mode.py +0 -0
  282. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_message_queue.py +0 -0
  283. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_permissions.py +0 -0
  284. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_recipes_skills.py +0 -0
  285. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_share.py +0 -0
  286. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_todos_plan.py +0 -0
  287. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_vim.py +0 -0
  288. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/helper_wizard.py +0 -0
  289. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/huggingface.py +0 -0
  290. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/local_models.py +0 -0
  291. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/mcp.py +0 -0
  292. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/model_catalog.py +0 -0
  293. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/pickers.py +0 -0
  294. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/pipy_commands.py +0 -0
  295. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/rlm_commands.py +0 -0
  296. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/switchboard.py +0 -0
  297. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/mixins/tour.py +0 -0
  298. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/models.py +0 -0
  299. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/navigation.py +0 -0
  300. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/outcomes.py +0 -0
  301. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/progress.py +0 -0
  302. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/project_ui_state.py +0 -0
  303. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/prompt_stack.py +0 -0
  304. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/recipes.py +0 -0
  305. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/session_state.py +0 -0
  306. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/suggester.py +0 -0
  307. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/theme_bridge.py +0 -0
  308. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/welcome.py +0 -0
  309. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app/widgets.py +0 -0
  310. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/app_enhanced.py +0 -0
  311. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/approval.py +0 -0
  312. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/atomic.py +0 -0
  313. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/auth/__init__.py +0 -0
  314. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/benchmarks.py +0 -0
  315. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/channels/__init__.py +0 -0
  316. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/channels/config.py +0 -0
  317. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/channels/discord.py +0 -0
  318. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/channels/service.py +0 -0
  319. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/channels/slack.py +0 -0
  320. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/channels/telegram.py +0 -0
  321. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/claude.py +0 -0
  322. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/code_theme.py +0 -0
  323. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/codex.py +0 -0
  324. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/__init__.py +0 -0
  325. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/a2a.py +0 -0
  326. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/a2a_connect.py +0 -0
  327. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/a2a_keys.py +0 -0
  328. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/agents.py +0 -0
  329. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/auth.py +0 -0
  330. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/benchmark.py +0 -0
  331. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/config.py +0 -0
  332. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/connect.py +0 -0
  333. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/daemon.py +0 -0
  334. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/factory.py +0 -0
  335. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/gauge.py +0 -0
  336. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/__init__.py +0 -0
  337. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/_group.py +0 -0
  338. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/_helpers.py +0 -0
  339. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/bench.py +0 -0
  340. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/candidates.py +0 -0
  341. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/evaluation.py +0 -0
  342. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/evidence.py +0 -0
  343. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/inbox.py +0 -0
  344. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/lifecycle.py +0 -0
  345. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/logbook.py +0 -0
  346. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/observability.py +0 -0
  347. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/optimization.py +0 -0
  348. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/promotion.py +0 -0
  349. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/protocol.py +0 -0
  350. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/registry.py +0 -0
  351. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/replay.py +0 -0
  352. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/run_history.py +0 -0
  353. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/systemone.py +0 -0
  354. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/tune.py +0 -0
  355. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/harness/worker.py +0 -0
  356. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/hub.py +0 -0
  357. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/local.py +0 -0
  358. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/memory.py +0 -0
  359. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/models.py +0 -0
  360. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/optimize.py +0 -0
  361. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/plugins.py +0 -0
  362. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/policy.py +0 -0
  363. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/profiles.py +0 -0
  364. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/providers.py +0 -0
  365. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/runtime.py +0 -0
  366. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/sandbox.py +0 -0
  367. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/serve.py +0 -0
  368. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/sessions.py +0 -0
  369. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/share.py +0 -0
  370. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/skillopt.py +0 -0
  371. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/skills.py +0 -0
  372. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/tools.py +0 -0
  373. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/trust.py +0 -0
  374. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/uhp.py +0 -0
  375. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/update.py +0 -0
  376. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/commands/work.py +0 -0
  377. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/config/__init__.py +0 -0
  378. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/config/loader.py +0 -0
  379. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/config/schema.py +0 -0
  380. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/core/__init__.py +0 -0
  381. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/danger.py +0 -0
  382. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/data/eval_fixtures/ci-dynamic-root-cause.log +0 -0
  383. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/data/eval_fixtures/ci-root-cause.log +0 -0
  384. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/data/eval_packs/decision-routing.yaml +0 -0
  385. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/data/eval_packs/decision-tool-gate.yaml +0 -0
  386. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/data/eval_packs/local_dynamic_workflow_smoke.yaml +0 -0
  387. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/data/eval_packs/local_recursive_smoke.yaml +0 -0
  388. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/data/superqode-template.yaml +0 -0
  389. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/design_system.py +0 -0
  390. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/dialogs/__init__.py +0 -0
  391. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/dialogs/base.py +0 -0
  392. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/dialogs/model.py +0 -0
  393. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/dialogs/provider.py +0 -0
  394. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/dialogs/runtime.py +0 -0
  395. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/diff_view.py +0 -0
  396. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/enterprise.py +0 -0
  397. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/evaluation/__init__.py +0 -0
  398. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/evaluation/adapters.py +0 -0
  399. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/evaluation/behaviors.py +0 -0
  400. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/evaluation/engine.py +0 -0
  401. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/evaluation/scenarios.py +0 -0
  402. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/execution/__init__.py +0 -0
  403. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/execution/linter.py +0 -0
  404. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/execution/modes.py +0 -0
  405. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/execution/resolver.py +0 -0
  406. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/execution/runner.py +0 -0
  407. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/extensions.py +0 -0
  408. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/file_explorer.py +0 -0
  409. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/file_viewer.py +0 -0
  410. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/flash.py +0 -0
  411. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/gauge/__init__.py +0 -0
  412. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/gauge/levels.py +0 -0
  413. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/gauge/record.py +0 -0
  414. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/gauge/sources.py +0 -0
  415. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/governance.py +0 -0
  416. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/__init__.py +0 -0
  417. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/accelerator.py +0 -0
  418. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/agent_importer.py +0 -0
  419. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/approval_memory.py +0 -0
  420. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/__init__.py +0 -0
  421. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/base.py +0 -0
  422. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/deepagents.py +0 -0
  423. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/dsh.py +0 -0
  424. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/managed.py +0 -0
  425. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/pipy.py +0 -0
  426. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/prime_agent.py +0 -0
  427. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/pydanticai.py +0 -0
  428. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/registry.py +0 -0
  429. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/rlm.py +0 -0
  430. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/rlm_code.py +0 -0
  431. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/runtime.py +0 -0
  432. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/systemone.py +0 -0
  433. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/tau.py +0 -0
  434. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/backends/uhp.py +0 -0
  435. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/bench.py +0 -0
  436. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/catalog.py +0 -0
  437. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/compiler.py +0 -0
  438. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/conformance.py +0 -0
  439. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/context_handles.py +0 -0
  440. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/diagnostics.py +0 -0
  441. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/discovery.py +0 -0
  442. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/drift.py +0 -0
  443. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/eval.py +0 -0
  444. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/evaluators.py +0 -0
  445. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/events.py +0 -0
  446. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/explain.py +0 -0
  447. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/hooks.py +0 -0
  448. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/kernel.py +0 -0
  449. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/loader.py +0 -0
  450. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/mcp_bridge.py +0 -0
  451. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/model_policy.py +0 -0
  452. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/model_routes.py +0 -0
  453. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/observability.py +0 -0
  454. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/omni.py +0 -0
  455. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/omnigent_importer.py +0 -0
  456. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/optimize.py +0 -0
  457. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/output.py +0 -0
  458. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/permissions.py +0 -0
  459. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/pipy_adapter.py +0 -0
  460. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/pipy_extensions.py +0 -0
  461. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/promotion.py +0 -0
  462. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/protocol.py +0 -0
  463. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/protocol_adapters.py +0 -0
  464. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/protocol_controller.py +0 -0
  465. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/registry.py +0 -0
  466. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/rlm_adapter.py +0 -0
  467. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/rlm_code_adapter.py +0 -0
  468. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/sandbox.py +0 -0
  469. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/self_improve.py +0 -0
  470. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/spec.py +0 -0
  471. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/store.py +0 -0
  472. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/tau_adapter.py +0 -0
  473. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/tau_management.py +0 -0
  474. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/templates.py +0 -0
  475. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/testing.py +0 -0
  476. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/uhp_adapter.py +0 -0
  477. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/uhp_client.py +0 -0
  478. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/uhp_server.py +0 -0
  479. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/wizard.py +0 -0
  480. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/workflow.py +0 -0
  481. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/harness/workflow_presets.py +0 -0
  482. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/headless.py +0 -0
  483. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/history.py +0 -0
  484. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/jev_tools/__init__.py +0 -0
  485. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/jev_tools/codex.py +0 -0
  486. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/jev_tools/sdk.py +0 -0
  487. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/jev_tools/service.py +0 -0
  488. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/__init__.py +0 -0
  489. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/airplane.py +0 -0
  490. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/bench.py +0 -0
  491. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/build.py +0 -0
  492. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/code_index.py +0 -0
  493. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/devstral.yaml +0 -0
  494. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/ds4.yaml +0 -0
  495. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/gemma4.yaml +0 -0
  496. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/glm.yaml +0 -0
  497. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/gpt-oss.yaml +0 -0
  498. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/kimi.yaml +0 -0
  499. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/laguna.yaml +0 -0
  500. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/minimax.yaml +0 -0
  501. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/qwen-coder.yaml +0 -0
  502. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/model-packs/qwen3.yaml +0 -0
  503. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/data/stack_matrix.yaml +0 -0
  504. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/doctor.py +0 -0
  505. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/engines.py +0 -0
  506. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/guardrails.py +0 -0
  507. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/hardware.py +0 -0
  508. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/install.py +0 -0
  509. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/inventory.py +0 -0
  510. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/labs.py +0 -0
  511. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/laguna.py +0 -0
  512. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/matrix.py +0 -0
  513. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/migrate.py +0 -0
  514. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/optimize.py +0 -0
  515. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/packs.py +0 -0
  516. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/repo.py +0 -0
  517. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/servers.py +0 -0
  518. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/setup.py +0 -0
  519. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/local/smoke.py +0 -0
  520. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/logging/__init__.py +0 -0
  521. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/logging/adapters.py +0 -0
  522. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/logging/formatter.py +0 -0
  523. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/logging/integration.py +0 -0
  524. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/logging/sinks.py +0 -0
  525. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/logging/unified_log.py +0 -0
  526. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/lsp/__init__.py +0 -0
  527. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/lsp/client.py +0 -0
  528. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/__init__.py +0 -0
  529. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/auth_storage.py +0 -0
  530. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/client.py +0 -0
  531. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/config.py +0 -0
  532. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/elicitation.py +0 -0
  533. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/harness_server.py +0 -0
  534. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/hf_auth.py +0 -0
  535. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/integration.py +0 -0
  536. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/jev_router_server.py +0 -0
  537. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/oauth.py +0 -0
  538. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/oauth_callback.py +0 -0
  539. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/sampling.py +0 -0
  540. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/search.py +0 -0
  541. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/mcp/types.py +0 -0
  542. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/memory/__init__.py +0 -0
  543. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/memory/config.py +0 -0
  544. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/memory/providers.py +0 -0
  545. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/memory/types.py +0 -0
  546. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/notifications.py +0 -0
  547. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/optimize/__init__.py +0 -0
  548. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/optimize/launchers.py +0 -0
  549. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/optimize/profiles.py +0 -0
  550. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/permissions/__init__.py +0 -0
  551. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/permissions/rules.py +0 -0
  552. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/__init__.py +0 -0
  553. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/ai/__init__.py +0 -0
  554. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/ai/fake.py +0 -0
  555. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/ai/gateway.py +0 -0
  556. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/ai/models.py +0 -0
  557. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/ai/transform.py +0 -0
  558. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/coding_session.py +0 -0
  559. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/compaction.py +0 -0
  560. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/config.py +0 -0
  561. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/event_stream.py +0 -0
  562. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/events.py +0 -0
  563. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/harness.py +0 -0
  564. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/harness_events.py +0 -0
  565. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/loop.py +0 -0
  566. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/messages.py +0 -0
  567. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/permissions.py +0 -0
  568. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/prompt_templates.py +0 -0
  569. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/provider_events.py +0 -0
  570. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/resources.py +0 -0
  571. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/session/__init__.py +0 -0
  572. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/session/codec.py +0 -0
  573. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/session/entries.py +0 -0
  574. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/session/jsonl.py +0 -0
  575. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/session/memory.py +0 -0
  576. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/session/repository.py +0 -0
  577. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/session/session.py +0 -0
  578. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/session/storage.py +0 -0
  579. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/signals.py +0 -0
  580. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/skills.py +0 -0
  581. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/stream.py +0 -0
  582. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/system_prompt.py +0 -0
  583. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/tools/__init__.py +0 -0
  584. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/tools/base.py +0 -0
  585. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/tools/edit_diff.py +0 -0
  586. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/tools/files.py +0 -0
  587. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/tools/paths.py +0 -0
  588. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/tools/registry.py +0 -0
  589. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/tools/search.py +0 -0
  590. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/tools/shell.py +0 -0
  591. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/tools/truncate.py +0 -0
  592. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/types.py +0 -0
  593. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/pipy/validation.py +0 -0
  594. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/plan.py +0 -0
  595. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/platform_locks.py +0 -0
  596. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/plugins.py +0 -0
  597. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/project_trust.py +0 -0
  598. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/__init__.py +0 -0
  599. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/_builtin_profiles.py +0 -0
  600. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/acp_free_models.py +0 -0
  601. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/acp_models.py +0 -0
  602. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/apple_fm.py +0 -0
  603. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/catalog.py +0 -0
  604. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/copilot_auth.py +0 -0
  605. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/dynamic.py +0 -0
  606. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/free_inference.py +0 -0
  607. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/gateway/__init__.py +0 -0
  608. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
  609. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/gateway/synthetic.py +0 -0
  610. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/grok_cli_auth.py +0 -0
  611. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/health.py +0 -0
  612. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/huggingface/__init__.py +0 -0
  613. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/huggingface/convert.py +0 -0
  614. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/huggingface/downloader.py +0 -0
  615. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/huggingface/endpoints.py +0 -0
  616. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/huggingface/fetch.py +0 -0
  617. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/huggingface/hub.py +0 -0
  618. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/huggingface/inference.py +0 -0
  619. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
  620. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/live_models.py +0 -0
  621. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/__init__.py +0 -0
  622. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/_mlx_worker.py +0 -0
  623. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/base.py +0 -0
  624. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/capabilities.py +0 -0
  625. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/context_probe.py +0 -0
  626. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/discovery.py +0 -0
  627. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/ds4.py +0 -0
  628. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/lmstudio.py +0 -0
  629. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/mlx.py +0 -0
  630. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/mlx_engine.py +0 -0
  631. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/mlx_tools.py +0 -0
  632. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/ollama.py +0 -0
  633. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/sglang.py +0 -0
  634. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/smoke.py +0 -0
  635. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/tgi.py +0 -0
  636. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/tool_support.py +0 -0
  637. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local/vllm.py +0 -0
  638. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/local_order.py +0 -0
  639. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/manager.py +0 -0
  640. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/model_specs.py +0 -0
  641. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/models.py +0 -0
  642. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/models_dev.py +0 -0
  643. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/opencode_models.py +0 -0
  644. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/__init__.py +0 -0
  645. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
  646. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/converters/messages.py +0 -0
  647. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/converters/tools.py +0 -0
  648. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
  649. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/schema/models.py +0 -0
  650. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
  651. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
  652. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
  653. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
  654. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
  655. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
  656. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
  657. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/prime_agent.py +0 -0
  658. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/profiles.py +0 -0
  659. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/recommendations.py +0 -0
  660. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/subscription_login.py +0 -0
  661. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/uhp.py +0 -0
  662. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/providers/usage.py +0 -0
  663. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/py.typed +0 -0
  664. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rendering/__init__.py +0 -0
  665. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rendering/html_export.py +0 -0
  666. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rendering/markdown.py +0 -0
  667. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rendering/systemone.py +0 -0
  668. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rendering/transcript_export.py +0 -0
  669. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/__init__.py +0 -0
  670. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/coding_session.py +0 -0
  671. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/config.py +0 -0
  672. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/context.py +0 -0
  673. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/identity.py +0 -0
  674. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/kernel.py +0 -0
  675. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/kernel_backend.py +0 -0
  676. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/kernel_docker.py +0 -0
  677. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/kernel_monty.py +0 -0
  678. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/kernel_server.py +0 -0
  679. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/policy.py +0 -0
  680. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/root_runtime.py +0 -0
  681. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/root_worker.py +0 -0
  682. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/sandbox.py +0 -0
  683. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/subcalls.py +0 -0
  684. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/supervisor.py +0 -0
  685. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/worker.py +0 -0
  686. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/rlm/worker_process.py +0 -0
  687. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/__init__.py +0 -0
  688. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/adk.py +0 -0
  689. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/antigravity_cli.py +0 -0
  690. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/antigravity_managed.py +0 -0
  691. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/antigravity_sdk.py +0 -0
  692. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/antigravity_status.py +0 -0
  693. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/base.py +0 -0
  694. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/builtin.py +0 -0
  695. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/claude_agent_sdk.py +0 -0
  696. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/devin_cli.py +0 -0
  697. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/devin_status.py +0 -0
  698. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/errors.py +0 -0
  699. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/openai_agents.py +0 -0
  700. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/openai_sandbox.py +0 -0
  701. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/openai_session.py +0 -0
  702. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/pydanticai.py +0 -0
  703. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/tool_bridge.py +0 -0
  704. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/tool_bridge_openai.py +0 -0
  705. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/tool_bridge_pydanticai.py +0 -0
  706. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/runtime/vendor_cli.py +0 -0
  707. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/safety/__init__.py +0 -0
  708. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/safety/sandbox.py +0 -0
  709. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/safety/warnings.py +0 -0
  710. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/sandbox/__init__.py +0 -0
  711. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/sandbox/backends.py +0 -0
  712. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/sandbox/execution.py +0 -0
  713. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/sandbox/local_sandbox.py +0 -0
  714. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/search_registry.py +0 -0
  715. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/server/__init__.py +0 -0
  716. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/server/api.py +0 -0
  717. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/server/web.py +0 -0
  718. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/session/__init__.py +0 -0
  719. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/session/factory.py +0 -0
  720. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/session/harness_bridge.py +0 -0
  721. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/session/persistence.py +0 -0
  722. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/session/share_artifacts.py +0 -0
  723. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/session/sharing.py +0 -0
  724. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/session/switchboard.py +0 -0
  725. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/session.py +0 -0
  726. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/skillopt.py +0 -0
  727. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/skills.py +0 -0
  728. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/stream_view.py +0 -0
  729. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/styles/__init__.py +0 -0
  730. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/__init__.py +0 -0
  731. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/audit.py +0 -0
  732. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/client.py +0 -0
  733. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/compose.py +0 -0
  734. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/config.py +0 -0
  735. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/context_prune.py +0 -0
  736. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/decision.py +0 -0
  737. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/live.py +0 -0
  738. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/pack.py +0 -0
  739. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/packs/context_prune.yaml +0 -0
  740. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/packs/factory_route.yaml +0 -0
  741. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/packs/rubric.yaml +0 -0
  742. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/packs/tool_gate.yaml +0 -0
  743. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/runtime.py +0 -0
  744. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/state.py +0 -0
  745. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/tool_router.py +0 -0
  746. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/tool_search.py +0 -0
  747. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/tune.py +0 -0
  748. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/systemone/types.py +0 -0
  749. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tool_call.py +0 -0
  750. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tool_gateway/__init__.py +0 -0
  751. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tool_gateway/app.py +0 -0
  752. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tool_gateway/routing.py +0 -0
  753. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/__init__.py +0 -0
  754. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/agent_tools.py +0 -0
  755. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/apply_patch.py +0 -0
  756. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/base.py +0 -0
  757. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/batch_tool.py +0 -0
  758. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/compact_tool.py +0 -0
  759. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/context_handle.py +0 -0
  760. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/context_tools.py +0 -0
  761. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/core_tools.py +0 -0
  762. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/diagnostics.py +0 -0
  763. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/diff_utils.py +0 -0
  764. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/discovery.py +0 -0
  765. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/display.py +0 -0
  766. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/dynamic_workflow.py +0 -0
  767. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/edit_tools.py +0 -0
  768. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/enhanced_base.py +0 -0
  769. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/env_policy.py +0 -0
  770. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/file_tools.py +0 -0
  771. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/file_tracking.py +0 -0
  772. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/governed.py +0 -0
  773. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/harness_agent_session.py +0 -0
  774. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/image_tools.py +0 -0
  775. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/lsp_tools.py +0 -0
  776. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/mcp_tools.py +0 -0
  777. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/monty_tool.py +0 -0
  778. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/network_tools.py +0 -0
  779. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/output_spill.py +0 -0
  780. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/peer_agent_tools.py +0 -0
  781. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/permissions.py +0 -0
  782. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/post_edit.py +0 -0
  783. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/question_tool.py +0 -0
  784. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/request_permissions_tool.py +0 -0
  785. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/search_tools.py +0 -0
  786. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/semantic_search.py +0 -0
  787. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/shell_session.py +0 -0
  788. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/shell_tools.py +0 -0
  789. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/skill_tools.py +0 -0
  790. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/spawn_harness.py +0 -0
  791. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/todo_tools.py +0 -0
  792. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/tool_search.py +0 -0
  793. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/validation.py +0 -0
  794. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tools/web_tools.py +0 -0
  795. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tui_integration.py +0 -0
  796. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tui_widgets/__init__.py +0 -0
  797. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
  798. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tui_widgets/widgets/progress.py +0 -0
  799. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
  800. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/undo_manager.py +0 -0
  801. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/utils/__init__.py +0 -0
  802. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/utils/error_handling.py +0 -0
  803. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/utils/fuzzy.py +0 -0
  804. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/__init__.py +0 -0
  805. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/a2a_connect.py +0 -0
  806. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/agent_store.py +0 -0
  807. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/agent_switcher.py +0 -0
  808. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/animation_manager.py +0 -0
  809. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/code_context.py +0 -0
  810. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/connection_status.py +0 -0
  811. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/conversation_history.py +0 -0
  812. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/diff_indicator.py +0 -0
  813. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/enhanced_status_bar.py +0 -0
  814. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/enhanced_toast.py +0 -0
  815. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/file_browser.py +0 -0
  816. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/file_editor.py +0 -0
  817. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/harness_hub.py +0 -0
  818. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/leader_key.py +0 -0
  819. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/mode_switcher.py +0 -0
  820. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/model_picker.py +0 -0
  821. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/outcome_screen.py +0 -0
  822. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/permission_preview.py +0 -0
  823. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/prompt.py +0 -0
  824. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/provider_connect.py +0 -0
  825. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/pty_shell.py +0 -0
  826. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/resizable_sidebar.py +0 -0
  827. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/response_changes.py +0 -0
  828. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/response_display.py +0 -0
  829. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/rewind_overlay.py +0 -0
  830. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/rich_tool_display.py +0 -0
  831. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/session_browser.py +0 -0
  832. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/sidebar_panels.py +0 -0
  833. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/slash_commands.py +0 -0
  834. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/split_view.py +0 -0
  835. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/status_bar.py +0 -0
  836. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/superqode_display.py +0 -0
  837. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/systemone_tune.py +0 -0
  838. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/theme_picker.py +0 -0
  839. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/thinking.py +0 -0
  840. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/thinking_display.py +0 -0
  841. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/throbber.py +0 -0
  842. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/toast.py +0 -0
  843. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/uhp_connect.py +0 -0
  844. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/widgets/unified_output.py +0 -0
  845. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workorders/__init__.py +0 -0
  846. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workorders/cockpit.py +0 -0
  847. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workorders/integration.py +0 -0
  848. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workorders/models.py +0 -0
  849. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workorders/runner.py +0 -0
  850. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workorders/store.py +0 -0
  851. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workorders/usage.py +0 -0
  852. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workorders/worker.py +0 -0
  853. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/__init__.py +0 -0
  854. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/artifacts.py +0 -0
  855. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/change_summary.py +0 -0
  856. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/coordinator.py +0 -0
  857. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/diff_tracker.py +0 -0
  858. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/git_guard.py +0 -0
  859. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/git_snapshot.py +0 -0
  860. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/manager.py +0 -0
  861. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/snapshot.py +0 -0
  862. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/watcher.py +0 -0
  863. {superqode-2.4.28 → superqode-2.4.30}/src/superqode/workspace/worktree.py +0 -0
  864. {superqode-2.4.28 → superqode-2.4.30}/src/superqode.egg-info/dependency_links.txt +0 -0
  865. {superqode-2.4.28 → superqode-2.4.30}/src/superqode.egg-info/entry_points.txt +0 -0
  866. {superqode-2.4.28 → superqode-2.4.30}/src/superqode.egg-info/requires.txt +0 -0
  867. {superqode-2.4.28 → superqode-2.4.30}/src/superqode.egg-info/top_level.txt +0 -0
  868. {superqode-2.4.28 → superqode-2.4.30}/tests/test_030_candidate.py +0 -0
  869. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_bridge.py +0 -0
  870. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_conformance.py +0 -0
  871. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_connect.py +0 -0
  872. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_context.py +0 -0
  873. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_keys.py +0 -0
  874. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_limits.py +0 -0
  875. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_oauth.py +0 -0
  876. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_registry.py +0 -0
  877. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_security.py +0 -0
  878. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_shortlist.py +0 -0
  879. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_trust.py +0 -0
  880. {superqode-2.4.28 → superqode-2.4.30}/tests/test_a2a_understand.py +0 -0
  881. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_agent_dispatch.py +0 -0
  882. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_client.py +0 -0
  883. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_free_models.py +0 -0
  884. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_parent_tool_linking.py +0 -0
  885. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_permission_store.py +0 -0
  886. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_render.py +0 -0
  887. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_server.py +0 -0
  888. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_session_store.py +0 -0
  889. {superqode-2.4.28 → superqode-2.4.30}/tests/test_acp_slash.py +0 -0
  890. {superqode-2.4.28 → superqode-2.4.30}/tests/test_adaptive_compaction.py +0 -0
  891. {superqode-2.4.28 → superqode-2.4.30}/tests/test_agent_importer.py +0 -0
  892. {superqode-2.4.28 → superqode-2.4.30}/tests/test_agent_install_commands.py +0 -0
  893. {superqode-2.4.28 → superqode-2.4.30}/tests/test_agent_loop_harness.py +0 -0
  894. {superqode-2.4.28 → superqode-2.4.30}/tests/test_agent_memory.py +0 -0
  895. {superqode-2.4.28 → superqode-2.4.30}/tests/test_agents_md_compat.py +0 -0
  896. {superqode-2.4.28 → superqode-2.4.30}/tests/test_agy_tui_commands.py +0 -0
  897. {superqode-2.4.28 → superqode-2.4.30}/tests/test_app_main_contract.py +0 -0
  898. {superqode-2.4.28 → superqode-2.4.30}/tests/test_apply_patch.py +0 -0
  899. {superqode-2.4.28 → superqode-2.4.30}/tests/test_auth.py +0 -0
  900. {superqode-2.4.28 → superqode-2.4.30}/tests/test_bash_spill.py +0 -0
  901. {superqode-2.4.28 → superqode-2.4.30}/tests/test_benchmarks.py +0 -0
  902. {superqode-2.4.28 → superqode-2.4.30}/tests/test_catalog_freshness.py +0 -0
  903. {superqode-2.4.28 → superqode-2.4.30}/tests/test_change_summary.py +0 -0
  904. {superqode-2.4.28 → superqode-2.4.30}/tests/test_channels.py +0 -0
  905. {superqode-2.4.28 → superqode-2.4.30}/tests/test_cli_commands.py +0 -0
  906. {superqode-2.4.28 → superqode-2.4.30}/tests/test_cli_connect.py +0 -0
  907. {superqode-2.4.28 → superqode-2.4.30}/tests/test_clickable_commands.py +0 -0
  908. {superqode-2.4.28 → superqode-2.4.30}/tests/test_command_safety.py +0 -0
  909. {superqode-2.4.28 → superqode-2.4.30}/tests/test_commands_runtime.py +0 -0
  910. {superqode-2.4.28 → superqode-2.4.30}/tests/test_compaction.py +0 -0
  911. {superqode-2.4.28 → superqode-2.4.30}/tests/test_conditional_instructions.py +0 -0
  912. {superqode-2.4.28 → superqode-2.4.30}/tests/test_config_loader.py +0 -0
  913. {superqode-2.4.28 → superqode-2.4.30}/tests/test_config_runtime.py +0 -0
  914. {superqode-2.4.28 → superqode-2.4.30}/tests/test_connect_setup.py +0 -0
  915. {superqode-2.4.28 → superqode-2.4.30}/tests/test_context_handles.py +0 -0
  916. {superqode-2.4.28 → superqode-2.4.30}/tests/test_context_probe.py +0 -0
  917. {superqode-2.4.28 → superqode-2.4.30}/tests/test_context_prune.py +0 -0
  918. {superqode-2.4.28 → superqode-2.4.30}/tests/test_context_remaining.py +0 -0
  919. {superqode-2.4.28 → superqode-2.4.30}/tests/test_copilot_login_ux.py +0 -0
  920. {superqode-2.4.28 → superqode-2.4.30}/tests/test_copilot_tui_commands.py +0 -0
  921. {superqode-2.4.28 → superqode-2.4.30}/tests/test_create_skill_tool.py +0 -0
  922. {superqode-2.4.28 → superqode-2.4.30}/tests/test_decision_evaluators.py +0 -0
  923. {superqode-2.4.28 → superqode-2.4.30}/tests/test_deepagents_model_spec.py +0 -0
  924. {superqode-2.4.28 → superqode-2.4.30}/tests/test_deferred_tools.py +0 -0
  925. {superqode-2.4.28 → superqode-2.4.30}/tests/test_design_system_contrast.py +0 -0
  926. {superqode-2.4.28 → superqode-2.4.30}/tests/test_developer_workflow_docs.py +0 -0
  927. {superqode-2.4.28 → superqode-2.4.30}/tests/test_ds4_local_client.py +0 -0
  928. {superqode-2.4.28 → superqode-2.4.30}/tests/test_dsh_harness.py +0 -0
  929. {superqode-2.4.28 → superqode-2.4.30}/tests/test_dx_enhancements.py +0 -0
  930. {superqode-2.4.28 → superqode-2.4.30}/tests/test_dynamic_workflow_tool.py +0 -0
  931. {superqode-2.4.28 → superqode-2.4.30}/tests/test_edit_line_number_strip.py +0 -0
  932. {superqode-2.4.28 → superqode-2.4.30}/tests/test_execution_resolver.py +0 -0
  933. {superqode-2.4.28 → superqode-2.4.30}/tests/test_extensions.py +0 -0
  934. {superqode-2.4.28 → superqode-2.4.30}/tests/test_final_parity_wave.py +0 -0
  935. {superqode-2.4.28 → superqode-2.4.30}/tests/test_free_models.py +0 -0
  936. {superqode-2.4.28 → superqode-2.4.30}/tests/test_governance.py +0 -0
  937. {superqode-2.4.28 → superqode-2.4.30}/tests/test_grok_cli_auth.py +0 -0
  938. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_agent_session.py +0 -0
  939. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_backends.py +0 -0
  940. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_bench.py +0 -0
  941. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_bench_paths.py +0 -0
  942. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_catalog.py +0 -0
  943. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_connect_catalog.py +0 -0
  944. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_drift.py +0 -0
  945. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_eval_splits.py +0 -0
  946. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_examples.py +0 -0
  947. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_explain.py +0 -0
  948. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_hooks.py +0 -0
  949. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_hub_screen.py +0 -0
  950. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_kernel.py +0 -0
  951. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_mcp_server.py +0 -0
  952. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_model_policy.py +0 -0
  953. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_observability.py +0 -0
  954. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_omni.py +0 -0
  955. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_output.py +0 -0
  956. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_permissions.py +0 -0
  957. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_promotion.py +0 -0
  958. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_protocol.py +0 -0
  959. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_sandbox.py +0 -0
  960. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_seesaw_dimensions.py +0 -0
  961. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_self_improve.py +0 -0
  962. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_session_bridge.py +0 -0
  963. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_spec.py +0 -0
  964. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_store.py +0 -0
  965. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_usage.py +0 -0
  966. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_wizard.py +0 -0
  967. {superqode-2.4.28 → superqode-2.4.30}/tests/test_harness_workflow.py +0 -0
  968. {superqode-2.4.28 → superqode-2.4.30}/tests/test_headless.py +0 -0
  969. {superqode-2.4.28 → superqode-2.4.30}/tests/test_hf_fetch.py +0 -0
  970. {superqode-2.4.28 → superqode-2.4.30}/tests/test_hooks.py +0 -0
  971. {superqode-2.4.28 → superqode-2.4.30}/tests/test_install_script.py +0 -0
  972. {superqode-2.4.28 → superqode-2.4.30}/tests/test_integration_docs.py +0 -0
  973. {superqode-2.4.28 → superqode-2.4.30}/tests/test_jev_tools_sdk.py +0 -0
  974. {superqode-2.4.28 → superqode-2.4.30}/tests/test_kimi_k3_provider.py +0 -0
  975. {superqode-2.4.28 → superqode-2.4.30}/tests/test_kimi_k3_routes.py +0 -0
  976. {superqode-2.4.28 → superqode-2.4.30}/tests/test_linter_runner.py +0 -0
  977. {superqode-2.4.28 → superqode-2.4.30}/tests/test_litellm_gateway.py +0 -0
  978. {superqode-2.4.28 → superqode-2.4.30}/tests/test_live_acp_registry.py +0 -0
  979. {superqode-2.4.28 → superqode-2.4.30}/tests/test_live_models.py +0 -0
  980. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_airplane.py +0 -0
  981. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_build.py +0 -0
  982. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_code_index.py +0 -0
  983. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_install.py +0 -0
  984. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_labs.py +0 -0
  985. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_migrate.py +0 -0
  986. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_model_optimizations.py +0 -0
  987. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_packs.py +0 -0
  988. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_sandbox.py +0 -0
  989. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_search.py +0 -0
  990. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_servers.py +0 -0
  991. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_setup.py +0 -0
  992. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_smoke.py +0 -0
  993. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_stack.py +0 -0
  994. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_tool_capabilities.py +0 -0
  995. {superqode-2.4.28 → superqode-2.4.30}/tests/test_local_tool_support.py +0 -0
  996. {superqode-2.4.28 → superqode-2.4.30}/tests/test_login_api.py +0 -0
  997. {superqode-2.4.28 → superqode-2.4.30}/tests/test_loop_guard.py +0 -0
  998. {superqode-2.4.28 → superqode-2.4.30}/tests/test_managed_harness_backend.py +0 -0
  999. {superqode-2.4.28 → superqode-2.4.30}/tests/test_markdown_render.py +0 -0
  1000. {superqode-2.4.28 → superqode-2.4.30}/tests/test_mcp.py +0 -0
  1001. {superqode-2.4.28 → superqode-2.4.30}/tests/test_mcp_example_server.py +0 -0
  1002. {superqode-2.4.28 → superqode-2.4.30}/tests/test_mcp_integration.py +0 -0
  1003. {superqode-2.4.28 → superqode-2.4.30}/tests/test_mcp_live.py +0 -0
  1004. {superqode-2.4.28 → superqode-2.4.30}/tests/test_mcp_oauth_generalized.py +0 -0
  1005. {superqode-2.4.28 → superqode-2.4.30}/tests/test_mcp_tools_runtime.py +0 -0
  1006. {superqode-2.4.28 → superqode-2.4.30}/tests/test_mcp_two_way.py +0 -0
  1007. {superqode-2.4.28 → superqode-2.4.30}/tests/test_memory_recall.py +0 -0
  1008. {superqode-2.4.28 → superqode-2.4.30}/tests/test_mlx_tools.py +0 -0
  1009. {superqode-2.4.28 → superqode-2.4.30}/tests/test_model_profiles.py +0 -0
  1010. {superqode-2.4.28 → superqode-2.4.30}/tests/test_model_specs.py +0 -0
  1011. {superqode-2.4.28 → superqode-2.4.30}/tests/test_models_dev.py +0 -0
  1012. {superqode-2.4.28 → superqode-2.4.30}/tests/test_monty_tool.py +0 -0
  1013. {superqode-2.4.28 → superqode-2.4.30}/tests/test_navigation_history.py +0 -0
  1014. {superqode-2.4.28 → superqode-2.4.30}/tests/test_network_policy.py +0 -0
  1015. {superqode-2.4.28 → superqode-2.4.30}/tests/test_ollama_client.py +0 -0
  1016. {superqode-2.4.28 → superqode-2.4.30}/tests/test_omnigent_agent_session_smoke.py +0 -0
  1017. {superqode-2.4.28 → superqode-2.4.30}/tests/test_omnigent_importer.py +0 -0
  1018. {superqode-2.4.28 → superqode-2.4.30}/tests/test_openai_session.py +0 -0
  1019. {superqode-2.4.28 → superqode-2.4.30}/tests/test_optimize_harnesses.py +0 -0
  1020. {superqode-2.4.28 → superqode-2.4.30}/tests/test_output_spill.py +0 -0
  1021. {superqode-2.4.28 → superqode-2.4.30}/tests/test_parallel_compare.py +0 -0
  1022. {superqode-2.4.28 → superqode-2.4.30}/tests/test_peer_agents.py +0 -0
  1023. {superqode-2.4.28 → superqode-2.4.30}/tests/test_plugin_hook_wiring.py +0 -0
  1024. {superqode-2.4.28 → superqode-2.4.30}/tests/test_plugins.py +0 -0
  1025. {superqode-2.4.28 → superqode-2.4.30}/tests/test_policies_and_turndiff.py +0 -0
  1026. {superqode-2.4.28 → superqode-2.4.30}/tests/test_post_edit_verify.py +0 -0
  1027. {superqode-2.4.28 → superqode-2.4.30}/tests/test_prime_agent_client.py +0 -0
  1028. {superqode-2.4.28 → superqode-2.4.30}/tests/test_prime_agent_harness.py +0 -0
  1029. {superqode-2.4.28 → superqode-2.4.30}/tests/test_prime_agent_provider.py +0 -0
  1030. {superqode-2.4.28 → superqode-2.4.30}/tests/test_prime_command_surface.py +0 -0
  1031. {superqode-2.4.28 → superqode-2.4.30}/tests/test_prime_tui_rpc.py +0 -0
  1032. {superqode-2.4.28 → superqode-2.4.30}/tests/test_progressive_discovery.py +0 -0
  1033. {superqode-2.4.28 → superqode-2.4.30}/tests/test_progressive_reveals.py +0 -0
  1034. {superqode-2.4.28 → superqode-2.4.30}/tests/test_project_trust.py +0 -0
  1035. {superqode-2.4.28 → superqode-2.4.30}/tests/test_prompt_stack.py +0 -0
  1036. {superqode-2.4.28 → superqode-2.4.30}/tests/test_provider_catalog.py +0 -0
  1037. {superqode-2.4.28 → superqode-2.4.30}/tests/test_provider_dynamic.py +0 -0
  1038. {superqode-2.4.28 → superqode-2.4.30}/tests/test_provider_models.py +0 -0
  1039. {superqode-2.4.28 → superqode-2.4.30}/tests/test_provider_recommendations.py +0 -0
  1040. {superqode-2.4.28 → superqode-2.4.30}/tests/test_published_agent_card.py +0 -0
  1041. {superqode-2.4.28 → superqode-2.4.30}/tests/test_qm_deployment_layer.py +0 -0
  1042. {superqode-2.4.28 → superqode-2.4.30}/tests/test_rate_limit_retry.py +0 -0
  1043. {superqode-2.4.28 → superqode-2.4.30}/tests/test_read_tool_limits.py +0 -0
  1044. {superqode-2.4.28 → superqode-2.4.30}/tests/test_reasoning_and_budget.py +0 -0
  1045. {superqode-2.4.28 → superqode-2.4.30}/tests/test_recursive_eval_packs.py +0 -0
  1046. {superqode-2.4.28 → superqode-2.4.30}/tests/test_release_metadata.py +0 -0
  1047. {superqode-2.4.28 → superqode-2.4.30}/tests/test_rlm_code_integration.py +0 -0
  1048. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_adk.py +0 -0
  1049. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_antigravity_cli.py +0 -0
  1050. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_antigravity_managed.py +0 -0
  1051. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_antigravity_sdk.py +0 -0
  1052. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_builtin.py +0 -0
  1053. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_claude_agent_sdk.py +0 -0
  1054. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_codex_sdk.py +0 -0
  1055. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_copilot_sdk.py +0 -0
  1056. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_devin_cli.py +0 -0
  1057. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_dialog.py +0 -0
  1058. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_openai_agents.py +0 -0
  1059. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_openai_events.py +0 -0
  1060. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_openai_hitl.py +0 -0
  1061. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_openai_sandbox.py +0 -0
  1062. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_protocol.py +0 -0
  1063. {superqode-2.4.28 → superqode-2.4.30}/tests/test_runtime_pydanticai.py +0 -0
  1064. {superqode-2.4.28 → superqode-2.4.30}/tests/test_sandbox_backends.py +0 -0
  1065. {superqode-2.4.28 → superqode-2.4.30}/tests/test_sandbox_execution.py +0 -0
  1066. {superqode-2.4.28 → superqode-2.4.30}/tests/test_search_roots.py +0 -0
  1067. {superqode-2.4.28 → superqode-2.4.30}/tests/test_semantic_search.py +0 -0
  1068. {superqode-2.4.28 → superqode-2.4.30}/tests/test_session_browser.py +0 -0
  1069. {superqode-2.4.28 → superqode-2.4.30}/tests/test_session_switchboard.py +0 -0
  1070. {superqode-2.4.28 → superqode-2.4.30}/tests/test_shell_session.py +0 -0
  1071. {superqode-2.4.28 → superqode-2.4.30}/tests/test_simple_login.py +0 -0
  1072. {superqode-2.4.28 → superqode-2.4.30}/tests/test_simple_query_fastpath.py +0 -0
  1073. {superqode-2.4.28 → superqode-2.4.30}/tests/test_skillopt.py +0 -0
  1074. {superqode-2.4.28 → superqode-2.4.30}/tests/test_slash_runtime.py +0 -0
  1075. {superqode-2.4.28 → superqode-2.4.30}/tests/test_spawn_harness_tool.py +0 -0
  1076. {superqode-2.4.28 → superqode-2.4.30}/tests/test_status_bar_layout.py +0 -0
  1077. {superqode-2.4.28 → superqode-2.4.30}/tests/test_steering_continue_reminders.py +0 -0
  1078. {superqode-2.4.28 → superqode-2.4.30}/tests/test_streaming_tool_calls.py +0 -0
  1079. {superqode-2.4.28 → superqode-2.4.30}/tests/test_subscription_login.py +0 -0
  1080. {superqode-2.4.28 → superqode-2.4.30}/tests/test_subscription_login_consent.py +0 -0
  1081. {superqode-2.4.28 → superqode-2.4.30}/tests/test_synthetic_gateways.py +0 -0
  1082. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_audit.py +0 -0
  1083. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_decision.py +0 -0
  1084. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_discovery.py +0 -0
  1085. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_general.py +0 -0
  1086. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_live.py +0 -0
  1087. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_live_recorded.py +0 -0
  1088. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_loop.py +0 -0
  1089. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_regressions.py +0 -0
  1090. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_state.py +0 -0
  1091. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_stub.py +0 -0
  1092. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_tool_gate.py +0 -0
  1093. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_tool_router.py +0 -0
  1094. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_tune.py +0 -0
  1095. {superqode-2.4.28 → superqode-2.4.30}/tests/test_systemone_types.py +0 -0
  1096. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tau_harness_adapter.py +0 -0
  1097. {superqode-2.4.28 → superqode-2.4.30}/tests/test_terminal_output_limits.py +0 -0
  1098. {superqode-2.4.28 → superqode-2.4.30}/tests/test_theme_contrast.py +0 -0
  1099. {superqode-2.4.28 → superqode-2.4.30}/tests/test_theme_picker.py +0 -0
  1100. {superqode-2.4.28 → superqode-2.4.30}/tests/test_theme_repaint.py +0 -0
  1101. {superqode-2.4.28 → superqode-2.4.30}/tests/test_todo_tools.py +0 -0
  1102. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tool_args_repair.py +0 -0
  1103. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tool_batch_safety.py +0 -0
  1104. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tool_bridge.py +0 -0
  1105. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tool_bridge_openai.py +0 -0
  1106. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tool_call_repair.py +0 -0
  1107. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tool_discovery_pipeline.py +0 -0
  1108. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tool_gateway.py +0 -0
  1109. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tool_output_pruning.py +0 -0
  1110. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tool_tracking.py +0 -0
  1111. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tools.py +0 -0
  1112. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_change_summary.py +0 -0
  1113. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_chat_mode.py +0 -0
  1114. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_diagnostics.py +0 -0
  1115. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_exit.py +0 -0
  1116. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_feedback.py +0 -0
  1117. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_launch_performance.py +0 -0
  1118. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_llamacpp_connect.py +0 -0
  1119. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_markdown_cleanup.py +0 -0
  1120. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_mlx_connect.py +0 -0
  1121. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_onboarding.py +0 -0
  1122. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_regressions.py +0 -0
  1123. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_tool_display.py +0 -0
  1124. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tui_workspace_reliability.py +0 -0
  1125. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tune_credentials.py +0 -0
  1126. {superqode-2.4.28 → superqode-2.4.30}/tests/test_tune_preferences.py +0 -0
  1127. {superqode-2.4.28 → superqode-2.4.30}/tests/test_uhp_backend.py +0 -0
  1128. {superqode-2.4.28 → superqode-2.4.30}/tests/test_uhp_client.py +0 -0
  1129. {superqode-2.4.28 → superqode-2.4.30}/tests/test_uhp_connect.py +0 -0
  1130. {superqode-2.4.28 → superqode-2.4.30}/tests/test_uhp_server.py +0 -0
  1131. {superqode-2.4.28 → superqode-2.4.30}/tests/test_update_command.py +0 -0
  1132. {superqode-2.4.28 → superqode-2.4.30}/tests/test_vendor_cli_runtime.py +0 -0
  1133. {superqode-2.4.28 → superqode-2.4.30}/tests/test_version.py +0 -0
  1134. {superqode-2.4.28 → superqode-2.4.30}/tests/test_view_image.py +0 -0
  1135. {superqode-2.4.28 → superqode-2.4.30}/tests/test_web_server_auth.py +0 -0
  1136. {superqode-2.4.28 → superqode-2.4.30}/tests/test_workorders.py +0 -0
  1137. {superqode-2.4.28 → superqode-2.4.30}/tests/test_workspace.py +0 -0
@@ -7,6 +7,76 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.4.30] - 2026-09-29
11
+
12
+ ### Added
13
+
14
+ - Gemini CLI subscription discovery with Google sign-in setup and explicit
15
+ vendor-agent alternatives in the native harness model-source menu.
16
+ - Account connections for OpenCode, fast-agent, Pi and omp, including
17
+ fast-agent Codex plan launch settings and reconnect support.
18
+ - Native MiniMax Token Plan model access with a separate validated subscription
19
+ credential and endpoint.
20
+
21
+ ### Fixed
22
+
23
+ - Keep subscription credentials separate from general API billing. Z.AI and
24
+ Alibaba Coding Plan choices explain supported-agent setup; Kimi and Copilot
25
+ alternatives explicitly identify their vendor harness.
26
+ - Preserve the current agent and credentials when model setup fails, and
27
+ restore the saved native harness and exact model route on reconnect.
28
+ - Retain ACP registry package versions, launch arguments, scoped environment
29
+ defaults and user-defined command overrides. Binary-only agents show
30
+ matching platform download and checksum guidance.
31
+ - Apply subscription billing guards after child-environment overlays and keep
32
+ explicit Copilot tokens scoped to Copilot. OAuth/local agent health checks
33
+ require only explicitly declared environment variables.
34
+ - Target the active Python environment and installed SuperQode version in SDK
35
+ setup hints; keep public installation guidance independent of the exporting
36
+ machine's installed extras.
37
+ - Prevent interactive account and plan shortcuts from falling through to an
38
+ unrelated default provider in headless mode.
39
+ - Correct connection documentation, readiness guidance, Gemini discovery and
40
+ Qoder/Poolside capability declarations, and refresh the published Hub catalog.
41
+
42
+ ## [2.4.29] - 2026-09-29
43
+
44
+ ### Added
45
+
46
+ - Composer image attachments for direct Chat, built-in coding, and image-capable
47
+ ACP agents, with visible removal controls, bounded image payloads, and draft
48
+ restoration after rejected requests.
49
+ - `:voice` / `:dictate` and a command-palette entry for OS dictation guidance;
50
+ dictated text remains editable before submission.
51
+
52
+ ### Changed
53
+
54
+ - Repository navigation keeps its selected tab and prompt draft, supports
55
+ contextual Ctrl+F file search, and gives keyboard and mouse access to search
56
+ results. Code-search selections reveal the matching preview line.
57
+ - Filename indexing starts when search is opened rather than during startup.
58
+ Code search is debounced, cancels superseded work, and prunes ignored trees
59
+ before traversal.
60
+ - Command palette and prompt history overlays adapt to smaller terminals and
61
+ selected themes. History search ranks fuzzy matches and shows snippets around
62
+ matches, including those later in multiline prompts.
63
+ - Clipboard image capture runs away from the TUI event loop.
64
+
65
+ ### Fixed
66
+
67
+ - Terminal image drops are staged before composer insertion. Absolute paths
68
+ cannot be mistaken for slash commands, and prompts containing image paths
69
+ send native image payloads with their text. Quoted and escaped filenames are
70
+ supported; missing images retain the draft with a readable error.
71
+ - Delayed focus callbacks no longer interrupt sidebar browsing. Escape restores
72
+ focus through search, preview, Files, and the prompt.
73
+ - Alt+A approves a ready plan even with the composer focused; otherwise it
74
+ retains its return-to-agent behavior.
75
+ - Dispatch palette entries from their own command definitions, wire previously
76
+ unhandled entries, and remove the duplicate context entry.
77
+ - Keep image files out of text-reference expansion and preserve drafts when
78
+ attachments are added or removed.
79
+
10
80
  ## [2.4.28] - 2026-09-29
11
81
 
12
82
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superqode
3
- Version: 2.4.28
3
+ Version: 2.4.30
4
4
  Summary: The harness layer for coding agents
5
5
  Author-email: Shashi Jagtap <info@super-agentic.ai>
6
6
  Maintainer-email: Shashi Jagtap <info@super-agentic.ai>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superqode"
3
- version = "2.4.28"
3
+ version = "2.4.30"
4
4
  description = "The harness layer for coding agents"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -38,7 +38,7 @@ __all__ = [
38
38
  "sidebar",
39
39
  ]
40
40
 
41
- __version__ = "2.4.28"
41
+ __version__ = "2.4.30"
42
42
 
43
43
  # Stable, lightweight public extension surface. Importing this package does
44
44
  # not discover or execute third-party extensions; discovery happens only when
@@ -304,6 +304,9 @@ class ACPClient:
304
304
  # Applied last so a caller can override the defaults above.
305
305
  for name, value in (self.extra_env or {}).items():
306
306
  env[str(name)] = str(value)
307
+ if self.subscription_vendor:
308
+ env, removed = subscription_child_env(self.subscription_vendor, env)
309
+ self.stripped_api_keys = list(dict.fromkeys([*self.stripped_api_keys, *removed]))
307
310
 
308
311
  # OpenCode's verbose logs are useful for debugging, but expensive on
309
312
  # normal runs because every non-JSON line has to be parsed and routed
@@ -431,7 +434,7 @@ class ACPClient:
431
434
  }
432
435
  )
433
436
 
434
- async def send_prompt(self, prompt: str) -> Optional[str]:
437
+ async def send_prompt(self, prompt: str, *, images=None) -> Optional[str]:
435
438
  """
436
439
  Send a prompt to the agent and wait for completion.
437
440
 
@@ -441,6 +444,12 @@ class ACPClient:
441
444
  self.reset_stats()
442
445
 
443
446
  content_blocks: List[ContentBlock] = [{"type": "text", "text": prompt}]
447
+ if images:
448
+ if not self._agent_capabilities.get("promptCapabilities", {}).get("image", False):
449
+ raise ValueError(
450
+ "This ACP agent does not advertise image input. Choose an image-capable agent."
451
+ )
452
+ content_blocks.extend(image.acp_part() for image in images)
444
453
 
445
454
  response = await self._call_method(
446
455
  "session/prompt",
@@ -667,7 +667,7 @@ class AgentMessage:
667
667
  """A message in the agent conversation."""
668
668
 
669
669
  role: str # "user", "assistant", "tool"
670
- content: str
670
+ content: str | list[dict]
671
671
  tool_calls: Optional[List[Dict]] = None
672
672
  tool_call_id: Optional[str] = None
673
673
  name: Optional[str] = None # Tool name for tool messages
@@ -2372,7 +2372,7 @@ class AgentLoop:
2372
2372
  """Back-compat alias for :meth:`_execute_tool_batch`."""
2373
2373
  return await self._execute_tool_batch(tool_calls)
2374
2374
 
2375
- async def run(self, user_message: str) -> AgentResponse:
2375
+ async def run(self, user_message: str, *, images=None) -> AgentResponse:
2376
2376
  """Run the agent loop until completion.
2377
2377
 
2378
2378
  Args:
@@ -2501,7 +2501,11 @@ class AgentLoop:
2501
2501
  messages.extend(self._load_stored_messages())
2502
2502
 
2503
2503
  # Add user message
2504
- messages.append(AgentMessage(role="user", content=user_message))
2504
+ from superqode.image_input import image_message
2505
+
2506
+ messages.append(
2507
+ AgentMessage(role="user", content=image_message(user_message, images or []))
2508
+ )
2505
2509
 
2506
2510
  # Save to session storage if enabled
2507
2511
  if self._session_manager:
@@ -2965,6 +2969,8 @@ class AgentLoop:
2965
2969
  async def run_streaming(
2966
2970
  self,
2967
2971
  user_message: str,
2972
+ *,
2973
+ images=None,
2968
2974
  ) -> AsyncIterator[str]:
2969
2975
  """Run the agent loop with streaming output.
2970
2976
 
@@ -2982,6 +2988,7 @@ class AgentLoop:
2982
2988
  "total_tokens": 0,
2983
2989
  "total_cost": 0.0,
2984
2990
  }
2991
+ self.last_stream_error = ""
2985
2992
 
2986
2993
  fast_chat = self._use_fast_chat_path(user_message)
2987
2994
  # Resolve the real (loaded, for local) context window once so adaptive
@@ -3001,7 +3008,11 @@ class AgentLoop:
3001
3008
  if not fast_chat:
3002
3009
  messages.extend(self._load_stored_messages())
3003
3010
 
3004
- messages.append(AgentMessage(role="user", content=user_message))
3011
+ from superqode.image_input import image_message
3012
+
3013
+ messages.append(
3014
+ AgentMessage(role="user", content=image_message(user_message, images or []))
3015
+ )
3005
3016
  if self._session_manager:
3006
3017
  self._session_manager.add_user_message(user_message)
3007
3018
 
@@ -3231,6 +3242,7 @@ class AgentLoop:
3231
3242
  error_msg = str(e)
3232
3243
  error_type = type(e).__name__
3233
3244
  # Yield original streaming error for maximum transparency
3245
+ self.last_stream_error = error_msg
3234
3246
  yield f"\n\n[Error: {error_type}] {error_msg}"
3235
3247
  full_content = f"[Error: {error_type}] {error_msg}"
3236
3248
  return
@@ -3264,6 +3276,7 @@ class AgentLoop:
3264
3276
  except Exception as e:
3265
3277
  error_msg = str(e)
3266
3278
  error_type = type(e).__name__
3279
+ self.last_stream_error = error_msg
3267
3280
  yield f"\n\n[Error: {error_type}] {error_msg}"
3268
3281
  return
3269
3282
 
@@ -153,7 +153,9 @@ class ACPAgentManager:
153
153
  self.connection: ClientSideConnection | None = None
154
154
  self._response_queue: asyncio.Queue = asyncio.Queue()
155
155
 
156
- async def connect_to_agent(self, command: str, cwd: str | None = None) -> bool:
156
+ async def connect_to_agent(
157
+ self, command: str, cwd: str | None = None, *, extra_env: dict[str, str] | None = None
158
+ ) -> bool:
157
159
  """Connect to an ACP agent.
158
160
 
159
161
  Args:
@@ -189,6 +191,7 @@ class ACPAgentManager:
189
191
  stdin=asyncio.subprocess.PIPE,
190
192
  stdout=asyncio.subprocess.PIPE,
191
193
  cwd=cwd or os.getcwd(),
194
+ env={**os.environ, **extra_env} if extra_env else None,
192
195
  )
193
196
 
194
197
  if proc.stdin is None or proc.stdout is None:
@@ -77,6 +77,7 @@ async def read_agents(include_registry: bool = False) -> dict[str, "Agent"]:
77
77
  if file.name.endswith(".toml") and file.is_file():
78
78
  try:
79
79
  agent: "Agent" = tomllib.load(file.open("rb"))
80
+ agent["user_defined"] = search_path == user_agent_dir
80
81
  if agent.get("active", True):
81
82
  # Validate required fields
82
83
  required_fields = ["identity", "name", "short_name", "protocol"]
@@ -115,7 +116,16 @@ async def read_agents(include_registry: bool = False) -> dict[str, "Agent"]:
115
116
  for warning in warnings:
116
117
  console.print(f"[yellow]Warning: {warning}[/yellow]")
117
118
 
118
- agent_map = {agent["identity"]: agent for agent in agents}
119
+ agent_map = {}
120
+ for agent in agents:
121
+ if agent.get("user_defined"):
122
+ short_name = str(agent.get("short_name") or "").casefold()
123
+ agent_map = {
124
+ identity: existing
125
+ for identity, existing in agent_map.items()
126
+ if str(existing.get("short_name") or "").casefold() != short_name
127
+ }
128
+ agent_map[agent["identity"]] = agent
119
129
 
120
130
  # Ensure the bundled catalog has stable terminal groups even before the
121
131
  # first network refresh.
@@ -153,6 +163,12 @@ async def read_agents(include_registry: bool = False) -> dict[str, "Agent"]:
153
163
  existing["registry_id"] = converted.get("registry_id", "")
154
164
  existing["registry_version"] = converted.get("registry_version", "")
155
165
  existing["registry_source"] = converted.get("registry_source", "")
166
+ existing["registry_license"] = converted.get("registry_license", "")
167
+ existing["registry_license_url"] = converted.get("registry_license_url", "")
168
+ if not existing.get("user_defined"):
169
+ existing["launch_env"] = converted.get("launch_env", {})
170
+ if converted.get("registry_source") == "official-registry":
171
+ existing["run_command"] = converted["run_command"]
156
172
  existing["catalog_tier"] = converted.get("catalog_tier", "all")
157
173
  existing["recommended"] = converted.get("recommended", False)
158
174
  existing["tags"] = sorted(
@@ -110,6 +110,10 @@ class Agent(TypedDict):
110
110
  welcome: NotRequired[str]
111
111
  """A Markdown document shown to the user when the conversation starts. Should contain a welcome message and any advice on getting started."""
112
112
  run_command: dict[OS, str]
113
+ launch_env: NotRequired[dict[str, str]]
114
+ user_defined: NotRequired[bool]
115
+ """Distribution defaults applied only to this agent's subprocess."""
116
+ required_env: NotRequired[list[str]]
113
117
  """Command to run the agent, by OS or wildcard."""
114
118
  actions: dict[OS, dict[Action, Command]]
115
119
  """Scripts to perform actions, typically at least to install the agent."""
@@ -725,6 +725,9 @@ COMMANDS = [
725
725
  ":sandbox doctor",
726
726
  ":sandbox run",
727
727
  ":paste",
728
+ ":voice",
729
+ ":voice off",
730
+ ":dictate",
728
731
  ":queue",
729
732
  ":queue add",
730
733
  ":queue edit",
@@ -248,6 +248,11 @@ ConversationLog {
248
248
  }
249
249
  #hints { text-align: center; color: #71717a; height: 1; margin-top: 0; padding: 0; }
250
250
 
251
+ #attachment-bar { display: none; height: auto; max-height: 5; margin: 0 2; }
252
+ #attachment-bar.visible { display: block; }
253
+ #dictation-guide { display: none; height: auto; max-height: 5; margin: 0 2; }
254
+ #dictation-guide.visible { display: block; }
255
+
251
256
  #active-tools {
252
257
  display: none;
253
258
  height: 1;
@@ -13,6 +13,7 @@ VENDOR_HARNESS_IDS = (
13
13
  "kimi-code",
14
14
  "qwen-code",
15
15
  "antigravity",
16
+ "gemini-cli",
16
17
  "grok",
17
18
  "copilot",
18
19
  "cursor",
@@ -80,6 +81,11 @@ def harness_install_extra(entry) -> str:
80
81
  """Return the controlled SuperQode extra for an unavailable harness."""
81
82
  if bool(getattr(entry, "available", False)):
82
83
  return ""
84
+ return harness_source_extra(entry)
85
+
86
+
87
+ def harness_source_extra(entry) -> str:
88
+ """Declared optional extra, independent of this machine's installation."""
83
89
  return _OPTIONAL_HARNESS_EXTRAS.get(str(getattr(entry, "source", "") or ""), "")
84
90
 
85
91
 
@@ -50,6 +50,13 @@ class SelectionAwareInput(TextArea):
50
50
  self.load_text("")
51
51
  self._resize_to_content()
52
52
 
53
+ def _on_paste(self, event: events.Paste) -> None:
54
+ # Textual dispatches inherited handlers automatically. Stop its default
55
+ # insertion only when the composer successfully stages a path-only drop.
56
+ handler = getattr(self.app, "on_paste", None)
57
+ if handler is not None:
58
+ handler(event)
59
+
53
60
  def __init__(self, *args, suggester=None, **kwargs) -> None:
54
61
  # TextArea doesn't support Input's suggester API. Accept it so the prompt
55
62
  # can keep the existing construction path while using soft wrapping.
@@ -204,6 +211,12 @@ class SelectionAwareInput(TextArea):
204
211
  return
205
212
 
206
213
  if event.key == "alt+a":
214
+ # Let the app-level plan handler approve a ready plan before this
215
+ # composer shortcut can intercept the event for workspace navigation.
216
+ if getattr(app, "_pending_plan_status", "") == "pending" and bool(
217
+ getattr(app, "_pending_plan_content", "").strip()
218
+ ):
219
+ return
207
220
  if hasattr(app, "action_return_to_agent"):
208
221
  app.action_return_to_agent()
209
222
  event.stop()
@@ -36,6 +36,10 @@ class MiscActionsMixin:
36
36
  self._welcome_active = False
37
37
  log = self.query_one("#log", ConversationLog)
38
38
  log.redraw_conversation()
39
+ try:
40
+ self.query_one("#prompt-input", SelectionAwareInput).focus()
41
+ except Exception:
42
+ pass
39
43
  self.set_timer(0.05, self._ensure_input_focus)
40
44
 
41
45
  def action_show_help(self):
@@ -91,6 +95,40 @@ class MiscActionsMixin:
91
95
 
92
96
  self.push_screen(HistorySearchModal(entries=entries), callback=_on_dismissed)
93
97
 
98
+ def action_remove_attachment(self, index: int) -> None:
99
+ self._attach_cmd(f"remove {index}", self.query_one("#log", ConversationLog))
100
+ self._ensure_input_focus()
101
+
102
+ def action_voice_input(self) -> None:
103
+ """Keep OS dictation in the editable composer, with platform guidance."""
104
+ import sys
105
+ from rich.text import Text
106
+ from textual.widgets import Static
107
+ from superqode.app.constants import THEME
108
+
109
+ if getattr(self, "is_busy", False):
110
+ self.notify(
111
+ "Wait for the current run to finish before dictating.", title="OS Dictation"
112
+ )
113
+ return
114
+ if sys.platform == "darwin":
115
+ hint = "Use your Dictation shortcut · Enable in System Settings → Keyboard → Dictation"
116
+ elif sys.platform == "win32":
117
+ hint = "Press Win+H to start Windows voice typing"
118
+ else:
119
+ hint = "Use your desktop dictation tool to insert text into this terminal"
120
+ panel = self.query_one("#dictation-guide", Static)
121
+ text = Text("◉ OS Dictation ", style=THEME["purple"])
122
+ text.append(hint, style=THEME["text"])
123
+ text.append(
124
+ "\nEdit your words, then Enter to send · :voice off to hide", style=THEME["muted"]
125
+ )
126
+ panel.update(text)
127
+ panel.add_class("visible")
128
+ if self._vim_enabled():
129
+ self._set_vim_state("insert")
130
+ self._ensure_input_focus()
131
+
94
132
  def action_open_editor(self):
95
133
  """Open external editor for composing message (Ctrl+E)."""
96
134
  log = self.query_one("#log", ConversationLog)
@@ -254,10 +292,31 @@ class MiscActionsMixin:
254
292
  """
255
293
  from superqode.app.inputs import SelectionAwareInput
256
294
 
295
+ from superqode.sidebar import CollapsibleSidebar
296
+
297
+ focused = getattr(self, "focused", None)
298
+ if focused is not None:
299
+ sidebar = next(
300
+ (
301
+ node
302
+ for node in focused.ancestors_with_self
303
+ if isinstance(node, CollapsibleSidebar)
304
+ ),
305
+ None,
306
+ )
307
+ if sidebar is not None:
308
+ sidebar.action_toggle_search()
309
+ return
310
+
257
311
  try:
258
312
  prompt_input = self.query_one("#prompt-input", SelectionAwareInput)
259
313
  except Exception:
260
314
  return
315
+ draft = prompt_input.value
316
+ if draft.strip() and not draft.startswith(":search "):
317
+ if not hasattr(self, "_draft_stash"):
318
+ self._draft_stash = []
319
+ self._draft_stash.append(draft)
261
320
  prompt_input.value = ":search "
262
321
  prompt_input.cursor_position = len(prompt_input.value)
263
322
  prompt_input.focus()
@@ -453,6 +453,10 @@ class AgentRunMixin:
453
453
  from superqode.providers.gateway.base import Message
454
454
  from superqode.providers.gateway.litellm_gateway import LiteLLMGateway
455
455
 
456
+ images = getattr(self, "_current_images", [])
457
+ self._current_images = []
458
+ history = getattr(self, "_chat_history", [])
459
+
456
460
  try:
457
461
  provider = self._pure_mode.session.provider
458
462
  model = self._pure_mode.session.model
@@ -461,11 +465,14 @@ class AgentRunMixin:
461
465
  log.add_error,
462
466
  "No model is selected. Reconnect with :connect local before chatting.",
463
467
  )
468
+ self._call_ui(self._restore_image_input, images)
464
469
  return
465
470
  history = self._chat_history
466
471
  if not isinstance(history, list):
467
472
  history = self._chat_history = []
468
- history.append(Message(role="user", content=text))
473
+ from superqode.image_input import image_message
474
+
475
+ history.append(Message(role="user", content=image_message(text, images)))
469
476
  who = f"{provider}/{model}"
470
477
  self._call_ui(lambda: log.reset_response_stream(who))
471
478
 
@@ -520,6 +527,7 @@ class AgentRunMixin:
520
527
  "and not an embedding-only model."
521
528
  )
522
529
  self._call_ui(log.add_info, note)
530
+ self._call_ui(self._restore_image_input, images)
523
531
  return
524
532
  self._call_ui(lambda: log.write_final_response(full, agent=who))
525
533
 
@@ -529,6 +537,10 @@ class AgentRunMixin:
529
537
  tps = (tokens / decode_dur) if decode_dur and decode_dur > 0 else None
530
538
  self._call_ui(self._write_chat_stats, log, ttft, tps, tokens, end_t - t0)
531
539
  except Exception as exc: # noqa: BLE001 - surface any model/transport error
540
+ if images:
541
+ self._call_ui(self._restore_image_input, images)
542
+ if history and history[-1].role == "user":
543
+ history.pop()
532
544
  self._call_ui(log.add_error, f"Chat error: {exc}")
533
545
  finally:
534
546
  # Stops the indicator + scanning waves and restores the prompt.
@@ -540,6 +552,9 @@ class AgentRunMixin:
540
552
  from time import monotonic
541
553
  import traceback
542
554
 
555
+ images = getattr(self, "_current_images", [])
556
+ self._current_images = []
557
+
543
558
  # Handle session commands
544
559
  if text.strip().startswith("/sessions"):
545
560
  parts = text.strip().split(maxsplit=2)
@@ -594,12 +609,14 @@ class AgentRunMixin:
594
609
  log.add_error("Not connected to a model. Use :connect byok to select a provider/model.")
595
610
  log.add_system("Example: :connect local ollama/qwen3.6:35b-a3b")
596
611
  self.is_busy = False
612
+ self._restore_image_input(images)
597
613
  return
598
614
 
599
615
  if not self._pure_mode.session.connected:
600
616
  log.add_error("Connection not established. Please reconnect using :connect byok")
601
617
  log.add_system("Example: :connect local ollama/qwen3.6:35b-a3b")
602
618
  self.is_busy = False
619
+ self._restore_image_input(images)
603
620
  return
604
621
 
605
622
  # A builtin AgentLoop (._agent), a harness, OR a self-contained runtime
@@ -612,6 +629,7 @@ class AgentRunMixin:
612
629
  log.add_error("Agent not initialized. Please reconnect using :connect byok")
613
630
  log.add_system("Example: :connect local ollama/qwen3.6:35b-a3b")
614
631
  self.is_busy = False
632
+ self._restore_image_input(images)
615
633
  return
616
634
 
617
635
  provider = self._pure_mode.session.provider
@@ -946,8 +964,11 @@ class AgentRunMixin:
946
964
  last_display_time = time.time()
947
965
 
948
966
  try:
967
+ image_kwargs = {}
968
+ if images:
969
+ image_kwargs["images"] = images
949
970
  async for chunk in self._pure_mode.run_streaming(
950
- text, plan_mode=plan_mode_for_run
971
+ text, plan_mode=plan_mode_for_run, **image_kwargs
951
972
  ):
952
973
  if getattr(self, "_cancel_requested", False) or getattr(
953
974
  self._pure_mode, "_cancel_requested", False
@@ -979,6 +1000,11 @@ class AgentRunMixin:
979
1000
  accumulated_chunk = ""
980
1001
  last_display_time = current_time
981
1002
 
1003
+ image_error = getattr(
1004
+ getattr(self._pure_mode, "_agent", None), "last_stream_error", ""
1005
+ )
1006
+ if images and image_error:
1007
+ raise ValueError(image_error)
982
1008
  if accumulated_chunk:
983
1009
  _safe_call(log.add_response_chunk, accumulated_chunk)
984
1010
  finally:
@@ -1017,6 +1043,7 @@ class AgentRunMixin:
1017
1043
  if is_local:
1018
1044
  self._stop_thinking()
1019
1045
  self._stop_stream_animation()
1046
+ self._restore_image_input(images)
1020
1047
  self._show_error_card(
1021
1048
  log,
1022
1049
  f"{error_type} while running agent",
@@ -1297,6 +1324,7 @@ class AgentRunMixin:
1297
1324
  self._stop_thinking()
1298
1325
  self._stop_stream_animation()
1299
1326
  self.is_busy = False
1327
+ self._restore_image_input(images)
1300
1328
  error_msg = str(e)
1301
1329
  error_trace = traceback.format_exc()
1302
1330
 
@@ -1532,6 +1560,17 @@ class AgentRunMixin:
1532
1560
  )
1533
1561
  return
1534
1562
 
1563
+ if getattr(self, "_current_images", []):
1564
+ images = self._current_images
1565
+ self._current_images = []
1566
+ self._call_ui(self._restore_image_input, images)
1567
+ self._call_ui(
1568
+ log.add_error,
1569
+ "This runtime does not support image input. Use built-in coding, direct Chat, or an image-capable ACP agent.",
1570
+ )
1571
+ self._call_ui(self._stop_thinking)
1572
+ return
1573
+
1535
1574
  try:
1536
1575
  start_time = monotonic()
1537
1576
 
@@ -1852,6 +1891,9 @@ class AgentRunMixin:
1852
1891
 
1853
1892
  from superqode.acp.client import ACPClient
1854
1893
 
1894
+ images = getattr(self, "_current_images", [])
1895
+ self._current_images = []
1896
+
1855
1897
  # Prepend file context if available (from @file references)
1856
1898
  file_context = getattr(self, "_current_file_context", "")
1857
1899
  if file_context:
@@ -2015,6 +2057,20 @@ class AgentRunMixin:
2015
2057
  # Closed/Open key paths set this at :connect time. Merge last so the
2016
2058
  # child sees the resolved key; never setdefault into SuperQode's env.
2017
2059
  # Only the agent the key was resolved for receives it.
2060
+ selected_agent = getattr(get_session(), "connected_agent", None) or {}
2061
+ override_name = f"SUPERQODE_{agent_type.upper().replace('-', '_')}_ACP_COMMAND"
2062
+ if (
2063
+ isinstance(selected_agent, dict)
2064
+ and (
2065
+ selected_agent.get("user_defined")
2066
+ or (
2067
+ selected_agent.get("registry_source") == "official-registry"
2068
+ and agent_type not in {"prime-agent", "prime"}
2069
+ )
2070
+ )
2071
+ and not os.getenv(override_name)
2072
+ ):
2073
+ command = selected_agent.get("run_command", {}).get("*", "") or command
2018
2074
  acp_extra_env = self._merge_acp_session_extra_env(agent_type, acp_extra_env)
2019
2075
 
2020
2076
  mode_label = {"auto": "🟢 AUTO", "ask": "🟡 ASK", "deny": "🔴 DENY"}.get(
@@ -2671,7 +2727,8 @@ class AgentRunMixin:
2671
2727
  self._call_ui(log.add_meta, "ACP session ready. Sending prompt...", "⚡")
2672
2728
 
2673
2729
  async def send_and_wait() -> str | None:
2674
- prompt_task = asyncio.create_task(client.send_prompt(message))
2730
+ image_kwargs = {"images": images} if images else {}
2731
+ prompt_task = asyncio.create_task(client.send_prompt(message, **image_kwargs))
2675
2732
  prompt_started_at = time.monotonic()
2676
2733
  waiting_notice_sent = False
2677
2734
 
@@ -2825,6 +2882,7 @@ class AgentRunMixin:
2825
2882
  self._agent_process = None
2826
2883
  self._acp_client = None
2827
2884
  self._acp_client_key = None
2885
+ self._call_ui(self._restore_image_input, images)
2828
2886
  self._call_ui(self._stop_thinking)
2829
2887
  self._call_ui(self._stop_stream_animation)
2830
2888
  self._call_ui(
@@ -2836,6 +2894,7 @@ class AgentRunMixin:
2836
2894
  self._agent_process = None
2837
2895
  self._acp_client = None
2838
2896
  self._acp_client_key = None
2897
+ self._call_ui(self._restore_image_input, images)
2839
2898
  self._call_ui(self._stop_thinking)
2840
2899
  self._call_ui(self._stop_stream_animation)
2841
2900
  self._call_ui(