@gguf/claw
Version:
Multi-channel AI gateway with extensible messaging integrations
39 lines (37 loc) • 1.72 kB
JavaScript
import "../../paths-CyR9Pa1R.js";
import { y as isAgentBootstrapEvent } from "../../registry-BmY4gNy6.js";
import "../../subsystem-B5g771Td.js";
import { d as loadExtraBootstrapFiles, u as filterBootstrapFilesForSession } from "../../workspace-D9IzNnST.js";
import "../../boolean-B8-BqKGQ.js";
import "../../frontmatter-BT4H5SZG.js";
import { t as resolveHookConfig } from "../../config-ClSsetRi.js";
//#region src/hooks/bundled/bootstrap-extra-files/handler.ts
const HOOK_KEY = "bootstrap-extra-files";
function normalizeStringArray(value) {
if (!Array.isArray(value)) return [];
return value.map((v) => typeof v === "string" ? v.trim() : "").filter(Boolean);
}
function resolveExtraBootstrapPatterns(hookConfig) {
const fromPaths = normalizeStringArray(hookConfig.paths);
if (fromPaths.length > 0) return fromPaths;
const fromPatterns = normalizeStringArray(hookConfig.patterns);
if (fromPatterns.length > 0) return fromPatterns;
return normalizeStringArray(hookConfig.files);
}
const bootstrapExtraFilesHook = async (event) => {
if (!isAgentBootstrapEvent(event)) return;
const context = event.context;
const hookConfig = resolveHookConfig(context.cfg, HOOK_KEY);
if (!hookConfig || hookConfig.enabled === false) return;
const patterns = resolveExtraBootstrapPatterns(hookConfig);
if (patterns.length === 0) return;
try {
const extras = await loadExtraBootstrapFiles(context.workspaceDir, patterns);
if (extras.length === 0) return;
context.bootstrapFiles = filterBootstrapFilesForSession([...context.bootstrapFiles, ...extras], context.sessionKey);
} catch (err) {
console.warn(`[bootstrap-extra-files] failed: ${String(err)}`);
}
};
//#endregion
export { bootstrapExtraFilesHook as default };