superqode 2.3.2__tar.gz → 2.4.1__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 (1073) hide show
  1. {superqode-2.3.2 → superqode-2.4.1}/CHANGELOG.md +86 -1
  2. {superqode-2.3.2 → superqode-2.4.1}/MANIFEST.in +1 -0
  3. {superqode-2.3.2 → superqode-2.4.1}/PKG-INFO +2 -1
  4. superqode-2.4.1/examples/harnesses/systemone-factory-route.yaml +12 -0
  5. superqode-2.4.1/examples/harnesses/systemone-ticket-triage.yaml +13 -0
  6. superqode-2.4.1/examples/harnesses/systemone-tool-gate.yaml +16 -0
  7. superqode-2.4.1/examples/systemone/rubric-eval.yaml +9 -0
  8. superqode-2.4.1/examples/systemone/ticket-triage-pack.yaml +30 -0
  9. {superqode-2.3.2 → superqode-2.4.1}/pyproject.toml +5 -1
  10. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/__init__.py +1 -1
  11. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/loop.py +59 -6
  12. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/rubric.py +64 -10
  13. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/constants.py +7 -0
  14. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/connect.py +26 -1
  15. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/dialogs.py +7 -2
  16. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_permissions.py +3 -0
  17. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helpers.py +4 -1
  18. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/slash_commands.py +171 -1
  19. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/welcome.py +1 -1
  20. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/widgets.py +152 -107
  21. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/__init__.py +2 -0
  22. superqode-2.4.1/src/superqode/commands/harness/systemone.py +37 -0
  23. superqode-2.4.1/src/superqode/data/eval_packs/decision-routing.yaml +41 -0
  24. superqode-2.4.1/src/superqode/data/eval_packs/decision-tool-gate.yaml +41 -0
  25. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/__init__.py +2 -0
  26. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/base.py +2 -0
  27. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/registry.py +12 -1
  28. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/runtime.py +4 -0
  29. superqode-2.4.1/src/superqode/harness/backends/systemone.py +114 -0
  30. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/eval.py +31 -7
  31. superqode-2.4.1/src/superqode/harness/evaluators.py +102 -0
  32. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/loader.py +99 -0
  33. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/spec.py +29 -0
  34. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/headless.py +9 -1
  35. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/main.py +7 -0
  36. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/connection_profiles.py +31 -0
  37. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pure_mode.py +38 -1
  38. superqode-2.4.1/src/superqode/rendering/systemone.py +77 -0
  39. superqode-2.4.1/src/superqode/systemone/__init__.py +68 -0
  40. superqode-2.4.1/src/superqode/systemone/audit.py +158 -0
  41. superqode-2.4.1/src/superqode/systemone/client.py +165 -0
  42. superqode-2.4.1/src/superqode/systemone/compose.py +230 -0
  43. superqode-2.4.1/src/superqode/systemone/config.py +180 -0
  44. superqode-2.4.1/src/superqode/systemone/decision.py +90 -0
  45. superqode-2.4.1/src/superqode/systemone/live.py +182 -0
  46. superqode-2.4.1/src/superqode/systemone/pack.py +145 -0
  47. superqode-2.4.1/src/superqode/systemone/packs/factory_route.yaml +44 -0
  48. superqode-2.4.1/src/superqode/systemone/packs/rubric.yaml +27 -0
  49. superqode-2.4.1/src/superqode/systemone/packs/tool_gate.yaml +97 -0
  50. superqode-2.4.1/src/superqode/systemone/runtime.py +233 -0
  51. superqode-2.4.1/src/superqode/systemone/state.py +136 -0
  52. superqode-2.4.1/src/superqode/systemone/types.py +304 -0
  53. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/env_policy.py +6 -1
  54. {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/PKG-INFO +2 -1
  55. {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/SOURCES.txt +37 -0
  56. {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/requires.txt +1 -0
  57. {superqode-2.3.2 → superqode-2.4.1}/tests/test_cli_contract.py +4 -1
  58. {superqode-2.3.2 → superqode-2.4.1}/tests/test_connect_harness_screen.py +112 -0
  59. {superqode-2.3.2 → superqode-2.4.1}/tests/test_connection_profiles.py +3 -0
  60. superqode-2.4.1/tests/test_decision_evaluators.py +168 -0
  61. {superqode-2.3.2 → superqode-2.4.1}/tests/test_final_parity_wave.py +3 -3
  62. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_backends.py +1 -0
  63. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_examples.py +5 -1
  64. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_spec.py +46 -0
  65. {superqode-2.3.2 → superqode-2.4.1}/tests/test_install_script.py +9 -1
  66. superqode-2.4.1/tests/test_systemone_audit.py +99 -0
  67. superqode-2.4.1/tests/test_systemone_decision.py +104 -0
  68. superqode-2.4.1/tests/test_systemone_general.py +236 -0
  69. superqode-2.4.1/tests/test_systemone_live.py +74 -0
  70. superqode-2.4.1/tests/test_systemone_live_recorded.py +103 -0
  71. superqode-2.4.1/tests/test_systemone_loop.py +256 -0
  72. superqode-2.4.1/tests/test_systemone_regressions.py +166 -0
  73. superqode-2.4.1/tests/test_systemone_state.py +36 -0
  74. superqode-2.4.1/tests/test_systemone_stub.py +91 -0
  75. superqode-2.4.1/tests/test_systemone_tool_gate.py +173 -0
  76. superqode-2.4.1/tests/test_systemone_types.py +106 -0
  77. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_change_summary.py +50 -0
  78. {superqode-2.3.2 → superqode-2.4.1}/LICENSE +0 -0
  79. {superqode-2.3.2 → superqode-2.4.1}/NOTICE +0 -0
  80. {superqode-2.3.2 → superqode-2.4.1}/README.md +0 -0
  81. {superqode-2.3.2 → superqode-2.4.1}/examples/README.md +0 -0
  82. {superqode-2.3.2 → superqode-2.4.1}/examples/a2a/README.md +0 -0
  83. {superqode-2.3.2 → superqode-2.4.1}/examples/a2a/smoke_client.py +0 -0
  84. {superqode-2.3.2 → superqode-2.4.1}/examples/bench/dspy-comprehension.manifest.yaml +0 -0
  85. {superqode-2.3.2 → superqode-2.4.1}/examples/bench/dspy-comprehension.yaml +0 -0
  86. {superqode-2.3.2 → superqode-2.4.1}/examples/bench/spec-core.yaml +0 -0
  87. {superqode-2.3.2 → superqode-2.4.1}/examples/bench/spec-deepagents.yaml +0 -0
  88. {superqode-2.3.2 → superqode-2.4.1}/examples/bench/spec-prime-agent.yaml +0 -0
  89. {superqode-2.3.2 → superqode-2.4.1}/examples/byok-acp-team.yaml +0 -0
  90. {superqode-2.3.2 → superqode-2.4.1}/examples/codex_sdk_quickstart.py +0 -0
  91. {superqode-2.3.2 → superqode-2.4.1}/examples/evals/omni-release.yaml +0 -0
  92. {superqode-2.3.2 → superqode-2.4.1}/examples/evals/omni-tiny.yaml +0 -0
  93. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/README.md +0 -0
  94. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/manifest-guard/context.md +0 -0
  95. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/manifest-guard/hooks.py +0 -0
  96. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/manifest-guard/tools.py +0 -0
  97. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/README.md +0 -0
  98. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/broken-extension/src/superqode_example_broken/__init__.py +0 -0
  99. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/policy-extension/src/superqode_example_policy/__init__.py +0 -0
  100. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/skill-extension/src/superqode_example_skill/SKILL.md +0 -0
  101. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/skill-extension/src/superqode_example_skill/__init__.py +0 -0
  102. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/tool-extension/src/superqode_example_tool/__init__.py +0 -0
  103. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/tool-extension-v2/src/superqode_example_tool/__init__.py +0 -0
  104. {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/python-package/src/superqode_example_extension/__init__.py +0 -0
  105. {superqode-2.3.2 → superqode-2.4.1}/examples/harness-packages/README.md +0 -0
  106. {superqode-2.3.2 → superqode-2.4.1}/examples/harness-packages/hello-harness/src/superqode_hello_harness/__init__.py +0 -0
  107. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/coding.yaml +0 -0
  108. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/deepagents.yaml +0 -0
  109. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/deepseek-harness.yaml +0 -0
  110. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/ds4.yaml +0 -0
  111. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/gemma4.yaml +0 -0
  112. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/google-adk.yaml +0 -0
  113. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/local-recursive-dynamic.yaml +0 -0
  114. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/mcp-docs.yaml +0 -0
  115. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/no-tool.yaml +0 -0
  116. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/omni-tiny-local.yaml +0 -0
  117. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/omnigent-multi-agent.yaml +0 -0
  118. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/openai-agents.yaml +0 -0
  119. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/prime-agent.yaml +0 -0
  120. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/pydanticai.yaml +0 -0
  121. {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/rlm-code-lid.yaml +0 -0
  122. {superqode-2.3.2 → superqode-2.4.1}/examples/local-models-team.yaml +0 -0
  123. {superqode-2.3.2 → superqode-2.4.1}/examples/mcp/local_docs_server.py +0 -0
  124. {superqode-2.3.2 → superqode-2.4.1}/examples/omnigent-multi-agent.agent.yaml +0 -0
  125. {superqode-2.3.2 → superqode-2.4.1}/examples/qm-deployment-layer/README.md +0 -0
  126. {superqode-2.3.2 → superqode-2.4.1}/examples/qm-deployment-layer/sandbox/skills/superqode-harness/SKILL.md +0 -0
  127. {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/INCIDENT.md +0 -0
  128. {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/README.md +0 -0
  129. {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/RUNBOOK.md +0 -0
  130. {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/deploy_audit/__init__.py +0 -0
  131. {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/deploy_audit/parser.py +0 -0
  132. {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/deploy_audit/report.py +0 -0
  133. {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/rlm-docker.yaml +0 -0
  134. {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/rlm-monty.yaml +0 -0
  135. {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/tests/test_report.py +0 -0
  136. {superqode-2.3.2 → superqode-2.4.1}/examples/simple-team.yaml +0 -0
  137. {superqode-2.3.2 → superqode-2.4.1}/scripts/check_release_metadata.py +0 -0
  138. {superqode-2.3.2 → superqode-2.4.1}/setup.cfg +0 -0
  139. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/__init__.py +0 -0
  140. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/client.py +0 -0
  141. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/conformance.py +0 -0
  142. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/connection.py +0 -0
  143. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/context.py +0 -0
  144. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/inspect.py +0 -0
  145. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/keys.py +0 -0
  146. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/limits.py +0 -0
  147. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/oauth.py +0 -0
  148. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/presets.py +0 -0
  149. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/registry.py +0 -0
  150. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/reply.py +0 -0
  151. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/security.py +0 -0
  152. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/server.py +0 -0
  153. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/shortlist.py +0 -0
  154. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/skills.py +0 -0
  155. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/tools.py +0 -0
  156. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/trust.py +0 -0
  157. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/types.py +0 -0
  158. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/understand.py +0 -0
  159. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/workflows.py +0 -0
  160. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/__init__.py +0 -0
  161. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/client.py +0 -0
  162. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/doctor.py +0 -0
  163. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/permission_screen.py +0 -0
  164. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/permission_store.py +0 -0
  165. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/render.py +0 -0
  166. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/server.py +0 -0
  167. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/session_store.py +0 -0
  168. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/slash.py +0 -0
  169. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/tool_call_context.py +0 -0
  170. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/types.py +0 -0
  171. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp_discovery.py +0 -0
  172. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/__init__.py +0 -0
  173. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/auto_memory.py +0 -0
  174. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/command_safety.py +0 -0
  175. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/compaction.py +0 -0
  176. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/context_manager.py +0 -0
  177. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/edit_strategies.py +0 -0
  178. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/exec_policy.py +0 -0
  179. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/hooks.py +0 -0
  180. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/loop_guard.py +0 -0
  181. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/loop_policy.py +0 -0
  182. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/network_policy.py +0 -0
  183. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/output_handler.py +0 -0
  184. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/parallel_compare.py +0 -0
  185. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/peer_agents.py +0 -0
  186. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/plan_mode.py +0 -0
  187. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/reminders.py +0 -0
  188. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/session_manager.py +0 -0
  189. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/structured_output.py +0 -0
  190. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/summarization.py +0 -0
  191. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/system_prompts.py +0 -0
  192. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/terminal_output_limits.py +0 -0
  193. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/text_tool_calls.py +0 -0
  194. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/tool_args.py +0 -0
  195. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/tool_tracking.py +0 -0
  196. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/utility_model.py +0 -0
  197. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent_output.py +0 -0
  198. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent_stream.py +0 -0
  199. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/__init__.py +0 -0
  200. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/acp_registry.py +0 -0
  201. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/client.py +0 -0
  202. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/agentpool.phil65.github.io.toml +0 -0
  203. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/ampcode.com.toml +0 -0
  204. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/augmentcode.com.toml +0 -0
  205. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/autodev.github.io.toml +0 -0
  206. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/blackbox.ai.toml +0 -0
  207. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/bub.dev.toml +0 -0
  208. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/cagent.dev.toml +0 -0
  209. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/claude.com.toml +0 -0
  210. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/cline.bot.toml +0 -0
  211. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
  212. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/codebuddy.tencent.com.toml +0 -0
  213. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/codex.openai.com.toml +0 -0
  214. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/copilot.github.com.toml +0 -0
  215. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/cortex.snowflake.com.toml +0 -0
  216. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/crow-ai.dev.toml +0 -0
  217. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/cursor.com.toml +0 -0
  218. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/deepagents-code.langchain.com.toml +0 -0
  219. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/deepagents.langchain.com.toml +0 -0
  220. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/devin.ai.toml +0 -0
  221. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/dirac.run.toml +0 -0
  222. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/factory.ai.toml +0 -0
  223. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/fastagent.ai.toml +0 -0
  224. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/fount.dev.toml +0 -0
  225. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/fx.sh.toml +0 -0
  226. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/geminicli.com.toml +0 -0
  227. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/glm.z.ai.toml +0 -0
  228. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
  229. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/harnlang.com.toml +0 -0
  230. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/hermes-agent.nousresearch.com.toml +0 -0
  231. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
  232. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/kilo.ai.toml +0 -0
  233. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
  234. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/kiro.dev.toml +0 -0
  235. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
  236. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/minioncode.dev.toml +0 -0
  237. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/mistral-vibe.mistral.ai.toml +0 -0
  238. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/openclaw.ai.toml +0 -0
  239. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/opencode.ai.toml +0 -0
  240. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/openhands.dev.toml +0 -0
  241. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/pi.dev.toml +0 -0
  242. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/poolside.ai.toml +0 -0
  243. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/primeintellect.ai.toml +0 -0
  244. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/qoder.com.toml +0 -0
  245. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/qwenlm.github.io.toml +0 -0
  246. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/sigit.dev.toml +0 -0
  247. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/stakpak.dev.toml +0 -0
  248. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/stdiobus.dev.toml +0 -0
  249. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/vtcode.dev.toml +0 -0
  250. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/x.ai.toml +0 -0
  251. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/discovery.py +0 -0
  252. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/free_models.py +0 -0
  253. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/install_commands.py +0 -0
  254. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/messaging.py +0 -0
  255. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/official_acp.py +0 -0
  256. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/persona.py +0 -0
  257. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/registry.py +0 -0
  258. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/schema.py +0 -0
  259. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/unified.py +0 -0
  260. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/__init__.py +0 -0
  261. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/async_utils.py +0 -0
  262. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/capabilities.py +0 -0
  263. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/css.py +0 -0
  264. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/harness_picker.py +0 -0
  265. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/inputs.py +0 -0
  266. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/__init__.py +0 -0
  267. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/actions_misc.py +0 -0
  268. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/agent_run.py +0 -0
  269. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/build_harness.py +0 -0
  270. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/clickable_commands.py +0 -0
  271. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/codex.py +0 -0
  272. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/commands_impl.py +0 -0
  273. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/completion.py +0 -0
  274. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/events.py +0 -0
  275. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/explore.py +0 -0
  276. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/factory.py +0 -0
  277. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/feedback.py +0 -0
  278. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/formatting.py +0 -0
  279. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/harness_hub.py +0 -0
  280. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_clipboard.py +0 -0
  281. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_completion_helpers.py +0 -0
  282. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_diff_review.py +0 -0
  283. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_exit_lifecycle.py +0 -0
  284. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_file_view.py +0 -0
  285. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_interaction_mode.py +0 -0
  286. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_mcp_attach.py +0 -0
  287. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_message_queue.py +0 -0
  288. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_recipes_skills.py +0 -0
  289. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_share.py +0 -0
  290. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_startup.py +0 -0
  291. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_todos_plan.py +0 -0
  292. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_vim.py +0 -0
  293. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_wizard.py +0 -0
  294. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/huggingface.py +0 -0
  295. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/local_models.py +0 -0
  296. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/mcp.py +0 -0
  297. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/model_catalog.py +0 -0
  298. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/pickers.py +0 -0
  299. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/pipy_commands.py +0 -0
  300. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/rlm_commands.py +0 -0
  301. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/sidebar.py +0 -0
  302. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/switchboard.py +0 -0
  303. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/tour.py +0 -0
  304. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/models.py +0 -0
  305. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/navigation.py +0 -0
  306. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/outcomes.py +0 -0
  307. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/progress.py +0 -0
  308. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/prompt_stack.py +0 -0
  309. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/recipes.py +0 -0
  310. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/session_state.py +0 -0
  311. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/suggester.py +0 -0
  312. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/theme_bridge.py +0 -0
  313. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app_enhanced.py +0 -0
  314. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app_main.py +0 -0
  315. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/approval.py +0 -0
  316. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/atomic.py +0 -0
  317. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/auth/__init__.py +0 -0
  318. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/benchmarks.py +0 -0
  319. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/__init__.py +0 -0
  320. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/config.py +0 -0
  321. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/discord.py +0 -0
  322. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/service.py +0 -0
  323. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/slack.py +0 -0
  324. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/telegram.py +0 -0
  325. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/claude.py +0 -0
  326. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/codex.py +0 -0
  327. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/__init__.py +0 -0
  328. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/a2a.py +0 -0
  329. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/a2a_connect.py +0 -0
  330. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/a2a_keys.py +0 -0
  331. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/acp.py +0 -0
  332. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/agents.py +0 -0
  333. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/auth.py +0 -0
  334. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/benchmark.py +0 -0
  335. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/config.py +0 -0
  336. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/connect.py +0 -0
  337. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/daemon.py +0 -0
  338. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/factory.py +0 -0
  339. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/gauge.py +0 -0
  340. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/_group.py +0 -0
  341. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/_helpers.py +0 -0
  342. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/bench.py +0 -0
  343. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/candidates.py +0 -0
  344. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/evaluation.py +0 -0
  345. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/evidence.py +0 -0
  346. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/inbox.py +0 -0
  347. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/lifecycle.py +0 -0
  348. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/logbook.py +0 -0
  349. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/observability.py +0 -0
  350. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/optimization.py +0 -0
  351. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/promotion.py +0 -0
  352. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/protocol.py +0 -0
  353. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/registry.py +0 -0
  354. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/replay.py +0 -0
  355. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/run_history.py +0 -0
  356. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/worker.py +0 -0
  357. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/hub.py +0 -0
  358. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/local.py +0 -0
  359. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/memory.py +0 -0
  360. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/models.py +0 -0
  361. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/plugins.py +0 -0
  362. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/policy.py +0 -0
  363. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/profiles.py +0 -0
  364. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/providers.py +0 -0
  365. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/runtime.py +0 -0
  366. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/sandbox.py +0 -0
  367. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/serve.py +0 -0
  368. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/sessions.py +0 -0
  369. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/share.py +0 -0
  370. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/skillopt.py +0 -0
  371. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/skills.py +0 -0
  372. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/tools.py +0 -0
  373. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/trust.py +0 -0
  374. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/uhp.py +0 -0
  375. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/update.py +0 -0
  376. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/work.py +0 -0
  377. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/config/__init__.py +0 -0
  378. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/config/loader.py +0 -0
  379. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/config/schema.py +0 -0
  380. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/core/__init__.py +0 -0
  381. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/danger.py +0 -0
  382. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/eval_fixtures/ci-dynamic-root-cause.log +0 -0
  383. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/eval_fixtures/ci-root-cause.log +0 -0
  384. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/eval_packs/local_dynamic_workflow_smoke.yaml +0 -0
  385. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/eval_packs/local_recursive_smoke.yaml +0 -0
  386. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/superqode-template.yaml +0 -0
  387. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/design_system.py +0 -0
  388. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/__init__.py +0 -0
  389. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/base.py +0 -0
  390. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/model.py +0 -0
  391. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/provider.py +0 -0
  392. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/runtime.py +0 -0
  393. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/diff_view.py +0 -0
  394. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/enterprise.py +0 -0
  395. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/__init__.py +0 -0
  396. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/adapters.py +0 -0
  397. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/behaviors.py +0 -0
  398. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/engine.py +0 -0
  399. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/scenarios.py +0 -0
  400. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/__init__.py +0 -0
  401. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/linter.py +0 -0
  402. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/modes.py +0 -0
  403. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/resolver.py +0 -0
  404. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/runner.py +0 -0
  405. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/extensions.py +0 -0
  406. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/file_explorer.py +0 -0
  407. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/file_viewer.py +0 -0
  408. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/flash.py +0 -0
  409. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/gauge/__init__.py +0 -0
  410. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/gauge/levels.py +0 -0
  411. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/gauge/record.py +0 -0
  412. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/gauge/sources.py +0 -0
  413. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/governance.py +0 -0
  414. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/accelerator.py +0 -0
  415. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/agent_importer.py +0 -0
  416. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/approval_memory.py +0 -0
  417. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/__init__.py +0 -0
  418. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/deepagents.py +0 -0
  419. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/dsh.py +0 -0
  420. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/managed.py +0 -0
  421. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/pipy.py +0 -0
  422. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/prime_agent.py +0 -0
  423. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/pydanticai.py +0 -0
  424. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/rlm.py +0 -0
  425. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/rlm_code.py +0 -0
  426. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/tau.py +0 -0
  427. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/uhp.py +0 -0
  428. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/bench.py +0 -0
  429. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/catalog.py +0 -0
  430. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/compiler.py +0 -0
  431. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/conformance.py +0 -0
  432. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/context_handles.py +0 -0
  433. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/diagnostics.py +0 -0
  434. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/discovery.py +0 -0
  435. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/drift.py +0 -0
  436. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/events.py +0 -0
  437. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/explain.py +0 -0
  438. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/hooks.py +0 -0
  439. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/hub.py +0 -0
  440. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/kernel.py +0 -0
  441. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/mcp_bridge.py +0 -0
  442. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/model_policy.py +0 -0
  443. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/model_routes.py +0 -0
  444. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/observability.py +0 -0
  445. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/omni.py +0 -0
  446. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/omnigent_importer.py +0 -0
  447. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/optimize.py +0 -0
  448. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/output.py +0 -0
  449. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/permissions.py +0 -0
  450. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/pipy_adapter.py +0 -0
  451. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/pipy_extensions.py +0 -0
  452. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/promotion.py +0 -0
  453. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/protocol.py +0 -0
  454. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/protocol_adapters.py +0 -0
  455. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/protocol_controller.py +0 -0
  456. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/registry.py +0 -0
  457. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/rlm_adapter.py +0 -0
  458. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/rlm_code_adapter.py +0 -0
  459. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/sandbox.py +0 -0
  460. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/self_improve.py +0 -0
  461. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/store.py +0 -0
  462. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/tau_adapter.py +0 -0
  463. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/tau_management.py +0 -0
  464. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/templates.py +0 -0
  465. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/testing.py +0 -0
  466. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/uhp_adapter.py +0 -0
  467. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/uhp_client.py +0 -0
  468. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/uhp_server.py +0 -0
  469. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/wizard.py +0 -0
  470. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/workflow.py +0 -0
  471. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/workflow_presets.py +0 -0
  472. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/history.py +0 -0
  473. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/__init__.py +0 -0
  474. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/airplane.py +0 -0
  475. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/bench.py +0 -0
  476. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/build.py +0 -0
  477. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/code_index.py +0 -0
  478. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/devstral.yaml +0 -0
  479. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/ds4.yaml +0 -0
  480. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/gemma4.yaml +0 -0
  481. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/glm.yaml +0 -0
  482. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/gpt-oss.yaml +0 -0
  483. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/kimi.yaml +0 -0
  484. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/laguna.yaml +0 -0
  485. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/minimax.yaml +0 -0
  486. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/qwen-coder.yaml +0 -0
  487. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/qwen3.yaml +0 -0
  488. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/stack_matrix.yaml +0 -0
  489. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/doctor.py +0 -0
  490. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/engines.py +0 -0
  491. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/guardrails.py +0 -0
  492. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/hardware.py +0 -0
  493. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/inventory.py +0 -0
  494. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/labs.py +0 -0
  495. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/laguna.py +0 -0
  496. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/matrix.py +0 -0
  497. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/migrate.py +0 -0
  498. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/optimize.py +0 -0
  499. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/packs.py +0 -0
  500. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/repo.py +0 -0
  501. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/servers.py +0 -0
  502. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/setup.py +0 -0
  503. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/smoke.py +0 -0
  504. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/__init__.py +0 -0
  505. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/adapters.py +0 -0
  506. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/formatter.py +0 -0
  507. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/integration.py +0 -0
  508. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/sinks.py +0 -0
  509. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/unified_log.py +0 -0
  510. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/lsp/__init__.py +0 -0
  511. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/lsp/client.py +0 -0
  512. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/__init__.py +0 -0
  513. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/auth_storage.py +0 -0
  514. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/client.py +0 -0
  515. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/config.py +0 -0
  516. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/elicitation.py +0 -0
  517. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/harness_server.py +0 -0
  518. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/hf_auth.py +0 -0
  519. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/integration.py +0 -0
  520. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/oauth.py +0 -0
  521. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/oauth_callback.py +0 -0
  522. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/sampling.py +0 -0
  523. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/search.py +0 -0
  524. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/types.py +0 -0
  525. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/memory/__init__.py +0 -0
  526. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/memory/config.py +0 -0
  527. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/memory/providers.py +0 -0
  528. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/memory/types.py +0 -0
  529. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/notifications.py +0 -0
  530. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/permissions/__init__.py +0 -0
  531. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/permissions/rules.py +0 -0
  532. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/__init__.py +0 -0
  533. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/__init__.py +0 -0
  534. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/fake.py +0 -0
  535. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/gateway.py +0 -0
  536. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/models.py +0 -0
  537. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/transform.py +0 -0
  538. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/coding_session.py +0 -0
  539. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/compaction.py +0 -0
  540. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/config.py +0 -0
  541. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/event_stream.py +0 -0
  542. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/events.py +0 -0
  543. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/harness.py +0 -0
  544. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/harness_events.py +0 -0
  545. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/loop.py +0 -0
  546. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/messages.py +0 -0
  547. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/permissions.py +0 -0
  548. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/prompt_templates.py +0 -0
  549. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/provider_events.py +0 -0
  550. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/resources.py +0 -0
  551. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/__init__.py +0 -0
  552. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/codec.py +0 -0
  553. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/entries.py +0 -0
  554. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/jsonl.py +0 -0
  555. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/memory.py +0 -0
  556. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/repository.py +0 -0
  557. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/session.py +0 -0
  558. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/storage.py +0 -0
  559. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/signals.py +0 -0
  560. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/skills.py +0 -0
  561. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/stream.py +0 -0
  562. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/system_prompt.py +0 -0
  563. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/__init__.py +0 -0
  564. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/base.py +0 -0
  565. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/edit_diff.py +0 -0
  566. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/files.py +0 -0
  567. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/paths.py +0 -0
  568. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/registry.py +0 -0
  569. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/search.py +0 -0
  570. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/shell.py +0 -0
  571. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/truncate.py +0 -0
  572. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/types.py +0 -0
  573. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/validation.py +0 -0
  574. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/plan.py +0 -0
  575. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/platform_locks.py +0 -0
  576. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/plugins.py +0 -0
  577. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/project_trust.py +0 -0
  578. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/__init__.py +0 -0
  579. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/_builtin_profiles.py +0 -0
  580. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/acp_free_models.py +0 -0
  581. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/acp_models.py +0 -0
  582. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/acp_registry.py +0 -0
  583. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/apple_fm.py +0 -0
  584. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/catalog.py +0 -0
  585. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/copilot_auth.py +0 -0
  586. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/credentials.py +0 -0
  587. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/dynamic.py +0 -0
  588. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/env_introspect.py +0 -0
  589. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/free_inference.py +0 -0
  590. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/__init__.py +0 -0
  591. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/base.py +0 -0
  592. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/litellm_gateway.py +0 -0
  593. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
  594. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/synthetic.py +0 -0
  595. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/grok_cli_auth.py +0 -0
  596. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/harness_catalog.py +0 -0
  597. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/health.py +0 -0
  598. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/__init__.py +0 -0
  599. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/convert.py +0 -0
  600. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/downloader.py +0 -0
  601. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/endpoints.py +0 -0
  602. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/fetch.py +0 -0
  603. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/hub.py +0 -0
  604. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/inference.py +0 -0
  605. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
  606. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/live_models.py +0 -0
  607. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/__init__.py +0 -0
  608. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/_mlx_worker.py +0 -0
  609. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/base.py +0 -0
  610. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/capabilities.py +0 -0
  611. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/context_probe.py +0 -0
  612. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/discovery.py +0 -0
  613. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/ds4.py +0 -0
  614. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/lmstudio.py +0 -0
  615. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/mlx.py +0 -0
  616. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/mlx_engine.py +0 -0
  617. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/mlx_tools.py +0 -0
  618. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/ollama.py +0 -0
  619. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/sglang.py +0 -0
  620. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/smoke.py +0 -0
  621. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/tgi.py +0 -0
  622. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/tool_support.py +0 -0
  623. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/vllm.py +0 -0
  624. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/manager.py +0 -0
  625. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/model_specs.py +0 -0
  626. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/models.py +0 -0
  627. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/models_dev.py +0 -0
  628. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/opencode_models.py +0 -0
  629. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/__init__.py +0 -0
  630. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
  631. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/converters/messages.py +0 -0
  632. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/converters/tools.py +0 -0
  633. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
  634. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/schema/models.py +0 -0
  635. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
  636. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
  637. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
  638. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
  639. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
  640. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
  641. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
  642. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/prime_agent.py +0 -0
  643. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/profiles.py +0 -0
  644. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/recommendations.py +0 -0
  645. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/registry.py +0 -0
  646. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/subscription_env.py +0 -0
  647. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/subscription_login.py +0 -0
  648. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/uhp.py +0 -0
  649. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/usage.py +0 -0
  650. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/py.typed +0 -0
  651. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rendering/__init__.py +0 -0
  652. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rendering/html_export.py +0 -0
  653. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rendering/markdown.py +0 -0
  654. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rendering/transcript_export.py +0 -0
  655. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/__init__.py +0 -0
  656. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/coding_session.py +0 -0
  657. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/config.py +0 -0
  658. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/context.py +0 -0
  659. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/identity.py +0 -0
  660. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel.py +0 -0
  661. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel_backend.py +0 -0
  662. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel_docker.py +0 -0
  663. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel_monty.py +0 -0
  664. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel_server.py +0 -0
  665. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/policy.py +0 -0
  666. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/root_runtime.py +0 -0
  667. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/root_worker.py +0 -0
  668. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/sandbox.py +0 -0
  669. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/subcalls.py +0 -0
  670. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/supervisor.py +0 -0
  671. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/worker.py +0 -0
  672. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/worker_process.py +0 -0
  673. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/__init__.py +0 -0
  674. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/adk.py +0 -0
  675. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/antigravity_cli.py +0 -0
  676. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/antigravity_managed.py +0 -0
  677. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/antigravity_sdk.py +0 -0
  678. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/antigravity_status.py +0 -0
  679. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/base.py +0 -0
  680. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/builtin.py +0 -0
  681. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/claude_agent_sdk.py +0 -0
  682. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/codex_sdk.py +0 -0
  683. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/copilot_sdk.py +0 -0
  684. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/devin_cli.py +0 -0
  685. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/devin_status.py +0 -0
  686. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/errors.py +0 -0
  687. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/openai_agents.py +0 -0
  688. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/openai_sandbox.py +0 -0
  689. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/openai_session.py +0 -0
  690. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/pydanticai.py +0 -0
  691. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/registry.py +0 -0
  692. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/tool_bridge.py +0 -0
  693. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/tool_bridge_openai.py +0 -0
  694. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/tool_bridge_pydanticai.py +0 -0
  695. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/vendor_cli.py +0 -0
  696. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/safety/__init__.py +0 -0
  697. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/safety/sandbox.py +0 -0
  698. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/safety/warnings.py +0 -0
  699. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sandbox/__init__.py +0 -0
  700. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sandbox/backends.py +0 -0
  701. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sandbox/execution.py +0 -0
  702. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sandbox/local_sandbox.py +0 -0
  703. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/search_registry.py +0 -0
  704. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/server/__init__.py +0 -0
  705. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/server/api.py +0 -0
  706. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/server/web.py +0 -0
  707. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/__init__.py +0 -0
  708. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/factory.py +0 -0
  709. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/persistence.py +0 -0
  710. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/share_artifacts.py +0 -0
  711. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/sharing.py +0 -0
  712. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/switchboard.py +0 -0
  713. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session.py +0 -0
  714. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sidebar.py +0 -0
  715. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/skillopt.py +0 -0
  716. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/skills.py +0 -0
  717. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/stream_view.py +0 -0
  718. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/styles/__init__.py +0 -0
  719. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tool_call.py +0 -0
  720. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/__init__.py +0 -0
  721. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/agent_tools.py +0 -0
  722. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/apply_patch.py +0 -0
  723. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/base.py +0 -0
  724. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/batch_tool.py +0 -0
  725. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/compact_tool.py +0 -0
  726. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/context_handle.py +0 -0
  727. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/context_tools.py +0 -0
  728. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/core_tools.py +0 -0
  729. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/diagnostics.py +0 -0
  730. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/diff_utils.py +0 -0
  731. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/display.py +0 -0
  732. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/dynamic_workflow.py +0 -0
  733. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/edit_tools.py +0 -0
  734. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/enhanced_base.py +0 -0
  735. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/file_tools.py +0 -0
  736. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/file_tracking.py +0 -0
  737. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/governed.py +0 -0
  738. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/harness_agent_session.py +0 -0
  739. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/image_tools.py +0 -0
  740. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/lsp_tools.py +0 -0
  741. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/mcp_tools.py +0 -0
  742. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/monty_tool.py +0 -0
  743. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/network_tools.py +0 -0
  744. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/output_spill.py +0 -0
  745. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/peer_agent_tools.py +0 -0
  746. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/permissions.py +0 -0
  747. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/post_edit.py +0 -0
  748. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/question_tool.py +0 -0
  749. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/request_permissions_tool.py +0 -0
  750. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/search_tools.py +0 -0
  751. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/semantic_search.py +0 -0
  752. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/shell_session.py +0 -0
  753. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/shell_tools.py +0 -0
  754. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/skill_tools.py +0 -0
  755. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/spawn_harness.py +0 -0
  756. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/todo_tools.py +0 -0
  757. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/tool_search.py +0 -0
  758. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/validation.py +0 -0
  759. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/web_tools.py +0 -0
  760. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_integration.py +0 -0
  761. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_widgets/__init__.py +0 -0
  762. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
  763. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_widgets/widgets/progress.py +0 -0
  764. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
  765. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/undo_manager.py +0 -0
  766. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/utils/__init__.py +0 -0
  767. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/utils/error_handling.py +0 -0
  768. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/utils/fuzzy.py +0 -0
  769. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/__init__.py +0 -0
  770. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/a2a_connect.py +0 -0
  771. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/agent_store.py +0 -0
  772. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/agent_switcher.py +0 -0
  773. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/animation_manager.py +0 -0
  774. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/code_context.py +0 -0
  775. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/command_palette.py +0 -0
  776. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/connection_status.py +0 -0
  777. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/conversation_history.py +0 -0
  778. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/diff_indicator.py +0 -0
  779. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/enhanced_status_bar.py +0 -0
  780. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/enhanced_toast.py +0 -0
  781. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/file_browser.py +0 -0
  782. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/file_reference.py +0 -0
  783. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/harness_hub.py +0 -0
  784. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/leader_key.py +0 -0
  785. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/mode_switcher.py +0 -0
  786. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/model_picker.py +0 -0
  787. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/outcome_screen.py +0 -0
  788. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/permission_preview.py +0 -0
  789. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/prompt.py +0 -0
  790. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/provider_connect.py +0 -0
  791. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/pty_shell.py +0 -0
  792. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/resizable_sidebar.py +0 -0
  793. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/response_changes.py +0 -0
  794. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/response_display.py +0 -0
  795. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/rewind_overlay.py +0 -0
  796. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/rich_tool_display.py +0 -0
  797. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/sidebar_panels.py +0 -0
  798. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/slash_commands.py +0 -0
  799. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/slash_complete.py +0 -0
  800. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/split_view.py +0 -0
  801. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/status_bar.py +0 -0
  802. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/superqode_display.py +0 -0
  803. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/theme_picker.py +0 -0
  804. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/thinking.py +0 -0
  805. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/thinking_display.py +0 -0
  806. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/throbber.py +0 -0
  807. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/toast.py +0 -0
  808. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/uhp_connect.py +0 -0
  809. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/unified_output.py +0 -0
  810. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/__init__.py +0 -0
  811. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/cockpit.py +0 -0
  812. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/integration.py +0 -0
  813. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/models.py +0 -0
  814. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/runner.py +0 -0
  815. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/store.py +0 -0
  816. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/usage.py +0 -0
  817. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/worker.py +0 -0
  818. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/__init__.py +0 -0
  819. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/artifacts.py +0 -0
  820. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/change_summary.py +0 -0
  821. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/coordinator.py +0 -0
  822. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/diff_tracker.py +0 -0
  823. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/git_guard.py +0 -0
  824. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/git_snapshot.py +0 -0
  825. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/manager.py +0 -0
  826. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/snapshot.py +0 -0
  827. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/watcher.py +0 -0
  828. {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/worktree.py +0 -0
  829. {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/dependency_links.txt +0 -0
  830. {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/entry_points.txt +0 -0
  831. {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/top_level.txt +0 -0
  832. {superqode-2.3.2 → superqode-2.4.1}/tests/test_030_candidate.py +0 -0
  833. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_bridge.py +0 -0
  834. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_conformance.py +0 -0
  835. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_connect.py +0 -0
  836. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_context.py +0 -0
  837. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_keys.py +0 -0
  838. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_limits.py +0 -0
  839. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_oauth.py +0 -0
  840. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_security.py +0 -0
  841. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_shortlist.py +0 -0
  842. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_trust.py +0 -0
  843. {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_understand.py +0 -0
  844. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_agent_dispatch.py +0 -0
  845. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_client.py +0 -0
  846. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_free_models.py +0 -0
  847. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_parent_tool_linking.py +0 -0
  848. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_permission_store.py +0 -0
  849. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_registry.py +0 -0
  850. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_render.py +0 -0
  851. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_server.py +0 -0
  852. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_session_store.py +0 -0
  853. {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_slash.py +0 -0
  854. {superqode-2.3.2 → superqode-2.4.1}/tests/test_adaptive_compaction.py +0 -0
  855. {superqode-2.3.2 → superqode-2.4.1}/tests/test_agent_importer.py +0 -0
  856. {superqode-2.3.2 → superqode-2.4.1}/tests/test_agent_install_commands.py +0 -0
  857. {superqode-2.3.2 → superqode-2.4.1}/tests/test_agent_loop_harness.py +0 -0
  858. {superqode-2.3.2 → superqode-2.4.1}/tests/test_agent_memory.py +0 -0
  859. {superqode-2.3.2 → superqode-2.4.1}/tests/test_agents_md_compat.py +0 -0
  860. {superqode-2.3.2 → superqode-2.4.1}/tests/test_agy_tui_commands.py +0 -0
  861. {superqode-2.3.2 → superqode-2.4.1}/tests/test_app_main_contract.py +0 -0
  862. {superqode-2.3.2 → superqode-2.4.1}/tests/test_apply_patch.py +0 -0
  863. {superqode-2.3.2 → superqode-2.4.1}/tests/test_auth.py +0 -0
  864. {superqode-2.3.2 → superqode-2.4.1}/tests/test_bash_spill.py +0 -0
  865. {superqode-2.3.2 → superqode-2.4.1}/tests/test_benchmarks.py +0 -0
  866. {superqode-2.3.2 → superqode-2.4.1}/tests/test_catalog_freshness.py +0 -0
  867. {superqode-2.3.2 → superqode-2.4.1}/tests/test_change_summary.py +0 -0
  868. {superqode-2.3.2 → superqode-2.4.1}/tests/test_channels.py +0 -0
  869. {superqode-2.3.2 → superqode-2.4.1}/tests/test_cli_commands.py +0 -0
  870. {superqode-2.3.2 → superqode-2.4.1}/tests/test_cli_connect.py +0 -0
  871. {superqode-2.3.2 → superqode-2.4.1}/tests/test_cli_reference_coverage.py +0 -0
  872. {superqode-2.3.2 → superqode-2.4.1}/tests/test_clickable_commands.py +0 -0
  873. {superqode-2.3.2 → superqode-2.4.1}/tests/test_command_safety.py +0 -0
  874. {superqode-2.3.2 → superqode-2.4.1}/tests/test_commands_runtime.py +0 -0
  875. {superqode-2.3.2 → superqode-2.4.1}/tests/test_compaction.py +0 -0
  876. {superqode-2.3.2 → superqode-2.4.1}/tests/test_config_loader.py +0 -0
  877. {superqode-2.3.2 → superqode-2.4.1}/tests/test_config_runtime.py +0 -0
  878. {superqode-2.3.2 → superqode-2.4.1}/tests/test_connect_setup.py +0 -0
  879. {superqode-2.3.2 → superqode-2.4.1}/tests/test_context_handles.py +0 -0
  880. {superqode-2.3.2 → superqode-2.4.1}/tests/test_context_probe.py +0 -0
  881. {superqode-2.3.2 → superqode-2.4.1}/tests/test_context_remaining.py +0 -0
  882. {superqode-2.3.2 → superqode-2.4.1}/tests/test_copilot_login_ux.py +0 -0
  883. {superqode-2.3.2 → superqode-2.4.1}/tests/test_copilot_tui_commands.py +0 -0
  884. {superqode-2.3.2 → superqode-2.4.1}/tests/test_create_skill_tool.py +0 -0
  885. {superqode-2.3.2 → superqode-2.4.1}/tests/test_deepagents_model_spec.py +0 -0
  886. {superqode-2.3.2 → superqode-2.4.1}/tests/test_deferred_tools.py +0 -0
  887. {superqode-2.3.2 → superqode-2.4.1}/tests/test_design_system_contrast.py +0 -0
  888. {superqode-2.3.2 → superqode-2.4.1}/tests/test_developer_workflow_docs.py +0 -0
  889. {superqode-2.3.2 → superqode-2.4.1}/tests/test_ds4_local_client.py +0 -0
  890. {superqode-2.3.2 → superqode-2.4.1}/tests/test_dsh_harness.py +0 -0
  891. {superqode-2.3.2 → superqode-2.4.1}/tests/test_dynamic_workflow_tool.py +0 -0
  892. {superqode-2.3.2 → superqode-2.4.1}/tests/test_edit_line_number_strip.py +0 -0
  893. {superqode-2.3.2 → superqode-2.4.1}/tests/test_env_introspect.py +0 -0
  894. {superqode-2.3.2 → superqode-2.4.1}/tests/test_execution_resolver.py +0 -0
  895. {superqode-2.3.2 → superqode-2.4.1}/tests/test_extensions.py +0 -0
  896. {superqode-2.3.2 → superqode-2.4.1}/tests/test_free_models.py +0 -0
  897. {superqode-2.3.2 → superqode-2.4.1}/tests/test_governance.py +0 -0
  898. {superqode-2.3.2 → superqode-2.4.1}/tests/test_grok_cli_auth.py +0 -0
  899. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_agent_session.py +0 -0
  900. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_bench.py +0 -0
  901. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_bench_paths.py +0 -0
  902. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_catalog.py +0 -0
  903. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_connect_catalog.py +0 -0
  904. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_drift.py +0 -0
  905. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_eval_splits.py +0 -0
  906. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_explain.py +0 -0
  907. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_hooks.py +0 -0
  908. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_hub_catalog.py +0 -0
  909. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_hub_screen.py +0 -0
  910. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_kernel.py +0 -0
  911. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_mcp_server.py +0 -0
  912. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_model_policy.py +0 -0
  913. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_observability.py +0 -0
  914. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_omni.py +0 -0
  915. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_output.py +0 -0
  916. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_permissions.py +0 -0
  917. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_promotion.py +0 -0
  918. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_protocol.py +0 -0
  919. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_sandbox.py +0 -0
  920. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_seesaw_dimensions.py +0 -0
  921. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_self_improve.py +0 -0
  922. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_store.py +0 -0
  923. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_usage.py +0 -0
  924. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_wizard.py +0 -0
  925. {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_workflow.py +0 -0
  926. {superqode-2.3.2 → superqode-2.4.1}/tests/test_headless.py +0 -0
  927. {superqode-2.3.2 → superqode-2.4.1}/tests/test_hf_fetch.py +0 -0
  928. {superqode-2.3.2 → superqode-2.4.1}/tests/test_hooks.py +0 -0
  929. {superqode-2.3.2 → superqode-2.4.1}/tests/test_integration_docs.py +0 -0
  930. {superqode-2.3.2 → superqode-2.4.1}/tests/test_kimi_k3_provider.py +0 -0
  931. {superqode-2.3.2 → superqode-2.4.1}/tests/test_kimi_k3_routes.py +0 -0
  932. {superqode-2.3.2 → superqode-2.4.1}/tests/test_linter_runner.py +0 -0
  933. {superqode-2.3.2 → superqode-2.4.1}/tests/test_litellm_gateway.py +0 -0
  934. {superqode-2.3.2 → superqode-2.4.1}/tests/test_live_acp_registry.py +0 -0
  935. {superqode-2.3.2 → superqode-2.4.1}/tests/test_live_models.py +0 -0
  936. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_airplane.py +0 -0
  937. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_build.py +0 -0
  938. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_code_index.py +0 -0
  939. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_labs.py +0 -0
  940. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_migrate.py +0 -0
  941. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_model_optimizations.py +0 -0
  942. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_packs.py +0 -0
  943. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_sandbox.py +0 -0
  944. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_search.py +0 -0
  945. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_servers.py +0 -0
  946. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_setup.py +0 -0
  947. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_smoke.py +0 -0
  948. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_stack.py +0 -0
  949. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_tool_capabilities.py +0 -0
  950. {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_tool_support.py +0 -0
  951. {superqode-2.3.2 → superqode-2.4.1}/tests/test_login_api.py +0 -0
  952. {superqode-2.3.2 → superqode-2.4.1}/tests/test_loop_guard.py +0 -0
  953. {superqode-2.3.2 → superqode-2.4.1}/tests/test_managed_harness_backend.py +0 -0
  954. {superqode-2.3.2 → superqode-2.4.1}/tests/test_markdown_render.py +0 -0
  955. {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp.py +0 -0
  956. {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_example_server.py +0 -0
  957. {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_integration.py +0 -0
  958. {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_live.py +0 -0
  959. {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_oauth_generalized.py +0 -0
  960. {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_tools_runtime.py +0 -0
  961. {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_two_way.py +0 -0
  962. {superqode-2.3.2 → superqode-2.4.1}/tests/test_memory_recall.py +0 -0
  963. {superqode-2.3.2 → superqode-2.4.1}/tests/test_mlx_tools.py +0 -0
  964. {superqode-2.3.2 → superqode-2.4.1}/tests/test_model_profiles.py +0 -0
  965. {superqode-2.3.2 → superqode-2.4.1}/tests/test_model_specs.py +0 -0
  966. {superqode-2.3.2 → superqode-2.4.1}/tests/test_models_dev.py +0 -0
  967. {superqode-2.3.2 → superqode-2.4.1}/tests/test_monty_tool.py +0 -0
  968. {superqode-2.3.2 → superqode-2.4.1}/tests/test_navigation_history.py +0 -0
  969. {superqode-2.3.2 → superqode-2.4.1}/tests/test_network_policy.py +0 -0
  970. {superqode-2.3.2 → superqode-2.4.1}/tests/test_ollama_client.py +0 -0
  971. {superqode-2.3.2 → superqode-2.4.1}/tests/test_omnigent_agent_session_smoke.py +0 -0
  972. {superqode-2.3.2 → superqode-2.4.1}/tests/test_omnigent_importer.py +0 -0
  973. {superqode-2.3.2 → superqode-2.4.1}/tests/test_openai_session.py +0 -0
  974. {superqode-2.3.2 → superqode-2.4.1}/tests/test_output_spill.py +0 -0
  975. {superqode-2.3.2 → superqode-2.4.1}/tests/test_parallel_compare.py +0 -0
  976. {superqode-2.3.2 → superqode-2.4.1}/tests/test_peer_agents.py +0 -0
  977. {superqode-2.3.2 → superqode-2.4.1}/tests/test_plugin_hook_wiring.py +0 -0
  978. {superqode-2.3.2 → superqode-2.4.1}/tests/test_plugins.py +0 -0
  979. {superqode-2.3.2 → superqode-2.4.1}/tests/test_policies_and_turndiff.py +0 -0
  980. {superqode-2.3.2 → superqode-2.4.1}/tests/test_post_edit_verify.py +0 -0
  981. {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_agent_client.py +0 -0
  982. {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_agent_harness.py +0 -0
  983. {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_agent_provider.py +0 -0
  984. {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_command_surface.py +0 -0
  985. {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_tui_rpc.py +0 -0
  986. {superqode-2.3.2 → superqode-2.4.1}/tests/test_progressive_discovery.py +0 -0
  987. {superqode-2.3.2 → superqode-2.4.1}/tests/test_progressive_reveals.py +0 -0
  988. {superqode-2.3.2 → superqode-2.4.1}/tests/test_project_trust.py +0 -0
  989. {superqode-2.3.2 → superqode-2.4.1}/tests/test_prompt_stack.py +0 -0
  990. {superqode-2.3.2 → superqode-2.4.1}/tests/test_provider_catalog.py +0 -0
  991. {superqode-2.3.2 → superqode-2.4.1}/tests/test_provider_dynamic.py +0 -0
  992. {superqode-2.3.2 → superqode-2.4.1}/tests/test_provider_models.py +0 -0
  993. {superqode-2.3.2 → superqode-2.4.1}/tests/test_provider_recommendations.py +0 -0
  994. {superqode-2.3.2 → superqode-2.4.1}/tests/test_pure_mode_sessions.py +0 -0
  995. {superqode-2.3.2 → superqode-2.4.1}/tests/test_qm_deployment_layer.py +0 -0
  996. {superqode-2.3.2 → superqode-2.4.1}/tests/test_rate_limit_retry.py +0 -0
  997. {superqode-2.3.2 → superqode-2.4.1}/tests/test_read_tool_limits.py +0 -0
  998. {superqode-2.3.2 → superqode-2.4.1}/tests/test_reasoning_and_budget.py +0 -0
  999. {superqode-2.3.2 → superqode-2.4.1}/tests/test_recursive_eval_packs.py +0 -0
  1000. {superqode-2.3.2 → superqode-2.4.1}/tests/test_release_metadata.py +0 -0
  1001. {superqode-2.3.2 → superqode-2.4.1}/tests/test_rlm_code_integration.py +0 -0
  1002. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_adk.py +0 -0
  1003. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_antigravity_cli.py +0 -0
  1004. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_antigravity_managed.py +0 -0
  1005. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_antigravity_sdk.py +0 -0
  1006. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_builtin.py +0 -0
  1007. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_claude_agent_sdk.py +0 -0
  1008. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_codex_sdk.py +0 -0
  1009. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_copilot_sdk.py +0 -0
  1010. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_devin_cli.py +0 -0
  1011. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_dialog.py +0 -0
  1012. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_openai_agents.py +0 -0
  1013. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_openai_events.py +0 -0
  1014. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_openai_hitl.py +0 -0
  1015. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_openai_sandbox.py +0 -0
  1016. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_protocol.py +0 -0
  1017. {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_pydanticai.py +0 -0
  1018. {superqode-2.3.2 → superqode-2.4.1}/tests/test_sandbox_backends.py +0 -0
  1019. {superqode-2.3.2 → superqode-2.4.1}/tests/test_sandbox_execution.py +0 -0
  1020. {superqode-2.3.2 → superqode-2.4.1}/tests/test_search_roots.py +0 -0
  1021. {superqode-2.3.2 → superqode-2.4.1}/tests/test_semantic_search.py +0 -0
  1022. {superqode-2.3.2 → superqode-2.4.1}/tests/test_session_switchboard.py +0 -0
  1023. {superqode-2.3.2 → superqode-2.4.1}/tests/test_shell_session.py +0 -0
  1024. {superqode-2.3.2 → superqode-2.4.1}/tests/test_simple_login.py +0 -0
  1025. {superqode-2.3.2 → superqode-2.4.1}/tests/test_simple_query_fastpath.py +0 -0
  1026. {superqode-2.3.2 → superqode-2.4.1}/tests/test_skillopt.py +0 -0
  1027. {superqode-2.3.2 → superqode-2.4.1}/tests/test_slash_runtime.py +0 -0
  1028. {superqode-2.3.2 → superqode-2.4.1}/tests/test_spawn_harness_tool.py +0 -0
  1029. {superqode-2.3.2 → superqode-2.4.1}/tests/test_status_bar_layout.py +0 -0
  1030. {superqode-2.3.2 → superqode-2.4.1}/tests/test_steering_continue_reminders.py +0 -0
  1031. {superqode-2.3.2 → superqode-2.4.1}/tests/test_streaming_tool_calls.py +0 -0
  1032. {superqode-2.3.2 → superqode-2.4.1}/tests/test_subscription_billing_policy.py +0 -0
  1033. {superqode-2.3.2 → superqode-2.4.1}/tests/test_subscription_login.py +0 -0
  1034. {superqode-2.3.2 → superqode-2.4.1}/tests/test_subscription_login_consent.py +0 -0
  1035. {superqode-2.3.2 → superqode-2.4.1}/tests/test_synthetic_gateways.py +0 -0
  1036. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tau_harness_adapter.py +0 -0
  1037. {superqode-2.3.2 → superqode-2.4.1}/tests/test_terminal_output_limits.py +0 -0
  1038. {superqode-2.3.2 → superqode-2.4.1}/tests/test_theme_contrast.py +0 -0
  1039. {superqode-2.3.2 → superqode-2.4.1}/tests/test_theme_picker.py +0 -0
  1040. {superqode-2.3.2 → superqode-2.4.1}/tests/test_theme_repaint.py +0 -0
  1041. {superqode-2.3.2 → superqode-2.4.1}/tests/test_todo_tools.py +0 -0
  1042. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_args_repair.py +0 -0
  1043. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_batch_safety.py +0 -0
  1044. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_bridge.py +0 -0
  1045. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_bridge_openai.py +0 -0
  1046. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_call_repair.py +0 -0
  1047. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_output_pruning.py +0 -0
  1048. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_tracking.py +0 -0
  1049. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tools.py +0 -0
  1050. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_chat_mode.py +0 -0
  1051. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_diagnostics.py +0 -0
  1052. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_exit.py +0 -0
  1053. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_feedback.py +0 -0
  1054. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_launch_performance.py +0 -0
  1055. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_llamacpp_connect.py +0 -0
  1056. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_markdown_cleanup.py +0 -0
  1057. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_mlx_connect.py +0 -0
  1058. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_mounted.py +0 -0
  1059. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_onboarding.py +0 -0
  1060. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_smoke.py +0 -0
  1061. {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_tool_display.py +0 -0
  1062. {superqode-2.3.2 → superqode-2.4.1}/tests/test_uhp_backend.py +0 -0
  1063. {superqode-2.3.2 → superqode-2.4.1}/tests/test_uhp_client.py +0 -0
  1064. {superqode-2.3.2 → superqode-2.4.1}/tests/test_uhp_connect.py +0 -0
  1065. {superqode-2.3.2 → superqode-2.4.1}/tests/test_uhp_server.py +0 -0
  1066. {superqode-2.3.2 → superqode-2.4.1}/tests/test_update_command.py +0 -0
  1067. {superqode-2.3.2 → superqode-2.4.1}/tests/test_vendor_cli_runtime.py +0 -0
  1068. {superqode-2.3.2 → superqode-2.4.1}/tests/test_version.py +0 -0
  1069. {superqode-2.3.2 → superqode-2.4.1}/tests/test_view_image.py +0 -0
  1070. {superqode-2.3.2 → superqode-2.4.1}/tests/test_web_server_auth.py +0 -0
  1071. {superqode-2.3.2 → superqode-2.4.1}/tests/test_workorders.py +0 -0
  1072. {superqode-2.3.2 → superqode-2.4.1}/tests/test_workspace.py +0 -0
  1073. {superqode-2.3.2 → superqode-2.4.1}/tests/test_zai_provider.py +0 -0
@@ -5,7 +5,92 @@ All notable changes to SuperQode will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [2.4.1] - 2026-09-18
9
+
10
+ ### Added
11
+
12
+ - Theme-aware Jev JSON replies with highlighted decisions, key fields, numeric
13
+ values, and abstentions; System One Models on the welcome screen.
14
+ - A SystemOne model route in `:connect`, with Jev, API-key setup guidance, and
15
+ direct decision-pack sessions.
16
+ - Opt-in Jev shadow tool checks with `:systemone shadow` or
17
+ `SUPERQODE_SYSTEMONE_MODE=shadow`. Jev recommendations do not change existing
18
+ permission decisions in this mode.
19
+ - Sanitized decision traces with full typed answers, probability distributions,
20
+ confidence, policy and permission outcomes, thresholds, and truncation markers.
21
+ - Distribution diagnostics for near ties and spread, plus `harness decision-report`
22
+ for policy or explicit human-label comparisons, confidence buckets, and offline
23
+ confidence threshold sweeps. Reports do not apply thresholds or infer safety
24
+ from confidence or successful execution.
25
+
26
+ ### Fixed
27
+
28
+ - Jev decision sessions initialize provider/model and usage identity instead of
29
+ reporting unknown. The decision-session top bar shows only `SystemOne · Jev`,
30
+ omitting runtime, harness, BUILD mode, and usage details.
31
+ - Jev JSON replies open at the top of the response card. Final completion output
32
+ no longer scrolls to the bottom; the next task restores normal scrolling.
33
+
34
+ ## [2.4.0] - 2026-09-18
35
+
36
+ ### Jev integration
37
+
38
+ SuperQode 2.4.0 adds a general decision harness for Jev, native tool-permission
39
+ checks, labelled decision evaluations, and opt-in rubric grading. Coding models
40
+ continue to generate code; Jev supplies typed decisions that SuperQode validates
41
+ and applies through explicit policies.
42
+
43
+ ### Added
44
+
45
+ - **General decision harness.** The `systemone` backend evaluates reviewed
46
+ Choice, Score, and Noul question packs. Input schemas, confidence thresholds,
47
+ abstention, and pack hashes make each decision inspectable and reproducible.
48
+ Examples cover ticket triage, factory-route suggestions, and tool permissions.
49
+ - **Native tool-permission checks.** `:systemone live` enables Jev checks in
50
+ Core/BYOK sessions. Hard policy denials remain authoritative; model ASK uses
51
+ the approval flow even for otherwise auto-allowed tools. Client failures are
52
+ visible and fall back to the existing permission policy.
53
+ - **Direct decision sessions.** `:systemone connect <pack>` and
54
+ `:connect systemone <pack>` connect the TUI directly to Jev without a coding
55
+ provider. Status distinguishes a decision session from the tool-check sidecar.
56
+ - **Labelled evaluations.** `harness eval` supports exact typed output labels
57
+ and explicit evaluator results. Scorecards include coverage, accuracy among
58
+ graded cases, abstentions, errors, dataset hashes, and decision evidence.
59
+ Synthetic routing and tool-permission starter datasets include held-in and
60
+ held-out splits.
61
+ - **Rubric grading.** `SUPERQODE_RUBRIC_GRADER=systemone` uses Jev verdicts in
62
+ the native rubric revision loop. A `jev_rubric` task evaluator judges another
63
+ harness's response. Headless JSON exposes `rubric_result`.
64
+ - **Transport and observability.** Live decisions report returned model, HTTP
65
+ status, latency, and available token usage. Configurable compatible endpoints,
66
+ stub clients, sanitized recordings, and replay support development and testing.
67
+
68
+ ### Changed
69
+
70
+ - Invalid, uncertain, or unavailable rubric judgments are explicitly `ungraded`.
71
+ Utility-grader errors no longer count as `satisfied`. Headless runs with an
72
+ unsatisfied or ungraded rubric report `success: false` and exit with code 2.
73
+ - Legacy evaluation tasks retain their non-empty smoke check, now identified as
74
+ `smoke_only`. Use labelled or rubric evaluators for stronger assessment.
75
+
76
+ ### Reliability
77
+
78
+ - Tool-gate pack 1.1.0 requires low destructive and exfiltration risk before
79
+ auto-approval. Uncertain risk cannot produce ALLOW.
80
+ - Live criteria serialization matches the API contract. Evaluation deadlines
81
+ include retries, and recording failures do not discard valid decisions.
82
+ - Input redaction covers common credential fields, headers, command flags,
83
+ URL credentials, and private-key blocks. Offline policies remain respected.
84
+
85
+ ### Scope
86
+
87
+ Jev integration is opt-in and requires separate TypeSafe credentials for live
88
+ use. The native gate does not intercept external agent runtimes. Route decisions
89
+ are suggestions; automatic factory routing and automatic LLM fallback are not
90
+ included. Starter datasets are examples, not published accuracy benchmarks.
91
+
92
+ See [the Jev integration guide](docs/advanced/systemone.md) and
93
+ [2.4.0 release notes](docs/advanced/release-2.4.0.md) for setup and migration.
9
94
 
10
95
  ## [2.3.2] - 2026-09-13
11
96
 
@@ -6,3 +6,4 @@ include scripts/check_release_metadata.py
6
6
  recursive-include examples *.md *.py *.yaml
7
7
  recursive-include src/superqode/data/eval_fixtures *.log
8
8
  recursive-include src/superqode/data/eval_packs *.yaml
9
+ recursive-include src/superqode/systemone/packs *.yaml
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superqode
3
- Version: 2.3.2
3
+ Version: 2.4.1
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>
@@ -34,6 +34,7 @@ Requires-Dist: anyio>=4.0.0
34
34
  Requires-Dist: httpx>=0.28.1
35
35
  Requires-Dist: httpx-sse>=0.4.3
36
36
  Requires-Dist: jsonschema>=4.20.0
37
+ Requires-Dist: pydantic<3,>=2.0
37
38
  Requires-Dist: python-frontmatter>=1.1.0
38
39
  Requires-Dist: superopt>=0.1.1
39
40
  Requires-Dist: prime-agent-python-client<0.3.0,>=0.2.0
@@ -0,0 +1,12 @@
1
+ version: 1
2
+ name: route-decision
3
+ description: Suggest an existing factory route without executing it.
4
+ flavor: decision
5
+ runtime:
6
+ backend: systemone
7
+ systemone:
8
+ enabled: true
9
+ client: live
10
+ pack: factory_route
11
+ metadata:
12
+ example: true
@@ -0,0 +1,13 @@
1
+ version: 1
2
+ name: ticket-triage
3
+ description: Classify support requests with a general System One decision pack.
4
+ flavor: decision
5
+ runtime:
6
+ backend: systemone
7
+ systemone:
8
+ enabled: true
9
+ client: live
10
+ model: jev-1.13.0
11
+ pack: ../systemone/ticket-triage-pack.yaml
12
+ metadata:
13
+ example: true
@@ -0,0 +1,16 @@
1
+ version: 1
2
+ name: systemone-tool-gate
3
+ description: Evaluate the frozen tool_gate pack over structured state.
4
+ flavor: decision
5
+ runtime:
6
+ backend: systemone
7
+ systemone:
8
+ enabled: true
9
+ client: live
10
+ pack: tool_gate
11
+ model: jev-1.13.0
12
+ timeout_ms: 5000
13
+ airplane: skip
14
+
15
+ metadata:
16
+ example: true
@@ -0,0 +1,9 @@
1
+ metadata:
2
+ description: Example model judgment; does not establish that tests actually ran.
3
+ tasks:
4
+ - id: explain-approval
5
+ split: held-out
6
+ prompt: Explain when a tool needs human approval and what happens when its permission classifier is unavailable.
7
+ evaluator:
8
+ type: jev_rubric
9
+ rubric: The answer explains that uncertain tool decisions can require human approval and distinguishes classifier errors from approval.
@@ -0,0 +1,30 @@
1
+ id: ticket_triage
2
+ version: "1.0.0"
3
+ description: Classify a support request, score severity, and flag urgency.
4
+ state_schema:
5
+ type: string
6
+ minLength: 1
7
+ questions:
8
+ department:
9
+ type: choice
10
+ instructions: Which department should handle this support request?
11
+ criteria:
12
+ billing: Payments, invoices, refunds, and subscriptions.
13
+ technical: Bugs, broken functionality, and outages.
14
+ sales: Pricing, demos, and purchase enquiries.
15
+ other: Requests that do not fit the listed departments.
16
+ severity:
17
+ type: score
18
+ instructions: How severe is the reported problem?
19
+ criteria:
20
+ - Informational question with no broken functionality.
21
+ - Minor inconvenience with a workaround.
22
+ - Important functionality is blocked.
23
+ - Critical outage affecting the whole service.
24
+ urgent:
25
+ type: noul
26
+ instructions: Does the request explicitly require immediate attention?
27
+ decision_policy:
28
+ min_confidence: 0.75
29
+ noul_false_max: 0.2
30
+ noul_true_min: 0.8
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superqode"
3
- version = "2.3.2"
3
+ version = "2.4.1"
4
4
  description = "The harness layer for coding agents"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -49,6 +49,9 @@ dependencies = [
49
49
  # execution, the way pi validates against TypeBox. Already present through
50
50
  # mcp/fastmcp; declared because superqode.pipy imports it directly.
51
51
  "jsonschema>=4.20.0",
52
+ # Typed System One packs and answers. Already imported by harness/output.py;
53
+ # declared because superqode.systemone uses it as the I/O contract.
54
+ "pydantic>=2.0,<3",
52
55
  "python-frontmatter>=1.1.0",
53
56
  "superopt>=0.1.1",
54
57
  # Native asyncio host for Prime Agent's public RPC mode. Kept as a small,
@@ -270,6 +273,7 @@ superqode = [
270
273
  "data/*.yaml",
271
274
  "data/eval_fixtures/*.log",
272
275
  "data/eval_packs/*.yaml",
276
+ "systemone/packs/*.yaml",
273
277
  "local/data/*.yaml",
274
278
  "local/data/model-packs/*.yaml",
275
279
  "py.typed",
@@ -38,7 +38,7 @@ __all__ = [
38
38
  "sidebar",
39
39
  ]
40
40
 
41
- __version__ = "2.3.2"
41
+ __version__ = "2.4.1"
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
@@ -658,6 +658,9 @@ class AgentConfig:
658
658
  harness_sandbox_backend: str = "local"
659
659
  harness_delegation_depth: int = 0
660
660
 
661
+ # Opt-in System One tool gate. None means "read from harness_spec / env".
662
+ systemone: Optional[Any] = None
663
+
661
664
 
662
665
  @dataclass
663
666
  class AgentMessage:
@@ -747,6 +750,7 @@ class AgentResponse:
747
750
  # and any schema-validation errors (empty list means valid).
748
751
  structured_output: Optional[Any] = None
749
752
  schema_errors: Optional[List[str]] = None
753
+ rubric_result: Optional[Dict[str, Any]] = None
750
754
  input_tokens: Optional[int] = None
751
755
  output_tokens: Optional[int] = None
752
756
  total_tokens: Optional[int] = None
@@ -798,6 +802,8 @@ class AgentLoop:
798
802
  permission_manager: Optional[PermissionManager] = None,
799
803
  hooks: Optional["HookRegistry"] = None, # Lifecycle hooks (before/after llm/tool/turn)
800
804
  allow_peer_agents: bool = True, # False inside sub/peer agents (no nesting)
805
+ systemone_client: Optional[Any] = None,
806
+ on_systemone: Optional[Callable[[Dict[str, Any]], None]] = None,
801
807
  ):
802
808
  self.gateway = gateway
803
809
  self.tools = tools
@@ -891,6 +897,8 @@ class AgentLoop:
891
897
  from .hooks import HookRegistry
892
898
 
893
899
  self.hooks: HookRegistry = hooks if hooks is not None else HookRegistry()
900
+ self._systemone_client = systemone_client
901
+ self.on_systemone = on_systemone
894
902
  self._current_iteration: int = 0
895
903
  # session_start fires once per AgentLoop instance, on the first run().
896
904
  self._session_started: bool = False
@@ -999,6 +1007,7 @@ class AgentLoop:
999
1007
  on_tool_call=self.on_tool_call,
1000
1008
  on_tool_result=self.on_tool_result,
1001
1009
  on_thinking=self.on_thinking,
1010
+ on_systemone=getattr(self, "on_systemone", None),
1002
1011
  parallel_tools=self.parallel_tools,
1003
1012
  mcp_executor=self.mcp_executor,
1004
1013
  mcp_tools=self._mcp_tools,
@@ -1315,6 +1324,7 @@ class AgentLoop:
1315
1324
  on_tool_call=self.on_tool_call,
1316
1325
  on_tool_result=self.on_tool_result,
1317
1326
  on_thinking=self.on_thinking,
1327
+ on_systemone=getattr(self, "on_systemone", None),
1318
1328
  parallel_tools=self.parallel_tools,
1319
1329
  mcp_executor=self.mcp_executor,
1320
1330
  mcp_tools=self._mcp_tools,
@@ -1342,6 +1352,20 @@ class AgentLoop:
1342
1352
 
1343
1353
  async def _check_tool_permission(
1344
1354
  self, name: str, arguments: Dict[str, Any], tool_call_id: Optional[str] = None
1355
+ ) -> Optional[ToolResult]:
1356
+ from ..systemone.audit import finish_trace
1357
+
1358
+ self.last_systemone_decision = None
1359
+ try:
1360
+ result = await self._check_tool_permission_inner(name, arguments, tool_call_id)
1361
+ except ToolApprovalRequired:
1362
+ finish_trace(self, tool_call_id, "ask")
1363
+ raise
1364
+ finish_trace(self, tool_call_id, "allow" if result is None else "deny", result)
1365
+ return result
1366
+
1367
+ async def _check_tool_permission_inner(
1368
+ self, name: str, arguments: Dict[str, Any], tool_call_id: Optional[str] = None
1345
1369
  ) -> Optional[ToolResult]:
1346
1370
  """Apply central permission checks before any local tool executes.
1347
1371
 
@@ -1357,8 +1381,12 @@ class AgentLoop:
1357
1381
  otherwise-ASK command.
1358
1382
  3. The manager's own **deny** (e.g. dangerous-command guards) still wins
1359
1383
  over a permissive hook or rule - hard safety rules are not overridable.
1360
- 4. Manager **allow** passes through; otherwise (ASK) we honour a hook or
1361
- rule allow, or fall back to the pause/prompt flow.
1384
+ 4. Opt-in System One may **deny** an otherwise-allowed call, or
1385
+ **allow** an otherwise-ASK call. Model ASK requires approval.
1386
+ Unavailable evaluations visibly fall back to the existing policy.
1387
+ YAML and manager denials never call the client.
1388
+ 5. Manager **allow** passes through; otherwise (ASK) we honour a hook,
1389
+ rule, or System One allow, or fall back to the pause/prompt flow.
1362
1390
  """
1363
1391
  from .hooks import PERMISSION_REQUEST
1364
1392
 
@@ -1405,11 +1433,26 @@ class AgentLoop:
1405
1433
  error=f"Permission denied for tool: {name}",
1406
1434
  metadata={"permission": "deny", "tool": name},
1407
1435
  )
1408
- if permission == Permission.ALLOW and not rule_ask:
1436
+
1437
+ from ..systemone.runtime import apply_systemone_gate
1438
+
1439
+ baseline_allowed = (
1440
+ (permission == Permission.ALLOW and not rule_ask)
1441
+ or (tool_call_id and tool_call_id in self._approved_tool_call_ids)
1442
+ or ((verdict.allowed or rule_allow) and not rule_ask)
1443
+ )
1444
+ baseline = "allow" if baseline_allowed else "ask"
1445
+ so_denied, so_allow, so_ask = await apply_systemone_gate(self, name, arguments)
1446
+ if self.last_systemone_decision is not None:
1447
+ self.last_systemone_decision["policyAction"] = baseline
1448
+ if so_denied is not None:
1449
+ return so_denied
1450
+
1451
+ if permission == Permission.ALLOW and not rule_ask and not so_ask:
1409
1452
  return None
1410
1453
  if tool_call_id and tool_call_id in self._approved_tool_call_ids:
1411
1454
  return None
1412
- if (verdict.allowed or rule_allow) and not rule_ask:
1455
+ if (verdict.allowed or rule_allow or so_allow) and not rule_ask and not so_ask:
1413
1456
  return None
1414
1457
 
1415
1458
  if self.pause_on_approval:
@@ -2275,6 +2318,7 @@ class AgentLoop:
2275
2318
  auto_continues = 0
2276
2319
  length_parts: List[str] = []
2277
2320
  rubric_rounds = 0
2321
+ rubric_result = None
2278
2322
 
2279
2323
  # Emit initial processing log
2280
2324
  if self.on_thinking:
@@ -2626,6 +2670,7 @@ class AgentLoop:
2626
2670
  if self.config.rubric and rubric_rounds < max(0, self.config.max_rubric_rounds):
2627
2671
  from .rubric import grade_against_rubric
2628
2672
 
2673
+ rubric_evidence = {}
2629
2674
  verdict, feedback = await grade_against_rubric(
2630
2675
  messages,
2631
2676
  response_content,
@@ -2633,7 +2678,10 @@ class AgentLoop:
2633
2678
  self.gateway,
2634
2679
  self.config.provider,
2635
2680
  self.config.model,
2681
+ spec=self.config.harness_spec,
2682
+ on_result=lambda result: rubric_evidence.update(result),
2636
2683
  )
2684
+ rubric_result = {**rubric_evidence, "verdict": verdict, "feedback": feedback}
2637
2685
  if verdict == "needs_revision" and feedback:
2638
2686
  rubric_rounds += 1
2639
2687
  if self.on_thinking:
@@ -2652,9 +2700,11 @@ class AgentLoop:
2652
2700
  )
2653
2701
  )
2654
2702
  continue
2655
- if verdict == "failed" and self.on_thinking:
2656
- await self.on_thinking(f"Rubric review: failed - {feedback[:120]}")
2703
+ if verdict in {"failed", "ungraded"} and self.on_thinking:
2704
+ await self.on_thinking(f"Rubric review: {verdict} - {feedback[:120]}")
2657
2705
 
2706
+ if self.config.rubric and rubric_rounds >= max(0, self.config.max_rubric_rounds):
2707
+ rubric_result = {"verdict": "ungraded", "reason": "Rubric round limit reached"}
2658
2708
  if self.on_thinking:
2659
2709
  await self.on_thinking("Response complete")
2660
2710
  from .hooks import AFTER_TURN_COMPLETE
@@ -2675,6 +2725,7 @@ class AgentLoop:
2675
2725
  tool_calls_made=tool_calls_made,
2676
2726
  iterations=iterations,
2677
2727
  stopped_reason="complete",
2728
+ rubric_result=rubric_result,
2678
2729
  )
2679
2730
  return await _finish(final)
2680
2731
 
@@ -3123,6 +3174,8 @@ class AgentLoop:
3123
3174
  # No tool calls - we have the final response
3124
3175
  # If we had tool calls in previous iterations but no content now,
3125
3176
  # the model should still provide a summary
3177
+ if self.config.rubric and rubric_rounds >= max(0, self.config.max_rubric_rounds):
3178
+ rubric_result = {"verdict": "ungraded", "reason": "Rubric round limit reached"}
3126
3179
  if self.on_thinking:
3127
3180
  await self.on_thinking("Response complete")
3128
3181
  if self._session_manager and full_content.strip():
@@ -12,6 +12,7 @@ insurance on long unattended runs.
12
12
  from __future__ import annotations
13
13
 
14
14
  import json
15
+ import os
15
16
  import re
16
17
  from typing import Any, List, Tuple
17
18
 
@@ -49,24 +50,22 @@ def _transcript_tail(messages: List[Any], final_content: str) -> str:
49
50
 
50
51
 
51
52
  def parse_grader_response(raw: str) -> Tuple[str, str]:
52
- """Parse the grader's JSON; unparseable output counts as satisfied.
53
-
54
- Failing open is deliberate: a flaky grader must never trap a run in
55
- revision loops.
56
- """
53
+ """Parse a verdict; malformed output is explicitly ungraded."""
57
54
  text = (raw or "").strip()
58
55
  text = re.sub(r"^```[a-zA-Z]*\s*\n|\n```\s*$", "", text)
59
56
  start = text.find("{")
60
57
  end = text.rfind("}")
61
58
  if start < 0 or end <= start:
62
- return "satisfied", ""
59
+ return "ungraded", "Rubric grader did not return a valid verdict"
63
60
  try:
64
61
  data = json.loads(text[start : end + 1])
65
62
  except (json.JSONDecodeError, ValueError):
66
- return "satisfied", ""
63
+ return "ungraded", "Rubric grader did not return a valid verdict"
64
+ if not isinstance(data, dict):
65
+ return "ungraded", "Rubric grader did not return an object"
67
66
  verdict = str(data.get("verdict", "")).strip().lower()
68
67
  if verdict not in VERDICTS:
69
- return "satisfied", ""
68
+ return "ungraded", "Rubric grader did not return a valid verdict"
70
69
  return verdict, str(data.get("feedback", "")).strip()
71
70
 
72
71
 
@@ -77,12 +76,28 @@ async def grade_against_rubric(
77
76
  gateway: Any,
78
77
  provider: str,
79
78
  model: str,
79
+ *,
80
+ spec: Any = None,
81
+ on_result: Any = None,
80
82
  ) -> Tuple[str, str]:
81
- """Run one grader call. Returns (verdict, feedback); fails open to satisfied.
83
+ """Grade with the utility model or opt-in Jev; uncertainty stays ungraded.
82
84
 
83
85
  Grading is a utility call: SUPERQODE_UTILITY_PROVIDER can route it to a
84
86
  cheaper model (including the on-device apple-fm) instead of the session model.
85
87
  """
88
+ if os.environ.get("SUPERQODE_RUBRIC_GRADER", "").lower() == "systemone":
89
+ result = await evaluate_jev_rubric(
90
+ rubric, _transcript_tail(messages, final_content), spec=spec
91
+ )
92
+ if on_result:
93
+ on_result(result)
94
+ verdict = result["verdict"]
95
+ if verdict == "needs_revision":
96
+ return (
97
+ verdict,
98
+ f"Re-check each requirement and supply missing evidence. Rubric: {rubric}",
99
+ )
100
+ return verdict, result["reason"]
86
101
  try:
87
102
  from .utility_model import utility_completion
88
103
 
@@ -99,7 +114,46 @@ async def grade_against_rubric(
99
114
  )
100
115
  return parse_grader_response(raw)
101
116
  except Exception:
102
- return "satisfied", ""
117
+ return "ungraded", "Rubric grader did not return a valid verdict"
103
118
 
104
119
 
105
120
  __all__ = ["GRADER_SYSTEM_PROMPT", "VERDICTS", "grade_against_rubric", "parse_grader_response"]
121
+
122
+
123
+ async def evaluate_jev_rubric(rubric: str, work: str, *, spec=None, client=None) -> dict[str, Any]:
124
+ """One bounded decision; never turn abstention or client failure into success."""
125
+ from dataclasses import replace
126
+
127
+ from superqode.systemone.config import build_client, resolve_systemone
128
+ from superqode.systemone.decision import evaluate_decision
129
+ from superqode.systemone.pack import load_pack
130
+
131
+ try:
132
+ # Inherit endpoint, model, deadline and offline policy. A separate opt-in
133
+ # enables grading without enabling the permission sidecar.
134
+ from types import SimpleNamespace
135
+
136
+ declared = getattr(spec, "systemone", None)
137
+ if declared is None or not getattr(declared, "enabled", False):
138
+ declared = SimpleNamespace(enabled=True, client="live")
139
+ else:
140
+ declared = SimpleNamespace(**{**vars(declared), "enabled": True})
141
+ settings = resolve_systemone(spec=spec, explicit=declared)
142
+ settings = replace(settings, pack="rubric")
143
+ active = build_client(settings, injected=client)
144
+ if active is None:
145
+ return {
146
+ "verdict": "ungraded",
147
+ "reason": "Rubric client unavailable: " + (settings.skip_reason or "disabled"),
148
+ }
149
+ decision = await evaluate_decision(
150
+ active, {"rubric": rubric, "work": work}, load_pack("rubric")
151
+ )
152
+ verdict = decision.outputs.get("verdict") if decision.status == "decided" else "ungraded"
153
+ return {
154
+ "verdict": verdict or "ungraded",
155
+ "reason": "Jev rubric: " + str(verdict or "ungraded"),
156
+ "decision": decision.model_dump(mode="json"),
157
+ }
158
+ except Exception:
159
+ return {"verdict": "ungraded", "reason": "Rubric evaluation unavailable"}
@@ -323,6 +323,13 @@ COMMANDS = [
323
323
  ":capabilities",
324
324
  ":eval",
325
325
  ":evals",
326
+ ":systemone",
327
+ ":systemone live",
328
+ ":systemone shadow",
329
+ ":systemone off",
330
+ ":systemone packs",
331
+ ":systemone connect",
332
+ ":connect systemone",
326
333
  ":tour",
327
334
  ":tour next",
328
335
  ":connect codex",
@@ -1509,7 +1509,32 @@ class ConnectMixin:
1509
1509
  if conn == "acp":
1510
1510
  log.add_info(f"{profile.label} needs setup: {profile.unavailable_hint}")
1511
1511
  return
1512
- if conn == "copilot":
1512
+ if conn == "systemone-picker":
1513
+ from superqode.providers.connection_profiles import CONNECT_MENU_SYSTEMONE
1514
+
1515
+ self._show_connect_type_picker(log, menu=CONNECT_MENU_SYSTEMONE)
1516
+ elif conn == "systemone":
1517
+ import os
1518
+
1519
+ if not os.environ.get("TYPESAFE_API_KEY", "").strip():
1520
+ log.add_info(
1521
+ "Jev needs a TypeSafe AI API key. Get one at https://console.typesafe.ai "
1522
+ "(request access at https://typesafe.ai if needed). In your terminal, run "
1523
+ "export TYPESAFE_API_KEY='your-key', restart SuperQode, then choose "
1524
+ ":connect → Connect with SystemOne models → Jev."
1525
+ )
1526
+ return
1527
+ pure = self._ensure_pure_mode()
1528
+ try:
1529
+ pure.connect_decision("factory_route")
1530
+ except (ValueError, OSError) as exc:
1531
+ log.add_error(str(exc))
1532
+ return
1533
+ self._activate_decision_connection(pure, log)
1534
+ log.add_info(
1535
+ "Use :systemone packs to explore packs, then :systemone connect <pack> to switch."
1536
+ )
1537
+ elif conn == "copilot":
1513
1538
  self._connect_copilot_subscription(profile, log)
1514
1539
  elif conn == "prime-rpc":
1515
1540
  self._connect_prime_rpc("", log)
@@ -2337,8 +2337,13 @@ class DialogsMixin:
2337
2337
  # Keep the view pinned to the latest response. We no longer clear the
2338
2338
  # log each turn, so scrolling home would jump away from the answer the
2339
2339
  # user just asked for — scroll to the end and resume follow mode.
2340
- log.auto_scroll = True
2341
- self.set_timer(0.1, lambda: log.scroll_end(animate=False))
2340
+ from superqode.rendering.systemone import render_systemone_json
2341
+
2342
+ if render_systemone_json(response_text, THEME) is not None:
2343
+ log.reveal_decision_response()
2344
+ else:
2345
+ log.auto_scroll = True
2346
+ self.set_timer(0.1, lambda: log.scroll_end(animate=False))
2342
2347
 
2343
2348
  #: Suggested commands, in the order they become useful. Only unused ones
2344
2349
  #: are offered.
@@ -41,6 +41,9 @@ class HelperPermissionsMixin:
41
41
  return self._request_runtime_permission(tool_name, arguments, log)
42
42
 
43
43
  pure.on_permission_request = on_permission_request
44
+ from superqode.systemone.runtime import format_decision
45
+
46
+ pure.on_systemone = lambda event: self._call_ui(log.add_system, format_decision(event))
44
47
 
45
48
  def _announce_pending_approvals(self, source, log) -> None:
46
49
  """Surface pending approvals from an active runtime or HarnessSpec session."""
@@ -155,7 +155,10 @@ class HelpersMixin(
155
155
  if not harness and pure is not None:
156
156
  runtime_name = str(getattr(pure, "runtime_name", "") or "")
157
157
  connected = bool(getattr(getattr(pure, "session", None), "connected", False))
158
- if connected and runtime_name in getattr(
158
+ spec = getattr(pure, "_harness_spec", None)
159
+ if connected and getattr(spec, "is_decision", False):
160
+ harness = str(spec.name)
161
+ elif connected and runtime_name in getattr(
159
162
  self, "_SELF_CONTAINED_RUNTIMES", frozenset()
160
163
  ):
161
164
  # These runtimes own the agent loop and tool harness. The