合并规则页(task/rules-page)

# Conflicts:
#	web/api.ts
This commit is contained in:
2026-08-11 20:08:44 +08:00
7 changed files with 2397 additions and 0 deletions
+31
View File
@@ -121,6 +121,20 @@ export interface ListenerFields {
types: Record<string, { note: string; fields: FieldSpec[] }>
}
export interface RuleProviderInfo {
/** domain / ipcidr / classical */
behavior: string
/** yaml / text / mrs。inline 类型的没有这个字段 */
format?: string
name: string
/** 当前装了多少条规则 */
ruleCount: number
/** HTTP / File / Inline */
vehicleType: string
/** RFC3339。还没拉取过时是零值(0001-01-01) */
updatedAt: string
}
export const api = {
readConfig: () => request<ConfigSnapshot>('GET', '/api/config'),
@@ -216,6 +230,23 @@ export const api = {
refreshProvider: (name: string) =>
request<unknown>('PUT', `/api/kernel/providers/proxies/${encodeURIComponent(name)}`),
/**
* 每个规则组的运行时状态:装了多少条规则、上次什么时候更新。
* 配置文件里只有声明,这两个数字只有运行中的内核知道。
*/
ruleProviders: () =>
request<{ providers: Record<string, RuleProviderInfo> }>('GET', '/api/kernel/providers/rules'),
/**
* 让内核立刻重新拉取某个规则组。
* 这是运行时动作,不写配置文件,所以不走落盘那条保护链路。
*/
updateRuleProvider: (name: string) =>
request<Record<string, never>>(
'PUT',
`/api/kernel/providers/rules/${encodeURIComponent(name)}`,
),
/**
* 订阅及其线路。配置文件里只有订阅地址,有哪些线路只有运行中的内核知道。
*