claude-dev-env 8.46.7 → 8.46.9

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.
@@ -6,8 +6,8 @@ pin holds at every level.
6
6
 
7
7
  ::
8
8
 
9
- model omitted -> allow with updatedInput model "opus"
10
- model sonnet or haiku -> allow with updatedInput model "opus"
9
+ model omitted -> updatedInput model "opus"
10
+ model sonnet or haiku -> updatedInput model "opus"
11
11
  model opus or fable -> no output; the call runs unchanged
12
12
 
13
13
  A model id counts by its family: ``claude-sonnet-5-5`` is sonnet. A fork
@@ -24,14 +24,10 @@ hooks_root_directory = str(Path(__file__).resolve().parent.parent)
24
24
  if hooks_root_directory not in sys.path:
25
25
  sys.path.insert(0, hooks_root_directory)
26
26
 
27
- from hooks_constants.bash_pre_tool_use_dispatcher_constants import (
28
- ALLOW_DECISION,
29
- HOOK_EVENT_NAME,
30
- )
27
+ from hooks_constants.bash_pre_tool_use_dispatcher_constants import HOOK_EVENT_NAME
31
28
  from hooks_constants.pre_tool_use_allow_output import (
32
29
  HOOK_EVENT_NAME_KEY,
33
30
  HOOK_SPECIFIC_OUTPUT_KEY,
34
- PERMISSION_DECISION_KEY,
35
31
  UPDATED_INPUT_KEY,
36
32
  )
37
33
  from hooks_constants.pre_tool_use_stdin import read_hook_input_dictionary_from_stdin
@@ -84,7 +80,6 @@ def decide_hook_output(tool_input: object) -> dict[str, object] | None:
84
80
  return {
85
81
  HOOK_SPECIFIC_OUTPUT_KEY: {
86
82
  HOOK_EVENT_NAME_KEY: HOOK_EVENT_NAME,
87
- PERMISSION_DECISION_KEY: ALLOW_DECISION,
88
83
  UPDATED_INPUT_KEY: {**tool_input, MODEL_INPUT_KEY: SUBAGENT_MODEL_ALIAS},
89
84
  ADDITIONAL_CONTEXT_KEY: f"{CONTEXT_PREFIX}{previous_model_text}{CONTEXT_SUFFIX}",
90
85
  }
@@ -31,7 +31,7 @@ def test_should_move_the_spawn_to_opus(requested_model: object) -> None:
31
31
  if requested_model is not None:
32
32
  tool_input["model"] = requested_model
33
33
  decision = json.loads(_run_hook(tool_input))["hookSpecificOutput"]
34
- assert decision["permissionDecision"] == "allow"
34
+ assert "permissionDecision" not in decision
35
35
  assert decision["updatedInput"] == {**SPAWN_INPUT, "model": "opus"}
36
36
 
37
37
 
@@ -51,7 +51,7 @@ def _hook_specific_output(stdout: str) -> dict[str, object]:
51
51
  def _assert_reshaped(stdout: str) -> None:
52
52
  decision = _hook_specific_output(stdout)
53
53
  assert decision["hookEventName"] == "PreToolUse"
54
- assert decision["permissionDecision"] == "allow"
54
+ assert "permissionDecision" not in decision
55
55
  assert decision["updatedInput"] == {
56
56
  **SPAWN_INPUT,
57
57
  "model": "opus",
@@ -7,7 +7,7 @@ beside it, or the script ``COORDINATOR_USAGE_PACE_SCRIPT`` names.
7
7
  ::
8
8
 
9
9
  usage under pace (exit 1) -> no output; the call runs unchanged
10
- over pace (exit 0) or unreadable -> allow with updatedInput:
10
+ over pace (exit 0) or unreadable -> updatedInput:
11
11
  model "opus", effort "low"
12
12
  input that cannot be reshaped -> deny with a one-line reason
13
13
 
@@ -27,10 +27,7 @@ hooks_root_directory = str(Path(__file__).resolve().parent.parent)
27
27
  if hooks_root_directory not in sys.path:
28
28
  sys.path.insert(0, hooks_root_directory)
29
29
 
30
- from hooks_constants.bash_pre_tool_use_dispatcher_constants import (
31
- ALLOW_DECISION,
32
- HOOK_EVENT_NAME,
33
- )
30
+ from hooks_constants.bash_pre_tool_use_dispatcher_constants import HOOK_EVENT_NAME
34
31
  from hooks_constants.pre_tool_use_allow_output import (
35
32
  HOOK_EVENT_NAME_KEY,
36
33
  HOOK_SPECIFIC_OUTPUT_KEY,
@@ -130,7 +127,6 @@ def decide_hook_output(
130
127
  verdict_excerpt = pace_verdict_text.strip()[:PACE_VERDICT_CONTEXT_MAXIMUM_CHARACTERS]
131
128
  return _hook_output(
132
129
  {
133
- PERMISSION_DECISION_KEY: ALLOW_DECISION,
134
130
  UPDATED_INPUT_KEY: reshaped_input,
135
131
  ADDITIONAL_CONTEXT_KEY: RESHAPE_CONTEXT_PREFIX + verdict_excerpt,
136
132
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-dev-env",
3
- "version": "8.46.7",
3
+ "version": "8.46.9",
4
4
  "description": "Claude Code development standards — rules, hooks, agents, commands, and skills",
5
5
  "type": "module",
6
6
  "bin": {
@@ -28,16 +28,23 @@ sys.path.insert(0, str(scripts_directory))
28
28
 
29
29
  from pr_verification.lock import SupervisorLock, SupervisorLockError
30
30
 
31
+
32
+ def report_outcome(outcome):
33
+ pending_result_path = result_path.with_name(result_path.name + ".pending")
34
+ pending_result_path.write_text(outcome, encoding="utf-8")
35
+ pending_result_path.replace(result_path)
36
+
37
+
31
38
  while not start_path.exists():
32
39
  time.sleep(0.01)
33
40
 
34
41
  try:
35
42
  with SupervisorLock(cache_root):
36
- result_path.write_text("acquired", encoding="utf-8")
43
+ report_outcome("acquired")
37
44
  while True:
38
45
  time.sleep(1)
39
46
  except SupervisorLockError:
40
- result_path.write_text("contended", encoding="utf-8")
47
+ report_outcome("contended")
41
48
  """
42
49
  RESULT_WAIT_SECONDS = 5
43
50
  PROCESS_WAIT_SECONDS = 10