@whispering233/ai-editor-server 0.0.29 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client-dist/assets/index-BlZjI169.js +523 -0
- package/client-dist/assets/{index-0zEqGbv5.css → index-DUmFZL7d.css} +1 -1
- package/client-dist/index.html +3 -3
- package/dist/backup.d.ts +13 -12
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js +73 -57
- package/dist/backup.js.map +1 -1
- package/dist/chat-runtime.d.ts +44 -0
- package/dist/chat-runtime.d.ts.map +1 -0
- package/dist/chat-runtime.js +102 -0
- package/dist/chat-runtime.js.map +1 -0
- package/dist/consistency.js +1 -1
- package/dist/consistency.js.map +1 -1
- package/dist/debug.d.ts +1 -1
- package/dist/debug.d.ts.map +1 -1
- package/dist/debug.js +3 -3
- package/dist/debug.js.map +1 -1
- package/dist/http-dispatcher.d.ts +30 -0
- package/dist/http-dispatcher.d.ts.map +1 -0
- package/dist/http-dispatcher.js +101 -0
- package/dist/http-dispatcher.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -5
- package/dist/index.js.map +1 -1
- package/dist/middleware/error.d.ts +2 -2
- package/dist/middleware/error.d.ts.map +1 -1
- package/dist/middleware/error.js +2 -2
- package/dist/middleware/error.js.map +1 -1
- package/dist/middleware/project.d.ts +3 -3
- package/dist/middleware/project.d.ts.map +1 -1
- package/dist/middleware/project.js +10 -6
- package/dist/middleware/project.js.map +1 -1
- package/dist/model-runtime.d.ts +41 -0
- package/dist/model-runtime.d.ts.map +1 -0
- package/dist/model-runtime.js +81 -0
- package/dist/model-runtime.js.map +1 -0
- package/dist/reference-files.d.ts +4 -4
- package/dist/reference-files.d.ts.map +1 -1
- package/dist/reference-files.js +5 -5
- package/dist/reference-files.js.map +1 -1
- package/dist/routes/chat.d.ts +36 -73
- package/dist/routes/chat.d.ts.map +1 -1
- package/dist/routes/chat.js +390 -373
- package/dist/routes/chat.js.map +1 -1
- package/dist/routes/delta.js +6 -6
- package/dist/routes/delta.js.map +1 -1
- package/dist/routes/entity.js +9 -9
- package/dist/routes/entity.js.map +1 -1
- package/dist/routes/names.js +3 -3
- package/dist/routes/names.js.map +1 -1
- package/dist/routes/outline.js +6 -6
- package/dist/routes/outline.js.map +1 -1
- package/dist/routes/project.d.ts +1 -1
- package/dist/routes/project.js +20 -20
- package/dist/routes/project.js.map +1 -1
- package/dist/routes/proposal.js +6 -6
- package/dist/routes/proposal.js.map +1 -1
- package/dist/routes/reference.js +1 -1
- package/dist/routes/reference.js.map +1 -1
- package/dist/routes/relation.js +1 -1
- package/dist/routes/relation.js.map +1 -1
- package/dist/routes/settings.d.ts +0 -53
- package/dist/routes/settings.d.ts.map +1 -1
- package/dist/routes/settings.js +159 -194
- package/dist/routes/settings.js.map +1 -1
- package/dist/routes/trash.js +4 -4
- package/dist/routes/trash.js.map +1 -1
- package/package.json +8 -6
- package/client-dist/assets/index-DMtHdMMq.js +0 -521
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-files.d.ts","sourceRoot":"","sources":["../src/reference-files.ts"],"names":[],"mappings":"AAkBA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,kCAAkC;AAClC,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C;;;
|
|
1
|
+
{"version":3,"file":"reference-files.d.ts","sourceRoot":"","sources":["../src/reference-files.ts"],"names":[],"mappings":"AAkBA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,kCAAkC;AAClC,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C;;;qEAGqE;AACrE,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAUpE;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGtD;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,EACzF,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAIrC;AAED,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC3C,UAAU,EAAE,MAAM,EAAE,CAAC;IACtB,yBAAyB;IACxB,KAAK,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,uCAAuC;AACvC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAe5F;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO3E;AAED;4EAC4E;AAC5E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQvF;AAED,6DAA6D;AAC7D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKxE;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOzD;AAOD,qBAAqB;AACrB,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA0BD;6BAC6B;AAC7B,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAkBxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAwDxE;AAoBD;2DAC2D;AAC3D,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,IAAI,CAU/G;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,IAAI,CAI5G"}
|
package/dist/reference-files.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// 参考资料文件服务
|
|
2
2
|
//
|
|
3
3
|
// 职责:references/ 目录(项目文件夹内自包含)的读写/原子写/移动(软删 .trash/)/物理删,
|
|
4
4
|
// + 扫描重建索引(文件 = 真相源,DB 索引 = 派生镜像,mtime 快照比对)。
|
|
@@ -21,9 +21,9 @@ export const REFERENCE_TRASH_DIR = ".trash";
|
|
|
21
21
|
/** 文件 mtime 比对容差(毫秒):**仅防御 ISO 毫秒截断 roundtrip**(mtimeMs 浮点 → toISOString
|
|
22
22
|
* 毫秒截断 → getTime 可能差亚毫秒)。与备份体系 1s 容差语义相反——备份容差防「mtime 未刷新
|
|
23
23
|
* 误判有变更」,scan 容差过大会**漏检真实外部修改**(1s 内的改动检测不到),故取最小值。
|
|
24
|
-
* 应用内写入:writeFileAtomic 后 stat 与 scan 读取的 mtime
|
|
24
|
+
* 应用内写入:writeFileAtomic 后 stat 与 scan 读取的 mtime 必然一致(同一文件),严格相等即可。*/
|
|
25
25
|
export const REFERENCE_MTIME_TOLERANCE_MS = 2;
|
|
26
|
-
/**
|
|
26
|
+
/** 原子写(同款:临时文件 + fsync + rename;参考资料 md 文件同样禁止直接覆盖) */
|
|
27
27
|
export function writeFileAtomic(filePath, data) {
|
|
28
28
|
const tmp = `${filePath}.tmp`;
|
|
29
29
|
const fd = openSync(tmp, "w");
|
|
@@ -165,8 +165,8 @@ export function countUnsyncedReferenceFiles(root, db) {
|
|
|
165
165
|
return unsynced;
|
|
166
166
|
}
|
|
167
167
|
/**
|
|
168
|
-
* 扫描重建参考资料索引(POST /api/v1/reference/scan
|
|
169
|
-
* 规则(
|
|
168
|
+
* 扫描重建参考资料索引(POST /api/v1/reference/scan)。
|
|
169
|
+
* 规则(2026-08 修订:软删文件归 .trash/,references/ 下缺失即视为外部删除):
|
|
170
170
|
* 1. 遍历 references/ 顶层 *.md(排除 .trash/):
|
|
171
171
|
* - 非软删索引匹配(kind='file' 且 file_name === 文件名)→ mtime 一致(容差内)跳过;
|
|
172
172
|
* 不一致 → 以文件为准更新(title/category/tags/content/file_mtime/updated_at)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-files.js","sourceRoot":"","sources":["../src/reference-files.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"reference-files.js","sourceRoot":"","sources":["../src/reference-files.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/chat.d.ts
CHANGED
|
@@ -1,98 +1,61 @@
|
|
|
1
1
|
import { Hono, type Context } from "hono";
|
|
2
|
-
import { type
|
|
3
|
-
import { type
|
|
4
|
-
import type
|
|
5
|
-
import { type ToolDefinition } from "@whispering233/ai-editor-tools";
|
|
2
|
+
import { type ProposalStore, type ProjectRuntime } from "@whispering233/ai-editor-agent";
|
|
3
|
+
import { type ProjectContext } from "../middleware/project.js";
|
|
4
|
+
import { type RuntimeFactory } from "../chat-runtime.js";
|
|
6
5
|
/** 心跳间隔(15-30s 随机;测试经 deps.heartbeat 覆盖为毫秒级) */
|
|
7
6
|
export declare const DEFAULT_HEARTBEAT_MS: {
|
|
8
7
|
readonly minMs: 15000;
|
|
9
8
|
readonly maxMs: 30000;
|
|
10
9
|
};
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* 单个工具 argsSchema(zod)→ OpenAI 兼容 JSON Schema(LLMToolDefinition.parameters)。
|
|
16
|
-
* 方案:**zod 4 内置 toJSONSchema**(`import { toJSONSchema } from "zod"`,v4.4+ 自带,
|
|
17
|
-
* 无新增依赖)——33 个工具参数均为简单对象 + string/enum/array/record/literal/union 字段,
|
|
18
|
-
* 内置转换全覆盖且输出 draft 2020-12 合法 schema(`.strict` → additionalProperties:false、
|
|
19
|
-
* `.refine` 仅影响校验不改变类型 schema、`z.record` → propertyNames 形态)。
|
|
20
|
-
* 仅剥离顶层 `$schema` 关键字——OpenAI 兼容端点(含 DeepSeek)对 parameters 内未知关键字
|
|
21
|
-
* 存在严格模式拒绝风险,剥离后零风险(其余关键字为标准 JSON Schema 内容,兼容)。
|
|
22
|
-
*/
|
|
23
|
-
export declare function zodArgsToJsonSchema(schema: z.ZodTypeAny): Record<string, unknown>;
|
|
24
|
-
/**
|
|
25
|
-
* registry 工具定义 → LLM function calling 工具定义(决策点:只转换 AUTO + PROPOSAL 权限的
|
|
26
|
-
* 33 个工具——listTools 已不注册执行类(S6.7 核心设计原则「AI 只能提案不能直接写」),
|
|
27
|
-
* 此处权限过滤为双保险:未来误注册执行类工具也不会暴露给模型)。
|
|
28
|
-
*/
|
|
29
|
-
export declare function toLLMToolDefinitions(defs: readonly ToolDefinition[]): LLMToolDefinition[];
|
|
30
|
-
/**
|
|
31
|
-
* [llm] 请求调试日志装饰器:给 produce 包一层(真实路径经
|
|
32
|
-
* `createLLMRequestLogger(createRealProduce(...), { model, tools })` 组装),对应类别开启时:
|
|
33
|
-
* - **request 日志**(类别 request):模型名 + 请求参数 + **完整 messages JSON(不截断——
|
|
34
|
-
* 用户核心诉求「最终组装的 prompt」)** + 工具名列表;每轮每次 attempt 各打一次(含重试)
|
|
35
|
-
* - **usage 日志**(类别 usage):onEvent 转发处捕获 finish 事件,打真实 token 数
|
|
36
|
-
* (需求 3,流内真实 usage)——与 request **分开判定**(categories: ["request","usage"]
|
|
37
|
-
* 时只显示请求与 tokens 统计)
|
|
38
|
-
* - **敏感红线**:只打印请求体(messages 本身无 key——key 走 fetch header),
|
|
39
|
-
* 绝不打印 apiKey / headers
|
|
40
|
-
* - 两类别全关(request + usage 均未开启)时**零开销直通**:不包装 onEvent、不拼接字符串
|
|
41
|
-
* 独立成装饰器而非塞进 createRealProduce:测试可用 mock produce 直测日志层,
|
|
42
|
-
* 不经真实 DeepSeek 网络调用(与 createChatEventLogger 的「工厂 + 组合」同款模式)。
|
|
43
|
-
* 注:produce (run.ts)不含 maxTokens/temperature(当前无对应配置),如实标注 <未设置>。
|
|
44
|
-
*/
|
|
45
|
-
export declare function createLLMRequestLogger(produce: RunAgentDeps["produce"], ctx: {
|
|
46
|
-
model: string;
|
|
47
|
-
tools: LLMToolDefinition[];
|
|
48
|
-
}): RunAgentDeps["produce"];
|
|
49
|
-
/** POST /chat 可注入依赖(全部可选;缺省走真实实现。测试注入 mock 避免真实 DeepSeek 调用) */
|
|
10
|
+
/** 会话列表 lastMessage 截断长度(与历史口径一致,见 docs/db/schema.md) */
|
|
11
|
+
export declare const SESSION_LAST_MESSAGE_MAX_LEN = 50;
|
|
12
|
+
/** chat 路由可注入依赖(全部可选;缺省走真实实现) */
|
|
50
13
|
export interface ChatRouteDeps {
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
dispatcher?: ToolDispatcher;
|
|
55
|
-
/** 提案仓(缺省 defaultProposalStore 单例——与 S7.5 confirm/reject 同仓;测试注入独立实例隔离) */
|
|
14
|
+
/** 运行时工厂(缺省 = 项目 sessions/ + pi 装配;测试注入 faux provider 运行时) */
|
|
15
|
+
runtimeFactory?: RuntimeFactory;
|
|
16
|
+
/** 提案仓(缺省 defaultProposalStore 单例——与 confirm/reject 同仓;测试注入独立实例隔离) */
|
|
56
17
|
store?: ProposalStore;
|
|
57
|
-
/** 心跳间隔覆盖 ms(缺省 15-30s
|
|
18
|
+
/** 心跳间隔覆盖 ms(缺省 15-30s 随机;测试注入毫秒级) */
|
|
58
19
|
heartbeat?: {
|
|
59
20
|
minMs: number;
|
|
60
21
|
maxMs: number;
|
|
61
22
|
};
|
|
62
|
-
/** 时间注入(缺省 db nowIso——应用层写 ISO 8601 约定) */
|
|
63
|
-
now?: () => string;
|
|
64
|
-
/** 模型名覆盖(缺省设置页模型或 DEFAULT_MODEL) */
|
|
65
|
-
model?: string;
|
|
66
|
-
/** apiKey 覆盖(缺省 effectiveApiKey() 环境变量 > 用户级配置) */
|
|
67
|
-
apiKey?: string;
|
|
68
|
-
/** 已转换工具定义覆盖(缺省 listTools → toLLMToolDefinitions) */
|
|
69
|
-
tools?: LLMToolDefinition[];
|
|
70
|
-
/** 续聊历史条数上限覆盖(缺省 SESSION_HISTORY_MAX_MESSAGES;测试可收紧) */
|
|
71
|
-
sessionHistoryMaxCount?: number;
|
|
72
23
|
}
|
|
73
24
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
25
|
+
* 聚焦上下文文本:focus_entity_id → 实体、focus_node_id → 大纲节点,拼成结构化文本。
|
|
26
|
+
* 查询不到(已软删/不存在/跨项目)→ 跳过该项(不报错):客户端可能携带过期 focus。
|
|
27
|
+
* 两项皆无 → undefined(不注入,消息原文保持干净)。
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildFocusText(project: ProjectContext, context: {
|
|
30
|
+
focus_entity_type?: string;
|
|
31
|
+
focus_entity_id?: string;
|
|
32
|
+
focus_node_id?: string;
|
|
33
|
+
} | undefined): string | undefined;
|
|
34
|
+
/** pi 会话事件的最小结构形态(结构性类型:server 包不直接依赖 pi 的类型) */
|
|
35
|
+
interface MinimalAgentEvent {
|
|
36
|
+
type: string;
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 会话事件调试日志器(配置文件 debug 段;类别全关时零开销早退):
|
|
41
|
+
* - chat:turn_start / 文本与思考增量(只打长度)/ 工具执行起止(参数与结果摘要)/ 压缩 / 重试 / 本轮结束
|
|
42
|
+
* - request:**每次模型请求前一次**(即 user / toolResult 消息落定之时——这两种消息之后紧跟一次模型请求)
|
|
43
|
+
* 打印模型名 + 工具名 + **完整 messages JSON(不截断——用户核心诉求「最终组装的 prompt」)**
|
|
44
|
+
* - usage:assistant 消息的真实 usage;工具结果被截断时的 TOOL_RESULT_TOO_LARGE 记录
|
|
45
|
+
* 注:旧 `stream` 类别(chatStream debugStream)随自研 LLM 层退场,见报告。
|
|
82
46
|
*/
|
|
83
|
-
export declare function
|
|
47
|
+
export declare function createChatDebugLogger(runtime: ProjectRuntime): (event: MinimalAgentEvent) => void;
|
|
84
48
|
/**
|
|
85
49
|
* POST /chat 处理器工厂(测试经 createChatRoutes 注入 deps)。
|
|
86
|
-
* 流程:项目/请求校验(JSON 错误,不开流)→
|
|
87
|
-
* →
|
|
88
|
-
* onEvent 转 SSE 帧、onMessages 落库)→ 取消作废提案(B2 取舍见下)→ 关流。
|
|
50
|
+
* 流程:项目/请求校验(JSON 错误,不开流)→ 会话解析(磁盘发现或新建)→ 运行时装配 + 凭据预检
|
|
51
|
+
* → 开流:首帧 session + 事件投影帧 + 心跳 → `session.prompt()` → 收尾(取消则作废提案)。
|
|
89
52
|
*/
|
|
90
53
|
export declare function chatSendHandler(deps?: ChatRouteDeps): (c: Context) => Promise<Response>;
|
|
91
54
|
/**
|
|
92
|
-
* 创建对话路由(
|
|
93
|
-
* 独立实例挂载测试 app,避免真实 DeepSeek 调用;index.ts 挂载默认实例)。
|
|
55
|
+
* 创建对话路由(index.ts 挂载默认实例;测试注入 deps 构造独立实例)。
|
|
94
56
|
*/
|
|
95
57
|
export declare function createChatRoutes(deps?: ChatRouteDeps): Hono;
|
|
96
58
|
/** 默认对话路由实例(index.ts 挂载于 /api/v1/chat) */
|
|
97
59
|
export declare const chatRoutes: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
60
|
+
export {};
|
|
98
61
|
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAaL,KAAK,aAAa,EAClB,KAAK,cAAc,EAEpB,MAAM,gCAAgC,CAAC;AAWxC,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAQL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAI5B,gDAAgD;AAChD,eAAO,MAAM,oBAAoB;;;CAA4C,CAAC;AAE9E,yDAAyD;AACzD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAO/C,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,sEAAsE;IACtE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,sCAAsC;IACtC,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACpG,MAAM,GAAG,SAAS,CAiBpB;AAkBD,iDAAiD;AACjD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CA4HjG;AAgCD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,aAAkB,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA4K3F;AAYD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,aAAkB,GAAG,IAAI,CA+E/D;AAED,0CAA0C;AAC1C,eAAO,MAAM,UAAU,4EAAqB,CAAC"}
|