test-fields-issue.jsโข3.69 kB
#!/usr/bin/env node
/**
* Test the specific fields parameter issue found in the error analysis
*/
import { discoverTools } from './lib/tools.js';
import { logger } from './lib/logger.js';
const REAL_SCRIPT_ID = '1fSY7y3Rh84FsgJmrFIMm4AUOV3mPgelLRvZ4Dahrv68zyDzX-cGbeYjn';
async function testFieldsIssue() {
console.log('๐ Testing Specific Fields Parameter Issue\n');
try {
process.env.LOG_LEVEL = 'trace';
const tools = await discoverTools();
const processListTool = tools.find(tool =>
tool.definition?.function?.name === 'script_processes_list'
);
console.log('๐งช Testing the problematic field that caused 400 error...');
console.log('โ This field caused an error: processes(processType,functionName,startTime,duration,status)');
try {
const result = await processListTool.function({
scriptId: REAL_SCRIPT_ID,
fields: 'processes(processType,functionName,startTime,duration,status)',
pageSize: 3
});
console.log('โ
Unexpectedly succeeded!');
console.log(JSON.stringify(result, null, 2));
} catch (error) {
console.log('โ Confirmed error with "status" field:');
console.log(` ${error.message}`);
if (error.message.includes('Cannot find matching fields for path')) {
console.log('\n๐ The issue is that "status" is not a valid field name.');
console.log('๐ Let\'s try the correct field name: "processStatus"');
try {
const correctedResult = await processListTool.function({
scriptId: REAL_SCRIPT_ID,
fields: 'processes(processType,functionName,startTime,duration,processStatus)',
pageSize: 3
});
console.log('โ
SUCCESS with corrected field name!');
console.log(JSON.stringify(correctedResult, null, 2));
} catch (correctedError) {
console.log('โ Still failed with corrected field name:');
console.log(` ${correctedError.message}`);
}
}
}
console.log('\n๐ Testing other potential field name issues...');
const fieldTests = [
{
description: 'All available fields',
fields: 'processes(projectName,functionName,processType,processStatus,userAccessLevel,startTime,duration,runtimeVersion)'
},
{
description: 'With nextPageToken',
fields: 'processes,nextPageToken'
},
{
description: 'Invalid field name test',
fields: 'processes(invalidField)'
},
{
description: 'Mixed valid/invalid fields',
fields: 'processes(functionName,invalidField,processType)'
}
];
for (const test of fieldTests) {
console.log(`\n๐ Testing: ${test.description}`);
console.log(` Fields: ${test.fields}`);
try {
const result = await processListTool.function({
scriptId: REAL_SCRIPT_ID,
fields: test.fields,
pageSize: 2
});
console.log(' โ
Success');
console.log(` ๐ Returned ${Object.keys(result).length} top-level keys`);
if (result.processes) {
console.log(` ๐ ${result.processes.length} processes returned`);
if (result.processes[0]) {
console.log(` ๐ Process fields: ${Object.keys(result.processes[0]).join(', ')}`);
}
}
} catch (error) {
console.log(' โ Error:');
console.log(` ${error.message.substring(0, 100)}...`);
}
}
} catch (error) {
console.error('โ Test failed:', error.message);
}
}
testFieldsIssue().catch(console.error);