@ai-dev-methodologies/rlp-desk 0.7.3 → 0.7.5

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-dev-methodologies/rlp-desk",
3
- "version": "0.7.3",
3
+ "version": "0.7.5",
4
4
  "description": "Fresh-context iterative loops for Claude Code — autonomous task completion with independent verification",
5
5
  "scripts": {
6
6
  "postinstall": "node scripts/postinstall.js",
@@ -30,9 +30,9 @@ log_error() {
30
30
  }
31
31
 
32
32
  # build_claude_cmd() — centralized claude CLI command builder
33
- # Single source of truth for all claude invocation flags (--no-mcp, DISABLE_OMC, etc.)
33
+ # Single source of truth for all claude invocation flags (--mcp-config, DISABLE_OMC, --effort, etc.)
34
34
  # Inspired by codex-plugin-cc companion pattern: CLI abstraction in one place.
35
- # Args: $1=mode (tui|print) $2=model $3=prompt_file (print mode only) $4=output_log (print mode only)
35
+ # Args: $1=mode (tui|print) $2=model $3=prompt_file (print mode only) $4=output_log (print mode only) $5=effort (optional: low|medium|high|max)
36
36
  # Output: complete command string on stdout
37
37
  # Globals read: CLAUDE_BIN
38
38
  build_claude_cmd() {
@@ -40,8 +40,12 @@ build_claude_cmd() {
40
40
  local model="$2"
41
41
  local prompt_file="${3:-}"
42
42
  local output_log="${4:-}"
43
+ local effort="${5:-}"
43
44
 
44
- local base="DISABLE_OMC=1 $CLAUDE_BIN --model $model --mcp-config '{}' --dangerously-skip-permissions"
45
+ local base="DISABLE_OMC=1 $CLAUDE_BIN --model $model --mcp-config '{\"mcpServers\":{}}' --strict-mcp-config --dangerously-skip-permissions"
46
+ if [[ -n "$effort" ]]; then
47
+ base="$base --effort $effort"
48
+ fi
45
49
  case "$mode" in
46
50
  tui)
47
51
  echo "$base"
@@ -57,10 +61,12 @@ build_claude_cmd() {
57
61
  }
58
62
 
59
63
  # parse_model_flag() — parse unified --worker-model / --verifier-model value
60
- # Colon format (model:reasoning) codex engine; plain name → claude engine.
61
- # Spark alias: bare "spark" is expanded to full model ID "gpt-5.3-codex-spark".
64
+ # Colon format: claude models (haiku/sonnet/opus) with effort → claude engine + effort
65
+ # codex models (gpt-*/spark) with reasoning codex engine + reasoning
66
+ # plain name → claude engine (no effort override)
62
67
  # Usage: parse_model_flag <value> <role>
63
- # Output (stdout): "engine model [reasoning]" e.g. "codex gpt-5.4 medium" | "claude sonnet"
68
+ # Output (stdout): "engine model [reasoning_or_effort]"
69
+ # e.g. "codex gpt-5.4 medium" | "claude opus max" | "claude sonnet"
64
70
  # Returns: 0 on success, 1 on invalid format (error written to stderr)
65
71
  parse_model_flag() {
66
72
  local value="$1"
@@ -68,16 +74,24 @@ parse_model_flag() {
68
74
  local colon_count
69
75
  colon_count=$(printf '%s' "$value" | tr -cd ':' | wc -c | tr -d ' ')
70
76
  if (( colon_count > 1 )); then
71
- echo "ERROR: Invalid --${role}-model format '${value}'. Use 'model:reasoning' (codex) or 'model-name' (claude)." >&2
77
+ echo "ERROR: Invalid --${role}-model format '${value}'. Use 'model:effort' (claude) or 'model:reasoning' (codex)." >&2
72
78
  return 1
73
79
  fi
74
80
  if (( colon_count == 1 )); then
75
81
  local model="${value%%:*}"
76
- local reasoning="${value##*:}"
77
- if [[ "$model" == "spark" ]]; then
78
- model="gpt-5.3-codex-spark"
79
- fi
80
- echo "codex $model $reasoning"
82
+ local level="${value##*:}"
83
+ # Detect engine by model name
84
+ case "$model" in
85
+ haiku|sonnet|opus)
86
+ echo "claude $model $level"
87
+ ;;
88
+ spark)
89
+ echo "codex gpt-5.3-codex-spark $level"
90
+ ;;
91
+ *)
92
+ echo "codex $model $level"
93
+ ;;
94
+ esac
81
95
  else
82
96
  echo "claude $value"
83
97
  fi
@@ -57,20 +57,34 @@ MAX_RESTARTS="${MAX_RESTARTS:-3}"
57
57
  IDLE_NUDGE_THRESHOLD="${IDLE_NUDGE_THRESHOLD:-30}"
58
58
  MAX_NUDGES="${MAX_NUDGES:-3}"
59
59
  WITH_SELF_VERIFICATION="${WITH_SELF_VERIFICATION:-0}"
60
+ AUTONOMOUS_MODE="${AUTONOMOUS_MODE:-0}" # 1=don't stop on ambiguity, PRD is authoritative
60
61
 
61
- # --- Engine Selection (auto-detect from model format: name=claude, name:reasoning=codex) ---
62
- # If model contains ":", it's codex format — auto-set engine and split model/reasoning
62
+ # --- Engine Selection (auto-detect from model format) ---
63
+ # claude models (haiku/sonnet/opus) with :effort claude engine + effort
64
+ # codex models (gpt-*/spark) with :reasoning → codex engine + reasoning
65
+ # plain name → claude engine (no effort/reasoning)
63
66
  _auto_detect_engine() {
64
- local model_var="$1" engine_var="$2" codex_model_var="$3" codex_reasoning_var="$4"
67
+ local model_var="$1" engine_var="$2" codex_model_var="$3" codex_reasoning_var="$4" effort_var="${5:-}"
65
68
  local model_val="${(P)model_var}"
66
69
  if [[ "$model_val" == *:* ]]; then
67
70
  local model_part="${model_val%%:*}"
68
- local reasoning_part="${model_val##*:}"
69
- [[ "$model_part" == "spark" ]] && model_part="gpt-5.3-codex-spark"
70
- eval "$engine_var=codex"
71
- eval "$model_var=$model_part"
72
- [[ -n "$codex_model_var" ]] && eval "$codex_model_var=$model_part"
73
- [[ -n "$codex_reasoning_var" ]] && eval "$codex_reasoning_var=$reasoning_part"
71
+ local level_part="${model_val##*:}"
72
+ case "$model_part" in
73
+ haiku|sonnet|opus)
74
+ # Claude model with effort — keep engine as claude, store effort
75
+ eval "$engine_var=claude"
76
+ eval "$model_var=$model_part"
77
+ [[ -n "$effort_var" ]] && eval "$effort_var=$level_part"
78
+ ;;
79
+ *)
80
+ # Codex model with reasoning
81
+ [[ "$model_part" == "spark" ]] && model_part="gpt-5.3-codex-spark"
82
+ eval "$engine_var=codex"
83
+ eval "$model_var=$model_part"
84
+ [[ -n "$codex_model_var" ]] && eval "$codex_model_var=$model_part"
85
+ [[ -n "$codex_reasoning_var" ]] && eval "$codex_reasoning_var=$level_part"
86
+ ;;
87
+ esac
74
88
  fi
75
89
  }
76
90
 
@@ -78,10 +92,15 @@ WORKER_ENGINE="${WORKER_ENGINE:-claude}"
78
92
  VERIFIER_ENGINE="${VERIFIER_ENGINE:-claude}"
79
93
  FINAL_VERIFIER_ENGINE="${FINAL_VERIFIER_ENGINE:-claude}"
80
94
 
95
+ # Effort levels for Claude models (set by _auto_detect_engine or CLI --worker-model opus:max)
96
+ WORKER_EFFORT="${WORKER_EFFORT:-}"
97
+ VERIFIER_EFFORT="${VERIFIER_EFFORT:-}"
98
+ FINAL_VERIFIER_EFFORT="${FINAL_VERIFIER_EFFORT:-}"
99
+
81
100
  # Auto-detect engine from model format for env var path (CLI path uses parse_model_flag)
82
- _auto_detect_engine WORKER_MODEL WORKER_ENGINE WORKER_CODEX_MODEL WORKER_CODEX_REASONING
83
- _auto_detect_engine VERIFIER_MODEL VERIFIER_ENGINE VERIFIER_CODEX_MODEL VERIFIER_CODEX_REASONING
84
- _auto_detect_engine FINAL_VERIFIER_MODEL FINAL_VERIFIER_ENGINE "" ""
101
+ _auto_detect_engine WORKER_MODEL WORKER_ENGINE WORKER_CODEX_MODEL WORKER_CODEX_REASONING WORKER_EFFORT
102
+ _auto_detect_engine VERIFIER_MODEL VERIFIER_ENGINE VERIFIER_CODEX_MODEL VERIFIER_CODEX_REASONING VERIFIER_EFFORT
103
+ _auto_detect_engine FINAL_VERIFIER_MODEL FINAL_VERIFIER_ENGINE "" "" FINAL_VERIFIER_EFFORT
85
104
  WORKER_CODEX_MODEL="${WORKER_CODEX_MODEL:-gpt-5.4}"
86
105
  WORKER_CODEX_REASONING="${WORKER_CODEX_REASONING:-high}" # low|medium|high
87
106
  VERIFIER_CODEX_MODEL="${VERIFIER_CODEX_MODEL:-gpt-5.4}"
@@ -697,7 +716,8 @@ create_session() {
697
716
  "max_nudges": '"$MAX_NUDGES"',
698
717
  "cb_threshold": '"$CB_THRESHOLD"',
699
718
  "effective_cb_threshold": '"$EFFECTIVE_CB_THRESHOLD"',
700
- "with_self_verification": '"$WITH_SELF_VERIFICATION"'
719
+ "with_self_verification": '"$WITH_SELF_VERIFICATION"',
720
+ "autonomous_mode": '"$AUTONOMOUS_MODE"'
701
721
  }
702
722
  }' | atomic_write "$SESSION_CONFIG"
703
723
 
@@ -1021,9 +1041,9 @@ restart_worker() {
1021
1041
 
1022
1042
  # Re-launch worker (tmux interactive pattern)
1023
1043
  if [[ "$WORKER_ENGINE" = "codex" ]]; then
1024
- safe_send_keys "$pane_id" "${CODEX_BIN:-codex} -m $WORKER_CODEX_MODEL -c model_reasoning_effort=\"$WORKER_CODEX_REASONING\" --dangerously-bypass-approvals-and-sandbox"
1044
+ safe_send_keys "$pane_id" "${CODEX_BIN:-codex} -m $WORKER_CODEX_MODEL -c model_reasoning_effort=\"$WORKER_CODEX_REASONING\" --disable plugins --dangerously-bypass-approvals-and-sandbox"
1025
1045
  else
1026
- safe_send_keys "$pane_id" "$(build_claude_cmd tui "$WORKER_MODEL")"
1046
+ safe_send_keys "$pane_id" "$(build_claude_cmd tui "$WORKER_MODEL" "" "" "$WORKER_EFFORT")"
1027
1047
  fi
1028
1048
  WORKER_RESTARTS[$iter]=$((restart_count + 1))
1029
1049
  return 0
@@ -1153,6 +1173,19 @@ write_worker_trigger() {
1153
1173
  echo "- Do NOT signal verify after individual stories"
1154
1174
  fi
1155
1175
  fi
1176
+
1177
+ # Autonomous mode: don't stop on ambiguity, PRD is authoritative
1178
+ if (( AUTONOMOUS_MODE )); then
1179
+ echo ""
1180
+ echo "---"
1181
+ echo "## AUTONOMOUS MODE"
1182
+ echo "Do NOT stop or ask questions when encountering ambiguity or document conflicts."
1183
+ echo "**Resolution priority**: PRD > test-spec > context > memory"
1184
+ echo "If documents disagree, follow PRD and proceed. Log any conflict you find by"
1185
+ echo "appending to \`$LOGS_DIR/conflict-log.jsonl\` in format:"
1186
+ echo ' {"iteration":N,"us_id":"US-NNN","source_a":"prd","source_b":"test-spec","conflict":"description","resolution":"followed PRD"}'
1187
+ echo "Do NOT wait for human input. Keep working."
1188
+ fi
1156
1189
  } | atomic_write "$prompt_file"
1157
1190
 
1158
1191
  # Write trigger script (DO NOT use exec -- breaks heartbeat cleanup)
@@ -1161,12 +1194,12 @@ write_worker_trigger() {
1161
1194
  local engine_cmd="${CODEX_BIN:-codex} \\
1162
1195
  -m $WORKER_CODEX_MODEL \\
1163
1196
  -c model_reasoning_effort=\"$WORKER_CODEX_REASONING\" \\
1164
- --dangerously-bypass-approvals-and-sandbox \\
1197
+ --disable plugins --dangerously-bypass-approvals-and-sandbox \\
1165
1198
  \"\$(cat $prompt_file)\""
1166
1199
  local engine_comment="# Run codex with fresh context (fallback trigger — TUI primary launch via launch_worker_codex)"
1167
1200
  else
1168
1201
  local engine_cmd
1169
- engine_cmd=$(build_claude_cmd print "$WORKER_MODEL" "$prompt_file" "$output_log")
1202
+ engine_cmd=$(build_claude_cmd print "$WORKER_MODEL" "$prompt_file" "$output_log" "$WORKER_EFFORT")
1170
1203
  local engine_comment="# Run claude with fresh context, no MCP/skills (governance.md s7 step 5)"
1171
1204
  fi
1172
1205
 
@@ -1239,6 +1272,19 @@ write_verifier_trigger() {
1239
1272
  echo "- **Note**: Skip re-verifying the above US. Focus on unverified stories."
1240
1273
  fi
1241
1274
  fi
1275
+
1276
+ # Autonomous mode: don't stop on ambiguity, PRD is authoritative
1277
+ if (( AUTONOMOUS_MODE )); then
1278
+ echo ""
1279
+ echo "---"
1280
+ echo "## AUTONOMOUS MODE"
1281
+ echo "Do NOT stop or ask questions when encountering ambiguity or document conflicts."
1282
+ echo "**Resolution priority**: PRD > test-spec > context > memory"
1283
+ echo "If documents disagree, follow PRD and proceed. Log any conflict by"
1284
+ echo "appending to \`$LOGS_DIR/conflict-log.jsonl\` in format:"
1285
+ echo ' {"iteration":N,"us_id":"US-NNN","source_a":"prd","source_b":"test-spec","conflict":"description","resolution":"followed PRD"}'
1286
+ echo "Do NOT wait for human input. Keep verifying."
1287
+ fi
1242
1288
  } | atomic_write "$prompt_file"
1243
1289
 
1244
1290
  # Write trigger script (DO NOT use exec -- breaks heartbeat cleanup)
@@ -1246,13 +1292,13 @@ write_verifier_trigger() {
1246
1292
  if [[ "$verifier_engine" = "codex" ]]; then
1247
1293
  local engine_cmd="${CODEX_BIN:-codex} -m $VERIFIER_CODEX_MODEL \\
1248
1294
  -c model_reasoning_effort=\"$VERIFIER_CODEX_REASONING\" \\
1249
- --dangerously-bypass-approvals-and-sandbox \\
1295
+ --disable plugins --dangerously-bypass-approvals-and-sandbox \\
1250
1296
  \"\$(cat $prompt_file)\" \\
1251
- 2>&1 | tee $output_log"
1252
- local engine_comment="# Run codex with fresh context (governance.md s7 step 7)"
1297
+ > >(tee $output_log) 2>&1"
1298
+ local engine_comment="# Run codex with fresh context (governance.md s7 step 7) — process substitution preserves tty"
1253
1299
  else
1254
1300
  local engine_cmd
1255
- engine_cmd=$(build_claude_cmd print "$verifier_model" "$prompt_file" "$output_log")
1301
+ engine_cmd=$(build_claude_cmd print "$verifier_model" "$prompt_file" "$output_log" "$VERIFIER_EFFORT")
1256
1302
  local engine_comment="# Run claude with fresh context, no MCP/skills (governance.md s7 step 7)"
1257
1303
  fi
1258
1304
 
@@ -1652,11 +1698,11 @@ run_single_verifier() {
1652
1698
  # Launch verifier — dispatch to engine-specific function
1653
1699
  local verifier_launch
1654
1700
  if [[ "$engine" = "codex" ]]; then
1655
- verifier_launch="${CODEX_BIN:-codex} -m $VERIFIER_CODEX_MODEL -c model_reasoning_effort=\"$VERIFIER_CODEX_REASONING\" --dangerously-bypass-approvals-and-sandbox"
1701
+ verifier_launch="${CODEX_BIN:-codex} -m $VERIFIER_CODEX_MODEL -c model_reasoning_effort=\"$VERIFIER_CODEX_REASONING\" --disable plugins --dangerously-bypass-approvals-and-sandbox"
1656
1702
  launch_verifier_codex "$VERIFIER_PANE" "$prompt_file" "$iter" "$verifier_launch"
1657
1703
  log_debug "Verifier$suffix codex TUI dispatched"
1658
1704
  else
1659
- verifier_launch="$(build_claude_cmd tui "$model")"
1705
+ verifier_launch="$(build_claude_cmd tui "$model" "" "" "$VERIFIER_EFFORT")"
1660
1706
  if ! launch_verifier_claude "$VERIFIER_PANE" "$prompt_file" "$iter" "$verifier_launch"; then
1661
1707
  log_error "Verifier$suffix failed to start"
1662
1708
  return 1
@@ -1666,20 +1712,37 @@ run_single_verifier() {
1666
1712
 
1667
1713
  # Poll for verdict
1668
1714
  if [[ "$engine" = "codex" ]]; then
1669
- # Codex exec: simple file poll (non-interactive, no heartbeat/nudge needed)
1715
+ # Codex exec: file poll + wait for process exit to avoid reading partial results
1670
1716
  log " Polling for verify-verdict.json ($suffix, codex TUI)..."
1671
1717
  local codex_poll_start
1672
1718
  codex_poll_start=$(date +%s)
1719
+ local _verdict_detected=0
1673
1720
  while true; do
1674
- if [[ -f "$VERDICT_FILE" ]]; then
1675
- # Validate JSON
1721
+ # Phase 1: wait for verdict file
1722
+ if (( ! _verdict_detected )) && [[ -f "$VERDICT_FILE" ]]; then
1676
1723
  if jq . "$VERDICT_FILE" >/dev/null 2>&1; then
1677
- log " Verdict file detected: $VERDICT_FILE"
1678
- break
1724
+ log " Verdict file detected, waiting for codex process to finish..."
1725
+ _verdict_detected=1
1726
+ fi
1727
+ fi
1728
+ # Phase 2: verdict exists, wait for codex to exit (pane returns to shell)
1729
+ if (( _verdict_detected )); then
1730
+ local _pane_cmd
1731
+ _pane_cmd=$(tmux display-message -p -t "$VERIFIER_PANE" '#{pane_current_command}' 2>/dev/null || echo "")
1732
+ if [[ "$_pane_cmd" = "zsh" || "$_pane_cmd" = "bash" || -z "$_pane_cmd" ]]; then
1733
+ log " Codex verifier$suffix process exited. Proceeding."
1734
+ # Re-read verdict in case codex updated it before exiting
1735
+ if jq . "$VERDICT_FILE" >/dev/null 2>&1; then
1736
+ break
1737
+ fi
1679
1738
  fi
1680
1739
  fi
1681
1740
  local codex_elapsed=$(( $(date +%s) - codex_poll_start ))
1682
1741
  if (( codex_elapsed >= ITER_TIMEOUT )); then
1742
+ if (( _verdict_detected )); then
1743
+ log " Codex verifier$suffix timed out waiting for exit, but verdict exists. Proceeding."
1744
+ break
1745
+ fi
1683
1746
  log_error "Codex verifier$suffix timed out after ${ITER_TIMEOUT}s"
1684
1747
  return 1
1685
1748
  fi
@@ -1738,10 +1801,10 @@ run_sequential_final_verify() {
1738
1801
  # Launch verifier
1739
1802
  local verifier_launch
1740
1803
  if [[ "$VERIFIER_ENGINE" = "codex" ]]; then
1741
- verifier_launch="${CODEX_BIN:-codex} -m $VERIFIER_CODEX_MODEL -c model_reasoning_effort=\"$VERIFIER_CODEX_REASONING\" --dangerously-bypass-approvals-and-sandbox"
1804
+ verifier_launch="${CODEX_BIN:-codex} -m $VERIFIER_CODEX_MODEL -c model_reasoning_effort=\"$VERIFIER_CODEX_REASONING\" --disable plugins --dangerously-bypass-approvals-and-sandbox"
1742
1805
  launch_verifier_codex "$VERIFIER_PANE" "$verifier_prompt" "$iter" "$verifier_launch"
1743
1806
  else
1744
- verifier_launch="$(build_claude_cmd tui "$VERIFIER_MODEL")"
1807
+ verifier_launch="$(build_claude_cmd tui "$VERIFIER_MODEL" "" "" "$VERIFIER_EFFORT")"
1745
1808
  launch_verifier_claude "$VERIFIER_PANE" "$verifier_prompt" "$iter" "$verifier_launch" || {
1746
1809
  log_error "Failed to launch verifier for $us"
1747
1810
  FAILED_US="$us"
@@ -1752,7 +1815,7 @@ run_sequential_final_verify() {
1752
1815
  # Poll for verdict
1753
1816
  rm -f "$VERDICT_FILE"
1754
1817
  local poll_rc=0
1755
- poll_for_signal "$VERDICT_FILE" "$ITER_TIMEOUT" "verdict" || poll_rc=$?
1818
+ poll_for_signal "$VERDICT_FILE" "$VERIFIER_HEARTBEAT" "$VERIFIER_PANE" "$verifier_launch" "Verifier-final" || poll_rc=$?
1756
1819
  if (( poll_rc != 0 )); then
1757
1820
  log_error "Verifier poll failed for $us (rc=$poll_rc)"
1758
1821
  FAILED_US="$us"
@@ -2179,14 +2242,14 @@ main() {
2179
2242
 
2180
2243
  local worker_launch
2181
2244
  if [[ "$WORKER_ENGINE" = "codex" ]]; then
2182
- worker_launch="${CODEX_BIN:-codex} -m $WORKER_CODEX_MODEL -c model_reasoning_effort=\"$WORKER_CODEX_REASONING\" --dangerously-bypass-approvals-and-sandbox"
2245
+ worker_launch="${CODEX_BIN:-codex} -m $WORKER_CODEX_MODEL -c model_reasoning_effort=\"$WORKER_CODEX_REASONING\" --disable plugins --dangerously-bypass-approvals-and-sandbox"
2183
2246
  if ! launch_worker_codex "$WORKER_PANE" "$worker_prompt" "$ITERATION" "$worker_launch"; then
2184
2247
  write_blocked_sentinel "Worker codex failed to start in pane"
2185
2248
  update_status "blocked" "worker_start_failed"
2186
2249
  return 1
2187
2250
  fi
2188
2251
  else
2189
- worker_launch="$(build_claude_cmd tui "$WORKER_MODEL")"
2252
+ worker_launch="$(build_claude_cmd tui "$WORKER_MODEL" "" "" "$WORKER_EFFORT")"
2190
2253
  if ! launch_worker_claude "$WORKER_PANE" "$worker_prompt" "$ITERATION" "$worker_launch"; then
2191
2254
  write_blocked_sentinel "Worker claude failed to start in pane"
2192
2255
  update_status "blocked" "worker_start_failed"
@@ -2361,9 +2424,9 @@ main() {
2361
2424
 
2362
2425
  local verifier_launch
2363
2426
  if [[ "$VERIFIER_ENGINE" = "codex" ]]; then
2364
- verifier_launch="${CODEX_BIN:-codex} -m $VERIFIER_CODEX_MODEL -c model_reasoning_effort=\"$VERIFIER_CODEX_REASONING\" --dangerously-bypass-approvals-and-sandbox"
2427
+ verifier_launch="${CODEX_BIN:-codex} -m $VERIFIER_CODEX_MODEL -c model_reasoning_effort=\"$VERIFIER_CODEX_REASONING\" --disable plugins --dangerously-bypass-approvals-and-sandbox"
2365
2428
  else
2366
- verifier_launch="$(build_claude_cmd tui "$VERIFIER_MODEL")"
2429
+ verifier_launch="$(build_claude_cmd tui "$VERIFIER_MODEL" "" "" "$VERIFIER_EFFORT")"
2367
2430
  fi
2368
2431
  log_debug "[FLOW] iter=$ITERATION phase=verifier engine=$VERIFIER_ENGINE model=$VERIFIER_MODEL scope=${signal_us_id:-all} dispatched=true"
2369
2432
 
@@ -2610,6 +2673,8 @@ while (( _cli_i <= $# )); do
2610
2673
  if [[ "$WORKER_ENGINE" = "codex" ]]; then
2611
2674
  WORKER_CODEX_MODEL="$WORKER_MODEL"
2612
2675
  WORKER_CODEX_REASONING="${_cli_rest##* }"
2676
+ elif [[ "$_cli_rest" == *" "* ]]; then
2677
+ WORKER_EFFORT="${_cli_rest##* }"
2613
2678
  fi
2614
2679
  ;;
2615
2680
  --verifier-model)
@@ -2621,11 +2686,16 @@ while (( _cli_i <= $# )); do
2621
2686
  if [[ "$VERIFIER_ENGINE" = "codex" ]]; then
2622
2687
  VERIFIER_CODEX_MODEL="$VERIFIER_MODEL"
2623
2688
  VERIFIER_CODEX_REASONING="${_cli_rest##* }"
2689
+ elif [[ "$_cli_rest" == *" "* ]]; then
2690
+ VERIFIER_EFFORT="${_cli_rest##* }"
2624
2691
  fi
2625
2692
  ;;
2626
2693
  --lock-worker-model)
2627
2694
  LOCK_WORKER_MODEL=1
2628
2695
  ;;
2696
+ --autonomous)
2697
+ AUTONOMOUS_MODE=1
2698
+ ;;
2629
2699
  --final-verifier-model)
2630
2700
  (( _cli_i++ ))
2631
2701
  _cli_parsed=$(parse_model_flag "${@[$_cli_i]:-}" "final-verifier") || exit 1
@@ -2635,6 +2705,8 @@ while (( _cli_i <= $# )); do
2635
2705
  if [[ "$FINAL_VERIFIER_ENGINE" = "codex" ]]; then
2636
2706
  FINAL_VERIFIER_CODEX_MODEL="$FINAL_VERIFIER_MODEL"
2637
2707
  FINAL_VERIFIER_CODEX_REASONING="${_cli_rest##* }"
2708
+ elif [[ "$_cli_rest" == *" "* ]]; then
2709
+ FINAL_VERIFIER_EFFORT="${_cli_rest##* }"
2638
2710
  fi
2639
2711
  ;;
2640
2712
  --consensus)