fix(backend): 修复全面审阅发现的核心问题

修复索引首次失败回滚、Vault 扫描边界、Markdown 代码围栏和 UTF-16 Citation 偏移。

收紧 Plugin 权限与 JSON Schema 校验,补齐 Note Move、Task、Attachment 和 Transcript Tool。

接入 OpenAI SSE 与 Ollama JSONL 真流式输出,修正 Provider PATCH 语义并限制运行时内存保留。

新增对应回归测试,后端测试增至 62 项。
This commit is contained in:
2026-08-28 09:56:07 +08:00
parent 167ae24796
commit 36bc1022f1
26 changed files with 1531 additions and 99 deletions
+27 -1
View File
@@ -10,13 +10,39 @@ class PermissionMode(str, Enum):
deny = "deny"
KNOWN_PERMISSIONS = frozenset(
{
"notes.read",
"notes.search",
"notes.write",
"notes.delete",
"tasks.read",
"tasks.write",
"attachments.read",
"network.request",
"secrets.use",
"ui.command",
"ui.settings",
"ui.sidebar",
}
)
class PermissionPolicy:
def __init__(self) -> None:
self._rules: dict[str, PermissionMode] = {
"notes.read": PermissionMode.allow,
"notes.search": PermissionMode.allow,
"notes.delete": PermissionMode.confirm,
"notes.write": PermissionMode.confirm,
"tasks.read": PermissionMode.allow,
"tasks.write": PermissionMode.confirm,
"attachments.read": PermissionMode.allow,
"network.request": PermissionMode.confirm,
"secrets.use": PermissionMode.confirm,
"ui.command": PermissionMode.allow,
"ui.settings": PermissionMode.allow,
"ui.sidebar": PermissionMode.allow,
}
def set_rule(self, permission: str, mode: PermissionMode) -> None:
@@ -25,7 +51,7 @@ class PermissionPolicy:
def mode_for(self, permission: str | None) -> PermissionMode:
if permission is None:
return PermissionMode.allow
return self._rules.get(permission, PermissionMode.allow)
return self._rules.get(permission, PermissionMode.deny)
@dataclass(slots=True)