refactor: simplify prepare logic with mode-specific implementations

This commit is contained in:
km-anthropic
2025-07-29 08:56:26 -07:00
parent 11d4e4c175
commit 96970dfa2d
7 changed files with 226 additions and 173 deletions

49
src/tools/export.ts Normal file
View File

@@ -0,0 +1,49 @@
/**
* Handles exporting tool-related environment variables
*/
import * as core from "@actions/core";
import type { Mode } from "../modes/types";
import type { ParsedGitHubContext } from "../github/context";
import {
buildAllowedToolsString,
buildDisallowedToolsString,
} from "../create-prompt/index";
export function exportToolEnvironmentVariables(
mode: Mode,
context: ParsedGitHubContext,
): void {
const hasActionsReadPermission =
context.inputs.additionalPermissions.get("actions") === "read" &&
context.isPR;
const modeAllowedTools = mode.getAllowedTools();
const modeDisallowedTools = mode.getDisallowedTools();
// Combine with existing allowed tools
const combinedAllowedTools = [
...context.inputs.allowedTools,
...modeAllowedTools,
];
const combinedDisallowedTools = [
...context.inputs.disallowedTools,
...modeDisallowedTools,
];
const allAllowedTools = buildAllowedToolsString(
combinedAllowedTools,
hasActionsReadPermission,
context.inputs.useCommitSigning,
);
const allDisallowedTools = buildDisallowedToolsString(
combinedDisallowedTools,
combinedAllowedTools,
);
console.log(`Allowed tools: ${allAllowedTools}`);
console.log(`Disallowed tools: ${allDisallowedTools}`);
core.exportVariable("ALLOWED_TOOLS", allAllowedTools);
core.exportVariable("DISALLOWED_TOOLS", allDisallowedTools);
}