agentmesh-ai 0.1.0

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.
Files changed (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +247 -0
  3. package/dist/cli/commands/init.d.ts +2 -0
  4. package/dist/cli/commands/init.d.ts.map +1 -0
  5. package/dist/cli/commands/init.js +134 -0
  6. package/dist/cli/commands/init.js.map +1 -0
  7. package/dist/cli/commands/memory.d.ts +8 -0
  8. package/dist/cli/commands/memory.d.ts.map +1 -0
  9. package/dist/cli/commands/memory.js +40 -0
  10. package/dist/cli/commands/memory.js.map +1 -0
  11. package/dist/cli/commands/serve.d.ts +8 -0
  12. package/dist/cli/commands/serve.d.ts.map +1 -0
  13. package/dist/cli/commands/serve.js +90 -0
  14. package/dist/cli/commands/serve.js.map +1 -0
  15. package/dist/cli/commands/setup.d.ts +2 -0
  16. package/dist/cli/commands/setup.d.ts.map +1 -0
  17. package/dist/cli/commands/setup.js +117 -0
  18. package/dist/cli/commands/setup.js.map +1 -0
  19. package/dist/cli/commands/status.d.ts +2 -0
  20. package/dist/cli/commands/status.d.ts.map +1 -0
  21. package/dist/cli/commands/status.js +66 -0
  22. package/dist/cli/commands/status.js.map +1 -0
  23. package/dist/cli/index.d.ts +3 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +50 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/conversation/client.d.ts +72 -0
  28. package/dist/conversation/client.d.ts.map +1 -0
  29. package/dist/conversation/client.js +245 -0
  30. package/dist/conversation/client.js.map +1 -0
  31. package/dist/conversation/index.d.ts +7 -0
  32. package/dist/conversation/index.d.ts.map +1 -0
  33. package/dist/conversation/index.js +4 -0
  34. package/dist/conversation/index.js.map +1 -0
  35. package/dist/conversation/protocol.d.ts +217 -0
  36. package/dist/conversation/protocol.d.ts.map +1 -0
  37. package/dist/conversation/protocol.js +7 -0
  38. package/dist/conversation/protocol.js.map +1 -0
  39. package/dist/conversation/recorder.d.ts +4 -0
  40. package/dist/conversation/recorder.d.ts.map +1 -0
  41. package/dist/conversation/recorder.js +60 -0
  42. package/dist/conversation/recorder.js.map +1 -0
  43. package/dist/conversation/server.d.ts +59 -0
  44. package/dist/conversation/server.d.ts.map +1 -0
  45. package/dist/conversation/server.js +529 -0
  46. package/dist/conversation/server.js.map +1 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +3 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/integrations/claude-md.d.ts +2 -0
  52. package/dist/integrations/claude-md.d.ts.map +1 -0
  53. package/dist/integrations/claude-md.js +35 -0
  54. package/dist/integrations/claude-md.js.map +1 -0
  55. package/dist/integrations/copilot.d.ts +2 -0
  56. package/dist/integrations/copilot.d.ts.map +1 -0
  57. package/dist/integrations/copilot.js +39 -0
  58. package/dist/integrations/copilot.js.map +1 -0
  59. package/dist/integrations/detect.d.ts +9 -0
  60. package/dist/integrations/detect.d.ts.map +1 -0
  61. package/dist/integrations/detect.js +34 -0
  62. package/dist/integrations/detect.js.map +1 -0
  63. package/dist/mcp/conversation-tools.d.ts +4 -0
  64. package/dist/mcp/conversation-tools.d.ts.map +1 -0
  65. package/dist/mcp/conversation-tools.js +540 -0
  66. package/dist/mcp/conversation-tools.js.map +1 -0
  67. package/dist/mcp/index.d.ts +3 -0
  68. package/dist/mcp/index.d.ts.map +1 -0
  69. package/dist/mcp/index.js +86 -0
  70. package/dist/mcp/index.js.map +1 -0
  71. package/dist/mcp/memory-tools.d.ts +4 -0
  72. package/dist/mcp/memory-tools.d.ts.map +1 -0
  73. package/dist/mcp/memory-tools.js +195 -0
  74. package/dist/mcp/memory-tools.js.map +1 -0
  75. package/dist/mcp/resources.d.ts +3 -0
  76. package/dist/mcp/resources.d.ts.map +1 -0
  77. package/dist/mcp/resources.js +23 -0
  78. package/dist/mcp/resources.js.map +1 -0
  79. package/dist/memory/index.d.ts +7 -0
  80. package/dist/memory/index.d.ts.map +1 -0
  81. package/dist/memory/index.js +6 -0
  82. package/dist/memory/index.js.map +1 -0
  83. package/dist/memory/merge-view.d.ts +9 -0
  84. package/dist/memory/merge-view.d.ts.map +1 -0
  85. package/dist/memory/merge-view.js +88 -0
  86. package/dist/memory/merge-view.js.map +1 -0
  87. package/dist/memory/reader.d.ts +8 -0
  88. package/dist/memory/reader.d.ts.map +1 -0
  89. package/dist/memory/reader.js +53 -0
  90. package/dist/memory/reader.js.map +1 -0
  91. package/dist/memory/schema.d.ts +154 -0
  92. package/dist/memory/schema.d.ts.map +1 -0
  93. package/dist/memory/schema.js +34 -0
  94. package/dist/memory/schema.js.map +1 -0
  95. package/dist/memory/searcher.d.ts +7 -0
  96. package/dist/memory/searcher.d.ts.map +1 -0
  97. package/dist/memory/searcher.js +49 -0
  98. package/dist/memory/searcher.js.map +1 -0
  99. package/dist/memory/secret-scanner.d.ts +21 -0
  100. package/dist/memory/secret-scanner.d.ts.map +1 -0
  101. package/dist/memory/secret-scanner.js +54 -0
  102. package/dist/memory/secret-scanner.js.map +1 -0
  103. package/dist/memory/types.d.ts +71 -0
  104. package/dist/memory/types.d.ts.map +1 -0
  105. package/dist/memory/types.js +5 -0
  106. package/dist/memory/types.js.map +1 -0
  107. package/dist/memory/writer.d.ts +4 -0
  108. package/dist/memory/writer.d.ts.map +1 -0
  109. package/dist/memory/writer.js +114 -0
  110. package/dist/memory/writer.js.map +1 -0
  111. package/dist/utils/git.d.ts +7 -0
  112. package/dist/utils/git.d.ts.map +1 -0
  113. package/dist/utils/git.js +46 -0
  114. package/dist/utils/git.js.map +1 -0
  115. package/dist/utils/id.d.ts +6 -0
  116. package/dist/utils/id.d.ts.map +1 -0
  117. package/dist/utils/id.js +20 -0
  118. package/dist/utils/id.js.map +1 -0
  119. package/dist/utils/yaml.d.ts +7 -0
  120. package/dist/utils/yaml.d.ts.map +1 -0
  121. package/dist/utils/yaml.js +50 -0
  122. package/dist/utils/yaml.js.map +1 -0
  123. package/package.json +59 -0
@@ -0,0 +1,217 @@
1
+ /**
2
+ * WebSocket message protocol for the conversation space.
3
+ *
4
+ * All messages are JSON with a "type" field for routing.
5
+ */
6
+ export interface AgentIdentity {
7
+ id: string;
8
+ displayName: string;
9
+ role: string;
10
+ tool: string;
11
+ }
12
+ export interface JoinMessage {
13
+ type: 'JOIN';
14
+ agent: AgentIdentity;
15
+ key?: string;
16
+ }
17
+ export interface ChatMessage {
18
+ type: 'MESSAGE';
19
+ topic: string;
20
+ content: string;
21
+ related_to?: string;
22
+ }
23
+ export interface ConcludeMessage {
24
+ type: 'CONCLUDE';
25
+ topic: string;
26
+ summary: string;
27
+ tags: string[];
28
+ }
29
+ export interface LeaveMessage {
30
+ type: 'LEAVE';
31
+ }
32
+ export interface ProposeDecisionMessage {
33
+ type: 'PROPOSE_DECISION';
34
+ decisionId: string;
35
+ topic: string;
36
+ options: Array<{
37
+ label: string;
38
+ description: string;
39
+ }>;
40
+ recommendation?: string;
41
+ proposedBy: string;
42
+ }
43
+ export interface VoteMessage {
44
+ type: 'VOTE';
45
+ decisionId: string;
46
+ vote: 'approve' | 'reject';
47
+ choice?: string;
48
+ reason?: string;
49
+ }
50
+ export interface StartMeetingMessage {
51
+ type: 'START_MEETING';
52
+ meetingId: string;
53
+ topic: string;
54
+ requiredAgents: string[];
55
+ }
56
+ /** Agent uploads its memory entries to the conversation space. */
57
+ export interface SyncMemoryMessage {
58
+ type: 'SYNC_MEMORY';
59
+ entries: Array<{
60
+ topic: string;
61
+ tags: string[];
62
+ content: string;
63
+ date: string;
64
+ protected?: boolean;
65
+ owner?: string;
66
+ decided_with?: string[];
67
+ }>;
68
+ }
69
+ export interface ConcludeMeetingMessage {
70
+ type: 'CONCLUDE_MEETING';
71
+ meetingId: string;
72
+ }
73
+ export interface CancelMeetingMessage {
74
+ type: 'CANCEL_MEETING';
75
+ meetingId: string;
76
+ reason?: string;
77
+ }
78
+ export type ClientMessage = JoinMessage | ChatMessage | ConcludeMessage | LeaveMessage | ProposeDecisionMessage | VoteMessage | StartMeetingMessage | SyncMemoryMessage | ConcludeMeetingMessage | CancelMeetingMessage;
79
+ export interface TopicSummary {
80
+ topic: string;
81
+ messageCount: number;
82
+ participants: string[];
83
+ lastMessageAt: string;
84
+ }
85
+ export interface WelcomeMessage {
86
+ type: 'WELCOME';
87
+ agents: AgentIdentity[];
88
+ activeTopics: string[];
89
+ topicSummaries?: TopicSummary[];
90
+ }
91
+ export interface IncomingChatMessage {
92
+ type: 'MESSAGE';
93
+ from: AgentIdentity;
94
+ topic: string;
95
+ content: string;
96
+ timestamp: string;
97
+ related_to?: string;
98
+ }
99
+ export interface AgentJoinedMessage {
100
+ type: 'AGENT_JOINED';
101
+ agent: AgentIdentity;
102
+ }
103
+ export interface AgentLeftMessage {
104
+ type: 'AGENT_LEFT';
105
+ agentId: string;
106
+ }
107
+ export interface ConclusionMessage {
108
+ type: 'CONCLUSION';
109
+ topic: string;
110
+ summary: string;
111
+ tags: string[];
112
+ concludedBy: string;
113
+ timestamp: string;
114
+ }
115
+ export interface ErrorMessage {
116
+ type: 'ERROR';
117
+ message: string;
118
+ }
119
+ export interface DecisionProposedMessage {
120
+ type: 'DECISION_PROPOSED';
121
+ decisionId: string;
122
+ topic: string;
123
+ options: Array<{
124
+ label: string;
125
+ description: string;
126
+ }>;
127
+ recommendation?: string;
128
+ proposedBy: AgentIdentity;
129
+ timestamp: string;
130
+ }
131
+ export interface VoteReceivedMessage {
132
+ type: 'VOTE_RECEIVED';
133
+ decisionId: string;
134
+ agentId: string;
135
+ vote: 'approve' | 'reject';
136
+ choice?: string;
137
+ reason?: string;
138
+ }
139
+ export interface DecisionResolvedMessage {
140
+ type: 'DECISION_RESOLVED';
141
+ decisionId: string;
142
+ topic: string;
143
+ outcome: 'approved' | 'rejected';
144
+ choice?: string;
145
+ votes: Array<{
146
+ agentId: string;
147
+ vote: 'approve' | 'reject';
148
+ choice?: string;
149
+ reason?: string;
150
+ }>;
151
+ timestamp: string;
152
+ }
153
+ /** Server broadcasts an agent's synced memory to all other agents. */
154
+ export interface MemorySyncedMessage {
155
+ type: 'MEMORY_SYNCED';
156
+ agent: AgentIdentity;
157
+ entries: Array<{
158
+ topic: string;
159
+ tags: string[];
160
+ content: string;
161
+ date: string;
162
+ protected?: boolean;
163
+ owner?: string;
164
+ decided_with?: string[];
165
+ }>;
166
+ }
167
+ export interface MeetingStatusMessage {
168
+ type: 'MEETING_STATUS';
169
+ meetingId: string;
170
+ topic: string;
171
+ status: 'waiting' | 'active' | 'concluded';
172
+ requiredAgents: string[];
173
+ presentAgents: string[];
174
+ missingAgents: string[];
175
+ startedBy: string;
176
+ }
177
+ export type ServerMessage = WelcomeMessage | IncomingChatMessage | AgentJoinedMessage | AgentLeftMessage | ConclusionMessage | ErrorMessage | DecisionProposedMessage | VoteReceivedMessage | DecisionResolvedMessage | MeetingStatusMessage | MemorySyncedMessage;
178
+ export interface StoredMessage {
179
+ from: AgentIdentity;
180
+ topic: string;
181
+ content: string;
182
+ timestamp: string;
183
+ related_to?: string;
184
+ }
185
+ export interface StoredConclusion {
186
+ topic: string;
187
+ summary: string;
188
+ tags: string[];
189
+ concludedBy: string;
190
+ timestamp: string;
191
+ }
192
+ export interface Meeting {
193
+ meetingId: string;
194
+ topic: string;
195
+ status: 'waiting' | 'active' | 'concluded';
196
+ requiredAgents: string[];
197
+ startedBy: string;
198
+ timestamp: string;
199
+ }
200
+ export interface PendingDecision {
201
+ decisionId: string;
202
+ topic: string;
203
+ options: Array<{
204
+ label: string;
205
+ description: string;
206
+ }>;
207
+ recommendation?: string;
208
+ proposedBy: string;
209
+ votes: Map<string, {
210
+ vote: 'approve' | 'reject';
211
+ choice?: string;
212
+ reason?: string;
213
+ }>;
214
+ requiredVoters: string[];
215
+ timestamp: string;
216
+ }
217
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/conversation/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * WebSocket message protocol for the conversation space.
3
+ *
4
+ * All messages are JSON with a "type" field for routing.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/conversation/protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,4 @@
1
+ import type { StoredMessage, StoredConclusion } from './protocol.js';
2
+ /** Save a conversation's messages and conclusions to a Markdown file. */
3
+ export declare function saveConversation(agentHubDir: string, topic: string, messages: StoredMessage[], conclusions: StoredConclusion[]): Promise<string>;
4
+ //# sourceMappingURL=recorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/conversation/recorder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAErE,yEAAyE;AACzE,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,gBAAgB,EAAE,GAC9B,OAAO,CAAC,MAAM,CAAC,CAejB"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Conversation recorder — saves conversation logs as Markdown.
3
+ */
4
+ import { join } from 'node:path';
5
+ import { writeFile, mkdir } from 'node:fs/promises';
6
+ import { existsSync } from 'node:fs';
7
+ /** Save a conversation's messages and conclusions to a Markdown file. */
8
+ export async function saveConversation(agentHubDir, topic, messages, conclusions) {
9
+ const conversationsDir = join(agentHubDir, 'conversations');
10
+ if (!existsSync(conversationsDir)) {
11
+ await mkdir(conversationsDir, { recursive: true });
12
+ }
13
+ const date = new Date().toISOString().slice(0, 10);
14
+ const slug = topic.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
15
+ const filename = `${date}-${slug}.md`;
16
+ const filePath = join(conversationsDir, filename);
17
+ const md = formatConversation(topic, messages, conclusions);
18
+ await writeFile(filePath, md, 'utf-8');
19
+ return filePath;
20
+ }
21
+ function formatConversation(topic, messages, conclusions) {
22
+ const lines = [];
23
+ lines.push(`# ${topic}`);
24
+ lines.push('');
25
+ lines.push(`Date: ${new Date().toISOString()}`);
26
+ lines.push('');
27
+ // Participants
28
+ const participants = new Set(messages.map(m => `${m.from.displayName} (${m.from.role})`));
29
+ if (participants.size > 0) {
30
+ lines.push(`Participants: ${[...participants].join(', ')}`);
31
+ lines.push('');
32
+ }
33
+ // Messages
34
+ if (messages.length > 0) {
35
+ lines.push('## Discussion');
36
+ lines.push('');
37
+ for (const msg of messages) {
38
+ const time = msg.timestamp.slice(11, 19);
39
+ lines.push(`**${msg.from.displayName}** (${time}):`);
40
+ lines.push(msg.content);
41
+ lines.push('');
42
+ }
43
+ }
44
+ // Conclusions
45
+ if (conclusions.length > 0) {
46
+ lines.push('## Conclusions');
47
+ lines.push('');
48
+ for (const c of conclusions) {
49
+ lines.push(`### ${c.topic}`);
50
+ if (c.tags.length > 0) {
51
+ lines.push(`Tags: ${c.tags.join(', ')}`);
52
+ }
53
+ lines.push('');
54
+ lines.push(c.summary);
55
+ lines.push('');
56
+ }
57
+ }
58
+ return lines.join('\n');
59
+ }
60
+ //# sourceMappingURL=recorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/conversation/recorder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { AgentIdentity, StoredMessage, StoredConclusion, PendingDecision, Meeting } from './protocol.js';
2
+ export interface ConversationServerOptions {
3
+ port: number;
4
+ host?: string;
5
+ key?: string;
6
+ }
7
+ export declare class ConversationServer {
8
+ private wss;
9
+ private agents;
10
+ private messages;
11
+ private conclusions;
12
+ private pendingDecisions;
13
+ private meetings;
14
+ private syncedMemories;
15
+ private roomKey;
16
+ private options;
17
+ /** Event callbacks */
18
+ onAgentJoined?: (agent: AgentIdentity) => void;
19
+ onAgentLeft?: (agentId: string) => void;
20
+ onMessage?: (msg: StoredMessage) => void;
21
+ onConclusion?: (conclusion: StoredConclusion) => void;
22
+ onDecisionResolved?: (decisionId: string, outcome: 'approved' | 'rejected', choice?: string) => void;
23
+ constructor(options: ConversationServerOptions);
24
+ get key(): string;
25
+ get connectedAgents(): AgentIdentity[];
26
+ get activeTopics(): string[];
27
+ get allMessages(): StoredMessage[];
28
+ get allConclusions(): StoredConclusion[];
29
+ get allPendingDecisions(): PendingDecision[];
30
+ get allMeetings(): Meeting[];
31
+ /** Get all synced memories from connected agents. */
32
+ get allSyncedMemories(): {
33
+ agent: AgentIdentity;
34
+ entries: any[];
35
+ }[];
36
+ start(): Promise<void>;
37
+ stop(): Promise<void>;
38
+ /** Get messages for a specific topic, optionally since a timestamp. */
39
+ getTopicMessages(topic: string, since?: string): StoredMessage[];
40
+ private handleConnection;
41
+ private handleJoin;
42
+ private handleChat;
43
+ private handleConclude;
44
+ private handleSyncMemory;
45
+ private handleStartMeeting;
46
+ /** Check if a newly joined agent completes any waiting meetings. */
47
+ private checkMeetingsForAgent;
48
+ private handleConcludeMeeting;
49
+ private handleCancelMeeting;
50
+ private handleProposeDecision;
51
+ private handleVote;
52
+ private handleLeave;
53
+ private send;
54
+ /** Broadcast to all agents except the sender. */
55
+ private broadcast;
56
+ /** Broadcast to all agents including the sender. */
57
+ private broadcastAll;
58
+ }
59
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/conversation/server.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EAGb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,OAAO,EACR,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAOD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,cAAc,CAA+D;IACrF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA4B;IAE3C,sBAAsB;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACtD,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;gBAEzF,OAAO,EAAE,yBAAyB;IAK9C,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,eAAe,IAAI,aAAa,EAAE,CAErC;IAED,IAAI,YAAY,IAAI,MAAM,EAAE,CAG3B;IAED,IAAI,WAAW,IAAI,aAAa,EAAE,CAEjC;IAED,IAAI,cAAc,IAAI,gBAAgB,EAAE,CAEvC;IAED,IAAI,mBAAmB,IAAI,eAAe,EAAE,CAE3C;IAED,IAAI,WAAW,IAAI,OAAO,EAAE,CAE3B;IAED,qDAAqD;IACrD,IAAI,iBAAiB;eA9C6B,aAAa;iBAAW,GAAG,EAAE;QAgD9E;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAerB,uEAAuE;IACvE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE;IAShE,OAAO,CAAC,gBAAgB;IAwDxB,OAAO,CAAC,UAAU;IAyDlB,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,kBAAkB;IAiC1B,oEAAoE;IACpE,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,qBAAqB;IAqC7B,OAAO,CAAC,UAAU;IAgElB,OAAO,CAAC,WAAW;IA8EnB,OAAO,CAAC,IAAI;IAMZ,iDAAiD;IACjD,OAAO,CAAC,SAAS;IAQjB,oDAAoD;IACpD,OAAO,CAAC,YAAY;CAKrB"}