superqode 2.3.2__tar.gz → 2.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {superqode-2.3.2 → superqode-2.4.1}/CHANGELOG.md +86 -1
- {superqode-2.3.2 → superqode-2.4.1}/MANIFEST.in +1 -0
- {superqode-2.3.2 → superqode-2.4.1}/PKG-INFO +2 -1
- superqode-2.4.1/examples/harnesses/systemone-factory-route.yaml +12 -0
- superqode-2.4.1/examples/harnesses/systemone-ticket-triage.yaml +13 -0
- superqode-2.4.1/examples/harnesses/systemone-tool-gate.yaml +16 -0
- superqode-2.4.1/examples/systemone/rubric-eval.yaml +9 -0
- superqode-2.4.1/examples/systemone/ticket-triage-pack.yaml +30 -0
- {superqode-2.3.2 → superqode-2.4.1}/pyproject.toml +5 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/__init__.py +1 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/loop.py +59 -6
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/rubric.py +64 -10
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/constants.py +7 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/connect.py +26 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/dialogs.py +7 -2
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_permissions.py +3 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helpers.py +4 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/slash_commands.py +171 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/welcome.py +1 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/widgets.py +152 -107
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/__init__.py +2 -0
- superqode-2.4.1/src/superqode/commands/harness/systemone.py +37 -0
- superqode-2.4.1/src/superqode/data/eval_packs/decision-routing.yaml +41 -0
- superqode-2.4.1/src/superqode/data/eval_packs/decision-tool-gate.yaml +41 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/__init__.py +2 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/base.py +2 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/registry.py +12 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/runtime.py +4 -0
- superqode-2.4.1/src/superqode/harness/backends/systemone.py +114 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/eval.py +31 -7
- superqode-2.4.1/src/superqode/harness/evaluators.py +102 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/loader.py +99 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/spec.py +29 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/headless.py +9 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/main.py +7 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/connection_profiles.py +31 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pure_mode.py +38 -1
- superqode-2.4.1/src/superqode/rendering/systemone.py +77 -0
- superqode-2.4.1/src/superqode/systemone/__init__.py +68 -0
- superqode-2.4.1/src/superqode/systemone/audit.py +158 -0
- superqode-2.4.1/src/superqode/systemone/client.py +165 -0
- superqode-2.4.1/src/superqode/systemone/compose.py +230 -0
- superqode-2.4.1/src/superqode/systemone/config.py +180 -0
- superqode-2.4.1/src/superqode/systemone/decision.py +90 -0
- superqode-2.4.1/src/superqode/systemone/live.py +182 -0
- superqode-2.4.1/src/superqode/systemone/pack.py +145 -0
- superqode-2.4.1/src/superqode/systemone/packs/factory_route.yaml +44 -0
- superqode-2.4.1/src/superqode/systemone/packs/rubric.yaml +27 -0
- superqode-2.4.1/src/superqode/systemone/packs/tool_gate.yaml +97 -0
- superqode-2.4.1/src/superqode/systemone/runtime.py +233 -0
- superqode-2.4.1/src/superqode/systemone/state.py +136 -0
- superqode-2.4.1/src/superqode/systemone/types.py +304 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/env_policy.py +6 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/PKG-INFO +2 -1
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/SOURCES.txt +37 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/requires.txt +1 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_cli_contract.py +4 -1
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_connect_harness_screen.py +112 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_connection_profiles.py +3 -0
- superqode-2.4.1/tests/test_decision_evaluators.py +168 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_final_parity_wave.py +3 -3
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_backends.py +1 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_examples.py +5 -1
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_spec.py +46 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_install_script.py +9 -1
- superqode-2.4.1/tests/test_systemone_audit.py +99 -0
- superqode-2.4.1/tests/test_systemone_decision.py +104 -0
- superqode-2.4.1/tests/test_systemone_general.py +236 -0
- superqode-2.4.1/tests/test_systemone_live.py +74 -0
- superqode-2.4.1/tests/test_systemone_live_recorded.py +103 -0
- superqode-2.4.1/tests/test_systemone_loop.py +256 -0
- superqode-2.4.1/tests/test_systemone_regressions.py +166 -0
- superqode-2.4.1/tests/test_systemone_state.py +36 -0
- superqode-2.4.1/tests/test_systemone_stub.py +91 -0
- superqode-2.4.1/tests/test_systemone_tool_gate.py +173 -0
- superqode-2.4.1/tests/test_systemone_types.py +106 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_change_summary.py +50 -0
- {superqode-2.3.2 → superqode-2.4.1}/LICENSE +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/NOTICE +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/README.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/README.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/a2a/README.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/a2a/smoke_client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/bench/dspy-comprehension.manifest.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/bench/dspy-comprehension.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/bench/spec-core.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/bench/spec-deepagents.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/bench/spec-prime-agent.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/byok-acp-team.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/codex_sdk_quickstart.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/evals/omni-release.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/evals/omni-tiny.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/README.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/manifest-guard/context.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/manifest-guard/hooks.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/manifest-guard/tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/README.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/broken-extension/src/superqode_example_broken/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/policy-extension/src/superqode_example_policy/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/skill-extension/src/superqode_example_skill/SKILL.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/skill-extension/src/superqode_example_skill/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/tool-extension/src/superqode_example_tool/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/packages/tool-extension-v2/src/superqode_example_tool/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/extensions/python-package/src/superqode_example_extension/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harness-packages/README.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harness-packages/hello-harness/src/superqode_hello_harness/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/coding.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/deepagents.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/deepseek-harness.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/ds4.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/gemma4.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/google-adk.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/local-recursive-dynamic.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/mcp-docs.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/no-tool.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/omni-tiny-local.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/omnigent-multi-agent.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/openai-agents.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/prime-agent.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/pydanticai.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/harnesses/rlm-code-lid.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/local-models-team.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/mcp/local_docs_server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/omnigent-multi-agent.agent.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/qm-deployment-layer/README.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/qm-deployment-layer/sandbox/skills/superqode-harness/SKILL.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/INCIDENT.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/README.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/RUNBOOK.md +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/deploy_audit/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/deploy_audit/parser.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/deploy_audit/report.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/rlm-docker.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/rlm-monty.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/rlm-demo/tests/test_report.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/examples/simple-team.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/scripts/check_release_metadata.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/setup.cfg +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/conformance.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/connection.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/context.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/inspect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/keys.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/limits.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/oauth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/presets.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/reply.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/security.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/shortlist.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/skills.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/trust.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/types.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/understand.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/a2a/workflows.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/doctor.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/permission_screen.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/permission_store.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/render.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/session_store.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/slash.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/tool_call_context.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp/types.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/acp_discovery.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/auto_memory.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/command_safety.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/compaction.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/context_manager.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/edit_strategies.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/exec_policy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/hooks.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/loop_guard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/loop_policy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/network_policy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/output_handler.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/parallel_compare.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/peer_agents.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/plan_mode.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/reminders.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/session_manager.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/structured_output.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/summarization.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/system_prompts.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/terminal_output_limits.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/text_tool_calls.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/tool_args.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/tool_tracking.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent/utility_model.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent_output.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agent_stream.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/acp_registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/agentpool.phil65.github.io.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/ampcode.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/augmentcode.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/autodev.github.io.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/blackbox.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/bub.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/cagent.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/claude.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/cline.bot.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/codeassistant.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/codebuddy.tencent.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/codex.openai.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/copilot.github.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/cortex.snowflake.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/crow-ai.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/cursor.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/deepagents-code.langchain.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/deepagents.langchain.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/devin.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/dirac.run.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/factory.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/fastagent.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/fount.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/fx.sh.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/geminicli.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/glm.z.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/goose.block.xyz.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/harnlang.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/hermes-agent.nousresearch.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/junie.jetbrains.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/kilo.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/kimi.moonshot.cn.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/kiro.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/llmlingagent.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/minioncode.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/mistral-vibe.mistral.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/openclaw.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/opencode.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/openhands.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/pi.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/poolside.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/primeintellect.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/qoder.com.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/qwenlm.github.io.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/sigit.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/stakpak.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/stdiobus.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/vtcode.dev.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/data/x.ai.toml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/discovery.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/free_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/install_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/messaging.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/official_acp.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/persona.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/schema.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/agents/unified.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/async_utils.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/capabilities.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/css.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/harness_picker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/inputs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/actions_misc.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/agent_run.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/build_harness.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/clickable_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/codex.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/commands_impl.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/completion.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/events.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/explore.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/factory.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/feedback.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/formatting.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/harness_hub.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_clipboard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_completion_helpers.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_diff_review.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_exit_lifecycle.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_file_view.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_interaction_mode.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_mcp_attach.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_message_queue.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_recipes_skills.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_share.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_startup.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_todos_plan.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_vim.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/helper_wizard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/huggingface.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/local_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/mcp.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/model_catalog.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/pickers.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/pipy_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/rlm_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/sidebar.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/switchboard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/mixins/tour.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/navigation.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/outcomes.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/progress.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/prompt_stack.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/recipes.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/session_state.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/suggester.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app/theme_bridge.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app_enhanced.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/app_main.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/approval.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/atomic.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/auth/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/benchmarks.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/config.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/discord.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/service.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/slack.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/channels/telegram.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/claude.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/codex.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/a2a.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/a2a_connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/a2a_keys.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/acp.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/agents.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/auth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/benchmark.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/config.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/daemon.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/factory.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/gauge.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/_group.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/_helpers.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/bench.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/candidates.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/evaluation.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/evidence.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/inbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/lifecycle.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/logbook.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/observability.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/optimization.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/promotion.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/protocol.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/replay.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/run_history.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/harness/worker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/hub.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/local.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/memory.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/plugins.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/policy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/profiles.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/providers.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/runtime.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/sandbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/serve.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/sessions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/share.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/skillopt.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/skills.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/trust.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/uhp.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/update.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/commands/work.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/config/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/config/loader.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/config/schema.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/core/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/danger.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/eval_fixtures/ci-dynamic-root-cause.log +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/eval_fixtures/ci-root-cause.log +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/eval_packs/local_dynamic_workflow_smoke.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/eval_packs/local_recursive_smoke.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/data/superqode-template.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/design_system.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/base.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/model.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/provider.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/dialogs/runtime.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/diff_view.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/enterprise.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/adapters.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/behaviors.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/engine.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/evaluation/scenarios.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/linter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/modes.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/resolver.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/execution/runner.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/extensions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/file_explorer.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/file_viewer.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/flash.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/gauge/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/gauge/levels.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/gauge/record.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/gauge/sources.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/governance.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/accelerator.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/agent_importer.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/approval_memory.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/deepagents.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/dsh.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/managed.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/pipy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/prime_agent.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/pydanticai.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/rlm.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/rlm_code.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/tau.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/backends/uhp.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/bench.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/catalog.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/compiler.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/conformance.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/context_handles.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/diagnostics.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/discovery.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/drift.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/events.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/explain.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/hooks.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/hub.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/kernel.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/mcp_bridge.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/model_policy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/model_routes.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/observability.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/omni.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/omnigent_importer.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/optimize.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/output.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/permissions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/pipy_adapter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/pipy_extensions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/promotion.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/protocol.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/protocol_adapters.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/protocol_controller.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/rlm_adapter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/rlm_code_adapter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/sandbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/self_improve.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/store.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/tau_adapter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/tau_management.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/templates.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/testing.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/uhp_adapter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/uhp_client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/uhp_server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/wizard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/workflow.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/harness/workflow_presets.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/history.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/airplane.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/bench.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/build.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/code_index.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/devstral.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/ds4.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/gemma4.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/glm.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/gpt-oss.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/kimi.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/laguna.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/minimax.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/qwen-coder.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/model-packs/qwen3.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/data/stack_matrix.yaml +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/doctor.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/engines.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/guardrails.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/hardware.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/inventory.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/labs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/laguna.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/matrix.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/migrate.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/optimize.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/packs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/repo.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/servers.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/setup.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/local/smoke.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/adapters.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/formatter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/integration.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/sinks.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/logging/unified_log.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/lsp/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/lsp/client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/auth_storage.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/config.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/elicitation.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/harness_server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/hf_auth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/integration.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/oauth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/oauth_callback.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/sampling.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/search.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/mcp/types.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/memory/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/memory/config.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/memory/providers.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/memory/types.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/notifications.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/permissions/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/permissions/rules.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/fake.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/gateway.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/ai/transform.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/coding_session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/compaction.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/config.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/event_stream.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/events.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/harness.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/harness_events.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/loop.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/messages.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/permissions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/prompt_templates.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/provider_events.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/resources.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/codec.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/entries.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/jsonl.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/memory.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/repository.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/session/storage.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/signals.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/skills.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/stream.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/system_prompt.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/base.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/edit_diff.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/files.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/paths.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/search.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/shell.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/tools/truncate.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/types.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/pipy/validation.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/plan.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/platform_locks.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/plugins.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/project_trust.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/_builtin_profiles.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/acp_free_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/acp_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/acp_registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/apple_fm.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/catalog.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/copilot_auth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/credentials.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/dynamic.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/env_introspect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/free_inference.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/base.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/litellm_gateway.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/openresponses_gateway.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/gateway/synthetic.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/grok_cli_auth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/harness_catalog.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/health.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/convert.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/downloader.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/endpoints.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/fetch.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/hub.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/inference.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/huggingface/transformers_runner.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/live_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/_mlx_worker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/base.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/capabilities.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/context_probe.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/discovery.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/ds4.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/lmstudio.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/mlx.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/mlx_engine.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/mlx_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/ollama.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/sglang.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/smoke.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/tgi.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/tool_support.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/local/vllm.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/manager.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/model_specs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/models_dev.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/opencode_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/converters/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/converters/messages.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/converters/tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/schema/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/schema/models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/streaming/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/streaming/parser.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/apply_patch.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/code_interpreter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/file_search.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/openresponses/tools/mcp_adapter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/prime_agent.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/profiles.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/recommendations.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/subscription_env.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/subscription_login.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/uhp.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/providers/usage.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/py.typed +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rendering/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rendering/html_export.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rendering/markdown.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rendering/transcript_export.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/coding_session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/config.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/context.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/identity.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel_backend.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel_docker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel_monty.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/kernel_server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/policy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/root_runtime.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/root_worker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/sandbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/subcalls.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/supervisor.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/worker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/rlm/worker_process.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/adk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/antigravity_cli.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/antigravity_managed.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/antigravity_sdk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/antigravity_status.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/base.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/builtin.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/claude_agent_sdk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/codex_sdk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/copilot_sdk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/devin_cli.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/devin_status.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/errors.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/openai_agents.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/openai_sandbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/openai_session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/pydanticai.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/tool_bridge.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/tool_bridge_openai.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/tool_bridge_pydanticai.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/runtime/vendor_cli.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/safety/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/safety/sandbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/safety/warnings.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sandbox/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sandbox/backends.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sandbox/execution.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sandbox/local_sandbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/search_registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/server/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/server/api.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/server/web.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/factory.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/persistence.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/share_artifacts.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/sharing.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session/switchboard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/sidebar.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/skillopt.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/skills.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/stream_view.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/styles/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tool_call.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/agent_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/apply_patch.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/base.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/batch_tool.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/compact_tool.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/context_handle.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/context_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/core_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/diagnostics.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/diff_utils.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/display.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/dynamic_workflow.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/edit_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/enhanced_base.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/file_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/file_tracking.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/governed.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/harness_agent_session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/image_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/lsp_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/mcp_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/monty_tool.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/network_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/output_spill.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/peer_agent_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/permissions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/post_edit.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/question_tool.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/request_permissions_tool.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/search_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/semantic_search.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/shell_session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/shell_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/skill_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/spawn_harness.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/todo_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/tool_search.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/validation.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tools/web_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_integration.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_widgets/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_widgets/widgets/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_widgets/widgets/progress.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/tui_widgets/widgets/tool_display.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/undo_manager.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/utils/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/utils/error_handling.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/utils/fuzzy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/a2a_connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/agent_store.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/agent_switcher.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/animation_manager.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/code_context.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/command_palette.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/connection_status.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/conversation_history.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/diff_indicator.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/enhanced_status_bar.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/enhanced_toast.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/file_browser.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/file_reference.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/harness_hub.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/leader_key.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/mode_switcher.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/model_picker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/outcome_screen.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/permission_preview.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/prompt.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/provider_connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/pty_shell.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/resizable_sidebar.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/response_changes.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/response_display.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/rewind_overlay.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/rich_tool_display.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/sidebar_panels.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/slash_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/slash_complete.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/split_view.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/status_bar.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/superqode_display.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/theme_picker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/thinking.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/thinking_display.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/throbber.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/toast.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/uhp_connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/widgets/unified_output.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/cockpit.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/integration.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/runner.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/store.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/usage.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workorders/worker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/__init__.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/artifacts.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/change_summary.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/coordinator.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/diff_tracker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/git_guard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/git_snapshot.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/manager.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/snapshot.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/watcher.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode/workspace/worktree.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/dependency_links.txt +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/entry_points.txt +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/src/superqode.egg-info/top_level.txt +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_030_candidate.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_bridge.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_conformance.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_context.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_keys.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_limits.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_oauth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_security.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_shortlist.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_trust.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_a2a_understand.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_agent_dispatch.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_free_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_parent_tool_linking.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_permission_store.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_render.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_session_store.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_acp_slash.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_adaptive_compaction.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_agent_importer.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_agent_install_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_agent_loop_harness.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_agent_memory.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_agents_md_compat.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_agy_tui_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_app_main_contract.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_apply_patch.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_auth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_bash_spill.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_benchmarks.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_catalog_freshness.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_change_summary.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_channels.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_cli_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_cli_connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_cli_reference_coverage.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_clickable_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_command_safety.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_commands_runtime.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_compaction.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_config_loader.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_config_runtime.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_connect_setup.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_context_handles.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_context_probe.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_context_remaining.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_copilot_login_ux.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_copilot_tui_commands.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_create_skill_tool.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_deepagents_model_spec.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_deferred_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_design_system_contrast.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_developer_workflow_docs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_ds4_local_client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_dsh_harness.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_dynamic_workflow_tool.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_edit_line_number_strip.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_env_introspect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_execution_resolver.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_extensions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_free_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_governance.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_grok_cli_auth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_agent_session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_bench.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_bench_paths.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_catalog.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_connect_catalog.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_drift.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_eval_splits.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_explain.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_hooks.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_hub_catalog.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_hub_screen.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_kernel.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_mcp_server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_model_policy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_observability.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_omni.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_output.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_permissions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_promotion.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_protocol.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_sandbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_seesaw_dimensions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_self_improve.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_store.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_usage.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_wizard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_harness_workflow.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_headless.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_hf_fetch.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_hooks.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_integration_docs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_kimi_k3_provider.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_kimi_k3_routes.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_linter_runner.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_litellm_gateway.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_live_acp_registry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_live_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_airplane.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_build.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_code_index.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_labs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_migrate.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_model_optimizations.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_packs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_sandbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_search.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_servers.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_setup.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_smoke.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_stack.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_tool_capabilities.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_local_tool_support.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_login_api.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_loop_guard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_managed_harness_backend.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_markdown_render.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_example_server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_integration.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_live.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_oauth_generalized.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_tools_runtime.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_mcp_two_way.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_memory_recall.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_mlx_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_model_profiles.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_model_specs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_models_dev.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_monty_tool.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_navigation_history.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_network_policy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_ollama_client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_omnigent_agent_session_smoke.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_omnigent_importer.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_openai_session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_output_spill.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_parallel_compare.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_peer_agents.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_plugin_hook_wiring.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_plugins.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_policies_and_turndiff.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_post_edit_verify.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_agent_client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_agent_harness.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_agent_provider.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_command_surface.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_prime_tui_rpc.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_progressive_discovery.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_progressive_reveals.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_project_trust.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_prompt_stack.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_provider_catalog.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_provider_dynamic.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_provider_models.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_provider_recommendations.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_pure_mode_sessions.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_qm_deployment_layer.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_rate_limit_retry.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_read_tool_limits.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_reasoning_and_budget.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_recursive_eval_packs.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_release_metadata.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_rlm_code_integration.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_adk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_antigravity_cli.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_antigravity_managed.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_antigravity_sdk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_builtin.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_claude_agent_sdk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_codex_sdk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_copilot_sdk.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_devin_cli.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_dialog.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_openai_agents.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_openai_events.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_openai_hitl.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_openai_sandbox.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_protocol.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_runtime_pydanticai.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_sandbox_backends.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_sandbox_execution.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_search_roots.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_semantic_search.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_session_switchboard.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_shell_session.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_simple_login.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_simple_query_fastpath.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_skillopt.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_slash_runtime.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_spawn_harness_tool.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_status_bar_layout.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_steering_continue_reminders.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_streaming_tool_calls.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_subscription_billing_policy.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_subscription_login.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_subscription_login_consent.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_synthetic_gateways.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tau_harness_adapter.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_terminal_output_limits.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_theme_contrast.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_theme_picker.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_theme_repaint.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_todo_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_args_repair.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_batch_safety.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_bridge.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_bridge_openai.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_call_repair.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_output_pruning.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tool_tracking.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tools.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_chat_mode.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_diagnostics.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_exit.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_feedback.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_launch_performance.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_llamacpp_connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_markdown_cleanup.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_mlx_connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_mounted.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_onboarding.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_smoke.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_tui_tool_display.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_uhp_backend.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_uhp_client.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_uhp_connect.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_uhp_server.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_update_command.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_vendor_cli_runtime.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_version.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_view_image.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_web_server_auth.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_workorders.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_workspace.py +0 -0
- {superqode-2.3.2 → superqode-2.4.1}/tests/test_zai_provider.py +0 -0
|
@@ -5,7 +5,92 @@ All notable changes to SuperQode will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [2.4.1] - 2026-09-18
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Theme-aware Jev JSON replies with highlighted decisions, key fields, numeric
|
|
13
|
+
values, and abstentions; System One Models on the welcome screen.
|
|
14
|
+
- A SystemOne model route in `:connect`, with Jev, API-key setup guidance, and
|
|
15
|
+
direct decision-pack sessions.
|
|
16
|
+
- Opt-in Jev shadow tool checks with `:systemone shadow` or
|
|
17
|
+
`SUPERQODE_SYSTEMONE_MODE=shadow`. Jev recommendations do not change existing
|
|
18
|
+
permission decisions in this mode.
|
|
19
|
+
- Sanitized decision traces with full typed answers, probability distributions,
|
|
20
|
+
confidence, policy and permission outcomes, thresholds, and truncation markers.
|
|
21
|
+
- Distribution diagnostics for near ties and spread, plus `harness decision-report`
|
|
22
|
+
for policy or explicit human-label comparisons, confidence buckets, and offline
|
|
23
|
+
confidence threshold sweeps. Reports do not apply thresholds or infer safety
|
|
24
|
+
from confidence or successful execution.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- Jev decision sessions initialize provider/model and usage identity instead of
|
|
29
|
+
reporting unknown. The decision-session top bar shows only `SystemOne · Jev`,
|
|
30
|
+
omitting runtime, harness, BUILD mode, and usage details.
|
|
31
|
+
- Jev JSON replies open at the top of the response card. Final completion output
|
|
32
|
+
no longer scrolls to the bottom; the next task restores normal scrolling.
|
|
33
|
+
|
|
34
|
+
## [2.4.0] - 2026-09-18
|
|
35
|
+
|
|
36
|
+
### Jev integration
|
|
37
|
+
|
|
38
|
+
SuperQode 2.4.0 adds a general decision harness for Jev, native tool-permission
|
|
39
|
+
checks, labelled decision evaluations, and opt-in rubric grading. Coding models
|
|
40
|
+
continue to generate code; Jev supplies typed decisions that SuperQode validates
|
|
41
|
+
and applies through explicit policies.
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- **General decision harness.** The `systemone` backend evaluates reviewed
|
|
46
|
+
Choice, Score, and Noul question packs. Input schemas, confidence thresholds,
|
|
47
|
+
abstention, and pack hashes make each decision inspectable and reproducible.
|
|
48
|
+
Examples cover ticket triage, factory-route suggestions, and tool permissions.
|
|
49
|
+
- **Native tool-permission checks.** `:systemone live` enables Jev checks in
|
|
50
|
+
Core/BYOK sessions. Hard policy denials remain authoritative; model ASK uses
|
|
51
|
+
the approval flow even for otherwise auto-allowed tools. Client failures are
|
|
52
|
+
visible and fall back to the existing permission policy.
|
|
53
|
+
- **Direct decision sessions.** `:systemone connect <pack>` and
|
|
54
|
+
`:connect systemone <pack>` connect the TUI directly to Jev without a coding
|
|
55
|
+
provider. Status distinguishes a decision session from the tool-check sidecar.
|
|
56
|
+
- **Labelled evaluations.** `harness eval` supports exact typed output labels
|
|
57
|
+
and explicit evaluator results. Scorecards include coverage, accuracy among
|
|
58
|
+
graded cases, abstentions, errors, dataset hashes, and decision evidence.
|
|
59
|
+
Synthetic routing and tool-permission starter datasets include held-in and
|
|
60
|
+
held-out splits.
|
|
61
|
+
- **Rubric grading.** `SUPERQODE_RUBRIC_GRADER=systemone` uses Jev verdicts in
|
|
62
|
+
the native rubric revision loop. A `jev_rubric` task evaluator judges another
|
|
63
|
+
harness's response. Headless JSON exposes `rubric_result`.
|
|
64
|
+
- **Transport and observability.** Live decisions report returned model, HTTP
|
|
65
|
+
status, latency, and available token usage. Configurable compatible endpoints,
|
|
66
|
+
stub clients, sanitized recordings, and replay support development and testing.
|
|
67
|
+
|
|
68
|
+
### Changed
|
|
69
|
+
|
|
70
|
+
- Invalid, uncertain, or unavailable rubric judgments are explicitly `ungraded`.
|
|
71
|
+
Utility-grader errors no longer count as `satisfied`. Headless runs with an
|
|
72
|
+
unsatisfied or ungraded rubric report `success: false` and exit with code 2.
|
|
73
|
+
- Legacy evaluation tasks retain their non-empty smoke check, now identified as
|
|
74
|
+
`smoke_only`. Use labelled or rubric evaluators for stronger assessment.
|
|
75
|
+
|
|
76
|
+
### Reliability
|
|
77
|
+
|
|
78
|
+
- Tool-gate pack 1.1.0 requires low destructive and exfiltration risk before
|
|
79
|
+
auto-approval. Uncertain risk cannot produce ALLOW.
|
|
80
|
+
- Live criteria serialization matches the API contract. Evaluation deadlines
|
|
81
|
+
include retries, and recording failures do not discard valid decisions.
|
|
82
|
+
- Input redaction covers common credential fields, headers, command flags,
|
|
83
|
+
URL credentials, and private-key blocks. Offline policies remain respected.
|
|
84
|
+
|
|
85
|
+
### Scope
|
|
86
|
+
|
|
87
|
+
Jev integration is opt-in and requires separate TypeSafe credentials for live
|
|
88
|
+
use. The native gate does not intercept external agent runtimes. Route decisions
|
|
89
|
+
are suggestions; automatic factory routing and automatic LLM fallback are not
|
|
90
|
+
included. Starter datasets are examples, not published accuracy benchmarks.
|
|
91
|
+
|
|
92
|
+
See [the Jev integration guide](docs/advanced/systemone.md) and
|
|
93
|
+
[2.4.0 release notes](docs/advanced/release-2.4.0.md) for setup and migration.
|
|
9
94
|
|
|
10
95
|
## [2.3.2] - 2026-09-13
|
|
11
96
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: superqode
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.1
|
|
4
4
|
Summary: The harness layer for coding agents
|
|
5
5
|
Author-email: Shashi Jagtap <info@super-agentic.ai>
|
|
6
6
|
Maintainer-email: Shashi Jagtap <info@super-agentic.ai>
|
|
@@ -34,6 +34,7 @@ Requires-Dist: anyio>=4.0.0
|
|
|
34
34
|
Requires-Dist: httpx>=0.28.1
|
|
35
35
|
Requires-Dist: httpx-sse>=0.4.3
|
|
36
36
|
Requires-Dist: jsonschema>=4.20.0
|
|
37
|
+
Requires-Dist: pydantic<3,>=2.0
|
|
37
38
|
Requires-Dist: python-frontmatter>=1.1.0
|
|
38
39
|
Requires-Dist: superopt>=0.1.1
|
|
39
40
|
Requires-Dist: prime-agent-python-client<0.3.0,>=0.2.0
|
|
@@ -0,0 +1,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
|
+
version = "2.4.1"
|
|
4
4
|
description = "The harness layer for coding agents"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -49,6 +49,9 @@ dependencies = [
|
|
|
49
49
|
# execution, the way pi validates against TypeBox. Already present through
|
|
50
50
|
# mcp/fastmcp; declared because superqode.pipy imports it directly.
|
|
51
51
|
"jsonschema>=4.20.0",
|
|
52
|
+
# Typed System One packs and answers. Already imported by harness/output.py;
|
|
53
|
+
# declared because superqode.systemone uses it as the I/O contract.
|
|
54
|
+
"pydantic>=2.0,<3",
|
|
52
55
|
"python-frontmatter>=1.1.0",
|
|
53
56
|
"superopt>=0.1.1",
|
|
54
57
|
# Native asyncio host for Prime Agent's public RPC mode. Kept as a small,
|
|
@@ -270,6 +273,7 @@ superqode = [
|
|
|
270
273
|
"data/*.yaml",
|
|
271
274
|
"data/eval_fixtures/*.log",
|
|
272
275
|
"data/eval_packs/*.yaml",
|
|
276
|
+
"systemone/packs/*.yaml",
|
|
273
277
|
"local/data/*.yaml",
|
|
274
278
|
"local/data/model-packs/*.yaml",
|
|
275
279
|
"py.typed",
|
|
@@ -658,6 +658,9 @@ class AgentConfig:
|
|
|
658
658
|
harness_sandbox_backend: str = "local"
|
|
659
659
|
harness_delegation_depth: int = 0
|
|
660
660
|
|
|
661
|
+
# Opt-in System One tool gate. None means "read from harness_spec / env".
|
|
662
|
+
systemone: Optional[Any] = None
|
|
663
|
+
|
|
661
664
|
|
|
662
665
|
@dataclass
|
|
663
666
|
class AgentMessage:
|
|
@@ -747,6 +750,7 @@ class AgentResponse:
|
|
|
747
750
|
# and any schema-validation errors (empty list means valid).
|
|
748
751
|
structured_output: Optional[Any] = None
|
|
749
752
|
schema_errors: Optional[List[str]] = None
|
|
753
|
+
rubric_result: Optional[Dict[str, Any]] = None
|
|
750
754
|
input_tokens: Optional[int] = None
|
|
751
755
|
output_tokens: Optional[int] = None
|
|
752
756
|
total_tokens: Optional[int] = None
|
|
@@ -798,6 +802,8 @@ class AgentLoop:
|
|
|
798
802
|
permission_manager: Optional[PermissionManager] = None,
|
|
799
803
|
hooks: Optional["HookRegistry"] = None, # Lifecycle hooks (before/after llm/tool/turn)
|
|
800
804
|
allow_peer_agents: bool = True, # False inside sub/peer agents (no nesting)
|
|
805
|
+
systemone_client: Optional[Any] = None,
|
|
806
|
+
on_systemone: Optional[Callable[[Dict[str, Any]], None]] = None,
|
|
801
807
|
):
|
|
802
808
|
self.gateway = gateway
|
|
803
809
|
self.tools = tools
|
|
@@ -891,6 +897,8 @@ class AgentLoop:
|
|
|
891
897
|
from .hooks import HookRegistry
|
|
892
898
|
|
|
893
899
|
self.hooks: HookRegistry = hooks if hooks is not None else HookRegistry()
|
|
900
|
+
self._systemone_client = systemone_client
|
|
901
|
+
self.on_systemone = on_systemone
|
|
894
902
|
self._current_iteration: int = 0
|
|
895
903
|
# session_start fires once per AgentLoop instance, on the first run().
|
|
896
904
|
self._session_started: bool = False
|
|
@@ -999,6 +1007,7 @@ class AgentLoop:
|
|
|
999
1007
|
on_tool_call=self.on_tool_call,
|
|
1000
1008
|
on_tool_result=self.on_tool_result,
|
|
1001
1009
|
on_thinking=self.on_thinking,
|
|
1010
|
+
on_systemone=getattr(self, "on_systemone", None),
|
|
1002
1011
|
parallel_tools=self.parallel_tools,
|
|
1003
1012
|
mcp_executor=self.mcp_executor,
|
|
1004
1013
|
mcp_tools=self._mcp_tools,
|
|
@@ -1315,6 +1324,7 @@ class AgentLoop:
|
|
|
1315
1324
|
on_tool_call=self.on_tool_call,
|
|
1316
1325
|
on_tool_result=self.on_tool_result,
|
|
1317
1326
|
on_thinking=self.on_thinking,
|
|
1327
|
+
on_systemone=getattr(self, "on_systemone", None),
|
|
1318
1328
|
parallel_tools=self.parallel_tools,
|
|
1319
1329
|
mcp_executor=self.mcp_executor,
|
|
1320
1330
|
mcp_tools=self._mcp_tools,
|
|
@@ -1342,6 +1352,20 @@ class AgentLoop:
|
|
|
1342
1352
|
|
|
1343
1353
|
async def _check_tool_permission(
|
|
1344
1354
|
self, name: str, arguments: Dict[str, Any], tool_call_id: Optional[str] = None
|
|
1355
|
+
) -> Optional[ToolResult]:
|
|
1356
|
+
from ..systemone.audit import finish_trace
|
|
1357
|
+
|
|
1358
|
+
self.last_systemone_decision = None
|
|
1359
|
+
try:
|
|
1360
|
+
result = await self._check_tool_permission_inner(name, arguments, tool_call_id)
|
|
1361
|
+
except ToolApprovalRequired:
|
|
1362
|
+
finish_trace(self, tool_call_id, "ask")
|
|
1363
|
+
raise
|
|
1364
|
+
finish_trace(self, tool_call_id, "allow" if result is None else "deny", result)
|
|
1365
|
+
return result
|
|
1366
|
+
|
|
1367
|
+
async def _check_tool_permission_inner(
|
|
1368
|
+
self, name: str, arguments: Dict[str, Any], tool_call_id: Optional[str] = None
|
|
1345
1369
|
) -> Optional[ToolResult]:
|
|
1346
1370
|
"""Apply central permission checks before any local tool executes.
|
|
1347
1371
|
|
|
@@ -1357,8 +1381,12 @@ class AgentLoop:
|
|
|
1357
1381
|
otherwise-ASK command.
|
|
1358
1382
|
3. The manager's own **deny** (e.g. dangerous-command guards) still wins
|
|
1359
1383
|
over a permissive hook or rule - hard safety rules are not overridable.
|
|
1360
|
-
4.
|
|
1361
|
-
|
|
1384
|
+
4. Opt-in System One may **deny** an otherwise-allowed call, or
|
|
1385
|
+
**allow** an otherwise-ASK call. Model ASK requires approval.
|
|
1386
|
+
Unavailable evaluations visibly fall back to the existing policy.
|
|
1387
|
+
YAML and manager denials never call the client.
|
|
1388
|
+
5. Manager **allow** passes through; otherwise (ASK) we honour a hook,
|
|
1389
|
+
rule, or System One allow, or fall back to the pause/prompt flow.
|
|
1362
1390
|
"""
|
|
1363
1391
|
from .hooks import PERMISSION_REQUEST
|
|
1364
1392
|
|
|
@@ -1405,11 +1433,26 @@ class AgentLoop:
|
|
|
1405
1433
|
error=f"Permission denied for tool: {name}",
|
|
1406
1434
|
metadata={"permission": "deny", "tool": name},
|
|
1407
1435
|
)
|
|
1408
|
-
|
|
1436
|
+
|
|
1437
|
+
from ..systemone.runtime import apply_systemone_gate
|
|
1438
|
+
|
|
1439
|
+
baseline_allowed = (
|
|
1440
|
+
(permission == Permission.ALLOW and not rule_ask)
|
|
1441
|
+
or (tool_call_id and tool_call_id in self._approved_tool_call_ids)
|
|
1442
|
+
or ((verdict.allowed or rule_allow) and not rule_ask)
|
|
1443
|
+
)
|
|
1444
|
+
baseline = "allow" if baseline_allowed else "ask"
|
|
1445
|
+
so_denied, so_allow, so_ask = await apply_systemone_gate(self, name, arguments)
|
|
1446
|
+
if self.last_systemone_decision is not None:
|
|
1447
|
+
self.last_systemone_decision["policyAction"] = baseline
|
|
1448
|
+
if so_denied is not None:
|
|
1449
|
+
return so_denied
|
|
1450
|
+
|
|
1451
|
+
if permission == Permission.ALLOW and not rule_ask and not so_ask:
|
|
1409
1452
|
return None
|
|
1410
1453
|
if tool_call_id and tool_call_id in self._approved_tool_call_ids:
|
|
1411
1454
|
return None
|
|
1412
|
-
if (verdict.allowed or rule_allow) and not rule_ask:
|
|
1455
|
+
if (verdict.allowed or rule_allow or so_allow) and not rule_ask and not so_ask:
|
|
1413
1456
|
return None
|
|
1414
1457
|
|
|
1415
1458
|
if self.pause_on_approval:
|
|
@@ -2275,6 +2318,7 @@ class AgentLoop:
|
|
|
2275
2318
|
auto_continues = 0
|
|
2276
2319
|
length_parts: List[str] = []
|
|
2277
2320
|
rubric_rounds = 0
|
|
2321
|
+
rubric_result = None
|
|
2278
2322
|
|
|
2279
2323
|
# Emit initial processing log
|
|
2280
2324
|
if self.on_thinking:
|
|
@@ -2626,6 +2670,7 @@ class AgentLoop:
|
|
|
2626
2670
|
if self.config.rubric and rubric_rounds < max(0, self.config.max_rubric_rounds):
|
|
2627
2671
|
from .rubric import grade_against_rubric
|
|
2628
2672
|
|
|
2673
|
+
rubric_evidence = {}
|
|
2629
2674
|
verdict, feedback = await grade_against_rubric(
|
|
2630
2675
|
messages,
|
|
2631
2676
|
response_content,
|
|
@@ -2633,7 +2678,10 @@ class AgentLoop:
|
|
|
2633
2678
|
self.gateway,
|
|
2634
2679
|
self.config.provider,
|
|
2635
2680
|
self.config.model,
|
|
2681
|
+
spec=self.config.harness_spec,
|
|
2682
|
+
on_result=lambda result: rubric_evidence.update(result),
|
|
2636
2683
|
)
|
|
2684
|
+
rubric_result = {**rubric_evidence, "verdict": verdict, "feedback": feedback}
|
|
2637
2685
|
if verdict == "needs_revision" and feedback:
|
|
2638
2686
|
rubric_rounds += 1
|
|
2639
2687
|
if self.on_thinking:
|
|
@@ -2652,9 +2700,11 @@ class AgentLoop:
|
|
|
2652
2700
|
)
|
|
2653
2701
|
)
|
|
2654
2702
|
continue
|
|
2655
|
-
if verdict
|
|
2656
|
-
await self.on_thinking(f"Rubric review:
|
|
2703
|
+
if verdict in {"failed", "ungraded"} and self.on_thinking:
|
|
2704
|
+
await self.on_thinking(f"Rubric review: {verdict} - {feedback[:120]}")
|
|
2657
2705
|
|
|
2706
|
+
if self.config.rubric and rubric_rounds >= max(0, self.config.max_rubric_rounds):
|
|
2707
|
+
rubric_result = {"verdict": "ungraded", "reason": "Rubric round limit reached"}
|
|
2658
2708
|
if self.on_thinking:
|
|
2659
2709
|
await self.on_thinking("Response complete")
|
|
2660
2710
|
from .hooks import AFTER_TURN_COMPLETE
|
|
@@ -2675,6 +2725,7 @@ class AgentLoop:
|
|
|
2675
2725
|
tool_calls_made=tool_calls_made,
|
|
2676
2726
|
iterations=iterations,
|
|
2677
2727
|
stopped_reason="complete",
|
|
2728
|
+
rubric_result=rubric_result,
|
|
2678
2729
|
)
|
|
2679
2730
|
return await _finish(final)
|
|
2680
2731
|
|
|
@@ -3123,6 +3174,8 @@ class AgentLoop:
|
|
|
3123
3174
|
# No tool calls - we have the final response
|
|
3124
3175
|
# If we had tool calls in previous iterations but no content now,
|
|
3125
3176
|
# the model should still provide a summary
|
|
3177
|
+
if self.config.rubric and rubric_rounds >= max(0, self.config.max_rubric_rounds):
|
|
3178
|
+
rubric_result = {"verdict": "ungraded", "reason": "Rubric round limit reached"}
|
|
3126
3179
|
if self.on_thinking:
|
|
3127
3180
|
await self.on_thinking("Response complete")
|
|
3128
3181
|
if self._session_manager and full_content.strip():
|
|
@@ -12,6 +12,7 @@ insurance on long unattended runs.
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
14
|
import json
|
|
15
|
+
import os
|
|
15
16
|
import re
|
|
16
17
|
from typing import Any, List, Tuple
|
|
17
18
|
|
|
@@ -49,24 +50,22 @@ def _transcript_tail(messages: List[Any], final_content: str) -> str:
|
|
|
49
50
|
|
|
50
51
|
|
|
51
52
|
def parse_grader_response(raw: str) -> Tuple[str, str]:
|
|
52
|
-
"""Parse
|
|
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 "
|
|
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 "
|
|
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 "
|
|
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
|
-
"""
|
|
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 "
|
|
117
|
+
return "ungraded", "Rubric grader did not return a valid verdict"
|
|
103
118
|
|
|
104
119
|
|
|
105
120
|
__all__ = ["GRADER_SYSTEM_PROMPT", "VERDICTS", "grade_against_rubric", "parse_grader_response"]
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
async def evaluate_jev_rubric(rubric: str, work: str, *, spec=None, client=None) -> dict[str, Any]:
|
|
124
|
+
"""One bounded decision; never turn abstention or client failure into success."""
|
|
125
|
+
from dataclasses import replace
|
|
126
|
+
|
|
127
|
+
from superqode.systemone.config import build_client, resolve_systemone
|
|
128
|
+
from superqode.systemone.decision import evaluate_decision
|
|
129
|
+
from superqode.systemone.pack import load_pack
|
|
130
|
+
|
|
131
|
+
try:
|
|
132
|
+
# Inherit endpoint, model, deadline and offline policy. A separate opt-in
|
|
133
|
+
# enables grading without enabling the permission sidecar.
|
|
134
|
+
from types import SimpleNamespace
|
|
135
|
+
|
|
136
|
+
declared = getattr(spec, "systemone", None)
|
|
137
|
+
if declared is None or not getattr(declared, "enabled", False):
|
|
138
|
+
declared = SimpleNamespace(enabled=True, client="live")
|
|
139
|
+
else:
|
|
140
|
+
declared = SimpleNamespace(**{**vars(declared), "enabled": True})
|
|
141
|
+
settings = resolve_systemone(spec=spec, explicit=declared)
|
|
142
|
+
settings = replace(settings, pack="rubric")
|
|
143
|
+
active = build_client(settings, injected=client)
|
|
144
|
+
if active is None:
|
|
145
|
+
return {
|
|
146
|
+
"verdict": "ungraded",
|
|
147
|
+
"reason": "Rubric client unavailable: " + (settings.skip_reason or "disabled"),
|
|
148
|
+
}
|
|
149
|
+
decision = await evaluate_decision(
|
|
150
|
+
active, {"rubric": rubric, "work": work}, load_pack("rubric")
|
|
151
|
+
)
|
|
152
|
+
verdict = decision.outputs.get("verdict") if decision.status == "decided" else "ungraded"
|
|
153
|
+
return {
|
|
154
|
+
"verdict": verdict or "ungraded",
|
|
155
|
+
"reason": "Jev rubric: " + str(verdict or "ungraded"),
|
|
156
|
+
"decision": decision.model_dump(mode="json"),
|
|
157
|
+
}
|
|
158
|
+
except Exception:
|
|
159
|
+
return {"verdict": "ungraded", "reason": "Rubric evaluation unavailable"}
|
|
@@ -323,6 +323,13 @@ COMMANDS = [
|
|
|
323
323
|
":capabilities",
|
|
324
324
|
":eval",
|
|
325
325
|
":evals",
|
|
326
|
+
":systemone",
|
|
327
|
+
":systemone live",
|
|
328
|
+
":systemone shadow",
|
|
329
|
+
":systemone off",
|
|
330
|
+
":systemone packs",
|
|
331
|
+
":systemone connect",
|
|
332
|
+
":connect systemone",
|
|
326
333
|
":tour",
|
|
327
334
|
":tour next",
|
|
328
335
|
":connect codex",
|
|
@@ -1509,7 +1509,32 @@ class ConnectMixin:
|
|
|
1509
1509
|
if conn == "acp":
|
|
1510
1510
|
log.add_info(f"{profile.label} needs setup: {profile.unavailable_hint}")
|
|
1511
1511
|
return
|
|
1512
|
-
if conn == "
|
|
1512
|
+
if conn == "systemone-picker":
|
|
1513
|
+
from superqode.providers.connection_profiles import CONNECT_MENU_SYSTEMONE
|
|
1514
|
+
|
|
1515
|
+
self._show_connect_type_picker(log, menu=CONNECT_MENU_SYSTEMONE)
|
|
1516
|
+
elif conn == "systemone":
|
|
1517
|
+
import os
|
|
1518
|
+
|
|
1519
|
+
if not os.environ.get("TYPESAFE_API_KEY", "").strip():
|
|
1520
|
+
log.add_info(
|
|
1521
|
+
"Jev needs a TypeSafe AI API key. Get one at https://console.typesafe.ai "
|
|
1522
|
+
"(request access at https://typesafe.ai if needed). In your terminal, run "
|
|
1523
|
+
"export TYPESAFE_API_KEY='your-key', restart SuperQode, then choose "
|
|
1524
|
+
":connect → Connect with SystemOne models → Jev."
|
|
1525
|
+
)
|
|
1526
|
+
return
|
|
1527
|
+
pure = self._ensure_pure_mode()
|
|
1528
|
+
try:
|
|
1529
|
+
pure.connect_decision("factory_route")
|
|
1530
|
+
except (ValueError, OSError) as exc:
|
|
1531
|
+
log.add_error(str(exc))
|
|
1532
|
+
return
|
|
1533
|
+
self._activate_decision_connection(pure, log)
|
|
1534
|
+
log.add_info(
|
|
1535
|
+
"Use :systemone packs to explore packs, then :systemone connect <pack> to switch."
|
|
1536
|
+
)
|
|
1537
|
+
elif conn == "copilot":
|
|
1513
1538
|
self._connect_copilot_subscription(profile, log)
|
|
1514
1539
|
elif conn == "prime-rpc":
|
|
1515
1540
|
self._connect_prime_rpc("", log)
|
|
@@ -2337,8 +2337,13 @@ class DialogsMixin:
|
|
|
2337
2337
|
# Keep the view pinned to the latest response. We no longer clear the
|
|
2338
2338
|
# log each turn, so scrolling home would jump away from the answer the
|
|
2339
2339
|
# user just asked for — scroll to the end and resume follow mode.
|
|
2340
|
-
|
|
2341
|
-
|
|
2340
|
+
from superqode.rendering.systemone import render_systemone_json
|
|
2341
|
+
|
|
2342
|
+
if render_systemone_json(response_text, THEME) is not None:
|
|
2343
|
+
log.reveal_decision_response()
|
|
2344
|
+
else:
|
|
2345
|
+
log.auto_scroll = True
|
|
2346
|
+
self.set_timer(0.1, lambda: log.scroll_end(animate=False))
|
|
2342
2347
|
|
|
2343
2348
|
#: Suggested commands, in the order they become useful. Only unused ones
|
|
2344
2349
|
#: are offered.
|
|
@@ -41,6 +41,9 @@ class HelperPermissionsMixin:
|
|
|
41
41
|
return self._request_runtime_permission(tool_name, arguments, log)
|
|
42
42
|
|
|
43
43
|
pure.on_permission_request = on_permission_request
|
|
44
|
+
from superqode.systemone.runtime import format_decision
|
|
45
|
+
|
|
46
|
+
pure.on_systemone = lambda event: self._call_ui(log.add_system, format_decision(event))
|
|
44
47
|
|
|
45
48
|
def _announce_pending_approvals(self, source, log) -> None:
|
|
46
49
|
"""Surface pending approvals from an active runtime or HarnessSpec session."""
|
|
@@ -155,7 +155,10 @@ class HelpersMixin(
|
|
|
155
155
|
if not harness and pure is not None:
|
|
156
156
|
runtime_name = str(getattr(pure, "runtime_name", "") or "")
|
|
157
157
|
connected = bool(getattr(getattr(pure, "session", None), "connected", False))
|
|
158
|
-
|
|
158
|
+
spec = getattr(pure, "_harness_spec", None)
|
|
159
|
+
if connected and getattr(spec, "is_decision", False):
|
|
160
|
+
harness = str(spec.name)
|
|
161
|
+
elif connected and runtime_name in getattr(
|
|
159
162
|
self, "_SELF_CONTAINED_RUNTIMES", frozenset()
|
|
160
163
|
):
|
|
161
164
|
# These runtimes own the agent loop and tool harness. The
|