@miller-tech/uap 1.20.10 → 1.20.11
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
|
@@ -147,10 +147,10 @@ PROXY_TOOL_STATE_FORCED_BUDGET = int(
|
|
|
147
147
|
)
|
|
148
148
|
PROXY_TOOL_STATE_AUTO_BUDGET = int(os.environ.get("PROXY_TOOL_STATE_AUTO_BUDGET", "2"))
|
|
149
149
|
PROXY_TOOL_STATE_STAGNATION_THRESHOLD = int(
|
|
150
|
-
os.environ.get("PROXY_TOOL_STATE_STAGNATION_THRESHOLD", "
|
|
150
|
+
os.environ.get("PROXY_TOOL_STATE_STAGNATION_THRESHOLD", "5")
|
|
151
151
|
)
|
|
152
152
|
PROXY_TOOL_STATE_CYCLE_WINDOW = int(
|
|
153
|
-
os.environ.get("PROXY_TOOL_STATE_CYCLE_WINDOW", "
|
|
153
|
+
os.environ.get("PROXY_TOOL_STATE_CYCLE_WINDOW", "4")
|
|
154
154
|
)
|
|
155
155
|
PROXY_TOOL_STATE_FINALIZE_THRESHOLD = int(
|
|
156
156
|
os.environ.get("PROXY_TOOL_STATE_FINALIZE_THRESHOLD", "18")
|
|
@@ -2053,7 +2053,7 @@ def _resolve_state_machine_tool_choice(
|
|
|
2053
2053
|
monitor.tool_state_stagnation_streak,
|
|
2054
2054
|
monitor.tool_state_review_cycles,
|
|
2055
2055
|
)
|
|
2056
|
-
return "
|
|
2056
|
+
return "required", reason
|
|
2057
2057
|
|
|
2058
2058
|
if monitor.tool_state_forced_budget_remaining <= 0:
|
|
2059
2059
|
monitor.set_tool_turn_phase("review", reason="forced_budget_exhausted")
|
|
@@ -2068,7 +2068,7 @@ def _resolve_state_machine_tool_choice(
|
|
|
2068
2068
|
"TOOL STATE MACHINE: forced budget exhausted, entering review (cycles=%d)",
|
|
2069
2069
|
monitor.tool_state_review_cycles,
|
|
2070
2070
|
)
|
|
2071
|
-
return "
|
|
2071
|
+
return "required", "forced_budget_exhausted"
|
|
2072
2072
|
|
|
2073
2073
|
monitor.tool_state_forced_budget_remaining -= 1
|
|
2074
2074
|
return "required", "act"
|
|
@@ -2088,7 +2088,7 @@ def _resolve_state_machine_tool_choice(
|
|
|
2088
2088
|
1, PROXY_TOOL_STATE_FORCED_BUDGET // 2
|
|
2089
2089
|
)
|
|
2090
2090
|
return "required", "review_complete"
|
|
2091
|
-
return "
|
|
2091
|
+
return "required", "review"
|
|
2092
2092
|
|
|
2093
2093
|
if monitor.tool_turn_phase == "finalize":
|
|
2094
2094
|
if monitor.tool_state_auto_budget_remaining <= 0:
|
|
@@ -1861,7 +1861,8 @@ class TestToolTurnControls(unittest.TestCase):
|
|
|
1861
1861
|
|
|
1862
1862
|
self.assertEqual(openai_1.get("tool_choice"), "required")
|
|
1863
1863
|
self.assertEqual(openai_2.get("tool_choice"), "required")
|
|
1864
|
-
|
|
1864
|
+
# Review phase now keeps required to prevent end-turn escape
|
|
1865
|
+
self.assertEqual(openai_3.get("tool_choice"), "required")
|
|
1865
1866
|
finally:
|
|
1866
1867
|
setattr(proxy, "PROXY_TOOL_STATE_MACHINE", old_state)
|
|
1867
1868
|
setattr(proxy, "PROXY_TOOL_STATE_MIN_MESSAGES", old_min_msgs)
|
|
@@ -1938,7 +1939,8 @@ class TestToolTurnControls(unittest.TestCase):
|
|
|
1938
1939
|
}
|
|
1939
1940
|
|
|
1940
1941
|
openai = proxy.build_openai_request(body, monitor)
|
|
1941
|
-
|
|
1942
|
+
# Review phase now keeps required to prevent end-turn escape
|
|
1943
|
+
self.assertEqual(openai.get("tool_choice"), "required")
|
|
1942
1944
|
self.assertEqual(monitor.tool_turn_phase, "review")
|
|
1943
1945
|
finally:
|
|
1944
1946
|
setattr(proxy, "PROXY_TOOL_STATE_MACHINE", old_state)
|
|
@@ -2067,7 +2069,8 @@ class TestToolTurnControls(unittest.TestCase):
|
|
|
2067
2069
|
}
|
|
2068
2070
|
|
|
2069
2071
|
openai = proxy.build_openai_request(body, monitor)
|
|
2070
|
-
|
|
2072
|
+
# Review phase now keeps required to prevent end-turn escape
|
|
2073
|
+
self.assertEqual(openai.get("tool_choice"), "required")
|
|
2071
2074
|
self.assertEqual(monitor.tool_turn_phase, "review")
|
|
2072
2075
|
self.assertEqual(monitor.tool_state_review_cycles, 1)
|
|
2073
2076
|
finally:
|