local-coding-agent 1.1.0__tar.gz → 1.1.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.
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/PKG-INFO +10 -7
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/README.md +8 -6
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/__init__.py +1 -1
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/cli/_handlers2.py +5 -1
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/mcp_server.py +5 -4
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/service.py +5 -1
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/skill_config.py +1 -1
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/tasks.py +3 -1
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent.egg-info/PKG-INFO +10 -7
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent.egg-info/requires.txt +1 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/pyproject.toml +3 -1
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_cli.py +15 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_mcp_server.py +26 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_service.py +17 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_tasks.py +2 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_version_consistency.py +22 -1
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/LICENSE +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/__main__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/__init__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_codec.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_protocol.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_server.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_session.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_tools.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/ast_compactor.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/atomizer.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/__init__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_cases.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_judge.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_oracles.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_runner.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_stats.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_summary.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark_oracle_worker.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/calibration.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/capability.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/chat_compaction.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/cli/__init__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/cli/_dispatch.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/cli/_handlers.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/cli/_input.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/cli/_main.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/cli/_parser.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/context_manager.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/controller/__init__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/controller/_constants.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/controller/_controller.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/controller/_post_apply.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/delegator.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/__init__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/app.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/assets/lucide.min.js +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/assets/tailwind.css +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/client_js.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/components.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/server/__init__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/server/_handlers.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/server/_models.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/server/_server.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/server/_telemetry.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/styles.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/ui.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/doctor.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/hooks/__init__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/hooks/_adapters.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/hooks/_bridge.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/hooks/_decision.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/lsp/__init__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/lsp/_client.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/lsp/_fallback.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/lsp/_manager.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/lsp/_mock.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/lsp/_types.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/mcp_config.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/memory.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/mode_router.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/model_scanner.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/monitor.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/observation_policy.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/ollama_adapter.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/plan_mode.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/prescriptions.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/profiles.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/repository_tools.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/ripgrep.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/semantic_linter.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/session_events.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/session_query.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/smoke.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/speculative_racing.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/spill.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/stats.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/stdio.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/subagent.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/task.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/task_store.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/__init__.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/_manager.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/_process.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/_session.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/_tools.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/_types.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/tool_call_parser.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/validators.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/vram_fit.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/worker_pool.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent.egg-info/SOURCES.txt +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent.egg-info/dependency_links.txt +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent.egg-info/entry_points.txt +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent.egg-info/top_level.txt +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/setup.cfg +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_acp_server.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_adversarial_session.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_ast_compactor.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_atomizer.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_benchmark.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_calibration.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_capability.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_chat_compaction.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_context_manager.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_controller.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_ctx_preflight.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_delegator.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_desktop_app.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_desktop_http_framing.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_desktop_release_gate.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_doctor.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_doctor_fix.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_e2e_functional_scenario.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_edits.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_hooks.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_lsp.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_mcp_config.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_mediated_apply.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_memory_manager.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_mode_router.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_model_scanner.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_monitor.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_observation_policy.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_ollama_adapter.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_openai_adapter.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_plan_mode.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_prescriptions.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_profiles.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_progress_telemetry.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_r30_adversarial.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_repository_tools.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_ripgrep.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_semantic_linter.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_session_events.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_session_query.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_skill_config.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_skill_parity.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_smoke.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_speculative_racing.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_spill.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_stats.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_stdio.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_subagent.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_task.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_task_store.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_telemetry.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_terminal.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_tool_call_parser.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_ui_app.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_ux_audit_fixes.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_validators.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_vram_fit.py +0 -0
- {local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/tests/test_worker_pool.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: local-coding-agent
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.1
|
|
4
4
|
Summary: Harness-agnostic controller delegating atomic coding tasks to local Ollama & llama.cpp models via MCP, Agent Skills, and direct CLI.
|
|
5
5
|
Author: Local Coding Agent Contributors
|
|
6
6
|
License: MIT
|
|
@@ -15,6 +15,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
15
15
|
Requires-Python: >=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
+
Requires-Dist: mcp==2.0.0
|
|
18
19
|
Provides-Extra: mcp
|
|
19
20
|
Requires-Dist: mcp==2.0.0; extra == "mcp"
|
|
20
21
|
Provides-Extra: dev
|
|
@@ -25,10 +26,12 @@ Dynamic: license-file
|
|
|
25
26
|
|
|
26
27
|
# Local Coding Agent
|
|
27
28
|
|
|
29
|
+
<!-- mcp-name: io.github.pvnc228/local-coding-agent -->
|
|
30
|
+
|
|
28
31
|
Local execution and safety layer for delegating coding tasks from cloud agents to models on your own machine.
|
|
29
32
|
|
|
30
33
|
[](https://github.com/pvnc228/local-coding-agent/actions/workflows/ci.yml)
|
|
31
|
-
[](pyproject.toml)
|
|
32
35
|
[](https://www.python.org/downloads/)
|
|
33
36
|
[](LICENSE)
|
|
34
37
|
|
|
@@ -53,13 +56,13 @@ The same gate backs `apply_proposal`, `local-agent apply`, and the desktop apply
|
|
|
53
56
|
|
|
54
57
|
## Choose your download
|
|
55
58
|
|
|
56
|
-
### Current public release: v1.0
|
|
59
|
+
### Current public release: v1.1.0
|
|
57
60
|
|
|
58
61
|
Choose the CLI release for terminal workflows, scripts, CI, or integration with another AI coding environment. It provides the `local-agent` command, MCP server, Agent Skill, diagnostics, sessions, model tools, and task delegation.
|
|
59
62
|
|
|
60
|
-
[Download the CLI wheel](https://github.com/pvnc228/local-coding-agent/releases/download/v1.0
|
|
63
|
+
[Download the CLI wheel](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/local_coding_agent-1.1.0-py3-none-any.whl) or [CLI source archive](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/local_coding_agent-1.1.0.tar.gz). Windows users can [download the Desktop Harness installer](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/Local.AI.Coding.Harness_1.1.0_x64-setup.exe) and verify the published files with [SHA256SUMS.txt](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/SHA256SUMS.txt).
|
|
61
64
|
|
|
62
|
-
The `v1.0
|
|
65
|
+
The `v1.1.0` release contains the CLI archives and the Windows Desktop Harness installer. Local inference remains local; install [Ollama](https://ollama.com/) or run a compatible local model server before requesting live model responses.
|
|
63
66
|
|
|
64
67
|
## Desktop Harness
|
|
65
68
|
|
|
@@ -91,7 +94,7 @@ Requirements:
|
|
|
91
94
|
Install the CLI package:
|
|
92
95
|
|
|
93
96
|
```bash
|
|
94
|
-
pipx install
|
|
97
|
+
pipx install local-coding-agent
|
|
95
98
|
```
|
|
96
99
|
|
|
97
100
|
Or install from a checkout:
|
|
@@ -99,7 +102,7 @@ Or install from a checkout:
|
|
|
99
102
|
```bash
|
|
100
103
|
git clone https://github.com/pvnc228/local-coding-agent.git
|
|
101
104
|
cd local-coding-agent
|
|
102
|
-
python -m pip install -e
|
|
105
|
+
python -m pip install -e .
|
|
103
106
|
```
|
|
104
107
|
|
|
105
108
|
Check the installation:
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# Local Coding Agent
|
|
2
2
|
|
|
3
|
+
<!-- mcp-name: io.github.pvnc228/local-coding-agent -->
|
|
4
|
+
|
|
3
5
|
Local execution and safety layer for delegating coding tasks from cloud agents to models on your own machine.
|
|
4
6
|
|
|
5
7
|
[](https://github.com/pvnc228/local-coding-agent/actions/workflows/ci.yml)
|
|
6
|
-
[](pyproject.toml)
|
|
7
9
|
[](https://www.python.org/downloads/)
|
|
8
10
|
[](LICENSE)
|
|
9
11
|
|
|
@@ -28,13 +30,13 @@ The same gate backs `apply_proposal`, `local-agent apply`, and the desktop apply
|
|
|
28
30
|
|
|
29
31
|
## Choose your download
|
|
30
32
|
|
|
31
|
-
### Current public release: v1.0
|
|
33
|
+
### Current public release: v1.1.0
|
|
32
34
|
|
|
33
35
|
Choose the CLI release for terminal workflows, scripts, CI, or integration with another AI coding environment. It provides the `local-agent` command, MCP server, Agent Skill, diagnostics, sessions, model tools, and task delegation.
|
|
34
36
|
|
|
35
|
-
[Download the CLI wheel](https://github.com/pvnc228/local-coding-agent/releases/download/v1.0
|
|
37
|
+
[Download the CLI wheel](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/local_coding_agent-1.1.0-py3-none-any.whl) or [CLI source archive](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/local_coding_agent-1.1.0.tar.gz). Windows users can [download the Desktop Harness installer](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/Local.AI.Coding.Harness_1.1.0_x64-setup.exe) and verify the published files with [SHA256SUMS.txt](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/SHA256SUMS.txt).
|
|
36
38
|
|
|
37
|
-
The `v1.0
|
|
39
|
+
The `v1.1.0` release contains the CLI archives and the Windows Desktop Harness installer. Local inference remains local; install [Ollama](https://ollama.com/) or run a compatible local model server before requesting live model responses.
|
|
38
40
|
|
|
39
41
|
## Desktop Harness
|
|
40
42
|
|
|
@@ -66,7 +68,7 @@ Requirements:
|
|
|
66
68
|
Install the CLI package:
|
|
67
69
|
|
|
68
70
|
```bash
|
|
69
|
-
pipx install
|
|
71
|
+
pipx install local-coding-agent
|
|
70
72
|
```
|
|
71
73
|
|
|
72
74
|
Or install from a checkout:
|
|
@@ -74,7 +76,7 @@ Or install from a checkout:
|
|
|
74
76
|
```bash
|
|
75
77
|
git clone https://github.com/pvnc228/local-coding-agent.git
|
|
76
78
|
cd local-coding-agent
|
|
77
|
-
python -m pip install -e
|
|
79
|
+
python -m pip install -e .
|
|
78
80
|
```
|
|
79
81
|
|
|
80
82
|
Check the installation:
|
|
@@ -525,7 +525,11 @@ def _handle_serve_mcp(args: argparse.Namespace) -> int:
|
|
|
525
525
|
from ..service import DelegationService
|
|
526
526
|
|
|
527
527
|
ws_path = str(Path(args.workspace).resolve())
|
|
528
|
-
service = DelegationService(
|
|
528
|
+
service = DelegationService(
|
|
529
|
+
{args.workspace_ref: ws_path},
|
|
530
|
+
default_profile=args.profile,
|
|
531
|
+
endpoint=args.endpoint,
|
|
532
|
+
)
|
|
529
533
|
server = build_server(service, enable_tasks=args.enable_tasks)
|
|
530
534
|
server.run(transport="stdio")
|
|
531
535
|
return 0
|
|
@@ -33,7 +33,7 @@ except ImportError: # pragma: no cover - pydantic comes with mcp
|
|
|
33
33
|
|
|
34
34
|
_CALLER_ID = "mcp-stdio"
|
|
35
35
|
_SERVER_NAME = "local-coding-agent"
|
|
36
|
-
_SERVER_VERSION = "1.1.
|
|
36
|
+
_SERVER_VERSION = "1.1.1"
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
|
|
@@ -205,7 +205,7 @@ def build_server(
|
|
|
205
205
|
execution_gate=runtime_gate,
|
|
206
206
|
task_store=task_store,
|
|
207
207
|
)
|
|
208
|
-
extensions.append(TasksExtension(pool, caller_id=_CALLER_ID))
|
|
208
|
+
extensions.append(TasksExtension(pool, caller_id=_CALLER_ID, default_profile=service.default_profile))
|
|
209
209
|
|
|
210
210
|
|
|
211
211
|
server = MCPServer(
|
|
@@ -268,10 +268,11 @@ def build_server(
|
|
|
268
268
|
async def delegate_code(
|
|
269
269
|
request_id: str,
|
|
270
270
|
workspace_ref: str,
|
|
271
|
-
model_profile: str,
|
|
272
271
|
task: dict[str, Any],
|
|
272
|
+
model_profile: str | None = None,
|
|
273
273
|
) -> CallToolResult:
|
|
274
|
-
|
|
274
|
+
# An omitted profile falls back to the one the host started the server with (--profile).
|
|
275
|
+
request = _delegate_request(request_id, workspace_ref, model_profile or service.default_profile, task)
|
|
275
276
|
try:
|
|
276
277
|
result = await execution_gate.run(service.delegate, _CALLER_ID, request)
|
|
277
278
|
except ExecutionOverload:
|
|
@@ -83,6 +83,8 @@ class DelegationService:
|
|
|
83
83
|
max_turns: int = 4,
|
|
84
84
|
max_cached_results: int = 256,
|
|
85
85
|
preflight_budget: TaskBudget = TaskBudget(),
|
|
86
|
+
default_profile: str | None = None,
|
|
87
|
+
endpoint: str | None = None,
|
|
86
88
|
) -> None:
|
|
87
89
|
if max_turns <= 0:
|
|
88
90
|
raise ValueError("max_turns must be positive")
|
|
@@ -104,6 +106,8 @@ class DelegationService:
|
|
|
104
106
|
self._max_turns = max_turns
|
|
105
107
|
self._max_cached_results = max_cached_results
|
|
106
108
|
self._preflight_budget = preflight_budget
|
|
109
|
+
self.default_profile = default_profile
|
|
110
|
+
self.endpoint = endpoint
|
|
107
111
|
self._cache: OrderedDict[tuple[str, str, str], _CachedResult] = OrderedDict()
|
|
108
112
|
self._cache_lock = RLock()
|
|
109
113
|
|
|
@@ -257,7 +261,7 @@ class DelegationService:
|
|
|
257
261
|
if not report.accepted:
|
|
258
262
|
return self._policy_failure("preflight_rejected", report.reason or "preflight_rejected")
|
|
259
263
|
try:
|
|
260
|
-
profile = get_profile(request.model_profile)
|
|
264
|
+
profile = get_profile(request.model_profile, **({"endpoint": self.endpoint} if self.endpoint else {}))
|
|
261
265
|
except ValueError:
|
|
262
266
|
return self._policy_failure(
|
|
263
267
|
"unknown_model_profile",
|
|
@@ -56,7 +56,7 @@ Delegates one atomic, proposal-only coding task to a local Ollama model.
|
|
|
56
56
|
#### Parameters:
|
|
57
57
|
- `request_id` *(string, required)*: A unique caller-generated idempotency key (e.g. `task-fix-auth-01`).
|
|
58
58
|
- `workspace_ref` *(string, required)*: The registered workspace identifier (usually `"workspace"`).
|
|
59
|
-
- `model_profile` *(string,
|
|
59
|
+
- `model_profile` *(string, optional when the server was started with `--profile`)*: Named profile (e.g. `"qwen2.5-coder"`, `"qwen3-8b-q6k"`, `"devstral-small-2-24b"`).
|
|
60
60
|
- `task` *(object, required)*: The structured task envelope:
|
|
61
61
|
- `id` *(string)*: Short descriptive identifier (e.g. `"fix-null-dereference"`).
|
|
62
62
|
- `goal` *(string)*: 1 concise sentence describing the goal.
|
|
@@ -147,9 +147,11 @@ if _MCP_AVAILABLE:
|
|
|
147
147
|
caller_id: str,
|
|
148
148
|
ttl_ms: int = _DEFAULT_TTL_MS,
|
|
149
149
|
poll_interval_ms: int = _DEFAULT_POLL_INTERVAL_MS,
|
|
150
|
+
default_profile: str | None = None,
|
|
150
151
|
) -> None:
|
|
151
152
|
self._pool = pool
|
|
152
153
|
self._caller_id = caller_id
|
|
154
|
+
self._default_profile = default_profile
|
|
153
155
|
self._ttl_ms = ttl_ms
|
|
154
156
|
self._poll_interval_ms = poll_interval_ms
|
|
155
157
|
|
|
@@ -185,7 +187,7 @@ if _MCP_AVAILABLE:
|
|
|
185
187
|
request = DelegationRequest(
|
|
186
188
|
request_id=arguments.get("request_id"),
|
|
187
189
|
workspace_ref=arguments.get("workspace_ref"),
|
|
188
|
-
model_profile=arguments.get("model_profile"),
|
|
190
|
+
model_profile=arguments.get("model_profile") or self._default_profile,
|
|
189
191
|
task=TaskEnvelope.from_mapping(arguments.get("task") or {}),
|
|
190
192
|
)
|
|
191
193
|
except (TypeError, ValueError):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: local-coding-agent
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.1
|
|
4
4
|
Summary: Harness-agnostic controller delegating atomic coding tasks to local Ollama & llama.cpp models via MCP, Agent Skills, and direct CLI.
|
|
5
5
|
Author: Local Coding Agent Contributors
|
|
6
6
|
License: MIT
|
|
@@ -15,6 +15,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
15
15
|
Requires-Python: >=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
+
Requires-Dist: mcp==2.0.0
|
|
18
19
|
Provides-Extra: mcp
|
|
19
20
|
Requires-Dist: mcp==2.0.0; extra == "mcp"
|
|
20
21
|
Provides-Extra: dev
|
|
@@ -25,10 +26,12 @@ Dynamic: license-file
|
|
|
25
26
|
|
|
26
27
|
# Local Coding Agent
|
|
27
28
|
|
|
29
|
+
<!-- mcp-name: io.github.pvnc228/local-coding-agent -->
|
|
30
|
+
|
|
28
31
|
Local execution and safety layer for delegating coding tasks from cloud agents to models on your own machine.
|
|
29
32
|
|
|
30
33
|
[](https://github.com/pvnc228/local-coding-agent/actions/workflows/ci.yml)
|
|
31
|
-
[](pyproject.toml)
|
|
32
35
|
[](https://www.python.org/downloads/)
|
|
33
36
|
[](LICENSE)
|
|
34
37
|
|
|
@@ -53,13 +56,13 @@ The same gate backs `apply_proposal`, `local-agent apply`, and the desktop apply
|
|
|
53
56
|
|
|
54
57
|
## Choose your download
|
|
55
58
|
|
|
56
|
-
### Current public release: v1.0
|
|
59
|
+
### Current public release: v1.1.0
|
|
57
60
|
|
|
58
61
|
Choose the CLI release for terminal workflows, scripts, CI, or integration with another AI coding environment. It provides the `local-agent` command, MCP server, Agent Skill, diagnostics, sessions, model tools, and task delegation.
|
|
59
62
|
|
|
60
|
-
[Download the CLI wheel](https://github.com/pvnc228/local-coding-agent/releases/download/v1.0
|
|
63
|
+
[Download the CLI wheel](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/local_coding_agent-1.1.0-py3-none-any.whl) or [CLI source archive](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/local_coding_agent-1.1.0.tar.gz). Windows users can [download the Desktop Harness installer](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/Local.AI.Coding.Harness_1.1.0_x64-setup.exe) and verify the published files with [SHA256SUMS.txt](https://github.com/pvnc228/local-coding-agent/releases/download/v1.1.0/SHA256SUMS.txt).
|
|
61
64
|
|
|
62
|
-
The `v1.0
|
|
65
|
+
The `v1.1.0` release contains the CLI archives and the Windows Desktop Harness installer. Local inference remains local; install [Ollama](https://ollama.com/) or run a compatible local model server before requesting live model responses.
|
|
63
66
|
|
|
64
67
|
## Desktop Harness
|
|
65
68
|
|
|
@@ -91,7 +94,7 @@ Requirements:
|
|
|
91
94
|
Install the CLI package:
|
|
92
95
|
|
|
93
96
|
```bash
|
|
94
|
-
pipx install
|
|
97
|
+
pipx install local-coding-agent
|
|
95
98
|
```
|
|
96
99
|
|
|
97
100
|
Or install from a checkout:
|
|
@@ -99,7 +102,7 @@ Or install from a checkout:
|
|
|
99
102
|
```bash
|
|
100
103
|
git clone https://github.com/pvnc228/local-coding-agent.git
|
|
101
104
|
cd local-coding-agent
|
|
102
|
-
python -m pip install -e
|
|
105
|
+
python -m pip install -e .
|
|
103
106
|
```
|
|
104
107
|
|
|
105
108
|
Check the installation:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "local-coding-agent"
|
|
7
|
-
version = "1.1.
|
|
7
|
+
version = "1.1.1"
|
|
8
8
|
|
|
9
9
|
description = "Harness-agnostic controller delegating atomic coding tasks to local Ollama & llama.cpp models via MCP, Agent Skills, and direct CLI."
|
|
10
10
|
|
|
@@ -22,12 +22,14 @@ classifiers = [
|
|
|
22
22
|
"Topic :: Software Development :: Code Generators",
|
|
23
23
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
24
24
|
]
|
|
25
|
+
dependencies = ["mcp==2.0.0"]
|
|
25
26
|
|
|
26
27
|
[project.scripts]
|
|
27
28
|
local-agent = "local_coding_agent.cli:main"
|
|
28
29
|
local-coding-agent = "local_coding_agent.cli:main"
|
|
29
30
|
|
|
30
31
|
[project.optional-dependencies]
|
|
32
|
+
# Kept so existing `local-coding-agent[mcp]` installs keep resolving; the SDK is a core dependency.
|
|
31
33
|
mcp = ["mcp==2.0.0"]
|
|
32
34
|
dev = ["pytest"]
|
|
33
35
|
desktop = ["pywebview>=5.0.0"]
|
|
@@ -108,6 +108,21 @@ class CliTests(unittest.TestCase):
|
|
|
108
108
|
self.assertEqual(args.workspace, "c:/code")
|
|
109
109
|
self.assertTrue(args.enable_tasks)
|
|
110
110
|
|
|
111
|
+
def test_serve_mcp_passes_profile_and_endpoint_to_service(self):
|
|
112
|
+
from local_coding_agent.cli._handlers2 import _handle_serve_mcp
|
|
113
|
+
|
|
114
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
|
115
|
+
args = build_parser().parse_args(
|
|
116
|
+
["serve-mcp", "--workspace", temp_dir, "--profile", "qwen3-8b-q6k", "--endpoint", "http://127.0.0.1:8080"]
|
|
117
|
+
)
|
|
118
|
+
with mock.patch("local_coding_agent.mcp_server.build_server") as build_server:
|
|
119
|
+
self.assertEqual(_handle_serve_mcp(args), 0)
|
|
120
|
+
|
|
121
|
+
service = build_server.call_args.args[0]
|
|
122
|
+
self.assertEqual(service.default_profile, "qwen3-8b-q6k")
|
|
123
|
+
self.assertEqual(service.endpoint, "http://127.0.0.1:8080")
|
|
124
|
+
build_server.return_value.run.assert_called_once_with(transport="stdio")
|
|
125
|
+
|
|
111
126
|
def test_cli_subcommand_monitor(self):
|
|
112
127
|
args = build_parser().parse_args(["monitor", "--port", "9000"])
|
|
113
128
|
self.assertEqual(args.subcommand, "monitor")
|
|
@@ -81,6 +81,32 @@ class McpSdkServerTests(unittest.TestCase):
|
|
|
81
81
|
self.assertEqual(result.structured_content["status"], "accepted")
|
|
82
82
|
self.assertFalse(result.structured_content.get("applied", False))
|
|
83
83
|
|
|
84
|
+
def test_delegate_code_uses_server_default_profile_when_omitted(self):
|
|
85
|
+
profiles = []
|
|
86
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
|
87
|
+
workspace = Path(temp_dir)
|
|
88
|
+
(workspace / "allowed.py").write_text("VALUE = 1\n", encoding="utf-8")
|
|
89
|
+
service = DelegationService(
|
|
90
|
+
{"fixture": workspace},
|
|
91
|
+
model_factory=lambda profile: profiles.append(profile.name) or FakeModel(),
|
|
92
|
+
default_profile="qwen2.5-1.5b",
|
|
93
|
+
)
|
|
94
|
+
server = build_server(service)
|
|
95
|
+
args = self._arguments()
|
|
96
|
+
del args["model_profile"]
|
|
97
|
+
|
|
98
|
+
async def run():
|
|
99
|
+
from mcp.client import Client
|
|
100
|
+
|
|
101
|
+
async with Client(server) as client:
|
|
102
|
+
return await client.call_tool("delegate_code", args)
|
|
103
|
+
|
|
104
|
+
result = asyncio.run(run())
|
|
105
|
+
|
|
106
|
+
self.assertFalse(result.is_error)
|
|
107
|
+
self.assertEqual(result.structured_content["status"], "accepted")
|
|
108
|
+
self.assertEqual(profiles, ["qwen2.5-1.5b"])
|
|
109
|
+
|
|
84
110
|
def test_delegate_code_unknown_workspace_is_error(self):
|
|
85
111
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
86
112
|
server = build_server(self._service(Path(temp_dir)))
|
|
@@ -126,6 +126,23 @@ class DelegationServiceTests(unittest.TestCase):
|
|
|
126
126
|
self.assertEqual(unknown_profile["error"]["kind"], "unknown_model_profile")
|
|
127
127
|
self.assertEqual(calls, [])
|
|
128
128
|
|
|
129
|
+
def test_endpoint_override_applies_to_resolved_profile(self):
|
|
130
|
+
profiles = []
|
|
131
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
|
132
|
+
workspace = Path(temp_dir)
|
|
133
|
+
(workspace / "allowed.py").write_text("VALUE = 1\n", encoding="utf-8")
|
|
134
|
+
model = FakeModel(self._candidate())
|
|
135
|
+
service = DelegationService(
|
|
136
|
+
{"fixture": workspace},
|
|
137
|
+
model_factory=lambda profile: profiles.append(profile) or model,
|
|
138
|
+
endpoint="http://127.0.0.1:8080",
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
result = service.delegate("caller-a", self._request())
|
|
142
|
+
|
|
143
|
+
self.assertEqual(result["status"], "accepted")
|
|
144
|
+
self.assertEqual([profile.endpoint for profile in profiles], ["http://127.0.0.1:8080"])
|
|
145
|
+
|
|
129
146
|
def test_rejects_reused_request_id_with_a_different_payload(self):
|
|
130
147
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
131
148
|
workspace = Path(temp_dir)
|
|
@@ -10,7 +10,7 @@ from pathlib import Path
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
ROOT = Path(__file__).resolve().parents[1]
|
|
13
|
-
PUBLIC_RELEASE_VERSION = "1.0
|
|
13
|
+
PUBLIC_RELEASE_VERSION = "1.1.0"
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def _project_version() -> str:
|
|
@@ -54,6 +54,27 @@ def test_all_release_metadata_matches_pyproject_version():
|
|
|
54
54
|
)
|
|
55
55
|
|
|
56
56
|
|
|
57
|
+
def test_mcp_registry_metadata_matches_the_pypi_package():
|
|
58
|
+
expected = _project_version()
|
|
59
|
+
server = json.loads((ROOT / "server.json").read_text(encoding="utf-8-sig"))
|
|
60
|
+
pyproject = (ROOT / "pyproject.toml").read_text(encoding="utf-8-sig")
|
|
61
|
+
readme = (ROOT / "README.md").read_text(encoding="utf-8-sig")
|
|
62
|
+
(package,) = server["packages"]
|
|
63
|
+
|
|
64
|
+
assert server["name"] == "io.github.pvnc228/local-coding-agent"
|
|
65
|
+
assert len(server["description"]) <= 100
|
|
66
|
+
assert server["version"] == expected
|
|
67
|
+
assert package["registryType"] == "pypi"
|
|
68
|
+
assert package["identifier"] == re.search(r'^name\s*=\s*"([^"]+)"', pyproject, re.MULTILINE).group(1)
|
|
69
|
+
assert package["version"] == expected
|
|
70
|
+
assert package["transport"] == {"type": "stdio"}
|
|
71
|
+
# The registry verifies PyPI ownership through this marker in the published README.
|
|
72
|
+
assert re.search(rf"mcp-name: {re.escape(server['name'])}(?:\s|-->)", readme)
|
|
73
|
+
# Registry clients launch the bare package, so the MCP SDK cannot be an optional extra.
|
|
74
|
+
dependencies = re.search(r"^dependencies\s*=\s*\[(.*?)\]", pyproject, re.MULTILINE | re.DOTALL)
|
|
75
|
+
assert dependencies and '"mcp==' in dependencies.group(1)
|
|
76
|
+
|
|
77
|
+
|
|
57
78
|
def test_ci_and_release_workflows_gate_and_publish_the_windows_installer():
|
|
58
79
|
ci = (ROOT / ".github" / "workflows" / "ci.yml").read_text(encoding="utf-8-sig")
|
|
59
80
|
release = (ROOT / ".github" / "workflows" / "release.yml").read_text(encoding="utf-8-sig")
|
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/__init__.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_codec.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_protocol.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_server.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_session.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/acp_server/_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/__init__.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_cases.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_judge.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_oracles.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_runner.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_stats.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark/_summary.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/benchmark_oracle_worker.py
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
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/controller/__init__.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/controller/_constants.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/controller/_controller.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/controller/_post_apply.py
RENAMED
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/assets/tailwind.css
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/client_js.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/components.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/server/__init__.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/server/_handlers.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/server/_models.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/desktop/server/_server.py
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
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/observation_policy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/repository_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/speculative_racing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/__init__.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/_manager.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/_process.py
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/terminal/_session.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent/tool_call_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{local_coding_agent-1.1.0 → local_coding_agent-1.1.1}/local_coding_agent.egg-info/top_level.txt
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|