@visorcraft/idlehands 2.3.4 → 3.0.0
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/agent/exec-helpers.js +57 -0
- package/dist/agent/exec-helpers.js.map +1 -1
- package/dist/agent/file-prefetch.js +196 -0
- package/dist/agent/file-prefetch.js.map +1 -0
- package/dist/agent/index.js +54 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/predictive-compaction.js +139 -0
- package/dist/agent/predictive-compaction.js.map +1 -0
- package/dist/agent/query-classifier-fast.js +174 -0
- package/dist/agent/query-classifier-fast.js.map +1 -0
- package/dist/agent/read-ahead-buffer.js +260 -0
- package/dist/agent/read-ahead-buffer.js.map +1 -0
- package/dist/agent/response-cache.js +23 -4
- package/dist/agent/response-cache.js.map +1 -1
- package/dist/agent/schema-optimizer.js +228 -0
- package/dist/agent/schema-optimizer.js.map +1 -0
- package/dist/agent/tool-loop-guard.js +10 -4
- package/dist/agent/tool-loop-guard.js.map +1 -1
- package/dist/agent.js +47 -6
- package/dist/agent.js.map +1 -1
- package/dist/bot/discord.js +5 -5
- package/dist/bot/discord.js.map +1 -1
- package/dist/bot/runtime-model-picker.js +4 -0
- package/dist/bot/runtime-model-picker.js.map +1 -1
- package/dist/bot/session-manager.js +6 -6
- package/dist/bot/session-manager.js.map +1 -1
- package/dist/client.js +15 -0
- package/dist/client.js.map +1 -1
- package/dist/runtime/store.js +10 -0
- package/dist/runtime/store.js.map +1 -1
- package/dist/tui/controller.js +2 -0
- package/dist/tui/controller.js.map +1 -1
- package/dist/upgrade.js +3 -3
- package/dist/upgrade.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Schema Optimizer
|
|
3
|
+
*
|
|
4
|
+
* Provides additional schema optimization beyond the basic caching:
|
|
5
|
+
* - Description truncation for token savings
|
|
6
|
+
* - Lazy tool loading based on context
|
|
7
|
+
* - Schema deduplication across sessions
|
|
8
|
+
* - Dynamic slim mode based on turn context
|
|
9
|
+
*/
|
|
10
|
+
import crypto from 'node:crypto';
|
|
11
|
+
/**
|
|
12
|
+
* Hash a schema for deduplication.
|
|
13
|
+
*/
|
|
14
|
+
function hashSchema(schema) {
|
|
15
|
+
const content = JSON.stringify(schema);
|
|
16
|
+
return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Estimate token count for a schema (rough approximation).
|
|
20
|
+
*/
|
|
21
|
+
function estimateSchemaTokens(schema) {
|
|
22
|
+
const json = JSON.stringify(schema);
|
|
23
|
+
// Rough estimate: ~4 chars per token for JSON
|
|
24
|
+
return Math.ceil(json.length / 4);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Truncate a description string, preserving the first sentence.
|
|
28
|
+
*/
|
|
29
|
+
function truncateDescription(desc, maxLen) {
|
|
30
|
+
if (!desc || desc.length <= maxLen)
|
|
31
|
+
return desc;
|
|
32
|
+
// Try to end at a sentence boundary
|
|
33
|
+
const firstSentence = desc.match(/^[^.!?]+[.!?]/)?.[0];
|
|
34
|
+
if (firstSentence && firstSentence.length <= maxLen) {
|
|
35
|
+
return firstSentence;
|
|
36
|
+
}
|
|
37
|
+
// Otherwise truncate at word boundary
|
|
38
|
+
const truncated = desc.slice(0, maxLen);
|
|
39
|
+
const lastSpace = truncated.lastIndexOf(' ');
|
|
40
|
+
if (lastSpace > maxLen * 0.7) {
|
|
41
|
+
return truncated.slice(0, lastSpace) + '...';
|
|
42
|
+
}
|
|
43
|
+
return truncated + '...';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create a slim version of a tool schema for token efficiency.
|
|
47
|
+
*/
|
|
48
|
+
export function slimSchema(schema, opts) {
|
|
49
|
+
const options = {
|
|
50
|
+
truncateDescriptions: opts?.truncateDescriptions ?? true,
|
|
51
|
+
maxDescriptionLength: opts?.maxDescriptionLength ?? 100,
|
|
52
|
+
removeExamples: opts?.removeExamples ?? true,
|
|
53
|
+
removeOptionalParams: opts?.removeOptionalParams ?? false,
|
|
54
|
+
contextAware: opts?.contextAware ?? false,
|
|
55
|
+
};
|
|
56
|
+
const slim = {
|
|
57
|
+
type: schema.type,
|
|
58
|
+
function: {
|
|
59
|
+
name: schema.function.name,
|
|
60
|
+
description: schema.function.description,
|
|
61
|
+
parameters: JSON.parse(JSON.stringify(schema.function.parameters)),
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
// Truncate function description
|
|
65
|
+
if (options.truncateDescriptions && slim.function.description) {
|
|
66
|
+
let desc = slim.function.description;
|
|
67
|
+
// Remove examples (text after "Example:" or "Examples:")
|
|
68
|
+
if (options.removeExamples) {
|
|
69
|
+
desc = desc.replace(/\s*Examples?:[\s\S]*$/i, '');
|
|
70
|
+
}
|
|
71
|
+
slim.function.description = truncateDescription(desc, options.maxDescriptionLength);
|
|
72
|
+
}
|
|
73
|
+
// Truncate parameter descriptions
|
|
74
|
+
if (options.truncateDescriptions && slim.function.parameters?.properties) {
|
|
75
|
+
for (const [key, prop] of Object.entries(slim.function.parameters.properties)) {
|
|
76
|
+
if (typeof prop === 'object' && prop !== null && 'description' in prop) {
|
|
77
|
+
prop.description = truncateDescription(prop.description, options.maxDescriptionLength / 2);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Remove optional parameters
|
|
82
|
+
if (options.removeOptionalParams && slim.function.parameters) {
|
|
83
|
+
const params = slim.function.parameters;
|
|
84
|
+
const required = new Set(params.required || []);
|
|
85
|
+
const properties = params.properties || {};
|
|
86
|
+
for (const key of Object.keys(properties)) {
|
|
87
|
+
if (!required.has(key)) {
|
|
88
|
+
delete properties[key];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return slim;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Tools that are essential and should never be slimmed aggressively.
|
|
96
|
+
*/
|
|
97
|
+
const ESSENTIAL_TOOLS = new Set([
|
|
98
|
+
'read_file',
|
|
99
|
+
'edit_file',
|
|
100
|
+
'write_file',
|
|
101
|
+
'exec',
|
|
102
|
+
'list_dir',
|
|
103
|
+
'search_files',
|
|
104
|
+
]);
|
|
105
|
+
/**
|
|
106
|
+
* Tools that can be deferred until explicitly needed.
|
|
107
|
+
*/
|
|
108
|
+
const DEFERRABLE_TOOLS = new Set([
|
|
109
|
+
'spawn_task',
|
|
110
|
+
'undo_file',
|
|
111
|
+
'vault_store',
|
|
112
|
+
'vault_search',
|
|
113
|
+
'vault_delete',
|
|
114
|
+
'lsp_diagnostics',
|
|
115
|
+
'lsp_hover',
|
|
116
|
+
'lsp_definition',
|
|
117
|
+
'lsp_references',
|
|
118
|
+
]);
|
|
119
|
+
/**
|
|
120
|
+
* Select tools based on context and turn history.
|
|
121
|
+
*/
|
|
122
|
+
export function selectToolsForContext(allTools, context) {
|
|
123
|
+
const { usedTools, message, firstTurn, fastLane } = context;
|
|
124
|
+
// Fast lane: minimal tool set
|
|
125
|
+
if (fastLane) {
|
|
126
|
+
return allTools.filter(t => ESSENTIAL_TOOLS.has(t.function.name) &&
|
|
127
|
+
!DEFERRABLE_TOOLS.has(t.function.name));
|
|
128
|
+
}
|
|
129
|
+
// First turn: include everything except deferrable
|
|
130
|
+
if (firstTurn) {
|
|
131
|
+
return allTools.filter(t => !DEFERRABLE_TOOLS.has(t.function.name));
|
|
132
|
+
}
|
|
133
|
+
// Message hints: include tools that might be needed
|
|
134
|
+
const includedNames = new Set();
|
|
135
|
+
// Always include essential tools
|
|
136
|
+
for (const name of ESSENTIAL_TOOLS) {
|
|
137
|
+
includedNames.add(name);
|
|
138
|
+
}
|
|
139
|
+
// Include previously used tools (likely to be used again)
|
|
140
|
+
if (usedTools) {
|
|
141
|
+
for (const name of usedTools) {
|
|
142
|
+
includedNames.add(name);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Message-based hints
|
|
146
|
+
if (message) {
|
|
147
|
+
const lower = message.toLowerCase();
|
|
148
|
+
if (lower.includes('undo') || lower.includes('revert')) {
|
|
149
|
+
includedNames.add('undo_file');
|
|
150
|
+
}
|
|
151
|
+
if (lower.includes('spawn') || lower.includes('background') || lower.includes('parallel')) {
|
|
152
|
+
includedNames.add('spawn_task');
|
|
153
|
+
}
|
|
154
|
+
if (lower.includes('vault') || lower.includes('secret') || lower.includes('credential')) {
|
|
155
|
+
includedNames.add('vault_store');
|
|
156
|
+
includedNames.add('vault_search');
|
|
157
|
+
}
|
|
158
|
+
if (lower.includes('diagnostic') || lower.includes('error') || lower.includes('lint')) {
|
|
159
|
+
includedNames.add('lsp_diagnostics');
|
|
160
|
+
}
|
|
161
|
+
if (lower.includes('definition') || lower.includes('go to')) {
|
|
162
|
+
includedNames.add('lsp_definition');
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return allTools.filter(t => includedNames.has(t.function.name));
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Optimize a list of schemas and return stats.
|
|
169
|
+
*/
|
|
170
|
+
export function optimizeSchemas(schemas, opts) {
|
|
171
|
+
const originalTokens = schemas.reduce((sum, s) => sum + estimateSchemaTokens(s), 0);
|
|
172
|
+
const optimized = schemas.map(s => slimSchema(s, opts));
|
|
173
|
+
const optimizedTokens = optimized.reduce((sum, s) => sum + estimateSchemaTokens(s), 0);
|
|
174
|
+
const savings = originalTokens - optimizedTokens;
|
|
175
|
+
return {
|
|
176
|
+
schemas: optimized,
|
|
177
|
+
stats: {
|
|
178
|
+
originalTokens,
|
|
179
|
+
optimizedTokens,
|
|
180
|
+
savings,
|
|
181
|
+
savingsPercent: originalTokens > 0 ? (savings / originalTokens) * 100 : 0,
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Schema cache with deduplication across sessions.
|
|
187
|
+
*/
|
|
188
|
+
export class SchemaCache {
|
|
189
|
+
cache = new Map();
|
|
190
|
+
hashToSchema = new Map();
|
|
191
|
+
/**
|
|
192
|
+
* Get or create an optimized schema.
|
|
193
|
+
*/
|
|
194
|
+
getOrCreate(original, opts) {
|
|
195
|
+
const key = `${original.function.name}:${JSON.stringify(opts || {})}`;
|
|
196
|
+
const cached = this.cache.get(key);
|
|
197
|
+
if (cached)
|
|
198
|
+
return cached.schema;
|
|
199
|
+
const optimized = slimSchema(original, opts);
|
|
200
|
+
const hash = hashSchema(optimized);
|
|
201
|
+
// Check if we already have this exact schema
|
|
202
|
+
const existing = this.hashToSchema.get(hash);
|
|
203
|
+
if (existing) {
|
|
204
|
+
this.cache.set(key, { schema: existing, hash });
|
|
205
|
+
return existing;
|
|
206
|
+
}
|
|
207
|
+
this.hashToSchema.set(hash, optimized);
|
|
208
|
+
this.cache.set(key, { schema: optimized, hash });
|
|
209
|
+
return optimized;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Clear the cache.
|
|
213
|
+
*/
|
|
214
|
+
clear() {
|
|
215
|
+
this.cache.clear();
|
|
216
|
+
this.hashToSchema.clear();
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Get cache stats.
|
|
220
|
+
*/
|
|
221
|
+
stats() {
|
|
222
|
+
return {
|
|
223
|
+
entries: this.cache.size,
|
|
224
|
+
uniqueSchemas: this.hashToSchema.size,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=schema-optimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-optimizer.js","sourceRoot":"","sources":["../../src/agent/schema-optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { createToolLoopState, detectToolCallLoop, getToolCallStats, hashToolCall, recordToolCall, recordToolCallOutcome, stableStringify, } from './tool-loop-detection.js';
|
|
4
|
-
import { normalizeExecCommandForSig } from './exec-helpers.js';
|
|
4
|
+
import { normalizeExecCommandForSig, normalizeTestCommandForSig } from './exec-helpers.js';
|
|
5
5
|
export class ToolLoopGuard {
|
|
6
6
|
loopState = createToolLoopState();
|
|
7
7
|
readCache = new Map();
|
|
@@ -68,10 +68,16 @@ export class ToolLoopGuard {
|
|
|
68
68
|
if (toolName === 'apply_patch' && Array.isArray(args.files)) {
|
|
69
69
|
return hashToolCall(toolName, { files: args.files }).signature;
|
|
70
70
|
}
|
|
71
|
-
// For exec calls, normalize the command
|
|
72
|
-
//
|
|
73
|
-
//
|
|
71
|
+
// For exec calls, normalize the command for loop detection.
|
|
72
|
+
// 1. Test commands: normalize to framework + filter (e.g., "php artisan test --filter=Foo")
|
|
73
|
+
// 2. General commands: strip trailing output-filter pipes (tail/head/grep)
|
|
74
74
|
if (toolName === 'exec' && typeof args.command === 'string') {
|
|
75
|
+
// Try test command normalization first (more specific)
|
|
76
|
+
const testNormalized = normalizeTestCommandForSig(args.command);
|
|
77
|
+
if (testNormalized) {
|
|
78
|
+
return hashToolCall(toolName, { command: testNormalized }).signature;
|
|
79
|
+
}
|
|
80
|
+
// Fall back to general exec normalization
|
|
75
81
|
const normalized = normalizeExecCommandForSig(args.command);
|
|
76
82
|
if (normalized !== args.command) {
|
|
77
83
|
const normalizedArgs = { ...args, command: normalized };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-loop-guard.js","sourceRoot":"","sources":["../../src/agent/tool-loop-guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-loop-guard.js","sourceRoot":"","sources":["../../src/agent/tool-loop-guard.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -534,7 +534,7 @@ export async function createSession(opts) {
|
|
|
534
534
|
console.error(`\x1b[33m Consider using a different model or updating llama.cpp.\x1b[0m`);
|
|
535
535
|
}
|
|
536
536
|
}
|
|
537
|
-
catch { }
|
|
537
|
+
catch { /* JSON parse may fail on malformed LLM output */ }
|
|
538
538
|
}
|
|
539
539
|
}
|
|
540
540
|
// Phase 9: sys-eager — inject full system snapshot into first message
|
|
@@ -1289,6 +1289,7 @@ export async function createSession(opts) {
|
|
|
1289
1289
|
let runtimeRoutingModules = null;
|
|
1290
1290
|
let runtimeRoutingUnavailable = false;
|
|
1291
1291
|
let runtimeModelIdsCache = null;
|
|
1292
|
+
let runtimeModelThinkingModeCache = null;
|
|
1292
1293
|
const loadRuntimeRoutingModules = async () => {
|
|
1293
1294
|
if (runtimeRoutingUnavailable)
|
|
1294
1295
|
return null;
|
|
@@ -1319,10 +1320,14 @@ export async function createSession(opts) {
|
|
|
1319
1320
|
try {
|
|
1320
1321
|
const runtimes = await mods.store.loadRuntimes();
|
|
1321
1322
|
runtimeModelIdsCache = new Set(runtimes.models.filter((m) => m.enabled !== false).map((m) => m.id));
|
|
1323
|
+
runtimeModelThinkingModeCache = new Map(runtimes.models
|
|
1324
|
+
.filter((m) => m.enabled !== false)
|
|
1325
|
+
.map((m) => [m.id, m.thinking_mode]));
|
|
1322
1326
|
return runtimeModelIdsCache;
|
|
1323
1327
|
}
|
|
1324
1328
|
catch {
|
|
1325
1329
|
runtimeModelIdsCache = new Set();
|
|
1330
|
+
runtimeModelThinkingModeCache = new Map();
|
|
1326
1331
|
return runtimeModelIdsCache;
|
|
1327
1332
|
}
|
|
1328
1333
|
};
|
|
@@ -1332,6 +1337,9 @@ export async function createSession(opts) {
|
|
|
1332
1337
|
throw new Error('Runtime routing is unavailable in this build/environment');
|
|
1333
1338
|
const runtimes = await mods.store.loadRuntimes();
|
|
1334
1339
|
runtimeModelIdsCache = new Set(runtimes.models.filter((m) => m.enabled !== false).map((m) => m.id));
|
|
1340
|
+
runtimeModelThinkingModeCache = new Map(runtimes.models
|
|
1341
|
+
.filter((m) => m.enabled !== false)
|
|
1342
|
+
.map((m) => [m.id, m.thinking_mode]));
|
|
1335
1343
|
const modelExists = runtimes.models.some((m) => m.enabled !== false && m.id === runtimeModelId);
|
|
1336
1344
|
if (!modelExists) {
|
|
1337
1345
|
throw new Error(`Runtime model not found or disabled: ${runtimeModelId}`);
|
|
@@ -1366,6 +1374,35 @@ export async function createSession(opts) {
|
|
|
1366
1374
|
const wireCaptureHook = () => {
|
|
1367
1375
|
attachCaptureHook(client);
|
|
1368
1376
|
};
|
|
1377
|
+
const getRuntimeModelThinkingMode = async (runtimeModelId) => {
|
|
1378
|
+
if (!runtimeModelThinkingModeCache) {
|
|
1379
|
+
await loadRuntimeModelIds();
|
|
1380
|
+
}
|
|
1381
|
+
return runtimeModelThinkingModeCache?.get(runtimeModelId);
|
|
1382
|
+
};
|
|
1383
|
+
const applyThinkingDirectiveToMessages = (input, mode) => {
|
|
1384
|
+
if (!mode || mode === 'default')
|
|
1385
|
+
return input;
|
|
1386
|
+
const directive = mode === 'no_think' ? '/no_think' : '/think';
|
|
1387
|
+
let lastUserIdx = -1;
|
|
1388
|
+
for (let i = input.length - 1; i >= 0; i--) {
|
|
1389
|
+
if (input[i]?.role === 'user') {
|
|
1390
|
+
lastUserIdx = i;
|
|
1391
|
+
break;
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
if (lastUserIdx < 0)
|
|
1395
|
+
return input;
|
|
1396
|
+
const target = input[lastUserIdx];
|
|
1397
|
+
if (!target || typeof target.content !== 'string')
|
|
1398
|
+
return input;
|
|
1399
|
+
const text = String(target.content);
|
|
1400
|
+
if (text.startsWith('/no_think') || text.startsWith('/think'))
|
|
1401
|
+
return input;
|
|
1402
|
+
const cloned = input.slice();
|
|
1403
|
+
cloned[lastUserIdx] = { ...target, content: `${directive}\n${text}` };
|
|
1404
|
+
return cloned;
|
|
1405
|
+
};
|
|
1369
1406
|
wireCaptureHook();
|
|
1370
1407
|
const replayEnabled = cfg.trifecta?.enabled !== false && cfg.trifecta?.replay?.enabled !== false;
|
|
1371
1408
|
const replay = replayEnabled ? (opts.runtime?.replay ?? new ReplayStore()) : undefined;
|
|
@@ -2476,8 +2513,12 @@ export async function createSession(opts) {
|
|
|
2476
2513
|
}
|
|
2477
2514
|
}
|
|
2478
2515
|
if (!resp) {
|
|
2516
|
+
const runtimeThinkingMode = primaryUsesRuntimeModel && primaryRoute?.model
|
|
2517
|
+
? await getRuntimeModelThinkingMode(primaryRoute.model)
|
|
2518
|
+
: undefined;
|
|
2519
|
+
const effectiveMessages = applyThinkingDirectiveToMessages(messages, runtimeThinkingMode);
|
|
2479
2520
|
const chatOptsBase = {
|
|
2480
|
-
messages,
|
|
2521
|
+
messages: effectiveMessages,
|
|
2481
2522
|
tools: toolsForTurn,
|
|
2482
2523
|
tool_choice: toolChoiceForTurn,
|
|
2483
2524
|
temperature,
|
|
@@ -2840,7 +2881,7 @@ export async function createSession(opts) {
|
|
|
2840
2881
|
try {
|
|
2841
2882
|
argCount = Object.keys(parseJsonArgs(argStr)).length;
|
|
2842
2883
|
}
|
|
2843
|
-
catch { }
|
|
2884
|
+
catch { /* JSON parse may fail on malformed LLM output */ }
|
|
2844
2885
|
}
|
|
2845
2886
|
if (!byName.has(n))
|
|
2846
2887
|
byName.set(n, []);
|
|
@@ -3862,7 +3903,7 @@ export async function createSession(opts) {
|
|
|
3862
3903
|
}
|
|
3863
3904
|
}
|
|
3864
3905
|
}
|
|
3865
|
-
catch { }
|
|
3906
|
+
catch { /* JSON parse may fail on malformed LLM output */ }
|
|
3866
3907
|
}
|
|
3867
3908
|
else if (name === 'search_files') {
|
|
3868
3909
|
const lines = content.split('\n').filter(Boolean);
|
|
@@ -3883,7 +3924,7 @@ export async function createSession(opts) {
|
|
|
3883
3924
|
}
|
|
3884
3925
|
}
|
|
3885
3926
|
}
|
|
3886
|
-
catch { }
|
|
3927
|
+
catch { /* JSON parse may fail on malformed LLM output */ }
|
|
3887
3928
|
}
|
|
3888
3929
|
resultEvent.success = toolSuccess;
|
|
3889
3930
|
if (!toolSuccess && name === 'exec' && typeof resultEvent.execRc === 'number') {
|
|
@@ -4035,7 +4076,7 @@ export async function createSession(opts) {
|
|
|
4035
4076
|
try {
|
|
4036
4077
|
parsedArgs = parseJsonArgs(tc.function.arguments ?? '{}');
|
|
4037
4078
|
}
|
|
4038
|
-
catch { }
|
|
4079
|
+
catch { /* JSON parse may fail on malformed LLM output */ }
|
|
4039
4080
|
const cmd = tc.function.name === 'exec'
|
|
4040
4081
|
? String(parsedArgs?.command ?? '')
|
|
4041
4082
|
: String(parsedArgs?.task ?? '');
|