koru 0.1.331__tar.gz → 0.1.332__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.
- {koru-0.1.331/src/koru.egg-info → koru-0.1.332}/PKG-INFO +5 -5
- {koru-0.1.331 → koru-0.1.332}/README.md +4 -4
- {koru-0.1.331 → koru-0.1.332}/pyproject.toml +1 -1
- {koru-0.1.331 → koru-0.1.332}/src/koru/agent_backend_runtime.py +83 -38
- {koru-0.1.331 → koru-0.1.332}/src/koru/integrations/imgl_client.py +2 -1
- {koru-0.1.331 → koru-0.1.332}/src/koru/integrations/vdisplay_client.py +24 -15
- {koru-0.1.331 → koru-0.1.332/src/koru.egg-info}/PKG-INFO +5 -5
- {koru-0.1.331 → koru-0.1.332}/LICENSE +0 -0
- {koru-0.1.331 → koru-0.1.332}/MANIFEST.in +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/cli_calibration.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/control.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/ecosystem.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/ide_detection.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/commands.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/diagnostics.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/domain.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/pipeline.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/projector.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/query.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/service.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair/store.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/repair_registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/daemon_ctl.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/editor_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/http_handlers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/http_server.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/http_util.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/models.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/paths.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/probe.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/service.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/socket_path.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/packages/coru/src/coru/supervisor/systemd_unit.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/schemas/koru-stdio-event.schema.json +0 -0
- {koru-0.1.331 → koru-0.1.332}/setup.cfg +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/env2llm/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/env2llm/integrators/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/env2llm/integrators/_service_factory.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/env2llm/probes/testql.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/env2llm/service/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/env2llm/service/registry_service.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/imgl/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/imgl/autodiag.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/imgl/freshness.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/__main__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/activity_log.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/agent_backends.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/agent_cli_helpers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/agents.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/api/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.29.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.30.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.32.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.35.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.36.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.38.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.39.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.40.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.41.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.42.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.43.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.44.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.45.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.46.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.55.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.56.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.57.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.2.0.vsix +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autoloop_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_auto_pipeline.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_checkpoint.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cli_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_bridge.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_chat_activity.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_chat_activity_analyzer.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_chat_activity_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_chat_activity_text.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_chat_activity_tickets.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_common.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_drive_outcome.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_drive_retry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_gate.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_orchestrator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_post_drive.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_cycle_skip_conditions.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_daemon.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_diag_markers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_diagnostics.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_drive_retry_policy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_env.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_loop_runner.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_onboarding.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_operator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_parser.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_plugin.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_plugin_lifecycle.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_plugin_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_plugin_wait.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_process_guard.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_processes.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_readiness.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_resources.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_startup.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_submit_strategy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_up.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomous_wup.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/code2llm_discovery.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/cycle_finalize.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/cycle_trace.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/decision_arbiter.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/decision_trace.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/env.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/environment.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/heal.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/ide_operator_guidance.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/ide_work.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/operator_pipeline.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/phases/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/phases/contexts.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/phases/drive_phase.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/phases/queue_phase.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/phases/scan_phase.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/phases/sleep_phase.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/phases/startup_phase.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/phases/utils.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/phases/verify_phase.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/planfile_handoff.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/planning_llm.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/planning_llm_budget.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/planning_llm_parsing.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/planning_llm_prompts.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/planning_llm_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/planning_llm_types.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/policy_decision.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/post_run_verify.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/prompts.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/reflection_policy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/replay_actions.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/replay_builders.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/replay_execution.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/replay_handlers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/replay_parser.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/replay_quick_actions.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/replay_types.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/state.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/structured_report.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/telemetry_snapshot.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy/verification_engine.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy_strategy/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy_strategy/config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy_strategy/defaults.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy_strategy/heuristics.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy_strategy/openrouter.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autonomy_strategy/prompts.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/audit.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/calibrate_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/cli_command.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/cli_direct_drive.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/cli_parser.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/cli_snapshot.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/cli_trace.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/client.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/commands/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/commands/drive.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/commands/handoff.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/commands/manage.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/commands/shutdown.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/commands/status.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/daemon.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/daemon_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/doctor_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/drive_repair_policy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/host_setup.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/ide.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/injector.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/install_checks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/install_manager.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/install_plugin_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/lane_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/local_manager.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/log_contract.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/os_injector.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/plugin_installer.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/protocol.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/systemd_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/tail_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/utils/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/autopilot/utils/client_helpers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bootstrap.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/autonomous_checkpoint/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/autonomous_checkpoint/application.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/autonomous_checkpoint/commands/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/autonomous_checkpoint/events/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/autonomous_checkpoint/queries/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/autonomous_checkpoint/read_model.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/env_config/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/env_config/application.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/env_config/commands/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/env_config/events/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/env_config/queries/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/env_config/read_model.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/local_manager/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/local_manager/application.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/local_manager/commands/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/local_manager/events/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/local_manager/queries/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/local_manager/read_model.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/planfile_queue/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/planfile_queue/application.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/planfile_queue/commands/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/planfile_queue/events/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/planfile_queue/queries/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/planfile_queue/read_model.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/repairs/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/repairs/application.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/repairs/commands/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/repairs/events/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/repairs/queries/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/repairs/read_model.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/tasks/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/tasks/application.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/tasks/commands/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/tasks/events/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/tasks/queries/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/tasks/read_model.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/topology/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/topology/application.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/topology/commands/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/topology/events/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/topology/queries/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/topology/read_model.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/wup/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/wup/application.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/wup/commands/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/wup/events/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/wup/queries/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/bounded_contexts/wup/read_model.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli/__main__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli/commands.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli/parsers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_agent.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_agent_backends.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_auto.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_bootstrap.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_cleaned.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_doctor.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_gate.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_gc.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_ide.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_ide_router.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_imgl.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_init.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_local_serve.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_loop.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_parser.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_queue.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_refactor_planfile_handoff.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_replay.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_runtime_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_scan.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_self.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_serve.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_shim_builders.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_strategy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_tagi.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_task.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_tools.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_topology.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cli_watch.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/configurator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/context_render.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/control_commands.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cqrs/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cqrs/domain_event.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cqrs/event_bus.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cqrs/event_log_projection.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cqrs/event_log_query.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/cqrs/event_store.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/data/koru-interface-registry.yaml +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/decision_engine.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/deployment_events/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/deployment_events/analyzer.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/deployment_events/batch.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/deployment_events/emitter.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/deployment_events/enums.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/deployment_events/models.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/deps_autorepair.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/dev_sync.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_autonomous_streams.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_autopilot_checks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_autopilot_debug.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_chat_control.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_constants.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_models.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_plugin_bundle.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_plugin_console.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_project_checks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_project_health.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_registry_checks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_render.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_reporting_checks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_runner.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/doctor_runtime_checks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/domain/env/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/dotenv_loader.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/dsl/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/env_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/env_flags.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/environment_profile.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/gate.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/gc.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/gc_cli_helpers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/git_attribution.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/git_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_adapters/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_adapters/base.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_adapters/bridge.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_adapters/gillm_client.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_adapters/gillm_recovery.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_adapters/ide_reload.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_adapters/registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_adapters/shared.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_adapters/vscode_family.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_client.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_control_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_doctor_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_router.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ide_status_systemmap.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/init.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/init_host_environment.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/integration_ledger.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/integrations/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/integrations/imgl_autodiag.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/interface_registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/llm_reflect.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/local_manager_client.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/local_manager_state.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/local_service.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/loop.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/mcp_provision.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/mcp_server.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/observability_dsl.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/observability_events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/observability_writer.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/planfile_queue.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/policy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/project_pipeline.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/human.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/koru_queue_argv.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/local_manager.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/locking.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/loop.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/planfile_ticket_note.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/runner.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/runners.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/shell_evidence.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/ticket.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue/types.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue_clean.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/queue_cli_helpers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/redup_integration.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/refactor_planfile_handoff.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/remote/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/remote/client.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/run_log.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/scan.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/scan_collection.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/scan_dedupe_policy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/scan_render.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/scan_ticket_emission.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/scan_types.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/scripts/koru-autoloop.sh +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/self_control.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/semcod_tools.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/serve.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/stdio_events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/tagi_integration.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/task_dedupe.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/task_intake.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/task_io.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/task_models.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/task_ticket.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/tasks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/ticket_evidence.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/tillm_bridge.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/tools.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/topology.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/topology_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/utils/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/utils/subprocess_runner.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/watch.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/cli_main.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/gui/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/gui/app.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/gui/server.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/gui/session.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/gui/static/wizard.css +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/gui/static/wizard.js +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/gui/templates/wizard.html +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/ide.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/ide_install.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/llx.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/orchestrator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/project.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/prompters.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/strategies.json +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/templates/cli-tool.json +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/templates/library.json +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/templates/ml-research.json +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/templates/registry.json +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/templates/web-app.json +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/templates.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wizard/tree.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru/wup_testql_compat.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru.egg-info/SOURCES.txt +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru.egg-info/dependency_links.txt +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru.egg-info/entry_points.txt +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru.egg-info/requires.txt +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koru.egg-info/top_level.txt +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/calibration_validator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_html.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_http.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_observability.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_plugin_logs.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_projects.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_routes.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_serve.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_serve_utils.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_state.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_template.html +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_tickets.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/dashboard_topology.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/desktop_uri.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/env2llm_registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/integrations.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/invoke.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/invoke_handlers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/local.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_desktop_uri.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_dispatch.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_env2llm.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_ide.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_nlp2oql.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_planfile.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_schema.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_testql.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/mcp_server_transport.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/nlp2oql_bridge.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/openapi.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/runtime_insights.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/server.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/testql_bridge.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruapi/topology_post.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korudsl/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korudsl/cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korudsl/library.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korudsl/transform.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/audit.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/chat_history.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/client.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/command_catalog.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/command_catalog_store.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/command_picker.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/command_scenario.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/command_telemetry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/handlers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/handlers_ack.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/handlers_drive.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/handlers_hello.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/handlers_plugin_event.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/metadata.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/protocol.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/server.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon/storage.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/daemon_storage.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/drive_orchestrator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/drive_policy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/host_setup.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ide.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ide_control.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/antigravity.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/base.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/cursor.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/fallback.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/jetbrains.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/vscode.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/vscodium.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/windsurf.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ides/zed.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/injector.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/injector_backends.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/injector_errors.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/os_injector.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/plugin_installer.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/plugin_router.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/plugin_version.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/ports.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/protocol.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/socket.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/strategy_prompt.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruide/utils.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korullm/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korullm/strategies/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korullm/strategies/base.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korullm/strategies/claude.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korullm/strategies/codex.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korullm/strategies/gpt.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korullm/strategies/ide_chat.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korullm/strategies/ollama.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korullm/strategies/registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/browser_capture.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/cli_commands.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/cli_parser.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/codec.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/dashboard.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/dashboard_parse.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/envelope.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/grid_template.html +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/keys.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/store.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/store_persistence.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/korumesh/transport.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruobserve/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruobserve/bootstrap.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruobserve/cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruobserve/cli_parser.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruobserve/diagnostics.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruobserve/lifecycle.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruobserve/paths.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruobserve/providers_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruos/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/agent.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/capture.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/capture_mss.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/capture_probe.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/cli_parser.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/mesh.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/portal_capture.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/base.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/browser_getdisplay.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/cli_tools.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/detector.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/env.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/grim.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/mss.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/obs_websocket.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/portal_screencast.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/portal_screenshot.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/providers/screencast_session.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/koruvision/scaling.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/nlp2imgl/__init__.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/src/nlp2imgl/control.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_activity_log.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_agent_backend_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_agent_backends.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_agent_backends_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_agent_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_agents.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autoloop_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_cycle_bridge.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_cycle_chat_activity_analyzer.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_cycle_chat_activity_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_cycle_chat_activity_text.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_cycle_chat_activity_tickets.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_cycle_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_cycle_drive_retry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_cycle_events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_cycle_skip_conditions.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_daemon_metadata.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_diag_markers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_diagnostics.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_gillm_fallback.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_loop_runner.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_nlp2uri_drive.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_onboarding.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_operator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_operator_reload.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_operator_unsupported_ide.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_parser_detection.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_plugin_lifecycle.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_plugin_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_process_detection.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_process_guard.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_readiness.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_redrive_cooldown.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_scenarios.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_startup.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_submit_strategy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomous_up.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomy_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomy_env.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomy_environment.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomy_events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomy_policy_decision.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomy_prompts.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autonomy_strategy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_audit.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_cli_direct_drive.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_client_drive_errors.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_commands_drive.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_commands_handoff.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_commands_manage.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_commands_shutdown.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_commands_status.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_daemon.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_host_setup.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_ide.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_jetbrains_scaffold.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_lane_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_plugin_installer.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_protocol.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_autopilot_socket_path.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_bootstrap.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_calibration_validator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_capture_host_template.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_chat_history.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cli_shim_builders.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_code2llm_discovery.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_command_catalog_store.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_command_picker.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_command_telemetry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_configurator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_configurator_toggle.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cqrs_autonomous_checkpoint_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cqrs_env_config_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cqrs_local_manager_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cqrs_planfile_queue_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cqrs_primitives.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cqrs_repairs_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cqrs_tasks_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cqrs_topology_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cqrs_wup_context.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_cycle_trace.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_dashboard_html.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_dashboard_projects_by_ide.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_dashboard_ticket_handlers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_dashboard_topology_post.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_decision_arbiter.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_decision_engine.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_decision_trace.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_deployment_events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_deps_autorepair.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_desktop_uri.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_dev_sync.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_docker_capture.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_docker_e2e.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_docker_ide_matrix.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_docker_ide_matrix_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_docs_ide_control_surfaces.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_doctor.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_doctor_facade.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_doctor_koru_auto_probe.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_doctor_reporting_checks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_dotenv_loader.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_drive_orchestrator.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_drive_repair_policy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_e2e.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_env2llm_registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_env_config.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_env_flags.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_environment_profile.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_events.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_gate.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_gc.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_gc_cli_helpers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_gillm_ide_client.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_gillm_recovery.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_git_attribution.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_git_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_healing_webhook_split.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_adapters.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_client.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_client_contract.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_command_catalog.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_doctor_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_operator_guidance.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_reload.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_router.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_status_systemmap.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ide_work.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_imgl_integration.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_init.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_injection_moved_to_gillm.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_install_checks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_install_manager.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_integration_ledger.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_interface_registry.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koru_browser_stack.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koru_gate_capture.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koru_queue_argv.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruapi.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruapi_transports.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_korudsl.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruide_bridges.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruide_client.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruide_daemon_handlers_ack.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruide_daemon_handlers_console_log.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruide_daemon_handlers_drive.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruide_daemon_handlers_hello.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruide_daemon_handlers_plugin_event.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruide_ports.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_korumesh_envelope.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_korumesh_store.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_korumesh_transport.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruobserve_diagnostics.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruobserve_lifecycle.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruvision_agent.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruvision_capture.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_koruvision_mesh.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_lane_plugin_matching.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_llm_reflect.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_llm_strategies.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_local_service.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_loop.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_mcp_provision.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_mcp_server.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_mcp_server_split.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_nlp2oql_bridge.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_nlp2uri_ide_control_gate.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_observability_dsl.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_observation_mesh_e2e.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_observe_providers_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_operator_pipeline.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_package_deduplication.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_planfile_queue.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_planning_llm.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_plugin_router.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_policy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_post_run_verify.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_provider_browser_upload.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_provider_obs.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_provider_portal_screencast.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_pyproject_metadata.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_queue_clean.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_queue_cli_helpers.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_redup_integration.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_refactor_planfile_handoff.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_reflection_policy.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_regix_taskfile.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_remote_control.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_replay_actions.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_run_log.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_runtime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_runtime_insights.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_scan.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_scan_phase.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_scan_split.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_screencast_session.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_self_control.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_semcod_tools.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_serve.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_shell_evidence.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_stdio_autonomous_jsonl.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_strategy_metadata_accessors.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_strategy_prompt.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_structured_report.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_sync_plugin_build.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_tasks.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_testql_bridge.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_ticket_evidence.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_tools.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_topology.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_topology_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_vdisplay_control_fallback.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_verification_cycle_integration.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_verification_engine.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_vision_interval_floor.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_vision_provider_mime.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_watch.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wizard_cli.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wizard_env_e2e.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wizard_gui.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wizard_ide.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wizard_ide_extras.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wizard_llx.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wizard_project.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wizard_templates.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wizard_tree.py +0 -0
- {koru-0.1.331 → koru-0.1.332}/tests/test_wup_taskfile.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: koru
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.332
|
|
4
4
|
Summary: Closed-loop automation across semcod/* repositories.
|
|
5
5
|
Author: Semcod
|
|
6
6
|
Author-email: Tom Sapletta <tom@sapletta.com>
|
|
@@ -156,11 +156,11 @@ Dynamic: license-file
|
|
|
156
156
|
|
|
157
157
|
## AI Cost Tracking
|
|
158
158
|
|
|
159
|
-
    
|
|
160
|
+
  
|
|
161
161
|
|
|
162
|
-
- 🤖 **LLM usage:** $
|
|
163
|
-
- 👤 **Human dev:** ~$
|
|
162
|
+
- 🤖 **LLM usage:** $27.5767 (438 commits)
|
|
163
|
+
- 👤 **Human dev:** ~$15021 (150.2h @ $100/h, 30min dedup)
|
|
164
164
|
|
|
165
165
|
Generated on 2026-06-11 using [openrouter/deep/deep-v4-pro](https://openrouter.ai/deep/deep-v4-pro)
|
|
166
166
|
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
|
|
8
8
|
## AI Cost Tracking
|
|
9
9
|
|
|
10
|
-
    
|
|
11
|
+
  
|
|
12
12
|
|
|
13
|
-
- 🤖 **LLM usage:** $
|
|
14
|
-
- 👤 **Human dev:** ~$
|
|
13
|
+
- 🤖 **LLM usage:** $27.5767 (438 commits)
|
|
14
|
+
- 👤 **Human dev:** ~$15021 (150.2h @ $100/h, 30min dedup)
|
|
15
15
|
|
|
16
16
|
Generated on 2026-06-11 using [openrouter/deep/deep-v4-pro](https://openrouter.ai/deep/deep-v4-pro)
|
|
17
17
|
|
|
@@ -281,6 +281,77 @@ class Nlp2UriDesktopBackend:
|
|
|
281
281
|
return _nlp2uri_desktop_send(prompt, ide=ide, submit=submit, dry_run=self.dry_run)
|
|
282
282
|
|
|
283
283
|
|
|
284
|
+
def _build_plugin_socket_backend(client: IDEControlClient | None) -> AgentBackend:
|
|
285
|
+
if client is None:
|
|
286
|
+
raise ValueError("plugin_socket backend requires an IDEControlClient")
|
|
287
|
+
return PluginSocketBackend(client=client)
|
|
288
|
+
|
|
289
|
+
def _build_mcp_tool_backend(mcp_server: str | None) -> AgentBackend:
|
|
290
|
+
return McpToolBackend(mcp_server=mcp_server)
|
|
291
|
+
|
|
292
|
+
def _build_vendor_agent_cli_backend(shell_client_id: str | None) -> AgentBackend:
|
|
293
|
+
return TillmShellBackend(
|
|
294
|
+
client_id=shell_client_id or os.environ.get("KORU_TILLM_CLIENT", "aider"),
|
|
295
|
+
execute=os.environ.get("KORU_TILLM_DRY_RUN", "").strip().lower()
|
|
296
|
+
not in {"1", "true", "yes", "on"},
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
def _build_gillm_gui_backend() -> AgentBackend:
|
|
300
|
+
return GillmGuiBackend(client=build_gillm_ide_client())
|
|
301
|
+
|
|
302
|
+
def _build_os_injector_backend() -> AgentBackend:
|
|
303
|
+
profile = os.environ.get("KORU_OS_INJECTOR_PROFILE", "").strip()
|
|
304
|
+
if not profile:
|
|
305
|
+
raise ValueError("os_injector backend requires KORU_OS_INJECTOR_PROFILE")
|
|
306
|
+
raw_cfg = os.environ.get("KORU_OS_INJECTOR_CONFIG", "").strip()
|
|
307
|
+
cfg = Path(raw_cfg).expanduser().resolve() if raw_cfg else None
|
|
308
|
+
return OsInjectorBackend(profile_id=profile, config_path=cfg)
|
|
309
|
+
|
|
310
|
+
def _build_nlp2uri_desktop_backend() -> AgentBackend:
|
|
311
|
+
dry = os.environ.get("KORU_NLP2URI_DRY_RUN", "").strip().lower() in {
|
|
312
|
+
"1", "true", "yes", "on",
|
|
313
|
+
}
|
|
314
|
+
return Nlp2UriDesktopBackend(dry_run=dry)
|
|
315
|
+
|
|
316
|
+
def _build_imgl_desktop_backend() -> AgentBackend:
|
|
317
|
+
dry = os.environ.get("KORU_IMGL_DRY_RUN", "").strip().lower() in {
|
|
318
|
+
"1", "true", "yes", "on",
|
|
319
|
+
}
|
|
320
|
+
return ImglDesktopBackend(dry_run=dry)
|
|
321
|
+
|
|
322
|
+
def _build_vdisplay_control_backend() -> AgentBackend:
|
|
323
|
+
dry = os.environ.get("KORU_VDISPLAY_DRY_RUN", "").strip().lower() in {
|
|
324
|
+
"1", "true", "yes", "on",
|
|
325
|
+
}
|
|
326
|
+
return VdisplayControlBackend(dry_run=dry)
|
|
327
|
+
|
|
328
|
+
def _build_noop_backend(noop_reason: str) -> AgentBackend:
|
|
329
|
+
return NoopBackend(reason=noop_reason)
|
|
330
|
+
|
|
331
|
+
_BACKEND_BUILDERS = {
|
|
332
|
+
"plugin_socket": _build_plugin_socket_backend,
|
|
333
|
+
"vscode_family_plugin_socket": _build_plugin_socket_backend,
|
|
334
|
+
"mcp_tool": _build_mcp_tool_backend,
|
|
335
|
+
"mcp_stdio_server": _build_mcp_tool_backend,
|
|
336
|
+
"vendor_agent_cli": _build_vendor_agent_cli_backend,
|
|
337
|
+
"gillm_gui": _build_gillm_gui_backend,
|
|
338
|
+
"gillm_gui_driver": _build_gillm_gui_backend,
|
|
339
|
+
"os_injector": _build_os_injector_backend,
|
|
340
|
+
"os_keyboard_injector": _build_os_injector_backend,
|
|
341
|
+
"nlp2uri_desktop": _build_nlp2uri_desktop_backend,
|
|
342
|
+
"nlp2uri_desktop_window": _build_nlp2uri_desktop_backend,
|
|
343
|
+
"imgl": _build_imgl_desktop_backend,
|
|
344
|
+
"imgl_vision": _build_imgl_desktop_backend,
|
|
345
|
+
"imgl_desktop": _build_imgl_desktop_backend,
|
|
346
|
+
"imgl_vision_driver": _build_imgl_desktop_backend,
|
|
347
|
+
"vdisplay": _build_vdisplay_control_backend,
|
|
348
|
+
"vdisplay_control": _build_vdisplay_control_backend,
|
|
349
|
+
"vdisplay_semantic_control": _build_vdisplay_control_backend,
|
|
350
|
+
"none": _build_noop_backend,
|
|
351
|
+
"noop": _build_noop_backend,
|
|
352
|
+
"": _build_noop_backend,
|
|
353
|
+
}
|
|
354
|
+
|
|
284
355
|
def build_agent_backend(
|
|
285
356
|
*,
|
|
286
357
|
backend_id: str,
|
|
@@ -296,44 +367,18 @@ def build_agent_backend(
|
|
|
296
367
|
"""
|
|
297
368
|
bid = (backend_id or "").strip().lower().replace("-", "_")
|
|
298
369
|
normalized = normalize_agent_backend_id(backend_id or "")
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
if bid == "gillm_gui" or normalized == "gillm_gui_driver":
|
|
312
|
-
return GillmGuiBackend(client=build_gillm_ide_client())
|
|
313
|
-
if bid == "os_injector" or normalized == "os_keyboard_injector":
|
|
314
|
-
profile = os.environ.get("KORU_OS_INJECTOR_PROFILE", "").strip()
|
|
315
|
-
if not profile:
|
|
316
|
-
raise ValueError("os_injector backend requires KORU_OS_INJECTOR_PROFILE")
|
|
317
|
-
raw_cfg = os.environ.get("KORU_OS_INJECTOR_CONFIG", "").strip()
|
|
318
|
-
cfg = Path(raw_cfg).expanduser().resolve() if raw_cfg else None
|
|
319
|
-
return OsInjectorBackend(profile_id=profile, config_path=cfg)
|
|
320
|
-
if bid == "nlp2uri_desktop" or normalized == "nlp2uri_desktop_window":
|
|
321
|
-
dry = os.environ.get("KORU_NLP2URI_DRY_RUN", "").strip().lower() in {
|
|
322
|
-
"1", "true", "yes", "on",
|
|
323
|
-
}
|
|
324
|
-
return Nlp2UriDesktopBackend(dry_run=dry)
|
|
325
|
-
if bid in ("imgl", "imgl_vision", "imgl_desktop") or normalized == "imgl_vision_driver":
|
|
326
|
-
dry = os.environ.get("KORU_IMGL_DRY_RUN", "").strip().lower() in {
|
|
327
|
-
"1", "true", "yes", "on",
|
|
328
|
-
}
|
|
329
|
-
return ImglDesktopBackend(dry_run=dry)
|
|
330
|
-
if bid in ("vdisplay", "vdisplay_control") or normalized == "vdisplay_semantic_control":
|
|
331
|
-
dry = os.environ.get("KORU_VDISPLAY_DRY_RUN", "").strip().lower() in {
|
|
332
|
-
"1", "true", "yes", "on",
|
|
333
|
-
}
|
|
334
|
-
return VdisplayControlBackend(dry_run=dry)
|
|
335
|
-
if bid in ("none", "noop", ""):
|
|
336
|
-
return NoopBackend(reason=noop_reason)
|
|
370
|
+
builder = _BACKEND_BUILDERS.get(bid) or _BACKEND_BUILDERS.get(normalized)
|
|
371
|
+
if builder:
|
|
372
|
+
if "client" in builder.__code__.co_varnames and client is not None:
|
|
373
|
+
return builder(client=client)
|
|
374
|
+
elif "mcp_server" in builder.__code__.co_varnames and mcp_server is not None:
|
|
375
|
+
return builder(mcp_server=mcp_server)
|
|
376
|
+
elif "shell_client_id" in builder.__code__.co_varnames and shell_client_id is not None:
|
|
377
|
+
return builder(shell_client_id=shell_client_id)
|
|
378
|
+
elif "noop_reason" in builder.__code__.co_varnames:
|
|
379
|
+
return builder(noop_reason=noop_reason)
|
|
380
|
+
else:
|
|
381
|
+
return builder()
|
|
337
382
|
raise ValueError(f"unknown agent backend id: {backend_id!r}")
|
|
338
383
|
|
|
339
384
|
|
|
@@ -87,7 +87,8 @@ def imgl_desktop_transport_enabled() -> bool:
|
|
|
87
87
|
|
|
88
88
|
def default_image_path() -> Path:
|
|
89
89
|
if _IMGL_DIRECT:
|
|
90
|
-
|
|
90
|
+
p = _default_image_path()
|
|
91
|
+
return Path(p) if isinstance(p, (str, bytes, os.PathLike)) else p
|
|
91
92
|
raw = os.environ.get("KORU_IMGL_IMAGE", "/tmp/koru-imgl-screen.png").strip()
|
|
92
93
|
return Path(raw).expanduser()
|
|
93
94
|
|
|
@@ -619,6 +619,28 @@ def send_chat(
|
|
|
619
619
|
"fallback_from": "plugin",
|
|
620
620
|
}
|
|
621
621
|
|
|
622
|
+
|
|
623
|
+
def _resolve_vql_chat_target(ide: str, hints: dict) -> dict | None:
|
|
624
|
+
"""Resolve chat target using VQL metadata for precise mouse nav on second monitor (DP-1).
|
|
625
|
+
Used in autonomous PyCharm/JetBrains control via vdisplay + VQL centers (e.g. 1024,640).
|
|
626
|
+
"""
|
|
627
|
+
vql_target = get_vql_target(ide, role="input", name_contains="chat") or get_vql_target(ide, role="input") or get_vql_target(ide, label="chat")
|
|
628
|
+
if not vql_target and ide in ("pycharm", "jetbrains"):
|
|
629
|
+
vql_target = {"click_center": {"x": 1024, "y": 640, "note": "PyCharm/JetBrains editor area on DP-1 second monitor from VQL"}}
|
|
630
|
+
if vql_target:
|
|
631
|
+
return {
|
|
632
|
+
"ok": True,
|
|
633
|
+
"count": 1,
|
|
634
|
+
"selected": {
|
|
635
|
+
"id": vql_target.get("id", "vql-chat"),
|
|
636
|
+
"backend": "vql",
|
|
637
|
+
"role": vql_target.get("role"),
|
|
638
|
+
"click_point": vql_target.get("click_center"),
|
|
639
|
+
"note": f"VQL target from {vql_target.get('source', 'VQL analysis for second monitor')}"
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
return None
|
|
643
|
+
|
|
622
644
|
canon = _canonical_ide(ide)
|
|
623
645
|
if canon in {"jetbrains", "pycharm"}:
|
|
624
646
|
try:
|
|
@@ -668,22 +690,9 @@ def send_chat(
|
|
|
668
690
|
|
|
669
691
|
selector, found = _find_first_selector(ide=ide, selectors=_chat_selectors_for(ide))
|
|
670
692
|
if selector is None:
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
if vql_target:
|
|
674
|
-
# Inject synthetic selector with VQL center for downstream set/click
|
|
693
|
+
found = _resolve_vql_chat_target(ide, hints)
|
|
694
|
+
if found:
|
|
675
695
|
selector = {"role": "input", "name_contains": "Chat"}
|
|
676
|
-
found = {
|
|
677
|
-
"ok": True,
|
|
678
|
-
"count": 1,
|
|
679
|
-
"selected": {
|
|
680
|
-
"id": vql_target.get("id", "vql-chat"),
|
|
681
|
-
"backend": "vql",
|
|
682
|
-
"role": vql_target.get("role"),
|
|
683
|
-
"click_point": vql_target.get("click_center"),
|
|
684
|
-
"note": f"VQL target from {vql_target.get('source')}"
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
696
|
else:
|
|
688
697
|
return {
|
|
689
698
|
"ok": False,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: koru
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.332
|
|
4
4
|
Summary: Closed-loop automation across semcod/* repositories.
|
|
5
5
|
Author: Semcod
|
|
6
6
|
Author-email: Tom Sapletta <tom@sapletta.com>
|
|
@@ -156,11 +156,11 @@ Dynamic: license-file
|
|
|
156
156
|
|
|
157
157
|
## AI Cost Tracking
|
|
158
158
|
|
|
159
|
-
    
|
|
160
|
+
  
|
|
161
161
|
|
|
162
|
-
- 🤖 **LLM usage:** $
|
|
163
|
-
- 👤 **Human dev:** ~$
|
|
162
|
+
- 🤖 **LLM usage:** $27.5767 (438 commits)
|
|
163
|
+
- 👤 **Human dev:** ~$15021 (150.2h @ $100/h, 30min dedup)
|
|
164
164
|
|
|
165
165
|
Generated on 2026-06-11 using [openrouter/deep/deep-v4-pro](https://openrouter.ai/deep/deep-v4-pro)
|
|
166
166
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.29.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.30.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.32.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.35.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.36.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.38.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.39.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.40.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.41.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.42.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.43.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.44.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.45.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.46.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.55.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.56.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.1.57.vsix
RENAMED
|
File without changes
|
{koru-0.1.331 → koru-0.1.332}/src/koru/assets/koru-autopilot-vscode/koru-autopilot-0.2.0.vsix
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|