feat: support plugin-managed hooks

This commit is contained in:
Peter Steinberger
2026-01-18 05:56:59 +00:00
parent 88b37e80fc
commit e2c10a2b7a
16 changed files with 436 additions and 26 deletions

View File

@@ -23,6 +23,7 @@ export type HookStatusEntry = {
name: string;
description: string;
source: string;
pluginId?: string;
filePath: string;
baseDir: string;
handlerPath: string;
@@ -33,6 +34,7 @@ export type HookStatusEntry = {
always: boolean;
disabled: boolean;
eligible: boolean;
managedByPlugin: boolean;
requirements: {
bins: string[];
anyBins: string[];
@@ -94,7 +96,8 @@ function buildHookStatus(
): HookStatusEntry {
const hookKey = resolveHookKey(entry);
const hookConfig = resolveHookConfig(config, hookKey);
const disabled = hookConfig?.enabled === false;
const managedByPlugin = entry.hook.source === "clawdbot-plugin";
const disabled = managedByPlugin ? false : hookConfig?.enabled === false;
const always = entry.clawdbot?.always === true;
const emoji = entry.clawdbot?.emoji ?? entry.frontmatter.emoji;
const homepageRaw =
@@ -171,6 +174,7 @@ function buildHookStatus(
name: entry.hook.name,
description: entry.hook.description,
source: entry.hook.source,
pluginId: entry.hook.pluginId,
filePath: entry.hook.filePath,
baseDir: entry.hook.baseDir,
handlerPath: entry.hook.handlerPath,
@@ -181,6 +185,7 @@ function buildHookStatus(
always,
disabled,
eligible,
managedByPlugin,
requirements: {
bins: requiredBins,
anyBins: requiredAnyBins,