import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime"; import type { OpenClawConfig, OpenClawPluginApi } from "../api.js"; import { applyMemoryWikiMutation, normalizeMemoryWikiMutationInput } from "./apply.js"; import { compileMemoryWikiVault } from "./compile.js"; import {
WIKI_SEARCH_BACKENDS,
WIKI_SEARCH_CORPORA,
type ResolvedMemoryWikiConfig,
} from "./config.js"; import { listMemoryWikiImportInsights } from "./import-insights.js"; import { listMemoryWikiImportRuns } from "./import-runs.js"; import { ingestMemoryWikiSource } from "./ingest.js"; import { lintMemoryWikiVault } from "./lint.js"; import { listMemoryWikiPalace } from "./memory-palace.js"; import {
probeObsidianCli,
runObsidianCommand,
runObsidianDaily,
runObsidianOpen,
runObsidianSearch,
} from "./obsidian.js"; import { getMemoryWikiPage, searchMemoryWiki } from "./query.js"; import { syncMemoryWikiImportedSources } from "./source-sync.js"; import { buildMemoryWikiDoctorReport, resolveMemoryWikiStatus } from "./status.js"; import { initializeMemoryWikiVault } from "./vault.js";
const READ_SCOPE = "operator.read" as const; const WRITE_SCOPE = "operator.write" as const;
type GatewayMethodContext = Parameters<
Parameters<OpenClawPluginApi["registerGatewayMethod"]>[1]
>[0];
type GatewayRespond = GatewayMethodContext["respond"];
function readStringParam(params: Record<string, unknown>, key: string): string | undefined; function readStringParam(
params: Record<string, unknown>,
key: string,
options: { required: true },
): string; function readStringParam(
params: Record<string, unknown>,
key: string,
options?: { required?: boolean },
): string | undefined { const value = params[key]; if (typeof value === "string" && value.trim()) { return value.trim();
} if (options?.required) { thrownew Error(`${key} is required.`);
} return undefined;
}
function readNumberParam(params: Record<string, unknown>, key: string): number | undefined { const value = params[key]; if (typeof value === "number" && Number.isFinite(value)) { return value;
} if (typeof value === "string" && value.trim()) { const parsed = Number(value); if (Number.isFinite(parsed)) { return parsed;
}
} return undefined;
}
function readEnumParam<T extends string>(
params: Record<string, unknown>,
key: string,
allowed: readonly T[],
): T | undefined { const value = readStringParam(params, key); if (!value) { return undefined;
} if ((allowed as readonly string[]).includes(value)) { return value as T;
} thrownew Error(`${key} must be one of: ${allowed.join(", ")}.`);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.