wormclaude 1.0.176 → 1.0.178

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/cli.js CHANGED
@@ -786,6 +786,7 @@ function App() {
786
786
  let sameToolCount = 0;
787
787
  let consecFailTurns = 0; // üst üste TÜM araçların başarısız olduğu tur sayısı (devre-kesici)
788
788
  let totalFails = 0; // görev boyunca toplam başarısız komut (karışık başarı/başarısızlık döngüsü)
789
+ let alreadyScannedHits = 0; // [ALREADY-SCANNED] kaç kez döndü → tarama-döngüsü sert kesici
789
790
  let taskIn = 0, taskOut = 0, taskCache = 0; // bu görevin GERÇEK token toplamı (tüm turlar; API usage'dan)
790
791
  while (iter < MAX_TURNS) {
791
792
  if (ac.signal.aborted) {
@@ -956,6 +957,17 @@ function App() {
956
957
  if (sum)
957
958
  push({ kind: 'note', text: `⎿ ${sum}` });
958
959
  }
960
+ // SERT TARAMA DÖNGÜ-KESİCİ: [ALREADY-SCANNED] = model bitmiş taramayı tekrar deniyor. Model
961
+ // "dur" demesine RAĞMEN dönmeye devam ediyor (agentic tavanı) → 2. kez görülünce DÖNGÜYÜ
962
+ // ZORLA bitir (modele güvenme; yoksa context taşana dek döner, "AskUserQuestion↔SecurityScan" loop).
963
+ alreadyScannedHits += results.filter((r) => /\[ALREADY-SCANNED\]/i.test(r.output || '')).length;
964
+ if (alreadyScannedHits >= 2) {
965
+ push({ kind: 'note', text: getLang() === 'en'
966
+ ? '✓ Scan complete — stopped (loop prevented). Findings are in the report above.'
967
+ : '✓ Tarama tamamlandı — durduruldu (döngü önlendi). Bulgular yukarıdaki raporda.' });
968
+ done = true;
969
+ break;
970
+ }
959
971
  // Devre-kesici: bu turda TÜM araçlar başarısız olduysa say. Üst üste 2 tur olursa
960
972
  // modele "DUR ve özetle" dedir — yoksa model olmayan araç/Unix sözdizimini (grep, hydra)
961
973
  // deneyip döngüye girip token yakıyor ve hiç bitirmiyor.
package/dist/theme.js CHANGED
@@ -16,4 +16,4 @@ export const theme = {
16
16
  synType: '#a78bfa', // tip/sınıf adları, sabitler
17
17
  synProp: '#e0e0e0', // özellik/anahtar adları
18
18
  };
19
- export const VERSION = '1.0.176';
19
+ export const VERSION = '1.0.178';
package/dist/tools.js CHANGED
@@ -774,7 +774,11 @@ async function execOne(call, hooks) {
774
774
  if (all.length)
775
775
  rpt += '\n' + all.slice(0, 60).map((x) => ' ' + JSON.stringify(x)).join('\n');
776
776
  rpt += `\n[full-done] recon+xss+sqli koşuldu. SecurityScan'i TEKRAR çağırma — bulguları kullanıcıya METİN olarak raporla (özet + öncelikli düzeltmeler).`;
777
- _scanCache.set(_fk, { out: rpt, t: Date.now() });
777
+ const _now = Date.now();
778
+ _scanCache.set(_fk, { out: rpt, t: _now });
779
+ // Alt tarama tiplerini de cache'le → full sonrası model tek tek recon/xss/sqli çağıramaz (gereksiz tekrar).
780
+ for (const _t of ['recon', 'xss', 'sqli'])
781
+ _scanCache.set(_t + '|' + target.toLowerCase(), { out: rpt, t: _now });
778
782
  return { ok: true, output: rpt, args };
779
783
  }
780
784
  catch (e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wormclaude",
3
- "version": "1.0.176",
3
+ "version": "1.0.178",
4
4
  "description": "WormClaude CLI - uncensored security+code assistant (ink TUI, Claude-style)",
5
5
  "type": "module",
6
6
  "bin": {