drydock-cli 3.0.124__tar.gz → 3.0.125__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.
- {drydock_cli-3.0.124/drydock_cli.egg-info → drydock_cli-3.0.125}/PKG-INFO +1 -1
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/agent.py +1 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125/drydock_cli.egg-info}/PKG-INFO +1 -1
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/pyproject.toml +1 -1
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_failure_loop.py +3 -3
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/LICENSE +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/NOTICE +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/README.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/__init__.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/__main__.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/advisor.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/bash_safety.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/__init__.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/ml-data.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/ml-debug.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/ml-finetune.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/ml-metrics.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/ml-rl.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/ml-train.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/rmf-categorize.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/rmf-control.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/rmf-poam.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/rmf-review.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/stig-assess.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/builtin_skills/stig-remediate.md +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/cci.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/cli.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/compaction.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/config.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/detect.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/extract.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/gittools.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/graphrag.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/guards.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/loop_detect.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/mcp.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/poam.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/providers.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/recipes.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/rmf.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/rmf_graph.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/skills.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/stig.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/suggest.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/task_state.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/tool_registry.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/tools/__init__.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/tui/__init__.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/tui/app.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/tui/approval.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/tui/messages.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/tui/widgets.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/tuning.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/verification.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock/web.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock_cli.egg-info/SOURCES.txt +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock_cli.egg-info/dependency_links.txt +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock_cli.egg-info/entry_points.txt +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock_cli.egg-info/requires.txt +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/drydock_cli.egg-info/top_level.txt +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/setup.cfg +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_advisor.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_approval.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_back_command.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_background.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_binary_output.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_crossplatform.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_output_bounding.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_process_group.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_safety.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_sanitize.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_shell.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_stdin.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_stop_partial.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_timeout_network.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_bash_timeout_param.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_cci.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_cli_agents.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_compact_command.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_compaction.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_config.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_config_migration.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_context_limit_config.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_detect.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_dispatch.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_e2e_connected.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_edit_replace_all.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_empty_response.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_extract.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_first_run_setup.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_gittools.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_glob_edit_edges.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_graphify_example.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_graphrag.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_graphrag_quoted_path.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_grep_and_read_robust.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_guards_and_tools.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_hallucinated_tools.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_leaked_tool_call.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_loop_detect.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_mcp.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_oneshot_unreachable.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_overthink_interrupt.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_plan_autocontinue.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_poam.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_providers_unreachable.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_read_index.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_recipes.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_repetition_interrupt.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_rmf.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_rmf_graph.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_rmf_stig_graph.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_runaway_repetition.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_screenshot.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_server_probe.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_skills.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_stall_retry.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_stig.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_stop.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_streaming_newlines.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_subagent.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_suggest.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_system_prompt_help.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_task_state.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_todo.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_tool_arg_coercion.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_tool_arg_coercion_more.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_tool_arg_parsing.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_tools_undo.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_tui.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_tuning.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_verification_gate.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_viewimage.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_vision_input.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_web_tools.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_windows_shell.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_write_content_coerce.py +0 -0
- {drydock_cli-3.0.124 → drydock_cli-3.0.125}/tests/test_xccdf.py +0 -0
|
@@ -341,6 +341,7 @@ def run(
|
|
|
341
341
|
# wedge; once it runs any check (ran_verification) the gate is satisfied.
|
|
342
342
|
if (
|
|
343
343
|
config.get("verify_gate", True)
|
|
344
|
+
and allow is None # main task only — not scoped sub-agents
|
|
344
345
|
and session_has_edited
|
|
345
346
|
and not ran_verification
|
|
346
347
|
and verify_gate_nudges < 2
|
|
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
|
|
|
7
7
|
# PyPI distribution name is drydock-cli (the established install name, continued
|
|
8
8
|
# from the retired v2 fork); the import package + CLI command stay `drydock`.
|
|
9
9
|
name = "drydock-cli"
|
|
10
|
-
version = "3.0.
|
|
10
|
+
version = "3.0.125"
|
|
11
11
|
description = "Drydock — a local, provider-agnostic terminal coding agent for local LLMs"
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
requires-python = ">=3.11"
|
|
@@ -38,7 +38,7 @@ def test_changing_args_do_not_trip_valve(monkeypatch):
|
|
|
38
38
|
monkeypatch.setattr(agent_mod, "stream", lambda **kw: iter([seq.pop(0)]))
|
|
39
39
|
st = AgentState()
|
|
40
40
|
import tempfile
|
|
41
|
-
list(run("go", st, {"model": "m", "cwd": tempfile.mkdtemp()}, "sys"))
|
|
41
|
+
list(run("go", st, {"model": "m", "cwd": tempfile.mkdtemp(), "verify_gate": False}, "sys"))
|
|
42
42
|
assert any(m.get("role") == "assistant" and m.get("content") == "done"
|
|
43
43
|
for m in st.messages)
|
|
44
44
|
|
|
@@ -57,7 +57,7 @@ def test_identical_SUCCESS_streak_ends_turn(monkeypatch):
|
|
|
57
57
|
|
|
58
58
|
monkeypatch.setattr(agent_mod, "stream", counting)
|
|
59
59
|
st = AgentState()
|
|
60
|
-
list(run("go", st, {"model": "m", "cwd": tempfile.mkdtemp()}, "sys"))
|
|
60
|
+
list(run("go", st, {"model": "m", "cwd": tempfile.mkdtemp(), "verify_gate": False}, "sys"))
|
|
61
61
|
assert calls["n"] <= 12 # identical success → stopped at the cap, not 200
|
|
62
62
|
|
|
63
63
|
|
|
@@ -73,7 +73,7 @@ def test_polling_with_changing_result_not_tripped(monkeypatch):
|
|
|
73
73
|
seq.append(AssistantTurn("done", [], 1, 1))
|
|
74
74
|
monkeypatch.setattr(agent_mod, "stream", lambda **kw: iter([seq.pop(0)]))
|
|
75
75
|
st = AgentState()
|
|
76
|
-
list(run("go", st, {"model": "m", "cwd": tempfile.mkdtemp()}, "sys"))
|
|
76
|
+
list(run("go", st, {"model": "m", "cwd": tempfile.mkdtemp(), "verify_gate": False}, "sys"))
|
|
77
77
|
assert any(m.get("content") == "done" for m in st.messages)
|
|
78
78
|
|
|
79
79
|
|
|
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
|
|
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
|
|
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
|