the universal sandbox runtime for agents and humans. pocketenv.io
sandbox openclaw agent claude-code vercel-sandbox deno-sandbox cloudflare-sandbox atproto sprites daytona
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add SSH terminal command and related updates

Implement the ssh CLI command using WebSocket and node-pty to provide
an interactive terminal. Add POCKETENV_CF_URL env var with a default,
rename several CLI functions' sandboxId param to sandbox, align the
cf-sandbox schema property to sandboxId, and add @types/ws and the CLI
package-lock.json

+3925 -23
+4
apps/api/bun.lock
··· 21 21 "@types/node": "^25.2.3", 22 22 "@types/prompts": "^2.4.9", 23 23 "@types/ramda": "^0.31.1", 24 + "@types/ws": "^8.18.1", 24 25 "axios": "^1.13.5", 25 26 "better-sqlite3": "^12.6.2", 26 27 "chalk": "^5.6.2", ··· 47 48 "ssh2": "^1.16.0", 48 49 "unique-username-generator": "^1.5.1", 49 50 "unstorage": "^1.17.4", 51 + "ws": "^8.19.0", 50 52 "zod": "^4.3.6", 51 53 "zx": "^8.8.5", 52 54 }, ··· 360 362 "@types/serve-static": ["@types/serve-static@2.2.0", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*" } }, "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ=="], 361 363 362 364 "@types/ssh2": ["@types/ssh2@1.15.5", "", { "dependencies": { "@types/node": "^18.11.18" } }, "sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ=="], 365 + 366 + "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], 363 367 364 368 "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], 365 369
+2
apps/api/package.json
··· 32 32 "@types/node": "^25.2.3", 33 33 "@types/prompts": "^2.4.9", 34 34 "@types/ramda": "^0.31.1", 35 + "@types/ws": "^8.18.1", 35 36 "axios": "^1.13.5", 36 37 "better-sqlite3": "^12.6.2", 37 38 "chalk": "^5.6.2", ··· 58 59 "ssh2": "^1.16.0", 59 60 "unique-username-generator": "^1.5.1", 60 61 "unstorage": "^1.17.4", 62 + "ws": "^8.19.0", 61 63 "zod": "^4.3.6", 62 64 "zx": "^8.8.5" 63 65 },
+29 -13
apps/cf-sandbox/src/index.ts
··· 175 175 .update(sandboxes) 176 176 .set({ 177 177 status: "RUNNING", 178 - sandbox_id: sandboxId, 178 + sandboxId: sandboxId, 179 179 startedAt: new Date(), 180 180 }) 181 181 .where(eq(sandboxes.id, record!.id)) ··· 412 412 return c.text("Expected WebSocket connection", 426); 413 413 } 414 414 const token = c.req.query("t"); 415 - if (token) { 416 - const decoded = await jwt.verify(token, process.env.JWT_SECRET!); 417 415 418 - const { sandboxes: record, users: user } = await getSandboxById( 419 - c.var.db, 420 - c.req.param("sandboxId"), 421 - ); 422 - if (!record) { 423 - return c.text("Sandbox not found", 404); 424 - } 416 + const { sandboxes: record, users: user } = await getSandboxById( 417 + c.var.db, 418 + c.req.param("sandboxId"), 419 + ); 420 + if (!record) { 421 + return c.text("Sandbox not found", 404); 422 + } 425 423 424 + if (token) { 425 + const decoded = await jwt.verify(token, process.env.JWT_SECRET!); 426 426 if (record.userId && user && user?.did !== decoded?.payload?.sub) { 427 427 return c.text("Unauthorized", 403); 428 428 } ··· 436 436 .select() 437 437 .from(sandboxVariables) 438 438 .leftJoin(variables, eq(variables.id, sandboxVariables.variableId)) 439 - .where(eq(sandboxVariables.sandboxId, c.req.param("sandboxId"))) 439 + .where( 440 + or( 441 + eq(sandboxVariables.sandboxId, record.id), 442 + eq(sandboxVariables.sandboxId, record.sandboxId), 443 + ), 444 + ) 440 445 .execute(), 441 446 c.var.db 442 447 .select() 443 448 .from(sandboxSecrets) 444 449 .leftJoin(secrets, eq(secrets.id, sandboxSecrets.secretId)) 445 - .where(eq(sandboxSecrets.sandboxId, c.req.param("sandboxId"))) 450 + .where( 451 + or( 452 + eq(sandboxSecrets.sandboxId, record.id), 453 + eq(sandboxSecrets.sandboxId, record.sandboxId), 454 + ), 455 + ) 446 456 .execute(), 447 457 ]); 448 458 ··· 487 497 .select() 488 498 .from(sandboxes) 489 499 .leftJoin(users, eq(sandboxes.userId, users.id)) 490 - .where(or(eq(sandboxes.id, sandboxId), eq(sandboxes.sandbox_id, sandboxId))) 500 + .where( 501 + or( 502 + eq(sandboxes.id, sandboxId), 503 + eq(sandboxes.sandboxId, sandboxId), 504 + eq(sandboxes.name, sandboxId), 505 + ), 506 + ) 491 507 .execute(); 492 508 493 509 return record;
+1 -1
apps/cf-sandbox/src/schema/sandboxes.ts
··· 32 32 status: text("status").notNull(), 33 33 keepAlive: boolean("keep_alive").default(false).notNull(), 34 34 sleepAfter: text("sleep_after"), 35 - sandbox_id: text("sandbox_id"), 35 + sandboxId: text("sandbox_id"), 36 36 installs: integer("installs").default(0).notNull(), 37 37 startedAt: timestamp("started_at"), 38 38 createdAt: timestamp("created_at").defaultNow().notNull(),
+3616
apps/cli/package-lock.json
··· 1 + { 2 + "name": "@pocketenv/cli", 3 + "version": "0.1.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "@pocketenv/cli", 9 + "version": "0.1.0", 10 + "license": "MPL-2.0", 11 + "dependencies": { 12 + "@inquirer/prompts": "^8.3.0", 13 + "axios": "^1.13.6", 14 + "chalk": "^5.6.2", 15 + "cli-table3": "^0.6.5", 16 + "commander": "^14.0.3", 17 + "consola": "^3.4.2", 18 + "cors": "^2.8.6", 19 + "dayjs": "^1.11.20", 20 + "effect": "^3.19.19", 21 + "envalid": "^8.1.1", 22 + "express": "^5.2.1", 23 + "node-pty": "^1.1.0", 24 + "open": "^11.0.0", 25 + "ws": "^8.19.0", 26 + "zod": "^4.3.6" 27 + }, 28 + "bin": { 29 + "pocketenv": "dist/index.js" 30 + }, 31 + "devDependencies": { 32 + "@types/cors": "^2.8.19", 33 + "@types/express": "^5.0.6", 34 + "@types/ws": "^8.18.1", 35 + "pkgroll": "^2.27.0", 36 + "tsx": "^4.21.0" 37 + }, 38 + "peerDependencies": { 39 + "typescript": "^5" 40 + } 41 + }, 42 + "node_modules/@colors/colors": { 43 + "version": "1.5.0", 44 + "license": "MIT", 45 + "optional": true, 46 + "engines": { 47 + "node": ">=0.1.90" 48 + } 49 + }, 50 + "node_modules/@esbuild/aix-ppc64": { 51 + "version": "0.26.0", 52 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.26.0.tgz", 53 + "integrity": "sha512-hj0sKNCQOOo2fgyII3clmJXP28VhgDfU5iy3GNHlWO76KG6N7x4D9ezH5lJtQTG+1J6MFDAJXC1qsI+W+LvZoA==", 54 + "cpu": [ 55 + "ppc64" 56 + ], 57 + "dev": true, 58 + "license": "MIT", 59 + "optional": true, 60 + "os": [ 61 + "aix" 62 + ], 63 + "engines": { 64 + "node": ">=18" 65 + } 66 + }, 67 + "node_modules/@esbuild/android-arm": { 68 + "version": "0.26.0", 69 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.26.0.tgz", 70 + "integrity": "sha512-C0hkDsYNHZkBtPxxDx177JN90/1MiCpvBNjz1f5yWJo1+5+c5zr8apjastpEG+wtPjo9FFtGG7owSsAxyKiHxA==", 71 + "cpu": [ 72 + "arm" 73 + ], 74 + "dev": true, 75 + "license": "MIT", 76 + "optional": true, 77 + "os": [ 78 + "android" 79 + ], 80 + "engines": { 81 + "node": ">=18" 82 + } 83 + }, 84 + "node_modules/@esbuild/android-arm64": { 85 + "version": "0.26.0", 86 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.26.0.tgz", 87 + "integrity": "sha512-DDnoJ5eoa13L8zPh87PUlRd/IyFaIKOlRbxiwcSbeumcJ7UZKdtuMCHa1Q27LWQggug6W4m28i4/O2qiQQ5NZQ==", 88 + "cpu": [ 89 + "arm64" 90 + ], 91 + "dev": true, 92 + "license": "MIT", 93 + "optional": true, 94 + "os": [ 95 + "android" 96 + ], 97 + "engines": { 98 + "node": ">=18" 99 + } 100 + }, 101 + "node_modules/@esbuild/android-x64": { 102 + "version": "0.26.0", 103 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.26.0.tgz", 104 + "integrity": "sha512-bKDkGXGZnj0T70cRpgmv549x38Vr2O3UWLbjT2qmIkdIWcmlg8yebcFWoT9Dku7b5OV3UqPEuNKRzlNhjwUJ9A==", 105 + "cpu": [ 106 + "x64" 107 + ], 108 + "dev": true, 109 + "license": "MIT", 110 + "optional": true, 111 + "os": [ 112 + "android" 113 + ], 114 + "engines": { 115 + "node": ">=18" 116 + } 117 + }, 118 + "node_modules/@esbuild/darwin-arm64": { 119 + "version": "0.26.0", 120 + "cpu": [ 121 + "arm64" 122 + ], 123 + "dev": true, 124 + "license": "MIT", 125 + "optional": true, 126 + "os": [ 127 + "darwin" 128 + ], 129 + "engines": { 130 + "node": ">=18" 131 + } 132 + }, 133 + "node_modules/@esbuild/darwin-x64": { 134 + "version": "0.26.0", 135 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.26.0.tgz", 136 + "integrity": "sha512-OPnYj0zpYW0tHusMefyaMvNYQX5pNQuSsHFTHUBNp3vVXupwqpxofcjVsUx11CQhGVkGeXjC3WLjh91hgBG2xw==", 137 + "cpu": [ 138 + "x64" 139 + ], 140 + "dev": true, 141 + "license": "MIT", 142 + "optional": true, 143 + "os": [ 144 + "darwin" 145 + ], 146 + "engines": { 147 + "node": ">=18" 148 + } 149 + }, 150 + "node_modules/@esbuild/freebsd-arm64": { 151 + "version": "0.26.0", 152 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.26.0.tgz", 153 + "integrity": "sha512-jix2fa6GQeZhO1sCKNaNMjfj5hbOvoL2F5t+w6gEPxALumkpOV/wq7oUBMHBn2hY2dOm+mEV/K+xfZy3mrsxNQ==", 154 + "cpu": [ 155 + "arm64" 156 + ], 157 + "dev": true, 158 + "license": "MIT", 159 + "optional": true, 160 + "os": [ 161 + "freebsd" 162 + ], 163 + "engines": { 164 + "node": ">=18" 165 + } 166 + }, 167 + "node_modules/@esbuild/freebsd-x64": { 168 + "version": "0.26.0", 169 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.26.0.tgz", 170 + "integrity": "sha512-tccJaH5xHJD/239LjbVvJwf6T4kSzbk6wPFerF0uwWlkw/u7HL+wnAzAH5GB2irGhYemDgiNTp8wJzhAHQ64oA==", 171 + "cpu": [ 172 + "x64" 173 + ], 174 + "dev": true, 175 + "license": "MIT", 176 + "optional": true, 177 + "os": [ 178 + "freebsd" 179 + ], 180 + "engines": { 181 + "node": ">=18" 182 + } 183 + }, 184 + "node_modules/@esbuild/linux-arm": { 185 + "version": "0.26.0", 186 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.26.0.tgz", 187 + "integrity": "sha512-JY8NyU31SyRmRpuc5W8PQarAx4TvuYbyxbPIpHAZdr/0g4iBr8KwQBS4kiiamGl2f42BBecHusYCsyxi7Kn8UQ==", 188 + "cpu": [ 189 + "arm" 190 + ], 191 + "dev": true, 192 + "license": "MIT", 193 + "optional": true, 194 + "os": [ 195 + "linux" 196 + ], 197 + "engines": { 198 + "node": ">=18" 199 + } 200 + }, 201 + "node_modules/@esbuild/linux-arm64": { 202 + "version": "0.26.0", 203 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.26.0.tgz", 204 + "integrity": "sha512-IMJYN7FSkLttYyTbsbme0Ra14cBO5z47kpamo16IwggzzATFY2lcZAwkbcNkWiAduKrTgFJP7fW5cBI7FzcuNQ==", 205 + "cpu": [ 206 + "arm64" 207 + ], 208 + "dev": true, 209 + "license": "MIT", 210 + "optional": true, 211 + "os": [ 212 + "linux" 213 + ], 214 + "engines": { 215 + "node": ">=18" 216 + } 217 + }, 218 + "node_modules/@esbuild/linux-ia32": { 219 + "version": "0.26.0", 220 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.26.0.tgz", 221 + "integrity": "sha512-XITaGqGVLgk8WOHw8We9Z1L0lbLFip8LyQzKYFKO4zFo1PFaaSKsbNjvkb7O8kEXytmSGRkYpE8LLVpPJpsSlw==", 222 + "cpu": [ 223 + "ia32" 224 + ], 225 + "dev": true, 226 + "license": "MIT", 227 + "optional": true, 228 + "os": [ 229 + "linux" 230 + ], 231 + "engines": { 232 + "node": ">=18" 233 + } 234 + }, 235 + "node_modules/@esbuild/linux-loong64": { 236 + "version": "0.26.0", 237 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.26.0.tgz", 238 + "integrity": "sha512-MkggfbDIczStUJwq9wU7gQ7kO33d8j9lWuOCDifN9t47+PeI+9m2QVh51EI/zZQ1spZtFMC1nzBJ+qNGCjJnsg==", 239 + "cpu": [ 240 + "loong64" 241 + ], 242 + "dev": true, 243 + "license": "MIT", 244 + "optional": true, 245 + "os": [ 246 + "linux" 247 + ], 248 + "engines": { 249 + "node": ">=18" 250 + } 251 + }, 252 + "node_modules/@esbuild/linux-mips64el": { 253 + "version": "0.26.0", 254 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.26.0.tgz", 255 + "integrity": "sha512-fUYup12HZWAeccNLhQ5HwNBPr4zXCPgUWzEq2Rfw7UwqwfQrFZ0SR/JljaURR8xIh9t+o1lNUFTECUTmaP7yKA==", 256 + "cpu": [ 257 + "mips64el" 258 + ], 259 + "dev": true, 260 + "license": "MIT", 261 + "optional": true, 262 + "os": [ 263 + "linux" 264 + ], 265 + "engines": { 266 + "node": ">=18" 267 + } 268 + }, 269 + "node_modules/@esbuild/linux-ppc64": { 270 + "version": "0.26.0", 271 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.26.0.tgz", 272 + "integrity": "sha512-MzRKhM0Ip+//VYwC8tialCiwUQ4G65WfALtJEFyU0GKJzfTYoPBw5XNWf0SLbCUYQbxTKamlVwPmcw4DgZzFxg==", 273 + "cpu": [ 274 + "ppc64" 275 + ], 276 + "dev": true, 277 + "license": "MIT", 278 + "optional": true, 279 + "os": [ 280 + "linux" 281 + ], 282 + "engines": { 283 + "node": ">=18" 284 + } 285 + }, 286 + "node_modules/@esbuild/linux-riscv64": { 287 + "version": "0.26.0", 288 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.26.0.tgz", 289 + "integrity": "sha512-QhCc32CwI1I4Jrg1enCv292sm3YJprW8WHHlyxJhae/dVs+KRWkbvz2Nynl5HmZDW/m9ZxrXayHzjzVNvQMGQA==", 290 + "cpu": [ 291 + "riscv64" 292 + ], 293 + "dev": true, 294 + "license": "MIT", 295 + "optional": true, 296 + "os": [ 297 + "linux" 298 + ], 299 + "engines": { 300 + "node": ">=18" 301 + } 302 + }, 303 + "node_modules/@esbuild/linux-s390x": { 304 + "version": "0.26.0", 305 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.26.0.tgz", 306 + "integrity": "sha512-1D6vi6lfI18aNT1aTf2HV+RIlm6fxtlAp8eOJ4mmnbYmZ4boz8zYDar86sIYNh0wmiLJEbW/EocaKAX6Yso2fw==", 307 + "cpu": [ 308 + "s390x" 309 + ], 310 + "dev": true, 311 + "license": "MIT", 312 + "optional": true, 313 + "os": [ 314 + "linux" 315 + ], 316 + "engines": { 317 + "node": ">=18" 318 + } 319 + }, 320 + "node_modules/@esbuild/linux-x64": { 321 + "version": "0.26.0", 322 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.26.0.tgz", 323 + "integrity": "sha512-rnDcepj7LjrKFvZkx+WrBv6wECeYACcFjdNPvVPojCPJD8nHpb3pv3AuR9CXgdnjH1O23btICj0rsp0L9wAnHA==", 324 + "cpu": [ 325 + "x64" 326 + ], 327 + "dev": true, 328 + "license": "MIT", 329 + "optional": true, 330 + "os": [ 331 + "linux" 332 + ], 333 + "engines": { 334 + "node": ">=18" 335 + } 336 + }, 337 + "node_modules/@esbuild/netbsd-arm64": { 338 + "version": "0.26.0", 339 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.26.0.tgz", 340 + "integrity": "sha512-FSWmgGp0mDNjEXXFcsf12BmVrb+sZBBBlyh3LwB/B9ac3Kkc8x5D2WimYW9N7SUkolui8JzVnVlWh7ZmjCpnxw==", 341 + "cpu": [ 342 + "arm64" 343 + ], 344 + "dev": true, 345 + "license": "MIT", 346 + "optional": true, 347 + "os": [ 348 + "netbsd" 349 + ], 350 + "engines": { 351 + "node": ">=18" 352 + } 353 + }, 354 + "node_modules/@esbuild/netbsd-x64": { 355 + "version": "0.26.0", 356 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.26.0.tgz", 357 + "integrity": "sha512-0QfciUDFryD39QoSPUDshj4uNEjQhp73+3pbSAaxjV2qGOEDsM67P7KbJq7LzHoVl46oqhIhJ1S+skKGR7lMXA==", 358 + "cpu": [ 359 + "x64" 360 + ], 361 + "dev": true, 362 + "license": "MIT", 363 + "optional": true, 364 + "os": [ 365 + "netbsd" 366 + ], 367 + "engines": { 368 + "node": ">=18" 369 + } 370 + }, 371 + "node_modules/@esbuild/openbsd-arm64": { 372 + "version": "0.26.0", 373 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.26.0.tgz", 374 + "integrity": "sha512-vmAK+nHhIZWImwJ3RNw9hX3fU4UGN/OqbSE0imqljNbUQC3GvVJ1jpwYoTfD6mmXmQaxdJY6Hn4jQbLGJKg5Yw==", 375 + "cpu": [ 376 + "arm64" 377 + ], 378 + "dev": true, 379 + "license": "MIT", 380 + "optional": true, 381 + "os": [ 382 + "openbsd" 383 + ], 384 + "engines": { 385 + "node": ">=18" 386 + } 387 + }, 388 + "node_modules/@esbuild/openbsd-x64": { 389 + "version": "0.26.0", 390 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.26.0.tgz", 391 + "integrity": "sha512-GPXF7RMkJ7o9bTyUsnyNtrFMqgM3X+uM/LWw4CeHIjqc32fm0Ir6jKDnWHpj8xHFstgWDUYseSABK9KCkHGnpg==", 392 + "cpu": [ 393 + "x64" 394 + ], 395 + "dev": true, 396 + "license": "MIT", 397 + "optional": true, 398 + "os": [ 399 + "openbsd" 400 + ], 401 + "engines": { 402 + "node": ">=18" 403 + } 404 + }, 405 + "node_modules/@esbuild/openharmony-arm64": { 406 + "version": "0.26.0", 407 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.26.0.tgz", 408 + "integrity": "sha512-nUHZ5jEYqbBthbiBksbmHTlbb5eElyVfs/s1iHQ8rLBq1eWsd5maOnDpCocw1OM8kFK747d1Xms8dXJHtduxSw==", 409 + "cpu": [ 410 + "arm64" 411 + ], 412 + "dev": true, 413 + "license": "MIT", 414 + "optional": true, 415 + "os": [ 416 + "openharmony" 417 + ], 418 + "engines": { 419 + "node": ">=18" 420 + } 421 + }, 422 + "node_modules/@esbuild/sunos-x64": { 423 + "version": "0.26.0", 424 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.26.0.tgz", 425 + "integrity": "sha512-TMg3KCTCYYaVO+R6P5mSORhcNDDlemUVnUbb8QkboUtOhb5JWKAzd5uMIMECJQOxHZ/R+N8HHtDF5ylzLfMiLw==", 426 + "cpu": [ 427 + "x64" 428 + ], 429 + "dev": true, 430 + "license": "MIT", 431 + "optional": true, 432 + "os": [ 433 + "sunos" 434 + ], 435 + "engines": { 436 + "node": ">=18" 437 + } 438 + }, 439 + "node_modules/@esbuild/win32-arm64": { 440 + "version": "0.26.0", 441 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.26.0.tgz", 442 + "integrity": "sha512-apqYgoAUd6ZCb9Phcs8zN32q6l0ZQzQBdVXOofa6WvHDlSOhwCWgSfVQabGViThS40Y1NA4SCvQickgZMFZRlA==", 443 + "cpu": [ 444 + "arm64" 445 + ], 446 + "dev": true, 447 + "license": "MIT", 448 + "optional": true, 449 + "os": [ 450 + "win32" 451 + ], 452 + "engines": { 453 + "node": ">=18" 454 + } 455 + }, 456 + "node_modules/@esbuild/win32-ia32": { 457 + "version": "0.26.0", 458 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.26.0.tgz", 459 + "integrity": "sha512-FGJAcImbJNZzLWu7U6WB0iKHl4RuY4TsXEwxJPl9UZLS47agIZuILZEX3Pagfw7I4J3ddflomt9f0apfaJSbaw==", 460 + "cpu": [ 461 + "ia32" 462 + ], 463 + "dev": true, 464 + "license": "MIT", 465 + "optional": true, 466 + "os": [ 467 + "win32" 468 + ], 469 + "engines": { 470 + "node": ">=18" 471 + } 472 + }, 473 + "node_modules/@esbuild/win32-x64": { 474 + "version": "0.26.0", 475 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.26.0.tgz", 476 + "integrity": "sha512-WAckBKaVnmFqbEhbymrPK7M086DQMpL1XoRbpmN0iW8k5JSXjDRQBhcZNa0VweItknLq9eAeCL34jK7/CDcw7A==", 477 + "cpu": [ 478 + "x64" 479 + ], 480 + "dev": true, 481 + "license": "MIT", 482 + "optional": true, 483 + "os": [ 484 + "win32" 485 + ], 486 + "engines": { 487 + "node": ">=18" 488 + } 489 + }, 490 + "node_modules/@inquirer/ansi": { 491 + "version": "2.0.3", 492 + "license": "MIT", 493 + "engines": { 494 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 495 + } 496 + }, 497 + "node_modules/@inquirer/checkbox": { 498 + "version": "5.1.0", 499 + "license": "MIT", 500 + "dependencies": { 501 + "@inquirer/ansi": "^2.0.3", 502 + "@inquirer/core": "^11.1.5", 503 + "@inquirer/figures": "^2.0.3", 504 + "@inquirer/type": "^4.0.3" 505 + }, 506 + "engines": { 507 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 508 + }, 509 + "peerDependencies": { 510 + "@types/node": ">=18" 511 + }, 512 + "peerDependenciesMeta": { 513 + "@types/node": { 514 + "optional": true 515 + } 516 + } 517 + }, 518 + "node_modules/@inquirer/confirm": { 519 + "version": "6.0.8", 520 + "license": "MIT", 521 + "dependencies": { 522 + "@inquirer/core": "^11.1.5", 523 + "@inquirer/type": "^4.0.3" 524 + }, 525 + "engines": { 526 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 527 + }, 528 + "peerDependencies": { 529 + "@types/node": ">=18" 530 + }, 531 + "peerDependenciesMeta": { 532 + "@types/node": { 533 + "optional": true 534 + } 535 + } 536 + }, 537 + "node_modules/@inquirer/core": { 538 + "version": "11.1.5", 539 + "license": "MIT", 540 + "dependencies": { 541 + "@inquirer/ansi": "^2.0.3", 542 + "@inquirer/figures": "^2.0.3", 543 + "@inquirer/type": "^4.0.3", 544 + "cli-width": "^4.1.0", 545 + "fast-wrap-ansi": "^0.2.0", 546 + "mute-stream": "^3.0.0", 547 + "signal-exit": "^4.1.0" 548 + }, 549 + "engines": { 550 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 551 + }, 552 + "peerDependencies": { 553 + "@types/node": ">=18" 554 + }, 555 + "peerDependenciesMeta": { 556 + "@types/node": { 557 + "optional": true 558 + } 559 + } 560 + }, 561 + "node_modules/@inquirer/editor": { 562 + "version": "5.0.8", 563 + "license": "MIT", 564 + "dependencies": { 565 + "@inquirer/core": "^11.1.5", 566 + "@inquirer/external-editor": "^2.0.3", 567 + "@inquirer/type": "^4.0.3" 568 + }, 569 + "engines": { 570 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 571 + }, 572 + "peerDependencies": { 573 + "@types/node": ">=18" 574 + }, 575 + "peerDependenciesMeta": { 576 + "@types/node": { 577 + "optional": true 578 + } 579 + } 580 + }, 581 + "node_modules/@inquirer/expand": { 582 + "version": "5.0.8", 583 + "license": "MIT", 584 + "dependencies": { 585 + "@inquirer/core": "^11.1.5", 586 + "@inquirer/type": "^4.0.3" 587 + }, 588 + "engines": { 589 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 590 + }, 591 + "peerDependencies": { 592 + "@types/node": ">=18" 593 + }, 594 + "peerDependenciesMeta": { 595 + "@types/node": { 596 + "optional": true 597 + } 598 + } 599 + }, 600 + "node_modules/@inquirer/external-editor": { 601 + "version": "2.0.3", 602 + "license": "MIT", 603 + "dependencies": { 604 + "chardet": "^2.1.1", 605 + "iconv-lite": "^0.7.2" 606 + }, 607 + "engines": { 608 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 609 + }, 610 + "peerDependencies": { 611 + "@types/node": ">=18" 612 + }, 613 + "peerDependenciesMeta": { 614 + "@types/node": { 615 + "optional": true 616 + } 617 + } 618 + }, 619 + "node_modules/@inquirer/figures": { 620 + "version": "2.0.3", 621 + "license": "MIT", 622 + "engines": { 623 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 624 + } 625 + }, 626 + "node_modules/@inquirer/input": { 627 + "version": "5.0.8", 628 + "license": "MIT", 629 + "dependencies": { 630 + "@inquirer/core": "^11.1.5", 631 + "@inquirer/type": "^4.0.3" 632 + }, 633 + "engines": { 634 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 635 + }, 636 + "peerDependencies": { 637 + "@types/node": ">=18" 638 + }, 639 + "peerDependenciesMeta": { 640 + "@types/node": { 641 + "optional": true 642 + } 643 + } 644 + }, 645 + "node_modules/@inquirer/number": { 646 + "version": "4.0.8", 647 + "license": "MIT", 648 + "dependencies": { 649 + "@inquirer/core": "^11.1.5", 650 + "@inquirer/type": "^4.0.3" 651 + }, 652 + "engines": { 653 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 654 + }, 655 + "peerDependencies": { 656 + "@types/node": ">=18" 657 + }, 658 + "peerDependenciesMeta": { 659 + "@types/node": { 660 + "optional": true 661 + } 662 + } 663 + }, 664 + "node_modules/@inquirer/password": { 665 + "version": "5.0.8", 666 + "license": "MIT", 667 + "dependencies": { 668 + "@inquirer/ansi": "^2.0.3", 669 + "@inquirer/core": "^11.1.5", 670 + "@inquirer/type": "^4.0.3" 671 + }, 672 + "engines": { 673 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 674 + }, 675 + "peerDependencies": { 676 + "@types/node": ">=18" 677 + }, 678 + "peerDependenciesMeta": { 679 + "@types/node": { 680 + "optional": true 681 + } 682 + } 683 + }, 684 + "node_modules/@inquirer/prompts": { 685 + "version": "8.3.0", 686 + "license": "MIT", 687 + "dependencies": { 688 + "@inquirer/checkbox": "^5.1.0", 689 + "@inquirer/confirm": "^6.0.8", 690 + "@inquirer/editor": "^5.0.8", 691 + "@inquirer/expand": "^5.0.8", 692 + "@inquirer/input": "^5.0.8", 693 + "@inquirer/number": "^4.0.8", 694 + "@inquirer/password": "^5.0.8", 695 + "@inquirer/rawlist": "^5.2.4", 696 + "@inquirer/search": "^4.1.4", 697 + "@inquirer/select": "^5.1.0" 698 + }, 699 + "engines": { 700 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 701 + }, 702 + "peerDependencies": { 703 + "@types/node": ">=18" 704 + }, 705 + "peerDependenciesMeta": { 706 + "@types/node": { 707 + "optional": true 708 + } 709 + } 710 + }, 711 + "node_modules/@inquirer/rawlist": { 712 + "version": "5.2.4", 713 + "license": "MIT", 714 + "dependencies": { 715 + "@inquirer/core": "^11.1.5", 716 + "@inquirer/type": "^4.0.3" 717 + }, 718 + "engines": { 719 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 720 + }, 721 + "peerDependencies": { 722 + "@types/node": ">=18" 723 + }, 724 + "peerDependenciesMeta": { 725 + "@types/node": { 726 + "optional": true 727 + } 728 + } 729 + }, 730 + "node_modules/@inquirer/search": { 731 + "version": "4.1.4", 732 + "license": "MIT", 733 + "dependencies": { 734 + "@inquirer/core": "^11.1.5", 735 + "@inquirer/figures": "^2.0.3", 736 + "@inquirer/type": "^4.0.3" 737 + }, 738 + "engines": { 739 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 740 + }, 741 + "peerDependencies": { 742 + "@types/node": ">=18" 743 + }, 744 + "peerDependenciesMeta": { 745 + "@types/node": { 746 + "optional": true 747 + } 748 + } 749 + }, 750 + "node_modules/@inquirer/select": { 751 + "version": "5.1.0", 752 + "license": "MIT", 753 + "dependencies": { 754 + "@inquirer/ansi": "^2.0.3", 755 + "@inquirer/core": "^11.1.5", 756 + "@inquirer/figures": "^2.0.3", 757 + "@inquirer/type": "^4.0.3" 758 + }, 759 + "engines": { 760 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 761 + }, 762 + "peerDependencies": { 763 + "@types/node": ">=18" 764 + }, 765 + "peerDependenciesMeta": { 766 + "@types/node": { 767 + "optional": true 768 + } 769 + } 770 + }, 771 + "node_modules/@inquirer/type": { 772 + "version": "4.0.3", 773 + "license": "MIT", 774 + "engines": { 775 + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" 776 + }, 777 + "peerDependencies": { 778 + "@types/node": ">=18" 779 + }, 780 + "peerDependenciesMeta": { 781 + "@types/node": { 782 + "optional": true 783 + } 784 + } 785 + }, 786 + "node_modules/@jridgewell/sourcemap-codec": { 787 + "version": "1.5.5", 788 + "dev": true, 789 + "license": "MIT" 790 + }, 791 + "node_modules/@nodelib/fs.scandir": { 792 + "version": "2.1.5", 793 + "dev": true, 794 + "license": "MIT", 795 + "dependencies": { 796 + "@nodelib/fs.stat": "2.0.5", 797 + "run-parallel": "^1.1.9" 798 + }, 799 + "engines": { 800 + "node": ">= 8" 801 + } 802 + }, 803 + "node_modules/@nodelib/fs.stat": { 804 + "version": "2.0.5", 805 + "dev": true, 806 + "license": "MIT", 807 + "engines": { 808 + "node": ">= 8" 809 + } 810 + }, 811 + "node_modules/@nodelib/fs.walk": { 812 + "version": "1.2.8", 813 + "dev": true, 814 + "license": "MIT", 815 + "dependencies": { 816 + "@nodelib/fs.scandir": "2.1.5", 817 + "fastq": "^1.6.0" 818 + }, 819 + "engines": { 820 + "node": ">= 8" 821 + } 822 + }, 823 + "node_modules/@rollup/plugin-alias": { 824 + "version": "6.0.0", 825 + "dev": true, 826 + "license": "MIT", 827 + "engines": { 828 + "node": ">=20.19.0" 829 + }, 830 + "peerDependencies": { 831 + "rollup": ">=4.0.0" 832 + }, 833 + "peerDependenciesMeta": { 834 + "rollup": { 835 + "optional": true 836 + } 837 + } 838 + }, 839 + "node_modules/@rollup/plugin-commonjs": { 840 + "version": "29.0.2", 841 + "dev": true, 842 + "license": "MIT", 843 + "dependencies": { 844 + "@rollup/pluginutils": "^5.0.1", 845 + "commondir": "^1.0.1", 846 + "estree-walker": "^2.0.2", 847 + "fdir": "^6.2.0", 848 + "is-reference": "1.2.1", 849 + "magic-string": "^0.30.3", 850 + "picomatch": "^4.0.2" 851 + }, 852 + "engines": { 853 + "node": ">=16.0.0 || 14 >= 14.17" 854 + }, 855 + "peerDependencies": { 856 + "rollup": "^2.68.0||^3.0.0||^4.0.0" 857 + }, 858 + "peerDependenciesMeta": { 859 + "rollup": { 860 + "optional": true 861 + } 862 + } 863 + }, 864 + "node_modules/@rollup/plugin-dynamic-import-vars": { 865 + "version": "2.1.5", 866 + "dev": true, 867 + "license": "MIT", 868 + "dependencies": { 869 + "@rollup/pluginutils": "^5.0.1", 870 + "astring": "^1.8.5", 871 + "estree-walker": "^2.0.2", 872 + "fast-glob": "^3.2.12", 873 + "magic-string": "^0.30.3" 874 + }, 875 + "engines": { 876 + "node": ">=14.0.0" 877 + }, 878 + "peerDependencies": { 879 + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" 880 + }, 881 + "peerDependenciesMeta": { 882 + "rollup": { 883 + "optional": true 884 + } 885 + } 886 + }, 887 + "node_modules/@rollup/plugin-json": { 888 + "version": "6.1.0", 889 + "dev": true, 890 + "license": "MIT", 891 + "dependencies": { 892 + "@rollup/pluginutils": "^5.1.0" 893 + }, 894 + "engines": { 895 + "node": ">=14.0.0" 896 + }, 897 + "peerDependencies": { 898 + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" 899 + }, 900 + "peerDependenciesMeta": { 901 + "rollup": { 902 + "optional": true 903 + } 904 + } 905 + }, 906 + "node_modules/@rollup/plugin-node-resolve": { 907 + "version": "16.0.3", 908 + "dev": true, 909 + "license": "MIT", 910 + "dependencies": { 911 + "@rollup/pluginutils": "^5.0.1", 912 + "@types/resolve": "1.20.2", 913 + "deepmerge": "^4.2.2", 914 + "is-module": "^1.0.0", 915 + "resolve": "^1.22.1" 916 + }, 917 + "engines": { 918 + "node": ">=14.0.0" 919 + }, 920 + "peerDependencies": { 921 + "rollup": "^2.78.0||^3.0.0||^4.0.0" 922 + }, 923 + "peerDependenciesMeta": { 924 + "rollup": { 925 + "optional": true 926 + } 927 + } 928 + }, 929 + "node_modules/@rollup/pluginutils": { 930 + "version": "5.3.0", 931 + "dev": true, 932 + "license": "MIT", 933 + "dependencies": { 934 + "@types/estree": "^1.0.0", 935 + "estree-walker": "^2.0.2", 936 + "picomatch": "^4.0.2" 937 + }, 938 + "engines": { 939 + "node": ">=14.0.0" 940 + }, 941 + "peerDependencies": { 942 + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" 943 + }, 944 + "peerDependenciesMeta": { 945 + "rollup": { 946 + "optional": true 947 + } 948 + } 949 + }, 950 + "node_modules/@rollup/rollup-android-arm-eabi": { 951 + "version": "4.59.0", 952 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", 953 + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", 954 + "cpu": [ 955 + "arm" 956 + ], 957 + "dev": true, 958 + "license": "MIT", 959 + "optional": true, 960 + "os": [ 961 + "android" 962 + ] 963 + }, 964 + "node_modules/@rollup/rollup-android-arm64": { 965 + "version": "4.59.0", 966 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", 967 + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", 968 + "cpu": [ 969 + "arm64" 970 + ], 971 + "dev": true, 972 + "license": "MIT", 973 + "optional": true, 974 + "os": [ 975 + "android" 976 + ] 977 + }, 978 + "node_modules/@rollup/rollup-darwin-arm64": { 979 + "version": "4.59.0", 980 + "cpu": [ 981 + "arm64" 982 + ], 983 + "dev": true, 984 + "license": "MIT", 985 + "optional": true, 986 + "os": [ 987 + "darwin" 988 + ] 989 + }, 990 + "node_modules/@rollup/rollup-darwin-x64": { 991 + "version": "4.59.0", 992 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", 993 + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", 994 + "cpu": [ 995 + "x64" 996 + ], 997 + "dev": true, 998 + "license": "MIT", 999 + "optional": true, 1000 + "os": [ 1001 + "darwin" 1002 + ] 1003 + }, 1004 + "node_modules/@rollup/rollup-freebsd-arm64": { 1005 + "version": "4.59.0", 1006 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", 1007 + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", 1008 + "cpu": [ 1009 + "arm64" 1010 + ], 1011 + "dev": true, 1012 + "license": "MIT", 1013 + "optional": true, 1014 + "os": [ 1015 + "freebsd" 1016 + ] 1017 + }, 1018 + "node_modules/@rollup/rollup-freebsd-x64": { 1019 + "version": "4.59.0", 1020 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", 1021 + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", 1022 + "cpu": [ 1023 + "x64" 1024 + ], 1025 + "dev": true, 1026 + "license": "MIT", 1027 + "optional": true, 1028 + "os": [ 1029 + "freebsd" 1030 + ] 1031 + }, 1032 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1033 + "version": "4.59.0", 1034 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", 1035 + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", 1036 + "cpu": [ 1037 + "arm" 1038 + ], 1039 + "dev": true, 1040 + "license": "MIT", 1041 + "optional": true, 1042 + "os": [ 1043 + "linux" 1044 + ] 1045 + }, 1046 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1047 + "version": "4.59.0", 1048 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", 1049 + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", 1050 + "cpu": [ 1051 + "arm" 1052 + ], 1053 + "dev": true, 1054 + "license": "MIT", 1055 + "optional": true, 1056 + "os": [ 1057 + "linux" 1058 + ] 1059 + }, 1060 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 1061 + "version": "4.59.0", 1062 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", 1063 + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", 1064 + "cpu": [ 1065 + "arm64" 1066 + ], 1067 + "dev": true, 1068 + "license": "MIT", 1069 + "optional": true, 1070 + "os": [ 1071 + "linux" 1072 + ] 1073 + }, 1074 + "node_modules/@rollup/rollup-linux-arm64-musl": { 1075 + "version": "4.59.0", 1076 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", 1077 + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", 1078 + "cpu": [ 1079 + "arm64" 1080 + ], 1081 + "dev": true, 1082 + "license": "MIT", 1083 + "optional": true, 1084 + "os": [ 1085 + "linux" 1086 + ] 1087 + }, 1088 + "node_modules/@rollup/rollup-linux-loong64-gnu": { 1089 + "version": "4.59.0", 1090 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", 1091 + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", 1092 + "cpu": [ 1093 + "loong64" 1094 + ], 1095 + "dev": true, 1096 + "license": "MIT", 1097 + "optional": true, 1098 + "os": [ 1099 + "linux" 1100 + ] 1101 + }, 1102 + "node_modules/@rollup/rollup-linux-loong64-musl": { 1103 + "version": "4.59.0", 1104 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", 1105 + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", 1106 + "cpu": [ 1107 + "loong64" 1108 + ], 1109 + "dev": true, 1110 + "license": "MIT", 1111 + "optional": true, 1112 + "os": [ 1113 + "linux" 1114 + ] 1115 + }, 1116 + "node_modules/@rollup/rollup-linux-ppc64-gnu": { 1117 + "version": "4.59.0", 1118 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", 1119 + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", 1120 + "cpu": [ 1121 + "ppc64" 1122 + ], 1123 + "dev": true, 1124 + "license": "MIT", 1125 + "optional": true, 1126 + "os": [ 1127 + "linux" 1128 + ] 1129 + }, 1130 + "node_modules/@rollup/rollup-linux-ppc64-musl": { 1131 + "version": "4.59.0", 1132 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", 1133 + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", 1134 + "cpu": [ 1135 + "ppc64" 1136 + ], 1137 + "dev": true, 1138 + "license": "MIT", 1139 + "optional": true, 1140 + "os": [ 1141 + "linux" 1142 + ] 1143 + }, 1144 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1145 + "version": "4.59.0", 1146 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", 1147 + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", 1148 + "cpu": [ 1149 + "riscv64" 1150 + ], 1151 + "dev": true, 1152 + "license": "MIT", 1153 + "optional": true, 1154 + "os": [ 1155 + "linux" 1156 + ] 1157 + }, 1158 + "node_modules/@rollup/rollup-linux-riscv64-musl": { 1159 + "version": "4.59.0", 1160 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", 1161 + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", 1162 + "cpu": [ 1163 + "riscv64" 1164 + ], 1165 + "dev": true, 1166 + "license": "MIT", 1167 + "optional": true, 1168 + "os": [ 1169 + "linux" 1170 + ] 1171 + }, 1172 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 1173 + "version": "4.59.0", 1174 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", 1175 + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", 1176 + "cpu": [ 1177 + "s390x" 1178 + ], 1179 + "dev": true, 1180 + "license": "MIT", 1181 + "optional": true, 1182 + "os": [ 1183 + "linux" 1184 + ] 1185 + }, 1186 + "node_modules/@rollup/rollup-linux-x64-gnu": { 1187 + "version": "4.59.0", 1188 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", 1189 + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", 1190 + "cpu": [ 1191 + "x64" 1192 + ], 1193 + "dev": true, 1194 + "license": "MIT", 1195 + "optional": true, 1196 + "os": [ 1197 + "linux" 1198 + ] 1199 + }, 1200 + "node_modules/@rollup/rollup-linux-x64-musl": { 1201 + "version": "4.59.0", 1202 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", 1203 + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", 1204 + "cpu": [ 1205 + "x64" 1206 + ], 1207 + "dev": true, 1208 + "license": "MIT", 1209 + "optional": true, 1210 + "os": [ 1211 + "linux" 1212 + ] 1213 + }, 1214 + "node_modules/@rollup/rollup-openbsd-x64": { 1215 + "version": "4.59.0", 1216 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", 1217 + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", 1218 + "cpu": [ 1219 + "x64" 1220 + ], 1221 + "dev": true, 1222 + "license": "MIT", 1223 + "optional": true, 1224 + "os": [ 1225 + "openbsd" 1226 + ] 1227 + }, 1228 + "node_modules/@rollup/rollup-openharmony-arm64": { 1229 + "version": "4.59.0", 1230 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", 1231 + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", 1232 + "cpu": [ 1233 + "arm64" 1234 + ], 1235 + "dev": true, 1236 + "license": "MIT", 1237 + "optional": true, 1238 + "os": [ 1239 + "openharmony" 1240 + ] 1241 + }, 1242 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 1243 + "version": "4.59.0", 1244 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", 1245 + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", 1246 + "cpu": [ 1247 + "arm64" 1248 + ], 1249 + "dev": true, 1250 + "license": "MIT", 1251 + "optional": true, 1252 + "os": [ 1253 + "win32" 1254 + ] 1255 + }, 1256 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 1257 + "version": "4.59.0", 1258 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", 1259 + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", 1260 + "cpu": [ 1261 + "ia32" 1262 + ], 1263 + "dev": true, 1264 + "license": "MIT", 1265 + "optional": true, 1266 + "os": [ 1267 + "win32" 1268 + ] 1269 + }, 1270 + "node_modules/@rollup/rollup-win32-x64-gnu": { 1271 + "version": "4.59.0", 1272 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", 1273 + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", 1274 + "cpu": [ 1275 + "x64" 1276 + ], 1277 + "dev": true, 1278 + "license": "MIT", 1279 + "optional": true, 1280 + "os": [ 1281 + "win32" 1282 + ] 1283 + }, 1284 + "node_modules/@rollup/rollup-win32-x64-msvc": { 1285 + "version": "4.59.0", 1286 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", 1287 + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", 1288 + "cpu": [ 1289 + "x64" 1290 + ], 1291 + "dev": true, 1292 + "license": "MIT", 1293 + "optional": true, 1294 + "os": [ 1295 + "win32" 1296 + ] 1297 + }, 1298 + "node_modules/@standard-schema/spec": { 1299 + "version": "1.1.0", 1300 + "license": "MIT" 1301 + }, 1302 + "node_modules/@types/body-parser": { 1303 + "version": "1.19.6", 1304 + "dev": true, 1305 + "license": "MIT", 1306 + "dependencies": { 1307 + "@types/connect": "*", 1308 + "@types/node": "*" 1309 + } 1310 + }, 1311 + "node_modules/@types/connect": { 1312 + "version": "3.4.38", 1313 + "dev": true, 1314 + "license": "MIT", 1315 + "dependencies": { 1316 + "@types/node": "*" 1317 + } 1318 + }, 1319 + "node_modules/@types/cors": { 1320 + "version": "2.8.19", 1321 + "dev": true, 1322 + "license": "MIT", 1323 + "dependencies": { 1324 + "@types/node": "*" 1325 + } 1326 + }, 1327 + "node_modules/@types/estree": { 1328 + "version": "1.0.8", 1329 + "dev": true, 1330 + "license": "MIT" 1331 + }, 1332 + "node_modules/@types/express": { 1333 + "version": "5.0.6", 1334 + "dev": true, 1335 + "license": "MIT", 1336 + "dependencies": { 1337 + "@types/body-parser": "*", 1338 + "@types/express-serve-static-core": "^5.0.0", 1339 + "@types/serve-static": "^2" 1340 + } 1341 + }, 1342 + "node_modules/@types/express-serve-static-core": { 1343 + "version": "5.1.1", 1344 + "dev": true, 1345 + "license": "MIT", 1346 + "dependencies": { 1347 + "@types/node": "*", 1348 + "@types/qs": "*", 1349 + "@types/range-parser": "*", 1350 + "@types/send": "*" 1351 + } 1352 + }, 1353 + "node_modules/@types/http-errors": { 1354 + "version": "2.0.5", 1355 + "dev": true, 1356 + "license": "MIT" 1357 + }, 1358 + "node_modules/@types/node": { 1359 + "version": "25.5.0", 1360 + "devOptional": true, 1361 + "license": "MIT", 1362 + "peer": true, 1363 + "dependencies": { 1364 + "undici-types": "~7.18.0" 1365 + } 1366 + }, 1367 + "node_modules/@types/qs": { 1368 + "version": "6.15.0", 1369 + "dev": true, 1370 + "license": "MIT" 1371 + }, 1372 + "node_modules/@types/range-parser": { 1373 + "version": "1.2.7", 1374 + "dev": true, 1375 + "license": "MIT" 1376 + }, 1377 + "node_modules/@types/resolve": { 1378 + "version": "1.20.2", 1379 + "dev": true, 1380 + "license": "MIT" 1381 + }, 1382 + "node_modules/@types/send": { 1383 + "version": "1.2.1", 1384 + "dev": true, 1385 + "license": "MIT", 1386 + "dependencies": { 1387 + "@types/node": "*" 1388 + } 1389 + }, 1390 + "node_modules/@types/serve-static": { 1391 + "version": "2.2.0", 1392 + "dev": true, 1393 + "license": "MIT", 1394 + "dependencies": { 1395 + "@types/http-errors": "*", 1396 + "@types/node": "*" 1397 + } 1398 + }, 1399 + "node_modules/@types/ws": { 1400 + "version": "8.18.1", 1401 + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", 1402 + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", 1403 + "dev": true, 1404 + "license": "MIT", 1405 + "dependencies": { 1406 + "@types/node": "*" 1407 + } 1408 + }, 1409 + "node_modules/accepts": { 1410 + "version": "2.0.0", 1411 + "license": "MIT", 1412 + "dependencies": { 1413 + "mime-types": "^3.0.0", 1414 + "negotiator": "^1.0.0" 1415 + }, 1416 + "engines": { 1417 + "node": ">= 0.6" 1418 + } 1419 + }, 1420 + "node_modules/ansi-regex": { 1421 + "version": "5.0.1", 1422 + "license": "MIT", 1423 + "engines": { 1424 + "node": ">=8" 1425 + } 1426 + }, 1427 + "node_modules/astring": { 1428 + "version": "1.9.0", 1429 + "dev": true, 1430 + "license": "MIT", 1431 + "bin": { 1432 + "astring": "bin/astring" 1433 + } 1434 + }, 1435 + "node_modules/asynckit": { 1436 + "version": "0.4.0", 1437 + "license": "MIT" 1438 + }, 1439 + "node_modules/axios": { 1440 + "version": "1.13.6", 1441 + "license": "MIT", 1442 + "dependencies": { 1443 + "follow-redirects": "^1.15.11", 1444 + "form-data": "^4.0.5", 1445 + "proxy-from-env": "^1.1.0" 1446 + } 1447 + }, 1448 + "node_modules/body-parser": { 1449 + "version": "2.2.2", 1450 + "license": "MIT", 1451 + "dependencies": { 1452 + "bytes": "^3.1.2", 1453 + "content-type": "^1.0.5", 1454 + "debug": "^4.4.3", 1455 + "http-errors": "^2.0.0", 1456 + "iconv-lite": "^0.7.0", 1457 + "on-finished": "^2.4.1", 1458 + "qs": "^6.14.1", 1459 + "raw-body": "^3.0.1", 1460 + "type-is": "^2.0.1" 1461 + }, 1462 + "engines": { 1463 + "node": ">=18" 1464 + }, 1465 + "funding": { 1466 + "type": "opencollective", 1467 + "url": "https://opencollective.com/express" 1468 + } 1469 + }, 1470 + "node_modules/braces": { 1471 + "version": "3.0.3", 1472 + "dev": true, 1473 + "license": "MIT", 1474 + "dependencies": { 1475 + "fill-range": "^7.1.1" 1476 + }, 1477 + "engines": { 1478 + "node": ">=8" 1479 + } 1480 + }, 1481 + "node_modules/bundle-name": { 1482 + "version": "4.1.0", 1483 + "license": "MIT", 1484 + "dependencies": { 1485 + "run-applescript": "^7.0.0" 1486 + }, 1487 + "engines": { 1488 + "node": ">=18" 1489 + }, 1490 + "funding": { 1491 + "url": "https://github.com/sponsors/sindresorhus" 1492 + } 1493 + }, 1494 + "node_modules/bytes": { 1495 + "version": "3.1.2", 1496 + "license": "MIT", 1497 + "engines": { 1498 + "node": ">= 0.8" 1499 + } 1500 + }, 1501 + "node_modules/call-bind-apply-helpers": { 1502 + "version": "1.0.2", 1503 + "license": "MIT", 1504 + "dependencies": { 1505 + "es-errors": "^1.3.0", 1506 + "function-bind": "^1.1.2" 1507 + }, 1508 + "engines": { 1509 + "node": ">= 0.4" 1510 + } 1511 + }, 1512 + "node_modules/call-bound": { 1513 + "version": "1.0.4", 1514 + "license": "MIT", 1515 + "dependencies": { 1516 + "call-bind-apply-helpers": "^1.0.2", 1517 + "get-intrinsic": "^1.3.0" 1518 + }, 1519 + "engines": { 1520 + "node": ">= 0.4" 1521 + }, 1522 + "funding": { 1523 + "url": "https://github.com/sponsors/ljharb" 1524 + } 1525 + }, 1526 + "node_modules/chalk": { 1527 + "version": "5.6.2", 1528 + "license": "MIT", 1529 + "engines": { 1530 + "node": "^12.17.0 || ^14.13 || >=16.0.0" 1531 + }, 1532 + "funding": { 1533 + "url": "https://github.com/chalk/chalk?sponsor=1" 1534 + } 1535 + }, 1536 + "node_modules/chardet": { 1537 + "version": "2.1.1", 1538 + "license": "MIT" 1539 + }, 1540 + "node_modules/cjs-module-lexer": { 1541 + "version": "2.2.0", 1542 + "dev": true, 1543 + "license": "MIT" 1544 + }, 1545 + "node_modules/cli-table3": { 1546 + "version": "0.6.5", 1547 + "license": "MIT", 1548 + "dependencies": { 1549 + "string-width": "^4.2.0" 1550 + }, 1551 + "engines": { 1552 + "node": "10.* || >= 12.*" 1553 + }, 1554 + "optionalDependencies": { 1555 + "@colors/colors": "1.5.0" 1556 + } 1557 + }, 1558 + "node_modules/cli-width": { 1559 + "version": "4.1.0", 1560 + "license": "ISC", 1561 + "engines": { 1562 + "node": ">= 12" 1563 + } 1564 + }, 1565 + "node_modules/combined-stream": { 1566 + "version": "1.0.8", 1567 + "license": "MIT", 1568 + "dependencies": { 1569 + "delayed-stream": "~1.0.0" 1570 + }, 1571 + "engines": { 1572 + "node": ">= 0.8" 1573 + } 1574 + }, 1575 + "node_modules/commander": { 1576 + "version": "14.0.3", 1577 + "license": "MIT", 1578 + "engines": { 1579 + "node": ">=20" 1580 + } 1581 + }, 1582 + "node_modules/commondir": { 1583 + "version": "1.0.1", 1584 + "dev": true, 1585 + "license": "MIT" 1586 + }, 1587 + "node_modules/consola": { 1588 + "version": "3.4.2", 1589 + "license": "MIT", 1590 + "engines": { 1591 + "node": "^14.18.0 || >=16.10.0" 1592 + } 1593 + }, 1594 + "node_modules/content-disposition": { 1595 + "version": "1.0.1", 1596 + "license": "MIT", 1597 + "engines": { 1598 + "node": ">=18" 1599 + }, 1600 + "funding": { 1601 + "type": "opencollective", 1602 + "url": "https://opencollective.com/express" 1603 + } 1604 + }, 1605 + "node_modules/content-type": { 1606 + "version": "1.0.5", 1607 + "license": "MIT", 1608 + "engines": { 1609 + "node": ">= 0.6" 1610 + } 1611 + }, 1612 + "node_modules/cookie": { 1613 + "version": "0.7.2", 1614 + "license": "MIT", 1615 + "engines": { 1616 + "node": ">= 0.6" 1617 + } 1618 + }, 1619 + "node_modules/cookie-signature": { 1620 + "version": "1.2.2", 1621 + "license": "MIT", 1622 + "engines": { 1623 + "node": ">=6.6.0" 1624 + } 1625 + }, 1626 + "node_modules/cors": { 1627 + "version": "2.8.6", 1628 + "license": "MIT", 1629 + "dependencies": { 1630 + "object-assign": "^4", 1631 + "vary": "^1" 1632 + }, 1633 + "engines": { 1634 + "node": ">= 0.10" 1635 + }, 1636 + "funding": { 1637 + "type": "opencollective", 1638 + "url": "https://opencollective.com/express" 1639 + } 1640 + }, 1641 + "node_modules/dayjs": { 1642 + "version": "1.11.20", 1643 + "license": "MIT" 1644 + }, 1645 + "node_modules/debug": { 1646 + "version": "4.4.3", 1647 + "license": "MIT", 1648 + "dependencies": { 1649 + "ms": "^2.1.3" 1650 + }, 1651 + "engines": { 1652 + "node": ">=6.0" 1653 + }, 1654 + "peerDependenciesMeta": { 1655 + "supports-color": { 1656 + "optional": true 1657 + } 1658 + } 1659 + }, 1660 + "node_modules/deepmerge": { 1661 + "version": "4.3.1", 1662 + "dev": true, 1663 + "license": "MIT", 1664 + "engines": { 1665 + "node": ">=0.10.0" 1666 + } 1667 + }, 1668 + "node_modules/default-browser": { 1669 + "version": "5.5.0", 1670 + "license": "MIT", 1671 + "dependencies": { 1672 + "bundle-name": "^4.1.0", 1673 + "default-browser-id": "^5.0.0" 1674 + }, 1675 + "engines": { 1676 + "node": ">=18" 1677 + }, 1678 + "funding": { 1679 + "url": "https://github.com/sponsors/sindresorhus" 1680 + } 1681 + }, 1682 + "node_modules/default-browser-id": { 1683 + "version": "5.0.1", 1684 + "license": "MIT", 1685 + "engines": { 1686 + "node": ">=18" 1687 + }, 1688 + "funding": { 1689 + "url": "https://github.com/sponsors/sindresorhus" 1690 + } 1691 + }, 1692 + "node_modules/define-lazy-prop": { 1693 + "version": "3.0.0", 1694 + "license": "MIT", 1695 + "engines": { 1696 + "node": ">=12" 1697 + }, 1698 + "funding": { 1699 + "url": "https://github.com/sponsors/sindresorhus" 1700 + } 1701 + }, 1702 + "node_modules/delayed-stream": { 1703 + "version": "1.0.0", 1704 + "license": "MIT", 1705 + "engines": { 1706 + "node": ">=0.4.0" 1707 + } 1708 + }, 1709 + "node_modules/depd": { 1710 + "version": "2.0.0", 1711 + "license": "MIT", 1712 + "engines": { 1713 + "node": ">= 0.8" 1714 + } 1715 + }, 1716 + "node_modules/dunder-proto": { 1717 + "version": "1.0.1", 1718 + "license": "MIT", 1719 + "dependencies": { 1720 + "call-bind-apply-helpers": "^1.0.1", 1721 + "es-errors": "^1.3.0", 1722 + "gopd": "^1.2.0" 1723 + }, 1724 + "engines": { 1725 + "node": ">= 0.4" 1726 + } 1727 + }, 1728 + "node_modules/ee-first": { 1729 + "version": "1.1.1", 1730 + "license": "MIT" 1731 + }, 1732 + "node_modules/effect": { 1733 + "version": "3.19.19", 1734 + "license": "MIT", 1735 + "dependencies": { 1736 + "@standard-schema/spec": "^1.0.0", 1737 + "fast-check": "^3.23.1" 1738 + } 1739 + }, 1740 + "node_modules/emoji-regex": { 1741 + "version": "8.0.0", 1742 + "license": "MIT" 1743 + }, 1744 + "node_modules/encodeurl": { 1745 + "version": "2.0.0", 1746 + "license": "MIT", 1747 + "engines": { 1748 + "node": ">= 0.8" 1749 + } 1750 + }, 1751 + "node_modules/envalid": { 1752 + "version": "8.1.1", 1753 + "license": "MIT", 1754 + "dependencies": { 1755 + "tslib": "2.8.1" 1756 + }, 1757 + "engines": { 1758 + "node": ">=18" 1759 + } 1760 + }, 1761 + "node_modules/es-define-property": { 1762 + "version": "1.0.1", 1763 + "license": "MIT", 1764 + "engines": { 1765 + "node": ">= 0.4" 1766 + } 1767 + }, 1768 + "node_modules/es-errors": { 1769 + "version": "1.3.0", 1770 + "license": "MIT", 1771 + "engines": { 1772 + "node": ">= 0.4" 1773 + } 1774 + }, 1775 + "node_modules/es-object-atoms": { 1776 + "version": "1.1.1", 1777 + "license": "MIT", 1778 + "dependencies": { 1779 + "es-errors": "^1.3.0" 1780 + }, 1781 + "engines": { 1782 + "node": ">= 0.4" 1783 + } 1784 + }, 1785 + "node_modules/es-set-tostringtag": { 1786 + "version": "2.1.0", 1787 + "license": "MIT", 1788 + "dependencies": { 1789 + "es-errors": "^1.3.0", 1790 + "get-intrinsic": "^1.2.6", 1791 + "has-tostringtag": "^1.0.2", 1792 + "hasown": "^2.0.2" 1793 + }, 1794 + "engines": { 1795 + "node": ">= 0.4" 1796 + } 1797 + }, 1798 + "node_modules/esbuild": { 1799 + "version": "0.26.0", 1800 + "dev": true, 1801 + "hasInstallScript": true, 1802 + "license": "MIT", 1803 + "bin": { 1804 + "esbuild": "bin/esbuild" 1805 + }, 1806 + "engines": { 1807 + "node": ">=18" 1808 + }, 1809 + "optionalDependencies": { 1810 + "@esbuild/aix-ppc64": "0.26.0", 1811 + "@esbuild/android-arm": "0.26.0", 1812 + "@esbuild/android-arm64": "0.26.0", 1813 + "@esbuild/android-x64": "0.26.0", 1814 + "@esbuild/darwin-arm64": "0.26.0", 1815 + "@esbuild/darwin-x64": "0.26.0", 1816 + "@esbuild/freebsd-arm64": "0.26.0", 1817 + "@esbuild/freebsd-x64": "0.26.0", 1818 + "@esbuild/linux-arm": "0.26.0", 1819 + "@esbuild/linux-arm64": "0.26.0", 1820 + "@esbuild/linux-ia32": "0.26.0", 1821 + "@esbuild/linux-loong64": "0.26.0", 1822 + "@esbuild/linux-mips64el": "0.26.0", 1823 + "@esbuild/linux-ppc64": "0.26.0", 1824 + "@esbuild/linux-riscv64": "0.26.0", 1825 + "@esbuild/linux-s390x": "0.26.0", 1826 + "@esbuild/linux-x64": "0.26.0", 1827 + "@esbuild/netbsd-arm64": "0.26.0", 1828 + "@esbuild/netbsd-x64": "0.26.0", 1829 + "@esbuild/openbsd-arm64": "0.26.0", 1830 + "@esbuild/openbsd-x64": "0.26.0", 1831 + "@esbuild/openharmony-arm64": "0.26.0", 1832 + "@esbuild/sunos-x64": "0.26.0", 1833 + "@esbuild/win32-arm64": "0.26.0", 1834 + "@esbuild/win32-ia32": "0.26.0", 1835 + "@esbuild/win32-x64": "0.26.0" 1836 + } 1837 + }, 1838 + "node_modules/escape-html": { 1839 + "version": "1.0.3", 1840 + "license": "MIT" 1841 + }, 1842 + "node_modules/estree-walker": { 1843 + "version": "2.0.2", 1844 + "dev": true, 1845 + "license": "MIT" 1846 + }, 1847 + "node_modules/etag": { 1848 + "version": "1.8.1", 1849 + "license": "MIT", 1850 + "engines": { 1851 + "node": ">= 0.6" 1852 + } 1853 + }, 1854 + "node_modules/express": { 1855 + "version": "5.2.1", 1856 + "license": "MIT", 1857 + "dependencies": { 1858 + "accepts": "^2.0.0", 1859 + "body-parser": "^2.2.1", 1860 + "content-disposition": "^1.0.0", 1861 + "content-type": "^1.0.5", 1862 + "cookie": "^0.7.1", 1863 + "cookie-signature": "^1.2.1", 1864 + "debug": "^4.4.0", 1865 + "depd": "^2.0.0", 1866 + "encodeurl": "^2.0.0", 1867 + "escape-html": "^1.0.3", 1868 + "etag": "^1.8.1", 1869 + "finalhandler": "^2.1.0", 1870 + "fresh": "^2.0.0", 1871 + "http-errors": "^2.0.0", 1872 + "merge-descriptors": "^2.0.0", 1873 + "mime-types": "^3.0.0", 1874 + "on-finished": "^2.4.1", 1875 + "once": "^1.4.0", 1876 + "parseurl": "^1.3.3", 1877 + "proxy-addr": "^2.0.7", 1878 + "qs": "^6.14.0", 1879 + "range-parser": "^1.2.1", 1880 + "router": "^2.2.0", 1881 + "send": "^1.1.0", 1882 + "serve-static": "^2.2.0", 1883 + "statuses": "^2.0.1", 1884 + "type-is": "^2.0.1", 1885 + "vary": "^1.1.2" 1886 + }, 1887 + "engines": { 1888 + "node": ">= 18" 1889 + }, 1890 + "funding": { 1891 + "type": "opencollective", 1892 + "url": "https://opencollective.com/express" 1893 + } 1894 + }, 1895 + "node_modules/fast-check": { 1896 + "version": "3.23.2", 1897 + "funding": [ 1898 + { 1899 + "type": "individual", 1900 + "url": "https://github.com/sponsors/dubzzz" 1901 + }, 1902 + { 1903 + "type": "opencollective", 1904 + "url": "https://opencollective.com/fast-check" 1905 + } 1906 + ], 1907 + "license": "MIT", 1908 + "dependencies": { 1909 + "pure-rand": "^6.1.0" 1910 + }, 1911 + "engines": { 1912 + "node": ">=8.0.0" 1913 + } 1914 + }, 1915 + "node_modules/fast-glob": { 1916 + "version": "3.3.3", 1917 + "dev": true, 1918 + "license": "MIT", 1919 + "dependencies": { 1920 + "@nodelib/fs.stat": "^2.0.2", 1921 + "@nodelib/fs.walk": "^1.2.3", 1922 + "glob-parent": "^5.1.2", 1923 + "merge2": "^1.3.0", 1924 + "micromatch": "^4.0.8" 1925 + }, 1926 + "engines": { 1927 + "node": ">=8.6.0" 1928 + } 1929 + }, 1930 + "node_modules/fast-string-truncated-width": { 1931 + "version": "3.0.3", 1932 + "license": "MIT" 1933 + }, 1934 + "node_modules/fast-string-width": { 1935 + "version": "3.0.2", 1936 + "license": "MIT", 1937 + "dependencies": { 1938 + "fast-string-truncated-width": "^3.0.2" 1939 + } 1940 + }, 1941 + "node_modules/fast-wrap-ansi": { 1942 + "version": "0.2.0", 1943 + "license": "MIT", 1944 + "dependencies": { 1945 + "fast-string-width": "^3.0.2" 1946 + } 1947 + }, 1948 + "node_modules/fastq": { 1949 + "version": "1.20.1", 1950 + "dev": true, 1951 + "license": "ISC", 1952 + "dependencies": { 1953 + "reusify": "^1.0.4" 1954 + } 1955 + }, 1956 + "node_modules/fdir": { 1957 + "version": "6.5.0", 1958 + "dev": true, 1959 + "license": "MIT", 1960 + "engines": { 1961 + "node": ">=12.0.0" 1962 + }, 1963 + "peerDependencies": { 1964 + "picomatch": "^3 || ^4" 1965 + }, 1966 + "peerDependenciesMeta": { 1967 + "picomatch": { 1968 + "optional": true 1969 + } 1970 + } 1971 + }, 1972 + "node_modules/fill-range": { 1973 + "version": "7.1.1", 1974 + "dev": true, 1975 + "license": "MIT", 1976 + "dependencies": { 1977 + "to-regex-range": "^5.0.1" 1978 + }, 1979 + "engines": { 1980 + "node": ">=8" 1981 + } 1982 + }, 1983 + "node_modules/finalhandler": { 1984 + "version": "2.1.1", 1985 + "license": "MIT", 1986 + "dependencies": { 1987 + "debug": "^4.4.0", 1988 + "encodeurl": "^2.0.0", 1989 + "escape-html": "^1.0.3", 1990 + "on-finished": "^2.4.1", 1991 + "parseurl": "^1.3.3", 1992 + "statuses": "^2.0.1" 1993 + }, 1994 + "engines": { 1995 + "node": ">= 18.0.0" 1996 + }, 1997 + "funding": { 1998 + "type": "opencollective", 1999 + "url": "https://opencollective.com/express" 2000 + } 2001 + }, 2002 + "node_modules/follow-redirects": { 2003 + "version": "1.15.11", 2004 + "funding": [ 2005 + { 2006 + "type": "individual", 2007 + "url": "https://github.com/sponsors/RubenVerborgh" 2008 + } 2009 + ], 2010 + "license": "MIT", 2011 + "engines": { 2012 + "node": ">=4.0" 2013 + }, 2014 + "peerDependenciesMeta": { 2015 + "debug": { 2016 + "optional": true 2017 + } 2018 + } 2019 + }, 2020 + "node_modules/form-data": { 2021 + "version": "4.0.5", 2022 + "license": "MIT", 2023 + "dependencies": { 2024 + "asynckit": "^0.4.0", 2025 + "combined-stream": "^1.0.8", 2026 + "es-set-tostringtag": "^2.1.0", 2027 + "hasown": "^2.0.2", 2028 + "mime-types": "^2.1.12" 2029 + }, 2030 + "engines": { 2031 + "node": ">= 6" 2032 + } 2033 + }, 2034 + "node_modules/form-data/node_modules/mime-types": { 2035 + "version": "2.1.35", 2036 + "license": "MIT", 2037 + "dependencies": { 2038 + "mime-db": "1.52.0" 2039 + }, 2040 + "engines": { 2041 + "node": ">= 0.6" 2042 + } 2043 + }, 2044 + "node_modules/form-data/node_modules/mime-types/node_modules/mime-db": { 2045 + "version": "1.52.0", 2046 + "license": "MIT", 2047 + "engines": { 2048 + "node": ">= 0.6" 2049 + } 2050 + }, 2051 + "node_modules/forwarded": { 2052 + "version": "0.2.0", 2053 + "license": "MIT", 2054 + "engines": { 2055 + "node": ">= 0.6" 2056 + } 2057 + }, 2058 + "node_modules/fresh": { 2059 + "version": "2.0.0", 2060 + "license": "MIT", 2061 + "engines": { 2062 + "node": ">= 0.8" 2063 + } 2064 + }, 2065 + "node_modules/fsevents": { 2066 + "version": "2.3.3", 2067 + "dev": true, 2068 + "license": "MIT", 2069 + "optional": true, 2070 + "os": [ 2071 + "darwin" 2072 + ], 2073 + "engines": { 2074 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2075 + } 2076 + }, 2077 + "node_modules/function-bind": { 2078 + "version": "1.1.2", 2079 + "license": "MIT", 2080 + "funding": { 2081 + "url": "https://github.com/sponsors/ljharb" 2082 + } 2083 + }, 2084 + "node_modules/get-intrinsic": { 2085 + "version": "1.3.0", 2086 + "license": "MIT", 2087 + "dependencies": { 2088 + "call-bind-apply-helpers": "^1.0.2", 2089 + "es-define-property": "^1.0.1", 2090 + "es-errors": "^1.3.0", 2091 + "es-object-atoms": "^1.1.1", 2092 + "function-bind": "^1.1.2", 2093 + "get-proto": "^1.0.1", 2094 + "gopd": "^1.2.0", 2095 + "has-symbols": "^1.1.0", 2096 + "hasown": "^2.0.2", 2097 + "math-intrinsics": "^1.1.0" 2098 + }, 2099 + "engines": { 2100 + "node": ">= 0.4" 2101 + }, 2102 + "funding": { 2103 + "url": "https://github.com/sponsors/ljharb" 2104 + } 2105 + }, 2106 + "node_modules/get-proto": { 2107 + "version": "1.0.1", 2108 + "license": "MIT", 2109 + "dependencies": { 2110 + "dunder-proto": "^1.0.1", 2111 + "es-object-atoms": "^1.0.0" 2112 + }, 2113 + "engines": { 2114 + "node": ">= 0.4" 2115 + } 2116 + }, 2117 + "node_modules/get-tsconfig": { 2118 + "version": "4.13.6", 2119 + "dev": true, 2120 + "license": "MIT", 2121 + "dependencies": { 2122 + "resolve-pkg-maps": "^1.0.0" 2123 + }, 2124 + "funding": { 2125 + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 2126 + } 2127 + }, 2128 + "node_modules/glob-parent": { 2129 + "version": "5.1.2", 2130 + "dev": true, 2131 + "license": "ISC", 2132 + "dependencies": { 2133 + "is-glob": "^4.0.1" 2134 + }, 2135 + "engines": { 2136 + "node": ">= 6" 2137 + } 2138 + }, 2139 + "node_modules/gopd": { 2140 + "version": "1.2.0", 2141 + "license": "MIT", 2142 + "engines": { 2143 + "node": ">= 0.4" 2144 + }, 2145 + "funding": { 2146 + "url": "https://github.com/sponsors/ljharb" 2147 + } 2148 + }, 2149 + "node_modules/has-symbols": { 2150 + "version": "1.1.0", 2151 + "license": "MIT", 2152 + "engines": { 2153 + "node": ">= 0.4" 2154 + }, 2155 + "funding": { 2156 + "url": "https://github.com/sponsors/ljharb" 2157 + } 2158 + }, 2159 + "node_modules/has-tostringtag": { 2160 + "version": "1.0.2", 2161 + "license": "MIT", 2162 + "dependencies": { 2163 + "has-symbols": "^1.0.3" 2164 + }, 2165 + "engines": { 2166 + "node": ">= 0.4" 2167 + }, 2168 + "funding": { 2169 + "url": "https://github.com/sponsors/ljharb" 2170 + } 2171 + }, 2172 + "node_modules/hasown": { 2173 + "version": "2.0.2", 2174 + "license": "MIT", 2175 + "dependencies": { 2176 + "function-bind": "^1.1.2" 2177 + }, 2178 + "engines": { 2179 + "node": ">= 0.4" 2180 + } 2181 + }, 2182 + "node_modules/http-errors": { 2183 + "version": "2.0.1", 2184 + "license": "MIT", 2185 + "dependencies": { 2186 + "depd": "~2.0.0", 2187 + "inherits": "~2.0.4", 2188 + "setprototypeof": "~1.2.0", 2189 + "statuses": "~2.0.2", 2190 + "toidentifier": "~1.0.1" 2191 + }, 2192 + "engines": { 2193 + "node": ">= 0.8" 2194 + }, 2195 + "funding": { 2196 + "type": "opencollective", 2197 + "url": "https://opencollective.com/express" 2198 + } 2199 + }, 2200 + "node_modules/iconv-lite": { 2201 + "version": "0.7.2", 2202 + "license": "MIT", 2203 + "dependencies": { 2204 + "safer-buffer": ">= 2.1.2 < 3.0.0" 2205 + }, 2206 + "engines": { 2207 + "node": ">=0.10.0" 2208 + }, 2209 + "funding": { 2210 + "type": "opencollective", 2211 + "url": "https://opencollective.com/express" 2212 + } 2213 + }, 2214 + "node_modules/inherits": { 2215 + "version": "2.0.4", 2216 + "license": "ISC" 2217 + }, 2218 + "node_modules/ipaddr.js": { 2219 + "version": "1.9.1", 2220 + "license": "MIT", 2221 + "engines": { 2222 + "node": ">= 0.10" 2223 + } 2224 + }, 2225 + "node_modules/is-core-module": { 2226 + "version": "2.16.1", 2227 + "dev": true, 2228 + "license": "MIT", 2229 + "dependencies": { 2230 + "hasown": "^2.0.2" 2231 + }, 2232 + "engines": { 2233 + "node": ">= 0.4" 2234 + }, 2235 + "funding": { 2236 + "url": "https://github.com/sponsors/ljharb" 2237 + } 2238 + }, 2239 + "node_modules/is-docker": { 2240 + "version": "3.0.0", 2241 + "license": "MIT", 2242 + "bin": { 2243 + "is-docker": "cli.js" 2244 + }, 2245 + "engines": { 2246 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2247 + }, 2248 + "funding": { 2249 + "url": "https://github.com/sponsors/sindresorhus" 2250 + } 2251 + }, 2252 + "node_modules/is-extglob": { 2253 + "version": "2.1.1", 2254 + "dev": true, 2255 + "license": "MIT", 2256 + "engines": { 2257 + "node": ">=0.10.0" 2258 + } 2259 + }, 2260 + "node_modules/is-fullwidth-code-point": { 2261 + "version": "3.0.0", 2262 + "license": "MIT", 2263 + "engines": { 2264 + "node": ">=8" 2265 + } 2266 + }, 2267 + "node_modules/is-glob": { 2268 + "version": "4.0.3", 2269 + "dev": true, 2270 + "license": "MIT", 2271 + "dependencies": { 2272 + "is-extglob": "^2.1.1" 2273 + }, 2274 + "engines": { 2275 + "node": ">=0.10.0" 2276 + } 2277 + }, 2278 + "node_modules/is-in-ssh": { 2279 + "version": "1.0.0", 2280 + "license": "MIT", 2281 + "engines": { 2282 + "node": ">=20" 2283 + }, 2284 + "funding": { 2285 + "url": "https://github.com/sponsors/sindresorhus" 2286 + } 2287 + }, 2288 + "node_modules/is-inside-container": { 2289 + "version": "1.0.0", 2290 + "license": "MIT", 2291 + "dependencies": { 2292 + "is-docker": "^3.0.0" 2293 + }, 2294 + "bin": { 2295 + "is-inside-container": "cli.js" 2296 + }, 2297 + "engines": { 2298 + "node": ">=14.16" 2299 + }, 2300 + "funding": { 2301 + "url": "https://github.com/sponsors/sindresorhus" 2302 + } 2303 + }, 2304 + "node_modules/is-module": { 2305 + "version": "1.0.0", 2306 + "dev": true, 2307 + "license": "MIT" 2308 + }, 2309 + "node_modules/is-number": { 2310 + "version": "7.0.0", 2311 + "dev": true, 2312 + "license": "MIT", 2313 + "engines": { 2314 + "node": ">=0.12.0" 2315 + } 2316 + }, 2317 + "node_modules/is-promise": { 2318 + "version": "4.0.0", 2319 + "license": "MIT" 2320 + }, 2321 + "node_modules/is-reference": { 2322 + "version": "1.2.1", 2323 + "dev": true, 2324 + "license": "MIT", 2325 + "dependencies": { 2326 + "@types/estree": "*" 2327 + } 2328 + }, 2329 + "node_modules/is-wsl": { 2330 + "version": "3.1.1", 2331 + "license": "MIT", 2332 + "dependencies": { 2333 + "is-inside-container": "^1.0.0" 2334 + }, 2335 + "engines": { 2336 + "node": ">=16" 2337 + }, 2338 + "funding": { 2339 + "url": "https://github.com/sponsors/sindresorhus" 2340 + } 2341 + }, 2342 + "node_modules/magic-string": { 2343 + "version": "0.30.21", 2344 + "dev": true, 2345 + "license": "MIT", 2346 + "dependencies": { 2347 + "@jridgewell/sourcemap-codec": "^1.5.5" 2348 + } 2349 + }, 2350 + "node_modules/math-intrinsics": { 2351 + "version": "1.1.0", 2352 + "license": "MIT", 2353 + "engines": { 2354 + "node": ">= 0.4" 2355 + } 2356 + }, 2357 + "node_modules/media-typer": { 2358 + "version": "1.1.0", 2359 + "license": "MIT", 2360 + "engines": { 2361 + "node": ">= 0.8" 2362 + } 2363 + }, 2364 + "node_modules/merge-descriptors": { 2365 + "version": "2.0.0", 2366 + "license": "MIT", 2367 + "engines": { 2368 + "node": ">=18" 2369 + }, 2370 + "funding": { 2371 + "url": "https://github.com/sponsors/sindresorhus" 2372 + } 2373 + }, 2374 + "node_modules/merge2": { 2375 + "version": "1.4.1", 2376 + "dev": true, 2377 + "license": "MIT", 2378 + "engines": { 2379 + "node": ">= 8" 2380 + } 2381 + }, 2382 + "node_modules/micromatch": { 2383 + "version": "4.0.8", 2384 + "dev": true, 2385 + "license": "MIT", 2386 + "dependencies": { 2387 + "braces": "^3.0.3", 2388 + "picomatch": "^2.3.1" 2389 + }, 2390 + "engines": { 2391 + "node": ">=8.6" 2392 + } 2393 + }, 2394 + "node_modules/micromatch/node_modules/picomatch": { 2395 + "version": "2.3.1", 2396 + "dev": true, 2397 + "license": "MIT", 2398 + "engines": { 2399 + "node": ">=8.6" 2400 + }, 2401 + "funding": { 2402 + "url": "https://github.com/sponsors/jonschlinkert" 2403 + } 2404 + }, 2405 + "node_modules/mime-db": { 2406 + "version": "1.54.0", 2407 + "license": "MIT", 2408 + "engines": { 2409 + "node": ">= 0.6" 2410 + } 2411 + }, 2412 + "node_modules/mime-types": { 2413 + "version": "3.0.2", 2414 + "license": "MIT", 2415 + "dependencies": { 2416 + "mime-db": "^1.54.0" 2417 + }, 2418 + "engines": { 2419 + "node": ">=18" 2420 + }, 2421 + "funding": { 2422 + "type": "opencollective", 2423 + "url": "https://opencollective.com/express" 2424 + } 2425 + }, 2426 + "node_modules/ms": { 2427 + "version": "2.1.3", 2428 + "license": "MIT" 2429 + }, 2430 + "node_modules/mute-stream": { 2431 + "version": "3.0.0", 2432 + "license": "ISC", 2433 + "engines": { 2434 + "node": "^20.17.0 || >=22.9.0" 2435 + } 2436 + }, 2437 + "node_modules/negotiator": { 2438 + "version": "1.0.0", 2439 + "license": "MIT", 2440 + "engines": { 2441 + "node": ">= 0.6" 2442 + } 2443 + }, 2444 + "node_modules/node-addon-api": { 2445 + "version": "7.1.1", 2446 + "license": "MIT" 2447 + }, 2448 + "node_modules/node-pty": { 2449 + "version": "1.1.0", 2450 + "hasInstallScript": true, 2451 + "license": "MIT", 2452 + "dependencies": { 2453 + "node-addon-api": "^7.1.0" 2454 + } 2455 + }, 2456 + "node_modules/object-assign": { 2457 + "version": "4.1.1", 2458 + "license": "MIT", 2459 + "engines": { 2460 + "node": ">=0.10.0" 2461 + } 2462 + }, 2463 + "node_modules/object-inspect": { 2464 + "version": "1.13.4", 2465 + "license": "MIT", 2466 + "engines": { 2467 + "node": ">= 0.4" 2468 + }, 2469 + "funding": { 2470 + "url": "https://github.com/sponsors/ljharb" 2471 + } 2472 + }, 2473 + "node_modules/on-finished": { 2474 + "version": "2.4.1", 2475 + "license": "MIT", 2476 + "dependencies": { 2477 + "ee-first": "1.1.1" 2478 + }, 2479 + "engines": { 2480 + "node": ">= 0.8" 2481 + } 2482 + }, 2483 + "node_modules/once": { 2484 + "version": "1.4.0", 2485 + "license": "ISC", 2486 + "dependencies": { 2487 + "wrappy": "1" 2488 + } 2489 + }, 2490 + "node_modules/open": { 2491 + "version": "11.0.0", 2492 + "license": "MIT", 2493 + "dependencies": { 2494 + "default-browser": "^5.4.0", 2495 + "define-lazy-prop": "^3.0.0", 2496 + "is-in-ssh": "^1.0.0", 2497 + "is-inside-container": "^1.0.0", 2498 + "powershell-utils": "^0.1.0", 2499 + "wsl-utils": "^0.3.0" 2500 + }, 2501 + "engines": { 2502 + "node": ">=20" 2503 + }, 2504 + "funding": { 2505 + "url": "https://github.com/sponsors/sindresorhus" 2506 + } 2507 + }, 2508 + "node_modules/parseurl": { 2509 + "version": "1.3.3", 2510 + "license": "MIT", 2511 + "engines": { 2512 + "node": ">= 0.8" 2513 + } 2514 + }, 2515 + "node_modules/path-parse": { 2516 + "version": "1.0.7", 2517 + "dev": true, 2518 + "license": "MIT" 2519 + }, 2520 + "node_modules/path-to-regexp": { 2521 + "version": "8.3.0", 2522 + "license": "MIT", 2523 + "funding": { 2524 + "type": "opencollective", 2525 + "url": "https://opencollective.com/express" 2526 + } 2527 + }, 2528 + "node_modules/picomatch": { 2529 + "version": "4.0.3", 2530 + "dev": true, 2531 + "license": "MIT", 2532 + "peer": true, 2533 + "engines": { 2534 + "node": ">=12" 2535 + }, 2536 + "funding": { 2537 + "url": "https://github.com/sponsors/jonschlinkert" 2538 + } 2539 + }, 2540 + "node_modules/pkgroll": { 2541 + "version": "2.27.0", 2542 + "dev": true, 2543 + "license": "MIT", 2544 + "dependencies": { 2545 + "@rollup/plugin-alias": "^6.0.0", 2546 + "@rollup/plugin-commonjs": "^29.0.0", 2547 + "@rollup/plugin-dynamic-import-vars": "^2.1.5", 2548 + "@rollup/plugin-json": "^6.1.0", 2549 + "@rollup/plugin-node-resolve": "^16.0.3", 2550 + "cjs-module-lexer": "^2.2.0", 2551 + "esbuild": "^0.26.0", 2552 + "magic-string": "^0.30.21", 2553 + "rollup": "^4.53.5", 2554 + "rollup-plugin-import-trace": "^1.0.1", 2555 + "rollup-pluginutils": "^2.8.2", 2556 + "yaml": "^2.8.2" 2557 + }, 2558 + "bin": { 2559 + "pkgroll": "dist/cli.mjs" 2560 + }, 2561 + "engines": { 2562 + "node": ">=18" 2563 + }, 2564 + "funding": { 2565 + "url": "https://github.com/privatenumber/pkgroll?sponsor=1" 2566 + }, 2567 + "peerDependencies": { 2568 + "typescript": "^4.1 || ^5.0" 2569 + }, 2570 + "peerDependenciesMeta": { 2571 + "typescript": { 2572 + "optional": true 2573 + } 2574 + } 2575 + }, 2576 + "node_modules/powershell-utils": { 2577 + "version": "0.1.0", 2578 + "license": "MIT", 2579 + "engines": { 2580 + "node": ">=20" 2581 + }, 2582 + "funding": { 2583 + "url": "https://github.com/sponsors/sindresorhus" 2584 + } 2585 + }, 2586 + "node_modules/proxy-addr": { 2587 + "version": "2.0.7", 2588 + "license": "MIT", 2589 + "dependencies": { 2590 + "forwarded": "0.2.0", 2591 + "ipaddr.js": "1.9.1" 2592 + }, 2593 + "engines": { 2594 + "node": ">= 0.10" 2595 + } 2596 + }, 2597 + "node_modules/proxy-from-env": { 2598 + "version": "1.1.0", 2599 + "license": "MIT" 2600 + }, 2601 + "node_modules/pure-rand": { 2602 + "version": "6.1.0", 2603 + "funding": [ 2604 + { 2605 + "type": "individual", 2606 + "url": "https://github.com/sponsors/dubzzz" 2607 + }, 2608 + { 2609 + "type": "opencollective", 2610 + "url": "https://opencollective.com/fast-check" 2611 + } 2612 + ], 2613 + "license": "MIT" 2614 + }, 2615 + "node_modules/qs": { 2616 + "version": "6.15.0", 2617 + "license": "BSD-3-Clause", 2618 + "dependencies": { 2619 + "side-channel": "^1.1.0" 2620 + }, 2621 + "engines": { 2622 + "node": ">=0.6" 2623 + }, 2624 + "funding": { 2625 + "url": "https://github.com/sponsors/ljharb" 2626 + } 2627 + }, 2628 + "node_modules/queue-microtask": { 2629 + "version": "1.2.3", 2630 + "dev": true, 2631 + "funding": [ 2632 + { 2633 + "type": "github", 2634 + "url": "https://github.com/sponsors/feross" 2635 + }, 2636 + { 2637 + "type": "patreon", 2638 + "url": "https://www.patreon.com/feross" 2639 + }, 2640 + { 2641 + "type": "consulting", 2642 + "url": "https://feross.org/support" 2643 + } 2644 + ], 2645 + "license": "MIT" 2646 + }, 2647 + "node_modules/range-parser": { 2648 + "version": "1.2.1", 2649 + "license": "MIT", 2650 + "engines": { 2651 + "node": ">= 0.6" 2652 + } 2653 + }, 2654 + "node_modules/raw-body": { 2655 + "version": "3.0.2", 2656 + "license": "MIT", 2657 + "dependencies": { 2658 + "bytes": "~3.1.2", 2659 + "http-errors": "~2.0.1", 2660 + "iconv-lite": "~0.7.0", 2661 + "unpipe": "~1.0.0" 2662 + }, 2663 + "engines": { 2664 + "node": ">= 0.10" 2665 + } 2666 + }, 2667 + "node_modules/resolve": { 2668 + "version": "1.22.11", 2669 + "dev": true, 2670 + "license": "MIT", 2671 + "dependencies": { 2672 + "is-core-module": "^2.16.1", 2673 + "path-parse": "^1.0.7", 2674 + "supports-preserve-symlinks-flag": "^1.0.0" 2675 + }, 2676 + "bin": { 2677 + "resolve": "bin/resolve" 2678 + }, 2679 + "engines": { 2680 + "node": ">= 0.4" 2681 + }, 2682 + "funding": { 2683 + "url": "https://github.com/sponsors/ljharb" 2684 + } 2685 + }, 2686 + "node_modules/resolve-pkg-maps": { 2687 + "version": "1.0.0", 2688 + "dev": true, 2689 + "license": "MIT", 2690 + "funding": { 2691 + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 2692 + } 2693 + }, 2694 + "node_modules/reusify": { 2695 + "version": "1.1.0", 2696 + "dev": true, 2697 + "license": "MIT", 2698 + "engines": { 2699 + "iojs": ">=1.0.0", 2700 + "node": ">=0.10.0" 2701 + } 2702 + }, 2703 + "node_modules/rollup": { 2704 + "version": "4.59.0", 2705 + "dev": true, 2706 + "license": "MIT", 2707 + "peer": true, 2708 + "dependencies": { 2709 + "@types/estree": "1.0.8" 2710 + }, 2711 + "bin": { 2712 + "rollup": "dist/bin/rollup" 2713 + }, 2714 + "engines": { 2715 + "node": ">=18.0.0", 2716 + "npm": ">=8.0.0" 2717 + }, 2718 + "optionalDependencies": { 2719 + "@rollup/rollup-android-arm-eabi": "4.59.0", 2720 + "@rollup/rollup-android-arm64": "4.59.0", 2721 + "@rollup/rollup-darwin-arm64": "4.59.0", 2722 + "@rollup/rollup-darwin-x64": "4.59.0", 2723 + "@rollup/rollup-freebsd-arm64": "4.59.0", 2724 + "@rollup/rollup-freebsd-x64": "4.59.0", 2725 + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", 2726 + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", 2727 + "@rollup/rollup-linux-arm64-gnu": "4.59.0", 2728 + "@rollup/rollup-linux-arm64-musl": "4.59.0", 2729 + "@rollup/rollup-linux-loong64-gnu": "4.59.0", 2730 + "@rollup/rollup-linux-loong64-musl": "4.59.0", 2731 + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", 2732 + "@rollup/rollup-linux-ppc64-musl": "4.59.0", 2733 + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", 2734 + "@rollup/rollup-linux-riscv64-musl": "4.59.0", 2735 + "@rollup/rollup-linux-s390x-gnu": "4.59.0", 2736 + "@rollup/rollup-linux-x64-gnu": "4.59.0", 2737 + "@rollup/rollup-linux-x64-musl": "4.59.0", 2738 + "@rollup/rollup-openbsd-x64": "4.59.0", 2739 + "@rollup/rollup-openharmony-arm64": "4.59.0", 2740 + "@rollup/rollup-win32-arm64-msvc": "4.59.0", 2741 + "@rollup/rollup-win32-ia32-msvc": "4.59.0", 2742 + "@rollup/rollup-win32-x64-gnu": "4.59.0", 2743 + "@rollup/rollup-win32-x64-msvc": "4.59.0", 2744 + "fsevents": "~2.3.2" 2745 + } 2746 + }, 2747 + "node_modules/rollup-plugin-import-trace": { 2748 + "version": "1.0.1", 2749 + "dev": true, 2750 + "license": "MIT", 2751 + "engines": { 2752 + "node": ">=20.20.0" 2753 + }, 2754 + "funding": { 2755 + "url": "https://github.com/privatenumber/rollup-plugin-import-trace?sponsor=1" 2756 + }, 2757 + "peerDependencies": { 2758 + "rollup": "^3.0.0 || ^4.0.0", 2759 + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" 2760 + }, 2761 + "peerDependenciesMeta": { 2762 + "rollup": { 2763 + "optional": true 2764 + }, 2765 + "vite": { 2766 + "optional": true 2767 + } 2768 + } 2769 + }, 2770 + "node_modules/rollup-pluginutils": { 2771 + "version": "2.8.2", 2772 + "dev": true, 2773 + "license": "MIT", 2774 + "dependencies": { 2775 + "estree-walker": "^0.6.1" 2776 + } 2777 + }, 2778 + "node_modules/rollup-pluginutils/node_modules/estree-walker": { 2779 + "version": "0.6.1", 2780 + "dev": true, 2781 + "license": "MIT" 2782 + }, 2783 + "node_modules/router": { 2784 + "version": "2.2.0", 2785 + "license": "MIT", 2786 + "dependencies": { 2787 + "debug": "^4.4.0", 2788 + "depd": "^2.0.0", 2789 + "is-promise": "^4.0.0", 2790 + "parseurl": "^1.3.3", 2791 + "path-to-regexp": "^8.0.0" 2792 + }, 2793 + "engines": { 2794 + "node": ">= 18" 2795 + } 2796 + }, 2797 + "node_modules/run-applescript": { 2798 + "version": "7.1.0", 2799 + "license": "MIT", 2800 + "engines": { 2801 + "node": ">=18" 2802 + }, 2803 + "funding": { 2804 + "url": "https://github.com/sponsors/sindresorhus" 2805 + } 2806 + }, 2807 + "node_modules/run-parallel": { 2808 + "version": "1.2.0", 2809 + "dev": true, 2810 + "funding": [ 2811 + { 2812 + "type": "github", 2813 + "url": "https://github.com/sponsors/feross" 2814 + }, 2815 + { 2816 + "type": "patreon", 2817 + "url": "https://www.patreon.com/feross" 2818 + }, 2819 + { 2820 + "type": "consulting", 2821 + "url": "https://feross.org/support" 2822 + } 2823 + ], 2824 + "license": "MIT", 2825 + "dependencies": { 2826 + "queue-microtask": "^1.2.2" 2827 + } 2828 + }, 2829 + "node_modules/safer-buffer": { 2830 + "version": "2.1.2", 2831 + "license": "MIT" 2832 + }, 2833 + "node_modules/send": { 2834 + "version": "1.2.1", 2835 + "license": "MIT", 2836 + "dependencies": { 2837 + "debug": "^4.4.3", 2838 + "encodeurl": "^2.0.0", 2839 + "escape-html": "^1.0.3", 2840 + "etag": "^1.8.1", 2841 + "fresh": "^2.0.0", 2842 + "http-errors": "^2.0.1", 2843 + "mime-types": "^3.0.2", 2844 + "ms": "^2.1.3", 2845 + "on-finished": "^2.4.1", 2846 + "range-parser": "^1.2.1", 2847 + "statuses": "^2.0.2" 2848 + }, 2849 + "engines": { 2850 + "node": ">= 18" 2851 + }, 2852 + "funding": { 2853 + "type": "opencollective", 2854 + "url": "https://opencollective.com/express" 2855 + } 2856 + }, 2857 + "node_modules/serve-static": { 2858 + "version": "2.2.1", 2859 + "license": "MIT", 2860 + "dependencies": { 2861 + "encodeurl": "^2.0.0", 2862 + "escape-html": "^1.0.3", 2863 + "parseurl": "^1.3.3", 2864 + "send": "^1.2.0" 2865 + }, 2866 + "engines": { 2867 + "node": ">= 18" 2868 + }, 2869 + "funding": { 2870 + "type": "opencollective", 2871 + "url": "https://opencollective.com/express" 2872 + } 2873 + }, 2874 + "node_modules/setprototypeof": { 2875 + "version": "1.2.0", 2876 + "license": "ISC" 2877 + }, 2878 + "node_modules/side-channel": { 2879 + "version": "1.1.0", 2880 + "license": "MIT", 2881 + "dependencies": { 2882 + "es-errors": "^1.3.0", 2883 + "object-inspect": "^1.13.3", 2884 + "side-channel-list": "^1.0.0", 2885 + "side-channel-map": "^1.0.1", 2886 + "side-channel-weakmap": "^1.0.2" 2887 + }, 2888 + "engines": { 2889 + "node": ">= 0.4" 2890 + }, 2891 + "funding": { 2892 + "url": "https://github.com/sponsors/ljharb" 2893 + } 2894 + }, 2895 + "node_modules/side-channel-list": { 2896 + "version": "1.0.0", 2897 + "license": "MIT", 2898 + "dependencies": { 2899 + "es-errors": "^1.3.0", 2900 + "object-inspect": "^1.13.3" 2901 + }, 2902 + "engines": { 2903 + "node": ">= 0.4" 2904 + }, 2905 + "funding": { 2906 + "url": "https://github.com/sponsors/ljharb" 2907 + } 2908 + }, 2909 + "node_modules/side-channel-map": { 2910 + "version": "1.0.1", 2911 + "license": "MIT", 2912 + "dependencies": { 2913 + "call-bound": "^1.0.2", 2914 + "es-errors": "^1.3.0", 2915 + "get-intrinsic": "^1.2.5", 2916 + "object-inspect": "^1.13.3" 2917 + }, 2918 + "engines": { 2919 + "node": ">= 0.4" 2920 + }, 2921 + "funding": { 2922 + "url": "https://github.com/sponsors/ljharb" 2923 + } 2924 + }, 2925 + "node_modules/side-channel-weakmap": { 2926 + "version": "1.0.2", 2927 + "license": "MIT", 2928 + "dependencies": { 2929 + "call-bound": "^1.0.2", 2930 + "es-errors": "^1.3.0", 2931 + "get-intrinsic": "^1.2.5", 2932 + "object-inspect": "^1.13.3", 2933 + "side-channel-map": "^1.0.1" 2934 + }, 2935 + "engines": { 2936 + "node": ">= 0.4" 2937 + }, 2938 + "funding": { 2939 + "url": "https://github.com/sponsors/ljharb" 2940 + } 2941 + }, 2942 + "node_modules/signal-exit": { 2943 + "version": "4.1.0", 2944 + "license": "ISC", 2945 + "engines": { 2946 + "node": ">=14" 2947 + }, 2948 + "funding": { 2949 + "url": "https://github.com/sponsors/isaacs" 2950 + } 2951 + }, 2952 + "node_modules/statuses": { 2953 + "version": "2.0.2", 2954 + "license": "MIT", 2955 + "engines": { 2956 + "node": ">= 0.8" 2957 + } 2958 + }, 2959 + "node_modules/string-width": { 2960 + "version": "4.2.3", 2961 + "license": "MIT", 2962 + "dependencies": { 2963 + "emoji-regex": "^8.0.0", 2964 + "is-fullwidth-code-point": "^3.0.0", 2965 + "strip-ansi": "^6.0.1" 2966 + }, 2967 + "engines": { 2968 + "node": ">=8" 2969 + } 2970 + }, 2971 + "node_modules/strip-ansi": { 2972 + "version": "6.0.1", 2973 + "license": "MIT", 2974 + "dependencies": { 2975 + "ansi-regex": "^5.0.1" 2976 + }, 2977 + "engines": { 2978 + "node": ">=8" 2979 + } 2980 + }, 2981 + "node_modules/supports-preserve-symlinks-flag": { 2982 + "version": "1.0.0", 2983 + "dev": true, 2984 + "license": "MIT", 2985 + "engines": { 2986 + "node": ">= 0.4" 2987 + }, 2988 + "funding": { 2989 + "url": "https://github.com/sponsors/ljharb" 2990 + } 2991 + }, 2992 + "node_modules/to-regex-range": { 2993 + "version": "5.0.1", 2994 + "dev": true, 2995 + "license": "MIT", 2996 + "dependencies": { 2997 + "is-number": "^7.0.0" 2998 + }, 2999 + "engines": { 3000 + "node": ">=8.0" 3001 + } 3002 + }, 3003 + "node_modules/toidentifier": { 3004 + "version": "1.0.1", 3005 + "license": "MIT", 3006 + "engines": { 3007 + "node": ">=0.6" 3008 + } 3009 + }, 3010 + "node_modules/tslib": { 3011 + "version": "2.8.1", 3012 + "license": "0BSD" 3013 + }, 3014 + "node_modules/tsx": { 3015 + "version": "4.21.0", 3016 + "dev": true, 3017 + "license": "MIT", 3018 + "dependencies": { 3019 + "esbuild": "~0.27.0", 3020 + "get-tsconfig": "^4.7.5" 3021 + }, 3022 + "bin": { 3023 + "tsx": "dist/cli.mjs" 3024 + }, 3025 + "engines": { 3026 + "node": ">=18.0.0" 3027 + }, 3028 + "optionalDependencies": { 3029 + "fsevents": "~2.3.3" 3030 + } 3031 + }, 3032 + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { 3033 + "version": "0.27.4", 3034 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", 3035 + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", 3036 + "cpu": [ 3037 + "ppc64" 3038 + ], 3039 + "dev": true, 3040 + "license": "MIT", 3041 + "optional": true, 3042 + "os": [ 3043 + "aix" 3044 + ], 3045 + "engines": { 3046 + "node": ">=18" 3047 + } 3048 + }, 3049 + "node_modules/tsx/node_modules/@esbuild/android-arm": { 3050 + "version": "0.27.4", 3051 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", 3052 + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", 3053 + "cpu": [ 3054 + "arm" 3055 + ], 3056 + "dev": true, 3057 + "license": "MIT", 3058 + "optional": true, 3059 + "os": [ 3060 + "android" 3061 + ], 3062 + "engines": { 3063 + "node": ">=18" 3064 + } 3065 + }, 3066 + "node_modules/tsx/node_modules/@esbuild/android-arm64": { 3067 + "version": "0.27.4", 3068 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", 3069 + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", 3070 + "cpu": [ 3071 + "arm64" 3072 + ], 3073 + "dev": true, 3074 + "license": "MIT", 3075 + "optional": true, 3076 + "os": [ 3077 + "android" 3078 + ], 3079 + "engines": { 3080 + "node": ">=18" 3081 + } 3082 + }, 3083 + "node_modules/tsx/node_modules/@esbuild/android-x64": { 3084 + "version": "0.27.4", 3085 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", 3086 + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", 3087 + "cpu": [ 3088 + "x64" 3089 + ], 3090 + "dev": true, 3091 + "license": "MIT", 3092 + "optional": true, 3093 + "os": [ 3094 + "android" 3095 + ], 3096 + "engines": { 3097 + "node": ">=18" 3098 + } 3099 + }, 3100 + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { 3101 + "version": "0.27.4", 3102 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", 3103 + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", 3104 + "cpu": [ 3105 + "x64" 3106 + ], 3107 + "dev": true, 3108 + "license": "MIT", 3109 + "optional": true, 3110 + "os": [ 3111 + "darwin" 3112 + ], 3113 + "engines": { 3114 + "node": ">=18" 3115 + } 3116 + }, 3117 + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { 3118 + "version": "0.27.4", 3119 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", 3120 + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", 3121 + "cpu": [ 3122 + "arm64" 3123 + ], 3124 + "dev": true, 3125 + "license": "MIT", 3126 + "optional": true, 3127 + "os": [ 3128 + "freebsd" 3129 + ], 3130 + "engines": { 3131 + "node": ">=18" 3132 + } 3133 + }, 3134 + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { 3135 + "version": "0.27.4", 3136 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", 3137 + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", 3138 + "cpu": [ 3139 + "x64" 3140 + ], 3141 + "dev": true, 3142 + "license": "MIT", 3143 + "optional": true, 3144 + "os": [ 3145 + "freebsd" 3146 + ], 3147 + "engines": { 3148 + "node": ">=18" 3149 + } 3150 + }, 3151 + "node_modules/tsx/node_modules/@esbuild/linux-arm": { 3152 + "version": "0.27.4", 3153 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", 3154 + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", 3155 + "cpu": [ 3156 + "arm" 3157 + ], 3158 + "dev": true, 3159 + "license": "MIT", 3160 + "optional": true, 3161 + "os": [ 3162 + "linux" 3163 + ], 3164 + "engines": { 3165 + "node": ">=18" 3166 + } 3167 + }, 3168 + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { 3169 + "version": "0.27.4", 3170 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", 3171 + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", 3172 + "cpu": [ 3173 + "arm64" 3174 + ], 3175 + "dev": true, 3176 + "license": "MIT", 3177 + "optional": true, 3178 + "os": [ 3179 + "linux" 3180 + ], 3181 + "engines": { 3182 + "node": ">=18" 3183 + } 3184 + }, 3185 + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { 3186 + "version": "0.27.4", 3187 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", 3188 + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", 3189 + "cpu": [ 3190 + "ia32" 3191 + ], 3192 + "dev": true, 3193 + "license": "MIT", 3194 + "optional": true, 3195 + "os": [ 3196 + "linux" 3197 + ], 3198 + "engines": { 3199 + "node": ">=18" 3200 + } 3201 + }, 3202 + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { 3203 + "version": "0.27.4", 3204 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", 3205 + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", 3206 + "cpu": [ 3207 + "loong64" 3208 + ], 3209 + "dev": true, 3210 + "license": "MIT", 3211 + "optional": true, 3212 + "os": [ 3213 + "linux" 3214 + ], 3215 + "engines": { 3216 + "node": ">=18" 3217 + } 3218 + }, 3219 + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { 3220 + "version": "0.27.4", 3221 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", 3222 + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", 3223 + "cpu": [ 3224 + "mips64el" 3225 + ], 3226 + "dev": true, 3227 + "license": "MIT", 3228 + "optional": true, 3229 + "os": [ 3230 + "linux" 3231 + ], 3232 + "engines": { 3233 + "node": ">=18" 3234 + } 3235 + }, 3236 + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { 3237 + "version": "0.27.4", 3238 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", 3239 + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", 3240 + "cpu": [ 3241 + "ppc64" 3242 + ], 3243 + "dev": true, 3244 + "license": "MIT", 3245 + "optional": true, 3246 + "os": [ 3247 + "linux" 3248 + ], 3249 + "engines": { 3250 + "node": ">=18" 3251 + } 3252 + }, 3253 + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { 3254 + "version": "0.27.4", 3255 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", 3256 + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", 3257 + "cpu": [ 3258 + "riscv64" 3259 + ], 3260 + "dev": true, 3261 + "license": "MIT", 3262 + "optional": true, 3263 + "os": [ 3264 + "linux" 3265 + ], 3266 + "engines": { 3267 + "node": ">=18" 3268 + } 3269 + }, 3270 + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { 3271 + "version": "0.27.4", 3272 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", 3273 + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", 3274 + "cpu": [ 3275 + "s390x" 3276 + ], 3277 + "dev": true, 3278 + "license": "MIT", 3279 + "optional": true, 3280 + "os": [ 3281 + "linux" 3282 + ], 3283 + "engines": { 3284 + "node": ">=18" 3285 + } 3286 + }, 3287 + "node_modules/tsx/node_modules/@esbuild/linux-x64": { 3288 + "version": "0.27.4", 3289 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", 3290 + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", 3291 + "cpu": [ 3292 + "x64" 3293 + ], 3294 + "dev": true, 3295 + "license": "MIT", 3296 + "optional": true, 3297 + "os": [ 3298 + "linux" 3299 + ], 3300 + "engines": { 3301 + "node": ">=18" 3302 + } 3303 + }, 3304 + "node_modules/tsx/node_modules/@esbuild/netbsd-arm64": { 3305 + "version": "0.27.4", 3306 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", 3307 + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", 3308 + "cpu": [ 3309 + "arm64" 3310 + ], 3311 + "dev": true, 3312 + "license": "MIT", 3313 + "optional": true, 3314 + "os": [ 3315 + "netbsd" 3316 + ], 3317 + "engines": { 3318 + "node": ">=18" 3319 + } 3320 + }, 3321 + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { 3322 + "version": "0.27.4", 3323 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", 3324 + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", 3325 + "cpu": [ 3326 + "x64" 3327 + ], 3328 + "dev": true, 3329 + "license": "MIT", 3330 + "optional": true, 3331 + "os": [ 3332 + "netbsd" 3333 + ], 3334 + "engines": { 3335 + "node": ">=18" 3336 + } 3337 + }, 3338 + "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { 3339 + "version": "0.27.4", 3340 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", 3341 + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", 3342 + "cpu": [ 3343 + "arm64" 3344 + ], 3345 + "dev": true, 3346 + "license": "MIT", 3347 + "optional": true, 3348 + "os": [ 3349 + "openbsd" 3350 + ], 3351 + "engines": { 3352 + "node": ">=18" 3353 + } 3354 + }, 3355 + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { 3356 + "version": "0.27.4", 3357 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", 3358 + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", 3359 + "cpu": [ 3360 + "x64" 3361 + ], 3362 + "dev": true, 3363 + "license": "MIT", 3364 + "optional": true, 3365 + "os": [ 3366 + "openbsd" 3367 + ], 3368 + "engines": { 3369 + "node": ">=18" 3370 + } 3371 + }, 3372 + "node_modules/tsx/node_modules/@esbuild/openharmony-arm64": { 3373 + "version": "0.27.4", 3374 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", 3375 + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", 3376 + "cpu": [ 3377 + "arm64" 3378 + ], 3379 + "dev": true, 3380 + "license": "MIT", 3381 + "optional": true, 3382 + "os": [ 3383 + "openharmony" 3384 + ], 3385 + "engines": { 3386 + "node": ">=18" 3387 + } 3388 + }, 3389 + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { 3390 + "version": "0.27.4", 3391 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", 3392 + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", 3393 + "cpu": [ 3394 + "x64" 3395 + ], 3396 + "dev": true, 3397 + "license": "MIT", 3398 + "optional": true, 3399 + "os": [ 3400 + "sunos" 3401 + ], 3402 + "engines": { 3403 + "node": ">=18" 3404 + } 3405 + }, 3406 + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { 3407 + "version": "0.27.4", 3408 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", 3409 + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", 3410 + "cpu": [ 3411 + "arm64" 3412 + ], 3413 + "dev": true, 3414 + "license": "MIT", 3415 + "optional": true, 3416 + "os": [ 3417 + "win32" 3418 + ], 3419 + "engines": { 3420 + "node": ">=18" 3421 + } 3422 + }, 3423 + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { 3424 + "version": "0.27.4", 3425 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", 3426 + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", 3427 + "cpu": [ 3428 + "ia32" 3429 + ], 3430 + "dev": true, 3431 + "license": "MIT", 3432 + "optional": true, 3433 + "os": [ 3434 + "win32" 3435 + ], 3436 + "engines": { 3437 + "node": ">=18" 3438 + } 3439 + }, 3440 + "node_modules/tsx/node_modules/@esbuild/win32-x64": { 3441 + "version": "0.27.4", 3442 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", 3443 + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", 3444 + "cpu": [ 3445 + "x64" 3446 + ], 3447 + "dev": true, 3448 + "license": "MIT", 3449 + "optional": true, 3450 + "os": [ 3451 + "win32" 3452 + ], 3453 + "engines": { 3454 + "node": ">=18" 3455 + } 3456 + }, 3457 + "node_modules/tsx/node_modules/esbuild": { 3458 + "version": "0.27.4", 3459 + "dev": true, 3460 + "hasInstallScript": true, 3461 + "license": "MIT", 3462 + "bin": { 3463 + "esbuild": "bin/esbuild" 3464 + }, 3465 + "engines": { 3466 + "node": ">=18" 3467 + }, 3468 + "optionalDependencies": { 3469 + "@esbuild/aix-ppc64": "0.27.4", 3470 + "@esbuild/android-arm": "0.27.4", 3471 + "@esbuild/android-arm64": "0.27.4", 3472 + "@esbuild/android-x64": "0.27.4", 3473 + "@esbuild/darwin-arm64": "0.27.4", 3474 + "@esbuild/darwin-x64": "0.27.4", 3475 + "@esbuild/freebsd-arm64": "0.27.4", 3476 + "@esbuild/freebsd-x64": "0.27.4", 3477 + "@esbuild/linux-arm": "0.27.4", 3478 + "@esbuild/linux-arm64": "0.27.4", 3479 + "@esbuild/linux-ia32": "0.27.4", 3480 + "@esbuild/linux-loong64": "0.27.4", 3481 + "@esbuild/linux-mips64el": "0.27.4", 3482 + "@esbuild/linux-ppc64": "0.27.4", 3483 + "@esbuild/linux-riscv64": "0.27.4", 3484 + "@esbuild/linux-s390x": "0.27.4", 3485 + "@esbuild/linux-x64": "0.27.4", 3486 + "@esbuild/netbsd-arm64": "0.27.4", 3487 + "@esbuild/netbsd-x64": "0.27.4", 3488 + "@esbuild/openbsd-arm64": "0.27.4", 3489 + "@esbuild/openbsd-x64": "0.27.4", 3490 + "@esbuild/openharmony-arm64": "0.27.4", 3491 + "@esbuild/sunos-x64": "0.27.4", 3492 + "@esbuild/win32-arm64": "0.27.4", 3493 + "@esbuild/win32-ia32": "0.27.4", 3494 + "@esbuild/win32-x64": "0.27.4" 3495 + } 3496 + }, 3497 + "node_modules/tsx/node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { 3498 + "version": "0.27.4", 3499 + "cpu": [ 3500 + "arm64" 3501 + ], 3502 + "dev": true, 3503 + "license": "MIT", 3504 + "optional": true, 3505 + "os": [ 3506 + "darwin" 3507 + ], 3508 + "engines": { 3509 + "node": ">=18" 3510 + } 3511 + }, 3512 + "node_modules/type-is": { 3513 + "version": "2.0.1", 3514 + "license": "MIT", 3515 + "dependencies": { 3516 + "content-type": "^1.0.5", 3517 + "media-typer": "^1.1.0", 3518 + "mime-types": "^3.0.0" 3519 + }, 3520 + "engines": { 3521 + "node": ">= 0.6" 3522 + } 3523 + }, 3524 + "node_modules/typescript": { 3525 + "version": "5.9.3", 3526 + "license": "Apache-2.0", 3527 + "peer": true, 3528 + "bin": { 3529 + "tsc": "bin/tsc", 3530 + "tsserver": "bin/tsserver" 3531 + }, 3532 + "engines": { 3533 + "node": ">=14.17" 3534 + } 3535 + }, 3536 + "node_modules/undici-types": { 3537 + "version": "7.18.2", 3538 + "devOptional": true, 3539 + "license": "MIT" 3540 + }, 3541 + "node_modules/unpipe": { 3542 + "version": "1.0.0", 3543 + "license": "MIT", 3544 + "engines": { 3545 + "node": ">= 0.8" 3546 + } 3547 + }, 3548 + "node_modules/vary": { 3549 + "version": "1.1.2", 3550 + "license": "MIT", 3551 + "engines": { 3552 + "node": ">= 0.8" 3553 + } 3554 + }, 3555 + "node_modules/wrappy": { 3556 + "version": "1.0.2", 3557 + "license": "ISC" 3558 + }, 3559 + "node_modules/ws": { 3560 + "version": "8.19.0", 3561 + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", 3562 + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", 3563 + "license": "MIT", 3564 + "engines": { 3565 + "node": ">=10.0.0" 3566 + }, 3567 + "peerDependencies": { 3568 + "bufferutil": "^4.0.1", 3569 + "utf-8-validate": ">=5.0.2" 3570 + }, 3571 + "peerDependenciesMeta": { 3572 + "bufferutil": { 3573 + "optional": true 3574 + }, 3575 + "utf-8-validate": { 3576 + "optional": true 3577 + } 3578 + } 3579 + }, 3580 + "node_modules/wsl-utils": { 3581 + "version": "0.3.1", 3582 + "license": "MIT", 3583 + "dependencies": { 3584 + "is-wsl": "^3.1.0", 3585 + "powershell-utils": "^0.1.0" 3586 + }, 3587 + "engines": { 3588 + "node": ">=20" 3589 + }, 3590 + "funding": { 3591 + "url": "https://github.com/sponsors/sindresorhus" 3592 + } 3593 + }, 3594 + "node_modules/yaml": { 3595 + "version": "2.8.2", 3596 + "dev": true, 3597 + "license": "ISC", 3598 + "bin": { 3599 + "yaml": "bin.mjs" 3600 + }, 3601 + "engines": { 3602 + "node": ">= 14.6" 3603 + }, 3604 + "funding": { 3605 + "url": "https://github.com/sponsors/eemeli" 3606 + } 3607 + }, 3608 + "node_modules/zod": { 3609 + "version": "4.3.6", 3610 + "license": "MIT", 3611 + "funding": { 3612 + "url": "https://github.com/sponsors/colinhacks" 3613 + } 3614 + } 3615 + } 3616 + }
+2
apps/cli/package.json
··· 26 26 "devDependencies": { 27 27 "@types/cors": "^2.8.19", 28 28 "@types/express": "^5.0.6", 29 + "@types/ws": "^8.18.1", 29 30 "pkgroll": "^2.27.0", 30 31 "tsx": "^4.21.0" 31 32 }, ··· 43 44 "express": "^5.2.1", 44 45 "node-pty": "^1.1.0", 45 46 "open": "^11.0.0", 47 + "ws": "^8.19.0", 46 48 "zod": "^4.3.6" 47 49 } 48 50 }
+3 -3
apps/cli/src/cmd/env.ts
··· 1 - export async function listEnvs(sandboxId: string) {} 1 + export async function listEnvs(sandbox: string) {} 2 2 3 - export async function putEnv(sandboxId: string, key: string, value: string) {} 3 + export async function putEnv(sandbox: string, key: string, value: string) {} 4 4 5 - export async function deleteEnv(sandboxId: string, key: string) {} 5 + export async function deleteEnv(sandbox: string, key: string) {}
+261 -1
apps/cli/src/cmd/ssh.ts
··· 1 - async function ssh() {} 1 + import WebSocket from "ws"; 2 + import * as pty from "node-pty"; 3 + import chalk from "chalk"; 4 + import consola from "consola"; 5 + import getAccessToken from "../lib/getAccessToken"; 6 + import { client } from "../client"; 7 + import { env } from "../lib/env"; 8 + import type { Sandbox } from "../types/sandbox"; 9 + import type { Profile } from "../types/profile"; 10 + import type { RawData } from "ws"; 11 + 12 + type ServerMessage = 13 + | { type: "connected"; sessionId: string } 14 + | { type: "output"; data: string } 15 + | { type: "error"; message: string }; 16 + 17 + type ClientMessage = 18 + | { type: "input"; data: string } 19 + | { type: "resize"; cols: number; rows: number }; 20 + 21 + function send(ws: WebSocket, msg: ClientMessage) { 22 + if (ws.readyState === WebSocket.OPEN) { 23 + ws.send(JSON.stringify(msg)); 24 + } 25 + } 26 + 27 + /** 28 + * Resolve the Cloudflare worker URL for a given baseSandbox (template) name. 29 + * 30 + * The web app constructs the URL with: 31 + * CF_URL.replace("sbx", worker).replace("claude-code", "claudecode") 32 + * 33 + * The production CF_URL is "https://sbx.pocketenv.io", so for a worker named 34 + * "claude-code" the final URL becomes "https://claudecode.pocketenv.io". 35 + * We replicate that logic here. 36 + */ 37 + function resolveWorkerUrl(baseSandbox: string, cfUrl: string): string { 38 + return cfUrl.replace("sbx", baseSandbox).replace("claude-code", "claudecode"); 39 + } 40 + 41 + async function ssh(sandboxName: string | undefined) { 42 + const token = await getAccessToken(); 43 + const authToken = env.POCKETENV_TOKEN || token; 44 + 45 + let sandbox: Sandbox; 46 + 47 + if (!sandboxName) { 48 + const profile = await client.get<Profile>( 49 + "/xrpc/io.pocketenv.actor.getProfile", 50 + { headers: { Authorization: `Bearer ${authToken}` } }, 51 + ); 52 + 53 + const response = await client.get<{ sandboxes: Sandbox[] }>( 54 + "/xrpc/io.pocketenv.actor.getActorSandboxes", 55 + { 56 + params: { did: profile.data.did, offset: 0, limit: 100 }, 57 + headers: { Authorization: `Bearer ${authToken}` }, 58 + }, 59 + ); 60 + 61 + const runningSandboxes = response.data.sandboxes.filter( 62 + (s) => s.status === "RUNNING" && s.provider === "cloudflare", 63 + ); 64 + 65 + if (runningSandboxes.length === 0) { 66 + consola.error( 67 + `No running Cloudflare sandboxes found. ` + 68 + `Start one with ${chalk.greenBright("pocketenv start <sandbox>")} first.`, 69 + ); 70 + process.exit(1); 71 + } 72 + 73 + sandbox = runningSandboxes[0] as Sandbox; 74 + consola.info(`Connecting to sandbox ${chalk.greenBright(sandbox.name)}…`); 75 + } else { 76 + const response = await client.get<{ sandbox: Sandbox | null }>( 77 + "/xrpc/io.pocketenv.sandbox.getSandbox", 78 + { 79 + params: { id: sandboxName }, 80 + headers: { Authorization: `Bearer ${authToken}` }, 81 + }, 82 + ); 83 + 84 + if (!response.data.sandbox) { 85 + consola.error(`Sandbox ${chalk.yellowBright(sandboxName)} not found.`); 86 + process.exit(1); 87 + } 88 + 89 + sandbox = response.data.sandbox; 90 + } 91 + 92 + if (sandbox.provider !== "cloudflare") { 93 + consola.error( 94 + `Sandbox ${chalk.yellowBright(sandbox.name)} uses provider ` + 95 + `${chalk.cyan(sandbox.provider)}, but this command only supports ` + 96 + `${chalk.cyan("cloudflare")} sandboxes.`, 97 + ); 98 + process.exit(1); 99 + } 100 + 101 + if (sandbox.status !== "RUNNING") { 102 + consola.error( 103 + `Sandbox ${chalk.yellowBright(sandbox.name)} is not running. ` + 104 + `Start it with ${chalk.greenBright(`pocketenv start ${sandbox.name}`)}.`, 105 + ); 106 + process.exit(1); 107 + } 108 + 109 + const tokenResponse = await client.get<{ token?: string }>( 110 + "/xrpc/io.pocketenv.actor.getTerminalToken", 111 + { headers: { Authorization: `Bearer ${authToken}` } }, 112 + ); 113 + 114 + const terminalToken = tokenResponse.data.token; 115 + if (!terminalToken) { 116 + consola.error("Failed to obtain a terminal token."); 117 + process.exit(1); 118 + } 119 + 120 + const cfBaseUrl = env.POCKETENV_CF_URL; 121 + 122 + const workerUrl = resolveWorkerUrl(sandbox.baseSandbox, cfBaseUrl); 123 + 124 + const wsBase = workerUrl.replace(/^http/, "ws"); 125 + 126 + const wsUrl = new URL(`${wsBase}/v1/sandboxes/${sandbox.id}/ws/terminal`); 127 + wsUrl.searchParams.set("t", terminalToken); 128 + 129 + const cols = process.stdout.columns ?? 220; 130 + const rows = process.stdout.rows ?? 50; 131 + 132 + // We spawn a minimal shell just to own the PTY file descriptor for resizing 133 + // purposes. All real I/O is forwarded over the WebSocket – the local PTY is 134 + // only used so we can put stdin into raw mode and track SIGWINCH. 135 + const localPty = pty.spawn( 136 + process.platform === "win32" ? "cmd.exe" : "sh", 137 + [], 138 + { 139 + name: "xterm-256color", 140 + cols, 141 + rows, 142 + cwd: process.env.HOME ?? process.cwd(), 143 + env: process.env as Record<string, string>, 144 + }, 145 + ); 146 + 147 + consola.info( 148 + `Connecting to ${chalk.cyanBright(sandbox.name)} via Cloudflare sandbox…`, 149 + ); 150 + 151 + const ws = new WebSocket(wsUrl.toString(), { 152 + headers: { "User-Agent": "pocketenv-cli" }, 153 + }); 154 + 155 + let exiting = false; 156 + 157 + function teardown(code = 0) { 158 + if (exiting) return; 159 + exiting = true; 160 + 161 + // Restore terminal state. 162 + if (process.stdin.isTTY && process.stdin.setRawMode) { 163 + try { 164 + process.stdin.setRawMode(false); 165 + } catch { 166 + // ignore 167 + } 168 + } 169 + process.stdin.resume(); 170 + 171 + try { 172 + localPty.kill(); 173 + } catch { 174 + // already dead 175 + } 176 + 177 + if ( 178 + ws.readyState === WebSocket.OPEN || 179 + ws.readyState === WebSocket.CONNECTING 180 + ) { 181 + ws.close(1000, "client disconnect"); 182 + } 183 + 184 + process.exit(code); 185 + } 186 + 187 + ws.on("open", () => { 188 + send(ws, { type: "resize", cols, rows }); 189 + }); 190 + 191 + ws.on("message", (raw: RawData) => { 192 + let msg: ServerMessage; 193 + try { 194 + msg = JSON.parse(raw.toString()) as ServerMessage; 195 + } catch { 196 + return; 197 + } 198 + 199 + switch (msg.type) { 200 + case "connected": 201 + if (process.stdin.isTTY && process.stdin.setRawMode) { 202 + process.stdin.setRawMode(true); 203 + } 204 + process.stdin.resume(); 205 + 206 + process.stdin.on("data", (chunk: Buffer) => { 207 + const data = chunk.toString("binary"); 208 + // Ctrl-C / Ctrl-D / Ctrl-Z are forwarded as-is; the remote shell 209 + // handles them. We only intercept nothing here. 210 + send(ws, { type: "input", data }); 211 + }); 212 + 213 + process.on("SIGWINCH", () => { 214 + const newCols = process.stdout.columns ?? cols; 215 + const newRows = process.stdout.rows ?? rows; 216 + try { 217 + localPty.resize(newCols, newRows); 218 + } catch { 219 + // ignore 220 + } 221 + send(ws, { type: "resize", cols: newCols, rows: newRows }); 222 + }); 223 + break; 224 + 225 + case "output": 226 + // Remote PTY output → local stdout 227 + process.stdout.write(msg.data); 228 + break; 229 + 230 + case "error": 231 + process.stderr.write( 232 + `\r\n${chalk.red("Terminal error:")} ${msg.message}\r\n`, 233 + ); 234 + teardown(1); 235 + break; 236 + } 237 + }); 238 + 239 + ws.on("close", (code, reason) => { 240 + if (!exiting) { 241 + process.stderr.write( 242 + `\r\n${chalk.yellow("Connection closed")} (${code}${reason.length ? ` – ${reason}` : ""})\r\n`, 243 + ); 244 + teardown(0); 245 + } 246 + }); 247 + 248 + ws.on("error", (err: Error) => { 249 + consola.error("WebSocket error:", err.message); 250 + teardown(1); 251 + }); 252 + 253 + process.on("SIGINT", () => teardown(0)); 254 + process.on("SIGTERM", () => teardown(0)); 255 + 256 + // Prevent node from exiting while the WebSocket is open. 257 + await new Promise<void>((resolve) => { 258 + ws.on("close", resolve); 259 + ws.on("error", () => resolve()); 260 + }); 261 + } 2 262 3 263 export default ssh;
+2 -2
apps/cli/src/cmd/sshkeys.ts
··· 1 - export async function getSshKey(sandboxId: string) {} 1 + export async function getSshKey(sandbox: string) {} 2 2 3 - export async function putKeys(sandboxId: string) {} 3 + export async function putKeys(sandbox: string) {}
+2 -2
apps/cli/src/cmd/tailscale.ts
··· 1 - export async function putAuthKey(sandboxId: string) {} 1 + export async function putAuthKey(sandbox: string) {} 2 2 3 - export async function getTailscaleAuthKey(sandboxId: string) {} 3 + export async function getTailscaleAuthKey(sandbox: string) {}
+2 -1
apps/cli/src/index.ts
··· 43 43 program.addHelpText( 44 44 "after", 45 45 ` 46 - ${chalk.bold("\nLearn more about Pocketenv:")} https://docs.pocketenv.io 46 + ${chalk.bold("\nLearn more about Pocketenv:")} ${chalk.magentaBright("https://docs.pocketenv.io")} 47 47 ${chalk.bold("Join our Discord community:")} ${chalk.blueBright("https://discord.gg/9ada4pFUFS")} 48 + ${chalk.bold("Report bugs:")} ${chalk.greenBright("https://github.com/pocketenv-io/pocketenv/issues")} 48 49 `, 49 50 ); 50 51
+1
apps/cli/src/lib/env.ts
··· 3 3 export const env = cleanEnv(process.env, { 4 4 POCKETENV_TOKEN: str({ default: "" }), 5 5 POCKETENV_API_URL: str({ default: "https://api.pocketenv.io" }), 6 + POCKETENV_CF_URL: str({ default: "https://sbx.pocketenv.io" }), 6 7 });