Preserve native Codex history and add configurable cross-model compression
Server CI and Windows package / verify (push) Successful in 4m47s
Server CI and Windows package / windows-package (push) Successful in 8m47s

Separate encrypted reasoning from actual compaction, stop migration after native return, and retain full history and recent exchanges. Add typed settings, Gemini fallback, verified provider windows, bounded summaries and durable concurrent checkpoints.

Validation: 245 bridge tests plus focused concurrency tests; 71 settings/connection tests; 66 supplementary tests; TypeScript checks; renderer and Electron bundles; real primary/native/fallback summary probes and 700K input acceptance.
This commit is contained in:
yilsem committed 2026-10-13 03:36:42 +03:00
1 parent 1c6e3656b8
commit 91ecad8e5c
27 files changed
+1119 -117

No files matched your search

+28 -8
View File
@@ -356,6 +356,8 @@ class H(http.server.BaseHTTPRequestHandler):
self.send_header("Transfer-Encoding", "chunked")
self.end_headers()
toplam = 0
event_tail = b""
completed = False
try:
while True:
try:
@@ -368,6 +370,16 @@ class H(http.server.BaseHTTPRequestHandler):
if not parca:
break
toplam += len(parca)
if getattr(self, "_native_return_scope", None):
event_tail += parca
while b"\n" in event_tail:
line, event_tail = event_tail.split(b"\n", 1)
if line.startswith(b"data:"):
try:
event = json.loads(line[5:])
completed = completed or event.get("type") == "response.completed"
except (ValueError, AttributeError):
pass
self.wfile.write(b"%x\r\n" % len(parca) + parca + b"\r\n")
self.wfile.flush()
self.wfile.write(b"0\r\n\r\n")
@@ -378,6 +390,8 @@ class H(http.server.BaseHTTPRequestHandler):
return True
if not sessiz:
log(f"{tag} bitti status={durum} {toplam} bayt")
if completed and getattr(self, "_native_return_scope", None):
remember_transfer(*self._native_return_scope)
return True
def _transfer_begin(self):
@@ -438,6 +452,7 @@ class H(http.server.BaseHTTPRequestHandler):
return result["value"], started
def _isle(self):
self._native_return_scope = None
with kilit:
sira[0] += 1
n = sira[0]
@@ -467,9 +482,9 @@ class H(http.server.BaseHTTPRequestHandler):
thread = str(req.get("prompt_cache_key") or "")
scope = hashlib.sha256((str(self.headers.get("chatgpt-account-id") or "") + "|" + thread).encode()).hexdigest()
source = TRANSFERS.get(scope) if thread else None
mixed = bool(source) or gecis_context.foreign(req)
if external and thread:
remember_transfer(scope, model)
# A completed return to the subscription ends migration. Historical
# foreign IDs must not keep later native turns in the preparer.
mixed = ek_model_mu(source or "") or (source is None and gecis_context.foreign(req))
if external or mixed:
try:
normalized = gecis_context.normalize(req)
@@ -481,13 +496,14 @@ class H(http.server.BaseHTTPRequestHandler):
prepared, started = self._prepare(normalized, source)
if prepared is None:
return
if "compaction" in prepared:
if "compaction" in prepared or "compaction_items" in prepared:
if not started:
self._transfer_begin()
item = prepared["compaction"]
for event in ({"type": "response.output_item.done", "output_index": 0, "item": item},
{"type": "response.completed", "response": {"id": "resp_aiturk_compact", "object": "response",
"status": "completed", "output": [item]}}):
items = prepared.get("compaction_items") or [prepared["compaction"]]
events = [{"type": "response.output_item.done", "output_index": index, "item": item} for index, item in enumerate(items)]
events.append({"type": "response.completed", "response": {"id": "resp_aiturk_compact", "object": "response",
"status": "completed", "output": items}})
for event in events:
self._transfer_chunk(b"event: " + event["type"].encode() + b"\ndata: " + json.dumps(event, ensure_ascii=False).encode() + b"\n\n")
self.wfile.write(b"0\r\n\r\n")
self.wfile.flush()
@@ -497,8 +513,12 @@ class H(http.server.BaseHTTPRequestHandler):
started = False
changed = normalized != req
body = json.dumps(normalized, ensure_ascii=False).encode() if changed else govde
if external and thread:
remember_transfer(scope, model)
self._native_return_scope = (scope, model) if thread and not external else None
return self._ilet(n, KOPRU if external else CHATGPT, yol, body,
f"{'KOPRU' if external else 'OZGUN'} {model}", rewritten=changed, started=started)
self._native_return_scope = (scope, model) if thread else None
return self._ilet(n, CHATGPT, yol, govde, f"OZGUN {model or '?'}")
if self.command == "GET" and "/models" in yol:
# Ek modeller listede gorunsun diye liste koprüden istenir; kopru cevap vermezse chatgpt.com'un listesi.