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.
Files changed (192) hide show
  1. {drydock_cli-3.1.12/drydock_cli.egg-info → drydock_cli-3.1.13}/PKG-INFO +3 -3
  2. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/README.md +2 -2
  3. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/config.py +8 -7
  4. {drydock_cli-3.1.12 → drydock_cli-3.1.13/drydock_cli.egg-info}/PKG-INFO +3 -3
  5. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/pyproject.toml +1 -1
  6. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_config.py +11 -8
  7. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/LICENSE +0 -0
  8. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/NOTICE +0 -0
  9. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/__init__.py +0 -0
  10. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/__main__.py +0 -0
  11. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/advisor.py +0 -0
  12. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/agent.py +0 -0
  13. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/bash_safety.py +0 -0
  14. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/budget.py +0 -0
  15. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/__init__.py +0 -0
  16. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/document-canvas.md +0 -0
  17. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/fiar-assess.md +0 -0
  18. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/fiar-cap.md +0 -0
  19. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/fiar-evidence.md +0 -0
  20. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/fiar-readiness.md +0 -0
  21. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-data.md +0 -0
  22. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-debug.md +0 -0
  23. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-finetune.md +0 -0
  24. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-metrics.md +0 -0
  25. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-rl.md +0 -0
  26. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/ml-train.md +0 -0
  27. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/nist-ai-rmf.md +0 -0
  28. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/nist-csf.md +0 -0
  29. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/rmf-categorize.md +0 -0
  30. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/rmf-control.md +0 -0
  31. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/rmf-poam.md +0 -0
  32. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/rmf-review.md +0 -0
  33. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/stig-assess.md +0 -0
  34. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/builtin_skills/stig-remediate.md +0 -0
  35. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/cci.py +0 -0
  36. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/cli.py +0 -0
  37. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/compaction.py +0 -0
  38. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/detect.py +0 -0
  39. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/doccanvas.py +0 -0
  40. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/events.py +0 -0
  41. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/extract.py +0 -0
  42. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/fiar.py +0 -0
  43. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/gittools.py +0 -0
  44. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/graphrag.py +0 -0
  45. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/guards.py +0 -0
  46. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/loop_detect.py +0 -0
  47. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/mcp.py +0 -0
  48. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/phases.py +0 -0
  49. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/poam.py +0 -0
  50. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/progress.py +0 -0
  51. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/providers.py +0 -0
  52. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/ratchet.py +0 -0
  53. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/recipes.py +0 -0
  54. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/recovery.py +0 -0
  55. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/resume.py +0 -0
  56. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/rmf.py +0 -0
  57. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/rmf_graph.py +0 -0
  58. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/skills.py +0 -0
  59. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/stig.py +0 -0
  60. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/subagents.py +0 -0
  61. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/suggest.py +0 -0
  62. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/task_state.py +0 -0
  63. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_policy.py +0 -0
  64. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_registry.py +0 -0
  65. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_result.py +0 -0
  66. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_select.py +0 -0
  67. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tool_validate.py +0 -0
  68. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tools/__init__.py +0 -0
  69. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/trajectory.py +0 -0
  70. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/__init__.py +0 -0
  71. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/app.py +0 -0
  72. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/approval.py +0 -0
  73. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/messages.py +0 -0
  74. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tui/widgets.py +0 -0
  75. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/tuning.py +0 -0
  76. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/verification.py +0 -0
  77. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock/web.py +0 -0
  78. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/SOURCES.txt +0 -0
  79. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/dependency_links.txt +0 -0
  80. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/entry_points.txt +0 -0
  81. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/requires.txt +0 -0
  82. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/drydock_cli.egg-info/top_level.txt +0 -0
  83. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/setup.cfg +0 -0
  84. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_advisor.py +0 -0
  85. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_approval.py +0 -0
  86. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_back_command.py +0 -0
  87. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_background.py +0 -0
  88. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_binary_output.py +0 -0
  89. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_crossplatform.py +0 -0
  90. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_output_bounding.py +0 -0
  91. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_process_group.py +0 -0
  92. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_safety.py +0 -0
  93. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_sanitize.py +0 -0
  94. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_shell.py +0 -0
  95. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_stdin.py +0 -0
  96. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_stop_partial.py +0 -0
  97. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_timeout_network.py +0 -0
  98. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_bash_timeout_param.py +0 -0
  99. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_budget.py +0 -0
  100. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_cci.py +0 -0
  101. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_cli_agents.py +0 -0
  102. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_compact_command.py +0 -0
  103. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_compaction.py +0 -0
  104. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_config_migration.py +0 -0
  105. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_context_limit_config.py +0 -0
  106. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_context_limit_issue25.py +0 -0
  107. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_criteria_coverage.py +0 -0
  108. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_cycling_detection.py +0 -0
  109. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_degenerate_argument.py +0 -0
  110. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_detect.py +0 -0
  111. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_dispatch.py +0 -0
  112. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_doccanvas.py +0 -0
  113. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_e2e_connected.py +0 -0
  114. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_edit_replace_all.py +0 -0
  115. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_effort_governor.py +0 -0
  116. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_empty_response.py +0 -0
  117. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_events.py +0 -0
  118. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_extract.py +0 -0
  119. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_failure_loop.py +0 -0
  120. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_fiar.py +0 -0
  121. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_first_run_setup.py +0 -0
  122. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_gittools.py +0 -0
  123. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_glob_edit_edges.py +0 -0
  124. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_graphify_example.py +0 -0
  125. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_graphrag.py +0 -0
  126. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_graphrag_quoted_path.py +0 -0
  127. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_graphrag_sqlite.py +0 -0
  128. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_grep_and_read_robust.py +0 -0
  129. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_guards_and_tools.py +0 -0
  130. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_hallucinated_tools.py +0 -0
  131. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_leaked_tool_call.py +0 -0
  132. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_loop_detect.py +0 -0
  133. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_mcp.py +0 -0
  134. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_model_registry.py +0 -0
  135. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_oneshot_unreachable.py +0 -0
  136. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_overthink_interrupt.py +0 -0
  137. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_phases.py +0 -0
  138. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_plan_autocontinue.py +0 -0
  139. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_poam.py +0 -0
  140. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_progress.py +0 -0
  141. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_providers_unreachable.py +0 -0
  142. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_ratchet.py +0 -0
  143. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_read_index.py +0 -0
  144. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_recipes.py +0 -0
  145. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_recovery.py +0 -0
  146. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_recovery_config.py +0 -0
  147. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_recovery_integration.py +0 -0
  148. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_repeated_outcome.py +0 -0
  149. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_repetition_interrupt.py +0 -0
  150. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_resume_events.py +0 -0
  151. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_resume_restore.py +0 -0
  152. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_resume_snapshot.py +0 -0
  153. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_rmf.py +0 -0
  154. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_rmf_graph.py +0 -0
  155. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_rmf_stig_graph.py +0 -0
  156. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_rolling_plan.py +0 -0
  157. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_runaway_repetition.py +0 -0
  158. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_screenshot.py +0 -0
  159. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_server_probe.py +0 -0
  160. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_skills.py +0 -0
  161. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_sqlite_events.py +0 -0
  162. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_stall_retry.py +0 -0
  163. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_stig.py +0 -0
  164. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_stop.py +0 -0
  165. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_streaming_newlines.py +0 -0
  166. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_subagent.py +0 -0
  167. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_subagents.py +0 -0
  168. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_suggest.py +0 -0
  169. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_system_prompt_help.py +0 -0
  170. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_task_state.py +0 -0
  171. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_timeline.py +0 -0
  172. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_todo.py +0 -0
  173. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_arg_coercion.py +0 -0
  174. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_arg_coercion_more.py +0 -0
  175. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_arg_parsing.py +0 -0
  176. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_canonical.py +0 -0
  177. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_policy.py +0 -0
  178. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_result.py +0 -0
  179. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_select.py +0 -0
  180. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tool_validate.py +0 -0
  181. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tools_undo.py +0 -0
  182. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_trajectory.py +0 -0
  183. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tui.py +0 -0
  184. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_tuning.py +0 -0
  185. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_verification_gate.py +0 -0
  186. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_viewimage.py +0 -0
  187. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_vision_input.py +0 -0
  188. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_web_tools.py +0 -0
  189. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_windows_shell.py +0 -0
  190. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_worker_subagent.py +0 -0
  191. {drydock_cli-3.1.12 → drydock_cli-3.1.13}/tests/test_write_content_coerce.py +0 -0
  192. {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.12
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 inside any **git repo** (so different projects get different
462
- standing orders, and drydock never drops the file into non-project dirs).
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 inside any **git repo** (so different projects get different
438
- standing orders, and drydock never drops the file into non-project dirs).
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
- but ONLY inside a git repo, so drydock never drops a system_prompt.md into
194
- arbitrary directories (e.g. $HOME, /tmp). A real project you `git init`'d gets
195
- a discoverable per-project prompt at its root; a throwaway cwd gets nothing.
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 (cwd / ".git").exists(): # file OR dir — covers worktrees too
200
- _write_template(project_system_prompt_path(cwd))
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.12
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 inside any **git repo** (so different projects get different
462
- standing orders, and drydock never drops the file into non-project dirs).
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.12"
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 test_ensure_project_prompt_only_in_git_repo(tmp_path):
187
- # git repo → template created at the project root
188
- repo = tmp_path / "repo"; (repo / ".git").mkdir(parents=True)
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 not (plain / "system_prompt.md").exists()
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