@redplanethq/corebrain 2.5.12 → 2.6.1

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 (55) hide show
  1. package/dist/cli.js +24 -6
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/gateway/config.d.ts.map +1 -1
  4. package/dist/commands/gateway/config.js +57 -23
  5. package/dist/commands/gateway/config.js.map +1 -1
  6. package/dist/server/tools/coding-tools.d.ts.map +1 -1
  7. package/dist/server/tools/coding-tools.js +35 -1
  8. package/dist/server/tools/coding-tools.js.map +1 -1
  9. package/dist/tui/chat.d.ts +2 -0
  10. package/dist/tui/chat.d.ts.map +1 -0
  11. package/dist/tui/chat.js +309 -0
  12. package/dist/tui/chat.js.map +1 -0
  13. package/dist/tui/components/conversation-selector.d.ts +28 -0
  14. package/dist/tui/components/conversation-selector.d.ts.map +1 -0
  15. package/dist/tui/components/conversation-selector.js +170 -0
  16. package/dist/tui/components/conversation-selector.js.map +1 -0
  17. package/dist/tui/components/integrations-view.d.ts +27 -0
  18. package/dist/tui/components/integrations-view.d.ts.map +1 -0
  19. package/dist/tui/components/integrations-view.js +169 -0
  20. package/dist/tui/components/integrations-view.js.map +1 -0
  21. package/dist/tui/components/reminder-list.d.ts +28 -0
  22. package/dist/tui/components/reminder-list.d.ts.map +1 -0
  23. package/dist/tui/components/reminder-list.js +261 -0
  24. package/dist/tui/components/reminder-list.js.map +1 -0
  25. package/dist/tui/components/tool-call-item.d.ts +24 -0
  26. package/dist/tui/components/tool-call-item.d.ts.map +1 -0
  27. package/dist/tui/components/tool-call-item.js +176 -0
  28. package/dist/tui/components/tool-call-item.js.map +1 -0
  29. package/dist/tui/hooks/use-conversation.d.ts +17 -0
  30. package/dist/tui/hooks/use-conversation.d.ts.map +1 -0
  31. package/dist/tui/hooks/use-conversation.js +137 -0
  32. package/dist/tui/hooks/use-conversation.js.map +1 -0
  33. package/dist/tui/index.d.ts +2 -0
  34. package/dist/tui/index.d.ts.map +1 -0
  35. package/dist/tui/index.js +2 -0
  36. package/dist/tui/index.js.map +1 -0
  37. package/dist/tui/themes.d.ts +27 -0
  38. package/dist/tui/themes.d.ts.map +1 -0
  39. package/dist/tui/themes.js +28 -0
  40. package/dist/tui/themes.js.map +1 -0
  41. package/dist/tui/utils/stream.d.ts +121 -0
  42. package/dist/tui/utils/stream.d.ts.map +1 -0
  43. package/dist/tui/utils/stream.js +158 -0
  44. package/dist/tui/utils/stream.js.map +1 -0
  45. package/dist/tui/utils/tool-names.d.ts +2 -0
  46. package/dist/tui/utils/tool-names.d.ts.map +1 -0
  47. package/dist/tui/utils/tool-names.js +18 -0
  48. package/dist/tui/utils/tool-names.js.map +1 -0
  49. package/dist/utils/app-bundle.d.ts.map +1 -1
  50. package/dist/utils/app-bundle.js.map +1 -1
  51. package/package.json +4 -3
  52. package/dist/utils/tmux.d.ts +0 -37
  53. package/dist/utils/tmux.d.ts.map +0 -1
  54. package/dist/utils/tmux.js +0 -96
  55. package/dist/utils/tmux.js.map +0 -1
@@ -0,0 +1,158 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { exec } from 'node:child_process';
3
+ // ── Open URL in browser ───────────────────────────────────────────────────────
4
+ export function openBrowser(url) {
5
+ const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
6
+ exec(`${cmd} "${url}"`);
7
+ }
8
+ export async function fetchIntegrationDefinitions(baseUrl, apiKey) {
9
+ const res = await fetch(`${baseUrl}/api/v1/integration_definitions`, {
10
+ headers: { Authorization: `Bearer ${apiKey}` },
11
+ });
12
+ if (!res.ok)
13
+ throw new Error(`Failed to fetch definitions: ${res.statusText}`);
14
+ const data = (await res.json());
15
+ return data.definitions ?? [];
16
+ }
17
+ export async function fetchIntegrationAccounts(baseUrl, apiKey) {
18
+ const res = await fetch(`${baseUrl}/api/v1/integration_account`, {
19
+ headers: { Authorization: `Bearer ${apiKey}` },
20
+ });
21
+ if (!res.ok)
22
+ throw new Error(`Failed to fetch accounts: ${res.statusText}`);
23
+ const data = (await res.json());
24
+ return data.accounts ?? [];
25
+ }
26
+ export async function connectApiKeyIntegration(baseUrl, apiKey, integrationDefinitionId, key) {
27
+ const res = await fetch(`${baseUrl}/api/v1/integration_account`, {
28
+ method: 'POST',
29
+ headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${apiKey}` },
30
+ body: JSON.stringify({ integrationDefinitionId, apiKey: key }),
31
+ });
32
+ if (!res.ok) {
33
+ const data = (await res.json().catch(() => ({})));
34
+ throw new Error(data.error ?? res.statusText);
35
+ }
36
+ }
37
+ // ── Parse a single SSE line ───────────────────────────────────────────────────
38
+ function parseSSELine(line) {
39
+ const trimmed = line.trim();
40
+ if (trimmed.startsWith('data: ')) {
41
+ return trimmed.slice(6);
42
+ }
43
+ return null;
44
+ }
45
+ // ── Stream conversation ───────────────────────────────────────────────────────
46
+ export async function* streamConversation(baseUrl, apiKey, conversationId, message) {
47
+ const response = await fetch(`${baseUrl}/api/v1/conversation`, {
48
+ method: 'POST',
49
+ headers: {
50
+ 'Content-Type': 'application/json',
51
+ Authorization: `Bearer ${apiKey}`,
52
+ },
53
+ body: JSON.stringify({
54
+ id: conversationId,
55
+ message: {
56
+ id: randomUUID(),
57
+ parts: [{ text: message, type: 'text' }],
58
+ role: 'user',
59
+ },
60
+ source: 'cli',
61
+ }),
62
+ });
63
+ if (!response.ok || !response.body) {
64
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
65
+ }
66
+ const reader = response.body.getReader();
67
+ const decoder = new TextDecoder();
68
+ let buffer = '';
69
+ while (true) {
70
+ const { done, value } = await reader.read();
71
+ if (done)
72
+ break;
73
+ buffer += decoder.decode(value, { stream: true });
74
+ const lines = buffer.split('\n');
75
+ buffer = lines.pop() ?? '';
76
+ for (const line of lines) {
77
+ const data = parseSSELine(line);
78
+ if (!data || data === '[DONE]')
79
+ continue;
80
+ try {
81
+ const event = JSON.parse(data);
82
+ yield event;
83
+ }
84
+ catch {
85
+ // ignore malformed lines
86
+ }
87
+ }
88
+ }
89
+ }
90
+ export async function fetchConversations(baseUrl, apiKey, page = 1, limit = 20, source) {
91
+ const params = new URLSearchParams({
92
+ page: String(page),
93
+ limit: String(limit),
94
+ });
95
+ if (source)
96
+ params.set('source', source);
97
+ const response = await fetch(`${baseUrl}/api/v1/conversations?${params.toString()}`, {
98
+ headers: {
99
+ Authorization: `Bearer ${apiKey}`,
100
+ },
101
+ });
102
+ if (!response.ok) {
103
+ throw new Error(`Failed to fetch conversations: ${response.statusText}`);
104
+ }
105
+ const data = (await response.json());
106
+ return {
107
+ conversations: data.conversations ?? [],
108
+ hasNext: data.pagination?.hasNext ?? false,
109
+ };
110
+ }
111
+ export async function fetchReminders(baseUrl, apiKey, cursor, isActive, limit = 25) {
112
+ const params = new URLSearchParams({ limit: String(limit) });
113
+ if (cursor)
114
+ params.set('cursor', cursor);
115
+ if (isActive !== undefined)
116
+ params.set('isActive', isActive);
117
+ const response = await fetch(`${baseUrl}/api/v1/reminders?${params.toString()}`, {
118
+ headers: { Authorization: `Bearer ${apiKey}` },
119
+ });
120
+ if (!response.ok) {
121
+ throw new Error(`Failed to fetch reminders: ${response.statusText}`);
122
+ }
123
+ const data = (await response.json());
124
+ return {
125
+ reminders: data.reminders ?? [],
126
+ hasMore: data.hasMore ?? false,
127
+ nextCursor: data.nextCursor ?? null,
128
+ };
129
+ }
130
+ export async function fetchConversationHistory(baseUrl, apiKey, conversationId) {
131
+ const response = await fetch(`${baseUrl}/api/v1/conversation/${conversationId}`, {
132
+ headers: {
133
+ Authorization: `Bearer ${apiKey}`,
134
+ },
135
+ });
136
+ if (!response.ok) {
137
+ throw new Error(`Failed to fetch conversation: ${response.statusText}`);
138
+ }
139
+ const data = (await response.json());
140
+ return data.ConversationHistory ?? [];
141
+ }
142
+ // ── Create conversation ───────────────────────────────────────────────────────
143
+ export async function createConversationApi(baseUrl, apiKey, message) {
144
+ const response = await fetch(`${baseUrl}/api/v1/conversation/create`, {
145
+ method: 'POST',
146
+ headers: {
147
+ 'Content-Type': 'application/json',
148
+ Authorization: `Bearer ${apiKey}`,
149
+ },
150
+ body: JSON.stringify({ message, source: 'cli' }),
151
+ });
152
+ if (!response.ok) {
153
+ throw new Error(`Failed to create conversation: ${response.statusText}`);
154
+ }
155
+ const data = (await response.json());
156
+ return data.conversationId;
157
+ }
158
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/tui/utils/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function getToolDisplayName(toolName: string): string;
2
+ //# sourceMappingURL=tool-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-names.d.ts","sourceRoot":"","sources":["../../../src/tui/utils/tool-names.ts"],"names":[],"mappings":"AAUA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO3D"}
@@ -0,0 +1,18 @@
1
+ const DISPLAY_NAMES = {
2
+ gather_context: 'Gather context',
3
+ take_action: 'Take action',
4
+ integration_query: 'Integration explorer',
5
+ integration_action: 'Integration explorer',
6
+ memory_search: 'Memory search',
7
+ execute_integration_action: 'Execute action',
8
+ get_integration_actions: 'Get actions',
9
+ };
10
+ export function getToolDisplayName(toolName) {
11
+ if (DISPLAY_NAMES[toolName])
12
+ return DISPLAY_NAMES[toolName];
13
+ if (toolName.startsWith('gateway_')) {
14
+ return 'Sub-agent: ' + toolName.replace('gateway_', '').replace(/_/g, ' ');
15
+ }
16
+ return toolName.replace(/_/g, ' ');
17
+ }
18
+ //# sourceMappingURL=tool-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-names.js","sourceRoot":"","sources":["../../../src/tui/utils/tool-names.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAA2B;IAC7C,cAAc,EAAE,gBAAgB;IAChC,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,sBAAsB;IACzC,kBAAkB,EAAE,sBAAsB;IAC1C,aAAa,EAAE,eAAe;IAC9B,0BAA0B,EAAE,gBAAgB;IAC5C,uBAAuB,EAAE,aAAa;CACtC,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IAClD,IAAI,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-bundle.d.ts","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"AAeA,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAwDhF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAejD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAa5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C"}
1
+ {"version":3,"file":"app-bundle.d.ts","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"AAeA,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GACtB,IAAI,CAwDN;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAejD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAa5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-bundle.js","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-bundle.js","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redplanethq/corebrain",
3
- "version": "2.5.12",
3
+ "version": "2.6.1",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=16"
@@ -17,7 +17,9 @@
17
17
  ],
18
18
  "dependencies": {
19
19
  "@clack/prompts": "^1.0.1",
20
+ "@mariozechner/pi-tui": "^0.57.1",
20
21
  "@mishieck/ink-titled-box": "^0.4.2",
22
+ "chalk": "^5.2.0",
21
23
  "dotenv": "^17.2.3",
22
24
  "ink": "^6.6.0",
23
25
  "ink-select-input": "^6.2.0",
@@ -28,7 +30,7 @@
28
30
  "react": "^19.2.4",
29
31
  "ws": "^8.18.0",
30
32
  "zod": "^4.3.6",
31
- "@redplanethq/sdk": "0.1.11"
33
+ "@redplanethq/sdk": "0.1.13"
32
34
  },
33
35
  "devDependencies": {
34
36
  "@sindresorhus/tsconfig": "^8.1.0",
@@ -37,7 +39,6 @@
37
39
  "@types/ws": "^8.5.13",
38
40
  "@vdemedes/prettier-config": "^2.0.1",
39
41
  "ava": "^6.4.1",
40
- "chalk": "^5.2.0",
41
42
  "eslint-config-xo-react": "^0.27.0",
42
43
  "eslint-plugin-react": "^7.32.2",
43
44
  "eslint-plugin-react-hooks": "^4.6.0",
@@ -1,37 +0,0 @@
1
- /**
2
- * Check if tmux is installed and available
3
- */
4
- export declare function isTmuxAvailable(): Promise<boolean>;
5
- /**
6
- * Check if a tmux session exists
7
- */
8
- export declare function sessionExists(name: string): Promise<boolean>;
9
- /**
10
- * Create a new detached tmux session with a command
11
- */
12
- export declare function createSession(name: string, command: string): Promise<void>;
13
- /**
14
- * Kill a tmux session
15
- */
16
- export declare function killSession(name: string): Promise<void>;
17
- /**
18
- * Get the PID of a tmux session
19
- */
20
- export declare function getSessionPid(name: string): Promise<number | null>;
21
- /**
22
- * List all tmux sessions
23
- */
24
- export declare function listSessions(): Promise<string[]>;
25
- /**
26
- * Get the content of a tmux pane
27
- */
28
- export declare function getSessionContent(name: string, lines?: number): Promise<string>;
29
- /**
30
- * Send keys to a tmux session
31
- */
32
- export declare function sendKeys(name: string, keys: string): Promise<void>;
33
- /**
34
- * Check if a process with the given PID is running
35
- */
36
- export declare function isPidRunning(pid: number): boolean;
37
- //# sourceMappingURL=tmux.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/utils/tmux.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxE;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAOtD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,SAAM,GACT,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQjD"}
@@ -1,96 +0,0 @@
1
- import { exec } from 'node:child_process';
2
- import { promisify } from 'node:util';
3
- const execAsync = promisify(exec);
4
- /**
5
- * Check if tmux is installed and available
6
- */
7
- export async function isTmuxAvailable() {
8
- try {
9
- await execAsync('which tmux');
10
- return true;
11
- }
12
- catch {
13
- return false;
14
- }
15
- }
16
- /**
17
- * Check if a tmux session exists
18
- */
19
- export async function sessionExists(name) {
20
- try {
21
- await execAsync(`tmux has-session -t ${name} 2>/dev/null`);
22
- return true;
23
- }
24
- catch {
25
- return false;
26
- }
27
- }
28
- /**
29
- * Create a new detached tmux session with a command
30
- */
31
- export async function createSession(name, command) {
32
- await execAsync(`tmux new-session -d -s ${name} '${command}'`);
33
- }
34
- /**
35
- * Kill a tmux session
36
- */
37
- export async function killSession(name) {
38
- await execAsync(`tmux kill-session -t ${name}`);
39
- }
40
- /**
41
- * Get the PID of a tmux session
42
- */
43
- export async function getSessionPid(name) {
44
- try {
45
- const { stdout } = await execAsync(`tmux list-panes -t ${name} -F '#{pane_pid}' | head -n 1`);
46
- const pid = parseInt(stdout.trim(), 10);
47
- return isNaN(pid) ? null : pid;
48
- }
49
- catch {
50
- return null;
51
- }
52
- }
53
- /**
54
- * List all tmux sessions
55
- */
56
- export async function listSessions() {
57
- try {
58
- const { stdout } = await execAsync(`tmux list-sessions -F '#{session_name}'`);
59
- return stdout.trim().split('\n').filter(Boolean);
60
- }
61
- catch {
62
- return [];
63
- }
64
- }
65
- /**
66
- * Get the content of a tmux pane
67
- */
68
- export async function getSessionContent(name, lines = 100) {
69
- try {
70
- const { stdout } = await execAsync(`tmux capture-pane -t ${name} -p -S -${lines}`);
71
- return stdout;
72
- }
73
- catch {
74
- return '';
75
- }
76
- }
77
- /**
78
- * Send keys to a tmux session
79
- */
80
- export async function sendKeys(name, keys) {
81
- await execAsync(`tmux send-keys -t ${name} '${keys}' Enter`);
82
- }
83
- /**
84
- * Check if a process with the given PID is running
85
- */
86
- export function isPidRunning(pid) {
87
- try {
88
- // Sending signal 0 checks if process exists without killing it
89
- process.kill(pid, 0);
90
- return true;
91
- }
92
- catch {
93
- return false;
94
- }
95
- }
96
- //# sourceMappingURL=tmux.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/utils/tmux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACpC,IAAI,CAAC;QACJ,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC/C,IAAI,CAAC;QACJ,MAAM,SAAS,CAAC,uBAAuB,IAAI,cAAc,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,IAAY,EACZ,OAAe;IAEf,MAAM,SAAS,CAAC,0BAA0B,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC7C,MAAM,SAAS,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC/C,IAAI,CAAC;QACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CACjC,sBAAsB,IAAI,+BAA+B,CACzD,CAAC;QACF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IACjC,IAAI,CAAC;QACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,yCAAyC,CAAC,CAAC;QAC9E,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,IAAY,EACZ,KAAK,GAAG,GAAG;IAEX,IAAI,CAAC;QACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CACjC,wBAAwB,IAAI,WAAW,KAAK,EAAE,CAC9C,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAY;IACxD,MAAM,SAAS,CAAC,qBAAqB,IAAI,KAAK,IAAI,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACvC,IAAI,CAAC;QACJ,+DAA+D;QAC/D,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}