@winmatrix/protocol 1.0.5 → 1.0.7
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/dist/agentEngine.d.ts +280 -0
- package/dist/agentEngine.d.ts.map +1 -1
- package/dist/agentEngine.js +30 -0
- package/dist/agentEngine.js.map +1 -1
- package/dist/chatPresentation.d.ts +691 -0
- package/dist/chatPresentation.d.ts.map +1 -0
- package/dist/chatPresentation.js +144 -0
- package/dist/chatPresentation.js.map +1 -0
- package/dist/conversationTerminal.d.ts +1656 -0
- package/dist/conversationTerminal.d.ts.map +1 -0
- package/dist/conversationTerminal.js +145 -0
- package/dist/conversationTerminal.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/mcpUrl.d.ts +19 -0
- package/dist/mcpUrl.d.ts.map +1 -0
- package/dist/mcpUrl.js +51 -0
- package/dist/mcpUrl.js.map +1 -0
- package/dist/messageView.d.ts +165 -0
- package/dist/messageView.d.ts.map +1 -0
- package/dist/messageView.js +32 -0
- package/dist/messageView.js.map +1 -0
- package/dist/schemas.d.ts +213 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +40 -1
- package/dist/schemas.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { MessageKindSchema } from './messageView.js';
|
|
3
|
+
export const ChatPresentationFinalKind = 'final-response';
|
|
4
|
+
export const CONVERSATION_CHAT_ACCEPTED_SCHEMA_VERSION = 1;
|
|
5
|
+
const PresentationOrderCursorSchema = z.string().regex(/^(0|[1-9]\d*)$/);
|
|
6
|
+
/** 首条消息由服务端分配真实会话 ID 后的 WS 确认帧。 */
|
|
7
|
+
export const ConversationChatAcceptedSchema = z.object({
|
|
8
|
+
type: z.literal('conversation:chat_accepted'),
|
|
9
|
+
schemaVersion: z.literal(CONVERSATION_CHAT_ACCEPTED_SCHEMA_VERSION),
|
|
10
|
+
conversationId: z.string().min(1).max(200),
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* user 消息落库回执帧:前端 pending 区据落库 presentationOrder 转正归位。
|
|
14
|
+
* ack 丢失无补偿——由前端重叠窗口回读自愈(spec §4.2)。
|
|
15
|
+
*/
|
|
16
|
+
export const MessageAckFrameSchema = z.object({
|
|
17
|
+
type: z.literal('conversation:message_ack'),
|
|
18
|
+
conversationId: z.string().min(1).max(200),
|
|
19
|
+
userMessageId: z.string().min(1).max(200),
|
|
20
|
+
presentationOrder: PresentationOrderCursorSchema,
|
|
21
|
+
turnKey: z.string().min(1).max(300),
|
|
22
|
+
});
|
|
23
|
+
export const ChatPresentationLifecycleSchema = z.enum([
|
|
24
|
+
'open',
|
|
25
|
+
'patch',
|
|
26
|
+
'settled',
|
|
27
|
+
'discarded',
|
|
28
|
+
]);
|
|
29
|
+
export const ChatPresentationAnchorSchema = z.object({
|
|
30
|
+
afterMessageId: z.string().min(1),
|
|
31
|
+
slot: z.number().int().nonnegative(),
|
|
32
|
+
tieBreaker: z.string().min(1),
|
|
33
|
+
});
|
|
34
|
+
export const EmployeePresentationAuthorSchema = z.object({
|
|
35
|
+
kind: z.literal('employee'),
|
|
36
|
+
roleId: z.string().min(1),
|
|
37
|
+
digitalEmployeeName: z.string().min(1),
|
|
38
|
+
digitalEmployeeId: z.string().min(1).optional(),
|
|
39
|
+
});
|
|
40
|
+
export const SystemPresentationAuthorSchema = z.object({
|
|
41
|
+
kind: z.literal('system'),
|
|
42
|
+
displayName: z.string().min(1),
|
|
43
|
+
});
|
|
44
|
+
export const UserPresentationAuthorSchema = z.object({
|
|
45
|
+
kind: z.literal('user'),
|
|
46
|
+
displayName: z.string().min(1).optional(),
|
|
47
|
+
});
|
|
48
|
+
export const ChatPresentationAuthorSchema = z.discriminatedUnion('kind', [
|
|
49
|
+
UserPresentationAuthorSchema,
|
|
50
|
+
EmployeePresentationAuthorSchema,
|
|
51
|
+
SystemPresentationAuthorSchema,
|
|
52
|
+
]);
|
|
53
|
+
export const ChatPresentationProducerSchema = z.object({
|
|
54
|
+
module: z.string().min(1),
|
|
55
|
+
runId: z.string().min(1).optional(),
|
|
56
|
+
sourceId: z.string().min(1).optional(),
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* step 身份嵌套对象(converge-message-id-identity design D2)。
|
|
60
|
+
* 全字段 optional:旧磁带/DB 事件回读经同一 schema,缺失 step 不拒 parse。
|
|
61
|
+
*/
|
|
62
|
+
export const ChatPresentationStepSchema = z.object({
|
|
63
|
+
workerBriefId: z.string().min(1).optional(),
|
|
64
|
+
workerStepId: z.string().min(1).optional(),
|
|
65
|
+
stepKey: z.string().min(1).optional(),
|
|
66
|
+
roleId: z.string().min(1).optional(),
|
|
67
|
+
attemptNo: z.number().int().positive().optional(),
|
|
68
|
+
repairRound: z.number().int().positive().optional(),
|
|
69
|
+
});
|
|
70
|
+
const ChatPresentationEventBaseSchema = z.object({
|
|
71
|
+
eventId: z.string().min(1),
|
|
72
|
+
conversationId: z.string().min(1),
|
|
73
|
+
turnId: z.string().min(1),
|
|
74
|
+
presentationId: z.string().min(1),
|
|
75
|
+
kind: MessageKindSchema,
|
|
76
|
+
lifecycle: ChatPresentationLifecycleSchema,
|
|
77
|
+
revision: z.number().int().nonnegative(),
|
|
78
|
+
/** 服务端发布时刻;仅用于当前页的同锚点因果排序,历史仍按 presentationOrder。 */
|
|
79
|
+
emittedAt: z.number().int().nonnegative(),
|
|
80
|
+
anchor: ChatPresentationAnchorSchema,
|
|
81
|
+
producer: ChatPresentationProducerSchema,
|
|
82
|
+
author: ChatPresentationAuthorSchema.optional(),
|
|
83
|
+
payload: z.record(z.string(), z.unknown()),
|
|
84
|
+
step: ChatPresentationStepSchema.optional(),
|
|
85
|
+
});
|
|
86
|
+
export const ChatPresentationEventSchema = ChatPresentationEventBaseSchema.superRefine((event, context) => {
|
|
87
|
+
if (event.kind === ChatPresentationFinalKind && !event.author) {
|
|
88
|
+
context.addIssue({
|
|
89
|
+
code: z.ZodIssueCode.custom,
|
|
90
|
+
message: 'final-response requires an explicit employee or system author',
|
|
91
|
+
path: ['author'],
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
const PresentationIntentBaseSchema = z.object({
|
|
96
|
+
conversationId: z.string().min(1),
|
|
97
|
+
turnId: z.string().min(1),
|
|
98
|
+
presentationId: z.string().min(1).optional(),
|
|
99
|
+
anchor: ChatPresentationAnchorSchema.optional(),
|
|
100
|
+
afterMessageId: z.string().min(1).optional(),
|
|
101
|
+
tieBreaker: z.string().min(1).optional(),
|
|
102
|
+
kind: MessageKindSchema,
|
|
103
|
+
lifecycle: ChatPresentationLifecycleSchema,
|
|
104
|
+
producer: ChatPresentationProducerSchema,
|
|
105
|
+
author: ChatPresentationAuthorSchema.optional(),
|
|
106
|
+
payload: z.record(z.string(), z.unknown()),
|
|
107
|
+
// 阻断修复(design D2):final 族必经 createEvent → PresentationIntentSchema.parse,
|
|
108
|
+
// zod 默认剥未知键——intent 不带 step 则服务端注入的身份在 publisher 边界静默消失。
|
|
109
|
+
step: ChatPresentationStepSchema.optional(),
|
|
110
|
+
});
|
|
111
|
+
export const PresentationIntentSchema = PresentationIntentBaseSchema.superRefine((intent, context) => {
|
|
112
|
+
if (intent.kind === ChatPresentationFinalKind && !intent.author) {
|
|
113
|
+
context.addIssue({
|
|
114
|
+
code: z.ZodIssueCode.custom,
|
|
115
|
+
message: 'final-response requires an explicit employee or system author',
|
|
116
|
+
path: ['author'],
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
export function compareHistoryPresentationOrder(left, right) {
|
|
121
|
+
if (left.presentationOrder !== right.presentationOrder) {
|
|
122
|
+
return left.presentationOrder < right.presentationOrder ? -1 : 1;
|
|
123
|
+
}
|
|
124
|
+
return left.id.localeCompare(right.id);
|
|
125
|
+
}
|
|
126
|
+
export function compareLivePresentationAnchor(left, right) {
|
|
127
|
+
if (left.afterMessageId !== right.afterMessageId) {
|
|
128
|
+
return left.afterMessageId.localeCompare(right.afterMessageId);
|
|
129
|
+
}
|
|
130
|
+
if (left.slot !== right.slot)
|
|
131
|
+
return left.slot - right.slot;
|
|
132
|
+
return left.tieBreaker.localeCompare(right.tieBreaker);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* execution-surface 消息的合成 presentationId(converge-message-id-identity)。
|
|
136
|
+
* 与服务端/前端历史拼串字面量 `execution-surface:${turnId}` 逐字等价;
|
|
137
|
+
* 服务端 3 处 + 前端 3 处拼串改引本 helper(tasks 2.3)。
|
|
138
|
+
*/
|
|
139
|
+
export function executionSurfacePresentationId(turnId) {
|
|
140
|
+
return `execution-surface:${turnId}`;
|
|
141
|
+
}
|
|
142
|
+
/** brief 过程帧 presentationId 前缀(`brief-message:<briefId>`,同 brief 重试覆盖旧帧)。 */
|
|
143
|
+
export const BRIEF_PROCESS_FRAME_PREFIX = 'brief-message:';
|
|
144
|
+
//# sourceMappingURL=chatPresentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatPresentation.js","sourceRoot":"","sources":["../src/chatPresentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AAC1D,MAAM,CAAC,MAAM,yCAAyC,GAAG,CAAC,CAAC;AAE3D,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAEzE,mCAAmC;AACnC,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC;IAC7C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,yCAAyC,CAAC;IACnE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAC3C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAC3C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC1C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACzC,iBAAiB,EAAE,6BAA6B;IAChD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,IAAI,CAAC;IACpD,MAAM;IACN,OAAO;IACP,SAAS;IACT,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACvE,4BAA4B;IAC5B,gCAAgC;IAChC,8BAA8B;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAEH,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,+BAA+B;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACxC,qDAAqD;IACrD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,MAAM,EAAE,4BAA4B;IACpC,QAAQ,EAAE,8BAA8B;IACxC,MAAM,EAAE,4BAA4B,CAAC,QAAQ,EAAE;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1C,IAAI,EAAE,0BAA0B,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxG,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9D,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,+DAA+D;YACxE,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,4BAA4B,CAAC,QAAQ,EAAE;IAC/C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,+BAA+B;IAC1C,QAAQ,EAAE,8BAA8B;IACxC,MAAM,EAAE,4BAA4B,CAAC,QAAQ,EAAE;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1C,0EAA0E;IAC1E,0DAA0D;IAC1D,IAAI,EAAE,0BAA0B,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnG,IAAI,MAAM,CAAC,IAAI,KAAK,yBAAyB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAChE,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,+DAA+D;YACxE,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAOH,MAAM,UAAU,+BAA+B,CAC7C,IAAmC,EACnC,KAAoC;IAEpC,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,IAA4B,EAC5B,KAA6B;IAE7B,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAAc;IAC3D,OAAO,qBAAqB,MAAM,EAAE,CAAC;AACvC,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,gBAAgB,CAAC"}
|