40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agents/agent-scope.js";
|
|
import { resolveDefaultAgentWorkspaceDir } from "../agents/workspace.js";
|
|
import { loadConfig } from "../config/config.js";
|
|
import { createSubsystemLogger } from "../logging.js";
|
|
import { loadClawdbotPlugins } from "./loader.js";
|
|
import type { PluginRegistry } from "./registry.js";
|
|
|
|
export type PluginStatusReport = PluginRegistry & {
|
|
workspaceDir?: string;
|
|
};
|
|
|
|
const log = createSubsystemLogger("plugins");
|
|
|
|
export function buildPluginStatusReport(params?: {
|
|
config?: ReturnType<typeof loadConfig>;
|
|
workspaceDir?: string;
|
|
}): PluginStatusReport {
|
|
const config = params?.config ?? loadConfig();
|
|
const workspaceDir = params?.workspaceDir
|
|
? params.workspaceDir
|
|
: (resolveAgentWorkspaceDir(config, resolveDefaultAgentId(config)) ??
|
|
resolveDefaultAgentWorkspaceDir());
|
|
|
|
const registry = loadClawdbotPlugins({
|
|
config,
|
|
workspaceDir,
|
|
logger: {
|
|
info: (msg) => log.info(msg),
|
|
warn: (msg) => log.warn(msg),
|
|
error: (msg) => log.error(msg),
|
|
debug: (msg) => log.debug(msg),
|
|
},
|
|
});
|
|
|
|
return {
|
|
workspaceDir,
|
|
...registry,
|
|
};
|
|
}
|