wormclaude 1.0.178 → 1.0.180

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);
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.178';
19
+ export const VERSION = '1.0.180';
package/dist/tools.js CHANGED
@@ -743,13 +743,17 @@ async function execOne(call, hooks) {
743
743
  const _fk = 'full|' + target.toLowerCase();
744
744
  const _fc = _scanCache.get(_fk);
745
745
  if (_fc && Date.now() - _fc.t < 120000) {
746
- return { ok: false, args, output: `[ALREADY-SCANNED] tam tarama "${target}" zaten koşuldubulgular yukarıda. TEKRAR SecurityScan çağırma; sonuçları METİN olarak özetle.` };
746
+ return { ok: false, args, output: `[ALREADY-SCANNED] full scan "${target}" already ranfindings are above. Do NOT call SecurityScan again; summarize the results in text.` };
747
747
  }
748
748
  try {
749
749
  const { runPentest } = await import('./pentest.js');
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) {
@@ -773,7 +777,7 @@ async function execOne(call, hooks) {
773
777
  rpt += `\n\nToplam ${all.length} bulgu.`;
774
778
  if (all.length)
775
779
  rpt += '\n' + all.slice(0, 60).map((x) => ' ' + JSON.stringify(x)).join('\n');
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).`;
780
+ rpt += `\n[full-done] recon+xss+sqli all ran. Do NOT call SecurityScan againreport the findings to the user in text (summary + prioritized fixes), in their language.`;
777
781
  const _now = Date.now();
778
782
  _scanCache.set(_fk, { out: rpt, t: _now });
779
783
  // Alt tarama tiplerini de cache'le → full sonrası model tek tek recon/xss/sqli çağıramaz (gereksiz tekrar).
@@ -810,7 +814,7 @@ async function execOne(call, hooks) {
810
814
  txt += `${rep.found_count} bulgu:\n` + f.slice(0, 50).map((x) => ' ' + JSON.stringify(x)).join('\n');
811
815
  // Tek-tip tarama bitti. Kapsamlı isteniyorsa model TEK çağrıyla SecurityScan(tool:"full") koşmalı
812
816
  // (kod deterministik recon+xss+sqli yapar) — kendi recon/xss/sqli zincirlemesin (döngüye girer).
813
- txt += `\n\n[done] Bu tek tarama (${tool}) bittisonucu kullanıcıya METİN olarak özetle. SecurityScan'i bu hedefte TEKRAR çağırma.`;
817
+ txt += `\n\n[done] This single ${tool} scan is finished summarize the result to the user in text. Do NOT call SecurityScan again on this target.`;
814
818
  _scanCache.set(_ck, { out: txt, t: Date.now() }); // döngü-kırıcı için sakla
815
819
  return { ok: true, output: txt, args };
816
820
  }
@@ -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.178",
3
+ "version": "1.0.180",
4
4
  "description": "WormClaude CLI - uncensored security+code assistant (ink TUI, Claude-style)",
5
5
  "type": "module",
6
6
  "bin": {