@hypercli.com/sdk 2026.4.13-3 → 2026.4.13-4

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 (97) hide show
  1. package/dist/agent.d.ts +350 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +620 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/agents.d.ts +433 -0
  6. package/dist/agents.d.ts.map +1 -0
  7. package/dist/agents.js +1140 -0
  8. package/dist/agents.js.map +1 -0
  9. package/dist/billing.d.ts +72 -0
  10. package/dist/billing.d.ts.map +1 -0
  11. package/dist/billing.js +93 -0
  12. package/dist/billing.js.map +1 -0
  13. package/dist/browser.d.ts +25 -0
  14. package/dist/browser.d.ts.map +1 -0
  15. package/dist/browser.js +33 -0
  16. package/dist/browser.js.map +1 -0
  17. package/dist/client.d.ts +67 -0
  18. package/dist/client.d.ts.map +1 -0
  19. package/dist/client.js +100 -0
  20. package/dist/client.js.map +1 -0
  21. package/dist/config.d.ts +46 -0
  22. package/dist/config.d.ts.map +1 -0
  23. package/dist/config.js +235 -0
  24. package/dist/config.js.map +1 -0
  25. package/dist/errors.d.ts +9 -0
  26. package/dist/errors.d.ts.map +1 -0
  27. package/dist/errors.js +15 -0
  28. package/dist/errors.js.map +1 -0
  29. package/dist/files.d.ts +60 -0
  30. package/dist/files.d.ts.map +1 -0
  31. package/dist/files.js +128 -0
  32. package/dist/files.js.map +1 -0
  33. package/dist/gateway.d.ts +2 -0
  34. package/dist/gateway.d.ts.map +1 -0
  35. package/dist/gateway.js +2 -0
  36. package/dist/gateway.js.map +1 -0
  37. package/dist/http.d.ts +42 -0
  38. package/dist/http.d.ts.map +1 -0
  39. package/dist/http.js +238 -0
  40. package/dist/http.js.map +1 -0
  41. package/dist/index.d.ts +26 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +42 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/instances.d.ts +94 -0
  46. package/dist/instances.d.ts.map +1 -0
  47. package/dist/instances.js +197 -0
  48. package/dist/instances.js.map +1 -0
  49. package/dist/job/base.d.ts +80 -0
  50. package/dist/job/base.d.ts.map +1 -0
  51. package/dist/job/base.js +200 -0
  52. package/dist/job/base.js.map +1 -0
  53. package/dist/job/comfyui.d.ts +75 -0
  54. package/dist/job/comfyui.d.ts.map +1 -0
  55. package/dist/job/comfyui.js +454 -0
  56. package/dist/job/comfyui.js.map +1 -0
  57. package/dist/job/gradio.d.ts +48 -0
  58. package/dist/job/gradio.d.ts.map +1 -0
  59. package/dist/job/gradio.js +90 -0
  60. package/dist/job/gradio.js.map +1 -0
  61. package/dist/jobs.d.ts +153 -0
  62. package/dist/jobs.d.ts.map +1 -0
  63. package/dist/jobs.js +352 -0
  64. package/dist/jobs.js.map +1 -0
  65. package/dist/keys.d.ts +83 -0
  66. package/dist/keys.d.ts.map +1 -0
  67. package/dist/keys.js +69 -0
  68. package/dist/keys.js.map +1 -0
  69. package/dist/logs.d.ts +54 -0
  70. package/dist/logs.d.ts.map +1 -0
  71. package/dist/logs.js +256 -0
  72. package/dist/logs.js.map +1 -0
  73. package/dist/models.d.ts +15 -0
  74. package/dist/models.d.ts.map +1 -0
  75. package/dist/models.js +19 -0
  76. package/dist/models.js.map +1 -0
  77. package/dist/openclaw/gateway.d.ts +269 -0
  78. package/dist/openclaw/gateway.d.ts.map +1 -0
  79. package/dist/openclaw/gateway.js +2021 -0
  80. package/dist/openclaw/gateway.js.map +1 -0
  81. package/dist/renders.d.ts +187 -0
  82. package/dist/renders.d.ts.map +1 -0
  83. package/dist/renders.js +360 -0
  84. package/dist/renders.js.map +1 -0
  85. package/dist/user.d.ts +49 -0
  86. package/dist/user.d.ts.map +1 -0
  87. package/dist/user.js +57 -0
  88. package/dist/user.js.map +1 -0
  89. package/dist/voice.d.ts +31 -0
  90. package/dist/voice.d.ts.map +1 -0
  91. package/dist/voice.js +36 -0
  92. package/dist/voice.js.map +1 -0
  93. package/dist/x402.d.ts +79 -0
  94. package/dist/x402.d.ts.map +1 -0
  95. package/dist/x402.js +295 -0
  96. package/dist/x402.js.map +1 -0
  97. package/package.json +2 -1
package/dist/keys.js ADDED
@@ -0,0 +1,69 @@
1
+ export const API_KEY_BASELINE_FAMILIES = [
2
+ { key: 'api', label: 'API Keys', allowed: ['none', 'self', '*'] },
3
+ { key: 'user', label: 'Profile', allowed: ['none', 'self', '*'] },
4
+ { key: 'jobs', label: 'Jobs', allowed: ['none', 'self', '*'] },
5
+ { key: 'renders', label: 'Renders', allowed: ['none', 'self', '*'] },
6
+ { key: 'files', label: 'Files', allowed: ['none', 'self', '*'] },
7
+ { key: 'agents', label: 'Agents', allowed: ['none', 'self', '*'] },
8
+ { key: 'models', label: 'Models', allowed: ['none', '*'] },
9
+ { key: 'voice', label: 'Voice', allowed: ['none', '*'] },
10
+ { key: 'flow', label: 'Flows', allowed: ['none', '*'] },
11
+ ];
12
+ function apiKeyFromDict(data) {
13
+ return {
14
+ keyId: data.key_id || '',
15
+ name: data.name || '',
16
+ tags: Array.isArray(data.tags) ? data.tags : [],
17
+ apiKey: data.api_key || null,
18
+ apiKeyPreview: data.api_key_preview || null,
19
+ last4: data.last4 || null,
20
+ isActive: data.is_active !== false,
21
+ createdAt: data.created_at || '',
22
+ lastUsedAt: data.last_used_at || null,
23
+ };
24
+ }
25
+ export class KeysAPI {
26
+ http;
27
+ constructor(http) {
28
+ this.http = http;
29
+ }
30
+ /**
31
+ * Create a new API key
32
+ */
33
+ async create(name = 'default', tags) {
34
+ const payload = { name };
35
+ if (tags !== undefined) {
36
+ payload.tags = tags;
37
+ }
38
+ const data = await this.http.post('/api/keys', payload);
39
+ return apiKeyFromDict(data);
40
+ }
41
+ /**
42
+ * List all API keys (masked)
43
+ */
44
+ async list() {
45
+ const data = await this.http.get('/api/keys');
46
+ return (data || []).map(apiKeyFromDict);
47
+ }
48
+ /**
49
+ * Get a specific API key (masked)
50
+ */
51
+ async get(keyId) {
52
+ const data = await this.http.get(`/api/keys/${keyId}`);
53
+ return apiKeyFromDict(data);
54
+ }
55
+ /**
56
+ * Deactivate an API key (irreversible)
57
+ */
58
+ async disable(keyId) {
59
+ return await this.http.delete(`/api/keys/${keyId}`);
60
+ }
61
+ /**
62
+ * Rename an API key
63
+ */
64
+ async rename(keyId, name) {
65
+ const data = await this.http.patch(`/api/keys/${keyId}`, { name });
66
+ return apiKeyFromDict(data);
67
+ }
68
+ }
69
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
package/dist/logs.d.ts ADDED
@@ -0,0 +1,54 @@
1
+ import type { HyperCLI } from './client.js';
2
+ /**
3
+ * Fetch logs via REST API (one-time call)
4
+ */
5
+ export declare function fetchLogs(client: HyperCLI, jobId: string, tail?: number): Promise<string[]>;
6
+ /**
7
+ * Async log streamer - WebSocket streaming with optional initial fetch
8
+ */
9
+ export declare class LogStream {
10
+ private client;
11
+ private jobId;
12
+ private jobKey?;
13
+ private fetchInitial;
14
+ private maxInitialLines;
15
+ private maxBuffer;
16
+ private ws;
17
+ private buffer;
18
+ private initialFetched;
19
+ private connected;
20
+ private closed;
21
+ constructor(client: HyperCLI, jobId: string, jobKey?: string | undefined, fetchInitial?: boolean, maxInitialLines?: number, maxBuffer?: number);
22
+ get status(): 'disconnected' | 'connecting' | 'connected' | 'closed';
23
+ /**
24
+ * Connect to log stream. Returns initial logs if fetchInitial=true.
25
+ */
26
+ connect(): Promise<string[]>;
27
+ /**
28
+ * Close the WebSocket connection
29
+ */
30
+ close(): Promise<void>;
31
+ /**
32
+ * Get current buffer contents (bounded, oldest may be dropped)
33
+ */
34
+ getBuffer(): string[];
35
+ /**
36
+ * Clear the buffer
37
+ */
38
+ clearBuffer(): void;
39
+ /**
40
+ * Async iterate over NEW log lines from WebSocket
41
+ */
42
+ [Symbol.asyncIterator](): AsyncGenerator<string>;
43
+ }
44
+ /**
45
+ * Stream logs until job reaches a terminal state
46
+ */
47
+ export declare function streamLogs(client: HyperCLI, jobId: string, onLine: (line: string) => void, options?: {
48
+ untilState?: Set<string>;
49
+ pollStateInterval?: number;
50
+ fetchInitial?: boolean;
51
+ fetchFinal?: boolean;
52
+ maxInitialLines?: number;
53
+ }): Promise<void>;
54
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED;;GAEG;AACH,qBAAa,SAAS;IAQlB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,SAAS;IAZnB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;gBAGb,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,YAAY,GAAE,OAAc,EAC5B,eAAe,GAAE,MAAkC,EACnD,SAAS,GAAE,MAA2B;IAGhD,IAAI,MAAM,IAAI,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAKnE;IAED;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAsDlC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC;CAqExD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,IAAI,CAAC,CAoEf"}
package/dist/logs.js ADDED
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Async log streaming for jobs using WebSocket
3
+ */
4
+ import WebSocket from 'ws';
5
+ import { getWsUrl, WS_LOGS_PATH } from './config.js';
6
+ // Default limits to prevent memory blowup
7
+ const DEFAULT_MAX_INITIAL_LINES = 1000;
8
+ const DEFAULT_MAX_BUFFER = 5000;
9
+ /**
10
+ * Fetch logs via REST API (one-time call)
11
+ */
12
+ export async function fetchLogs(client, jobId, tail) {
13
+ try {
14
+ const logs = await client.jobs.logs(jobId);
15
+ if (!logs) {
16
+ return [];
17
+ }
18
+ const lines = logs.trim().split('\n');
19
+ if (tail && lines.length > tail) {
20
+ return lines.slice(-tail);
21
+ }
22
+ return lines;
23
+ }
24
+ catch {
25
+ return [];
26
+ }
27
+ }
28
+ /**
29
+ * Async log streamer - WebSocket streaming with optional initial fetch
30
+ */
31
+ export class LogStream {
32
+ client;
33
+ jobId;
34
+ jobKey;
35
+ fetchInitial;
36
+ maxInitialLines;
37
+ maxBuffer;
38
+ ws = null;
39
+ buffer = [];
40
+ initialFetched = false;
41
+ connected = false;
42
+ closed = false;
43
+ constructor(client, jobId, jobKey, fetchInitial = true, maxInitialLines = DEFAULT_MAX_INITIAL_LINES, maxBuffer = DEFAULT_MAX_BUFFER) {
44
+ this.client = client;
45
+ this.jobId = jobId;
46
+ this.jobKey = jobKey;
47
+ this.fetchInitial = fetchInitial;
48
+ this.maxInitialLines = maxInitialLines;
49
+ this.maxBuffer = maxBuffer;
50
+ }
51
+ get status() {
52
+ if (this.closed)
53
+ return 'closed';
54
+ if (this.connected)
55
+ return 'connected';
56
+ if (this.ws)
57
+ return 'connecting';
58
+ return 'disconnected';
59
+ }
60
+ /**
61
+ * Connect to log stream. Returns initial logs if fetchInitial=true.
62
+ */
63
+ async connect() {
64
+ if (this.closed) {
65
+ throw new Error('LogStream is closed');
66
+ }
67
+ const initialLines = [];
68
+ // Fetch initial logs ONCE (bounded)
69
+ if (this.fetchInitial && !this.initialFetched) {
70
+ const logs = await fetchLogs(this.client, this.jobId, this.maxInitialLines);
71
+ for (const line of logs) {
72
+ this.buffer.push(line);
73
+ if (this.buffer.length > this.maxBuffer) {
74
+ this.buffer.shift(); // Remove oldest
75
+ }
76
+ }
77
+ initialLines.push(...logs);
78
+ this.initialFetched = true;
79
+ }
80
+ // Get job_key if not provided
81
+ if (!this.jobKey) {
82
+ const job = await this.client.jobs.get(this.jobId);
83
+ this.jobKey = job.jobKey;
84
+ }
85
+ // Connect WebSocket
86
+ if (this.jobKey && !this.ws) {
87
+ const wsUrl = getWsUrl();
88
+ const fullUrl = `${wsUrl}${WS_LOGS_PATH}/${this.jobKey}`;
89
+ await new Promise((resolve, reject) => {
90
+ const timeout = setTimeout(() => {
91
+ reject(new Error('WebSocket connection timeout'));
92
+ }, 30000);
93
+ this.ws = new WebSocket(fullUrl);
94
+ this.ws.on('open', () => {
95
+ clearTimeout(timeout);
96
+ this.connected = true;
97
+ resolve();
98
+ });
99
+ this.ws.on('error', (error) => {
100
+ clearTimeout(timeout);
101
+ reject(error);
102
+ });
103
+ });
104
+ }
105
+ return initialLines;
106
+ }
107
+ /**
108
+ * Close the WebSocket connection
109
+ */
110
+ async close() {
111
+ this.closed = true;
112
+ this.connected = false;
113
+ if (this.ws) {
114
+ this.ws.close();
115
+ this.ws = null;
116
+ }
117
+ }
118
+ /**
119
+ * Get current buffer contents (bounded, oldest may be dropped)
120
+ */
121
+ getBuffer() {
122
+ return [...this.buffer];
123
+ }
124
+ /**
125
+ * Clear the buffer
126
+ */
127
+ clearBuffer() {
128
+ this.buffer = [];
129
+ }
130
+ /**
131
+ * Async iterate over NEW log lines from WebSocket
132
+ */
133
+ async *[Symbol.asyncIterator]() {
134
+ if (!this.ws) {
135
+ throw new Error('Not connected. Call connect() first.');
136
+ }
137
+ const messageQueue = [];
138
+ let resolveNext = null;
139
+ let rejectNext = null;
140
+ this.ws.on('message', (data) => {
141
+ if (this.closed)
142
+ return;
143
+ try {
144
+ const message = JSON.parse(data.toString());
145
+ if (message.event === 'log' && message.log) {
146
+ for (const line of message.log.split('\n')) {
147
+ if (line) {
148
+ this.buffer.push(line);
149
+ if (this.buffer.length > this.maxBuffer) {
150
+ this.buffer.shift();
151
+ }
152
+ if (resolveNext) {
153
+ resolveNext({ done: false, value: line });
154
+ resolveNext = null;
155
+ }
156
+ else {
157
+ messageQueue.push(line);
158
+ }
159
+ }
160
+ }
161
+ }
162
+ }
163
+ catch {
164
+ // Ignore JSON parse errors
165
+ }
166
+ });
167
+ this.ws.on('close', () => {
168
+ this.connected = false;
169
+ if (resolveNext) {
170
+ resolveNext({ done: true, value: undefined });
171
+ resolveNext = null;
172
+ }
173
+ });
174
+ this.ws.on('error', (error) => {
175
+ if (rejectNext) {
176
+ rejectNext(error);
177
+ rejectNext = null;
178
+ }
179
+ });
180
+ while (!this.closed) {
181
+ if (messageQueue.length > 0) {
182
+ yield messageQueue.shift();
183
+ }
184
+ else {
185
+ // Wait for next message
186
+ const result = await new Promise((resolve, reject) => {
187
+ resolveNext = resolve;
188
+ rejectNext = reject;
189
+ });
190
+ if (result.done) {
191
+ break;
192
+ }
193
+ yield result.value;
194
+ }
195
+ }
196
+ }
197
+ }
198
+ /**
199
+ * Stream logs until job reaches a terminal state
200
+ */
201
+ export async function streamLogs(client, jobId, onLine, options) {
202
+ const { untilState = new Set(['succeeded', 'failed', 'canceled', 'terminated']), pollStateInterval = 2000, fetchInitial = true, fetchFinal = true, maxInitialLines = DEFAULT_MAX_INITIAL_LINES, } = options || {};
203
+ let job = await client.jobs.get(jobId);
204
+ // Wait for job to be assigned/running
205
+ while (job.state === 'pending' || job.state === 'queued') {
206
+ await new Promise(resolve => setTimeout(resolve, pollStateInterval));
207
+ job = await client.jobs.get(jobId);
208
+ }
209
+ // Check for immediate terminal state
210
+ if (untilState.has(job.state)) {
211
+ if (fetchFinal) {
212
+ const logs = await fetchLogs(client, jobId, maxInitialLines);
213
+ for (const line of logs) {
214
+ onLine(line);
215
+ }
216
+ }
217
+ return;
218
+ }
219
+ // Fetch initial logs if running
220
+ if (fetchInitial && job.state === 'running') {
221
+ const logs = await fetchLogs(client, jobId, maxInitialLines);
222
+ for (const line of logs) {
223
+ onLine(line);
224
+ }
225
+ }
226
+ // Connect WebSocket
227
+ if (job.jobKey) {
228
+ const stream = new LogStream(client, jobId, job.jobKey, false);
229
+ await stream.connect();
230
+ try {
231
+ // Stream logs while checking job state periodically
232
+ const checkInterval = setInterval(async () => {
233
+ job = await client.jobs.get(jobId);
234
+ if (untilState.has(job.state)) {
235
+ await stream.close();
236
+ }
237
+ }, pollStateInterval);
238
+ for await (const line of stream) {
239
+ onLine(line);
240
+ }
241
+ clearInterval(checkInterval);
242
+ }
243
+ finally {
244
+ await stream.close();
245
+ }
246
+ }
247
+ // Fetch final logs
248
+ if (fetchFinal) {
249
+ await new Promise(resolve => setTimeout(resolve, 500));
250
+ const logs = await fetchLogs(client, jobId, maxInitialLines);
251
+ for (const line of logs) {
252
+ onLine(line);
253
+ }
254
+ }
255
+ }
256
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * OpenAI-compatible models API
3
+ */
4
+ import type { HTTPClient } from './http.js';
5
+ export interface Model {
6
+ id: string;
7
+ object: string;
8
+ ownedBy: string | null;
9
+ }
10
+ export declare class ModelsAPI {
11
+ private http;
12
+ constructor(http: HTTPClient);
13
+ list(): Promise<Model[]>;
14
+ }
15
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAUD,qBAAa,SAAS;IACR,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE9B,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;CAK/B"}
package/dist/models.js ADDED
@@ -0,0 +1,19 @@
1
+ function modelFromDict(data) {
2
+ return {
3
+ id: data?.id || '',
4
+ object: data?.object || 'model',
5
+ ownedBy: data?.owned_by || null,
6
+ };
7
+ }
8
+ export class ModelsAPI {
9
+ http;
10
+ constructor(http) {
11
+ this.http = http;
12
+ }
13
+ async list() {
14
+ const payload = await this.http.get('/v1/models');
15
+ const data = Array.isArray(payload?.data) ? payload.data : Array.isArray(payload) ? payload : [];
16
+ return data.map(modelFromDict);
17
+ }
18
+ }
19
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAWA,SAAS,aAAa,CAAC,IAAS;IAC9B,OAAO;QACL,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;QAClB,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,OAAO;QAC/B,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,SAAS;IACA;IAApB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACjG,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;CACF"}