mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-09 03:30:48 +08:00
重构仓库目录为统一的 runtime 分层并清理历史 openclaw 残留。
本次迁移将网关/通道/工具/技能/脚本与协议资源集中到新结构,统一路径常量与脚本转发机制,减少顶层噪音并保证运行与测试行为一致。 Made-with: Cursor
This commit is contained in:
parent
ba3836f00f
commit
4a23b715a2
498 changed files with 2760 additions and 2200 deletions
|
|
@ -1,106 +0,0 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from .shared_types import GatewayRequestHandlers
|
||||
from .validation import error_shape
|
||||
|
||||
|
||||
def _validate_channels_status_params(params: Any) -> bool:
|
||||
if not isinstance(params, dict):
|
||||
return False
|
||||
if "probe" in params and params["probe"] is not None and not isinstance(params["probe"], bool):
|
||||
return False
|
||||
if "timeoutMs" in params and params["timeoutMs"] is not None and not isinstance(params["timeoutMs"], int):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def _validate_channels_start_params(params: Any) -> bool:
|
||||
return isinstance(params, dict) and isinstance(params.get("channel"), str)
|
||||
|
||||
|
||||
def _validate_channels_logout_params(params: Any) -> bool:
|
||||
return isinstance(params, dict) and isinstance(params.get("channel"), str)
|
||||
|
||||
|
||||
def _channels_status_handler(opts: dict[str, Any]) -> Any:
|
||||
respond = opts.get("respond")
|
||||
params = opts.get("params")
|
||||
context = opts.get("context") or {}
|
||||
if not callable(respond):
|
||||
return None
|
||||
if not _validate_channels_status_params(params):
|
||||
respond(False, None, error_shape("INVALID_REQUEST", "invalid channels.status params"), None)
|
||||
return None
|
||||
runtime = context.get("get_runtime_snapshot")() if callable(context.get("get_runtime_snapshot")) else {}
|
||||
if not isinstance(runtime, dict):
|
||||
runtime = {}
|
||||
if "image_generation_providers" not in runtime:
|
||||
providers = context.get("image_generation_providers")
|
||||
if isinstance(providers, list):
|
||||
runtime = {
|
||||
**runtime,
|
||||
"image_generation_providers": [p for p in providers if isinstance(p, dict)],
|
||||
}
|
||||
payload = {
|
||||
"ts": 0,
|
||||
"channels": {},
|
||||
"channelAccounts": {},
|
||||
"runtime": runtime,
|
||||
}
|
||||
respond(True, payload, None, None)
|
||||
return None
|
||||
|
||||
|
||||
def _channels_start_handler(opts: dict[str, Any]) -> Any:
|
||||
respond = opts.get("respond")
|
||||
params = opts.get("params") or {}
|
||||
context = opts.get("context") or {}
|
||||
if not callable(respond):
|
||||
return None
|
||||
if not _validate_channels_start_params(params):
|
||||
respond(False, None, error_shape("INVALID_REQUEST", "invalid channels.start params"), None)
|
||||
return None
|
||||
channel = str(params.get("channel") or "").strip()
|
||||
account_id = str(params.get("accountId") or "").strip() or "default"
|
||||
try:
|
||||
start = context.get("start_channel")
|
||||
if callable(start):
|
||||
start(channel, account_id)
|
||||
respond(True, {"channel": channel, "accountId": account_id, "started": True}, None, None)
|
||||
except Exception as exc:
|
||||
respond(False, None, error_shape("UNAVAILABLE", str(exc)), None)
|
||||
return None
|
||||
|
||||
|
||||
def _channels_logout_handler(opts: dict[str, Any]) -> Any:
|
||||
respond = opts.get("respond")
|
||||
params = opts.get("params") or {}
|
||||
context = opts.get("context") or {}
|
||||
if not callable(respond):
|
||||
return None
|
||||
if not _validate_channels_logout_params(params):
|
||||
respond(False, None, error_shape("INVALID_REQUEST", "invalid channels.logout params"), None)
|
||||
return None
|
||||
channel = str(params.get("channel") or "").strip()
|
||||
account_id = str(params.get("accountId") or "").strip() or "default"
|
||||
try:
|
||||
stop = context.get("stop_channel")
|
||||
if callable(stop):
|
||||
stop(channel, account_id)
|
||||
mark = context.get("mark_channel_logged_out")
|
||||
if callable(mark):
|
||||
mark(channel, True, account_id)
|
||||
respond(True, {"channel": channel, "accountId": account_id, "cleared": True}, None, None)
|
||||
except Exception as exc:
|
||||
respond(False, None, error_shape("UNAVAILABLE", str(exc)), None)
|
||||
return None
|
||||
|
||||
|
||||
channels_handlers: GatewayRequestHandlers = {
|
||||
"channels.status": _channels_status_handler,
|
||||
"channels.start": _channels_start_handler,
|
||||
"channels.logout": _channels_logout_handler,
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue