universal-agent-memory 7.0.2 → 7.0.4
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/tool-calls.d.ts +0 -8
- package/dist/cli/tool-calls.d.ts.map +1 -1
- package/dist/cli/tool-calls.js +163 -298
- package/dist/cli/tool-calls.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/tool-calls.d.ts
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* UAM Tool Call Setup - Qwen3.5 Tool Call Fixes
|
|
4
|
-
*
|
|
5
4
|
* Manages chat templates, wrapper scripts, and testing for Qwen3.5 tool calling
|
|
6
|
-
* Improves tool call performance from ~40% to ~88% for long-running tasks (5+ tool calls)
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* uam tool-calls setup Install chat templates for llama.cpp and OpenCode
|
|
10
|
-
* uam tool-calls test Run reliability test suite
|
|
11
|
-
* uam tool-calls status Check current configuration
|
|
12
|
-
* uam tool-calls fix Apply template fixes to existing templates
|
|
13
5
|
*/
|
|
14
6
|
export { toolCallsCommand };
|
|
15
7
|
declare function toolCallsCommand(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-calls.d.ts","sourceRoot":"","sources":["../../src/cli/tool-calls.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"tool-calls.d.ts","sourceRoot":"","sources":["../../src/cli/tool-calls.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAwOH,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,iBAAe,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B/C"}
|
package/dist/cli/tool-calls.js
CHANGED
|
@@ -1,374 +1,239 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* UAM Tool Call Setup - Qwen3.5 Tool Call Fixes
|
|
4
|
-
*
|
|
5
4
|
* Manages chat templates, wrapper scripts, and testing for Qwen3.5 tool calling
|
|
6
|
-
* Improves tool call performance from ~40% to ~88% for long-running tasks (5+ tool calls)
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* uam tool-calls setup Install chat templates for llama.cpp and OpenCode
|
|
10
|
-
* uam tool-calls test Run reliability test suite
|
|
11
|
-
* uam tool-calls status Check current configuration
|
|
12
|
-
* uam tool-calls fix Apply template fixes to existing templates
|
|
13
5
|
*/
|
|
14
6
|
import { execSync } from 'child_process';
|
|
15
|
-
import { existsSync, mkdirSync,
|
|
16
|
-
import { join
|
|
17
|
-
import
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const AGENTS_SCRIPTS = join(UAM_ROOT, 'tools', 'agents', 'scripts');
|
|
23
|
-
function getLlamaCppPath() {
|
|
24
|
-
// Default: ~/llama.cpp
|
|
25
|
-
return process.env.LLAMA_CPP_PATH || join(process.env.HOME || '', 'llama.cpp');
|
|
26
|
-
}
|
|
27
|
-
function getOpencodePath() {
|
|
28
|
-
// Default: ~/.opencode
|
|
29
|
-
return process.env.OPencode_PATH || join(process.env.HOME || '', '.opencode');
|
|
30
|
-
}
|
|
7
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
const UAM_ROOT = process.cwd();
|
|
11
|
+
const AGENTS_DIR = join(UAM_ROOT, 'tools', 'agents');
|
|
12
|
+
const CONFIG_DIR = join(AGENTS_DIR, 'config');
|
|
13
|
+
const SCRIPTS_DIR = join(AGENTS_DIR, 'scripts');
|
|
31
14
|
function ensureDir(dir) {
|
|
32
15
|
if (!existsSync(dir)) {
|
|
33
16
|
mkdirSync(dir, { recursive: true });
|
|
34
|
-
console.log(`✓ Created directory: ${dir}`);
|
|
17
|
+
console.log(chalk.green(`✓ Created directory: ${dir}`));
|
|
35
18
|
}
|
|
36
19
|
}
|
|
37
|
-
function copyTemplate(src, dest) {
|
|
38
|
-
ensureDir(dirname(dest));
|
|
39
|
-
copyFileSync(src, dest);
|
|
40
|
-
console.log(`✓ Copied template: ${src} -> ${dest}`);
|
|
41
|
-
}
|
|
42
|
-
function printSetupInstructions() {
|
|
43
|
-
console.log(`
|
|
44
|
-
${'='.repeat(70)}
|
|
45
|
-
Qwen3.5 Tool Call Setup - Installation Complete
|
|
46
|
-
${'='.repeat(70)}
|
|
47
|
-
|
|
48
|
-
The following components have been installed:
|
|
49
|
-
|
|
50
|
-
1. Chat Template (chat_template.jinja)
|
|
51
|
-
- Location: ${AGENTS_CONFIG}/chat_template.jinja
|
|
52
|
-
- Fix: Added conditional wrapper for tool_call.arguments
|
|
53
|
-
- Performance: Improves from ~40% to ~88% for 5+ tool calls
|
|
54
|
-
|
|
55
|
-
2. Python Scripts
|
|
56
|
-
- fix_qwen_chat_template.py: Apply fixes to existing templates
|
|
57
|
-
- qwen_tool_call_wrapper.py: Retry logic and validation
|
|
58
|
-
- qwen_tool_call_test.py: Reliability test suite
|
|
59
|
-
|
|
60
|
-
3. Integration Points
|
|
61
|
-
- llama.cpp: Use --chat-template-file and --jinja flags
|
|
62
|
-
- OpenCode: Copy to ~/.opencode/agent/chat_template.jinja
|
|
63
|
-
|
|
64
|
-
${'='.repeat(70)}
|
|
65
|
-
NEXT STEPS:
|
|
66
|
-
${'='.repeat(70)}
|
|
67
|
-
|
|
68
|
-
A. For llama.cpp (local model server):
|
|
69
|
-
|
|
70
|
-
1. Stop your existing llama-server if running:
|
|
71
|
-
pkill llama-server
|
|
72
|
-
|
|
73
|
-
2. Start with the fixed template:
|
|
74
|
-
${'='.repeat(60)}
|
|
75
|
-
cd ${getLlamaCppPath()}
|
|
76
|
-
./llama-server \\
|
|
77
|
-
--model ~/models/Qwen3.5-35B-Instruct-Q4_K_M.gguf \\
|
|
78
|
-
--chat-template-file ${AGENTS_CONFIG}/chat_template.jinja \\
|
|
79
|
-
--jinja \\
|
|
80
|
-
--port 8080 \\
|
|
81
|
-
--ctx-size 262144 \\
|
|
82
|
-
--batch-size 4096 \\
|
|
83
|
-
--threads $(nproc) \\
|
|
84
|
-
--tensor-split auto
|
|
85
|
-
${'='.repeat(60)}
|
|
86
|
-
|
|
87
|
-
B. For OpenCode:
|
|
88
|
-
|
|
89
|
-
1. Copy template to OpenCode agent config:
|
|
90
|
-
${'='.repeat(60)}
|
|
91
|
-
mkdir -p ~/.opencode/agent
|
|
92
|
-
cp ${AGENTS_CONFIG}/chat_template.jinja ~/.opencode/agent/
|
|
93
|
-
|
|
94
|
-
2. Update .opencode/config.json to enable jinja:
|
|
95
|
-
{
|
|
96
|
-
"provider": "llama.cpp",
|
|
97
|
-
"model": "qwen35-a3b-iq4xs",
|
|
98
|
-
"chatTemplate": "jinja",
|
|
99
|
-
"baseURL": "http://localhost:8080/v1"
|
|
100
|
-
}
|
|
101
|
-
${'='.repeat(60)}
|
|
102
|
-
|
|
103
|
-
C. Test the setup:
|
|
104
|
-
|
|
105
|
-
1. Run the test suite:
|
|
106
|
-
${'='.repeat(60)}
|
|
107
|
-
cd ${AGENTS_SCRIPTS}
|
|
108
|
-
python3 qwen_tool_call_test.py --verbose
|
|
109
|
-
${'='.repeat(60)}
|
|
110
|
-
|
|
111
|
-
2. Expected results:
|
|
112
|
-
- Single tool call: ~98% success rate
|
|
113
|
-
- 2-3 tool calls: ~92% success rate
|
|
114
|
-
- 5+ tool calls: ~88% success rate
|
|
115
|
-
|
|
116
|
-
D. Verify template is loaded:
|
|
117
|
-
|
|
118
|
-
1. Check llama.cpp server logs for:
|
|
119
|
-
"Chat template loaded successfully"
|
|
120
|
-
|
|
121
|
-
2. Test with a simple tool call:
|
|
122
|
-
curl -X POST http://localhost:8080/v1/chat/completions \\
|
|
123
|
-
-H "Content-Type: application/json" \\
|
|
124
|
-
-d '{
|
|
125
|
-
"model": "qwen35-a3b-iq4xs",
|
|
126
|
-
"messages": [{"role": "user", "content": "Read /etc/hosts"}],
|
|
127
|
-
"tools": [{"type": "function", "function": {"name": "read_file"}}]
|
|
128
|
-
}'
|
|
129
|
-
|
|
130
|
-
${'='.repeat(70)}
|
|
131
|
-
TROUBLESHOOTING:
|
|
132
|
-
${'='.repeat(70)}
|
|
133
|
-
|
|
134
|
-
Issue: Tool calls fail after 1-2 attempts
|
|
135
|
-
Solution: Verify template was loaded with --chat-template-file flag
|
|
136
|
-
|
|
137
|
-
Issue: Template not found
|
|
138
|
-
Solution: Check path exists: ls -la ${AGENTS_CONFIG}/chat_template.jinja
|
|
139
|
-
|
|
140
|
-
Issue: OpenCode still using old template
|
|
141
|
-
Solution: Restart OpenCode after copying template
|
|
142
|
-
|
|
143
|
-
Issue: Python scripts not found
|
|
144
|
-
Solution: Ensure you're in the scripts directory: cd ${AGENTS_SCRIPTS}
|
|
145
|
-
|
|
146
|
-
${'='.repeat(70)}
|
|
147
|
-
For more information, see:
|
|
148
|
-
- docs/qwen35-tool-call-fixes.md
|
|
149
|
-
- tools/agents/scripts/README.md
|
|
150
|
-
${'='.repeat(70)}
|
|
151
|
-
`);
|
|
152
|
-
}
|
|
153
20
|
async function setup() {
|
|
154
|
-
console.log('
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
// Copy
|
|
159
|
-
const templateSrc = join(
|
|
160
|
-
const templateDest = join(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
21
|
+
console.log(chalk.cyan('\n🔧 Setting up Qwen3.5 Tool Call Fixes...\n'));
|
|
22
|
+
// Ensure directories exist
|
|
23
|
+
ensureDir(CONFIG_DIR);
|
|
24
|
+
ensureDir(SCRIPTS_DIR);
|
|
25
|
+
// Copy chat template if not exists
|
|
26
|
+
const templateSrc = join(UAM_ROOT, 'tools', 'agents', 'config', 'chat_template.jinja');
|
|
27
|
+
const templateDest = join(CONFIG_DIR, 'chat_template.jinja');
|
|
28
|
+
if (existsSync(templateSrc) && !existsSync(templateDest)) {
|
|
29
|
+
writeFileSync(templateDest, readFileSync(templateSrc));
|
|
30
|
+
console.log(chalk.green(`✓ Copied chat template: ${templateDest}`));
|
|
31
|
+
}
|
|
32
|
+
else if (!existsSync(templateDest)) {
|
|
33
|
+
console.log(chalk.yellow('⚠ Chat template not found in tools/agents/config'));
|
|
34
|
+
}
|
|
35
|
+
// Copy Python scripts if needed
|
|
36
|
+
const pythonScripts = [
|
|
37
|
+
'fix_qwen_chat_template.py',
|
|
38
|
+
'qwen_tool_call_wrapper.py',
|
|
39
|
+
'qwen_tool_call_test.py',
|
|
40
|
+
];
|
|
41
|
+
for (const script of pythonScripts) {
|
|
42
|
+
const src = join(UAM_ROOT, 'tools', 'agents', 'scripts', script);
|
|
43
|
+
const dest = join(SCRIPTS_DIR, script);
|
|
44
|
+
if (existsSync(src) && !existsSync(dest)) {
|
|
45
|
+
writeFileSync(dest, readFileSync(src));
|
|
46
|
+
console.log(chalk.green(`✓ Copied script: ${script}`));
|
|
47
|
+
}
|
|
48
|
+
else if (!existsSync(dest)) {
|
|
49
|
+
console.log(chalk.yellow(`⚠ Script not found: ${script}`));
|
|
178
50
|
}
|
|
179
|
-
console.log();
|
|
180
|
-
printSetupInstructions();
|
|
181
|
-
}
|
|
182
|
-
catch (error) {
|
|
183
|
-
console.error('❌ Error during setup:', error);
|
|
184
|
-
process.exit(1);
|
|
185
51
|
}
|
|
52
|
+
// Make scripts executable
|
|
53
|
+
try {
|
|
54
|
+
execSync(`chmod +x ${SCRIPTS_DIR}/*.py`, { stdio: 'ignore' });
|
|
55
|
+
console.log(chalk.green('✓ Made Python scripts executable'));
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
console.log(chalk.yellow('⚠ Could not make scripts executable'));
|
|
59
|
+
}
|
|
60
|
+
// Print summary
|
|
61
|
+
console.log('\n' + chalk.cyan('=').repeat(70));
|
|
62
|
+
console.log(chalk.bold('Qwen3.5 Tool Call Setup Complete!'));
|
|
63
|
+
console.log(chalk.cyan('=').repeat(70) + '\n');
|
|
64
|
+
console.log(chalk.bold('Installed Components:'));
|
|
65
|
+
console.log(` • Chat template: ${templateDest}`);
|
|
66
|
+
console.log(` • Python scripts: ${SCRIPTS_DIR}/`);
|
|
67
|
+
if (existsSync(templateDest)) {
|
|
68
|
+
const stat = await import('fs').then(m => m.statSync(templateDest));
|
|
69
|
+
console.log(` - Size: ${stat.size} bytes`);
|
|
70
|
+
}
|
|
71
|
+
console.log('\n' + chalk.bold('Python Scripts Available:'));
|
|
72
|
+
console.log(' • qwen_tool_call_test.py - Run reliability tests');
|
|
73
|
+
console.log(' • qwen_tool_call_wrapper.py - Apply wrapper fixes');
|
|
74
|
+
console.log(' • fix_qwen_chat_template.py - Fix existing templates\n');
|
|
75
|
+
console.log(chalk.bold('Performance Improvements:'));
|
|
76
|
+
console.log(' • Single tool call: ~95% → ~98%');
|
|
77
|
+
console.log(' • 2-3 tool calls: ~70% → ~92%');
|
|
78
|
+
console.log(' • 5+ tool calls: ~40% → ~88%');
|
|
79
|
+
console.log(' • Long context (50K+): ~30% → ~85%\n');
|
|
80
|
+
console.log(chalk.bold('Next Steps:'));
|
|
81
|
+
console.log(' 1. Test the setup: uam tool-calls test');
|
|
82
|
+
console.log(' 2. Check status: uam tool-calls status');
|
|
83
|
+
console.log(' 3. Apply fixes: uam tool-calls fix\n');
|
|
186
84
|
}
|
|
187
85
|
async function test() {
|
|
188
|
-
console.log('
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
if (!existsSync(scriptsDir)) {
|
|
194
|
-
console.error(`❌ Scripts directory not found: ${scriptsDir}`);
|
|
195
|
-
console.log('Run: uam tool-calls setup');
|
|
86
|
+
console.log(chalk.cyan('\n🧪 Running Qwen3.5 Tool Call Tests...\n'));
|
|
87
|
+
const testScript = join(SCRIPTS_DIR, 'qwen_tool_call_test.py');
|
|
88
|
+
if (!existsSync(testScript)) {
|
|
89
|
+
console.error(chalk.red(`❌ Test script not found: ${testScript}`));
|
|
90
|
+
console.log(chalk.yellow('Run: uam tool-calls setup\n'));
|
|
196
91
|
process.exit(1);
|
|
197
92
|
}
|
|
198
93
|
try {
|
|
199
|
-
execSync(`
|
|
94
|
+
execSync(`python3 "${testScript}" --verbose`, {
|
|
95
|
+
cwd: SCRIPTS_DIR,
|
|
96
|
+
stdio: 'inherit',
|
|
97
|
+
});
|
|
200
98
|
}
|
|
201
|
-
catch (
|
|
202
|
-
console.log();
|
|
203
|
-
console.log('
|
|
204
|
-
console.log('Review the output above for details.');
|
|
205
|
-
process.exit(1);
|
|
99
|
+
catch (err) {
|
|
100
|
+
console.log(chalk.yellow('\n⚠ Test completed with some failures'));
|
|
101
|
+
console.log('Review the output above for details.\n');
|
|
206
102
|
}
|
|
207
103
|
}
|
|
208
104
|
async function status() {
|
|
209
|
-
console.log('='.repeat(70));
|
|
210
|
-
console.log('Qwen3.5 Tool Call Configuration Status');
|
|
211
|
-
console.log('='.repeat(70));
|
|
212
|
-
console.log();
|
|
105
|
+
console.log(chalk.cyan('\n' + '='.repeat(70)));
|
|
106
|
+
console.log(chalk.bold('Qwen3.5 Tool Call Configuration Status'));
|
|
107
|
+
console.log(chalk.cyan('='.repeat(70) + '\n'));
|
|
213
108
|
// Check template
|
|
214
|
-
const templatePath = join(
|
|
109
|
+
const templatePath = join(CONFIG_DIR, 'chat_template.jinja');
|
|
215
110
|
if (existsSync(templatePath)) {
|
|
216
|
-
const
|
|
217
|
-
|
|
111
|
+
const fs = await import('fs');
|
|
112
|
+
const stat = fs.statSync(templatePath);
|
|
113
|
+
console.log(chalk.green(`✓ Chat template: ${templatePath}`));
|
|
218
114
|
console.log(` Modified: ${stat.mtime.toISOString()}`);
|
|
219
115
|
console.log(` Size: ${stat.size} bytes`);
|
|
220
116
|
}
|
|
221
117
|
else {
|
|
222
|
-
console.log(`✗ Chat template not found: ${templatePath}`);
|
|
223
|
-
console.log(' Run: uam tool-calls setup');
|
|
118
|
+
console.log(chalk.yellow(`✗ Chat template not found: ${templatePath}`));
|
|
119
|
+
console.log(' Run: uam tool-calls setup\n');
|
|
224
120
|
}
|
|
225
|
-
console.log();
|
|
226
121
|
// Check Python scripts
|
|
227
|
-
const
|
|
122
|
+
const pythonScripts = [
|
|
228
123
|
'fix_qwen_chat_template.py',
|
|
229
124
|
'qwen_tool_call_wrapper.py',
|
|
230
125
|
'qwen_tool_call_test.py',
|
|
231
126
|
];
|
|
232
|
-
console.log('
|
|
233
|
-
for (const script of
|
|
234
|
-
const scriptPath = join(
|
|
127
|
+
console.log(chalk.bold('\nPython Scripts:'));
|
|
128
|
+
for (const script of pythonScripts) {
|
|
129
|
+
const scriptPath = join(SCRIPTS_DIR, script);
|
|
235
130
|
if (existsSync(scriptPath)) {
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
else {
|
|
240
|
-
console.log(` ✗ ${script} - not found`);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
console.log();
|
|
244
|
-
// Check llama.cpp
|
|
245
|
-
const llamaCppPath = getLlamaCppPath();
|
|
246
|
-
if (existsSync(llamaCppPath)) {
|
|
247
|
-
console.log(`✓ llama.cpp path: ${llamaCppPath}`);
|
|
248
|
-
const llamaServer = join(llamaCppPath, 'llama-server');
|
|
249
|
-
if (existsSync(llamaServer)) {
|
|
250
|
-
console.log(` ✓ llama-server found`);
|
|
131
|
+
const fs = await import('fs');
|
|
132
|
+
const stat = fs.statSync(scriptPath);
|
|
133
|
+
console.log(chalk.green(` ✓ ${script} (${stat.size} bytes)`));
|
|
251
134
|
}
|
|
252
135
|
else {
|
|
253
|
-
console.log(`
|
|
136
|
+
console.log(chalk.yellow(` ✗ ${script} - not found`));
|
|
254
137
|
}
|
|
255
138
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
console.log();
|
|
261
|
-
// Check OpenCode
|
|
262
|
-
const opencodePath = getOpencodePath();
|
|
263
|
-
const opencodeTemplate = join(opencodePath, 'agent', 'chat_template.jinja');
|
|
264
|
-
if (existsSync(opencodeTemplate)) {
|
|
265
|
-
const stat = await import('fs').then((m) => m.statSync(opencodeTemplate));
|
|
266
|
-
console.log(`✓ OpenCode template: ${opencodeTemplate}`);
|
|
267
|
-
console.log(` Modified: ${stat.mtime.toISOString()}`);
|
|
139
|
+
// Check for Python
|
|
140
|
+
try {
|
|
141
|
+
execSync('python3 --version', { stdio: 'pipe' });
|
|
142
|
+
console.log(chalk.green('\n✓ Python 3 available'));
|
|
268
143
|
}
|
|
269
|
-
|
|
270
|
-
console.log(
|
|
271
|
-
console.log(' Run: uam tool-calls setup (will copy to ~/.opencode/agent/)');
|
|
144
|
+
catch {
|
|
145
|
+
console.log(chalk.yellow('\n⚠ Python 3 not found in PATH'));
|
|
272
146
|
}
|
|
273
|
-
console.log();
|
|
274
|
-
console.log('='.repeat(70));
|
|
147
|
+
console.log('\n' + '='.repeat(70));
|
|
275
148
|
}
|
|
276
149
|
async function fix() {
|
|
277
|
-
console.log('
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (!existsSync(scriptsDir)) {
|
|
283
|
-
console.error(`❌ Scripts directory not found: ${scriptsDir}`);
|
|
284
|
-
console.log('Run: uam tool-calls setup');
|
|
150
|
+
console.log(chalk.cyan('\n🔧 Applying Template Fixes...\n'));
|
|
151
|
+
const fixScript = join(SCRIPTS_DIR, 'fix_qwen_chat_template.py');
|
|
152
|
+
if (!existsSync(fixScript)) {
|
|
153
|
+
console.error(chalk.red(`❌ Fix script not found: ${fixScript}`));
|
|
154
|
+
console.log(chalk.yellow('Run: uam tool-calls setup\n'));
|
|
285
155
|
process.exit(1);
|
|
286
156
|
}
|
|
287
157
|
try {
|
|
288
|
-
execSync(`
|
|
289
|
-
|
|
158
|
+
execSync(`python3 "${fixScript}"`, {
|
|
159
|
+
cwd: SCRIPTS_DIR,
|
|
290
160
|
stdio: 'inherit',
|
|
291
161
|
});
|
|
292
162
|
}
|
|
293
|
-
catch (
|
|
294
|
-
console.log();
|
|
295
|
-
console.log('⚠ Fix script completed');
|
|
296
|
-
process.exit(1);
|
|
163
|
+
catch (err) {
|
|
164
|
+
console.log(chalk.yellow('\n⚠ Fix script completed\n'));
|
|
297
165
|
}
|
|
298
166
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
UAM Tool Call Setup - Qwen3.5 Tool Call Fixes
|
|
167
|
+
// Main CLI handler
|
|
168
|
+
const command = process.argv[2];
|
|
169
|
+
switch (command) {
|
|
170
|
+
case 'setup':
|
|
171
|
+
await setup();
|
|
172
|
+
break;
|
|
173
|
+
case 'test':
|
|
174
|
+
await test();
|
|
175
|
+
break;
|
|
176
|
+
case 'status':
|
|
177
|
+
await status();
|
|
178
|
+
break;
|
|
179
|
+
case 'fix':
|
|
180
|
+
await fix();
|
|
181
|
+
break;
|
|
182
|
+
case undefined:
|
|
183
|
+
case 'help':
|
|
184
|
+
default:
|
|
185
|
+
console.log(`
|
|
186
|
+
${chalk.cyan('UAM Tool Call Setup - Qwen3.5 Tool Call Fixes')}
|
|
319
187
|
|
|
320
188
|
Usage:
|
|
321
|
-
uam tool-calls <command> [options]
|
|
189
|
+
${chalk.bold('uam tool-calls <command> [options]')}
|
|
322
190
|
|
|
323
191
|
Commands:
|
|
324
|
-
setup Install chat templates and Python scripts
|
|
325
|
-
test Run reliability test suite
|
|
326
|
-
status Check current configuration
|
|
327
|
-
fix Apply template fixes to existing templates
|
|
328
|
-
help Show this help message
|
|
192
|
+
${chalk.bold('setup')} Install chat templates and Python scripts
|
|
193
|
+
${chalk.bold('test')} Run reliability test suite
|
|
194
|
+
${chalk.bold('status')} Check current configuration
|
|
195
|
+
${chalk.bold('fix')} Apply template fixes to existing templates
|
|
196
|
+
${chalk.bold('help')} Show this help message
|
|
329
197
|
|
|
330
198
|
Performance Improvement:
|
|
331
|
-
Single tool call: ~95%
|
|
332
|
-
2-3 tool calls: ~70%
|
|
333
|
-
5+ tool calls: ~40%
|
|
334
|
-
Long context (50K+): ~30%
|
|
199
|
+
Single tool call: ~95% → ~98%
|
|
200
|
+
2-3 tool calls: ~70% → ~92%
|
|
201
|
+
5+ tool calls: ~40% → ~88%
|
|
202
|
+
Long context (50K+): ~30% → ~85%
|
|
335
203
|
|
|
336
204
|
Examples:
|
|
337
|
-
uam tool-calls setup
|
|
338
|
-
uam tool-calls test --verbose
|
|
339
|
-
uam tool-calls status
|
|
340
|
-
uam tool-calls fix
|
|
205
|
+
${chalk.gray('uam tool-calls setup')}
|
|
206
|
+
${chalk.gray('uam tool-calls test --verbose')}
|
|
207
|
+
${chalk.gray('uam tool-calls status')}
|
|
208
|
+
${chalk.gray('uam tool-calls fix')}
|
|
341
209
|
`);
|
|
342
|
-
}
|
|
343
210
|
}
|
|
344
|
-
main().catch(console.error);
|
|
345
211
|
export { toolCallsCommand };
|
|
346
212
|
async function toolCallsCommand() {
|
|
347
|
-
// Default to help if no subcommand
|
|
348
213
|
console.log(`
|
|
349
|
-
UAM Tool Call Setup - Qwen3.5 Tool Call Fixes
|
|
214
|
+
${chalk.cyan('UAM Tool Call Setup - Qwen3.5 Tool Call Fixes')}
|
|
350
215
|
|
|
351
216
|
Usage:
|
|
352
|
-
uam tool-calls <command> [options]
|
|
217
|
+
${chalk.bold('uam tool-calls <command> [options]')}
|
|
353
218
|
|
|
354
219
|
Commands:
|
|
355
|
-
setup Install chat templates and Python scripts
|
|
356
|
-
test Run reliability test suite
|
|
357
|
-
status Check current configuration
|
|
358
|
-
fix Apply template fixes to existing templates
|
|
359
|
-
help Show this help message
|
|
220
|
+
${chalk.bold('setup')} Install chat templates and Python scripts
|
|
221
|
+
${chalk.bold('test')} Run reliability test suite
|
|
222
|
+
${chalk.bold('status')} Check current configuration
|
|
223
|
+
${chalk.bold('fix')} Apply template fixes to existing templates
|
|
224
|
+
${chalk.bold('help')} Show this help message
|
|
360
225
|
|
|
361
226
|
Performance Improvement:
|
|
362
|
-
Single tool call: ~95%
|
|
363
|
-
2-3 tool calls: ~70%
|
|
364
|
-
5+ tool calls: ~40%
|
|
365
|
-
Long context (50K+): ~30%
|
|
227
|
+
Single tool call: ~95% → ~98%
|
|
228
|
+
2-3 tool calls: ~70% → ~92%
|
|
229
|
+
5+ tool calls: ~40% → ~88%
|
|
230
|
+
Long context (50K+): ~30% → ~85%
|
|
366
231
|
|
|
367
232
|
Examples:
|
|
368
|
-
uam tool-calls setup
|
|
369
|
-
uam tool-calls test --verbose
|
|
370
|
-
uam tool-calls status
|
|
371
|
-
uam tool-calls fix
|
|
233
|
+
${chalk.gray('uam tool-calls setup')}
|
|
234
|
+
${chalk.gray('uam tool-calls test --verbose')}
|
|
235
|
+
${chalk.gray('uam tool-calls status')}
|
|
236
|
+
${chalk.gray('uam tool-calls fix')}
|
|
372
237
|
`);
|
|
373
238
|
}
|
|
374
239
|
//# sourceMappingURL=tool-calls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-calls.js","sourceRoot":"","sources":["../../src/cli/tool-calls.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"tool-calls.js","sourceRoot":"","sources":["../../src/cli/tool-calls.ts"],"names":[],"mappings":"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"}
|