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 +7 -0
- package/dist/inlinetools.js +5 -1
- package/dist/theme.js +1 -1
- package/dist/tools.js +12 -0
- package/package.json +1 -1
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/inlinetools.js
CHANGED
|
@@ -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
|
-
|
|
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
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);
|