mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-25 03:45:46 -06:00
fix(telegram): break spool retry import cycle
This commit is contained in:
@@ -7,7 +7,7 @@ import {
|
||||
import type { BackoffPolicy } from "openclaw/plugin-sdk/runtime-env";
|
||||
import { computeBackoff } from "openclaw/plugin-sdk/runtime-env";
|
||||
import { isTelegramMessageDispatchReplayForgetError } from "./message-dispatch-dedupe.js";
|
||||
import type { TelegramSpooledUpdate } from "./telegram-ingress-spool.js";
|
||||
import type { TelegramSpooledUpdate } from "./telegram-ingress-spool.types.js";
|
||||
|
||||
export const TELEGRAM_SPOOLED_RETRY_MAX_ATTEMPTS = 8;
|
||||
export const TELEGRAM_SPOOLED_RETRY_DEAD_LETTER_MIN_AGE_MS = 24 * 60 * 60 * 1000;
|
||||
|
||||
@@ -15,6 +15,16 @@ import { getTelegramRuntime } from "./runtime.js";
|
||||
import { getTelegramSequentialKey } from "./sequential-key.js";
|
||||
import { resolveSpooledUpdatePersistenceRetryDelayMs } from "./spooled-update-retry-policy.js";
|
||||
import { normalizeTelegramStateAccountId } from "./state-account-id.js";
|
||||
import type {
|
||||
ClaimedTelegramSpooledUpdate,
|
||||
TelegramSpooledUpdate,
|
||||
TelegramSpooledUpdateClaimOwner,
|
||||
} from "./telegram-ingress-spool.types.js";
|
||||
|
||||
export type {
|
||||
ClaimedTelegramSpooledUpdate,
|
||||
TelegramSpooledUpdate,
|
||||
} from "./telegram-ingress-spool.types.js";
|
||||
|
||||
const SPOOL_VERSION = 1;
|
||||
const TELEGRAM_INGRESS_SPOOL_PREFIX = "ingress-spool-";
|
||||
@@ -26,13 +36,6 @@ const TELEGRAM_SPOOLED_UPDATE_COMPLETED_TTL_MS = 30 * 24 * 60 * 60 * 1000;
|
||||
const TELEGRAM_SPOOLED_UPDATE_COMPLETED_MAX_ENTRIES = 1000;
|
||||
const TELEGRAM_SPOOLED_UPDATE_PROCESS_ID = `${process.pid}:${randomUUID()}`;
|
||||
|
||||
type TelegramSpooledUpdateClaimOwner = {
|
||||
processId: string;
|
||||
processPid: number;
|
||||
claimedAt: number;
|
||||
claimToken?: string;
|
||||
};
|
||||
|
||||
type TelegramSpooledUpdatePayload = {
|
||||
version: number;
|
||||
updateId: number;
|
||||
@@ -40,21 +43,6 @@ type TelegramSpooledUpdatePayload = {
|
||||
update: unknown;
|
||||
};
|
||||
|
||||
export type TelegramSpooledUpdate = {
|
||||
updateId: number;
|
||||
path: string;
|
||||
update: unknown;
|
||||
receivedAt: number;
|
||||
attempts?: number;
|
||||
lastAttemptAt?: number;
|
||||
lastError?: string;
|
||||
claim?: TelegramSpooledUpdateClaimOwner;
|
||||
};
|
||||
|
||||
export type ClaimedTelegramSpooledUpdate = TelegramSpooledUpdate & {
|
||||
pendingPath: string;
|
||||
};
|
||||
|
||||
export class TelegramSpooledUpdateCompletionOwnershipError extends Error {
|
||||
constructor(updateId: number) {
|
||||
super(`Telegram spooled update ${updateId} lost claim ownership before completion.`);
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
// Telegram plugin module defines ingress spool record contracts.
|
||||
|
||||
export type TelegramSpooledUpdateClaimOwner = {
|
||||
processId: string;
|
||||
processPid: number;
|
||||
claimedAt: number;
|
||||
claimToken?: string;
|
||||
};
|
||||
|
||||
export type TelegramSpooledUpdate = {
|
||||
updateId: number;
|
||||
path: string;
|
||||
update: unknown;
|
||||
receivedAt: number;
|
||||
attempts?: number;
|
||||
lastAttemptAt?: number;
|
||||
lastError?: string;
|
||||
claim?: TelegramSpooledUpdateClaimOwner;
|
||||
};
|
||||
|
||||
export type ClaimedTelegramSpooledUpdate = TelegramSpooledUpdate & {
|
||||
pendingPath: string;
|
||||
};
|
||||
Reference in New Issue
Block a user