import { execSync } from 'node:child_process'; import { cli, Strategy } from '@jackwener/opencli/registry'; import { CommandExecutionError, ConfigError, getErrorMessage } from '@jackwener/opencli/errors'; import { getVisibleChatMessages } from './ax.js'; export const readCommand = cli({ site: 'chatgpt-app', name: 'read', access: 'read', description: 'Read the last visible message from the focused ChatGPT Desktop window', domain: 'localhost', strategy: Strategy.PUBLIC, browser: false, args: [], columns: ['Role', 'Text'], func: async () => { if (process.platform !== 'darwin') { throw new ConfigError('ChatGPT Desktop integration requires macOS (osascript is not available on this platform)'); } try { execSync("osascript -e 'tell application \"ChatGPT\" to activate'"); execSync("osascript -e 'delay 0.3'"); const messages = getVisibleChatMessages(); if (!messages.length) { return [{ Role: 'System', Text: 'No visible chat messages were found in the current ChatGPT window.' }]; } return [{ Role: 'Assistant', Text: messages[messages.length - 1] }]; } catch (err) { throw new CommandExecutionError("Failed to read from ChatGPT: " + getErrorMessage(err)); } }, });