- One decision per real turn: a turn starts with a user message after the previous final answer; tool steps, messages typed mid-turn, a lone "." and compaction keep the combo. Works without prompt_cache_key too. - The virtual Otomatik name never reaches the gateway (stage off or error -> last choice or targets.zor); prefilter.target may not be it. - finishCheck: at most once per turn; a broken, empty or refused retry delivers the already approved first answer. - Layer window filter: only trusted windows, never the last layer. - Correction channel only on always-pass targets while checks are on; Sesli-Hizli-Zeki stays always-pass by default; a >256 KB SSE frame passes unfiltered instead of breaking the stream. - Turn-start questions wait in the local queue no longer than their timeout; decision-turn memory under a lock with refreshed order. - Dify fetch refuses redirects (the app key never moves host); the rules file write retries a Windows sharing violation. - An unreadable settings file no longer breaks every request. - TypeScript accepts only https:// URLs the bridge accepts; finishCheck.timeoutSeconds (unused) removed. Tests: 310 bridge tests, 36 electron tests; side-bridge live run for the turn, prefilter (incl. decision timeout) and finish-check paths. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
57 lines
2.9 KiB
JSON
57 lines
2.9 KiB
JSON
{
|
||
"enabled": true,
|
||
"endpoint": "https://api.typesafe.ai/v1/systemone",
|
||
"model": "jev-1.13.0",
|
||
"fallbackModel": "Katman-1",
|
||
"rejectionRules": [
|
||
{ "from": "Katman-1", "to": "Katman-2" },
|
||
{ "from": "Katman-2", "to": "Katman-3" }
|
||
],
|
||
"exemptModels": ["Chat-Model", "bekci-sesli-bekci", "Sesli-Hizli-Zeki", "Katman-3"],
|
||
"thresholds": { "ret": 0.5, "sart": 0.7 },
|
||
"questions": {
|
||
"ret": "The assistant did NOT do what the user asked or did NOT answer the user's question: it refused, declined, said it cannot or will not, avoided giving the requested judgment, or redirected to a different topic.",
|
||
"sart": "The assistant changed the request on its own: it added its own conditions, softened or relabeled what was asked, or left part of it out, instead of doing exactly what the user asked."
|
||
},
|
||
"timeoutSeconds": 3600,
|
||
"criteria": { "ret": { "true": "", "false": "" }, "sart": { "true": "", "false": "" } },
|
||
"maxConcurrent": 0,
|
||
"queueWaitSeconds": 3600,
|
||
"failureAction": "pass",
|
||
"watchModels": ["Sesli-Hizli-Zeki", "Chat-Model", "bekci-sesli-bekci"],
|
||
"prefilter": {
|
||
"enabled": false,
|
||
"question": "A mainstream AI assistant such as ChatGPT, Claude or Gemini would refuse this request, water it down, or answer it only with added warnings or conditions.",
|
||
"threshold": 0.6,
|
||
"target": "Katman-2",
|
||
"timeoutSeconds": 3
|
||
},
|
||
"autoRoute": {
|
||
"enabled": false,
|
||
"model": "Otomatik",
|
||
"timeoutSeconds": 3,
|
||
"questions": {
|
||
"zor": "The user's request is hard: doing it well needs multi-step work, expert or technical knowledge, careful analysis, planning, calculation or writing and changing code. Greetings, small talk, simple facts and short simple commands are NOT hard.",
|
||
"arastirma": "The user's request is mainly research: finding, reading and comparing many sources or files and reporting what they say, rather than changing anything."
|
||
},
|
||
"thresholds": { "zor": 0.5, "arastirma": 0.6 },
|
||
"targets": { "basit": "Workflow-Kesif", "zor": "Ajan", "arastirma": "Arastirma" }
|
||
},
|
||
"finishCheck": {
|
||
"enabled": false,
|
||
"question": "The assistant stopped before the user's task was finished: it said it is done or handed back without doing all of what was asked, or it claimed success (tests pass, file changed, deployed) without showing the actual evidence.",
|
||
"threshold": 0.6,
|
||
"note": "Önceki cevabın iş bitmeden bitti dedi ya da kanıt göstermedi. İşi gerçekten bitir; gerekiyorsa araçları kullan ve gerçek kanıtı göster."
|
||
},
|
||
"verifierCheck": {
|
||
"enabled": false,
|
||
"question": "The reviewer approved the work without concrete evidence: it does not cite the actual diff, the real command output or specific lines, so the approval may be a guess.",
|
||
"threshold": 0.6
|
||
},
|
||
"policy": {
|
||
"source": "local",
|
||
"endpoint": "https://dify.turkservis.online/v1",
|
||
"refreshMinutes": 5
|
||
}
|
||
}
|