{"record":{"id":"7c34eee6bfd6b2a7","repo":"paperclipai/paperclip","slug":"failed-to-disable-1-timer-heartbeat-detail","errorCode":null,"errorMessage":"Failed to disable 1 timer heartbeat: ${detail}","messagePattern":"Failed to disable 1 timer heartbeat: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"ui/src/pages/InstanceSettings.tsx","lineNumber":109,"sourceCode":"            agentRow.id,\n            {\n              runtimeConfig: {\n                ...runtimeConfig,\n                heartbeat: { ...heartbeat, enabled: false },\n              },\n            },\n            agentRow.companyId,\n          );\n        }),\n      );\n\n      const failures = results.filter((result): result is PromiseRejectedResult => result.status === \"rejected\");\n      if (failures.length > 0) {\n        const firstError = failures[0]?.reason;\n        const detail = firstError instanceof Error ? firstError.message : \"Unknown error\";\n        throw new Error(\n          failures.length === 1\n            ? `Failed to disable 1 timer heartbeat: ${detail}`\n            : `Failed to disable ${failures.length} of ${enabled.length} timer heartbeats. First error: ${detail}`,\n        );\n      }\n      return enabled;\n    },\n    onSuccess: async (updatedRows) => {\n      setActionError(null);\n      const companies = new Set(updatedRows.map((row) => row.companyId));\n      await Promise.all([\n        queryClient.invalidateQueries({ queryKey: queryKeys.instance.schedulerHeartbeats }),\n        ...Array.from(companies, (companyId) =>\n          queryClient.invalidateQueries({ queryKey: queryKeys.agents.list(companyId) }),\n        ),\n        ...updatedRows.map((row) =>\n          queryClient.invalidateQueries({ queryKey: queryKeys.agents.detail(row.id) }),\n        ),\n      ]);\n    },","sourceCodeStart":91,"sourceCodeEnd":127,"githubUrl":"https://github.com/paperclipai/paperclip/blob/a7e689b3c35347b529cb9f54c9b9a8575a3dcab6/ui/src/pages/InstanceSettings.tsx#L91-L127","documentation":"Aggregated failure message in the InstanceSettings bulk 'disable timer heartbeats' action: exactly one of the parallel agent runtimeConfig update promises rejected, and the first rejection's message is inlined. It fires after Promise.allSettled when a single agent's heartbeat-disable PATCH failed.","triggerScenarios":"Thrown at ui/src/pages/InstanceSettings.tsx:110 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the detail error, fix the cause (e.g. permissions or server state), and retry disabling the heartbeat."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a7e689b3c35347b529cb9f54c9b9a8575a3dcab6","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}