fix: address notifier logging ci failures
This commit is contained in:
parent
509ece02b6
commit
67a030e7c0
|
|
@ -6,6 +6,8 @@ const {
|
|||
mockFindConfigFile,
|
||||
mockLoadConfig,
|
||||
mockCreatePluginRegistry,
|
||||
mockCreateProjectObserver,
|
||||
mockRecordNotificationDelivery,
|
||||
mockDetectOpenClawInstallation,
|
||||
mockValidateToken,
|
||||
mockRegistry,
|
||||
|
|
@ -18,6 +20,8 @@ const {
|
|||
mockFindConfigFile: vi.fn(),
|
||||
mockLoadConfig: vi.fn(),
|
||||
mockCreatePluginRegistry: vi.fn(),
|
||||
mockCreateProjectObserver: vi.fn(),
|
||||
mockRecordNotificationDelivery: vi.fn(),
|
||||
mockDetectOpenClawInstallation: vi.fn(),
|
||||
mockValidateToken: vi.fn(),
|
||||
mockRegistry: {
|
||||
|
|
@ -41,9 +45,11 @@ vi.mock("@aoagents/ao-core", () => ({
|
|||
buildReactionNotificationData: () => ({ schemaVersion: 3 }),
|
||||
buildSessionTransitionNotificationData: () => ({ schemaVersion: 3 }),
|
||||
createPluginRegistry: (...args: unknown[]) => mockCreatePluginRegistry(...args),
|
||||
createProjectObserver: (...args: unknown[]) => mockCreateProjectObserver(...args),
|
||||
findConfigFile: (...args: unknown[]) => mockFindConfigFile(...args),
|
||||
getObservabilityBaseDir: () => "/tmp/.agent-orchestrator/observability",
|
||||
loadConfig: (...args: unknown[]) => mockLoadConfig(...args),
|
||||
recordNotificationDelivery: (...args: unknown[]) => mockRecordNotificationDelivery(...args),
|
||||
resolveNotifierTarget: (
|
||||
config: { notifiers?: Record<string, { plugin?: string }> },
|
||||
reference: string,
|
||||
|
|
@ -161,6 +167,12 @@ describe("doctor command", () => {
|
|||
|
||||
mockCreatePluginRegistry.mockReset();
|
||||
mockCreatePluginRegistry.mockReturnValue(mockRegistry);
|
||||
mockCreateProjectObserver.mockReset();
|
||||
mockCreateProjectObserver.mockReturnValue({
|
||||
recordOperation: vi.fn(),
|
||||
setHealth: vi.fn(),
|
||||
});
|
||||
mockRecordNotificationDelivery.mockReset();
|
||||
|
||||
mockRegistry.loadFromConfig.mockReset();
|
||||
mockRegistry.loadFromConfig.mockResolvedValue(undefined);
|
||||
|
|
|
|||
|
|
@ -1,11 +1,19 @@
|
|||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { Command } from "commander";
|
||||
|
||||
const { mockCreatePluginRegistry, mockFindConfigFile, mockLoadConfig, mockRegistry } = vi.hoisted(
|
||||
() => ({
|
||||
const {
|
||||
mockCreatePluginRegistry,
|
||||
mockCreateProjectObserver,
|
||||
mockFindConfigFile,
|
||||
mockLoadConfig,
|
||||
mockRecordNotificationDelivery,
|
||||
mockRegistry,
|
||||
} = vi.hoisted(() => ({
|
||||
mockCreatePluginRegistry: vi.fn(),
|
||||
mockCreateProjectObserver: vi.fn(),
|
||||
mockFindConfigFile: vi.fn(),
|
||||
mockLoadConfig: vi.fn(),
|
||||
mockRecordNotificationDelivery: vi.fn(),
|
||||
mockRegistry: {
|
||||
loadFromConfig: vi.fn(),
|
||||
get: vi.fn(),
|
||||
|
|
@ -13,8 +21,7 @@ const { mockCreatePluginRegistry, mockFindConfigFile, mockLoadConfig, mockRegist
|
|||
register: vi.fn(),
|
||||
loadBuiltins: vi.fn(),
|
||||
},
|
||||
}),
|
||||
);
|
||||
}));
|
||||
|
||||
vi.mock("@aoagents/ao-core", () => {
|
||||
function buildSubject(input: {
|
||||
|
|
@ -43,8 +50,10 @@ vi.mock("@aoagents/ao-core", () => {
|
|||
|
||||
return {
|
||||
createPluginRegistry: (...args: unknown[]) => mockCreatePluginRegistry(...args),
|
||||
createProjectObserver: (...args: unknown[]) => mockCreateProjectObserver(...args),
|
||||
findConfigFile: (...args: unknown[]) => mockFindConfigFile(...args),
|
||||
loadConfig: (...args: unknown[]) => mockLoadConfig(...args),
|
||||
recordNotificationDelivery: (...args: unknown[]) => mockRecordNotificationDelivery(...args),
|
||||
resolveNotifierTarget: (
|
||||
config: { notifiers?: Record<string, { plugin?: string }> },
|
||||
reference: string,
|
||||
|
|
@ -163,6 +172,12 @@ describe("notify command", () => {
|
|||
mockLoadConfig.mockReturnValue(makeConfig());
|
||||
mockCreatePluginRegistry.mockReset();
|
||||
mockCreatePluginRegistry.mockReturnValue(mockRegistry);
|
||||
mockCreateProjectObserver.mockReset();
|
||||
mockCreateProjectObserver.mockReturnValue({
|
||||
recordOperation: vi.fn(),
|
||||
setHealth: vi.fn(),
|
||||
});
|
||||
mockRecordNotificationDelivery.mockReset();
|
||||
mockRegistry.loadFromConfig.mockReset();
|
||||
mockRegistry.loadFromConfig.mockResolvedValue(undefined);
|
||||
mockRegistry.get.mockReset();
|
||||
|
|
|
|||
|
|
@ -79,7 +79,38 @@ export function sanitizeNotificationDeliveryReason(reason: string): string {
|
|||
}
|
||||
|
||||
function notificationSurface(reference: string): string {
|
||||
const suffix = reference.replace(/[^a-zA-Z0-9_-]+/g, "-").replace(/^-+|-+$/g, "");
|
||||
let suffix = "";
|
||||
let lastNonHyphenLength = 0;
|
||||
let previousWasGeneratedHyphen = false;
|
||||
|
||||
for (const ch of reference) {
|
||||
const code = ch.charCodeAt(0);
|
||||
const isAlphaNumeric =
|
||||
(code >= 0x30 && code <= 0x39) ||
|
||||
(code >= 0x41 && code <= 0x5a) ||
|
||||
(code >= 0x61 && code <= 0x7a);
|
||||
const isAllowed = isAlphaNumeric || ch === "_" || ch === "-";
|
||||
|
||||
if (!isAllowed) {
|
||||
if (suffix.length > 0 && !previousWasGeneratedHyphen) {
|
||||
suffix += "-";
|
||||
previousWasGeneratedHyphen = true;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ch === "-" && suffix.length === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
suffix += ch;
|
||||
previousWasGeneratedHyphen = false;
|
||||
if (ch !== "-") {
|
||||
lastNonHyphenLength = suffix.length;
|
||||
}
|
||||
}
|
||||
|
||||
suffix = suffix.slice(0, lastNonHyphenLength);
|
||||
return `notification.delivery.${suffix || "target"}`;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue