wormclaude 1.0.102 → 1.0.104

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.
@@ -73,7 +73,8 @@ function extractTopLevelJsonObjects(text) {
73
73
  * (<tool_call>, ```json) veya mesajın TAMAMI tek JSON çağrısıysa onu alır. */
74
74
  export function recoverInlineToolCalls(text) {
75
75
  const t = (text || '').trim();
76
- if (!t || (!t.includes('"name"') && !t.includes('"tool"') && !t.includes('"function"')))
76
+ // JSON-temelli çağrı yoksa VE prose-AskUserQuestion da yoksa erken çık.
77
+ if (!t || (!t.includes('"name"') && !t.includes('"tool"') && !t.includes('"function"') && !/AskUserQuestion/i.test(t)))
77
78
  return [];
78
79
  const out = [];
79
80
  const seen = new Set();
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.102';
19
+ export const VERSION = '1.0.104';
package/dist/tools.js CHANGED
@@ -587,11 +587,19 @@ const computerToolSchemas = [
587
587
  { type: 'function', function: { name: 'Key', description: 'Ozel tus / kombinasyon gonderir. Orn: "Enter", "Tab", "Ctrl+C", "Alt+F4".', parameters: { type: 'object', properties: { keys: { type: 'string' } }, required: ['keys'] } } },
588
588
  { type: 'function', function: { name: 'Scroll', description: 'Fare tekerlegiyle kaydirir.', parameters: { type: 'object', properties: { direction: { type: 'string', enum: ['up', 'down'] }, amount: { type: 'number', description: 'Varsayilan 3' } }, required: ['direction'] } } },
589
589
  ];
590
+ // Yerel 32B model çok sayıda + orchestration aracıyla (Skill/Agent/PlanMode/TodoWrite)
591
+ // karşılaşınca araç çağrısı yerine "plan"ı DÜZ-METİN döküyor (saçma çıktı + donma).
592
+ // Bu yüzden modele YALNIZ sade, build+güvenlik çekirdeğini veriyoruz → araçları gerçekten
593
+ // çağırıp işi yapar, planı ekrana basmaz. (Gerekirse buraya yeni araç eklenir.)
594
+ const CORE_TOOLS = new Set([
595
+ 'Bash', 'PowerShell', 'Read', 'Write', 'Edit', 'Glob', 'Grep',
596
+ 'WebFetch', 'WebSearch', 'AskUserQuestion', 'Sleep',
597
+ ]);
590
598
  export function allToolSchemas() {
591
599
  const sk = skillToolSchema();
592
600
  const all = [...toolSchemas, ...computerToolSchemas, ...getMcpToolSchemas(), ...(sk ? [sk] : [])];
593
601
  const excluded = new Set(getExcludedTools());
594
- return excluded.size ? all.filter((t) => !excluded.has(t.function.name)) : all;
602
+ return all.filter((t) => CORE_TOOLS.has(t.function.name) && !excluded.has(t.function.name));
595
603
  }
596
604
  const TOOL_META = {
597
605
  Read: { readOnly: true, concurrencySafe: true },
@@ -1077,7 +1085,7 @@ export async function executeTool(name, args) {
1077
1085
  return { ok: true, output: `Edited ${fp}${args.replace_all ? ` (${count} occurrences)` : ''}${diffStat(_ebefore, c)}` };
1078
1086
  }
1079
1087
  if (name === 'Glob') {
1080
- const base = args.path || process.cwd();
1088
+ const base = args.path ? resolveWs(args.path) : getBashCwd();
1081
1089
  const all = [];
1082
1090
  walk(base, all);
1083
1091
  const rx = globToRegex(args.pattern);
@@ -1097,7 +1105,7 @@ export async function executeTool(name, args) {
1097
1105
  return { ok: true, output: shown.join('\n') + (truncated ? '\n(results truncated to 100 files)' : '') };
1098
1106
  }
1099
1107
  if (name === 'Grep') {
1100
- const base = args.path && fs.existsSync(args.path) ? args.path : process.cwd();
1108
+ const base = args.path && fs.existsSync(resolveWs(args.path)) ? resolveWs(args.path) : getBashCwd();
1101
1109
  const mode = args.output_mode || 'files_with_matches';
1102
1110
  const flags = (args['-i'] ? 'i' : '') + (args.multiline ? 's' : '');
1103
1111
  let rx;
@@ -1352,7 +1360,7 @@ export async function executeTool(name, args) {
1352
1360
  }
1353
1361
  }
1354
1362
  if (name === 'LSP') {
1355
- const base = args.path && fs.existsSync(args.path) ? args.path : process.cwd();
1363
+ const base = args.path && fs.existsSync(resolveWs(args.path)) ? resolveWs(args.path) : getBashCwd();
1356
1364
  const sym = String(args.symbol);
1357
1365
  const esc = sym.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
1358
1366
  const defRe = new RegExp(`\\b(function|class|def|const|let|var|interface|type|enum|struct|fn|func)\\s+${esc}\\b`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wormclaude",
3
- "version": "1.0.102",
3
+ "version": "1.0.104",
4
4
  "description": "WormClaude CLI - uncensored security+code assistant (ink TUI, Claude-style)",
5
5
  "type": "module",
6
6
  "bin": {