import path from "node:path"; import type { OpenClawPluginApi } from "openclaw/plugin-sdk/diffs"; import { resolvePreferredOpenClawTmpDir } from "openclaw/plugin-sdk/diffs"; import { diffsPluginConfigSchema, resolveDiffsPluginDefaults, resolveDiffsPluginSecurity, } from "./src/config.js"; import { createDiffsHttpHandler } from "./src/http.js"; import { DIFFS_AGENT_GUIDANCE } from "./src/prompt-guidance.js"; import { DiffArtifactStore } from "./src/store.js"; import { createDiffsTool } from "./src/tool.js"; const plugin = { id: "diffs", name: "Diffs", description: "Read-only diff viewer and PNG/PDF renderer for agents.", configSchema: diffsPluginConfigSchema, register(api: OpenClawPluginApi) { const defaults = resolveDiffsPluginDefaults(api.pluginConfig); const security = resolveDiffsPluginSecurity(api.pluginConfig); const store = new DiffArtifactStore({ rootDir: path.join(resolvePreferredOpenClawTmpDir(), "openclaw-diffs"), logger: api.logger, }); api.registerTool(createDiffsTool({ api, store, defaults })); api.registerHttpRoute({ path: "/plugins/diffs", auth: "plugin", match: "prefix", handler: createDiffsHttpHandler({ store, logger: api.logger, allowRemoteViewer: security.allowRemoteViewer, }), }); api.on("before_prompt_build", async () => ({ prependSystemContext: DIFFS_AGENT_GUIDANCE, })); }, }; export default plugin;