| # @automaker/utils |
|
|
| Shared utility functions for AutoMaker. |
|
|
| ## Overview |
|
|
| This package provides common utility functions used across AutoMaker's server and UI. It includes error handling, logging, conversation utilities, image handling, and prompt building. |
|
|
| ## Installation |
|
|
| ```bash |
| npm install @automaker/utils |
| ``` |
|
|
| ## Exports |
|
|
| ### Logger |
|
|
| Structured logging with context. |
|
|
| ```typescript |
| import { createLogger, LogLevel } from '@automaker/utils'; |
| |
| const logger = createLogger('MyComponent'); |
| logger.info('Processing request'); |
| logger.error('Failed to process:', error); |
| logger.debug('Debug information', { data }); |
| ``` |
|
|
| ### Error Handler |
|
|
| Error classification and user-friendly messages. |
|
|
| ```typescript |
| import { |
| isAbortError, |
| isCancellationError, |
| isAuthenticationError, |
| classifyError, |
| getUserFriendlyErrorMessage, |
| } from '@automaker/utils'; |
| |
| try { |
| await operation(); |
| } catch (error) { |
| if (isAbortError(error)) { |
| console.log('Operation was aborted'); |
| } |
| |
| const errorInfo = classifyError(error); |
| const message = getUserFriendlyErrorMessage(error); |
| } |
| ``` |
|
|
| ### Conversation Utils |
|
|
| Message formatting and conversion. |
|
|
| ```typescript |
| import { |
| extractTextFromContent, |
| normalizeContentBlocks, |
| formatHistoryAsText, |
| convertHistoryToMessages, |
| } from '@automaker/utils'; |
| |
| const text = extractTextFromContent(contentBlocks); |
| const normalized = normalizeContentBlocks(content); |
| const formatted = formatHistoryAsText(messages); |
| const converted = convertHistoryToMessages(history); |
| ``` |
|
|
| ### Image Handler |
|
|
| Image processing for Claude prompts. |
|
|
| ```typescript |
| import { |
| getMimeTypeForImage, |
| readImageAsBase64, |
| convertImagesToContentBlocks, |
| formatImagePathsForPrompt, |
| } from '@automaker/utils'; |
| |
| const mimeType = getMimeTypeForImage('screenshot.png'); |
| const base64 = await readImageAsBase64('/path/to/image.jpg'); |
| const blocks = await convertImagesToContentBlocks(imagePaths, basePath); |
| const formatted = formatImagePathsForPrompt(imagePaths); |
| ``` |
|
|
| ### Prompt Builder |
|
|
| Build prompts with images for Claude. |
|
|
| ```typescript |
| import { buildPromptWithImages } from '@automaker/utils'; |
| |
| const result = await buildPromptWithImages({ |
| basePrompt: 'Analyze this screenshot', |
| imagePaths: ['/path/to/screenshot.png'], |
| basePath: '/project/path', |
| }); |
| |
| console.log(result.prompt); // Prompt with image references |
| console.log(result.images); // Image data for Claude |
| ``` |
|
|
| ### File System Utils |
|
|
| Common file system operations. |
|
|
| ```typescript |
| import { ensureDir, fileExists, readJsonFile, writeJsonFile } from '@automaker/utils'; |
| |
| await ensureDir('/path/to/dir'); |
| const exists = await fileExists('/path/to/file'); |
| const data = await readJsonFile('/config.json'); |
| await writeJsonFile('/config.json', data); |
| ``` |
|
|
| ## Usage Example |
|
|
| ```typescript |
| import { createLogger, classifyError, buildPromptWithImages } from '@automaker/utils'; |
| |
| const logger = createLogger('FeatureExecutor'); |
| |
| async function executeWithImages(prompt: string, images: string[]) { |
| try { |
| logger.info('Building prompt with images'); |
| |
| const result = await buildPromptWithImages({ |
| basePrompt: prompt, |
| imagePaths: images, |
| basePath: process.cwd(), |
| }); |
| |
| logger.debug('Prompt built successfully', { imageCount: result.images.length }); |
| return result; |
| } catch (error) { |
| const errorInfo = classifyError(error); |
| logger.error('Failed to build prompt:', errorInfo.message); |
| throw error; |
| } |
| } |
| ``` |
|
|
| ## Dependencies |
|
|
| - `@automaker/types` - Type definitions |
|
|
| ## Used By |
|
|
| - `@automaker/server` |
| - `@automaker/ui` |
|
|