Skip to main content
Glama

mcp-google-sheets

run-failed.ts6.63 kB
import { comfyIcuAuth } from '../../index'; import { createTrigger, PiecePropValueSchema, TriggerStrategy, } from '@activepieces/pieces-framework'; import { comfyIcuApiCall, commonProps } from '../common'; import { DedupeStrategy, HttpMethod, Polling, pollingHelper, } from '@activepieces/pieces-common'; import dayjs from 'dayjs'; const polling: Polling< PiecePropValueSchema<typeof comfyIcuAuth>, { workflow_id: string } > = { strategy: DedupeStrategy.TIMEBASED, async items({ auth, propsValue, lastFetchEpochMS }) { const { workflow_id } = propsValue; const listRunsResponse = await comfyIcuApiCall({ apiKey: auth, endpoint: `/workflows/${workflow_id}/runs`, method: HttpMethod.GET, }); const runs = listRunsResponse.body as { id: string; status: string; created_at: string; }[]; const result = []; for (const run of runs) { if (run.status === 'ERROR') { const runDetailsResponse = await comfyIcuApiCall({ apiKey: auth, endpoint: `/workflows/${workflow_id}/runs/${run.id}`, method: HttpMethod.GET, }); const runDetail = runDetailsResponse.body as { created_at: string }; result.push(runDetail); if (lastFetchEpochMS === 0 && result.length === 5) break; } } return result.map((run) => { return { epochMilliSeconds: dayjs(run.created_at).valueOf(), data: run, }; }); }, }; export const runFailedTrigger = createTrigger({ auth: comfyIcuAuth, name: 'run-failed', displayName: 'Run Failed', description: 'Triggers when a workflow run is failed.', props: { workflow_id: commonProps.workflow_id, }, type: TriggerStrategy.POLLING, async onEnable(context) { await pollingHelper.onEnable(polling, { auth: context.auth, store: context.store, propsValue: context.propsValue, }); }, async onDisable(context) { await pollingHelper.onDisable(polling, { auth: context.auth, store: context.store, propsValue: context.propsValue, }); }, async test(context) { return await pollingHelper.test(polling, context); }, async run(context) { return await pollingHelper.poll(polling, context); }, sampleData: { id: 'sve-GBc89WPLPncm4laYG', created_at: '2025-05-23T15:09:44.273Z', updated_at: '2025-05-23T15:09:48.128Z', deleted_at: null, started_at: '2025-05-23T15:09:45.700Z', completed_at: '2025-05-23T15:09:47.997Z', run_time: 3, status: 'ERROR', kind: 'comfyui', data: { prompt: { '3': { _meta: { title: 'KSampler', }, inputs: { cfg: 8, seed: 156680208700286, model: ['4', 0], steps: 20, denoise: 1, negative: ['7', 0], positive: ['6', 0], scheduler: 'normal', latent_image: ['5', 0], sampler_name: 'euler', }, class_type: 'KSampler', }, '4': { _meta: { title: 'Load Checkpoint', }, inputs: { ckpt_name: 'v1-5-pruned-emaonly-fp16.safetensors', }, class_type: 'CheckpointLoaderSimple', }, '5': { _meta: { title: 'Empty Latent Image', }, inputs: { width: 512, height: 512, batch_size: 1, }, class_type: 'EmptyLatentImage', }, '6': { _meta: { title: 'CLIP Text Encode (Prompt)', }, inputs: { clip: ['4', 1], text: 'beautiful scenery nature glass bottle landscape, , purple galaxy bottle,', }, class_type: 'CLIPTextEncode', }, '7': { _meta: { title: 'CLIP Text Encode (Prompt)', }, inputs: { clip: ['4', 1], text: 'text, watermark', }, class_type: 'xx', }, '8': { _meta: { title: 'VAE Decode', }, inputs: { vae: ['4', 2], samples: ['3', 0], }, class_type: 'VAEDecode', }, '9': { _meta: { title: 'Save Image', }, inputs: { images: ['8', 0], filename_prefix: 'ComfyUI', }, class_type: 'SaveImage', }, }, webhook: '', }, workflow: null, workflow_api: null, workflow_id: '46AnCzsekAoAXLZqVQUXH', output: { error: { details: { error: { type: 'invalid_prompt', details: "Node ID '#7'", message: 'Cannot execute because node xx does not exist.', extra_info: {}, }, node_errors: {}, }, prompt_id: 'sve-GBc89WPLPncm4laYG', traceback: [ ' File "/app/headless.py", line 771, in run_workflow\n prompt_id = self.queue_prompt(wf["prompt"])\n', ' File "/app/headless.py", line 421, in queue_prompt\n raise RuntimeError(output)\n', ], exception_type: 'invalid_prompt', exception_message: "Cannot execute because node xx does not exist.: Node ID '#7'", }, output: { error: { details: { error: { type: 'invalid_prompt', details: "Node ID '#7'", message: 'Cannot execute because node xx does not exist.', extra_info: {}, }, node_errors: {}, }, prompt_id: 'sve-GBc89WPLPncm4laYG', traceback: [ ' File "/app/headless.py", line 771, in run_workflow\n prompt_id = self.queue_prompt(wf["prompt"])\n', ' File "/app/headless.py", line 421, in queue_prompt\n raise RuntimeError(output)\n', ], exception_type: 'invalid_prompt', exception_message: "Cannot execute because node xx does not exist.: Node ID '#7'", }, }, }, error: null, files: {}, name: null, tags: [], view_count: 0, download_count: 0, is_nsfw: false, user_id: '6VbYatQkJjualbDX84D2j', device: 'NVIDIA L4', accelerator: 'L4', visibility: 'PUBLIC', parent_workflow_id: null, parent_run_id: null, api_key_id: 'GM2FYwGmgiNpXTNDqT6MT', retry_count: 1, client_agent: null, webhook: '', project_id: 12297, user: null, }, });

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/activepieces/activepieces'

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