refactor: complete v1.0 simplification by removing all legacy inputs

- Remove all backward compatibility for v1.0 simplification
- Remove 10 legacy inputs from base-action/action.yml
- Remove 9 legacy inputs from main action.yml
- Simplify ClaudeOptions type to just timeoutMinutes and claudeArgs
- Remove all legacy option handling from prepareRunConfig
- Update tests to remove references to deleted fields
- Remove obsolete test file github/context.test.ts
- Clean up types to remove customInstructions, allowedTools, disallowedTools

Users now use claudeArgs exclusively for CLI control.
This commit is contained in:
km-anthropic
2025-08-08 00:32:57 -07:00
parent f2775d66df
commit f59258677e
23 changed files with 47 additions and 715 deletions

View File

@@ -117,9 +117,6 @@ export function prepareContext(
const triggerPhrase = context.inputs.triggerPhrase || "@claude";
const assigneeTrigger = context.inputs.assigneeTrigger;
const labelTrigger = context.inputs.labelTrigger;
const customInstructions = context.inputs.customInstructions;
const allowedTools = context.inputs.allowedTools;
const disallowedTools = context.inputs.disallowedTools;
const prompt = context.inputs.prompt;
const isPR = context.isPR;
@@ -153,11 +150,6 @@ export function prepareContext(
claudeCommentId,
triggerPhrase,
...(triggerUsername && { triggerUsername }),
...(customInstructions && { customInstructions }),
...(allowedTools.length > 0 && { allowedTools: allowedTools.join(",") }),
...(disallowedTools.length > 0 && {
disallowedTools: disallowedTools.join(","),
}),
...(prompt && { prompt }),
...(claudeBranch && { claudeBranch }),
};
@@ -730,10 +722,6 @@ e. Propose a high-level plan of action, including any repo setup steps and linti
f. If you are unable to complete certain steps, such as running a linter or test suite, particularly due to missing permissions, explain this in your comment so that the user can update your \`--allowedTools\`.
`;
if (context.customInstructions) {
promptContent += `\n\nCUSTOM INSTRUCTIONS:\n${context.customInstructions}`;
}
return promptContent;
}
@@ -786,32 +774,20 @@ export async function createPrompt(
);
// Set allowed tools
const hasActionsReadPermission =
context.inputs.additionalPermissions.get("actions") === "read" &&
context.isPR;
const hasActionsReadPermission = false;
// Get mode-specific tools
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,
modeAllowedTools,
hasActionsReadPermission,
context.inputs.useCommitSigning,
);
const allDisallowedTools = buildDisallowedToolsString(
combinedDisallowedTools,
combinedAllowedTools,
modeDisallowedTools,
modeAllowedTools,
);
core.exportVariable("ALLOWED_TOOLS", allAllowedTools);

View File

@@ -3,10 +3,8 @@ export type CommonFields = {
claudeCommentId: string;
triggerPhrase: string;
triggerUsername?: string;
customInstructions?: string;
allowedTools?: string;
disallowedTools?: string;
prompt?: string;
claudeBranch?: string;
};
type PullRequestReviewCommentEvent = {

View File

@@ -65,13 +65,9 @@ type BaseContext = {
triggerPhrase: string;
assigneeTrigger: string;
labelTrigger: string;
allowedTools: string[];
disallowedTools: string[];
customInstructions: string;
baseBranch?: string;
branchPrefix: string;
useStickyComment: boolean;
additionalPermissions: Map<string, string>;
useCommitSigning: boolean;
};
};
@@ -115,15 +111,9 @@ export function parseGitHubContext(): GitHubContext {
triggerPhrase: process.env.TRIGGER_PHRASE ?? "@claude",
assigneeTrigger: process.env.ASSIGNEE_TRIGGER ?? "",
labelTrigger: process.env.LABEL_TRIGGER ?? "",
allowedTools: parseMultilineInput(process.env.ALLOWED_TOOLS ?? ""),
disallowedTools: parseMultilineInput(process.env.DISALLOWED_TOOLS ?? ""),
customInstructions: process.env.CUSTOM_INSTRUCTIONS ?? "",
baseBranch: process.env.BASE_BRANCH,
branchPrefix: process.env.BRANCH_PREFIX ?? "claude/",
useStickyComment: process.env.USE_STICKY_COMMENT === "true",
additionalPermissions: parseAdditionalPermissions(
process.env.ADDITIONAL_PERMISSIONS ?? "",
),
useCommitSigning: process.env.USE_COMMIT_SIGNING === "true",
},
};
@@ -198,33 +188,6 @@ export function parseGitHubContext(): GitHubContext {
}
}
export function parseMultilineInput(s: string): string[] {
return s
.split(/,|[\n\r]+/)
.map((tool) => tool.replace(/#.+$/, ""))
.map((tool) => tool.trim())
.filter((tool) => tool.length > 0);
}
export function parseAdditionalPermissions(s: string): Map<string, string> {
const permissions = new Map<string, string>();
if (!s || !s.trim()) {
return permissions;
}
const lines = s.trim().split("\n");
for (const line of lines) {
const trimmedLine = line.trim();
if (trimmedLine) {
const [key, value] = trimmedLine.split(":").map((part) => part.trim());
if (key && value) {
permissions.set(key, value);
}
}
}
return permissions;
}
export function isIssuesEvent(
context: GitHubContext,
): context is ParsedGitHubContext & { payload: IssuesEvent } {

View File

@@ -111,9 +111,8 @@ export async function prepareMcpConfig(
};
}
// Only add CI server if we have actions:read permission and we're in a PR context
const hasActionsReadPermission =
context.inputs.additionalPermissions.get("actions") === "read";
// CI server is disabled by default in v1.0 (users can enable via claudeArgs)
const hasActionsReadPermission = false;
if (context.isPR && hasActionsReadPermission) {
// Verify the token actually has actions:read permission

View File

@@ -58,21 +58,8 @@ export const agentMode: Mode = {
promptContent,
);
// Agent mode: User has full control via claudeArgs or legacy inputs
// Agent mode: User has full control via claudeArgs
// No default tools are enforced - Claude Code's defaults will apply
// Export user-specified tools only if provided
if (context.inputs.allowedTools.length > 0) {
core.exportVariable(
"INPUT_ALLOWED_TOOLS",
context.inputs.allowedTools.join(","),
);
}
if (context.inputs.disallowedTools.length > 0) {
core.exportVariable(
"INPUT_DISALLOWED_TOOLS",
context.inputs.disallowedTools.join(","),
);
}
// Agent mode uses a minimal MCP configuration
// We don't need comment servers or PR-specific tools for automation

View File

@@ -110,7 +110,7 @@ export const tagMode: Mode = {
baseBranch: branchInfo.baseBranch,
additionalMcpConfig,
claudeCommentId: commentId.toString(),
allowedTools: context.inputs.allowedTools,
allowedTools: [],
context,
});