Skip to main content
Glama
update-bridge.ts2.65 kB
import ora from 'ora'; import type { BaseBridgeParams } from './bridge-types.js'; import { checkStorageType } from './bridge-utils.js'; /** * Parameters for the update bridge function */ export interface UpdateBridgeParams extends BaseBridgeParams { /** Task ID (can be numeric "1", alphanumeric "TAS-49", or dotted "1.2" or "TAS-49.1") */ taskId: string | number; /** Update prompt for AI */ prompt: string; /** Whether to append or full update (default: false) */ appendMode?: boolean; } /** * Result returned when API storage handles the update */ export interface RemoteUpdateResult { success: boolean; taskId: string | number; message: string; telemetryData: null; tagInfo: null; } /** * Shared bridge function for update-task and update-subtask commands. * Checks if using API storage and delegates to remote AI service if so. * * In API storage, tasks and subtasks are treated identically - there's no * parent/child hierarchy, so update-task and update-subtask can be used * interchangeably. * * @param params - Bridge parameters * @returns Result object if API storage handled it, null if should fall through to file storage */ export async function tryUpdateViaRemote( params: UpdateBridgeParams ): Promise<RemoteUpdateResult | null> { const { taskId, prompt, projectRoot, tag, appendMode = false, isMCP = false, outputFormat = 'text', report } = params; // Check storage type using shared utility const { isApiStorage, tmCore } = await checkStorageType( projectRoot, report, 'falling back to file-based update' ); if (!isApiStorage || !tmCore) { // Not API storage - signal caller to fall through to file-based logic return null; } // API STORAGE PATH: Delegate to remote AI service report('info', `Delegating update to Hamster for task ${taskId}`); const mode = appendMode ? 'append' : 'update'; // Show spinner for CLI users const spinner = !isMCP && outputFormat === 'text' ? ora({ text: `Updating ${taskId} on Hamster...`, color: 'cyan' }).start() : null; try { // Call the API storage method which handles the remote update await tmCore.tasks.updateWithPrompt(String(taskId), prompt, tag, { mode }); if (spinner) { spinner.succeed('Task updated on Hamster'); } // Return success result - signals that we handled it return { success: true, taskId: taskId, message: 'Task updated via remote AI service', telemetryData: null, tagInfo: null }; } catch (updateError) { if (spinner) { spinner.fail('Update failed'); } // tm-core already formatted the error properly, just re-throw throw updateError; } }

Latest Blog Posts

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/eyaltoledano/claude-task-master'

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