wormclaude 1.0.112 → 1.0.114
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 +22 -3
- package/dist/inlinetools.js +3 -2
- package/dist/theme.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -439,7 +439,11 @@ const VERBS = [
|
|
|
439
439
|
'Decrypting', 'Injecting', 'Probing', 'Assembling', 'Architecting',
|
|
440
440
|
'Generating', 'Tinkering', 'Sharpening', 'Churning', 'Pwning',
|
|
441
441
|
];
|
|
442
|
-
function
|
|
442
|
+
function fmtDur(sec) {
|
|
443
|
+
const s = Math.max(0, Math.floor(sec));
|
|
444
|
+
return s >= 60 ? `${Math.floor(s / 60)}m ${s % 60}s` : `${s}s`;
|
|
445
|
+
}
|
|
446
|
+
function WormSpinner({ label, tokens, seconds }) {
|
|
443
447
|
const [f, setF] = useState(0);
|
|
444
448
|
useEffect(() => {
|
|
445
449
|
const t = setInterval(() => setF((x) => x + 1), 120);
|
|
@@ -452,6 +456,9 @@ function WormSpinner({ label, tokens }) {
|
|
|
452
456
|
React.createElement(Text, { color: theme.grey },
|
|
453
457
|
label,
|
|
454
458
|
"\u2026"),
|
|
459
|
+
seconds ? React.createElement(Text, { color: theme.greyDim },
|
|
460
|
+
" \u00B7 ",
|
|
461
|
+
fmtDur(seconds)) : null,
|
|
455
462
|
tokens ? React.createElement(Text, { color: theme.greyDim },
|
|
456
463
|
" \u00B7 ",
|
|
457
464
|
tokens,
|
|
@@ -500,6 +507,7 @@ function App() {
|
|
|
500
507
|
const [verb, setVerb] = useState('Worming');
|
|
501
508
|
const [tokens, setTokens] = useState(0);
|
|
502
509
|
const [thinking, setThinking] = useState(true);
|
|
510
|
+
const [elapsedSec, setElapsedSec] = useState(0); // çalışırken geçen süre (spinner'da gösterilir)
|
|
503
511
|
const [ctxTokens, setCtxTokens] = useState(0);
|
|
504
512
|
const [started, setStarted] = useState(false);
|
|
505
513
|
const [trustSel, setTrustSel] = useState(0); // 0=Evet, 1=Hayir
|
|
@@ -673,6 +681,17 @@ function App() {
|
|
|
673
681
|
}
|
|
674
682
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
675
683
|
}, [started]);
|
|
684
|
+
// Çalışırken geçen süreyi say → spinner'da "Xm Ys" göster (Claude tarzı süre+token).
|
|
685
|
+
useEffect(() => {
|
|
686
|
+
if (!busy) {
|
|
687
|
+
setElapsedSec(0);
|
|
688
|
+
return;
|
|
689
|
+
}
|
|
690
|
+
const start = Date.now();
|
|
691
|
+
setElapsedSec(0);
|
|
692
|
+
const id = setInterval(() => setElapsedSec(Math.floor((Date.now() - start) / 1000)), 1000);
|
|
693
|
+
return () => clearInterval(id);
|
|
694
|
+
}, [busy]);
|
|
676
695
|
const push = (it) => setItems((prev) => [...prev, it]);
|
|
677
696
|
// Arka plan görevlerini izle → footer pill
|
|
678
697
|
useEffect(() => {
|
|
@@ -1238,8 +1257,8 @@ function App() {
|
|
|
1238
1257
|
ask.options.length,
|
|
1239
1258
|
" se\u00E7 \u00B7 Enter onayla"))) : null,
|
|
1240
1259
|
busy && !perm && !ask ? (thinking
|
|
1241
|
-
? React.createElement(WormSpinner, { label: verb, tokens: tokens })
|
|
1242
|
-
: React.createElement(WormSpinner, { label: phase })) : null,
|
|
1260
|
+
? React.createElement(WormSpinner, { label: verb, tokens: tokens, seconds: elapsedSec })
|
|
1261
|
+
: React.createElement(WormSpinner, { label: phase, seconds: elapsedSec })) : null,
|
|
1243
1262
|
taskPill ? (React.createElement(Box, { paddingX: 1 },
|
|
1244
1263
|
React.createElement(Text, { color: theme.greyDim }, taskPill))) : null,
|
|
1245
1264
|
(React.createElement(Box, { flexDirection: "column" },
|
package/dist/inlinetools.js
CHANGED
|
@@ -132,8 +132,9 @@ export function recoverInlineToolCalls(text) {
|
|
|
132
132
|
export function stripInlineToolCalls(text) {
|
|
133
133
|
let s = text || '';
|
|
134
134
|
s = s.replace(/<tool_call>[\s\S]*?<\/tool_call>/gi, '');
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
// Fence içeriğini GENEL yakala (iç içe {…} olabilir → \{…\} non-greedy nested'i kaçırıyordu).
|
|
136
|
+
s = s.replace(/```(?:json|tool_call|tool|function)?\s*([\s\S]*?)```/gi, (blk, inner) => {
|
|
137
|
+
return /"(name|tool|function)"/.test(inner) ? '' : blk; // yalnız çağrı-bloklarını sil
|
|
137
138
|
});
|
|
138
139
|
// Sarmasız üst-düzey JSON çağrı nesnelerini sil (tek veya çoklu).
|
|
139
140
|
for (const frag of extractTopLevelJsonObjects(s)) {
|
package/dist/theme.js
CHANGED