@inkeep/agents-core 0.51.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/auth/auth-schema.d.ts +107 -107
  2. package/dist/auth/auth-validation-schemas.d.ts +135 -135
  3. package/dist/auth/auth.d.ts +18 -18
  4. package/dist/auth/permissions.d.ts +9 -9
  5. package/dist/client-exports.d.ts +8 -14
  6. package/dist/data-access/manage/agentFull.d.ts +2 -1
  7. package/dist/data-access/manage/agents.d.ts +33 -32
  8. package/dist/data-access/manage/artifactComponents.d.ts +16 -15
  9. package/dist/data-access/manage/contextConfigs.d.ts +10 -9
  10. package/dist/data-access/manage/credentialReferences.d.ts +2 -1
  11. package/dist/data-access/manage/dataComponents.d.ts +8 -7
  12. package/dist/data-access/manage/evalConfig.d.ts +2 -1
  13. package/dist/data-access/manage/externalAgents.d.ts +2 -1
  14. package/dist/data-access/manage/functionTools.d.ts +14 -14
  15. package/dist/data-access/manage/functions.d.ts +2 -2
  16. package/dist/data-access/manage/projectFull.d.ts +2 -1
  17. package/dist/data-access/manage/projects.d.ts +2 -1
  18. package/dist/data-access/manage/scheduledTriggers.d.ts +2 -2
  19. package/dist/data-access/manage/scheduledWorkflows.d.ts +2 -2
  20. package/dist/data-access/manage/scope-helpers.d.ts +15 -22
  21. package/dist/data-access/manage/scope-helpers.js +15 -12
  22. package/dist/data-access/manage/skills.d.ts +15 -14
  23. package/dist/data-access/manage/subAgentExternalAgentRelations.d.ts +20 -19
  24. package/dist/data-access/manage/subAgentRelations.d.ts +22 -21
  25. package/dist/data-access/manage/subAgentTeamAgentRelations.d.ts +20 -19
  26. package/dist/data-access/manage/subAgents.d.ts +23 -22
  27. package/dist/data-access/manage/tools.d.ts +26 -25
  28. package/dist/data-access/manage/triggers.d.ts +2 -2
  29. package/dist/data-access/runtime/apiKeys.d.ts +10 -9
  30. package/dist/data-access/runtime/cascade-delete.d.ts +1 -1
  31. package/dist/data-access/runtime/contextCache.d.ts +2 -2
  32. package/dist/data-access/runtime/conversations.d.ts +14 -13
  33. package/dist/data-access/runtime/evalRuns.d.ts +2 -1
  34. package/dist/data-access/runtime/ledgerArtifacts.d.ts +1 -1
  35. package/dist/data-access/runtime/messages.d.ts +17 -16
  36. package/dist/data-access/runtime/scheduledTriggerInvocations.d.ts +2 -2
  37. package/dist/data-access/runtime/tasks.d.ts +3 -3
  38. package/dist/data-access/runtime/triggerInvocations.d.ts +2 -2
  39. package/dist/db/manage/manage-schema.d.ts +445 -445
  40. package/dist/db/manage/manage-schema.js +1 -1
  41. package/dist/db/manage/scope-definitions.d.ts +31 -0
  42. package/dist/db/manage/scope-definitions.js +31 -0
  43. package/dist/db/runtime/runtime-schema.d.ts +290 -290
  44. package/dist/dolt/branches-api.d.ts +2 -1
  45. package/dist/index.d.ts +5 -3
  46. package/dist/index.js +3 -2
  47. package/dist/middleware/no-auth.d.ts +2 -2
  48. package/dist/types/index.d.ts +2 -1
  49. package/dist/types/utility.d.ts +2 -11
  50. package/dist/utils/error.d.ts +3 -1
  51. package/dist/utils/error.js +11 -1
  52. package/dist/utils/index.d.ts +3 -2
  53. package/dist/utils/index.js +3 -2
  54. package/dist/utils/retry.d.ts +8 -0
  55. package/dist/utils/retry.js +30 -0
  56. package/dist/validation/schemas.d.ts +396 -426
  57. package/dist/validation/schemas.js +2 -1
  58. package/drizzle/manage/0010_oval_angel.sql +2 -0
  59. package/drizzle/manage/meta/0010_snapshot.json +3673 -0
  60. package/drizzle/manage/meta/_journal.json +7 -0
  61. package/package.json +1 -1
@@ -191,6 +191,16 @@ const errorSchemaFactory = (code, description) => ({
191
191
  }).openapi({ description: "Legacy error format for backward compatibility." })
192
192
  }).openapi(toTitleCase(description)) } }
193
193
  });
194
+ function isUniqueConstraintError(error) {
195
+ const err = error;
196
+ return err?.cause?.code === "23505" || !!err?.cause?.message?.includes("1062") || !!err?.message?.includes("already exists");
197
+ }
198
+ function throwIfUniqueConstraintError(error, message) {
199
+ if (isUniqueConstraintError(error)) throw createApiError({
200
+ code: "conflict",
201
+ message
202
+ });
203
+ }
194
204
  const commonCreateErrorResponses = {
195
205
  400: errorSchemaFactory("bad_request", "Bad Request"),
196
206
  401: errorSchemaFactory("unauthorized", "Unauthorized"),
@@ -224,4 +234,4 @@ const commonDeleteErrorResponses = {
224
234
  };
225
235
 
226
236
  //#endregion
227
- export { ERROR_DOCS_BASE_URL, ErrorCode, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, createApiError, errorResponseSchema, errorSchemaFactory, handleApiError, problemDetailsSchema };
237
+ export { ERROR_DOCS_BASE_URL, ErrorCode, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, createApiError, errorResponseSchema, errorSchemaFactory, handleApiError, isUniqueConstraintError, problemDetailsSchema, throwIfUniqueConstraintError };
@@ -7,13 +7,14 @@ import { McpOAuthFlowResult, McpTokenExchangeResult, OAuthConfig, detectAuthenti
7
7
  import { generateId, getConversationId } from "./conversations.js";
8
8
  import { getCredentialStoreLookupKeyFromRetrievalParams } from "./credential-store-utils.js";
9
9
  import { normalizeDateString, toISODateString } from "./date.js";
10
- import { CommonCreateErrorResponses, CommonDeleteErrorResponses, CommonGetErrorResponses, CommonUpdateErrorResponses, ERROR_DOCS_BASE_URL, ErrorCode, ErrorCodes, ErrorResponse, ProblemDetails, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, createApiError, errorResponseSchema, errorSchemaFactory, handleApiError, problemDetailsSchema } from "./error.js";
10
+ import { CommonCreateErrorResponses, CommonDeleteErrorResponses, CommonGetErrorResponses, CommonUpdateErrorResponses, ERROR_DOCS_BASE_URL, ErrorCode, ErrorCodes, ErrorResponse, ProblemDetails, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, createApiError, errorResponseSchema, errorSchemaFactory, handleApiError, isUniqueConstraintError, problemDetailsSchema, throwIfUniqueConstraintError } from "./error.js";
11
11
  import { LLMMessage, formatMessagesForLLM, formatMessagesForLLMContext } from "./format-messages.js";
12
12
  import { getInProcessFetch, registerAppFetch } from "./in-process-fetch.js";
13
13
  import { JsonTransformer } from "./JsonTransformer.js";
14
14
  import { parseEmbeddedJson } from "./json-parser.js";
15
15
  import { MockLanguageModel, createMockModel } from "./mock-provider.js";
16
16
  import { ModelFactory } from "./model-factory.js";
17
+ import { retryWithBackoff } from "./retry.js";
17
18
  import { convertZodToJsonSchema, convertZodToJsonSchemaWithPreview, extractPreviewFields, isZodSchema, preview } from "./schema-conversion.js";
18
19
  import { GenerateServiceTokenParams, ServiceTokenPayload, VerifyServiceTokenResult, generateServiceToken, validateTargetAgent, validateTenantId, verifyAuthorizationHeader, verifyServiceToken } from "./service-token-auth.js";
19
20
  import { SignSlackLinkTokenParams, SlackLinkTokenPayload, SlackLinkTokenPayloadSchema, VerifySlackLinkTokenResult, signSlackLinkToken, verifySlackLinkToken } from "./slack-link-token.js";
@@ -27,4 +28,4 @@ import "./third-party-mcp-servers/index.js";
27
28
  import { flushTraces, getTracer, setSpanWithError, unwrapError } from "./tracer-factory.js";
28
29
  import { HashedHeaderValue, SignatureVerificationErrorCode, SignatureVerificationResult, TriggerAuthResult, hashAuthenticationHeaders, hashTriggerHeaderValue, validateTriggerHeaderValue, verifySignatureWithConfig, verifyTriggerAuth } from "./trigger-auth.js";
29
30
  import { _resetWaitUntilCache, getWaitUntil } from "./wait-until.js";
30
- export { ApiKeyGenerationResult, CommonCreateErrorResponses, CommonDeleteErrorResponses, CommonGetErrorResponses, CommonUpdateErrorResponses, CredentialScope, ERROR_DOCS_BASE_URL, ErrorCode, ErrorCodes, ErrorResponse, GenerateInternalServiceTokenParams, GenerateServiceTokenParams, HashedHeaderValue, InternalServiceId, InternalServiceTokenPayload, InternalServices, JsonTransformer, JwtVerifyResult, LLMMessage, LoggerFactoryConfig, McpClient, McpClientOptions, McpOAuthFlowResult, McpSSEConfig, McpServerConfig, McpStreamableHttpConfig, McpTokenExchangeResult, MockLanguageModel, ModelFactory, OAuthConfig, ParsedSSEResponse, PinoLogger, PinoLoggerConfig, ProblemDetails, ServiceTokenPayload, SignJwtOptions, SignSlackLinkTokenParams, SignSlackUserTokenParams, SignatureVerificationErrorCode, SignatureVerificationResult, SignedTempToken, SlackAccessTokenPayload, SlackAccessTokenPayloadSchema, SlackLinkTokenPayload, SlackLinkTokenPayloadSchema, TempTokenPayload, TriggerAuthResult, VerifyInternalServiceTokenResult, VerifyJwtOptions, VerifyServiceTokenResult, VerifySlackLinkTokenResult, VerifySlackUserTokenResult, _resetWaitUntilCache, buildComposioMCPUrl, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, convertZodToJsonSchema, convertZodToJsonSchemaWithPreview, createApiError, createMockModel, decodeJwtPayload, detectAuthenticationRequired, errorResponseSchema, errorSchemaFactory, exchangeMcpAuthorizationCode, extractBearerToken, extractComposioServerId, extractPreviewFields, extractPublicId, fetchComposioServers, fetchSingleComposioServer, flushTraces, formatMessagesForLLM, formatMessagesForLLMContext, generateApiKey, generateId, generateInternalServiceToken, generateServiceToken, getComposioOAuthRedirectUrl, getComposioUserId, getConversationId, getCredentialStoreLookupKeyFromRetrievalParams, getInProcessFetch, getJwtSecret, getLogger, getMetadataFromApiKey, getTracer, getWaitUntil, handleApiError, hasIssuer, hashApiKey, hashAuthenticationHeaders, hashTriggerHeaderValue, initiateMcpOAuthFlow, interpolateTemplate, isApiKeyExpired, isComposioMCPServerAuthenticated, isInternalServiceToken, isSlackUserToken, isThirdPartyMCPServerAuthenticated, isZodSchema, loggerFactory, maskApiKey, normalizeDateString, parseEmbeddedJson, parseSSEResponse, preview, problemDetailsSchema, registerAppFetch, setSpanWithError, signJwt, signSlackLinkToken, signSlackUserToken, signTempToken, toISODateString, unwrapError, validateApiKey, validateInternalServiceProjectAccess, validateInternalServiceTenantAccess, validateTargetAgent, validateTenantId, validateTriggerHeaderValue, verifyAuthorizationHeader, verifyInternalServiceAuthHeader, verifyInternalServiceToken, verifyJwt, verifyServiceToken, verifySignatureWithConfig, verifySlackLinkToken, verifySlackUserToken, verifyTempToken, verifyTriggerAuth };
31
+ export { ApiKeyGenerationResult, CommonCreateErrorResponses, CommonDeleteErrorResponses, CommonGetErrorResponses, CommonUpdateErrorResponses, CredentialScope, ERROR_DOCS_BASE_URL, ErrorCode, ErrorCodes, ErrorResponse, GenerateInternalServiceTokenParams, GenerateServiceTokenParams, HashedHeaderValue, InternalServiceId, InternalServiceTokenPayload, InternalServices, JsonTransformer, JwtVerifyResult, LLMMessage, LoggerFactoryConfig, McpClient, McpClientOptions, McpOAuthFlowResult, McpSSEConfig, McpServerConfig, McpStreamableHttpConfig, McpTokenExchangeResult, MockLanguageModel, ModelFactory, OAuthConfig, ParsedSSEResponse, PinoLogger, PinoLoggerConfig, ProblemDetails, ServiceTokenPayload, SignJwtOptions, SignSlackLinkTokenParams, SignSlackUserTokenParams, SignatureVerificationErrorCode, SignatureVerificationResult, SignedTempToken, SlackAccessTokenPayload, SlackAccessTokenPayloadSchema, SlackLinkTokenPayload, SlackLinkTokenPayloadSchema, TempTokenPayload, TriggerAuthResult, VerifyInternalServiceTokenResult, VerifyJwtOptions, VerifyServiceTokenResult, VerifySlackLinkTokenResult, VerifySlackUserTokenResult, _resetWaitUntilCache, buildComposioMCPUrl, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, convertZodToJsonSchema, convertZodToJsonSchemaWithPreview, createApiError, createMockModel, decodeJwtPayload, detectAuthenticationRequired, errorResponseSchema, errorSchemaFactory, exchangeMcpAuthorizationCode, extractBearerToken, extractComposioServerId, extractPreviewFields, extractPublicId, fetchComposioServers, fetchSingleComposioServer, flushTraces, formatMessagesForLLM, formatMessagesForLLMContext, generateApiKey, generateId, generateInternalServiceToken, generateServiceToken, getComposioOAuthRedirectUrl, getComposioUserId, getConversationId, getCredentialStoreLookupKeyFromRetrievalParams, getInProcessFetch, getJwtSecret, getLogger, getMetadataFromApiKey, getTracer, getWaitUntil, handleApiError, hasIssuer, hashApiKey, hashAuthenticationHeaders, hashTriggerHeaderValue, initiateMcpOAuthFlow, interpolateTemplate, isApiKeyExpired, isComposioMCPServerAuthenticated, isInternalServiceToken, isSlackUserToken, isThirdPartyMCPServerAuthenticated, isUniqueConstraintError, isZodSchema, loggerFactory, maskApiKey, normalizeDateString, parseEmbeddedJson, parseSSEResponse, preview, problemDetailsSchema, registerAppFetch, retryWithBackoff, setSpanWithError, signJwt, signSlackLinkToken, signSlackUserToken, signTempToken, throwIfUniqueConstraintError, toISODateString, unwrapError, validateApiKey, validateInternalServiceProjectAccess, validateInternalServiceTenantAccess, validateTargetAgent, validateTenantId, validateTriggerHeaderValue, verifyAuthorizationHeader, verifyInternalServiceAuthHeader, verifyInternalServiceToken, verifyJwt, verifyServiceToken, verifySignatureWithConfig, verifySlackLinkToken, verifySlackUserToken, verifyTempToken, verifyTriggerAuth };
@@ -7,7 +7,7 @@ import { getCredentialStoreLookupKeyFromRetrievalParams } from "./credential-sto
7
7
  import { generateId, getConversationId } from "./conversations.js";
8
8
  import { extractPublicId, generateApiKey, getMetadataFromApiKey, hashApiKey, isApiKeyExpired, maskApiKey, validateApiKey } from "./apiKeys.js";
9
9
  import { normalizeDateString, toISODateString } from "./date.js";
10
- import { ERROR_DOCS_BASE_URL, ErrorCode, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, createApiError, errorResponseSchema, errorSchemaFactory, handleApiError, problemDetailsSchema } from "./error.js";
10
+ import { ERROR_DOCS_BASE_URL, ErrorCode, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, createApiError, errorResponseSchema, errorSchemaFactory, handleApiError, isUniqueConstraintError, problemDetailsSchema, throwIfUniqueConstraintError } from "./error.js";
11
11
  import { formatMessagesForLLM, formatMessagesForLLMContext } from "./format-messages.js";
12
12
  import { getInProcessFetch, registerAppFetch } from "./in-process-fetch.js";
13
13
  import { JsonTransformer } from "./JsonTransformer.js";
@@ -15,6 +15,7 @@ import { parseEmbeddedJson } from "./json-parser.js";
15
15
  import { McpClient } from "./mcp-client.js";
16
16
  import { MockLanguageModel, createMockModel } from "./mock-provider.js";
17
17
  import { ModelFactory } from "./model-factory.js";
18
+ import { retryWithBackoff } from "./retry.js";
18
19
  import { generateServiceToken, validateTargetAgent, validateTenantId, verifyAuthorizationHeader, verifyServiceToken } from "./service-token-auth.js";
19
20
  import { SlackLinkTokenPayloadSchema, signSlackLinkToken, verifySlackLinkToken } from "./slack-link-token.js";
20
21
  import { SlackAccessTokenPayloadSchema, isSlackUserToken, signSlackUserToken, verifySlackUserToken } from "./slack-user-token.js";
@@ -28,4 +29,4 @@ import { flushTraces, getTracer, setSpanWithError, unwrapError } from "./tracer-
28
29
  import { hashAuthenticationHeaders, hashTriggerHeaderValue, validateTriggerHeaderValue, verifySignatureWithConfig, verifyTriggerAuth } from "./trigger-auth.js";
29
30
  import { _resetWaitUntilCache, getWaitUntil } from "./wait-until.js";
30
31
 
31
- export { ERROR_DOCS_BASE_URL, ErrorCode, InternalServices, JsonTransformer, McpClient, MockLanguageModel, ModelFactory, PinoLogger, SlackAccessTokenPayloadSchema, SlackLinkTokenPayloadSchema, _resetWaitUntilCache, buildComposioMCPUrl, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, convertZodToJsonSchema, convertZodToJsonSchemaWithPreview, createApiError, createMockModel, decodeJwtPayload, detectAuthenticationRequired, errorResponseSchema, errorSchemaFactory, exchangeMcpAuthorizationCode, extractBearerToken, extractComposioServerId, extractPreviewFields, extractPublicId, fetchComposioServers, fetchSingleComposioServer, flushTraces, formatMessagesForLLM, formatMessagesForLLMContext, generateApiKey, generateId, generateInternalServiceToken, generateServiceToken, getComposioOAuthRedirectUrl, getComposioUserId, getConversationId, getCredentialStoreLookupKeyFromRetrievalParams, getInProcessFetch, getJwtSecret, getLogger, getMetadataFromApiKey, getTracer, getWaitUntil, handleApiError, hasIssuer, hashApiKey, hashAuthenticationHeaders, hashTriggerHeaderValue, initiateMcpOAuthFlow, interpolateTemplate, isApiKeyExpired, isComposioMCPServerAuthenticated, isInternalServiceToken, isSlackUserToken, isThirdPartyMCPServerAuthenticated, isZodSchema, loggerFactory, maskApiKey, normalizeDateString, parseEmbeddedJson, parseSSEResponse, preview, problemDetailsSchema, registerAppFetch, setSpanWithError, signJwt, signSlackLinkToken, signSlackUserToken, signTempToken, toISODateString, unwrapError, validateApiKey, validateInternalServiceProjectAccess, validateInternalServiceTenantAccess, validateTargetAgent, validateTenantId, validateTriggerHeaderValue, verifyAuthorizationHeader, verifyInternalServiceAuthHeader, verifyInternalServiceToken, verifyJwt, verifyServiceToken, verifySignatureWithConfig, verifySlackLinkToken, verifySlackUserToken, verifyTempToken, verifyTriggerAuth };
32
+ export { ERROR_DOCS_BASE_URL, ErrorCode, InternalServices, JsonTransformer, McpClient, MockLanguageModel, ModelFactory, PinoLogger, SlackAccessTokenPayloadSchema, SlackLinkTokenPayloadSchema, _resetWaitUntilCache, buildComposioMCPUrl, commonCreateErrorResponses, commonDeleteErrorResponses, commonGetErrorResponses, commonUpdateErrorResponses, convertZodToJsonSchema, convertZodToJsonSchemaWithPreview, createApiError, createMockModel, decodeJwtPayload, detectAuthenticationRequired, errorResponseSchema, errorSchemaFactory, exchangeMcpAuthorizationCode, extractBearerToken, extractComposioServerId, extractPreviewFields, extractPublicId, fetchComposioServers, fetchSingleComposioServer, flushTraces, formatMessagesForLLM, formatMessagesForLLMContext, generateApiKey, generateId, generateInternalServiceToken, generateServiceToken, getComposioOAuthRedirectUrl, getComposioUserId, getConversationId, getCredentialStoreLookupKeyFromRetrievalParams, getInProcessFetch, getJwtSecret, getLogger, getMetadataFromApiKey, getTracer, getWaitUntil, handleApiError, hasIssuer, hashApiKey, hashAuthenticationHeaders, hashTriggerHeaderValue, initiateMcpOAuthFlow, interpolateTemplate, isApiKeyExpired, isComposioMCPServerAuthenticated, isInternalServiceToken, isSlackUserToken, isThirdPartyMCPServerAuthenticated, isUniqueConstraintError, isZodSchema, loggerFactory, maskApiKey, normalizeDateString, parseEmbeddedJson, parseSSEResponse, preview, problemDetailsSchema, registerAppFetch, retryWithBackoff, setSpanWithError, signJwt, signSlackLinkToken, signSlackUserToken, signTempToken, throwIfUniqueConstraintError, toISODateString, unwrapError, validateApiKey, validateInternalServiceProjectAccess, validateInternalServiceTenantAccess, validateTargetAgent, validateTenantId, validateTriggerHeaderValue, verifyAuthorizationHeader, verifyInternalServiceAuthHeader, verifyInternalServiceToken, verifyJwt, verifyServiceToken, verifySignatureWithConfig, verifySlackLinkToken, verifySlackUserToken, verifyTempToken, verifyTriggerAuth };
@@ -0,0 +1,8 @@
1
+ //#region src/utils/retry.d.ts
2
+ declare function retryWithBackoff<T>(fn: () => Promise<T>, opts?: {
3
+ maxAttempts?: number;
4
+ maxDelayMs?: number;
5
+ label?: string;
6
+ }): Promise<T>;
7
+ //#endregion
8
+ export { retryWithBackoff };
@@ -0,0 +1,30 @@
1
+ import { getLogger } from "./logger.js";
2
+
3
+ //#region src/utils/retry.ts
4
+ const logger = getLogger("retry");
5
+ async function retryWithBackoff(fn, opts = {}) {
6
+ const { maxAttempts = 3, maxDelayMs = 4e3, label = "operation" } = opts;
7
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) try {
8
+ return await fn();
9
+ } catch (error) {
10
+ const isTimeout = error.name === "AbortError";
11
+ const status = error.status;
12
+ if (!isTimeout && !(typeof status === "number" && status >= 500) && !(status === 429) || attempt === maxAttempts) throw error;
13
+ const retryAfter = error.headers?.get?.("Retry-After");
14
+ const retryAfterMs = retryAfter ? (Number(retryAfter) || 0) * 1e3 : 0;
15
+ const baseDelay = Math.min(500 * 2 ** (attempt - 1), maxDelayMs);
16
+ const delay = Math.max(baseDelay, retryAfterMs) + Math.random() * 100;
17
+ logger.warn({
18
+ attempt,
19
+ maxAttempts,
20
+ status,
21
+ delay: Math.round(delay),
22
+ label
23
+ }, `Retrying ${label} after transient failure`);
24
+ await new Promise((resolve) => setTimeout(resolve, delay));
25
+ }
26
+ throw new Error("Unreachable");
27
+ }
28
+
29
+ //#endregion
30
+ export { retryWithBackoff };