Skip to main content
Glama
MIT License
27,120
19,789
  • Linux
  • Apple
defaultActionWorker.ts•2.86 kB
import path from 'node:path'; import type { RepomixConfigMerged } from '../../../config/configSchema.js'; import { type PackResult, pack } from '../../../core/packager.js'; import { logger, setLogLevelByWorkerData } from '../../../shared/logger.js'; import { Spinner } from '../../cliSpinner.js'; import type { CliOptions } from '../../types.js'; // Initialize logger configuration from workerData at module load time // This must be called before any logging operations in the worker setLogLevelByWorkerData(); export interface DefaultActionTask { directories: string[]; cwd: string; config: RepomixConfigMerged; cliOptions: CliOptions; stdinFilePaths?: string[]; } export interface PingTask { ping: true; } export interface DefaultActionWorkerResult { packResult: PackResult; config: RepomixConfigMerged; } export interface PingResult { ping: true; } // Function overloads for better type inference function defaultActionWorker(task: DefaultActionTask): Promise<DefaultActionWorkerResult>; function defaultActionWorker(task: PingTask): Promise<PingResult>; async function defaultActionWorker( task: DefaultActionTask | PingTask, ): Promise<DefaultActionWorkerResult | PingResult> { // Handle ping requests for Bun compatibility check if ('ping' in task) { return { ping: true, }; } // At this point, task is guaranteed to be DefaultActionTask const { directories, cwd, config, cliOptions, stdinFilePaths } = task; logger.trace('Worker: Using pre-loaded config:', config); // Initialize spinner in worker const spinner = new Spinner('Initializing...', cliOptions); spinner.start(); let packResult: PackResult; try { if (stdinFilePaths) { // Handle stdin processing with file paths from main process // File paths were already read from stdin in the main process logger.trace(`Worker: Processing ${stdinFilePaths.length} files from stdin`); // Use pack with predefined files from stdin packResult = await pack( [cwd], config, (message) => { spinner.update(message); }, {}, stdinFilePaths, ); } else { // Handle directory processing const targetPaths = directories.map((directory) => path.resolve(cwd, directory)); packResult = await pack(targetPaths, config, (message) => { spinner.update(message); }); } spinner.succeed('Packing completed successfully!'); return { packResult, config, }; } catch (error) { spinner.fail('Error during packing'); throw error; } } export default defaultActionWorker; // Export cleanup function for Tinypool teardown export const onWorkerTermination = async () => { // Any cleanup needed when worker terminates // Currently no specific cleanup required for defaultAction worker };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yamadashy/repomix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server