Initial commit: SenSu Alpha 0.2.0

- 13-service async plugin framework
- Textual TUI with CLI fallback
- Plugin hot-reload + permission system
- Web management panel (aiohttp)
- Bridge-based inter-module communication
- 10 regression tests

Fixes applied:
- PBKDF2-SHA256 auth (was plain SHA256)
- Auth bypass removed (was allow-all on fail)
- Bare excepts replaced with logged errors
- CatFramework/DreamSu -> SenSu naming unified
- ServiceManager: health checks + startup_order
- Env var credentials (SENSU_ADMIN_PASSWORD etc)
This commit is contained in:
2026-06-10 12:27:14 +08:00
commit e6875f0b4b
78 changed files with 14843 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
framework:
debug: true
name: SenSu
version: Alpha_0.2.0
logging:
debug_level_file: true
level: DEBUG
max_file_size: 10MB
max_log_files: 20
plugins:
auto_load: true
hot_reload: true
max_retry_count: 3
# TUI配置
tui:
enabled: true
refresh_rate: 30
# TUI布局配置
layout:
grid_rows: "4fr 5fr 1fr" # 三行布局:日志区域、消息区域、输入区域的比例
# TUI样式配置
styles:
log_area: "border: solid green; overflow-y: auto;"
message_area: "border: solid yellow; overflow-y: auto;"
input_area: "border: solid red;"
# TUI日志显示配置
log_display:
max_lines: 200
# 互联网服务配置
internet:
websocket:
host: "0.0.0.0"
port: 4240
# 其他websocket配置...
http:
host: "0.0.0.0"
port: 4200
# 其他http配置...
panel:
entrance:
path: "/SenSu"
username: "admin"
password: "admin"
+15
View File
@@ -0,0 +1,15 @@
# 权限规则定义
permission_levels:
- "read"
- "write"
- "execute"
- "admin"
default_permissions:
- "framework.status.read"
- "plugin.self.info.read"
admin_permissions:
- "framework.*"
- "plugin.*"
- "service.*"
@@ -0,0 +1,9 @@
{
"example_plugin": [
"framework.event.subscribe",
"framework.command.execute",
"plugin.example.execute",
"plugin.example.read",
"plugin.example.write"
]
}
+18
View File
@@ -0,0 +1,18 @@
{
"10c4eb6e": {
"plugin_name": "example_plugin",
"permissions": [],
"timestamp": 484215.183089762
},
"d6f52ecd": {
"plugin_name": "example_plugin",
"permissions": [
"plugin.example.read",
"plugin.example.write",
"plugin.example.execute",
"framework.event.subscribe",
"framework.command.execute"
],
"timestamp": 484729.685713733
}
}
+3
View File
@@ -0,0 +1,3 @@
{
"example_plugin": "granted"
}
+96
View File
@@ -0,0 +1,96 @@
commands:
autoscroll:
description: '滚动控制: 切换自动滚动'
permissions:
- framework.tui.control
source: internal
chat_broadcast: &id001
description: 向所有聊天客户端广播消息
permissions:
- plugin.example.chat.broadcast
source: plugin.example_plugin
help:
description: 显示帮助信息
permissions:
- framework.command.help.read
source: internal
history:
description: 显示命令历史
permissions:
- framework.command.history.read
source: internal
netdiag:
description: 网络服务诊断
permissions:
- framework.network.diagnose
source: internal
network_info: &id002
description: 显示插件网络信息
permissions: []
source: plugin.example_plugin
permissions:
description: '权限管理: 显示权限状态'
permissions:
- framework.permission.read
source: internal
pm_plugin_status:
description: '权限管理: 查看插件权限状态'
permissions:
- framework.permission.read
source: internal
pmallow:
description: '权限管理: 同意权限请求'
permissions:
- framework.permission.read
source: internal
pmdeny:
description: '权限管理: 拒绝权限请求'
permissions:
- framework.permission.read
source: internal
pmhelp:
description: '权限管理: 显示权限命令帮助'
permissions:
- framework.permission.read
source: internal
pmignore:
description: '权限管理: 暂时忽略权限请求'
permissions:
- framework.permission.read
source: internal
pmpending:
description: '权限管理: 查看待授权请求列表'
permissions:
- framework.permission.read
source: internal
pmrequests:
description: '权限管理: 查看待授权请求列表(别名)'
permissions:
- framework.permission.read
source: internal
pmtest:
description: '权限管理: 测试权限配置文件'
permissions:
- framework.permission.read
source: internal
scroll:
description: '滚动控制: 手动滚动到底部'
permissions:
- framework.tui.control
source: internal
status:
description: 显示框架状态
permissions:
- framework.status.read
source: internal
testlog:
description: 生成测试日志
permissions:
- framework.command.test
source: internal
last_updated: 119133.773274654
plugin_commands:
example_plugin:
chat_broadcast: *id001
network_info: *id002
total_commands: 18
+17
View File
@@ -0,0 +1,17 @@
http_port: 8000
last_updated: 119133.817076582
plugin_routes:
example_plugin:
- methods:
- GET
path: /plugin/example_plugin/api/info
require_auth: false
- methods:
- POST
path: /plugin/example_plugin/api/echo
require_auth: true
- methods:
- WEBSOCKET
path: /plugin/example_plugin/ws/chat
require_auth: true
websocket_port: 8765