import { z } from 'zod';
import * as appsCore from '../core/apps';
import * as clipboardCore from '../core/clipboard';
import { createErrorResponse, ErrorCodes } from '../utils/errors';
/**
* System tools (app launching, clipboard)
*/
export const LaunchAppInputSchema = z.object({
appName: z.string(),
});
export async function launchAppTool(input: z.infer<typeof LaunchAppInputSchema>) {
try {
const result = await appsCore.launchApplication(input.appName);
return {
content: [
{
type: 'text',
text: JSON.stringify(result, null, 2),
},
],
};
} catch (error) {
return {
content: [
createErrorResponse(
ErrorCodes.UNSUPPORTED_OPERATION,
`Failed to launch app: ${String(error)}`
),
],
};
}
}
export const GetClipboardInputSchema = z.object({});
export async function getClipboardTool(_input: z.infer<typeof GetClipboardInputSchema>) {
try {
const content = await clipboardCore.getClipboard();
return {
content: [
{
type: 'text',
text: JSON.stringify({ success: true, clipboardContent: content }, null, 2),
},
],
};
} catch (error) {
return {
content: [
createErrorResponse(
ErrorCodes.UNSUPPORTED_OPERATION,
`Failed to read clipboard: ${String(error)}`
),
],
};
}
}
export const SetClipboardInputSchema = z.object({
content: z.string(),
});
export async function setClipboardTool(input: z.infer<typeof SetClipboardInputSchema>) {
try {
await clipboardCore.setClipboard(input.content);
return {
content: [
{
type: 'text',
text: JSON.stringify({
success: true,
message: 'Clipboard updated',
contentLength: input.content.length,
}),
},
],
};
} catch (error) {
return {
content: [
createErrorResponse(
ErrorCodes.UNSUPPORTED_OPERATION,
`Failed to set clipboard: ${String(error)}`
),
],
};
}
}