mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-09 05:50:44 +08:00
本次迁移将网关/通道/工具/技能/脚本与协议资源集中到新结构,统一路径常量与脚本转发机制,减少顶层噪音并保证运行与测试行为一致。 Made-with: Cursor
35 lines
848 B
Python
35 lines
848 B
Python
from __future__ import annotations
|
||
|
||
from typing import Any
|
||
|
||
|
||
WEBHOOK_RATE_LIMIT_DEFAULTS: dict[str, int] = {
|
||
"window_ms": 60_000,
|
||
"max_requests": 120,
|
||
"max_tracked_keys": 20_000,
|
||
}
|
||
|
||
WEBHOOK_IN_FLIGHT_DEFAULTS: dict[str, int] = {
|
||
"max_in_flight_per_key": 8,
|
||
"max_tracked_keys": 20_000,
|
||
}
|
||
|
||
|
||
def normalize_webhook_path(path: str) -> str:
|
||
p = str(path or "").strip()
|
||
if not p:
|
||
raise ValueError("webhook path is required")
|
||
if not p.startswith("/"):
|
||
p = "/" + p
|
||
while "//" in p:
|
||
p = p.replace("//", "/")
|
||
return p.rstrip("/") or "/"
|
||
|
||
|
||
def resolve_configured_secret_input_string(*, value: Any) -> str | None:
|
||
# Python 重写版先支持直传字符串;ref 由上层配置系统扩展。
|
||
if isinstance(value, str):
|
||
s = value.strip()
|
||
return s or None
|
||
return None
|
||
|