- /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>
68 lines
2.3 KiB
Java
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();
|
|
}
|
|
}
|