superqode 2.3.1__tar.gz → 2.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1069) hide show
  1. {superqode-2.3.1 → superqode-2.4.0}/CHANGELOG.md +91 -1
  2. {superqode-2.3.1 → superqode-2.4.0}/MANIFEST.in +1 -0
  3. {superqode-2.3.1 → superqode-2.4.0}/PKG-INFO +3 -1
  4. {superqode-2.3.1 → superqode-2.4.0}/README.md +1 -0
  5. superqode-2.4.0/examples/harnesses/systemone-factory-route.yaml +12 -0
  6. superqode-2.4.0/examples/harnesses/systemone-ticket-triage.yaml +13 -0
  7. superqode-2.4.0/examples/harnesses/systemone-tool-gate.yaml +16 -0
  8. superqode-2.4.0/examples/systemone/rubric-eval.yaml +9 -0
  9. superqode-2.4.0/examples/systemone/ticket-triage-pack.yaml +30 -0
  10. {superqode-2.3.1 → superqode-2.4.0}/pyproject.toml +5 -1
  11. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/__init__.py +1 -1
  12. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/loop.py +37 -6
  13. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/rubric.py +64 -10
  14. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/constants.py +6 -0
  15. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_permissions.py +3 -0
  16. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/slash_commands.py +151 -1
  17. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/serve.py +7 -1
  18. superqode-2.4.0/src/superqode/data/eval_packs/decision-routing.yaml +41 -0
  19. superqode-2.4.0/src/superqode/data/eval_packs/decision-tool-gate.yaml +41 -0
  20. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/__init__.py +2 -0
  21. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/base.py +2 -0
  22. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/registry.py +12 -1
  23. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/runtime.py +4 -0
  24. superqode-2.4.0/src/superqode/harness/backends/systemone.py +114 -0
  25. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/eval.py +31 -7
  26. superqode-2.4.0/src/superqode/harness/evaluators.py +102 -0
  27. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/loader.py +90 -0
  28. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/spec.py +27 -0
  29. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/headless.py +9 -1
  30. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/main.py +7 -0
  31. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pure_mode.py +38 -1
  32. superqode-2.4.0/src/superqode/systemone/__init__.py +68 -0
  33. superqode-2.4.0/src/superqode/systemone/client.py +165 -0
  34. superqode-2.4.0/src/superqode/systemone/compose.py +228 -0
  35. superqode-2.4.0/src/superqode/systemone/config.py +171 -0
  36. superqode-2.4.0/src/superqode/systemone/decision.py +90 -0
  37. superqode-2.4.0/src/superqode/systemone/live.py +182 -0
  38. superqode-2.4.0/src/superqode/systemone/pack.py +145 -0
  39. superqode-2.4.0/src/superqode/systemone/packs/factory_route.yaml +44 -0
  40. superqode-2.4.0/src/superqode/systemone/packs/rubric.yaml +27 -0
  41. superqode-2.4.0/src/superqode/systemone/packs/tool_gate.yaml +97 -0
  42. superqode-2.4.0/src/superqode/systemone/runtime.py +221 -0
  43. superqode-2.4.0/src/superqode/systemone/state.py +127 -0
  44. superqode-2.4.0/src/superqode/systemone/types.py +304 -0
  45. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/env_policy.py +6 -1
  46. {superqode-2.3.1 → superqode-2.4.0}/src/superqode.egg-info/PKG-INFO +3 -1
  47. {superqode-2.3.1 → superqode-2.4.0}/src/superqode.egg-info/SOURCES.txt +33 -0
  48. {superqode-2.3.1 → superqode-2.4.0}/src/superqode.egg-info/requires.txt +1 -0
  49. {superqode-2.3.1 → superqode-2.4.0}/tests/test_cli_contract.py +4 -1
  50. superqode-2.4.0/tests/test_decision_evaluators.py +168 -0
  51. {superqode-2.3.1 → superqode-2.4.0}/tests/test_final_parity_wave.py +3 -3
  52. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_backends.py +1 -0
  53. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_examples.py +5 -1
  54. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_spec.py +46 -0
  55. {superqode-2.3.1 → superqode-2.4.0}/tests/test_install_script.py +9 -1
  56. superqode-2.4.0/tests/test_systemone_decision.py +104 -0
  57. superqode-2.4.0/tests/test_systemone_general.py +236 -0
  58. superqode-2.4.0/tests/test_systemone_live.py +74 -0
  59. superqode-2.4.0/tests/test_systemone_live_recorded.py +103 -0
  60. superqode-2.4.0/tests/test_systemone_loop.py +186 -0
  61. superqode-2.4.0/tests/test_systemone_regressions.py +166 -0
  62. superqode-2.4.0/tests/test_systemone_state.py +36 -0
  63. superqode-2.4.0/tests/test_systemone_stub.py +91 -0
  64. superqode-2.4.0/tests/test_systemone_tool_gate.py +173 -0
  65. superqode-2.4.0/tests/test_systemone_types.py +106 -0
  66. {superqode-2.3.1 → superqode-2.4.0}/LICENSE +0 -0
  67. {superqode-2.3.1 → superqode-2.4.0}/NOTICE +0 -0
  68. {superqode-2.3.1 → superqode-2.4.0}/examples/README.md +0 -0
  69. {superqode-2.3.1 → superqode-2.4.0}/examples/a2a/README.md +0 -0
  70. {superqode-2.3.1 → superqode-2.4.0}/examples/a2a/smoke_client.py +0 -0
  71. {superqode-2.3.1 → superqode-2.4.0}/examples/bench/dspy-comprehension.manifest.yaml +0 -0
  72. {superqode-2.3.1 → superqode-2.4.0}/examples/bench/dspy-comprehension.yaml +0 -0
  73. {superqode-2.3.1 → superqode-2.4.0}/examples/bench/spec-core.yaml +0 -0
  74. {superqode-2.3.1 → superqode-2.4.0}/examples/bench/spec-deepagents.yaml +0 -0
  75. {superqode-2.3.1 → superqode-2.4.0}/examples/bench/spec-prime-agent.yaml +0 -0
  76. {superqode-2.3.1 → superqode-2.4.0}/examples/byok-acp-team.yaml +0 -0
  77. {superqode-2.3.1 → superqode-2.4.0}/examples/codex_sdk_quickstart.py +0 -0
  78. {superqode-2.3.1 → superqode-2.4.0}/examples/evals/omni-release.yaml +0 -0
  79. {superqode-2.3.1 → superqode-2.4.0}/examples/evals/omni-tiny.yaml +0 -0
  80. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/README.md +0 -0
  81. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/manifest-guard/context.md +0 -0
  82. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/manifest-guard/hooks.py +0 -0
  83. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/manifest-guard/tools.py +0 -0
  84. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/packages/README.md +0 -0
  85. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/packages/broken-extension/src/superqode_example_broken/__init__.py +0 -0
  86. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/packages/policy-extension/src/superqode_example_policy/__init__.py +0 -0
  87. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/packages/skill-extension/src/superqode_example_skill/SKILL.md +0 -0
  88. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/packages/skill-extension/src/superqode_example_skill/__init__.py +0 -0
  89. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/packages/tool-extension/src/superqode_example_tool/__init__.py +0 -0
  90. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/packages/tool-extension-v2/src/superqode_example_tool/__init__.py +0 -0
  91. {superqode-2.3.1 → superqode-2.4.0}/examples/extensions/python-package/src/superqode_example_extension/__init__.py +0 -0
  92. {superqode-2.3.1 → superqode-2.4.0}/examples/harness-packages/README.md +0 -0
  93. {superqode-2.3.1 → superqode-2.4.0}/examples/harness-packages/hello-harness/src/superqode_hello_harness/__init__.py +0 -0
  94. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/coding.yaml +0 -0
  95. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/deepagents.yaml +0 -0
  96. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/deepseek-harness.yaml +0 -0
  97. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/ds4.yaml +0 -0
  98. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/gemma4.yaml +0 -0
  99. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/google-adk.yaml +0 -0
  100. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/local-recursive-dynamic.yaml +0 -0
  101. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/mcp-docs.yaml +0 -0
  102. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/no-tool.yaml +0 -0
  103. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/omni-tiny-local.yaml +0 -0
  104. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/omnigent-multi-agent.yaml +0 -0
  105. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/openai-agents.yaml +0 -0
  106. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/prime-agent.yaml +0 -0
  107. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/pydanticai.yaml +0 -0
  108. {superqode-2.3.1 → superqode-2.4.0}/examples/harnesses/rlm-code-lid.yaml +0 -0
  109. {superqode-2.3.1 → superqode-2.4.0}/examples/local-models-team.yaml +0 -0
  110. {superqode-2.3.1 → superqode-2.4.0}/examples/mcp/local_docs_server.py +0 -0
  111. {superqode-2.3.1 → superqode-2.4.0}/examples/omnigent-multi-agent.agent.yaml +0 -0
  112. {superqode-2.3.1 → superqode-2.4.0}/examples/qm-deployment-layer/README.md +0 -0
  113. {superqode-2.3.1 → superqode-2.4.0}/examples/qm-deployment-layer/sandbox/skills/superqode-harness/SKILL.md +0 -0
  114. {superqode-2.3.1 → superqode-2.4.0}/examples/rlm-demo/INCIDENT.md +0 -0
  115. {superqode-2.3.1 → superqode-2.4.0}/examples/rlm-demo/README.md +0 -0
  116. {superqode-2.3.1 → superqode-2.4.0}/examples/rlm-demo/RUNBOOK.md +0 -0
  117. {superqode-2.3.1 → superqode-2.4.0}/examples/rlm-demo/deploy_audit/__init__.py +0 -0
  118. {superqode-2.3.1 → superqode-2.4.0}/examples/rlm-demo/deploy_audit/parser.py +0 -0
  119. {superqode-2.3.1 → superqode-2.4.0}/examples/rlm-demo/deploy_audit/report.py +0 -0
  120. {superqode-2.3.1 → superqode-2.4.0}/examples/rlm-demo/rlm-docker.yaml +0 -0
  121. {superqode-2.3.1 → superqode-2.4.0}/examples/rlm-demo/rlm-monty.yaml +0 -0
  122. {superqode-2.3.1 → superqode-2.4.0}/examples/rlm-demo/tests/test_report.py +0 -0
  123. {superqode-2.3.1 → superqode-2.4.0}/examples/simple-team.yaml +0 -0
  124. {superqode-2.3.1 → superqode-2.4.0}/scripts/check_release_metadata.py +0 -0
  125. {superqode-2.3.1 → superqode-2.4.0}/setup.cfg +0 -0
  126. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/__init__.py +0 -0
  127. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/client.py +0 -0
  128. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/conformance.py +0 -0
  129. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/connection.py +0 -0
  130. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/context.py +0 -0
  131. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/inspect.py +0 -0
  132. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/keys.py +0 -0
  133. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/limits.py +0 -0
  134. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/oauth.py +0 -0
  135. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/presets.py +0 -0
  136. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/registry.py +0 -0
  137. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/reply.py +0 -0
  138. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/security.py +0 -0
  139. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/server.py +0 -0
  140. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/shortlist.py +0 -0
  141. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/skills.py +0 -0
  142. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/tools.py +0 -0
  143. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/trust.py +0 -0
  144. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/types.py +0 -0
  145. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/understand.py +0 -0
  146. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/a2a/workflows.py +0 -0
  147. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/__init__.py +0 -0
  148. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/client.py +0 -0
  149. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/doctor.py +0 -0
  150. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/permission_screen.py +0 -0
  151. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/permission_store.py +0 -0
  152. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/render.py +0 -0
  153. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/server.py +0 -0
  154. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/session_store.py +0 -0
  155. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/slash.py +0 -0
  156. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/tool_call_context.py +0 -0
  157. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp/types.py +0 -0
  158. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/acp_discovery.py +0 -0
  159. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/__init__.py +0 -0
  160. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/auto_memory.py +0 -0
  161. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/command_safety.py +0 -0
  162. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/compaction.py +0 -0
  163. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/context_manager.py +0 -0
  164. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/edit_strategies.py +0 -0
  165. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/exec_policy.py +0 -0
  166. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/hooks.py +0 -0
  167. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/loop_guard.py +0 -0
  168. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/loop_policy.py +0 -0
  169. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/network_policy.py +0 -0
  170. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/output_handler.py +0 -0
  171. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/parallel_compare.py +0 -0
  172. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/peer_agents.py +0 -0
  173. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/plan_mode.py +0 -0
  174. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/reminders.py +0 -0
  175. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/session_manager.py +0 -0
  176. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/structured_output.py +0 -0
  177. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/summarization.py +0 -0
  178. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/system_prompts.py +0 -0
  179. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/terminal_output_limits.py +0 -0
  180. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/text_tool_calls.py +0 -0
  181. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/tool_args.py +0 -0
  182. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/tool_tracking.py +0 -0
  183. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent/utility_model.py +0 -0
  184. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent_output.py +0 -0
  185. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agent_stream.py +0 -0
  186. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/__init__.py +0 -0
  187. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/acp_registry.py +0 -0
  188. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/client.py +0 -0
  189. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/agentpool.phil65.github.io.toml +0 -0
  190. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/ampcode.com.toml +0 -0
  191. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/augmentcode.com.toml +0 -0
  192. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/autodev.github.io.toml +0 -0
  193. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/blackbox.ai.toml +0 -0
  194. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/bub.dev.toml +0 -0
  195. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/cagent.dev.toml +0 -0
  196. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/claude.com.toml +0 -0
  197. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/cline.bot.toml +0 -0
  198. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
  199. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/codebuddy.tencent.com.toml +0 -0
  200. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/codex.openai.com.toml +0 -0
  201. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/copilot.github.com.toml +0 -0
  202. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/cortex.snowflake.com.toml +0 -0
  203. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/crow-ai.dev.toml +0 -0
  204. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/cursor.com.toml +0 -0
  205. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/deepagents-code.langchain.com.toml +0 -0
  206. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/deepagents.langchain.com.toml +0 -0
  207. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/devin.ai.toml +0 -0
  208. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/dirac.run.toml +0 -0
  209. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/factory.ai.toml +0 -0
  210. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/fastagent.ai.toml +0 -0
  211. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/fount.dev.toml +0 -0
  212. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/fx.sh.toml +0 -0
  213. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/geminicli.com.toml +0 -0
  214. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/glm.z.ai.toml +0 -0
  215. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
  216. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/harnlang.com.toml +0 -0
  217. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/hermes-agent.nousresearch.com.toml +0 -0
  218. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
  219. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/kilo.ai.toml +0 -0
  220. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
  221. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/kiro.dev.toml +0 -0
  222. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
  223. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/minioncode.dev.toml +0 -0
  224. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/mistral-vibe.mistral.ai.toml +0 -0
  225. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/openclaw.ai.toml +0 -0
  226. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/opencode.ai.toml +0 -0
  227. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/openhands.dev.toml +0 -0
  228. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/pi.dev.toml +0 -0
  229. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/poolside.ai.toml +0 -0
  230. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/primeintellect.ai.toml +0 -0
  231. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/qoder.com.toml +0 -0
  232. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/qwenlm.github.io.toml +0 -0
  233. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/sigit.dev.toml +0 -0
  234. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/stakpak.dev.toml +0 -0
  235. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/stdiobus.dev.toml +0 -0
  236. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/vtcode.dev.toml +0 -0
  237. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/data/x.ai.toml +0 -0
  238. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/discovery.py +0 -0
  239. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/free_models.py +0 -0
  240. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/install_commands.py +0 -0
  241. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/messaging.py +0 -0
  242. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/official_acp.py +0 -0
  243. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/persona.py +0 -0
  244. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/registry.py +0 -0
  245. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/schema.py +0 -0
  246. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/agents/unified.py +0 -0
  247. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/__init__.py +0 -0
  248. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/async_utils.py +0 -0
  249. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/capabilities.py +0 -0
  250. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/css.py +0 -0
  251. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/harness_picker.py +0 -0
  252. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/inputs.py +0 -0
  253. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/__init__.py +0 -0
  254. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/actions_misc.py +0 -0
  255. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/agent_run.py +0 -0
  256. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/build_harness.py +0 -0
  257. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/clickable_commands.py +0 -0
  258. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/codex.py +0 -0
  259. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/commands_impl.py +0 -0
  260. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/completion.py +0 -0
  261. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/connect.py +0 -0
  262. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/dialogs.py +0 -0
  263. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/events.py +0 -0
  264. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/explore.py +0 -0
  265. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/factory.py +0 -0
  266. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/feedback.py +0 -0
  267. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/formatting.py +0 -0
  268. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/harness_hub.py +0 -0
  269. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_clipboard.py +0 -0
  270. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_completion_helpers.py +0 -0
  271. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_diff_review.py +0 -0
  272. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_exit_lifecycle.py +0 -0
  273. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_file_view.py +0 -0
  274. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_interaction_mode.py +0 -0
  275. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_mcp_attach.py +0 -0
  276. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_message_queue.py +0 -0
  277. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_recipes_skills.py +0 -0
  278. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_share.py +0 -0
  279. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_startup.py +0 -0
  280. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_todos_plan.py +0 -0
  281. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_vim.py +0 -0
  282. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helper_wizard.py +0 -0
  283. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/helpers.py +0 -0
  284. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/huggingface.py +0 -0
  285. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/local_models.py +0 -0
  286. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/mcp.py +0 -0
  287. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/model_catalog.py +0 -0
  288. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/pickers.py +0 -0
  289. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/pipy_commands.py +0 -0
  290. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/rlm_commands.py +0 -0
  291. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/sidebar.py +0 -0
  292. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/switchboard.py +0 -0
  293. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/mixins/tour.py +0 -0
  294. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/models.py +0 -0
  295. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/navigation.py +0 -0
  296. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/outcomes.py +0 -0
  297. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/progress.py +0 -0
  298. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/prompt_stack.py +0 -0
  299. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/recipes.py +0 -0
  300. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/session_state.py +0 -0
  301. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/suggester.py +0 -0
  302. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/theme_bridge.py +0 -0
  303. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/welcome.py +0 -0
  304. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app/widgets.py +0 -0
  305. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app_enhanced.py +0 -0
  306. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/app_main.py +0 -0
  307. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/approval.py +0 -0
  308. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/atomic.py +0 -0
  309. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/auth/__init__.py +0 -0
  310. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/benchmarks.py +0 -0
  311. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/channels/__init__.py +0 -0
  312. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/channels/config.py +0 -0
  313. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/channels/discord.py +0 -0
  314. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/channels/service.py +0 -0
  315. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/channels/slack.py +0 -0
  316. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/channels/telegram.py +0 -0
  317. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/claude.py +0 -0
  318. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/codex.py +0 -0
  319. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/__init__.py +0 -0
  320. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/a2a.py +0 -0
  321. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/a2a_connect.py +0 -0
  322. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/a2a_keys.py +0 -0
  323. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/acp.py +0 -0
  324. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/agents.py +0 -0
  325. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/auth.py +0 -0
  326. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/benchmark.py +0 -0
  327. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/config.py +0 -0
  328. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/connect.py +0 -0
  329. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/daemon.py +0 -0
  330. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/factory.py +0 -0
  331. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/gauge.py +0 -0
  332. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/__init__.py +0 -0
  333. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/_group.py +0 -0
  334. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/_helpers.py +0 -0
  335. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/bench.py +0 -0
  336. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/candidates.py +0 -0
  337. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/evaluation.py +0 -0
  338. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/evidence.py +0 -0
  339. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/inbox.py +0 -0
  340. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/lifecycle.py +0 -0
  341. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/logbook.py +0 -0
  342. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/observability.py +0 -0
  343. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/optimization.py +0 -0
  344. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/promotion.py +0 -0
  345. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/protocol.py +0 -0
  346. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/registry.py +0 -0
  347. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/replay.py +0 -0
  348. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/run_history.py +0 -0
  349. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/harness/worker.py +0 -0
  350. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/hub.py +0 -0
  351. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/local.py +0 -0
  352. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/memory.py +0 -0
  353. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/models.py +0 -0
  354. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/plugins.py +0 -0
  355. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/policy.py +0 -0
  356. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/profiles.py +0 -0
  357. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/providers.py +0 -0
  358. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/runtime.py +0 -0
  359. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/sandbox.py +0 -0
  360. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/sessions.py +0 -0
  361. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/share.py +0 -0
  362. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/skillopt.py +0 -0
  363. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/skills.py +0 -0
  364. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/tools.py +0 -0
  365. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/trust.py +0 -0
  366. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/uhp.py +0 -0
  367. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/update.py +0 -0
  368. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/commands/work.py +0 -0
  369. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/config/__init__.py +0 -0
  370. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/config/loader.py +0 -0
  371. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/config/schema.py +0 -0
  372. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/core/__init__.py +0 -0
  373. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/danger.py +0 -0
  374. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/data/eval_fixtures/ci-dynamic-root-cause.log +0 -0
  375. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/data/eval_fixtures/ci-root-cause.log +0 -0
  376. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/data/eval_packs/local_dynamic_workflow_smoke.yaml +0 -0
  377. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/data/eval_packs/local_recursive_smoke.yaml +0 -0
  378. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/data/superqode-template.yaml +0 -0
  379. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/design_system.py +0 -0
  380. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/dialogs/__init__.py +0 -0
  381. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/dialogs/base.py +0 -0
  382. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/dialogs/model.py +0 -0
  383. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/dialogs/provider.py +0 -0
  384. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/dialogs/runtime.py +0 -0
  385. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/diff_view.py +0 -0
  386. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/enterprise.py +0 -0
  387. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/evaluation/__init__.py +0 -0
  388. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/evaluation/adapters.py +0 -0
  389. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/evaluation/behaviors.py +0 -0
  390. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/evaluation/engine.py +0 -0
  391. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/evaluation/scenarios.py +0 -0
  392. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/execution/__init__.py +0 -0
  393. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/execution/linter.py +0 -0
  394. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/execution/modes.py +0 -0
  395. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/execution/resolver.py +0 -0
  396. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/execution/runner.py +0 -0
  397. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/extensions.py +0 -0
  398. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/file_explorer.py +0 -0
  399. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/file_viewer.py +0 -0
  400. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/flash.py +0 -0
  401. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/gauge/__init__.py +0 -0
  402. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/gauge/levels.py +0 -0
  403. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/gauge/record.py +0 -0
  404. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/gauge/sources.py +0 -0
  405. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/governance.py +0 -0
  406. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/accelerator.py +0 -0
  407. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/agent_importer.py +0 -0
  408. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/approval_memory.py +0 -0
  409. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/__init__.py +0 -0
  410. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/deepagents.py +0 -0
  411. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/dsh.py +0 -0
  412. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/managed.py +0 -0
  413. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/pipy.py +0 -0
  414. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/prime_agent.py +0 -0
  415. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/pydanticai.py +0 -0
  416. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/rlm.py +0 -0
  417. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/rlm_code.py +0 -0
  418. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/tau.py +0 -0
  419. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/backends/uhp.py +0 -0
  420. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/bench.py +0 -0
  421. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/catalog.py +0 -0
  422. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/compiler.py +0 -0
  423. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/conformance.py +0 -0
  424. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/context_handles.py +0 -0
  425. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/diagnostics.py +0 -0
  426. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/discovery.py +0 -0
  427. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/drift.py +0 -0
  428. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/events.py +0 -0
  429. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/explain.py +0 -0
  430. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/hooks.py +0 -0
  431. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/hub.py +0 -0
  432. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/kernel.py +0 -0
  433. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/mcp_bridge.py +0 -0
  434. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/model_policy.py +0 -0
  435. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/model_routes.py +0 -0
  436. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/observability.py +0 -0
  437. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/omni.py +0 -0
  438. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/omnigent_importer.py +0 -0
  439. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/optimize.py +0 -0
  440. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/output.py +0 -0
  441. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/permissions.py +0 -0
  442. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/pipy_adapter.py +0 -0
  443. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/pipy_extensions.py +0 -0
  444. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/promotion.py +0 -0
  445. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/protocol.py +0 -0
  446. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/protocol_adapters.py +0 -0
  447. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/protocol_controller.py +0 -0
  448. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/registry.py +0 -0
  449. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/rlm_adapter.py +0 -0
  450. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/rlm_code_adapter.py +0 -0
  451. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/sandbox.py +0 -0
  452. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/self_improve.py +0 -0
  453. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/store.py +0 -0
  454. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/tau_adapter.py +0 -0
  455. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/tau_management.py +0 -0
  456. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/templates.py +0 -0
  457. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/testing.py +0 -0
  458. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/uhp_adapter.py +0 -0
  459. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/uhp_client.py +0 -0
  460. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/uhp_server.py +0 -0
  461. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/wizard.py +0 -0
  462. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/workflow.py +0 -0
  463. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/harness/workflow_presets.py +0 -0
  464. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/history.py +0 -0
  465. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/__init__.py +0 -0
  466. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/airplane.py +0 -0
  467. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/bench.py +0 -0
  468. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/build.py +0 -0
  469. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/code_index.py +0 -0
  470. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/devstral.yaml +0 -0
  471. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/ds4.yaml +0 -0
  472. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/gemma4.yaml +0 -0
  473. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/glm.yaml +0 -0
  474. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/gpt-oss.yaml +0 -0
  475. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/kimi.yaml +0 -0
  476. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/laguna.yaml +0 -0
  477. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/minimax.yaml +0 -0
  478. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/qwen-coder.yaml +0 -0
  479. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/model-packs/qwen3.yaml +0 -0
  480. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/data/stack_matrix.yaml +0 -0
  481. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/doctor.py +0 -0
  482. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/engines.py +0 -0
  483. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/guardrails.py +0 -0
  484. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/hardware.py +0 -0
  485. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/inventory.py +0 -0
  486. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/labs.py +0 -0
  487. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/laguna.py +0 -0
  488. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/matrix.py +0 -0
  489. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/migrate.py +0 -0
  490. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/optimize.py +0 -0
  491. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/packs.py +0 -0
  492. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/repo.py +0 -0
  493. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/servers.py +0 -0
  494. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/setup.py +0 -0
  495. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/local/smoke.py +0 -0
  496. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/logging/__init__.py +0 -0
  497. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/logging/adapters.py +0 -0
  498. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/logging/formatter.py +0 -0
  499. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/logging/integration.py +0 -0
  500. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/logging/sinks.py +0 -0
  501. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/logging/unified_log.py +0 -0
  502. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/lsp/__init__.py +0 -0
  503. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/lsp/client.py +0 -0
  504. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/__init__.py +0 -0
  505. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/auth_storage.py +0 -0
  506. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/client.py +0 -0
  507. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/config.py +0 -0
  508. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/elicitation.py +0 -0
  509. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/harness_server.py +0 -0
  510. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/hf_auth.py +0 -0
  511. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/integration.py +0 -0
  512. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/oauth.py +0 -0
  513. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/oauth_callback.py +0 -0
  514. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/sampling.py +0 -0
  515. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/search.py +0 -0
  516. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/mcp/types.py +0 -0
  517. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/memory/__init__.py +0 -0
  518. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/memory/config.py +0 -0
  519. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/memory/providers.py +0 -0
  520. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/memory/types.py +0 -0
  521. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/notifications.py +0 -0
  522. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/permissions/__init__.py +0 -0
  523. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/permissions/rules.py +0 -0
  524. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/__init__.py +0 -0
  525. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/ai/__init__.py +0 -0
  526. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/ai/fake.py +0 -0
  527. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/ai/gateway.py +0 -0
  528. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/ai/models.py +0 -0
  529. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/ai/transform.py +0 -0
  530. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/coding_session.py +0 -0
  531. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/compaction.py +0 -0
  532. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/config.py +0 -0
  533. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/event_stream.py +0 -0
  534. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/events.py +0 -0
  535. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/harness.py +0 -0
  536. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/harness_events.py +0 -0
  537. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/loop.py +0 -0
  538. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/messages.py +0 -0
  539. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/permissions.py +0 -0
  540. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/prompt_templates.py +0 -0
  541. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/provider_events.py +0 -0
  542. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/resources.py +0 -0
  543. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/session/__init__.py +0 -0
  544. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/session/codec.py +0 -0
  545. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/session/entries.py +0 -0
  546. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/session/jsonl.py +0 -0
  547. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/session/memory.py +0 -0
  548. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/session/repository.py +0 -0
  549. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/session/session.py +0 -0
  550. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/session/storage.py +0 -0
  551. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/signals.py +0 -0
  552. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/skills.py +0 -0
  553. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/stream.py +0 -0
  554. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/system_prompt.py +0 -0
  555. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/tools/__init__.py +0 -0
  556. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/tools/base.py +0 -0
  557. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/tools/edit_diff.py +0 -0
  558. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/tools/files.py +0 -0
  559. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/tools/paths.py +0 -0
  560. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/tools/registry.py +0 -0
  561. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/tools/search.py +0 -0
  562. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/tools/shell.py +0 -0
  563. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/tools/truncate.py +0 -0
  564. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/types.py +0 -0
  565. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/pipy/validation.py +0 -0
  566. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/plan.py +0 -0
  567. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/platform_locks.py +0 -0
  568. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/plugins.py +0 -0
  569. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/project_trust.py +0 -0
  570. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/__init__.py +0 -0
  571. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/_builtin_profiles.py +0 -0
  572. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/acp_free_models.py +0 -0
  573. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/acp_models.py +0 -0
  574. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/acp_registry.py +0 -0
  575. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/apple_fm.py +0 -0
  576. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/catalog.py +0 -0
  577. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/connection_profiles.py +0 -0
  578. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/copilot_auth.py +0 -0
  579. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/credentials.py +0 -0
  580. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/dynamic.py +0 -0
  581. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/env_introspect.py +0 -0
  582. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/free_inference.py +0 -0
  583. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/gateway/__init__.py +0 -0
  584. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/gateway/base.py +0 -0
  585. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/gateway/litellm_gateway.py +0 -0
  586. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
  587. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/gateway/synthetic.py +0 -0
  588. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/grok_cli_auth.py +0 -0
  589. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/harness_catalog.py +0 -0
  590. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/health.py +0 -0
  591. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/huggingface/__init__.py +0 -0
  592. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/huggingface/convert.py +0 -0
  593. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/huggingface/downloader.py +0 -0
  594. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/huggingface/endpoints.py +0 -0
  595. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/huggingface/fetch.py +0 -0
  596. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/huggingface/hub.py +0 -0
  597. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/huggingface/inference.py +0 -0
  598. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
  599. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/live_models.py +0 -0
  600. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/__init__.py +0 -0
  601. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/_mlx_worker.py +0 -0
  602. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/base.py +0 -0
  603. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/capabilities.py +0 -0
  604. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/context_probe.py +0 -0
  605. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/discovery.py +0 -0
  606. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/ds4.py +0 -0
  607. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/lmstudio.py +0 -0
  608. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/mlx.py +0 -0
  609. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/mlx_engine.py +0 -0
  610. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/mlx_tools.py +0 -0
  611. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/ollama.py +0 -0
  612. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/sglang.py +0 -0
  613. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/smoke.py +0 -0
  614. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/tgi.py +0 -0
  615. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/tool_support.py +0 -0
  616. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/local/vllm.py +0 -0
  617. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/manager.py +0 -0
  618. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/model_specs.py +0 -0
  619. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/models.py +0 -0
  620. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/models_dev.py +0 -0
  621. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/opencode_models.py +0 -0
  622. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/__init__.py +0 -0
  623. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
  624. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/converters/messages.py +0 -0
  625. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/converters/tools.py +0 -0
  626. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
  627. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/schema/models.py +0 -0
  628. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
  629. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
  630. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
  631. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
  632. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
  633. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
  634. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
  635. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/prime_agent.py +0 -0
  636. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/profiles.py +0 -0
  637. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/recommendations.py +0 -0
  638. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/registry.py +0 -0
  639. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/subscription_env.py +0 -0
  640. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/subscription_login.py +0 -0
  641. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/uhp.py +0 -0
  642. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/providers/usage.py +0 -0
  643. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/py.typed +0 -0
  644. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rendering/__init__.py +0 -0
  645. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rendering/html_export.py +0 -0
  646. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rendering/markdown.py +0 -0
  647. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rendering/transcript_export.py +0 -0
  648. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/__init__.py +0 -0
  649. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/coding_session.py +0 -0
  650. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/config.py +0 -0
  651. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/context.py +0 -0
  652. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/identity.py +0 -0
  653. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/kernel.py +0 -0
  654. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/kernel_backend.py +0 -0
  655. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/kernel_docker.py +0 -0
  656. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/kernel_monty.py +0 -0
  657. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/kernel_server.py +0 -0
  658. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/policy.py +0 -0
  659. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/root_runtime.py +0 -0
  660. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/root_worker.py +0 -0
  661. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/sandbox.py +0 -0
  662. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/subcalls.py +0 -0
  663. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/supervisor.py +0 -0
  664. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/worker.py +0 -0
  665. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/rlm/worker_process.py +0 -0
  666. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/__init__.py +0 -0
  667. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/adk.py +0 -0
  668. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/antigravity_cli.py +0 -0
  669. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/antigravity_managed.py +0 -0
  670. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/antigravity_sdk.py +0 -0
  671. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/antigravity_status.py +0 -0
  672. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/base.py +0 -0
  673. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/builtin.py +0 -0
  674. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/claude_agent_sdk.py +0 -0
  675. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/codex_sdk.py +0 -0
  676. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/copilot_sdk.py +0 -0
  677. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/devin_cli.py +0 -0
  678. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/devin_status.py +0 -0
  679. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/errors.py +0 -0
  680. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/openai_agents.py +0 -0
  681. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/openai_sandbox.py +0 -0
  682. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/openai_session.py +0 -0
  683. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/pydanticai.py +0 -0
  684. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/registry.py +0 -0
  685. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/tool_bridge.py +0 -0
  686. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/tool_bridge_openai.py +0 -0
  687. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/tool_bridge_pydanticai.py +0 -0
  688. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/runtime/vendor_cli.py +0 -0
  689. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/safety/__init__.py +0 -0
  690. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/safety/sandbox.py +0 -0
  691. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/safety/warnings.py +0 -0
  692. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/sandbox/__init__.py +0 -0
  693. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/sandbox/backends.py +0 -0
  694. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/sandbox/execution.py +0 -0
  695. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/sandbox/local_sandbox.py +0 -0
  696. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/search_registry.py +0 -0
  697. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/server/__init__.py +0 -0
  698. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/server/api.py +0 -0
  699. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/server/web.py +0 -0
  700. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/session/__init__.py +0 -0
  701. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/session/factory.py +0 -0
  702. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/session/persistence.py +0 -0
  703. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/session/share_artifacts.py +0 -0
  704. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/session/sharing.py +0 -0
  705. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/session/switchboard.py +0 -0
  706. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/session.py +0 -0
  707. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/sidebar.py +0 -0
  708. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/skillopt.py +0 -0
  709. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/skills.py +0 -0
  710. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/stream_view.py +0 -0
  711. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/styles/__init__.py +0 -0
  712. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tool_call.py +0 -0
  713. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/__init__.py +0 -0
  714. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/agent_tools.py +0 -0
  715. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/apply_patch.py +0 -0
  716. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/base.py +0 -0
  717. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/batch_tool.py +0 -0
  718. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/compact_tool.py +0 -0
  719. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/context_handle.py +0 -0
  720. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/context_tools.py +0 -0
  721. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/core_tools.py +0 -0
  722. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/diagnostics.py +0 -0
  723. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/diff_utils.py +0 -0
  724. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/display.py +0 -0
  725. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/dynamic_workflow.py +0 -0
  726. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/edit_tools.py +0 -0
  727. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/enhanced_base.py +0 -0
  728. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/file_tools.py +0 -0
  729. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/file_tracking.py +0 -0
  730. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/governed.py +0 -0
  731. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/harness_agent_session.py +0 -0
  732. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/image_tools.py +0 -0
  733. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/lsp_tools.py +0 -0
  734. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/mcp_tools.py +0 -0
  735. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/monty_tool.py +0 -0
  736. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/network_tools.py +0 -0
  737. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/output_spill.py +0 -0
  738. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/peer_agent_tools.py +0 -0
  739. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/permissions.py +0 -0
  740. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/post_edit.py +0 -0
  741. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/question_tool.py +0 -0
  742. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/request_permissions_tool.py +0 -0
  743. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/search_tools.py +0 -0
  744. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/semantic_search.py +0 -0
  745. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/shell_session.py +0 -0
  746. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/shell_tools.py +0 -0
  747. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/skill_tools.py +0 -0
  748. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/spawn_harness.py +0 -0
  749. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/todo_tools.py +0 -0
  750. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/tool_search.py +0 -0
  751. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/validation.py +0 -0
  752. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tools/web_tools.py +0 -0
  753. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tui_integration.py +0 -0
  754. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tui_widgets/__init__.py +0 -0
  755. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
  756. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tui_widgets/widgets/progress.py +0 -0
  757. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
  758. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/undo_manager.py +0 -0
  759. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/utils/__init__.py +0 -0
  760. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/utils/error_handling.py +0 -0
  761. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/utils/fuzzy.py +0 -0
  762. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/__init__.py +0 -0
  763. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/a2a_connect.py +0 -0
  764. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/agent_store.py +0 -0
  765. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/agent_switcher.py +0 -0
  766. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/animation_manager.py +0 -0
  767. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/code_context.py +0 -0
  768. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/command_palette.py +0 -0
  769. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/connection_status.py +0 -0
  770. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/conversation_history.py +0 -0
  771. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/diff_indicator.py +0 -0
  772. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/enhanced_status_bar.py +0 -0
  773. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/enhanced_toast.py +0 -0
  774. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/file_browser.py +0 -0
  775. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/file_reference.py +0 -0
  776. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/harness_hub.py +0 -0
  777. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/leader_key.py +0 -0
  778. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/mode_switcher.py +0 -0
  779. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/model_picker.py +0 -0
  780. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/outcome_screen.py +0 -0
  781. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/permission_preview.py +0 -0
  782. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/prompt.py +0 -0
  783. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/provider_connect.py +0 -0
  784. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/pty_shell.py +0 -0
  785. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/resizable_sidebar.py +0 -0
  786. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/response_changes.py +0 -0
  787. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/response_display.py +0 -0
  788. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/rewind_overlay.py +0 -0
  789. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/rich_tool_display.py +0 -0
  790. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/sidebar_panels.py +0 -0
  791. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/slash_commands.py +0 -0
  792. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/slash_complete.py +0 -0
  793. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/split_view.py +0 -0
  794. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/status_bar.py +0 -0
  795. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/superqode_display.py +0 -0
  796. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/theme_picker.py +0 -0
  797. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/thinking.py +0 -0
  798. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/thinking_display.py +0 -0
  799. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/throbber.py +0 -0
  800. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/toast.py +0 -0
  801. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/uhp_connect.py +0 -0
  802. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/widgets/unified_output.py +0 -0
  803. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workorders/__init__.py +0 -0
  804. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workorders/cockpit.py +0 -0
  805. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workorders/integration.py +0 -0
  806. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workorders/models.py +0 -0
  807. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workorders/runner.py +0 -0
  808. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workorders/store.py +0 -0
  809. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workorders/usage.py +0 -0
  810. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workorders/worker.py +0 -0
  811. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/__init__.py +0 -0
  812. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/artifacts.py +0 -0
  813. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/change_summary.py +0 -0
  814. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/coordinator.py +0 -0
  815. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/diff_tracker.py +0 -0
  816. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/git_guard.py +0 -0
  817. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/git_snapshot.py +0 -0
  818. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/manager.py +0 -0
  819. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/snapshot.py +0 -0
  820. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/watcher.py +0 -0
  821. {superqode-2.3.1 → superqode-2.4.0}/src/superqode/workspace/worktree.py +0 -0
  822. {superqode-2.3.1 → superqode-2.4.0}/src/superqode.egg-info/dependency_links.txt +0 -0
  823. {superqode-2.3.1 → superqode-2.4.0}/src/superqode.egg-info/entry_points.txt +0 -0
  824. {superqode-2.3.1 → superqode-2.4.0}/src/superqode.egg-info/top_level.txt +0 -0
  825. {superqode-2.3.1 → superqode-2.4.0}/tests/test_030_candidate.py +0 -0
  826. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_bridge.py +0 -0
  827. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_conformance.py +0 -0
  828. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_connect.py +0 -0
  829. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_context.py +0 -0
  830. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_keys.py +0 -0
  831. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_limits.py +0 -0
  832. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_oauth.py +0 -0
  833. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_security.py +0 -0
  834. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_shortlist.py +0 -0
  835. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_trust.py +0 -0
  836. {superqode-2.3.1 → superqode-2.4.0}/tests/test_a2a_understand.py +0 -0
  837. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_agent_dispatch.py +0 -0
  838. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_client.py +0 -0
  839. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_free_models.py +0 -0
  840. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_parent_tool_linking.py +0 -0
  841. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_permission_store.py +0 -0
  842. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_registry.py +0 -0
  843. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_render.py +0 -0
  844. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_server.py +0 -0
  845. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_session_store.py +0 -0
  846. {superqode-2.3.1 → superqode-2.4.0}/tests/test_acp_slash.py +0 -0
  847. {superqode-2.3.1 → superqode-2.4.0}/tests/test_adaptive_compaction.py +0 -0
  848. {superqode-2.3.1 → superqode-2.4.0}/tests/test_agent_importer.py +0 -0
  849. {superqode-2.3.1 → superqode-2.4.0}/tests/test_agent_install_commands.py +0 -0
  850. {superqode-2.3.1 → superqode-2.4.0}/tests/test_agent_loop_harness.py +0 -0
  851. {superqode-2.3.1 → superqode-2.4.0}/tests/test_agent_memory.py +0 -0
  852. {superqode-2.3.1 → superqode-2.4.0}/tests/test_agents_md_compat.py +0 -0
  853. {superqode-2.3.1 → superqode-2.4.0}/tests/test_agy_tui_commands.py +0 -0
  854. {superqode-2.3.1 → superqode-2.4.0}/tests/test_app_main_contract.py +0 -0
  855. {superqode-2.3.1 → superqode-2.4.0}/tests/test_apply_patch.py +0 -0
  856. {superqode-2.3.1 → superqode-2.4.0}/tests/test_auth.py +0 -0
  857. {superqode-2.3.1 → superqode-2.4.0}/tests/test_bash_spill.py +0 -0
  858. {superqode-2.3.1 → superqode-2.4.0}/tests/test_benchmarks.py +0 -0
  859. {superqode-2.3.1 → superqode-2.4.0}/tests/test_catalog_freshness.py +0 -0
  860. {superqode-2.3.1 → superqode-2.4.0}/tests/test_change_summary.py +0 -0
  861. {superqode-2.3.1 → superqode-2.4.0}/tests/test_channels.py +0 -0
  862. {superqode-2.3.1 → superqode-2.4.0}/tests/test_cli_commands.py +0 -0
  863. {superqode-2.3.1 → superqode-2.4.0}/tests/test_cli_connect.py +0 -0
  864. {superqode-2.3.1 → superqode-2.4.0}/tests/test_cli_reference_coverage.py +0 -0
  865. {superqode-2.3.1 → superqode-2.4.0}/tests/test_clickable_commands.py +0 -0
  866. {superqode-2.3.1 → superqode-2.4.0}/tests/test_command_safety.py +0 -0
  867. {superqode-2.3.1 → superqode-2.4.0}/tests/test_commands_runtime.py +0 -0
  868. {superqode-2.3.1 → superqode-2.4.0}/tests/test_compaction.py +0 -0
  869. {superqode-2.3.1 → superqode-2.4.0}/tests/test_config_loader.py +0 -0
  870. {superqode-2.3.1 → superqode-2.4.0}/tests/test_config_runtime.py +0 -0
  871. {superqode-2.3.1 → superqode-2.4.0}/tests/test_connect_harness_screen.py +0 -0
  872. {superqode-2.3.1 → superqode-2.4.0}/tests/test_connect_setup.py +0 -0
  873. {superqode-2.3.1 → superqode-2.4.0}/tests/test_connection_profiles.py +0 -0
  874. {superqode-2.3.1 → superqode-2.4.0}/tests/test_context_handles.py +0 -0
  875. {superqode-2.3.1 → superqode-2.4.0}/tests/test_context_probe.py +0 -0
  876. {superqode-2.3.1 → superqode-2.4.0}/tests/test_context_remaining.py +0 -0
  877. {superqode-2.3.1 → superqode-2.4.0}/tests/test_copilot_login_ux.py +0 -0
  878. {superqode-2.3.1 → superqode-2.4.0}/tests/test_copilot_tui_commands.py +0 -0
  879. {superqode-2.3.1 → superqode-2.4.0}/tests/test_create_skill_tool.py +0 -0
  880. {superqode-2.3.1 → superqode-2.4.0}/tests/test_deepagents_model_spec.py +0 -0
  881. {superqode-2.3.1 → superqode-2.4.0}/tests/test_deferred_tools.py +0 -0
  882. {superqode-2.3.1 → superqode-2.4.0}/tests/test_design_system_contrast.py +0 -0
  883. {superqode-2.3.1 → superqode-2.4.0}/tests/test_developer_workflow_docs.py +0 -0
  884. {superqode-2.3.1 → superqode-2.4.0}/tests/test_ds4_local_client.py +0 -0
  885. {superqode-2.3.1 → superqode-2.4.0}/tests/test_dsh_harness.py +0 -0
  886. {superqode-2.3.1 → superqode-2.4.0}/tests/test_dynamic_workflow_tool.py +0 -0
  887. {superqode-2.3.1 → superqode-2.4.0}/tests/test_edit_line_number_strip.py +0 -0
  888. {superqode-2.3.1 → superqode-2.4.0}/tests/test_env_introspect.py +0 -0
  889. {superqode-2.3.1 → superqode-2.4.0}/tests/test_execution_resolver.py +0 -0
  890. {superqode-2.3.1 → superqode-2.4.0}/tests/test_extensions.py +0 -0
  891. {superqode-2.3.1 → superqode-2.4.0}/tests/test_free_models.py +0 -0
  892. {superqode-2.3.1 → superqode-2.4.0}/tests/test_governance.py +0 -0
  893. {superqode-2.3.1 → superqode-2.4.0}/tests/test_grok_cli_auth.py +0 -0
  894. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_agent_session.py +0 -0
  895. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_bench.py +0 -0
  896. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_bench_paths.py +0 -0
  897. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_catalog.py +0 -0
  898. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_connect_catalog.py +0 -0
  899. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_drift.py +0 -0
  900. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_eval_splits.py +0 -0
  901. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_explain.py +0 -0
  902. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_hooks.py +0 -0
  903. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_hub_catalog.py +0 -0
  904. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_hub_screen.py +0 -0
  905. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_kernel.py +0 -0
  906. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_mcp_server.py +0 -0
  907. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_model_policy.py +0 -0
  908. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_observability.py +0 -0
  909. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_omni.py +0 -0
  910. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_output.py +0 -0
  911. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_permissions.py +0 -0
  912. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_promotion.py +0 -0
  913. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_protocol.py +0 -0
  914. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_sandbox.py +0 -0
  915. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_seesaw_dimensions.py +0 -0
  916. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_self_improve.py +0 -0
  917. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_store.py +0 -0
  918. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_usage.py +0 -0
  919. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_wizard.py +0 -0
  920. {superqode-2.3.1 → superqode-2.4.0}/tests/test_harness_workflow.py +0 -0
  921. {superqode-2.3.1 → superqode-2.4.0}/tests/test_headless.py +0 -0
  922. {superqode-2.3.1 → superqode-2.4.0}/tests/test_hf_fetch.py +0 -0
  923. {superqode-2.3.1 → superqode-2.4.0}/tests/test_hooks.py +0 -0
  924. {superqode-2.3.1 → superqode-2.4.0}/tests/test_integration_docs.py +0 -0
  925. {superqode-2.3.1 → superqode-2.4.0}/tests/test_kimi_k3_provider.py +0 -0
  926. {superqode-2.3.1 → superqode-2.4.0}/tests/test_kimi_k3_routes.py +0 -0
  927. {superqode-2.3.1 → superqode-2.4.0}/tests/test_linter_runner.py +0 -0
  928. {superqode-2.3.1 → superqode-2.4.0}/tests/test_litellm_gateway.py +0 -0
  929. {superqode-2.3.1 → superqode-2.4.0}/tests/test_live_acp_registry.py +0 -0
  930. {superqode-2.3.1 → superqode-2.4.0}/tests/test_live_models.py +0 -0
  931. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_airplane.py +0 -0
  932. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_build.py +0 -0
  933. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_code_index.py +0 -0
  934. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_labs.py +0 -0
  935. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_migrate.py +0 -0
  936. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_model_optimizations.py +0 -0
  937. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_packs.py +0 -0
  938. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_sandbox.py +0 -0
  939. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_search.py +0 -0
  940. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_servers.py +0 -0
  941. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_setup.py +0 -0
  942. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_smoke.py +0 -0
  943. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_stack.py +0 -0
  944. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_tool_capabilities.py +0 -0
  945. {superqode-2.3.1 → superqode-2.4.0}/tests/test_local_tool_support.py +0 -0
  946. {superqode-2.3.1 → superqode-2.4.0}/tests/test_login_api.py +0 -0
  947. {superqode-2.3.1 → superqode-2.4.0}/tests/test_loop_guard.py +0 -0
  948. {superqode-2.3.1 → superqode-2.4.0}/tests/test_managed_harness_backend.py +0 -0
  949. {superqode-2.3.1 → superqode-2.4.0}/tests/test_markdown_render.py +0 -0
  950. {superqode-2.3.1 → superqode-2.4.0}/tests/test_mcp.py +0 -0
  951. {superqode-2.3.1 → superqode-2.4.0}/tests/test_mcp_example_server.py +0 -0
  952. {superqode-2.3.1 → superqode-2.4.0}/tests/test_mcp_integration.py +0 -0
  953. {superqode-2.3.1 → superqode-2.4.0}/tests/test_mcp_live.py +0 -0
  954. {superqode-2.3.1 → superqode-2.4.0}/tests/test_mcp_oauth_generalized.py +0 -0
  955. {superqode-2.3.1 → superqode-2.4.0}/tests/test_mcp_tools_runtime.py +0 -0
  956. {superqode-2.3.1 → superqode-2.4.0}/tests/test_mcp_two_way.py +0 -0
  957. {superqode-2.3.1 → superqode-2.4.0}/tests/test_memory_recall.py +0 -0
  958. {superqode-2.3.1 → superqode-2.4.0}/tests/test_mlx_tools.py +0 -0
  959. {superqode-2.3.1 → superqode-2.4.0}/tests/test_model_profiles.py +0 -0
  960. {superqode-2.3.1 → superqode-2.4.0}/tests/test_model_specs.py +0 -0
  961. {superqode-2.3.1 → superqode-2.4.0}/tests/test_models_dev.py +0 -0
  962. {superqode-2.3.1 → superqode-2.4.0}/tests/test_monty_tool.py +0 -0
  963. {superqode-2.3.1 → superqode-2.4.0}/tests/test_navigation_history.py +0 -0
  964. {superqode-2.3.1 → superqode-2.4.0}/tests/test_network_policy.py +0 -0
  965. {superqode-2.3.1 → superqode-2.4.0}/tests/test_ollama_client.py +0 -0
  966. {superqode-2.3.1 → superqode-2.4.0}/tests/test_omnigent_agent_session_smoke.py +0 -0
  967. {superqode-2.3.1 → superqode-2.4.0}/tests/test_omnigent_importer.py +0 -0
  968. {superqode-2.3.1 → superqode-2.4.0}/tests/test_openai_session.py +0 -0
  969. {superqode-2.3.1 → superqode-2.4.0}/tests/test_output_spill.py +0 -0
  970. {superqode-2.3.1 → superqode-2.4.0}/tests/test_parallel_compare.py +0 -0
  971. {superqode-2.3.1 → superqode-2.4.0}/tests/test_peer_agents.py +0 -0
  972. {superqode-2.3.1 → superqode-2.4.0}/tests/test_plugin_hook_wiring.py +0 -0
  973. {superqode-2.3.1 → superqode-2.4.0}/tests/test_plugins.py +0 -0
  974. {superqode-2.3.1 → superqode-2.4.0}/tests/test_policies_and_turndiff.py +0 -0
  975. {superqode-2.3.1 → superqode-2.4.0}/tests/test_post_edit_verify.py +0 -0
  976. {superqode-2.3.1 → superqode-2.4.0}/tests/test_prime_agent_client.py +0 -0
  977. {superqode-2.3.1 → superqode-2.4.0}/tests/test_prime_agent_harness.py +0 -0
  978. {superqode-2.3.1 → superqode-2.4.0}/tests/test_prime_agent_provider.py +0 -0
  979. {superqode-2.3.1 → superqode-2.4.0}/tests/test_prime_command_surface.py +0 -0
  980. {superqode-2.3.1 → superqode-2.4.0}/tests/test_prime_tui_rpc.py +0 -0
  981. {superqode-2.3.1 → superqode-2.4.0}/tests/test_progressive_discovery.py +0 -0
  982. {superqode-2.3.1 → superqode-2.4.0}/tests/test_progressive_reveals.py +0 -0
  983. {superqode-2.3.1 → superqode-2.4.0}/tests/test_project_trust.py +0 -0
  984. {superqode-2.3.1 → superqode-2.4.0}/tests/test_prompt_stack.py +0 -0
  985. {superqode-2.3.1 → superqode-2.4.0}/tests/test_provider_catalog.py +0 -0
  986. {superqode-2.3.1 → superqode-2.4.0}/tests/test_provider_dynamic.py +0 -0
  987. {superqode-2.3.1 → superqode-2.4.0}/tests/test_provider_models.py +0 -0
  988. {superqode-2.3.1 → superqode-2.4.0}/tests/test_provider_recommendations.py +0 -0
  989. {superqode-2.3.1 → superqode-2.4.0}/tests/test_pure_mode_sessions.py +0 -0
  990. {superqode-2.3.1 → superqode-2.4.0}/tests/test_qm_deployment_layer.py +0 -0
  991. {superqode-2.3.1 → superqode-2.4.0}/tests/test_rate_limit_retry.py +0 -0
  992. {superqode-2.3.1 → superqode-2.4.0}/tests/test_read_tool_limits.py +0 -0
  993. {superqode-2.3.1 → superqode-2.4.0}/tests/test_reasoning_and_budget.py +0 -0
  994. {superqode-2.3.1 → superqode-2.4.0}/tests/test_recursive_eval_packs.py +0 -0
  995. {superqode-2.3.1 → superqode-2.4.0}/tests/test_release_metadata.py +0 -0
  996. {superqode-2.3.1 → superqode-2.4.0}/tests/test_rlm_code_integration.py +0 -0
  997. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_adk.py +0 -0
  998. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_antigravity_cli.py +0 -0
  999. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_antigravity_managed.py +0 -0
  1000. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_antigravity_sdk.py +0 -0
  1001. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_builtin.py +0 -0
  1002. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_claude_agent_sdk.py +0 -0
  1003. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_codex_sdk.py +0 -0
  1004. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_copilot_sdk.py +0 -0
  1005. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_devin_cli.py +0 -0
  1006. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_dialog.py +0 -0
  1007. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_openai_agents.py +0 -0
  1008. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_openai_events.py +0 -0
  1009. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_openai_hitl.py +0 -0
  1010. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_openai_sandbox.py +0 -0
  1011. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_protocol.py +0 -0
  1012. {superqode-2.3.1 → superqode-2.4.0}/tests/test_runtime_pydanticai.py +0 -0
  1013. {superqode-2.3.1 → superqode-2.4.0}/tests/test_sandbox_backends.py +0 -0
  1014. {superqode-2.3.1 → superqode-2.4.0}/tests/test_sandbox_execution.py +0 -0
  1015. {superqode-2.3.1 → superqode-2.4.0}/tests/test_search_roots.py +0 -0
  1016. {superqode-2.3.1 → superqode-2.4.0}/tests/test_semantic_search.py +0 -0
  1017. {superqode-2.3.1 → superqode-2.4.0}/tests/test_session_switchboard.py +0 -0
  1018. {superqode-2.3.1 → superqode-2.4.0}/tests/test_shell_session.py +0 -0
  1019. {superqode-2.3.1 → superqode-2.4.0}/tests/test_simple_login.py +0 -0
  1020. {superqode-2.3.1 → superqode-2.4.0}/tests/test_simple_query_fastpath.py +0 -0
  1021. {superqode-2.3.1 → superqode-2.4.0}/tests/test_skillopt.py +0 -0
  1022. {superqode-2.3.1 → superqode-2.4.0}/tests/test_slash_runtime.py +0 -0
  1023. {superqode-2.3.1 → superqode-2.4.0}/tests/test_spawn_harness_tool.py +0 -0
  1024. {superqode-2.3.1 → superqode-2.4.0}/tests/test_status_bar_layout.py +0 -0
  1025. {superqode-2.3.1 → superqode-2.4.0}/tests/test_steering_continue_reminders.py +0 -0
  1026. {superqode-2.3.1 → superqode-2.4.0}/tests/test_streaming_tool_calls.py +0 -0
  1027. {superqode-2.3.1 → superqode-2.4.0}/tests/test_subscription_billing_policy.py +0 -0
  1028. {superqode-2.3.1 → superqode-2.4.0}/tests/test_subscription_login.py +0 -0
  1029. {superqode-2.3.1 → superqode-2.4.0}/tests/test_subscription_login_consent.py +0 -0
  1030. {superqode-2.3.1 → superqode-2.4.0}/tests/test_synthetic_gateways.py +0 -0
  1031. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tau_harness_adapter.py +0 -0
  1032. {superqode-2.3.1 → superqode-2.4.0}/tests/test_terminal_output_limits.py +0 -0
  1033. {superqode-2.3.1 → superqode-2.4.0}/tests/test_theme_contrast.py +0 -0
  1034. {superqode-2.3.1 → superqode-2.4.0}/tests/test_theme_picker.py +0 -0
  1035. {superqode-2.3.1 → superqode-2.4.0}/tests/test_theme_repaint.py +0 -0
  1036. {superqode-2.3.1 → superqode-2.4.0}/tests/test_todo_tools.py +0 -0
  1037. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tool_args_repair.py +0 -0
  1038. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tool_batch_safety.py +0 -0
  1039. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tool_bridge.py +0 -0
  1040. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tool_bridge_openai.py +0 -0
  1041. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tool_call_repair.py +0 -0
  1042. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tool_output_pruning.py +0 -0
  1043. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tool_tracking.py +0 -0
  1044. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tools.py +0 -0
  1045. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_change_summary.py +0 -0
  1046. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_chat_mode.py +0 -0
  1047. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_diagnostics.py +0 -0
  1048. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_exit.py +0 -0
  1049. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_feedback.py +0 -0
  1050. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_launch_performance.py +0 -0
  1051. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_llamacpp_connect.py +0 -0
  1052. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_markdown_cleanup.py +0 -0
  1053. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_mlx_connect.py +0 -0
  1054. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_mounted.py +0 -0
  1055. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_onboarding.py +0 -0
  1056. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_smoke.py +0 -0
  1057. {superqode-2.3.1 → superqode-2.4.0}/tests/test_tui_tool_display.py +0 -0
  1058. {superqode-2.3.1 → superqode-2.4.0}/tests/test_uhp_backend.py +0 -0
  1059. {superqode-2.3.1 → superqode-2.4.0}/tests/test_uhp_client.py +0 -0
  1060. {superqode-2.3.1 → superqode-2.4.0}/tests/test_uhp_connect.py +0 -0
  1061. {superqode-2.3.1 → superqode-2.4.0}/tests/test_uhp_server.py +0 -0
  1062. {superqode-2.3.1 → superqode-2.4.0}/tests/test_update_command.py +0 -0
  1063. {superqode-2.3.1 → superqode-2.4.0}/tests/test_vendor_cli_runtime.py +0 -0
  1064. {superqode-2.3.1 → superqode-2.4.0}/tests/test_version.py +0 -0
  1065. {superqode-2.3.1 → superqode-2.4.0}/tests/test_view_image.py +0 -0
  1066. {superqode-2.3.1 → superqode-2.4.0}/tests/test_web_server_auth.py +0 -0
  1067. {superqode-2.3.1 → superqode-2.4.0}/tests/test_workorders.py +0 -0
  1068. {superqode-2.3.1 → superqode-2.4.0}/tests/test_workspace.py +0 -0
  1069. {superqode-2.3.1 → superqode-2.4.0}/tests/test_zai_provider.py +0 -0
@@ -5,7 +5,97 @@ 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.0] - 2026-09-18
9
+
10
+ ### Jev integration
11
+
12
+ SuperQode 2.4.0 adds a general decision harness for Jev, native tool-permission
13
+ checks, labelled decision evaluations, and opt-in rubric grading. Coding models
14
+ continue to generate code; Jev supplies typed decisions that SuperQode validates
15
+ and applies through explicit policies.
16
+
17
+ ### Added
18
+
19
+ - **General decision harness.** The `systemone` backend evaluates reviewed
20
+ Choice, Score, and Noul question packs. Input schemas, confidence thresholds,
21
+ abstention, and pack hashes make each decision inspectable and reproducible.
22
+ Examples cover ticket triage, factory-route suggestions, and tool permissions.
23
+ - **Native tool-permission checks.** `:systemone live` enables Jev checks in
24
+ Core/BYOK sessions. Hard policy denials remain authoritative; model ASK uses
25
+ the approval flow even for otherwise auto-allowed tools. Client failures are
26
+ visible and fall back to the existing permission policy.
27
+ - **Direct decision sessions.** `:systemone connect <pack>` and
28
+ `:connect systemone <pack>` connect the TUI directly to Jev without a coding
29
+ provider. Status distinguishes a decision session from the tool-check sidecar.
30
+ - **Labelled evaluations.** `harness eval` supports exact typed output labels
31
+ and explicit evaluator results. Scorecards include coverage, accuracy among
32
+ graded cases, abstentions, errors, dataset hashes, and decision evidence.
33
+ Synthetic routing and tool-permission starter datasets include held-in and
34
+ held-out splits.
35
+ - **Rubric grading.** `SUPERQODE_RUBRIC_GRADER=systemone` uses Jev verdicts in
36
+ the native rubric revision loop. A `jev_rubric` task evaluator judges another
37
+ harness's response. Headless JSON exposes `rubric_result`.
38
+ - **Transport and observability.** Live decisions report returned model, HTTP
39
+ status, latency, and available token usage. Configurable compatible endpoints,
40
+ stub clients, sanitized recordings, and replay support development and testing.
41
+
42
+ ### Changed
43
+
44
+ - Invalid, uncertain, or unavailable rubric judgments are explicitly `ungraded`.
45
+ Utility-grader errors no longer count as `satisfied`. Headless runs with an
46
+ unsatisfied or ungraded rubric report `success: false` and exit with code 2.
47
+ - Legacy evaluation tasks retain their non-empty smoke check, now identified as
48
+ `smoke_only`. Use labelled or rubric evaluators for stronger assessment.
49
+
50
+ ### Reliability
51
+
52
+ - Tool-gate pack 1.1.0 requires low destructive and exfiltration risk before
53
+ auto-approval. Uncertain risk cannot produce ALLOW.
54
+ - Live criteria serialization matches the API contract. Evaluation deadlines
55
+ include retries, and recording failures do not discard valid decisions.
56
+ - Input redaction covers common credential fields, headers, command flags,
57
+ URL credentials, and private-key blocks. Offline policies remain respected.
58
+
59
+ ### Scope
60
+
61
+ Jev integration is opt-in and requires separate TypeSafe credentials for live
62
+ use. The native gate does not intercept external agent runtimes. Route decisions
63
+ are suggestions; automatic factory routing and automatic LLM fallback are not
64
+ included. Starter datasets are examples, not published accuracy benchmarks.
65
+
66
+ See [the Jev integration guide](docs/advanced/systemone.md) and
67
+ [2.4.0 release notes](docs/advanced/release-2.4.0.md) for setup and migration.
68
+
69
+ ## [2.3.2] - 2026-09-13
70
+
71
+ A remote UHP bind no longer serves the harness catalog without a bearer.
72
+
73
+ ### 🔐 UHP security
74
+
75
+ - A remote bind no longer serves the harness catalog without a bearer.
76
+ Architecture section 5 of the specification allows one unauthenticated
77
+ route, discovery, so opening the catalog left the bind failing the suite's
78
+ authentication checks and disclosing the harness id, the model list and the
79
+ harness configuration to anyone who found the host. The new
80
+ `serve uhp --public-catalog` flag restores the old behaviour for anyone who
81
+ wants it, and says in its help what it costs. Present since `serve uhp`
82
+ shipped in 2.2.2.
83
+
84
+ ### 🧩 Unified Harness Protocol
85
+
86
+ - Core conformance is now measured by HarnessRouter rather than by us. Their
87
+ `conformance-measure` workflow ran suite `2026.9.12` against
88
+ `uhp.superqode.dev` itself at class full: core passed 40 of 40, including
89
+ both authentication checks. The badge and report are on the UHP conformance
90
+ page. Extended stays out of reach on that host, because artifact retrieval
91
+ is deferred and session listing is off wherever one bearer is shared.
92
+
93
+ ### 📦 Packaging
94
+
95
+ - The `uhp` extra is recorded in `uv.lock`. It has been declared in
96
+ `pyproject.toml` since 2.2.4, so a locked install of the extra resolved
97
+ against a lock file that did not know it existed.
98
+ - The `uhp` extra is listed in the installation reference.
9
99
 
10
100
  ## [2.3.1] - 2026-09-13
11
101
 
@@ -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.1
3
+ Version: 2.4.0
4
4
  Summary: The harness layer for coding agents
5
5
  Author-email: Shashi Jagtap <info@super-agentic.ai>
6
6
  Maintainer-email: Shashi Jagtap <info@super-agentic.ai>
@@ -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
@@ -184,6 +185,7 @@ Dynamic: license-file
184
185
  <p align="center">
185
186
  <a href="https://pypi.org/project/superqode/"><img src="https://img.shields.io/pypi/v/superqode?style=flat-square&color=7c3aed&label=pypi" alt="PyPI"></a>
186
187
  <a href="https://pypi.org/project/superqode/"><img src="https://img.shields.io/pypi/pyversions/superqode?style=flat-square&color=3776ab" alt="Python"></a>
188
+ <a href="https://unifiedharnessprotocol.org/conformance#measured-implementations"><img src="https://unifiedharnessprotocol.org/badges/superqode.svg" alt="UHP core 2026-09-12"></a>
187
189
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green?style=flat-square" alt="License"></a>
188
190
  <a href="https://github.com/SuperagenticAI/superqode/stargazers"><img src="https://img.shields.io/github/stars/SuperagenticAI/superqode?style=flat-square&color=f59e0b" alt="Stars"></a>
189
191
  <a href="https://github.com/SuperagenticAI/superqode/discussions"><img src="https://img.shields.io/github/discussions/SuperagenticAI/superqode?style=flat-square" alt="Discussions"></a>
@@ -30,6 +30,7 @@
30
30
  <p align="center">
31
31
  <a href="https://pypi.org/project/superqode/"><img src="https://img.shields.io/pypi/v/superqode?style=flat-square&color=7c3aed&label=pypi" alt="PyPI"></a>
32
32
  <a href="https://pypi.org/project/superqode/"><img src="https://img.shields.io/pypi/pyversions/superqode?style=flat-square&color=3776ab" alt="Python"></a>
33
+ <a href="https://unifiedharnessprotocol.org/conformance#measured-implementations"><img src="https://unifiedharnessprotocol.org/badges/superqode.svg" alt="UHP core 2026-09-12"></a>
33
34
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green?style=flat-square" alt="License"></a>
34
35
  <a href="https://github.com/SuperagenticAI/superqode/stargazers"><img src="https://img.shields.io/github/stars/SuperagenticAI/superqode?style=flat-square&color=f59e0b" alt="Stars"></a>
35
36
  <a href="https://github.com/SuperagenticAI/superqode/discussions"><img src="https://img.shields.io/github/discussions/SuperagenticAI/superqode?style=flat-square" alt="Discussions"></a>
@@ -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.1"
3
+ version = "2.4.0"
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.1"
41
+ __version__ = "2.4.0"
42
42
 
43
43
  # Stable, lightweight public extension surface. Importing this package does
44
44
  # not discover or execute third-party extensions; discovery happens only when
@@ -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,
@@ -1357,8 +1367,12 @@ class AgentLoop:
1357
1367
  otherwise-ASK command.
1358
1368
  3. The manager's own **deny** (e.g. dangerous-command guards) still wins
1359
1369
  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.
1370
+ 4. Opt-in System One may **deny** an otherwise-allowed call, or
1371
+ **allow** an otherwise-ASK call. Model ASK requires approval.
1372
+ Unavailable evaluations visibly fall back to the existing policy.
1373
+ YAML and manager denials never call the client.
1374
+ 5. Manager **allow** passes through; otherwise (ASK) we honour a hook,
1375
+ rule, or System One allow, or fall back to the pause/prompt flow.
1362
1376
  """
1363
1377
  from .hooks import PERMISSION_REQUEST
1364
1378
 
@@ -1405,11 +1419,18 @@ class AgentLoop:
1405
1419
  error=f"Permission denied for tool: {name}",
1406
1420
  metadata={"permission": "deny", "tool": name},
1407
1421
  )
1408
- if permission == Permission.ALLOW and not rule_ask:
1422
+
1423
+ from ..systemone.runtime import apply_systemone_gate
1424
+
1425
+ so_denied, so_allow, so_ask = await apply_systemone_gate(self, name, arguments)
1426
+ if so_denied is not None:
1427
+ return so_denied
1428
+
1429
+ if permission == Permission.ALLOW and not rule_ask and not so_ask:
1409
1430
  return None
1410
1431
  if tool_call_id and tool_call_id in self._approved_tool_call_ids:
1411
1432
  return None
1412
- if (verdict.allowed or rule_allow) and not rule_ask:
1433
+ if (verdict.allowed or rule_allow or so_allow) and not rule_ask and not so_ask:
1413
1434
  return None
1414
1435
 
1415
1436
  if self.pause_on_approval:
@@ -2275,6 +2296,7 @@ class AgentLoop:
2275
2296
  auto_continues = 0
2276
2297
  length_parts: List[str] = []
2277
2298
  rubric_rounds = 0
2299
+ rubric_result = None
2278
2300
 
2279
2301
  # Emit initial processing log
2280
2302
  if self.on_thinking:
@@ -2626,6 +2648,7 @@ class AgentLoop:
2626
2648
  if self.config.rubric and rubric_rounds < max(0, self.config.max_rubric_rounds):
2627
2649
  from .rubric import grade_against_rubric
2628
2650
 
2651
+ rubric_evidence = {}
2629
2652
  verdict, feedback = await grade_against_rubric(
2630
2653
  messages,
2631
2654
  response_content,
@@ -2633,7 +2656,10 @@ class AgentLoop:
2633
2656
  self.gateway,
2634
2657
  self.config.provider,
2635
2658
  self.config.model,
2659
+ spec=self.config.harness_spec,
2660
+ on_result=lambda result: rubric_evidence.update(result),
2636
2661
  )
2662
+ rubric_result = {**rubric_evidence, "verdict": verdict, "feedback": feedback}
2637
2663
  if verdict == "needs_revision" and feedback:
2638
2664
  rubric_rounds += 1
2639
2665
  if self.on_thinking:
@@ -2652,9 +2678,11 @@ class AgentLoop:
2652
2678
  )
2653
2679
  )
2654
2680
  continue
2655
- if verdict == "failed" and self.on_thinking:
2656
- await self.on_thinking(f"Rubric review: failed - {feedback[:120]}")
2681
+ if verdict in {"failed", "ungraded"} and self.on_thinking:
2682
+ await self.on_thinking(f"Rubric review: {verdict} - {feedback[:120]}")
2657
2683
 
2684
+ if self.config.rubric and rubric_rounds >= max(0, self.config.max_rubric_rounds):
2685
+ rubric_result = {"verdict": "ungraded", "reason": "Rubric round limit reached"}
2658
2686
  if self.on_thinking:
2659
2687
  await self.on_thinking("Response complete")
2660
2688
  from .hooks import AFTER_TURN_COMPLETE
@@ -2675,6 +2703,7 @@ class AgentLoop:
2675
2703
  tool_calls_made=tool_calls_made,
2676
2704
  iterations=iterations,
2677
2705
  stopped_reason="complete",
2706
+ rubric_result=rubric_result,
2678
2707
  )
2679
2708
  return await _finish(final)
2680
2709
 
@@ -3123,6 +3152,8 @@ class AgentLoop:
3123
3152
  # No tool calls - we have the final response
3124
3153
  # If we had tool calls in previous iterations but no content now,
3125
3154
  # the model should still provide a summary
3155
+ if self.config.rubric and rubric_rounds >= max(0, self.config.max_rubric_rounds):
3156
+ rubric_result = {"verdict": "ungraded", "reason": "Rubric round limit reached"}
3126
3157
  if self.on_thinking:
3127
3158
  await self.on_thinking("Response complete")
3128
3159
  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,12 @@ COMMANDS = [
323
323
  ":capabilities",
324
324
  ":eval",
325
325
  ":evals",
326
+ ":systemone",
327
+ ":systemone live",
328
+ ":systemone off",
329
+ ":systemone packs",
330
+ ":systemone connect",
331
+ ":connect systemone",
326
332
  ":tour",
327
333
  ":tour next",
328
334
  ":connect codex",
@@ -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."""