listCustomPerspectives.tsโข2.54 kB
import { executeOmniFocusScript } from '../../utils/scriptExecution.js';
export interface ListCustomPerspectivesOptions {
format?: 'simple' | 'detailed';
}
export async function listCustomPerspectives(options: ListCustomPerspectivesOptions = {}): Promise<string> {
const { format = 'simple' } = options;
try {
console.log('๐ ๅผๅงๆง่ก listCustomPerspectives ่ๆฌ...');
// Execute the list custom perspectives script
const result = await executeOmniFocusScript('@listCustomPerspectives.js', {});
console.log('๐ ่ๆฌๆง่กๅฎๆ๏ผ็ปๆ็ฑปๅ:', typeof result);
console.log('๐ ่ๆฌๆง่ก็ปๆ:', result);
// ๅค็ๅ็งๅฏ่ฝ็่ฟๅ็ฑปๅ
let data: any;
if (typeof result === 'string') {
console.log('๐ ็ปๆๆฏๅญ็ฌฆไธฒ๏ผๅฐ่ฏ่งฃๆ JSON...');
try {
data = JSON.parse(result);
console.log('โ
JSON ่งฃๆๆๅ:', data);
} catch (parseError) {
console.error('โ JSON ่งฃๆๅคฑ่ดฅ:', parseError);
throw new Error(`่งฃๆๅญ็ฌฆไธฒ็ปๆๅคฑ่ดฅ: ${result}`);
}
} else if (typeof result === 'object' && result !== null) {
console.log('๐ ็ปๆๆฏๅฏน่ฑก๏ผ็ดๆฅไฝฟ็จ...');
data = result;
} else {
console.error('โ ๆ ๆ็็ปๆ็ฑปๅ:', typeof result, result);
throw new Error(`่ๆฌๆง่ก่ฟๅไบๆ ๆ็็ปๆ็ฑปๅ: ${typeof result}, ๅผ: ${result}`);
}
// ๆฃๆฅๆฏๅฆๆ้่ฏฏ
if (!data.success) {
throw new Error(data.error || 'Unknown error occurred');
}
// ๆ ผๅผๅ่พๅบ
if (data.count === 0) {
return "๐ **่ชๅฎไน้่งๅ่กจ**\n\nๆๆ ่ชๅฎไน้่งใ";
}
if (format === 'simple') {
// ็ฎๅๆ ผๅผ๏ผๅชๆพ็คบๅ็งฐๅ่กจ
const perspectiveNames = data.perspectives.map((p: any) => p.name);
return `๐ **่ชๅฎไน้่งๅ่กจ** (${data.count}ไธช)\n\n${perspectiveNames.map((name: string, index: number) => `${index + 1}. ${name}`).join('\n')}`;
} else {
// ่ฏฆ็ปๆ ผๅผ๏ผๆพ็คบๅ็งฐๅๆ ่ฏ็ฌฆ
const perspectiveDetails = data.perspectives.map((p: any, index: number) =>
`${index + 1}. **${p.name}**\n ๐ ${p.identifier}`
);
return `๐ **่ชๅฎไน้่งๅ่กจ** (${data.count}ไธช)\n\n${perspectiveDetails.join('\n\n')}`;
}
} catch (error) {
console.error('Error in listCustomPerspectives:', error);
return `โ **้่ฏฏ**: ${error instanceof Error ? error.message : String(error)}`;
}
}