@miller-tech/uap 1.136.2 → 1.137.2
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/dist/.tsbuildinfo +1 -1
- package/dist/benchmarks/paired/report.d.ts +13 -0
- package/dist/benchmarks/paired/report.d.ts.map +1 -1
- package/dist/benchmarks/paired/report.js +29 -3
- package/dist/benchmarks/paired/report.js.map +1 -1
- package/dist/benchmarks/paired/types.d.ts +59 -0
- package/dist/benchmarks/paired/types.d.ts.map +1 -1
- package/dist/benchmarks/paired/types.js +60 -0
- package/dist/benchmarks/paired/types.js.map +1 -1
- package/dist/bin/cli.js +30 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +111 -7
- package/dist/cli/deliver.js.map +1 -1
- package/dist/cli/react.d.ts.map +1 -1
- package/dist/cli/react.js +18 -0
- package/dist/cli/react.js.map +1 -1
- package/dist/cli/self-tuning.d.ts +33 -0
- package/dist/cli/self-tuning.d.ts.map +1 -0
- package/dist/cli/self-tuning.js +139 -0
- package/dist/cli/self-tuning.js.map +1 -0
- package/dist/cli/tune-adapter.d.ts +8 -0
- package/dist/cli/tune-adapter.d.ts.map +1 -0
- package/dist/cli/tune-adapter.js +26 -0
- package/dist/cli/tune-adapter.js.map +1 -0
- package/dist/config/settings-registry.d.ts.map +1 -1
- package/dist/config/settings-registry.js +10 -0
- package/dist/config/settings-registry.js.map +1 -1
- package/dist/coordination/adaptation-signal.d.ts +19 -0
- package/dist/coordination/adaptation-signal.d.ts.map +1 -0
- package/dist/coordination/adaptation-signal.js +36 -0
- package/dist/coordination/adaptation-signal.js.map +1 -0
- package/dist/delivery/agentic-executor.d.ts +16 -1
- package/dist/delivery/agentic-executor.d.ts.map +1 -1
- package/dist/delivery/agentic-executor.js +45 -4
- package/dist/delivery/agentic-executor.js.map +1 -1
- package/dist/delivery/decompose.d.ts +27 -0
- package/dist/delivery/decompose.d.ts.map +1 -1
- package/dist/delivery/decompose.js +31 -1
- package/dist/delivery/decompose.js.map +1 -1
- package/dist/delivery/repair-escalation.d.ts +49 -0
- package/dist/delivery/repair-escalation.d.ts.map +1 -0
- package/dist/delivery/repair-escalation.js +83 -0
- package/dist/delivery/repair-escalation.js.map +1 -0
- package/dist/delivery/verifier-ladder.d.ts +47 -0
- package/dist/delivery/verifier-ladder.d.ts.map +1 -1
- package/dist/delivery/verifier-ladder.js +87 -1
- package/dist/delivery/verifier-ladder.js.map +1 -1
- package/dist/self-harness/mods.d.ts +20 -1
- package/dist/self-harness/mods.d.ts.map +1 -1
- package/dist/self-harness/mods.js +41 -0
- package/dist/self-harness/mods.js.map +1 -1
- package/dist/self-harness/orchestrator.js +4 -0
- package/dist/self-harness/orchestrator.js.map +1 -1
- package/dist/self-harness/transfer.d.ts.map +1 -1
- package/dist/self-harness/transfer.js +2 -0
- package/dist/self-harness/transfer.js.map +1 -1
- package/dist/self-tuning/flag-writer.d.ts +48 -0
- package/dist/self-tuning/flag-writer.d.ts.map +1 -0
- package/dist/self-tuning/flag-writer.js +102 -0
- package/dist/self-tuning/flag-writer.js.map +1 -0
- package/dist/self-tuning/flags.d.ts +88 -0
- package/dist/self-tuning/flags.d.ts.map +1 -0
- package/dist/self-tuning/flags.js +189 -0
- package/dist/self-tuning/flags.js.map +1 -0
- package/dist/self-tuning/index.d.ts +25 -0
- package/dist/self-tuning/index.d.ts.map +1 -0
- package/dist/self-tuning/index.js +25 -0
- package/dist/self-tuning/index.js.map +1 -0
- package/dist/self-tuning/judge.d.ts +66 -0
- package/dist/self-tuning/judge.d.ts.map +1 -0
- package/dist/self-tuning/judge.js +145 -0
- package/dist/self-tuning/judge.js.map +1 -0
- package/dist/self-tuning/llm-tuner.d.ts +83 -0
- package/dist/self-tuning/llm-tuner.d.ts.map +1 -0
- package/dist/self-tuning/llm-tuner.js +191 -0
- package/dist/self-tuning/llm-tuner.js.map +1 -0
- package/dist/self-tuning/orchestrator.d.ts +90 -0
- package/dist/self-tuning/orchestrator.d.ts.map +1 -0
- package/dist/self-tuning/orchestrator.js +126 -0
- package/dist/self-tuning/orchestrator.js.map +1 -0
- package/dist/self-tuning/paired-validator.d.ts +50 -0
- package/dist/self-tuning/paired-validator.d.ts.map +1 -0
- package/dist/self-tuning/paired-validator.js +78 -0
- package/dist/self-tuning/paired-validator.js.map +1 -0
- package/dist/self-tuning/profiles/index.d.ts +11 -0
- package/dist/self-tuning/profiles/index.d.ts.map +1 -0
- package/dist/self-tuning/profiles/index.js +15 -0
- package/dist/self-tuning/profiles/index.js.map +1 -0
- package/dist/self-tuning/profiles/opus48.d.ts +11 -0
- package/dist/self-tuning/profiles/opus48.d.ts.map +1 -0
- package/dist/self-tuning/profiles/opus48.js +27 -0
- package/dist/self-tuning/profiles/opus48.js.map +1 -0
- package/dist/self-tuning/profiles/qwen36.d.ts +11 -0
- package/dist/self-tuning/profiles/qwen36.d.ts.map +1 -0
- package/dist/self-tuning/profiles/qwen36.js +33 -0
- package/dist/self-tuning/profiles/qwen36.js.map +1 -0
- package/dist/self-tuning/quality-scorer.d.ts +90 -0
- package/dist/self-tuning/quality-scorer.d.ts.map +1 -0
- package/dist/self-tuning/quality-scorer.js +180 -0
- package/dist/self-tuning/quality-scorer.js.map +1 -0
- package/dist/self-tuning/realtime-adaptor.d.ts +78 -0
- package/dist/self-tuning/realtime-adaptor.d.ts.map +1 -0
- package/dist/self-tuning/realtime-adaptor.js +127 -0
- package/dist/self-tuning/realtime-adaptor.js.map +1 -0
- package/dist/self-tuning/run.d.ts +61 -0
- package/dist/self-tuning/run.d.ts.map +1 -0
- package/dist/self-tuning/run.js +122 -0
- package/dist/self-tuning/run.js.map +1 -0
- package/dist/self-tuning/search-reducer.d.ts +76 -0
- package/dist/self-tuning/search-reducer.d.ts.map +1 -0
- package/dist/self-tuning/search-reducer.js +349 -0
- package/dist/self-tuning/search-reducer.js.map +1 -0
- package/dist/self-tuning/tuning-profile.d.ts +72 -0
- package/dist/self-tuning/tuning-profile.d.ts.map +1 -0
- package/dist/self-tuning/tuning-profile.js +134 -0
- package/dist/self-tuning/tuning-profile.js.map +1 -0
- package/dist/telemetry/session-telemetry.d.ts +25 -0
- package/dist/telemetry/session-telemetry.d.ts.map +1 -1
- package/dist/telemetry/session-telemetry.js +32 -0
- package/dist/telemetry/session-telemetry.js.map +1 -1
- package/dist/types/config.d.ts +13 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -1
- package/docs/INDEX.md +7 -4
- package/docs/design/LLM_SELF_TUNING_ANALYSIS.md +617 -0
- package/docs/guides/AUTOMATIC_FEATURES.md +8 -0
- package/docs/guides/DROIDS_AND_SKILLS.md +1 -1
- package/docs/guides/SELF_TUNING.md +137 -0
- package/docs/reference/CLI.md +262 -1
- package/docs/reference/CONFIGURATION_REFERENCE.md +24 -0
- package/docs/reference/FEATURES.md +20 -5
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
- package/tools/agents/scripts/anthropic_proxy.py +355 -29
- package/tools/agents/scripts/confidence_escalation.py +60 -4
- package/tools/agents/tests/test_confidence_escalation.py +77 -0
|
@@ -11,6 +11,9 @@ ce = importlib.util.module_from_spec(spec)
|
|
|
11
11
|
sys.modules["confidence_escalation"] = ce
|
|
12
12
|
import tempfile, os as _os2
|
|
13
13
|
_os2.environ["UAP_RECIPE_SIGNAL_DIR"] = tempfile.mkdtemp(prefix="uap-sig-")
|
|
14
|
+
# Isolate the (now auto-on) real-time adaptation dir to an empty temp so no test
|
|
15
|
+
# accidentally reads a stray ~/.cache adaptation signal from the dev machine.
|
|
16
|
+
_os2.environ["UAP_ADAPTATION_SIGNAL_DIR"] = tempfile.mkdtemp(prefix="uap-adapt-empty-")
|
|
14
17
|
spec.loader.exec_module(ce)
|
|
15
18
|
|
|
16
19
|
|
|
@@ -268,5 +271,79 @@ class JudgeGatingTest(unittest.TestCase): # #2 stronger non-self judge
|
|
|
268
271
|
self.assertEqual(ce.select_recipe(b, S(recipe="auto", model="opus"), False), "fusion")
|
|
269
272
|
|
|
270
273
|
|
|
274
|
+
class AdaptationSignalTest(unittest.TestCase): # LLM-Self-Tuning real-time adaptor (P4)
|
|
275
|
+
def setUp(self):
|
|
276
|
+
import tempfile, os
|
|
277
|
+
self.d = tempfile.mkdtemp(prefix="uap-adapt-test-")
|
|
278
|
+
self.empty = tempfile.mkdtemp(prefix="uap-empty-sig-")
|
|
279
|
+
self._saved = {k: os.environ.get(k) for k in
|
|
280
|
+
("UAP_RECIPE_SIGNAL_DIR", "UAP_ADAPTATION_SIGNAL_DIR", "PROXY_REALTIME_ADAPT")}
|
|
281
|
+
# Isolate the reactor-signal dir so it never pre-empts our selection, and
|
|
282
|
+
# point the adaptation dir at this test's dir.
|
|
283
|
+
os.environ["UAP_RECIPE_SIGNAL_DIR"] = self.empty
|
|
284
|
+
os.environ["UAP_ADAPTATION_SIGNAL_DIR"] = self.d
|
|
285
|
+
os.environ.pop("PROXY_REALTIME_ADAPT", None)
|
|
286
|
+
|
|
287
|
+
def tearDown(self):
|
|
288
|
+
import os
|
|
289
|
+
for k, v in self._saved.items():
|
|
290
|
+
if v is None:
|
|
291
|
+
os.environ.pop(k, None)
|
|
292
|
+
else:
|
|
293
|
+
os.environ[k] = v
|
|
294
|
+
|
|
295
|
+
def _write(self, name, sig):
|
|
296
|
+
import json, os
|
|
297
|
+
with open(os.path.join(self.d, name), "w") as f:
|
|
298
|
+
json.dump(sig, f)
|
|
299
|
+
|
|
300
|
+
def test_load_fresh_stale_missing(self):
|
|
301
|
+
import time
|
|
302
|
+
self._write("s1.json", {"ts": time.time(), "escalate": True})
|
|
303
|
+
self.assertTrue(ce.load_adaptation_signal("s1", signal_dir=self.d)["escalate"])
|
|
304
|
+
self._write("old.json", {"ts": 1, "escalate": True})
|
|
305
|
+
self.assertIsNone(ce.load_adaptation_signal("old", signal_dir=self.d, ttl=180.0))
|
|
306
|
+
self.assertIsNone(ce.load_adaptation_signal("nope", signal_dir=self.d))
|
|
307
|
+
|
|
308
|
+
def test_latest_fallback(self):
|
|
309
|
+
import time
|
|
310
|
+
self._write("latest.json", {"ts": time.time(), "recipe": "fusion"})
|
|
311
|
+
self.assertEqual(ce.load_adaptation_signal(signal_dir=self.d)["recipe"], "fusion")
|
|
312
|
+
|
|
313
|
+
def test_enabled_by_default_and_opt_out(self):
|
|
314
|
+
import os
|
|
315
|
+
self.assertTrue(ce.realtime_adapt_enabled()) # unset -> auto-on
|
|
316
|
+
os.environ["PROXY_REALTIME_ADAPT"] = "0"
|
|
317
|
+
self.assertFalse(ce.realtime_adapt_enabled())
|
|
318
|
+
os.environ["PROXY_REALTIME_ADAPT"] = "true"
|
|
319
|
+
self.assertTrue(ce.realtime_adapt_enabled())
|
|
320
|
+
|
|
321
|
+
def test_auto_on_escalation(self):
|
|
322
|
+
import time
|
|
323
|
+
self._write("latest.json", {"ts": time.time(), "escalate": True})
|
|
324
|
+
# Auto-on (PROXY_REALTIME_ADAPT unset): the fresh signal escalates to fusion.
|
|
325
|
+
self.assertEqual(ce.select_recipe(body("add a button"), S(recipe="auto"), False), "fusion")
|
|
326
|
+
|
|
327
|
+
def test_opt_out_disables_escalation(self):
|
|
328
|
+
import os, time
|
|
329
|
+
self._write("latest.json", {"ts": time.time(), "escalate": True})
|
|
330
|
+
os.environ["PROXY_REALTIME_ADAPT"] = "0"
|
|
331
|
+
# Disabled: a short prompt stays on the cheaper 'confidence' recipe.
|
|
332
|
+
self.assertEqual(ce.select_recipe(body("add a button"), S(recipe="auto"), False), "confidence")
|
|
333
|
+
|
|
334
|
+
def test_no_signal_no_escalation(self):
|
|
335
|
+
# Auto-on but no signal present → normal selection (confidence for a short prompt).
|
|
336
|
+
self.assertEqual(ce.select_recipe(body("add a button"), S(recipe="auto"), False), "confidence")
|
|
337
|
+
|
|
338
|
+
def test_no_escalation_without_judge(self):
|
|
339
|
+
import time
|
|
340
|
+
self._write("latest.json", {"ts": time.time(), "escalate": True})
|
|
341
|
+
# judge == primary model → no distinct judge → never escalate to fusion.
|
|
342
|
+
self.assertNotEqual(
|
|
343
|
+
ce.select_recipe(body("add a button"), S(recipe="auto", model="qwen"), False),
|
|
344
|
+
"fusion",
|
|
345
|
+
)
|
|
346
|
+
|
|
347
|
+
|
|
271
348
|
if __name__ == "__main__":
|
|
272
349
|
unittest.main()
|