diff --git a/server/app/ai/safety.js b/server/app/ai/safety.js index 7679e15..8d89857 100644 --- a/server/app/ai/safety.js +++ b/server/app/ai/safety.js @@ -85,7 +85,8 @@ const ALWAYS_READ_ONLY_CMDS = new Set([ 'ls', 'stat', 'du', 'df', 'grep', 'egrep', 'fgrep', 'wc', 'readlink', 'realpath', 'pwd', 'which', 'whereis', 'echo', 'printf', 'test', 'cd', - 'ps', 'free', 'uptime', 'uname', 'whoami', 'id', 'printenv', + 'ps', 'free', 'uptime', 'uname', 'whoami', 'last', 'lastb', + 'id', 'printenv', 'md5sum', 'sha256sum', 'cut', 'tr', 'jq' ]) diff --git a/server/app/controller/plus.js b/server/app/controller/plus.js index 87f5f2a..8364b36 100644 --- a/server/app/controller/plus.js +++ b/server/app/controller/plus.js @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/server/test/test-ai-access.js b/server/test/test-ai-access.js index fd984d7..243f78e 100644 --- a/server/test/test-ai-access.js +++ b/server/test/test-ai-access.js @@ -30,6 +30,7 @@ const { getToolSpec, PlusPolicy, requiresPlus } = await import(`${ originalCwd } const { requestTerminalDispatch } = await import(`${ originalCwd }/app/ai/terminal-dispatch.js`) const { buildTools, describeAvailableTools } = await import(`${ originalCwd }/app/ai/tools/index.js`) const { hostList, checkRestrictedToolAccess } = await import(`${ originalCwd }/app/ai/tools/executors.js`) +const { RuntimeState } = await import(`${ originalCwd }/app/utils/runtime-state.js`) const hostListDB = new HostListDB().getInstance() @@ -241,6 +242,26 @@ console.log('\n========== Plus 工具权限 ==========') && event.effect === Effect.WRITE && event.toolCallId === 'tool-write' ))) + + const runtimeState = new RuntimeState().getInstance() + runtimeState.setPlusKicked(true) + events.length = 0 + const invalidAccess = await checkRestrictedToolAccess( + ctx, + 'exec_command', + Effect.WRITE, + 'tool-invalid-plus' + ) + expect('已失效的 Plus 授权不误报成未激活', invalidAccess.code, 'PLUS_AUTH_INVALID') + assert('授权失效时返回可恢复的工具拒绝', events.some((event) => ( + event.type === 'tool_denied' + && event.toolCallId === 'tool-invalid-plus' + && event.permanent === false + ))) + assert('授权失效时不弹出重复激活提示', !events.some((event) => ( + event.type === 'tool_requires_plus' + ))) + runtimeState.setPlusKicked(false) } console.log('\n========== 会话保留策略 ==========') diff --git a/server/test/test-ai-safety.js b/server/test/test-ai-safety.js index 0ff9390..5f4247c 100644 --- a/server/test/test-ai-safety.js +++ b/server/test/test-ai-safety.js @@ -136,6 +136,8 @@ const normalCases = [ ['date +%F', Effect.READ], ['find /tmp -type f', Effect.READ], ['journalctl --no-pager -n 50', Effect.READ], + ['last -n 15', Effect.READ], + ['lastb -n 15', Effect.READ], ['dmesg --level err', Effect.READ], ['ss -lntp', Effect.READ], ['crontab -l', Effect.READ],