drydock-cli 3.1.12__tar.gz → 3.1.13__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.1.12/drydock_cli.egg-info → drydock_cli-3.1.13}/PKG-INFO +3 -3
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/README.md +2 -2
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/config.py +8 -7
- {drydock_cli-3.1.12 → drydock_cli-3.1.13/drydock_cli.egg-info}/PKG-INFO +3 -3
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/pyproject.toml +1 -1
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_config.py +11 -8
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/LICENSE +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/NOTICE +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/__init__.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/__main__.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/advisor.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/agent.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/bash_safety.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/budget.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/__init__.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/document-canvas.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/fiar-assess.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/fiar-cap.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/fiar-evidence.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/fiar-readiness.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-data.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-debug.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-finetune.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-metrics.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-rl.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-train.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/nist-ai-rmf.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/nist-csf.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/rmf-categorize.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/rmf-control.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/rmf-poam.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/rmf-review.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/stig-assess.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/stig-remediate.md +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/cci.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/cli.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/compaction.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/detect.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/doccanvas.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/events.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/extract.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/fiar.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/gittools.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/graphrag.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/guards.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/loop_detect.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/mcp.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/phases.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/poam.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/progress.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/providers.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/ratchet.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/recipes.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/recovery.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/resume.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/rmf.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/rmf_graph.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/skills.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/stig.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/subagents.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/suggest.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/task_state.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_policy.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_registry.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_result.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_select.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_validate.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tools/__init__.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/trajectory.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/__init__.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/app.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/approval.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/messages.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/widgets.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tuning.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/verification.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/web.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/SOURCES.txt +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/dependency_links.txt +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/entry_points.txt +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/requires.txt +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/top_level.txt +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/setup.cfg +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_advisor.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_approval.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_back_command.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_background.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_binary_output.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_crossplatform.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_output_bounding.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_process_group.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_safety.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_sanitize.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_shell.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_stdin.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_stop_partial.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_timeout_network.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_timeout_param.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_budget.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_cci.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_cli_agents.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_compact_command.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_compaction.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_config_migration.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_context_limit_config.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_context_limit_issue25.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_criteria_coverage.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_cycling_detection.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_degenerate_argument.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_detect.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_dispatch.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_doccanvas.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_e2e_connected.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_edit_replace_all.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_effort_governor.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_empty_response.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_events.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_extract.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_failure_loop.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_fiar.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_first_run_setup.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_gittools.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_glob_edit_edges.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_graphify_example.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_graphrag.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_graphrag_quoted_path.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_graphrag_sqlite.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_grep_and_read_robust.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_guards_and_tools.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_hallucinated_tools.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_leaked_tool_call.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_loop_detect.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_mcp.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_model_registry.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_oneshot_unreachable.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_overthink_interrupt.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_phases.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_plan_autocontinue.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_poam.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_progress.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_providers_unreachable.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_ratchet.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_read_index.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_recipes.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_recovery.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_recovery_config.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_recovery_integration.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_repeated_outcome.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_repetition_interrupt.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_resume_events.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_resume_restore.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_resume_snapshot.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_rmf.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_rmf_graph.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_rmf_stig_graph.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_rolling_plan.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_runaway_repetition.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_screenshot.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_server_probe.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_skills.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_sqlite_events.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_stall_retry.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_stig.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_stop.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_streaming_newlines.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_subagent.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_subagents.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_suggest.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_system_prompt_help.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_task_state.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_timeline.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_todo.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_arg_coercion.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_arg_coercion_more.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_arg_parsing.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_canonical.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_policy.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_result.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_select.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_validate.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tools_undo.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_trajectory.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tui.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tuning.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_verification_gate.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_viewimage.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_vision_input.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_web_tools.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_windows_shell.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_worker_subagent.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_write_content_coerce.py +0 -0
- {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_xccdf.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drydock-cli
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.13
|
|
4
4
|
Summary: Drydock — a local, provider-agnostic terminal coding agent for local LLMs
|
|
5
5
|
Author: Frank Bobe III
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -458,8 +458,8 @@ It has no effect until you add text (the template is all comments, ignored).
|
|
|
458
458
|
Two scopes, most-specific wins:
|
|
459
459
|
|
|
460
460
|
- **Per-project** — `system_prompt.md` in the folder you launch drydock from.
|
|
461
|
-
Auto-created
|
|
462
|
-
|
|
461
|
+
Auto-created there on first launch (any folder except your home directory), so
|
|
462
|
+
different projects get different standing orders. Overrides the global one.
|
|
463
463
|
- **Global** — `~/.drydock/system_prompt.md`. Auto-created on first run; applies
|
|
464
464
|
to every project. A per-project file **overrides** it.
|
|
465
465
|
- **Or the config key** — `system_prompt = "..."` in `~/.drydock/config.toml`
|
|
@@ -434,8 +434,8 @@ It has no effect until you add text (the template is all comments, ignored).
|
|
|
434
434
|
Two scopes, most-specific wins:
|
|
435
435
|
|
|
436
436
|
- **Per-project** — `system_prompt.md` in the folder you launch drydock from.
|
|
437
|
-
Auto-created
|
|
438
|
-
|
|
437
|
+
Auto-created there on first launch (any folder except your home directory), so
|
|
438
|
+
different projects get different standing orders. Overrides the global one.
|
|
439
439
|
- **Global** — `~/.drydock/system_prompt.md`. Auto-created on first run; applies
|
|
440
440
|
to every project. A per-project file **overrides** it.
|
|
441
441
|
- **Or the config key** — `system_prompt = "..."` in `~/.drydock/config.toml`
|
|
@@ -189,15 +189,16 @@ def ensure_system_prompt_file(config_dir: Path | None = None) -> None:
|
|
|
189
189
|
|
|
190
190
|
|
|
191
191
|
def ensure_project_system_prompt(cwd: Path | None = None) -> None:
|
|
192
|
-
"""Create system_prompt.md in the folder drydock was started from if absent
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
Never raises."""
|
|
192
|
+
"""Create system_prompt.md in the folder drydock was started from if absent, so
|
|
193
|
+
it's right there in your project after the first launch — no git repo required.
|
|
194
|
+
The ONE exception is the home directory itself: we don't drop a stray
|
|
195
|
+
~/system_prompt.md there (the global prompt already lives in ~/.drydock/).
|
|
196
|
+
Never overwrites an existing file; never raises."""
|
|
197
197
|
cwd = cwd or Path.cwd()
|
|
198
198
|
try:
|
|
199
|
-
if (
|
|
200
|
-
|
|
199
|
+
if cwd.resolve() == Path.home().resolve():
|
|
200
|
+
return
|
|
201
|
+
_write_template(project_system_prompt_path(cwd))
|
|
201
202
|
except OSError:
|
|
202
203
|
pass
|
|
203
204
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drydock-cli
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.13
|
|
4
4
|
Summary: Drydock — a local, provider-agnostic terminal coding agent for local LLMs
|
|
5
5
|
Author: Frank Bobe III
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -458,8 +458,8 @@ It has no effect until you add text (the template is all comments, ignored).
|
|
|
458
458
|
Two scopes, most-specific wins:
|
|
459
459
|
|
|
460
460
|
- **Per-project** — `system_prompt.md` in the folder you launch drydock from.
|
|
461
|
-
Auto-created
|
|
462
|
-
|
|
461
|
+
Auto-created there on first launch (any folder except your home directory), so
|
|
462
|
+
different projects get different standing orders. Overrides the global one.
|
|
463
463
|
- **Global** — `~/.drydock/system_prompt.md`. Auto-created on first run; applies
|
|
464
464
|
to every project. A per-project file **overrides** it.
|
|
465
465
|
- **Or the config key** — `system_prompt = "..."` in `~/.drydock/config.toml`
|
|
@@ -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.1.
|
|
10
|
+
version = "3.1.13"
|
|
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"
|
|
@@ -183,15 +183,18 @@ def test_global_used_when_no_project_file(monkeypatch, tmp_path):
|
|
|
183
183
|
assert "GLOBAL RULES" in out
|
|
184
184
|
|
|
185
185
|
|
|
186
|
-
def
|
|
187
|
-
# git
|
|
188
|
-
|
|
189
|
-
cfg.ensure_project_system_prompt(repo)
|
|
190
|
-
assert (repo / "system_prompt.md").exists()
|
|
191
|
-
# non-git dir → nothing created (no litter)
|
|
192
|
-
plain = tmp_path / "plain"; plain.mkdir()
|
|
186
|
+
def test_ensure_project_prompt_creates_in_any_dir(tmp_path):
|
|
187
|
+
# any launch folder (git or not) gets the template at its root
|
|
188
|
+
plain = tmp_path / "proj"; plain.mkdir()
|
|
193
189
|
cfg.ensure_project_system_prompt(plain)
|
|
194
|
-
assert
|
|
190
|
+
assert (plain / "system_prompt.md").exists()
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def test_ensure_project_prompt_skips_home(monkeypatch, tmp_path):
|
|
194
|
+
# never drop a stray ~/system_prompt.md in the home root
|
|
195
|
+
monkeypatch.setattr(cfg.Path, "home", staticmethod(lambda: tmp_path))
|
|
196
|
+
cfg.ensure_project_system_prompt(tmp_path)
|
|
197
|
+
assert not (tmp_path / "system_prompt.md").exists()
|
|
195
198
|
|
|
196
199
|
|
|
197
200
|
def test_ensure_project_prompt_never_overwrites(tmp_path):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|