gitarsenal-cli 1.9.106 → 1.9.107

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/tui/App.jsx ADDED
@@ -0,0 +1,326 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { Box, Text, TextInput, List, Spinner } from '@opentui/react';
3
+
4
+ // Main TUI Application Component
5
+ export function App({ onSubmit, onExit }) {
6
+ const [screen, setScreen] = useState('menu');
7
+ const [repoUrl, setRepoUrl] = useState('');
8
+ const [selectedGpu, setSelectedGpu] = useState('A10G');
9
+ const [gpuCount, setGpuCount] = useState(1);
10
+ const [sandboxProvider, setSandboxProvider] = useState('modal');
11
+ const [isLoading, setIsLoading] = useState(false);
12
+ const [loadingText, setLoadingText] = useState('');
13
+ const [analysisData, setAnalysisData] = useState(null);
14
+
15
+ const gpuOptions = [
16
+ { label: 'T4 (16GB VRAM)', value: 'T4' },
17
+ { label: 'L4 (24GB VRAM)', value: 'L4' },
18
+ { label: 'A10G (24GB VRAM)', value: 'A10G' },
19
+ { label: 'A100-40 (40GB VRAM)', value: 'A100-40GB' },
20
+ { label: 'A100-80 (80GB VRAM)', value: 'A100-80GB' },
21
+ { label: 'L40S (48GB VRAM)', value: 'L40S' },
22
+ { label: 'H100 (80GB VRAM)', value: 'H100' },
23
+ { label: 'H200 (141GB VRAM)', value: 'H200' },
24
+ { label: 'B200 (141GB VRAM)', value: 'B200' }
25
+ ];
26
+
27
+ const gpuCountOptions = [
28
+ { label: '1 GPU', value: 1 },
29
+ { label: '2 GPUs', value: 2 },
30
+ { label: '3 GPUs', value: 3 },
31
+ { label: '4 GPUs', value: 4 },
32
+ { label: '6 GPUs', value: 6 },
33
+ { label: '8 GPUs', value: 8 }
34
+ ];
35
+
36
+ const menuItems = [
37
+ { label: '🚀 Create New Sandbox', value: 'create' },
38
+ { label: '📋 Browse Repositories', value: 'browse' },
39
+ { label: '🔑 API Keys Management', value: 'keys' },
40
+ { label: '⚙️ Settings', value: 'settings' },
41
+ { label: '❓ Help & Examples', value: 'help' },
42
+ { label: '🚪 Exit', value: 'exit' }
43
+ ];
44
+
45
+ const sandboxProviders = [
46
+ { label: 'Modal (GPU support, persistent volumes)', value: 'modal' },
47
+ { label: 'E2B (Faster startup, no GPU)', value: 'e2b' }
48
+ ];
49
+
50
+ const handleMenuSelect = (item) => {
51
+ if (item.value === 'exit') {
52
+ onExit();
53
+ } else if (item.value === 'create') {
54
+ setScreen('repo-input');
55
+ } else if (item.value === 'keys') {
56
+ setScreen('keys');
57
+ } else if (item.value === 'help') {
58
+ setScreen('help');
59
+ } else if (item.value === 'settings') {
60
+ setScreen('settings');
61
+ }
62
+ };
63
+
64
+ const handleRepoSubmit = () => {
65
+ if (repoUrl.trim()) {
66
+ setScreen('provider-select');
67
+ }
68
+ };
69
+
70
+ const handleProviderSelect = (provider) => {
71
+ setSandboxProvider(provider.value);
72
+ if (provider.value === 'modal') {
73
+ setScreen('gpu-select');
74
+ } else {
75
+ // E2B doesn't need GPU selection
76
+ handleSubmit();
77
+ }
78
+ };
79
+
80
+ const handleGpuSelect = (gpu) => {
81
+ setSelectedGpu(gpu.value);
82
+ setScreen('gpu-count');
83
+ };
84
+
85
+ const handleGpuCountSelect = (count) => {
86
+ setGpuCount(count.value);
87
+ setScreen('confirm');
88
+ };
89
+
90
+ const handleSubmit = () => {
91
+ const config = {
92
+ repoUrl,
93
+ gpuType: selectedGpu,
94
+ gpuCount,
95
+ sandboxProvider,
96
+ analysisData
97
+ };
98
+ onSubmit(config);
99
+ };
100
+
101
+ // Render different screens
102
+ if (isLoading) {
103
+ return (
104
+ <Box flexDirection="column" padding={2} gap={1}>
105
+ <Box borderStyle="round" borderColor="blue" padding={1}>
106
+ <Text bold color="cyan">⏳ GitArsenal</Text>
107
+ </Box>
108
+ <Box flexDirection="row" gap={1} marginTop={1}>
109
+ <Spinner />
110
+ <Text>{loadingText}</Text>
111
+ </Box>
112
+ </Box>
113
+ );
114
+ }
115
+
116
+ if (screen === 'menu') {
117
+ return (
118
+ <Box flexDirection="column" padding={2} gap={1}>
119
+ <Box borderStyle="round" borderColor="cyan" padding={1}>
120
+ <Text bold color="cyan">🎯 GitArsenal - GPU-Accelerated Repository Sandbox</Text>
121
+ </Box>
122
+ <Box marginTop={1}>
123
+ <Text color="gray">Secure, cloud-based development environments with GPU acceleration</Text>
124
+ </Box>
125
+ <Box marginTop={1}>
126
+ <List
127
+ items={menuItems}
128
+ onSelect={handleMenuSelect}
129
+ selectedStyle={{ color: 'cyan', bold: true }}
130
+ />
131
+ </Box>
132
+ <Box marginTop={1}>
133
+ <Text color="gray" dim>Use ↑↓ arrows to navigate, Enter to select, Ctrl+C to exit</Text>
134
+ </Box>
135
+ </Box>
136
+ );
137
+ }
138
+
139
+ if (screen === 'repo-input') {
140
+ return (
141
+ <Box flexDirection="column" padding={2} gap={1}>
142
+ <Box borderStyle="round" borderColor="cyan" padding={1}>
143
+ <Text bold color="cyan">🚀 Create New Sandbox</Text>
144
+ </Box>
145
+ <Box marginTop={1}>
146
+ <Text>Enter GitHub repository URL:</Text>
147
+ </Box>
148
+ <Box marginTop={1}>
149
+ <TextInput
150
+ value={repoUrl}
151
+ onChange={setRepoUrl}
152
+ onSubmit={handleRepoSubmit}
153
+ placeholder="https://github.com/username/repository.git"
154
+ />
155
+ </Box>
156
+ <Box marginTop={1}>
157
+ <Text color="gray" dim>Examples:</Text>
158
+ <Text color="gray" dim>• https://github.com/microsoft/transformer</Text>
159
+ <Text color="gray" dim>• https://github.com/pytorch/pytorch</Text>
160
+ <Text color="gray" dim>• https://github.com/openai/gpt-2</Text>
161
+ </Box>
162
+ <Box marginTop={1}>
163
+ <Text color="gray" dim>Press Enter to continue • Esc to go back</Text>
164
+ </Box>
165
+ </Box>
166
+ );
167
+ }
168
+
169
+ if (screen === 'provider-select') {
170
+ return (
171
+ <Box flexDirection="column" padding={2} gap={1}>
172
+ <Box borderStyle="round" borderColor="cyan" padding={1}>
173
+ <Text bold color="cyan">🔧 Select Sandbox Provider</Text>
174
+ </Box>
175
+ <Box marginTop={1}>
176
+ <Text>Repository: <Text color="green">{repoUrl}</Text></Text>
177
+ </Box>
178
+ <Box marginTop={1}>
179
+ <List
180
+ items={sandboxProviders}
181
+ onSelect={handleProviderSelect}
182
+ selectedStyle={{ color: 'cyan', bold: true }}
183
+ />
184
+ </Box>
185
+ <Box marginTop={1}>
186
+ <Text color="gray" dim>Press Esc to go back</Text>
187
+ </Box>
188
+ </Box>
189
+ );
190
+ }
191
+
192
+ if (screen === 'gpu-select') {
193
+ return (
194
+ <Box flexDirection="column" padding={2} gap={1}>
195
+ <Box borderStyle="round" borderColor="cyan" padding={1}>
196
+ <Text bold color="cyan">⚡ Select GPU Configuration</Text>
197
+ </Box>
198
+ <Box marginTop={1}>
199
+ <Text>Repository: <Text color="green">{repoUrl}</Text></Text>
200
+ <Text>Provider: <Text color="green">{sandboxProvider}</Text></Text>
201
+ </Box>
202
+ <Box marginTop={1}>
203
+ <List
204
+ items={gpuOptions}
205
+ onSelect={handleGpuSelect}
206
+ selectedStyle={{ color: 'cyan', bold: true }}
207
+ />
208
+ </Box>
209
+ <Box marginTop={1}>
210
+ <Text color="gray" dim>Press Esc to go back</Text>
211
+ </Box>
212
+ </Box>
213
+ );
214
+ }
215
+
216
+ if (screen === 'gpu-count') {
217
+ return (
218
+ <Box flexDirection="column" padding={2} gap={1}>
219
+ <Box borderStyle="round" borderColor="cyan" padding={1}>
220
+ <Text bold color="cyan">⚡ Select GPU Count</Text>
221
+ </Box>
222
+ <Box marginTop={1}>
223
+ <Text>GPU Type: <Text color="green">{selectedGpu}</Text></Text>
224
+ </Box>
225
+ <Box marginTop={1}>
226
+ <List
227
+ items={gpuCountOptions}
228
+ onSelect={handleGpuCountSelect}
229
+ selectedStyle={{ color: 'cyan', bold: true }}
230
+ />
231
+ </Box>
232
+ <Box marginTop={1}>
233
+ <Text color="gray" dim>Press Esc to go back</Text>
234
+ </Box>
235
+ </Box>
236
+ );
237
+ }
238
+
239
+ if (screen === 'confirm') {
240
+ return (
241
+ <Box flexDirection="column" padding={2} gap={1}>
242
+ <Box borderStyle="round" borderColor="cyan" padding={1}>
243
+ <Text bold color="cyan">📋 Configuration Summary</Text>
244
+ </Box>
245
+ <Box flexDirection="column" marginTop={1} gap={0}>
246
+ <Text><Text color="gray">Repository URL:</Text> <Text color="white">{repoUrl}</Text></Text>
247
+ <Text><Text color="gray">Sandbox Provider:</Text> <Text color="white">{sandboxProvider}</Text></Text>
248
+ {sandboxProvider === 'modal' && (
249
+ <>
250
+ <Text><Text color="gray">GPU Type:</Text> <Text color="white">{gpuCount > 1 ? `${gpuCount}x ${selectedGpu}` : selectedGpu}</Text></Text>
251
+ </>
252
+ )}
253
+ </Box>
254
+ <Box marginTop={1}>
255
+ <Text color="green" bold>✅ Press Enter to create sandbox</Text>
256
+ <Text color="gray" dim>Press Esc to go back to menu</Text>
257
+ </Box>
258
+ </Box>
259
+ );
260
+ }
261
+
262
+ if (screen === 'keys') {
263
+ return (
264
+ <Box flexDirection="column" padding={2} gap={1}>
265
+ <Box borderStyle="round" borderColor="cyan" padding={1}>
266
+ <Text bold color="cyan">🔑 API Keys Management</Text>
267
+ </Box>
268
+ <Box marginTop={1}>
269
+ <Text color="yellow">Coming soon! Use 'gitarsenal keys' command for now.</Text>
270
+ </Box>
271
+ <Box marginTop={1}>
272
+ <Text color="gray" dim>Press Esc to go back</Text>
273
+ </Box>
274
+ </Box>
275
+ );
276
+ }
277
+
278
+ if (screen === 'help') {
279
+ return (
280
+ <Box flexDirection="column" padding={2} gap={1}>
281
+ <Box borderStyle="round" borderColor="cyan" padding={1}>
282
+ <Text bold color="cyan">❓ Help & Examples</Text>
283
+ </Box>
284
+ <Box flexDirection="column" marginTop={1}>
285
+ <Text bold color="green">Quick Start:</Text>
286
+ <Text>1. Select "Create New Sandbox"</Text>
287
+ <Text>2. Enter a GitHub repository URL</Text>
288
+ <Text>3. Choose your sandbox provider</Text>
289
+ <Text>4. Select GPU type and count (Modal only)</Text>
290
+ <Text>5. Confirm and create!</Text>
291
+
292
+ <Text bold color="green" marginTop={1}>Example Repositories:</Text>
293
+ <Text>• https://github.com/pytorch/examples</Text>
294
+ <Text>• https://github.com/huggingface/transformers</Text>
295
+ <Text>• https://github.com/openai/whisper</Text>
296
+ </Box>
297
+ <Box marginTop={1}>
298
+ <Text color="gray" dim>Press Esc to go back</Text>
299
+ </Box>
300
+ </Box>
301
+ );
302
+ }
303
+
304
+ if (screen === 'settings') {
305
+ return (
306
+ <Box flexDirection="column" padding={2} gap={1}>
307
+ <Box borderStyle="round" borderColor="cyan" padding={1}>
308
+ <Text bold color="cyan">⚙️ Settings</Text>
309
+ </Box>
310
+ <Box marginTop={1}>
311
+ <Text color="yellow">Coming soon!</Text>
312
+ </Box>
313
+ <Box marginTop={1}>
314
+ <Text color="gray" dim>Press Esc to go back</Text>
315
+ </Box>
316
+ </Box>
317
+ );
318
+ }
319
+
320
+ return (
321
+ <Box flexDirection="column" padding={2}>
322
+ <Text>Unknown screen: {screen}</Text>
323
+ </Box>
324
+ );
325
+ }
326
+
package/tui/index.js ADDED
@@ -0,0 +1,37 @@
1
+ const { render } = require('@opentui/react');
2
+ const React = require('react');
3
+ const { App } = require('./App.jsx');
4
+
5
+ /**
6
+ * Launch the OpenTUI interface
7
+ * @param {Object} options - Configuration options
8
+ * @returns {Promise<Object>} - Selected configuration
9
+ */
10
+ async function launchTUI(options = {}) {
11
+ return new Promise((resolve, reject) => {
12
+ const handleSubmit = (config) => {
13
+ resolve(config);
14
+ };
15
+
16
+ const handleExit = () => {
17
+ resolve(null);
18
+ };
19
+
20
+ try {
21
+ render(
22
+ React.createElement(App, {
23
+ onSubmit: handleSubmit,
24
+ onExit: handleExit,
25
+ initialOptions: options
26
+ })
27
+ );
28
+ } catch (error) {
29
+ reject(error);
30
+ }
31
+ });
32
+ }
33
+
34
+ module.exports = {
35
+ launchTUI
36
+ };
37
+
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Simple test to verify OpenTUI is working
4
+ const { terminal } = require('@opentui/core');
5
+
6
+ async function testOpenTUI() {
7
+ try {
8
+ console.log('Testing OpenTUI installation...');
9
+
10
+ // Create a simple terminal instance
11
+ const term = terminal();
12
+
13
+ // Test basic output
14
+ term.writeln('🎨 OpenTUI Test');
15
+ term.writeln('✅ OpenTUI core is installed and working!');
16
+ term.writeln('');
17
+ term.writeln('This confirms that:');
18
+ term.writeln(' • @opentui/core is installed');
19
+ term.writeln(' • Terminal interface is accessible');
20
+ term.writeln(' • Ready to build the full TUI');
21
+ term.writeln('');
22
+ term.writeln('Press any key to exit...');
23
+
24
+ // Wait for key press
25
+ await term.waitForKeyPress();
26
+
27
+ console.log('\n✅ Test complete!');
28
+ process.exit(0);
29
+ } catch (error) {
30
+ console.error('❌ OpenTUI test failed:', error.message);
31
+ console.error('');
32
+ console.error('This might mean:');
33
+ console.error(' • OpenTUI is not installed correctly');
34
+ console.error(' • API has changed');
35
+ console.error(' • Need to adjust the implementation');
36
+ process.exit(1);
37
+ }
38
+ }
39
+
40
+ testOpenTUI();
41
+
@@ -0,0 +1,200 @@
1
+ {
2
+ "lockfileVersion": 1,
3
+ "workspaces": {
4
+ "": {
5
+ "name": "gitarsenal-tui-app",
6
+ "dependencies": {
7
+ "@opentui/core": "^0.1.27",
8
+ "@opentui/react": "^0.1.27",
9
+ "react": "^19.0.0",
10
+ },
11
+ },
12
+ },
13
+ "packages": {
14
+ "@dimforge/rapier2d-simd-compat": ["@dimforge/rapier2d-simd-compat@0.17.3", "", {}, "sha512-bijvwWz6NHsNj5e5i1vtd3dU2pDhthSaTUZSh14DUGGKJfw8eMnlWZsxwHBxB/a3AXVNDjL9abuHw1k9FGR+jg=="],
15
+
16
+ "@jimp/core": ["@jimp/core@1.6.0", "", { "dependencies": { "@jimp/file-ops": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "await-to-js": "^3.0.0", "exif-parser": "^0.1.12", "file-type": "^16.0.0", "mime": "3" } }, "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w=="],
17
+
18
+ "@jimp/diff": ["@jimp/diff@1.6.0", "", { "dependencies": { "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "pixelmatch": "^5.3.0" } }, "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw=="],
19
+
20
+ "@jimp/file-ops": ["@jimp/file-ops@1.6.0", "", {}, "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ=="],
21
+
22
+ "@jimp/js-bmp": ["@jimp/js-bmp@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "bmp-ts": "^1.0.9" } }, "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw=="],
23
+
24
+ "@jimp/js-gif": ["@jimp/js-gif@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "gifwrap": "^0.10.1", "omggif": "^1.0.10" } }, "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g=="],
25
+
26
+ "@jimp/js-jpeg": ["@jimp/js-jpeg@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "jpeg-js": "^0.4.4" } }, "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA=="],
27
+
28
+ "@jimp/js-png": ["@jimp/js-png@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "pngjs": "^7.0.0" } }, "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg=="],
29
+
30
+ "@jimp/js-tiff": ["@jimp/js-tiff@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "utif2": "^4.1.0" } }, "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw=="],
31
+
32
+ "@jimp/plugin-blit": ["@jimp/plugin-blit@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA=="],
33
+
34
+ "@jimp/plugin-blur": ["@jimp/plugin-blur@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/utils": "1.6.0" } }, "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw=="],
35
+
36
+ "@jimp/plugin-circle": ["@jimp/plugin-circle@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw=="],
37
+
38
+ "@jimp/plugin-color": ["@jimp/plugin-color@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "tinycolor2": "^1.6.0", "zod": "^3.23.8" } }, "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA=="],
39
+
40
+ "@jimp/plugin-contain": ["@jimp/plugin-contain@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ=="],
41
+
42
+ "@jimp/plugin-cover": ["@jimp/plugin-cover@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA=="],
43
+
44
+ "@jimp/plugin-crop": ["@jimp/plugin-crop@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang=="],
45
+
46
+ "@jimp/plugin-displace": ["@jimp/plugin-displace@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q=="],
47
+
48
+ "@jimp/plugin-dither": ["@jimp/plugin-dither@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0" } }, "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ=="],
49
+
50
+ "@jimp/plugin-fisheye": ["@jimp/plugin-fisheye@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA=="],
51
+
52
+ "@jimp/plugin-flip": ["@jimp/plugin-flip@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg=="],
53
+
54
+ "@jimp/plugin-hash": ["@jimp/plugin-hash@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/js-bmp": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/js-tiff": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "any-base": "^1.1.0" } }, "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q=="],
55
+
56
+ "@jimp/plugin-mask": ["@jimp/plugin-mask@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA=="],
57
+
58
+ "@jimp/plugin-print": ["@jimp/plugin-print@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/types": "1.6.0", "parse-bmfont-ascii": "^1.0.6", "parse-bmfont-binary": "^1.0.6", "parse-bmfont-xml": "^1.1.6", "simple-xml-to-json": "^1.2.2", "zod": "^3.23.8" } }, "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A=="],
59
+
60
+ "@jimp/plugin-quantize": ["@jimp/plugin-quantize@1.6.0", "", { "dependencies": { "image-q": "^4.0.0", "zod": "^3.23.8" } }, "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg=="],
61
+
62
+ "@jimp/plugin-resize": ["@jimp/plugin-resize@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA=="],
63
+
64
+ "@jimp/plugin-rotate": ["@jimp/plugin-rotate@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw=="],
65
+
66
+ "@jimp/plugin-threshold": ["@jimp/plugin-threshold@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-hash": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w=="],
67
+
68
+ "@jimp/types": ["@jimp/types@1.6.0", "", { "dependencies": { "zod": "^3.23.8" } }, "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg=="],
69
+
70
+ "@jimp/utils": ["@jimp/utils@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "tinycolor2": "^1.6.0" } }, "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA=="],
71
+
72
+ "@opentui/core": ["@opentui/core@0.1.27", "", { "dependencies": { "jimp": "1.6.0", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@dimforge/rapier2d-simd-compat": "^0.17.3", "@opentui/core-darwin-arm64": "0.1.27", "@opentui/core-darwin-x64": "0.1.27", "@opentui/core-linux-arm64": "0.1.27", "@opentui/core-linux-x64": "0.1.27", "@opentui/core-win32-arm64": "0.1.27", "@opentui/core-win32-x64": "0.1.27", "bun-webgpu": "0.1.3", "planck": "^1.4.2", "three": "0.177.0" }, "peerDependencies": { "web-tree-sitter": ">=0.26.0" } }, "sha512-aTIXZz+SKm2u7Fn86ZghOhZNL6MPo5XXy2SWhpSmAyoyjypZxaM361Xn0Vh3bruhlDswscQ4k6xO+X8jXhZocQ=="],
73
+
74
+ "@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.1.27", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tul6PtoGJCw3UVsZzGD/fY0n43StUEG9bx1p8BXllApEt/VbXiL+qJMfRvlT52Oyj4n3mxOyiX17WkulUBYDSg=="],
75
+
76
+ "@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.1.27", "", { "os": "darwin", "cpu": "x64" }, "sha512-Iw+u8xSfYLAufuxJMQSFEhkj5VaRy/sHCVguHEcN+CdeF2c13e34Afq0KukD20CS4cQbR3S3xooU3MsaszMCbQ=="],
77
+
78
+ "@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.1.27", "", { "os": "linux", "cpu": "arm64" }, "sha512-Qq5+OtLOaiHhL0XKF3Ulkv+BB1k6MF2Pkm8uQWWG6tog4rPQpHlCN+QKas9AuV8HwHFjHjOtC9rQ2XMe6q92Wg=="],
79
+
80
+ "@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.1.27", "", { "os": "linux", "cpu": "x64" }, "sha512-dKaE2fSc9Fdo5iI3jvU+BNHG0tqR6o+1XEd9TX5QZG8A4cr2D8MfImlLmONbYI0eT7Lox/cPyamjzB64Al/HDw=="],
81
+
82
+ "@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.1.27", "", { "os": "win32", "cpu": "arm64" }, "sha512-F5xYnaO1DVgyX8y/xpnjXOzplsw9ZOkwJ2IgEJC5nJVrhbVxBLE7Jc0jjHMoBzmLjEao/iCZY8WkzvlhuYxAtA=="],
83
+
84
+ "@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.1.27", "", { "os": "win32", "cpu": "x64" }, "sha512-ioGGbx97u/Fy4ysEeagOz4sc2NIHDeYluE5oQz0ExlQI1V6hvnvJPHw6iVNpnJmRldO4EDTkXDi9o+jiPnSBhQ=="],
85
+
86
+ "@opentui/react": ["@opentui/react@0.1.27", "", { "dependencies": { "@opentui/core": "0.1.27", "react-reconciler": "^0.32.0" }, "peerDependencies": { "react": ">=19.0.0" } }, "sha512-YH70kzj5f+Vi29XHNfpwd3Hjfw7AyuyZj8d/P32U57gHWkwPxijulZxZASqjQhiEdTsTdU8+ZtqzACiX4wXrjw=="],
87
+
88
+ "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="],
89
+
90
+ "@types/node": ["@types/node@16.9.1", "", {}, "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g=="],
91
+
92
+ "@webgpu/types": ["@webgpu/types@0.1.66", "", {}, "sha512-YA2hLrwLpDsRueNDXIMqN9NTzD6bCDkuXbOSe0heS+f8YE8usA6Gbv1prj81pzVHrbaAma7zObnIC+I6/sXJgA=="],
93
+
94
+ "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="],
95
+
96
+ "any-base": ["any-base@1.1.0", "", {}, "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="],
97
+
98
+ "await-to-js": ["await-to-js@3.0.0", "", {}, "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g=="],
99
+
100
+ "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
101
+
102
+ "bmp-ts": ["bmp-ts@1.0.9", "", {}, "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw=="],
103
+
104
+ "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="],
105
+
106
+ "bun-webgpu": ["bun-webgpu@0.1.3", "", { "dependencies": { "@webgpu/types": "^0.1.60" }, "optionalDependencies": { "bun-webgpu-darwin-arm64": "^0.1.3", "bun-webgpu-darwin-x64": "^0.1.3", "bun-webgpu-linux-x64": "^0.1.3", "bun-webgpu-win32-x64": "^0.1.3" } }, "sha512-IXFxaIi4rgsEEpl9n/QVDm5RajCK/0FcOXZeMb52YRjoiAR1YVYK5hLrXT8cm+KDi6LVahA9GJFqOR4yiloVCw=="],
107
+
108
+ "bun-webgpu-darwin-arm64": ["bun-webgpu-darwin-arm64@0.1.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-KkNQ9gT7dxGDndQaHTTHss9miukqpczML3pO2nZJoT/nITwe9lw3ZGFJMujkW41BUQ1mDYKFgo5nBGf9xYHPAg=="],
109
+
110
+ "bun-webgpu-darwin-x64": ["bun-webgpu-darwin-x64@0.1.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-TODWnMUbCoqD/wqzlB3oGOBIUWIFly0lqMeBFz/MBV+ndjbnkNrP9huaZJCTkCVEPKGtd1FCM3ExZUtBbnGziA=="],
111
+
112
+ "bun-webgpu-linux-x64": ["bun-webgpu-linux-x64@0.1.3", "", { "os": "linux", "cpu": "x64" }, "sha512-lVHORoVu1G61XVM8CRRqUsqr6w8kMlpuSpbPGpKUpmvrsoay6ymXAhT5lRPKyrGNamHUQTknmWdI59aRDCfLtQ=="],
113
+
114
+ "bun-webgpu-win32-x64": ["bun-webgpu-win32-x64@0.1.3", "", { "os": "win32", "cpu": "x64" }, "sha512-vlspsFffctJlBnFfs2lW3QgDD6LyFu8VT18ryID7Qka5poTj0clGVRxz7DFRi7yva3GovEGw/82z/WVc5US8Pw=="],
115
+
116
+ "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="],
117
+
118
+ "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="],
119
+
120
+ "exif-parser": ["exif-parser@0.1.12", "", {}, "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="],
121
+
122
+ "file-type": ["file-type@16.5.4", "", { "dependencies": { "readable-web-to-node-stream": "^3.0.0", "strtok3": "^6.2.4", "token-types": "^4.1.1" } }, "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw=="],
123
+
124
+ "gifwrap": ["gifwrap@0.10.1", "", { "dependencies": { "image-q": "^4.0.0", "omggif": "^1.0.10" } }, "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw=="],
125
+
126
+ "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
127
+
128
+ "image-q": ["image-q@4.0.0", "", { "dependencies": { "@types/node": "16.9.1" } }, "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw=="],
129
+
130
+ "jimp": ["jimp@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/diff": "1.6.0", "@jimp/js-bmp": "1.6.0", "@jimp/js-gif": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/js-tiff": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/plugin-blur": "1.6.0", "@jimp/plugin-circle": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-contain": "1.6.0", "@jimp/plugin-cover": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-displace": "1.6.0", "@jimp/plugin-dither": "1.6.0", "@jimp/plugin-fisheye": "1.6.0", "@jimp/plugin-flip": "1.6.0", "@jimp/plugin-hash": "1.6.0", "@jimp/plugin-mask": "1.6.0", "@jimp/plugin-print": "1.6.0", "@jimp/plugin-quantize": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/plugin-rotate": "1.6.0", "@jimp/plugin-threshold": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0" } }, "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg=="],
131
+
132
+ "jpeg-js": ["jpeg-js@0.4.4", "", {}, "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="],
133
+
134
+ "mime": ["mime@3.0.0", "", { "bin": "cli.js" }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="],
135
+
136
+ "omggif": ["omggif@1.0.10", "", {}, "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="],
137
+
138
+ "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="],
139
+
140
+ "parse-bmfont-ascii": ["parse-bmfont-ascii@1.0.6", "", {}, "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="],
141
+
142
+ "parse-bmfont-binary": ["parse-bmfont-binary@1.0.6", "", {}, "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="],
143
+
144
+ "parse-bmfont-xml": ["parse-bmfont-xml@1.1.6", "", { "dependencies": { "xml-parse-from-string": "^1.0.0", "xml2js": "^0.5.0" } }, "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA=="],
145
+
146
+ "peek-readable": ["peek-readable@4.1.0", "", {}, "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg=="],
147
+
148
+ "pixelmatch": ["pixelmatch@5.3.0", "", { "dependencies": { "pngjs": "^6.0.0" }, "bin": "bin/pixelmatch" }, "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q=="],
149
+
150
+ "planck": ["planck@1.4.2", "", { "peerDependencies": { "stage-js": "^1.0.0-alpha.12" } }, "sha512-mNbhnV3g8X2rwGxzcesjmN8BDA6qfXgQxXVMkWau9MCRlQY0RLNEkyHlVp6yFy/X6qrzAXyNONCnZ1cGDLrNew=="],
151
+
152
+ "pngjs": ["pngjs@7.0.0", "", {}, "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow=="],
153
+
154
+ "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="],
155
+
156
+ "react": ["react@19.2.0", "", {}, "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ=="],
157
+
158
+ "react-reconciler": ["react-reconciler@0.32.0", "", { "dependencies": { "scheduler": "^0.26.0" }, "peerDependencies": { "react": "^19.1.0" } }, "sha512-2NPMOzgTlG0ZWdIf3qG+dcbLSoAc/uLfOwckc3ofy5sSK0pLJqnQLpUFxvGcN2rlXSjnVtGeeFLNimCQEj5gOQ=="],
159
+
160
+ "readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="],
161
+
162
+ "readable-web-to-node-stream": ["readable-web-to-node-stream@3.0.4", "", { "dependencies": { "readable-stream": "^4.7.0" } }, "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw=="],
163
+
164
+ "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
165
+
166
+ "sax": ["sax@1.4.1", "", {}, "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="],
167
+
168
+ "scheduler": ["scheduler@0.26.0", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="],
169
+
170
+ "simple-xml-to-json": ["simple-xml-to-json@1.2.3", "", {}, "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA=="],
171
+
172
+ "stage-js": ["stage-js@1.0.0-alpha.17", "", {}, "sha512-AzlMO+t51v6cFvKZ+Oe9DJnL1OXEH5s9bEy6di5aOrUpcP7PCzI/wIeXF0u3zg0L89gwnceoKxrLId0ZpYnNXw=="],
173
+
174
+ "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="],
175
+
176
+ "strtok3": ["strtok3@6.3.0", "", { "dependencies": { "@tokenizer/token": "^0.3.0", "peek-readable": "^4.1.0" } }, "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw=="],
177
+
178
+ "three": ["three@0.177.0", "", {}, "sha512-EiXv5/qWAaGI+Vz2A+JfavwYCMdGjxVsrn3oBwllUoqYeaBO75J63ZfyaQKoiLrqNHoTlUc6PFgMXnS0kI45zg=="],
179
+
180
+ "tinycolor2": ["tinycolor2@1.6.0", "", {}, "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="],
181
+
182
+ "token-types": ["token-types@4.2.1", "", { "dependencies": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ=="],
183
+
184
+ "utif2": ["utif2@4.1.0", "", { "dependencies": { "pako": "^1.0.11" } }, "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w=="],
185
+
186
+ "web-tree-sitter": ["web-tree-sitter@0.26.0", "", {}, "sha512-wGGAMnJEMF8wy33iEGxSvnyEOfVLzSaa3x6g66aEHsL/hsgFb6IVPrpacIordAMz198pE9qReCEqFUuM0pnfwg=="],
187
+
188
+ "xml-parse-from-string": ["xml-parse-from-string@1.0.1", "", {}, "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="],
189
+
190
+ "xml2js": ["xml2js@0.5.0", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA=="],
191
+
192
+ "xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="],
193
+
194
+ "yoga-layout": ["yoga-layout@3.2.1", "", {}, "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ=="],
195
+
196
+ "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
197
+
198
+ "pixelmatch/pngjs": ["pngjs@6.0.0", "", {}, "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="],
199
+ }
200
+ }