

























@@ -9,7 +9,12 @@ import {
99} from "../shared/string-coerce.js";
1010import { isRecord } from "../utils.js";
1111import type { PluginBundleFormat } from "./manifest-types.js";
12-import { DEFAULT_PLUGIN_ENTRY_CANDIDATES, PLUGIN_MANIFEST_FILENAME } from "./manifest.js";
12+import type { PluginManifestActivation } from "./manifest.js";
13+import {
14+DEFAULT_PLUGIN_ENTRY_CANDIDATES,
15+normalizeManifestActivation,
16+PLUGIN_MANIFEST_FILENAME,
17+} from "./manifest.js";
13181419export const CODEX_BUNDLE_MANIFEST_RELATIVE_PATH = ".codex-plugin/plugin.json";
1520export const CLAUDE_BUNDLE_MANIFEST_RELATIVE_PATH = ".claude-plugin/plugin.json";
@@ -25,6 +30,7 @@ export type BundlePluginManifest = {
2530// Only include hook roots that OpenClaw can execute via HOOK.md + handler files.
2631hooks: string[];
2732bundleFormat: PluginBundleFormat;
33+activation?: PluginManifestActivation;
2834capabilities: string[];
2935};
3036@@ -373,6 +379,7 @@ export function loadBundleManifest(params: {
373379settingsFiles: [],
374380 hooks,
375381bundleFormat: "codex",
382+activation: normalizeManifestActivation(raw.activation),
376383capabilities: buildCodexCapabilities(raw, params.rootDir),
377384},
378385manifestPath: loaded.manifestPath,
@@ -391,6 +398,7 @@ export function loadBundleManifest(params: {
391398settingsFiles: [],
392399hooks: [],
393400bundleFormat: "cursor",
401+activation: normalizeManifestActivation(raw.activation),
394402capabilities: buildCursorCapabilities(raw, params.rootDir),
395403},
396404manifestPath: loaded.manifestPath,
@@ -408,6 +416,7 @@ export function loadBundleManifest(params: {
408416settingsFiles: resolveClaudeSettingsFiles(raw, params.rootDir),
409417hooks: resolveClaudeHookPaths(raw, params.rootDir),
410418bundleFormat: "claude",
419+activation: normalizeManifestActivation(raw.activation),
411420capabilities: buildClaudeCapabilities(raw, params.rootDir),
412421},
413422manifestPath: loaded.manifestPath,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。