Files
claude-code/src/main/java/com/claudecode/command/impl/PermissionsCommand.java
T
abel533andCopilot 95b45940fd feat: command layer enhancements (Phase 1B.3)
- /help: keyword search + command detail view
- /compact: --stats for token statistics, --aggressive for deeper compaction
- /commit: --push to push after commit, --pr to create PR via gh CLI
- /files: directory tree with depth control, file pattern search
- /permissions: view current permission mode and rules
- /tasks: list background tasks with status, age, result preview

Total commands: 28 → 31

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-05 09:20:44 +08:00

68 lines
2.3 KiB
Java

package com.claudecode.command.impl;
import com.claudecode.command.CommandContext;
import com.claudecode.command.SlashCommand;
import com.claudecode.console.AnsiStyle;
import com.claudecode.permission.PermissionSettings;
import com.claudecode.permission.PermissionTypes;
import java.util.List;
/**
* /permissions 命令 —— 查看和管理权限设置。
* <p>
* 对应 claude-code/src/commands/permissions.ts。
* 显示当前权限模式和规则列表。
*/
public class PermissionsCommand implements SlashCommand {
private final PermissionSettings settings;
public PermissionsCommand(PermissionSettings settings) {
this.settings = settings;
}
@Override
public String name() {
return "permissions";
}
@Override
public String description() {
return "View and manage permission settings";
}
@Override
public String execute(String args, CommandContext context) {
StringBuilder sb = new StringBuilder();
sb.append("\n ").append(AnsiStyle.bold("🔐 Permission Settings")).append("\n");
sb.append(" ").append("─".repeat(50)).append("\n");
// Current mode
PermissionTypes.PermissionMode mode = settings.getCurrentMode();
String modeStr = mode != null ? mode.name() : "DEFAULT";
String modeColor = switch (modeStr) {
case "AUTO_ALLOW" -> AnsiStyle.green(modeStr);
case "DENY_ALL" -> AnsiStyle.red(modeStr);
default -> AnsiStyle.yellow(modeStr);
};
sb.append(" Mode: ").append(modeColor).append("\n\n");
// All rules
List<String> rules = settings.listRules();
sb.append(" ").append(AnsiStyle.bold("Rules")).append(" (").append(rules.size()).append("):\n");
if (rules.isEmpty()) {
sb.append(" ").append(AnsiStyle.dim("(no rules configured)")).append("\n");
} else {
for (String rule : rules) {
String icon = rule.contains("ALLOW") ? AnsiStyle.green("✓") : AnsiStyle.red("✗");
sb.append(" ").append(icon).append(" ").append(rule).append("\n");
}
}
sb.append("\n ").append(AnsiStyle.dim("Use /config to change permission settings")).append("\n");
return sb.toString();
}
}