@miller-tech/uap 1.212.6 → 1.213.0

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 (44) hide show
  1. package/config/model-profiles/qwen38.json +70 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/bin/cli.js +2 -2
  4. package/dist/bin/cli.js.map +1 -1
  5. package/dist/cli/self-harness.js +1 -1
  6. package/dist/cli/self-harness.js.map +1 -1
  7. package/dist/cli/self-tuning.js +1 -1
  8. package/dist/config/settings-registry.js +1 -1
  9. package/dist/config/settings-registry.js.map +1 -1
  10. package/dist/delivery/agentic-executor.d.ts.map +1 -1
  11. package/dist/delivery/agentic-executor.js +5 -1
  12. package/dist/delivery/agentic-executor.js.map +1 -1
  13. package/dist/models/local-model.d.ts +59 -0
  14. package/dist/models/local-model.d.ts.map +1 -0
  15. package/dist/models/local-model.js +123 -0
  16. package/dist/models/local-model.js.map +1 -0
  17. package/dist/models/openai-compat-client.d.ts.map +1 -1
  18. package/dist/models/openai-compat-client.js +6 -1
  19. package/dist/models/openai-compat-client.js.map +1 -1
  20. package/dist/models/profile-map.d.ts.map +1 -1
  21. package/dist/models/profile-map.js +9 -2
  22. package/dist/models/profile-map.js.map +1 -1
  23. package/dist/models/types.d.ts.map +1 -1
  24. package/dist/models/types.js +69 -21
  25. package/dist/models/types.js.map +1 -1
  26. package/dist/self-tuning/profiles/index.d.ts +1 -0
  27. package/dist/self-tuning/profiles/index.d.ts.map +1 -1
  28. package/dist/self-tuning/profiles/index.js +3 -0
  29. package/dist/self-tuning/profiles/index.js.map +1 -1
  30. package/dist/self-tuning/profiles/qwen38.d.ts +23 -0
  31. package/dist/self-tuning/profiles/qwen38.d.ts.map +1 -0
  32. package/dist/self-tuning/profiles/qwen38.js +46 -0
  33. package/dist/self-tuning/profiles/qwen38.js.map +1 -0
  34. package/dist/utils/model-slots.d.ts +17 -1
  35. package/dist/utils/model-slots.d.ts.map +1 -1
  36. package/dist/utils/model-slots.js +25 -3
  37. package/dist/utils/model-slots.js.map +1 -1
  38. package/package.json +2 -2
  39. package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
  40. package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
  41. package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
  42. package/tools/agents/scripts/anthropic_proxy.py +306 -7
  43. package/tools/agents/tests/test_anthropic_proxy_streaming.py +12 -6
  44. package/tools/agents/tests/test_thinking_template_kwargs.py +366 -1
@@ -0,0 +1,70 @@
1
+ {
2
+ "_profile": "qwen38",
3
+ "_description": "Qwen3.8 27B — local ninfer-serve deployment for agentic tool-calling workloads. Successor to qwen36; the default local executor in UAP routing. Routes through the anthropic-proxy for the tool/finalize guardrails, NOT the inference server directly.",
4
+ "_engine": "ninfer-serve (NOT llama.cpp). Observed flags: --max-context 131072 --kv-capacity 131072 --max-concurrency 1 --max-pending-requests 16 --prefill-chunk 1024 --kv-dtype int8 --spec mtp --draft-tokens 3 --lm-head-draft. It speaks the OpenAI API and emits native tool_calls, so the proxy needs no format shim, but it is NOT llama.cpp and does not serve /props, /metrics or /slots.",
5
+ "model": "qwen3.8-27b",
6
+
7
+ "max_tokens": 65536,
8
+ "_max_tokens_comment": "Deliberately generous against a 131072 window. This engine returns chain-of-thought in a SEPARATE reasoning_content field, so reasoning spends completion budget without ever appearing in content. A tight cap therefore does not produce a short answer, it produces an EMPTY one with finish_reason=length — measured previously as ~90% first-turn decode failure that read as bad output format and was really budget truncation.",
9
+
10
+ "temperature": 0.3,
11
+ "top_p": 0.9,
12
+ "top_k": 20,
13
+ "min_p": 0.05,
14
+ "repetition_penalty": 1.0,
15
+ "_sampling_comment": "Carried over from qwen36 unchanged: these are UAP's tool-call-tuned values, not the vendor's chat defaults, and nothing has been re-measured on 3.8 yet. Re-tune with `uap tune` before changing them.",
16
+
17
+ "stop_sequences": ["<|im_end|>"],
18
+ "timeout_ms": 300000,
19
+ "context_window": 131072,
20
+ "optimize_for_tool_calls": true,
21
+ "mode_switch_buffer_tokens": 500,
22
+ "enable_thinking": true,
23
+ "_thinking_comment": "Top-level only. This engine REJECTS chat_template_kwargs outright (HTTP 400 chat_template_option_not_supported) — that key is a llama.cpp --jinja concept and qwen36.json carries it for that reason. The proxy probes the backend once and drops the nested form when it is refused (PROXY_CHAT_TEMPLATE_KWARGS=auto|on|off).",
24
+
25
+ "dynamic_temperature": {
26
+ "enabled": true,
27
+ "decay": 0.5,
28
+ "floor": 0.2,
29
+ "_comment": "On retry, temp = max(floor, base_temp * decay^attempt). Reduces randomness for structured output."
30
+ },
31
+
32
+ "tool_call_batching": {
33
+ "enabled": true,
34
+ "system_prompt_suffix": "When multiple tools are needed, call ALL of them in a single response. Do not call one tool and wait - emit all tool calls together.",
35
+ "_comment": "Reduces round-trips by encouraging multi-tool emission in one turn."
36
+ },
37
+
38
+ "concurrency": {
39
+ "max_parallel_requests": 1,
40
+ "_comment": "The server runs --max-concurrency 1 with --max-pending-requests 16: a second request QUEUES, it does not run alongside. Anything that fans out local calls is buying latency, not throughput, so the model-slot lease must treat this as a single rail. Unlike the qwen36 llama.cpp setup there are no --parallel slots and the window is NOT divided.",
41
+ "kv_capacity_shared": false
42
+ },
43
+
44
+ "server_optimization": {
45
+ "kv_dtype": "int8",
46
+ "prefill_chunk": 1024,
47
+ "max_context": 131072,
48
+ "kv_capacity": 131072,
49
+ "speculative_decoding": {
50
+ "enabled": true,
51
+ "type": "mtp",
52
+ "draft_tokens": 3,
53
+ "lm_head_draft": true,
54
+ "_comment": "Multi-token-prediction self-speculation built into the engine (--spec mtp --draft-tokens 3 --lm-head-draft). No draft model, no separate weights."
55
+ },
56
+ "_comment": "These are the flags the server is actually running under, recorded so a rebuild reproduces the measured behaviour."
57
+ },
58
+
59
+ "measured": {
60
+ "date": "2026-08-19",
61
+ "gpu": "NVIDIA GeForce RTX 3090 (24GB, ~23.2GB resident)",
62
+ "decode_tokens_per_second": 78,
63
+ "_comment": "3 reps direct to the inference server (76.3/78.8/78.3 tok/s) and 3 through the proxy (77.6/81.8/81.7), greedy, 512-token cap. The proxy adds no measurable overhead — the two sets overlap within run-to-run noise."
64
+ },
65
+
66
+ "routing": {
67
+ "endpoint": "http://127.0.0.1:4000/v1",
68
+ "_comment": "Route through the anthropic-proxy, NOT the inference server directly — the proxy applies the tool/finalize guardrails and advertises the context window that clients size their history to."
69
+ }
70
+ }