wormclaude 1.0.179 → 1.0.181

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
@@ -916,6 +916,7 @@ function App() {
916
916
  setThinking(false);
917
917
  setPhase(toolCalls.length > 1 ? t('phase.toolsMulti', toolCalls.length) : t('phase.toolRun', toolCalls[0].name));
918
918
  const results = await executeToolCalls(toolCalls, {
919
+ signal: ac.signal, // Esc → çalışan aracı (tarama) durdur
919
920
  onResult: (c, _i, res) => {
920
921
  if ((c.name === 'WebSearch' || c.name === 'WebFetch') && res.ok)
921
922
  usedWeb = true;
@@ -951,6 +952,12 @@ function App() {
951
952
  role: 'tool', tool_call_id: toolCalls[i].id, content: _capOut(toolCalls[i].name, results[i].output),
952
953
  }];
953
954
  }
955
+ // Esc ile durdurulduysa: turu burada bitir (sonraki LLM çağrısına gitme).
956
+ if (ac.signal.aborted) {
957
+ push({ kind: 'note', text: t('note.interrupted') });
958
+ done = true;
959
+ break;
960
+ }
954
961
  // Araç-grubu özeti (2+ araçta tek satır etiket)
955
962
  if (toolCalls.length >= 2) {
956
963
  const sum = await summarizeTools(toolCalls.map((t, i) => ({ name: t.name, args: results[i].args })), config);
@@ -238,7 +238,11 @@ function extractTopLevelJsonObjects(text) {
238
238
  // tara(?!f) → "taraf/tarafından" YANLIŞ yakalanmaz; "keşif" (isim) + "keşf" (keşfet fiili) ayrı.
239
239
  const _SCAN_NOUN_RE = /\b(?:recon|keşif|keşf|kesif|tar[aı](?!f)|scan|securityscan|zafiyet|enjeksiyon|injection|sqli|xss)/i;
240
240
  const _SCAN_ACT_RE = /(başl|basl|çalıştır|calistir|gerçekleştir|gerceklestir|kullan|aca[gğ]|ece[gğ]|acak|ecek|[ıiuü]yor|start|run\b|launch|initiat|perform)/i;
241
- function _scanIntent(s) { return _SCAN_NOUN_RE.test(s) && _SCAN_ACT_RE.test(s); }
241
+ // Tamamlanmış tarama ÖZETİ imzaları (geçmiş-zaman tamamlama + sonuç yapısı). Bir SONUÇ anlatımı,
242
+ // YENİ tarama NİYETİ değil → 6.5 narrasyon-sentezi tetiklenmemeli (yoksa modelin her özeti yeni
243
+ // taramaya dönüp SONSUZ DÖNGÜ olur: full→özet→"xss gerçekleştirdi"→xss→özet→…).
244
+ const _SCAN_RESULT_RE = /(gerçekleştir(di|ildi)|gerceklestir(di|ildi)|tamamlandı|tamamlandi|yapıldı|yapildi|tespit edildi|bulundu|##\s|alt alan ad|subdomain|parametreli\s*\(?get)/i;
245
+ function _scanIntent(s) { return _SCAN_NOUN_RE.test(s) && _SCAN_ACT_RE.test(s) && !_SCAN_RESULT_RE.test(s); }
242
246
  export function recoverInlineToolCalls(text, opts) {
243
247
  const t = (text || '').trim();
244
248
  const scanTarget = (opts?.scanTarget || '').trim();
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.179';
19
+ export const VERSION = '1.0.181';
package/dist/tools.js CHANGED
@@ -750,6 +750,10 @@ async function execOne(call, hooks) {
750
750
  const all = [];
751
751
  let rpt = `Tam kapsamlı tarama — ${target}\n`;
752
752
  for (const _t of ['recon', 'xss', 'sqli']) {
753
+ if (hooks?.signal?.aborted) {
754
+ rpt += `\n[STOPPED] kullanıcı durdurdu (Esc) — kalan taramalar atlandı.`;
755
+ break;
756
+ }
753
757
  try {
754
758
  const o = await runPentest(cfg(), _t, target, true, () => { });
755
759
  if (o?.ok) {
@@ -860,6 +864,10 @@ export async function executeToolCalls(calls, hooks) {
860
864
  const worker = async () => {
861
865
  while (p < b.items.length) {
862
866
  const { c, i } = b.items[p++];
867
+ if (hooks?.signal?.aborted) {
868
+ results[i] = { ok: false, output: '[STOPPED] kullanıcı durdurdu (Esc).', args: {} };
869
+ continue;
870
+ }
863
871
  hooks?.onStart?.(c, i);
864
872
  const _t = Date.now();
865
873
  results[i] = await execOne(c, hooks);
@@ -871,6 +879,10 @@ export async function executeToolCalls(calls, hooks) {
871
879
  }
872
880
  else {
873
881
  for (const { c, i } of b.items) {
882
+ if (hooks?.signal?.aborted) {
883
+ results[i] = { ok: false, output: '[STOPPED] kullanıcı durdurdu (Esc).', args: {} };
884
+ continue;
885
+ }
874
886
  hooks?.onStart?.(c, i);
875
887
  const _t = Date.now();
876
888
  results[i] = await execOne(c, hooks);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wormclaude",
3
- "version": "1.0.179",
3
+ "version": "1.0.181",
4
4
  "description": "WormClaude CLI - uncensored security+code assistant (ink TUI, Claude-style)",
5
5
  "type": "module",
6
6
  "bin": {