@miller-tech/uap 1.91.0 → 1.92.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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +5 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/model.d.ts +0 -3
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +56 -2
- package/dist/cli/model.js.map +1 -1
- package/dist/models/types.d.ts +24 -2
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js +70 -0
- package/dist/models/types.js.map +1 -1
- package/dist/types/config.d.ts +6 -6
- 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 +17 -4
- package/tools/agents/tests/test_passthrough_oauth.py +73 -0
package/dist/models/types.js
CHANGED
|
@@ -128,6 +128,76 @@ export const ModelPresets = {
|
|
|
128
128
|
costPer1MOutput: 12.0,
|
|
129
129
|
capabilities: ['code-generation', 'execution', 'complex-reasoning', 'agentic'],
|
|
130
130
|
},
|
|
131
|
+
'fable-5': {
|
|
132
|
+
id: 'fable-5',
|
|
133
|
+
name: 'Claude Fable 5',
|
|
134
|
+
provider: 'anthropic',
|
|
135
|
+
apiModel: 'claude-fable-5',
|
|
136
|
+
apiKeyEnvVar: 'ANTHROPIC_API_KEY',
|
|
137
|
+
maxContextTokens: 200000,
|
|
138
|
+
costPer1MInput: 5.0,
|
|
139
|
+
costPer1MOutput: 25.0,
|
|
140
|
+
capabilities: ['planning', 'complex-reasoning', 'code-generation', 'advanced-planning'],
|
|
141
|
+
modelContextBudget: 180000,
|
|
142
|
+
},
|
|
143
|
+
'haiku-4.5': {
|
|
144
|
+
id: 'haiku-4.5',
|
|
145
|
+
name: 'Claude Haiku 4.5',
|
|
146
|
+
provider: 'anthropic',
|
|
147
|
+
apiModel: 'claude-haiku-4-5-20251001',
|
|
148
|
+
apiKeyEnvVar: 'ANTHROPIC_API_KEY',
|
|
149
|
+
maxContextTokens: 200000,
|
|
150
|
+
costPer1MInput: 1.0,
|
|
151
|
+
costPer1MOutput: 5.0,
|
|
152
|
+
capabilities: ['code-generation', 'execution', 'simple-tasks', 'agentic'],
|
|
153
|
+
modelContextBudget: 180000,
|
|
154
|
+
},
|
|
155
|
+
'qwen36-a3b': {
|
|
156
|
+
id: 'qwen36-a3b',
|
|
157
|
+
name: 'Qwen 3.6 35B A3B (llama.cpp, local)',
|
|
158
|
+
provider: 'custom',
|
|
159
|
+
apiModel: 'qwen36-35b-a3b-iq4xs',
|
|
160
|
+
// Route through the anthropic-proxy (:4000) for <think>-stripping + tool/finalize
|
|
161
|
+
// guardrails (same rationale as qwen35-a3b), not llama :8080 raw.
|
|
162
|
+
endpoint: 'http://192.168.1.165:4000/v1',
|
|
163
|
+
maxContextTokens: 262144,
|
|
164
|
+
costPer1MInput: 0,
|
|
165
|
+
costPer1MOutput: 0,
|
|
166
|
+
capabilities: ['code-generation', 'execution', 'planning', 'simple-tasks'],
|
|
167
|
+
modelContextBudget: 131072,
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
export const RoutingPresets = {
|
|
171
|
+
'fable-local-opus': {
|
|
172
|
+
id: 'fable-local-opus',
|
|
173
|
+
name: 'Fable plan / local execute / Opus review',
|
|
174
|
+
description: 'Plan with Claude Fable 5, execute on local Qwen 3.6, review with Claude Opus 4.8, ' +
|
|
175
|
+
'fall back to local Qwen 3.6. Cloud is used only for planning and review (Max-plan ' +
|
|
176
|
+
'friendly); execution stays free and local.',
|
|
177
|
+
roles: {
|
|
178
|
+
planner: 'fable-5',
|
|
179
|
+
executor: 'qwen36-a3b',
|
|
180
|
+
reviewer: 'opus-4.8',
|
|
181
|
+
fallback: 'qwen36-a3b',
|
|
182
|
+
},
|
|
183
|
+
models: ['fable-5', 'qwen36-a3b', 'opus-4.8'],
|
|
184
|
+
routingStrategy: 'balanced',
|
|
185
|
+
},
|
|
186
|
+
'fable-haiku-opus': {
|
|
187
|
+
id: 'fable-haiku-opus',
|
|
188
|
+
name: 'Fable plan / Haiku execute / Opus review',
|
|
189
|
+
description: 'Plan with Claude Fable 5, execute with Claude Haiku 4.5 (fast cloud), review with ' +
|
|
190
|
+
'Claude Opus 4.8, fall back to local Qwen 3.6. All-cloud hot path with a free local ' +
|
|
191
|
+
'safety net.',
|
|
192
|
+
roles: {
|
|
193
|
+
planner: 'fable-5',
|
|
194
|
+
executor: 'haiku-4.5',
|
|
195
|
+
reviewer: 'opus-4.8',
|
|
196
|
+
fallback: 'qwen36-a3b',
|
|
197
|
+
},
|
|
198
|
+
models: ['fable-5', 'haiku-4.5', 'opus-4.8', 'qwen36-a3b'],
|
|
199
|
+
routingStrategy: 'performance-first',
|
|
200
|
+
},
|
|
131
201
|
};
|
|
132
202
|
/**
|
|
133
203
|
* Role assignment configuration - maps roles to models
|
package/dist/models/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1457,7 +1457,7 @@ export declare const MultiModelSchema: z.ZodObject<{
|
|
|
1457
1457
|
modelContextBudget?: number | undefined;
|
|
1458
1458
|
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1459
1459
|
})[];
|
|
1460
|
-
routingStrategy: "
|
|
1460
|
+
routingStrategy: "balanced" | "performance-first" | "cost-optimized" | "adaptive";
|
|
1461
1461
|
roles?: {
|
|
1462
1462
|
planner: string;
|
|
1463
1463
|
executor: string;
|
|
@@ -1530,7 +1530,7 @@ export declare const MultiModelSchema: z.ZodObject<{
|
|
|
1530
1530
|
planner: string;
|
|
1531
1531
|
executor: string;
|
|
1532
1532
|
}>> | undefined;
|
|
1533
|
-
routingStrategy?: "
|
|
1533
|
+
routingStrategy?: "balanced" | "performance-first" | "cost-optimized" | "adaptive" | undefined;
|
|
1534
1534
|
plannerSettings?: {
|
|
1535
1535
|
complexityThreshold?: "low" | "medium" | "high" | undefined;
|
|
1536
1536
|
maxPlanningTokens?: number | undefined;
|
|
@@ -2807,7 +2807,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
2807
2807
|
modelContextBudget?: number | undefined;
|
|
2808
2808
|
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
2809
2809
|
})[];
|
|
2810
|
-
routingStrategy: "
|
|
2810
|
+
routingStrategy: "balanced" | "performance-first" | "cost-optimized" | "adaptive";
|
|
2811
2811
|
roles?: {
|
|
2812
2812
|
planner: string;
|
|
2813
2813
|
executor: string;
|
|
@@ -2880,7 +2880,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
2880
2880
|
planner: string;
|
|
2881
2881
|
executor: string;
|
|
2882
2882
|
}>> | undefined;
|
|
2883
|
-
routingStrategy?: "
|
|
2883
|
+
routingStrategy?: "balanced" | "performance-first" | "cost-optimized" | "adaptive" | undefined;
|
|
2884
2884
|
plannerSettings?: {
|
|
2885
2885
|
complexityThreshold?: "low" | "medium" | "high" | undefined;
|
|
2886
2886
|
maxPlanningTokens?: number | undefined;
|
|
@@ -3297,7 +3297,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
3297
3297
|
modelContextBudget?: number | undefined;
|
|
3298
3298
|
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
3299
3299
|
})[];
|
|
3300
|
-
routingStrategy: "
|
|
3300
|
+
routingStrategy: "balanced" | "performance-first" | "cost-optimized" | "adaptive";
|
|
3301
3301
|
roles?: {
|
|
3302
3302
|
planner: string;
|
|
3303
3303
|
executor: string;
|
|
@@ -3614,7 +3614,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
3614
3614
|
planner: string;
|
|
3615
3615
|
executor: string;
|
|
3616
3616
|
}>> | undefined;
|
|
3617
|
-
routingStrategy?: "
|
|
3617
|
+
routingStrategy?: "balanced" | "performance-first" | "cost-optimized" | "adaptive" | undefined;
|
|
3618
3618
|
plannerSettings?: {
|
|
3619
3619
|
complexityThreshold?: "low" | "medium" | "high" | undefined;
|
|
3620
3620
|
maxPlanningTokens?: number | undefined;
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -718,7 +718,10 @@ PROXY_MODEL_PROFILE_PARAM = os.environ.get(
|
|
|
718
718
|
|
|
719
719
|
DEFAULT_PASSTHROUGH_MODEL_PATTERNS = (
|
|
720
720
|
re.compile(r"^claude-opus-4-6", re.IGNORECASE),
|
|
721
|
+
re.compile(r"^claude-opus-4-8", re.IGNORECASE),
|
|
721
722
|
re.compile(r"^claude-sonnet-4-6", re.IGNORECASE),
|
|
723
|
+
re.compile(r"^claude-haiku-4-5", re.IGNORECASE),
|
|
724
|
+
re.compile(r"^claude-fable-5", re.IGNORECASE),
|
|
722
725
|
)
|
|
723
726
|
|
|
724
727
|
# ---------------------------------------------------------------------------
|
|
@@ -8580,14 +8583,24 @@ async def stream_anthropic_response(
|
|
|
8580
8583
|
|
|
8581
8584
|
|
|
8582
8585
|
def _build_passthrough_headers(request: Request) -> dict | None:
|
|
8583
|
-
api_key = request.headers.get("x-api-key") or ANTHROPIC_API_KEY
|
|
8584
|
-
if not api_key:
|
|
8585
|
-
return None
|
|
8586
8586
|
headers = {
|
|
8587
8587
|
"Content-Type": "application/json",
|
|
8588
|
-
"x-api-key": api_key,
|
|
8589
8588
|
"anthropic-version": request.headers.get("anthropic-version", "2023-06-01"),
|
|
8590
8589
|
}
|
|
8590
|
+
# Claude Code on a Claude Max / Pro plan authenticates with an OAuth *bearer*
|
|
8591
|
+
# token (Authorization: Bearer sk-ant-oat...), NOT an API key. When the client
|
|
8592
|
+
# sends one, forward it verbatim and do NOT attach x-api-key -- Anthropic
|
|
8593
|
+
# rejects requests that carry both credentials. This lets the proxy sit
|
|
8594
|
+
# transparently in front of api.anthropic.com for subscription-auth Claude
|
|
8595
|
+
# Code sessions (point ANTHROPIC_BASE_URL at the proxy and it just works).
|
|
8596
|
+
authorization = request.headers.get("authorization")
|
|
8597
|
+
if authorization:
|
|
8598
|
+
headers["Authorization"] = authorization
|
|
8599
|
+
else:
|
|
8600
|
+
api_key = request.headers.get("x-api-key") or ANTHROPIC_API_KEY
|
|
8601
|
+
if not api_key:
|
|
8602
|
+
return None
|
|
8603
|
+
headers["x-api-key"] = api_key
|
|
8591
8604
|
beta = request.headers.get("anthropic-beta")
|
|
8592
8605
|
if beta:
|
|
8593
8606
|
headers["anthropic-beta"] = beta
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"""Tests for OAuth-aware Anthropic passthrough (Claude Max) + passthrough model match."""
|
|
2
|
+
import importlib.util
|
|
3
|
+
import os
|
|
4
|
+
import unittest
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from types import SimpleNamespace
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _load_proxy_module():
|
|
10
|
+
proxy_path = Path(__file__).resolve().parents[1] / "scripts" / "anthropic_proxy.py"
|
|
11
|
+
spec = importlib.util.spec_from_file_location("anthropic_proxy", proxy_path)
|
|
12
|
+
module = importlib.util.module_from_spec(spec)
|
|
13
|
+
spec.loader.exec_module(module)
|
|
14
|
+
return module
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
proxy = _load_proxy_module()
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def req(headers):
|
|
21
|
+
# FastAPI Request.headers exposes a case-insensitive .get; the proxy only
|
|
22
|
+
# reads lowercase keys, so a plain dict is a faithful stand-in.
|
|
23
|
+
return SimpleNamespace(headers=headers)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class PassthroughOAuthTest(unittest.TestCase):
|
|
27
|
+
def test_oauth_bearer_forwarded_without_api_key(self):
|
|
28
|
+
h = proxy._build_passthrough_headers(
|
|
29
|
+
req({"authorization": "Bearer sk-ant-oat-abc", "anthropic-version": "2023-06-01"})
|
|
30
|
+
)
|
|
31
|
+
self.assertEqual(h["Authorization"], "Bearer sk-ant-oat-abc")
|
|
32
|
+
self.assertNotIn("x-api-key", h) # must NOT mix credentials
|
|
33
|
+
|
|
34
|
+
def test_oauth_takes_precedence_over_api_key(self):
|
|
35
|
+
h = proxy._build_passthrough_headers(
|
|
36
|
+
req({"authorization": "Bearer sk-ant-oat-abc", "x-api-key": "sk-ant-api-xyz"})
|
|
37
|
+
)
|
|
38
|
+
self.assertEqual(h["Authorization"], "Bearer sk-ant-oat-abc")
|
|
39
|
+
self.assertNotIn("x-api-key", h)
|
|
40
|
+
|
|
41
|
+
def test_api_key_path_still_works(self):
|
|
42
|
+
h = proxy._build_passthrough_headers(req({"x-api-key": "sk-ant-api-xyz"}))
|
|
43
|
+
self.assertEqual(h["x-api-key"], "sk-ant-api-xyz")
|
|
44
|
+
self.assertNotIn("Authorization", h)
|
|
45
|
+
|
|
46
|
+
def test_beta_header_forwarded(self):
|
|
47
|
+
h = proxy._build_passthrough_headers(
|
|
48
|
+
req({"authorization": "Bearer t", "anthropic-beta": "oauth-2025-04-20"})
|
|
49
|
+
)
|
|
50
|
+
self.assertEqual(h["anthropic-beta"], "oauth-2025-04-20")
|
|
51
|
+
|
|
52
|
+
def test_no_credentials_returns_none(self):
|
|
53
|
+
old = proxy.ANTHROPIC_API_KEY
|
|
54
|
+
proxy.ANTHROPIC_API_KEY = ""
|
|
55
|
+
try:
|
|
56
|
+
self.assertIsNone(proxy._build_passthrough_headers(req({})))
|
|
57
|
+
finally:
|
|
58
|
+
proxy.ANTHROPIC_API_KEY = old
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class PassthroughModelMatchTest(unittest.TestCase):
|
|
62
|
+
def test_new_anthropic_models_passthrough(self):
|
|
63
|
+
for m in ("claude-opus-4-8", "claude-fable-5", "claude-haiku-4-5-20251001",
|
|
64
|
+
"claude-opus-4-6", "claude-sonnet-4-6"):
|
|
65
|
+
self.assertTrue(proxy._should_passthrough_model(m), m)
|
|
66
|
+
|
|
67
|
+
def test_local_model_not_passthrough(self):
|
|
68
|
+
self.assertFalse(proxy._should_passthrough_model("qwen36-35b-a3b-iq4xs"))
|
|
69
|
+
self.assertFalse(proxy._should_passthrough_model(""))
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
if __name__ == "__main__":
|
|
73
|
+
unittest.main()
|