{"version":3,"sources":["/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/chunk-IR7NRTHL.cjs","../../src/utils/job-error.ts"],"names":[],"mappings":"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","file":"/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/chunk-IR7NRTHL.cjs","sourcesContent":[null,"/**\n * Classifies an error thrown by a scheduled job (LLM/agent call) so the\n * JobRunner can decide whether to retry and whether to apply a global\n * rate-limit cooldown. Unknown errors default to non-retryable to avoid\n * wasting retries on deterministic failures (bad definition, missing doc).\n */\n\nconst RETRYABLE_CODES = new Set([\n\t\"ECONNRESET\",\n\t\"ETIMEDOUT\",\n\t\"ECONNREFUSED\",\n\t\"EPIPE\",\n\t\"EAI_AGAIN\",\n]);\n\nexport interface JobErrorClassification {\n\tretryable: boolean;\n\trateLimited: boolean;\n\t/** From a Retry-After header when present (ms). */\n\tretryAfterMs?: number;\n}\n\nfunction extractStatus(error: unknown): number | undefined {\n\tif (!error || typeof error !== \"object\") return undefined;\n\tconst e = error as {\n\t\tstatus?: unknown;\n\t\tstatusCode?: unknown;\n\t\tresponse?: { status?: unknown };\n\t};\n\tif (typeof e.status === \"number\") return e.status;\n\tif (typeof e.statusCode === \"number\") return e.statusCode;\n\tif (typeof e.response?.status === \"number\") return e.response.status;\n\treturn undefined;\n}\n\nfunction readHeader(headers: unknown, name: string): string | undefined {\n\tif (!headers) return undefined;\n\tif (typeof (headers as { get?: unknown }).get === \"function\") {\n\t\tconst value = (headers as { get: (n: string) => unknown }).get(name);\n\t\treturn typeof value === \"string\" ? value : undefined;\n\t}\n\tif (typeof headers === \"object\") {\n\t\tconst value = (headers as Record<string, unknown>)[name];\n\t\treturn typeof value === \"string\" ? value : undefined;\n\t}\n\treturn undefined;\n}\n\nfunction extractRetryAfterMs(error: unknown): number | undefined {\n\tif (!error || typeof error !== \"object\") return undefined;\n\tconst e = error as { headers?: unknown; response?: { headers?: unknown } };\n\tconst raw =\n\t\treadHeader(e.headers, \"retry-after\") ??\n\t\treadHeader(e.response?.headers, \"retry-after\");\n\tif (!raw) return undefined;\n\tconst seconds = Number.parseInt(raw, 10);\n\treturn Number.isFinite(seconds) && seconds > 0 ? seconds * 1000 : undefined;\n}\n\nexport function classifyJobError(error: unknown): JobErrorClassification {\n\tconst status = extractStatus(error);\n\tif (status === 429) {\n\t\treturn {\n\t\t\tretryable: true,\n\t\t\trateLimited: true,\n\t\t\tretryAfterMs: extractRetryAfterMs(error),\n\t\t};\n\t}\n\tif (status !== undefined) {\n\t\treturn { retryable: status >= 500, rateLimited: false };\n\t}\n\n\tconst code = (error as { code?: unknown } | undefined)?.code;\n\tif (typeof code === \"string\" && RETRYABLE_CODES.has(code)) {\n\t\treturn { retryable: true, rateLimited: false };\n\t}\n\n\tconst message = error instanceof Error ? error.message : String(error ?? \"\");\n\tif (/\\b429\\b|rate limit/i.test(message)) {\n\t\treturn { retryable: true, rateLimited: true };\n\t}\n\tif (/timeout|timed out/i.test(message)) {\n\t\treturn { retryable: true, rateLimited: false };\n\t}\n\treturn { retryable: false, rateLimited: false };\n}\n"]}