This commit is contained in:
2026-04-12 01:06:31 +07:00
commit 10d660cbcb
1066 changed files with 228596 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
import type { Plugin } from "@opencode-ai/plugin";
const { checkScoutBlock } = require("./lib/scout-checker.cjs");
/**
* Scout Block Plugin - Prevent access to heavy directories
*
* Blocks node_modules, dist, .git, etc. to prevent context overflow.
* Equivalent to Claude's scout-block.cjs hook.
*/
export const ScoutBlockPlugin: Plugin = async ({ directory }) => {
const ckignorePath = `${directory}/.opencode/.ckignore`;
const claudeDir = `${directory}/.opencode`;
return {
"tool.execute.before": async (input: any, output: any) => {
const result = checkScoutBlock({
toolName: input.tool,
toolInput: output.args,
options: {
ckignorePath,
claudeDir,
cwd: directory,
projectConfigDirName: `.opencode`
}
});
if (result.blocked) {
const configPath = result.configPath || `.opencode/.ckignore`;
let errorMsg = `[Scout Block] Access to '${result.path}' blocked.\n`;
errorMsg += `Pattern: ${result.pattern}\n`;
if (result.isBroadPattern && result.suggestions?.length) {
errorMsg += `\nSuggested alternatives:\n`;
result.suggestions.forEach((s: string) => errorMsg += ` - ${s}\n`);
}
errorMsg += `\nTo allow, add '!${result.pattern}' to ${configPath}`;
throw new Error(errorMsg);
}
}
};
};
export default ScoutBlockPlugin;