From eb3e9c649bf00a6c179f4c7f5dbbe2db3b59b136 Mon Sep 17 00:00:00 2001 From: max <40643627+quotentiroler@users.noreply.github.com> Date: Sun, 8 Feb 2026 05:24:50 -0800 Subject: [PATCH] chore: fix vitest standalone configs and update package description (#11865) * chore: fix vitest standalone configs and update package description - vitest.live.config.ts and vitest.e2e.config.ts now extend root config - Inherits testTimeout (120s), resolve.alias, pool, setupFiles, excludes - ui/vitest.node.config.ts gets explicit 120s timeout - package.json description updated for multi-channel AI gateway - Removed unused src/utils/time-format.ts * chore: filter inherited excludes in live/e2e vitest configs * refactor: dedupe GroupPolicy/DmPolicy in extensions Import from openclaw/plugin-sdk instead of re-declaring identical types. --- extensions/bluebubbles/src/types.ts | 3 +-- extensions/matrix/src/onboarding.ts | 3 ++- extensions/matrix/src/types.ts | 4 ++-- package.json | 2 +- src/utils/time-format.ts | 6 ------ ui/vitest.node.config.ts | 1 + vitest.e2e.config.ts | 16 +++++++--------- vitest.live.config.ts | 16 +++++++--------- 8 files changed, 21 insertions(+), 30 deletions(-) delete mode 100644 src/utils/time-format.ts diff --git a/extensions/bluebubbles/src/types.ts b/extensions/bluebubbles/src/types.ts index d2aeb40227..f08539f3ff 100644 --- a/extensions/bluebubbles/src/types.ts +++ b/extensions/bluebubbles/src/types.ts @@ -1,5 +1,4 @@ -export type DmPolicy = "pairing" | "allowlist" | "open" | "disabled"; -export type GroupPolicy = "open" | "disabled" | "allowlist"; +export type { DmPolicy, GroupPolicy } from "openclaw/plugin-sdk"; export type BlueBubblesGroupConfig = { /** If true, only respond in this group when mentioned. */ diff --git a/extensions/matrix/src/onboarding.ts b/extensions/matrix/src/onboarding.ts index 1a9ed014c8..2ba5478a65 100644 --- a/extensions/matrix/src/onboarding.ts +++ b/extensions/matrix/src/onboarding.ts @@ -1,3 +1,4 @@ +import type { DmPolicy } from "openclaw/plugin-sdk"; import { addWildcardAllowFrom, formatDocsLink, @@ -6,7 +7,7 @@ import { type ChannelOnboardingDmPolicy, type WizardPrompter, } from "openclaw/plugin-sdk"; -import type { CoreConfig, DmPolicy } from "./types.js"; +import type { CoreConfig } from "./types.js"; import { listMatrixDirectoryGroupsLive } from "./directory-live.js"; import { resolveMatrixAccount } from "./matrix/accounts.js"; import { ensureMatrixSdkInstalled, isMatrixSdkAvailable } from "./matrix/deps.js"; diff --git a/extensions/matrix/src/types.ts b/extensions/matrix/src/types.ts index c316c24bd5..fc636cc70d 100644 --- a/extensions/matrix/src/types.ts +++ b/extensions/matrix/src/types.ts @@ -1,6 +1,6 @@ +export type { DmPolicy, GroupPolicy } from "openclaw/plugin-sdk"; + export type ReplyToMode = "off" | "first" | "all"; -export type GroupPolicy = "open" | "disabled" | "allowlist"; -export type DmPolicy = "pairing" | "allowlist" | "open" | "disabled"; export type MatrixDmConfig = { /** If false, ignore all incoming Matrix DMs. Default: true. */ diff --git a/package.json b/package.json index d63032e2dd..0487b6ac23 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "openclaw", "version": "2026.2.6-3", - "description": "WhatsApp gateway CLI (Baileys web) with Pi RPC agent", + "description": "Multi-channel AI gateway with extensible messaging integrations", "keywords": [], "license": "MIT", "author": "", diff --git a/src/utils/time-format.ts b/src/utils/time-format.ts deleted file mode 100644 index 6ec8777623..0000000000 --- a/src/utils/time-format.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { formatRelativeTimestamp } from "../infra/format-time/format-relative.ts"; - -/** Delegates to centralized formatRelativeTimestamp with date fallback for >7d. */ -export function formatRelativeTime(timestamp: number): string { - return formatRelativeTimestamp(timestamp, { dateFallback: true, fallback: "unknown" }); -} diff --git a/ui/vitest.node.config.ts b/ui/vitest.node.config.ts index 0522e88e03..e71ff10823 100644 --- a/ui/vitest.node.config.ts +++ b/ui/vitest.node.config.ts @@ -3,6 +3,7 @@ import { defineConfig } from "vitest/config"; // Node-only tests for pure logic (no Playwright/browser dependency). export default defineConfig({ test: { + testTimeout: 120_000, include: ["src/**/*.node.test.ts"], environment: "node", }, diff --git a/vitest.e2e.config.ts b/vitest.e2e.config.ts index 0bb8248782..da382ce6fe 100644 --- a/vitest.e2e.config.ts +++ b/vitest.e2e.config.ts @@ -1,22 +1,20 @@ import os from "node:os"; import { defineConfig } from "vitest/config"; +import baseConfig from "./vitest.config.ts"; const isCI = process.env.CI === "true" || process.env.GITHUB_ACTIONS === "true"; const cpuCount = os.cpus().length; const e2eWorkers = isCI ? 2 : Math.min(4, Math.max(1, Math.floor(cpuCount * 0.25))); +const baseTest = (baseConfig as { test?: { exclude?: string[] } }).test ?? {}; +const exclude = (baseTest.exclude ?? []).filter((p) => p !== "**/*.e2e.test.ts"); + export default defineConfig({ + ...baseConfig, test: { - pool: "forks", + ...baseTest, maxWorkers: e2eWorkers, include: ["test/**/*.e2e.test.ts", "src/**/*.e2e.test.ts"], - setupFiles: ["test/setup.ts"], - exclude: [ - "dist/**", - "apps/macos/**", - "apps/macos/.build/**", - "**/vendor/**", - "dist/OpenClaw.app/**", - ], + exclude, }, }); diff --git a/vitest.live.config.ts b/vitest.live.config.ts index 8c5b826fa8..f990c4927b 100644 --- a/vitest.live.config.ts +++ b/vitest.live.config.ts @@ -1,17 +1,15 @@ import { defineConfig } from "vitest/config"; +import baseConfig from "./vitest.config.ts"; + +const baseTest = (baseConfig as { test?: { exclude?: string[] } }).test ?? {}; +const exclude = (baseTest.exclude ?? []).filter((p) => p !== "**/*.live.test.ts"); export default defineConfig({ + ...baseConfig, test: { - pool: "forks", + ...baseTest, maxWorkers: 1, include: ["src/**/*.live.test.ts"], - setupFiles: ["test/setup.ts"], - exclude: [ - "dist/**", - "apps/macos/**", - "apps/macos/.build/**", - "**/vendor/**", - "dist/OpenClaw.app/**", - ], + exclude, }, });