fix Command Code 403: add cc_version field + x-command-code-version header
This commit is contained in:
Binary file not shown.
@@ -123,6 +123,7 @@ PROVIDER_PRESETS = {
|
|||||||
"Command Code": {
|
"Command Code": {
|
||||||
"backend_type": "command-code",
|
"backend_type": "command-code",
|
||||||
"base_url": "https://api.commandcode.ai",
|
"base_url": "https://api.commandcode.ai",
|
||||||
|
"cc_version": "0.26.8",
|
||||||
"models": [
|
"models": [
|
||||||
"deepseek/deepseek-v4-flash", "deepseek/deepseek-v4-pro",
|
"deepseek/deepseek-v4-flash", "deepseek/deepseek-v4-pro",
|
||||||
"anthropic:claude-sonnet-4-6", "anthropic:claude-haiku-4-5-20251001",
|
"anthropic:claude-sonnet-4-6", "anthropic:claude-haiku-4-5-20251001",
|
||||||
@@ -192,6 +193,8 @@ def apply_provider_preset(endpoint, preset_name):
|
|||||||
updated["provider_preset"] = preset_name
|
updated["provider_preset"] = preset_name
|
||||||
updated["backend_type"] = preset["backend_type"]
|
updated["backend_type"] = preset["backend_type"]
|
||||||
updated["base_url"] = normalize_base_url(preset["base_url"])
|
updated["base_url"] = normalize_base_url(preset["base_url"])
|
||||||
|
if preset.get("cc_version") and not updated.get("cc_version"):
|
||||||
|
updated["cc_version"] = preset["cc_version"]
|
||||||
if not updated.get("models"):
|
if not updated.get("models"):
|
||||||
updated["models"] = list(preset.get("models", []))
|
updated["models"] = list(preset.get("models", []))
|
||||||
if not updated.get("default_model") and updated.get("models"):
|
if not updated.get("default_model") and updated.get("models"):
|
||||||
@@ -418,6 +421,7 @@ def _start_proxy_for(endpoint, logfn):
|
|||||||
"backend_type": endpoint["backend_type"],
|
"backend_type": endpoint["backend_type"],
|
||||||
"target_url": normalize_base_url(endpoint["base_url"]),
|
"target_url": normalize_base_url(endpoint["base_url"]),
|
||||||
"api_key": endpoint["api_key"],
|
"api_key": endpoint["api_key"],
|
||||||
|
"cc_version": endpoint.get("cc_version", ""),
|
||||||
"models": [{"id": m, "object": "model", "created": 1700000000, "owned_by": endpoint["name"]}
|
"models": [{"id": m, "object": "model", "created": 1700000000, "owned_by": endpoint["name"]}
|
||||||
for m in endpoint.get("models", [])],
|
for m in endpoint.get("models", [])],
|
||||||
}
|
}
|
||||||
@@ -1399,6 +1403,10 @@ class EditEndpointDialog(Gtk.Dialog):
|
|||||||
self._entry_key.set_visibility(False)
|
self._entry_key.set_visibility(False)
|
||||||
add_row(4, "API Key:", self._entry_key)
|
add_row(4, "API Key:", self._entry_key)
|
||||||
|
|
||||||
|
self._entry_cc_ver = Gtk.Entry(text=self._data.get("cc_version", ""))
|
||||||
|
self._entry_cc_ver.set_placeholder_text("e.g. 0.26.8 (Command Code only)")
|
||||||
|
add_row(5, "CC Version:", self._entry_cc_ver)
|
||||||
|
|
||||||
# Models
|
# Models
|
||||||
mlbl = Gtk.Label(label="Models:", xalign=0)
|
mlbl = Gtk.Label(label="Models:", xalign=0)
|
||||||
area.pack_start(mlbl, False, False, 4)
|
area.pack_start(mlbl, False, False, 4)
|
||||||
@@ -1492,6 +1500,9 @@ class EditEndpointDialog(Gtk.Dialog):
|
|||||||
self._entry_url.set_text(preset.get("base_url", ""))
|
self._entry_url.set_text(preset.get("base_url", ""))
|
||||||
if not self._entry_key.get_text().strip():
|
if not self._entry_key.get_text().strip():
|
||||||
self._entry_key.set_text("")
|
self._entry_key.set_text("")
|
||||||
|
cc_ver = preset.get("cc_version", "")
|
||||||
|
if cc_ver and not self._entry_cc_ver.get_text().strip():
|
||||||
|
self._entry_cc_ver.set_text(cc_ver)
|
||||||
if preset.get("models") and len(self._model_store) == 0:
|
if preset.get("models") and len(self._model_store) == 0:
|
||||||
for mid in preset["models"]:
|
for mid in preset["models"]:
|
||||||
self._model_store.append([mid])
|
self._model_store.append([mid])
|
||||||
@@ -1594,6 +1605,9 @@ class EditEndpointDialog(Gtk.Dialog):
|
|||||||
new_ep = {"name": name, "backend_type": bt, "base_url": url,
|
new_ep = {"name": name, "backend_type": bt, "base_url": url,
|
||||||
"api_key": key, "default_model": default, "models": models,
|
"api_key": key, "default_model": default, "models": models,
|
||||||
"provider_preset": self._combo_preset.get_active_text() or "Custom"}
|
"provider_preset": self._combo_preset.get_active_text() or "Custom"}
|
||||||
|
cc_ver = self._entry_cc_ver.get_text().strip()
|
||||||
|
if cc_ver:
|
||||||
|
new_ep["cc_version"] = cc_ver
|
||||||
new_ep["base_url"] = normalize_base_url(new_ep["base_url"])
|
new_ep["base_url"] = normalize_base_url(new_ep["base_url"])
|
||||||
|
|
||||||
# Update or append
|
# Update or append
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ BACKEND = CONFIG["backend_type"]
|
|||||||
TARGET_URL = CONFIG["target_url"].rstrip("/")
|
TARGET_URL = CONFIG["target_url"].rstrip("/")
|
||||||
API_KEY = CONFIG["api_key"]
|
API_KEY = CONFIG["api_key"]
|
||||||
MODELS = CONFIG["models"]
|
MODELS = CONFIG["models"]
|
||||||
|
CC_VERSION = CONFIG.get("cc_version", "")
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════
|
||||||
# Shared helpers
|
# Shared helpers
|
||||||
@@ -745,6 +746,7 @@ class Handler(http.server.BaseHTTPRequestHandler):
|
|||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
"Authorization": f"Bearer {API_KEY}",
|
"Authorization": f"Bearer {API_KEY}",
|
||||||
"Accept": "text/event-stream, application/json",
|
"Accept": "text/event-stream, application/json",
|
||||||
|
"x-command-code-version": CC_VERSION or "0.26.8",
|
||||||
}, browser_ua=True)
|
}, browser_ua=True)
|
||||||
print(f"[translate-proxy] POST {target} model={model} stream={stream} [command-code]", file=sys.stderr)
|
print(f"[translate-proxy] POST {target} model={model} stream={stream} [command-code]", file=sys.stderr)
|
||||||
req = urllib.request.Request(
|
req = urllib.request.Request(
|
||||||
|
|||||||
Reference in New Issue
Block a user