From f324d4a3342643f4e7ea587b725a00d8d77225ae Mon Sep 17 00:00:00 2001 From: PylotLight Date: Wed, 27 May 2026 16:08:56 +1000 Subject: [PATCH 01/11] feat: Upgrade to Electron 42/Node 24, and some bug fixes --- AGENTS.md | 1 + apps/desktop/electron-builder.yml | 2 +- apps/desktop/electron/app-store.ts | 1 + apps/desktop/package.json | 5 +- bun.lock | 38 +++++------ package.json | 5 ++ pnpm-lock.yaml | 104 +++++++++++++---------------- 7 files changed, 72 insertions(+), 84 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index cc218029..7b136661 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,6 +8,7 @@ These rules apply for the full session. - Do not create or switch to new branches to start work unless the user explicitly asks; respect the current branch or worktree as intentional. - Commit in small focused checkpoints; don’t batch unrelated changes. - Run `simplify` before closing non-trivial implementation work. +- Avoid broad `grep` searches; keep them focused on specific directories or patterns to maintain performance. ## Product - This repo is building a Codex-style desktop app for `pi`; preserve that product direction. diff --git a/apps/desktop/electron-builder.yml b/apps/desktop/electron-builder.yml index f175455d..121e48a8 100644 --- a/apps/desktop/electron-builder.yml +++ b/apps/desktop/electron-builder.yml @@ -1,7 +1,7 @@ appId: com.pi-gui.desktop productName: pi-gui copyright: Copyright 2026 Matthew Lam -electronVersion: 34.5.8 +electronVersion: 42.2.0 directories: output: release diff --git a/apps/desktop/electron/app-store.ts b/apps/desktop/electron/app-store.ts index 111d4dd2..679c1e40 100644 --- a/apps/desktop/electron/app-store.ts +++ b/apps/desktop/electron/app-store.ts @@ -777,6 +777,7 @@ export class DesktopAppStore implements AppStoreInternals { workspaceOrder: persisted.workspaceOrder ?? [], sidebarCollapsed: persisted.sidebarCollapsed ?? this.state.sidebarCollapsed, allowMultiple: persisted.allowMultiple ?? this.state.allowMultiple, + enableTransparency: persisted.enableTransparency ?? this.state.enableTransparency, }; await this.migrateLegacyPersistence(persisted); this.sessionState.lastViewedAtBySession.clear(); diff --git a/apps/desktop/package.json b/apps/desktop/package.json index a73da1bf..39d3f71b 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,6 +1,7 @@ { "name": "@pi-gui/desktop", "private": true, + "trustedDependencies": ["electron", "node-pty"], "version": "0.1.0", "author": "Matthew Lam", "license": "MIT", @@ -113,12 +114,12 @@ "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", - "@types/node": "^22.13.0", + "@types/node": "^24.0.0", "@types/react": "^19.1.0", "@types/react-dom": "^19.1.0", "@vitejs/plugin-react": "^4.3.4", "cross-env": "^7.0.3", - "electron": "^34.3.0", + "electron": "^42.2.0", "electron-builder": "^26.8.1", "electron-vite": "^5.0.0", "playwright": "^1.58.2", diff --git a/bun.lock b/bun.lock index 97ac5e57..e73f0110 100644 --- a/bun.lock +++ b/bun.lock @@ -52,12 +52,12 @@ "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", - "@types/node": "^22.13.0", + "@types/node": "^24.0.0", "@types/react": "^19.1.0", "@types/react-dom": "^19.1.0", "@vitejs/plugin-react": "^4.3.4", "cross-env": "^7.0.3", - "electron": "^34.3.0", + "electron": "^42.2.0", "electron-builder": "^26.8.1", "electron-vite": "^5.0.0", "playwright": "^1.58.2", @@ -112,6 +112,10 @@ }, }, }, + "trustedDependencies": [ + "electron", + "node-pty", + ], "packages": { "7zip-bin": ["7zip-bin@5.2.0", "", {}, "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A=="], @@ -255,7 +259,7 @@ "@electron/fuses": ["@electron/fuses@1.8.0", "", { "dependencies": { "chalk": "4.1.2", "fs-extra": "9.1.0", "minimist": "1.2.8" }, "bin": { "electron-fuses": "dist/bin.js" } }, "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw=="], - "@electron/get": ["@electron/get@2.0.3", "", { "dependencies": { "debug": "4.4.3", "env-paths": "2.2.1", "fs-extra": "8.1.0", "got": "11.8.6", "progress": "2.0.3", "semver": "6.3.1", "sumchecker": "3.0.1" }, "optionalDependencies": { "global-agent": "3.0.0" } }, "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ=="], + "@electron/get": ["@electron/get@5.0.0", "", { "dependencies": { "debug": "^4.1.1", "env-paths": "^3.0.0", "graceful-fs": "^4.2.11", "progress": "^2.0.3", "semver": "^7.6.3", "sumchecker": "^3.0.1" }, "optionalDependencies": { "undici": "^7.24.4" } }, "sha512-pjoBpru1KdEtcExBnuHAP1cAc/5faoedw0hzJkL3o4/IJp7HNF1+fbrdxT3gMYRX2oJfvnA/WXeCTVQpYYxyJA=="], "@electron/notarize": ["@electron/notarize@2.5.0", "", { "dependencies": { "debug": "4.4.3", "fs-extra": "9.1.0", "promise-retry": "2.0.1" } }, "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A=="], @@ -1037,7 +1041,7 @@ "ejs": ["ejs@3.1.10", "", { "dependencies": { "jake": "10.9.4" }, "bin": { "ejs": "bin/cli.js" } }, "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA=="], - "electron": ["electron@34.5.8", "", { "dependencies": { "@electron/get": "2.0.3", "@types/node": "20.19.37", "extract-zip": "2.0.1" }, "bin": { "electron": "cli.js" } }, "sha512-vxLD65mabTzYmEVa9KceMHM0+zO+vqgrhcyNVlmTd0IGV5J7XZ8v/qElm0o4YQ4wPeq7olZkUjZkBQQEdr23/g=="], + "electron": ["electron@42.2.0", "", { "dependencies": { "@electron/get": "^5.0.0", "@types/node": "^24.9.0", "extract-zip": "^2.0.1" }, "bin": { "electron": "cli.js", "install-electron": "install.js" } }, "sha512-b2Tc7sIKiZEl0tBVwFM5GJ+FT5KYhmy9QJHjx8BGVZPVW2SctXWEvrE959ElB56qw7H05dBkhlikDA1DmpaAMw=="], "electron-builder": ["electron-builder@26.8.1", "", { "dependencies": { "app-builder-lib": "26.8.1", "builder-util": "26.8.1", "builder-util-runtime": "9.5.1", "chalk": "4.1.2", "ci-info": "4.4.0", "dmg-builder": "26.8.1", "fs-extra": "10.1.0", "lazy-val": "1.0.5", "simple-update-notifier": "2.0.0", "yargs": "17.7.2" }, "bin": { "electron-builder": "cli.js", "install-app-deps": "install-app-deps.js" } }, "sha512-uWhx1r74NGpCagG0ULs/P9Nqv2nsoo+7eo4fLUOB8L8MdWltq9odW/uuLXMFCDGnPafknYLZgjNX0ZIFRzOQAw=="], @@ -1061,7 +1065,7 @@ "enhanced-resolve": ["enhanced-resolve@5.20.1", "", { "dependencies": { "graceful-fs": "4.2.11", "tapable": "2.3.2" } }, "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA=="], - "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], "err-code": ["err-code@2.0.3", "", {}, "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="], @@ -1083,7 +1087,7 @@ "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], - "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "4.0.1", "estraverse": "5.3.0", "esutils": "2.0.3" }, "optionalDependencies": { "source-map": "0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="], @@ -1901,9 +1905,7 @@ "@electron/fuses/minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - "@electron/get/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "4.2.11", "jsonfile": "4.0.0", "universalify": "0.1.2" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], - - "@electron/get/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@electron/get/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "@electron/notarize/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "1.0.0", "graceful-fs": "4.2.11", "jsonfile": "6.2.0", "universalify": "2.0.1" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], @@ -1937,8 +1939,6 @@ "@npmcli/fs/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], - "@pi-gui/desktop/@types/node": ["@types/node@22.19.15", "", { "dependencies": { "undici-types": "6.21.0" } }, "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg=="], - "@remotion/bundler/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], "@remotion/bundler/react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], @@ -2019,8 +2019,6 @@ "dotenv-expand/dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], - "electron/@types/node": ["@types/node@20.19.37", "", { "dependencies": { "undici-types": "6.21.0" } }, "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw=="], - "electron-builder/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "4.3.0", "supports-color": "7.2.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "electron-builder/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "8.0.1", "escalade": "3.2.0", "get-caller-file": "2.0.5", "require-directory": "2.1.1", "string-width": "4.2.3", "y18n": "5.0.8", "yargs-parser": "21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], @@ -2055,7 +2053,7 @@ "log-symbols/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "4.3.0", "supports-color": "7.2.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "matcher/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], "minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], @@ -2071,6 +2069,8 @@ "node-api-version/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + "node-gyp/env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + "node-gyp/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "node-gyp/which": ["which@5.0.0", "", { "dependencies": { "isexe": "3.1.5" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], @@ -2145,10 +2145,6 @@ "@electron/asar/minimatch/brace-expansion": ["brace-expansion@1.1.13", "", { "dependencies": { "balanced-match": "1.0.2", "concat-map": "0.0.1" } }, "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w=="], - "@electron/get/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "4.2.11" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "@electron/get/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - "@electron/rebuild/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "4.2.3", "strip-ansi": "6.0.1", "wrap-ansi": "7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "@electron/rebuild/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], @@ -2159,8 +2155,6 @@ "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - "@pi-gui/desktop/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - "@remotion/bundler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], "@remotion/bundler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], @@ -2235,6 +2229,8 @@ "ajv-formats/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "app-builder-lib/@electron/get/env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + "app-builder-lib/@electron/get/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "4.2.11", "jsonfile": "4.0.0", "universalify": "0.1.2" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], "app-builder-lib/@electron/get/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -2259,8 +2255,6 @@ "electron-winstaller/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - "electron/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - "filelist/minimatch/brace-expansion": ["brace-expansion@2.0.3", "", { "dependencies": { "balanced-match": "1.0.2" } }, "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA=="], "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], diff --git a/package.json b/package.json index c97cd145..2d64332a 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,15 @@ { "name": "pi-gui", "private": true, + "trustedDependencies": [ + "electron", + "node-pty" + ], "version": "0.1.0", "license": "MIT", "packageManager": "pnpm@10.25.0", "scripts": { + "postinstall": "node node_modules/electron/install.js", "dev": "pnpm --filter @pi-gui/desktop dev", "bun:dev": "cd apps/desktop && bun run dev", "build": "pnpm -r --if-present build", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 556c33cc..02f90c7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -130,8 +130,8 @@ importers: specifier: ^3.2.2 version: 3.2.2(react@19.2.4) '@types/node': - specifier: ^22.13.0 - version: 22.19.15 + specifier: ^24.0.0 + version: 24.12.2 '@types/react': specifier: ^19.1.0 version: 19.2.14 @@ -140,28 +140,28 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.7.0(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)) + version: 4.7.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)) cross-env: specifier: ^7.0.3 version: 7.0.3 electron: - specifier: ^34.3.0 - version: 34.5.8 + specifier: ^42.2.0 + version: 42.2.0 electron-builder: specifier: ^26.8.1 version: 26.8.1(electron-builder-squirrel-windows@26.8.1) electron-vite: specifier: ^5.0.0 - version: 5.0.0(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)) + version: 5.0.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)) playwright: specifier: ^1.58.2 version: 1.58.2 vite: specifier: ^6.2.0 - version: 6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) + version: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)) + version: 6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)) apps/website: dependencies: @@ -538,14 +538,14 @@ packages: resolution: {integrity: sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==} hasBin: true - '@electron/get@2.0.3': - resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} - engines: {node: '>=12'} - '@electron/get@3.1.0': resolution: {integrity: sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==} engines: {node: '>=14'} + '@electron/get@5.0.0': + resolution: {integrity: sha512-pjoBpru1KdEtcExBnuHAP1cAc/5faoedw0hzJkL3o4/IJp7HNF1+fbrdxT3gMYRX2oJfvnA/WXeCTVQpYYxyJA==} + engines: {node: '>=22.12.0'} + '@electron/notarize@2.5.0': resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} engines: {node: '>= 10.0.0'} @@ -1842,12 +1842,6 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@20.19.37': - resolution: {integrity: sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==} - - '@types/node@22.19.15': - resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==} - '@types/node@24.12.2': resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} @@ -2438,9 +2432,9 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@34.5.8: - resolution: {integrity: sha512-vxLD65mabTzYmEVa9KceMHM0+zO+vqgrhcyNVlmTd0IGV5J7XZ8v/qElm0o4YQ4wPeq7olZkUjZkBQQEdr23/g==} - engines: {node: '>= 12.20.55'} + electron@42.2.0: + resolution: {integrity: sha512-b2Tc7sIKiZEl0tBVwFM5GJ+FT5KYhmy9QJHjx8BGVZPVW2SctXWEvrE959ElB56qw7H05dBkhlikDA1DmpaAMw==} + engines: {node: '>= 22.12.0'} hasBin: true emoji-regex@8.0.0: @@ -2467,6 +2461,10 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -4009,9 +4007,6 @@ packages: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -4936,7 +4931,7 @@ snapshots: fs-extra: 9.1.0 minimist: 1.2.8 - '@electron/get@2.0.3': + '@electron/get@3.1.0': dependencies: debug: 4.4.3 env-paths: 2.2.1 @@ -4950,17 +4945,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/get@3.1.0': + '@electron/get@5.0.0': dependencies: debug: 4.4.3 - env-paths: 2.2.1 - fs-extra: 8.1.0 - got: 11.8.6 + env-paths: 3.0.0 + graceful-fs: 4.2.11 progress: 2.0.3 - semver: 6.3.1 + semver: 7.7.4 sumchecker: 3.0.1 optionalDependencies: - global-agent: 3.0.0 + undici: 7.25.0 transitivePeerDependencies: - supports-color @@ -6199,7 +6193,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.2.0 '@types/keyv': 3.1.4 - '@types/node': 22.19.15 + '@types/node': 24.12.2 '@types/responselike': 1.0.3 '@types/debug@4.1.13': @@ -6230,7 +6224,7 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.19.15 + '@types/node': 24.12.2 '@types/hast@3.0.4': dependencies: @@ -6242,7 +6236,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 22.19.15 + '@types/node': 24.12.2 '@types/mdast@4.0.4': dependencies: @@ -6252,21 +6246,13 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@20.19.37': - dependencies: - undici-types: 6.21.0 - - '@types/node@22.19.15': - dependencies: - undici-types: 6.21.0 - '@types/node@24.12.2': dependencies: undici-types: 7.16.0 '@types/plist@3.0.5': dependencies: - '@types/node': 22.19.15 + '@types/node': 24.12.2 xmlbuilder: 15.1.1 optional: true @@ -6280,7 +6266,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.19.15 + '@types/node': 24.12.2 '@types/retry@0.12.0': {} @@ -6293,12 +6279,12 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.19.15 + '@types/node': 24.12.2 optional: true '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2))': + '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -6306,7 +6292,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) + vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -6928,7 +6914,7 @@ snapshots: electron-to-chromium@1.5.321: {} - electron-vite@5.0.0(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)): + electron-vite@5.0.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)): dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) @@ -6936,7 +6922,7 @@ snapshots: esbuild: 0.25.12 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) + vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -6952,10 +6938,10 @@ snapshots: transitivePeerDependencies: - supports-color - electron@34.5.8: + electron@42.2.0: dependencies: - '@electron/get': 2.0.3 - '@types/node': 20.19.37 + '@electron/get': 5.0.0 + '@types/node': 24.12.2 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -6982,6 +6968,8 @@ snapshots: env-paths@2.2.1: {} + env-paths@3.0.0: {} + err-code@2.0.3: {} error-stack-parser@2.1.4: @@ -7526,7 +7514,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.19.15 + '@types/node': 24.12.2 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -8888,8 +8876,6 @@ snapshots: uint8array-extras@1.5.0: {} - undici-types@6.21.0: {} - undici-types@7.16.0: {} undici@7.25.0: {} @@ -8972,17 +8958,17 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) + vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) transitivePeerDependencies: - supports-color - typescript - vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2): + vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -8991,7 +8977,7 @@ snapshots: rollup: 4.59.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.19.15 + '@types/node': 24.12.2 fsevents: 2.3.3 jiti: 2.7.0 terser: 5.46.1 From 29d7740fb42c77800461ec6b5b486b28dfb8037c Mon Sep 17 00:00:00 2001 From: PylotLight Date: Wed, 27 May 2026 19:55:04 +1000 Subject: [PATCH 02/11] fix: Sidebar toggle --- apps/desktop/electron/main.ts | 4 +- apps/desktop/src/App.tsx | 11 +- apps/desktop/src/styles/main.css | 35 +---- apps/desktop/src/styles/sidebar.css | 15 +- apps/desktop/src/topbar.tsx | 224 +++++++++++++++------------- 5 files changed, 134 insertions(+), 155 deletions(-) diff --git a/apps/desktop/electron/main.ts b/apps/desktop/electron/main.ts index 8b269ab1..735c4b79 100644 --- a/apps/desktop/electron/main.ts +++ b/apps/desktop/electron/main.ts @@ -397,7 +397,7 @@ function getPersistedAllowMultiple(): boolean { } const hasSingleInstanceLock = getPersistedAllowMultiple() || app.requestSingleInstanceLock(); -if (!hasSingleInstanceLock) { +if (!hasSingleInstanceLock && !getPersistedAllowMultiple()) { app.quit(); } @@ -413,7 +413,7 @@ app.on("second-instance", async () => { }); app.whenReady().then(async () => { - if (!hasSingleInstanceLock) { + if (!hasSingleInstanceLock && !getPersistedAllowMultiple()) { return; } diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/App.tsx index 8c19302e..0a90239e 100644 --- a/apps/desktop/src/App.tsx +++ b/apps/desktop/src/App.tsx @@ -2027,13 +2027,6 @@ export default function App() { return (
- {primarySidebarToggleVisible ? ( - - ) : null} {!snapshot.sidebarCollapsed ? ( {showTerminalTakeover ? ( diff --git a/apps/desktop/src/styles/main.css b/apps/desktop/src/styles/main.css index 67c6ccba..e1cbdb5b 100644 --- a/apps/desktop/src/styles/main.css +++ b/apps/desktop/src/styles/main.css @@ -181,12 +181,16 @@ .sidebar-toggle { -webkit-app-region: no-drag; - position: absolute; + position: fixed; top: 11px; left: var(--titlebar-toggle-left); z-index: 80; } +.shell:not(.shell--sidebar-collapsed) .sidebar-toggle { + left: var(--titlebar-toggle-left); +} + .sidebar-toggle__button { width: var(--titlebar-toggle-size); height: var(--titlebar-toggle-size); @@ -2953,35 +2957,6 @@ margin: 0; } -@media (max-width: 980px) { - .topbar, - .composer, - .canvas { - padding-left: 18px; - padding-right: 18px; - } - - .topbar, - .composer__bar, - .chat-header__row, - .view-header, - .tree-modal__footer { - flex-direction: column; - align-items: stretch; - } - - .topbar__actions { - justify-content: flex-start; - } - - .skills-layout { - grid-template-columns: 1fr; - } - - .skills-grid { - grid-template-columns: 1fr; - } -} /* Thread search */ diff --git a/apps/desktop/src/styles/sidebar.css b/apps/desktop/src/styles/sidebar.css index 093931ee..2b8ab03f 100644 --- a/apps/desktop/src/styles/sidebar.css +++ b/apps/desktop/src/styles/sidebar.css @@ -689,21 +689,8 @@ color: var(--muted-settings); } -@media (max-width: 1180px) { - .shell { - grid-template-columns: 272px minmax(0, 1fr); - } -} - -@media (max-width: 980px) { - .shell { - grid-template-columns: 1fr; - } +/* Media queries for small viewports are disabled to prevent DevTools from breaking desktop shell grids */ - .sidebar { - min-height: 360px; - } -} /* ---------- Dark mode overrides ---------- */ diff --git a/apps/desktop/src/topbar.tsx b/apps/desktop/src/topbar.tsx index ce314a07..09e70e54 100644 --- a/apps/desktop/src/topbar.tsx +++ b/apps/desktop/src/topbar.tsx @@ -1,4 +1,5 @@ import type { MouseEvent as ReactMouseEvent, Dispatch, SetStateAction } from "react"; +import { SidebarToggleButton } from "./sidebar-toggle-button"; import type { AppView, DesktopAppState, SessionRecord, WorkspaceRecord, WorktreeRecord } from "./desktop-state"; import { DiffIcon, FolderIcon, TerminalIcon } from "./icons"; import { getDesktopShortcutLabel, type PiDesktopApi } from "./ipc"; @@ -26,6 +27,10 @@ interface TopbarProps { readonly onToggleTerminal: () => void; readonly showDiffPanel: boolean; readonly onToggleDiffPanel: () => void; + readonly primarySidebarToggleVisible: boolean; + readonly sidebarCollapsed: boolean; + readonly sidebarToggleShortcutLabel: string; + readonly onTogglePrimarySidebar: () => void; } export function Topbar(props: TopbarProps) { @@ -47,7 +52,12 @@ export function Topbar(props: TopbarProps) { onToggleTerminal, showDiffPanel, onToggleDiffPanel, + primarySidebarToggleVisible, + sidebarCollapsed, + sidebarToggleShortcutLabel, + onTogglePrimarySidebar, } = props; + const terminalShortcut = getDesktopShortcutLabel(api.platform, "J"); const diffShortcut = getDesktopShortcutLabel(api.platform, "D"); @@ -65,114 +75,124 @@ export function Topbar(props: TopbarProps) { }; return ( -
-
- - {rootWorkspace ? rootWorkspace.name : "Open a folder to begin"} - - {selectedWorkspace && activeView === "threads" ? ( - <> - / -
- - {wsMenu.environmentMenuOpen && rootWorkspace ? ( -
- - {activeWorktrees.map((worktree) => { - const linkedWorkspace = workspaces.find( - (workspace) => workspace.id === worktree.linkedWorkspaceId, - ); - const worktreeSelectable = Boolean(linkedWorkspace) && worktree.status === "ready"; - return ( - - ); - })} -
- ) : null} -
- - ) : null} - {selectedWorkspace && activeView === "threads" && selectedSession ? ( - <> - / - {selectedSessionTitle ?? selectedSession.title} - - ) : activeView === "new-thread" && rootWorkspace ? ( - <> - / - New thread - - ) : null} -
- -
-
- - - Toggle terminal - {terminalShortcut} + <> +
+
+ + {rootWorkspace ? rootWorkspace.name : "Open a folder to begin"} + {selectedWorkspace && activeView === "threads" ? ( + <> + / +
+ + {wsMenu.environmentMenuOpen && rootWorkspace ? ( +
+ + {activeWorktrees.map((worktree) => { + const linkedWorkspace = workspaces.find( + (workspace) => workspace.id === worktree.linkedWorkspaceId, + ); + const worktreeSelectable = Boolean(linkedWorkspace) && worktree.status === "ready"; + return ( + + ); + })} +
+ ) : null} +
+ + ) : null} + {selectedWorkspace && activeView === "threads" && selectedSession ? ( + <> + / + {selectedSessionTitle ?? selectedSession.title} + + ) : activeView === "new-thread" && rootWorkspace ? ( + <> + / + New thread + + ) : null}
-
+ +
+
+ + + Toggle terminal + {terminalShortcut} + +
+
+ + + Toggle changes + {diffShortcut} + +
- - Toggle changes - {diffShortcut} -
- -
-
+
+ + {primarySidebarToggleVisible && ( + + )} + ); } From 82b665d5ded794eccf7fa43ac55d119bf594cd09 Mon Sep 17 00:00:00 2001 From: PylotLight Date: Wed, 27 May 2026 22:08:54 +1000 Subject: [PATCH 03/11] feat(desktop): add linux deb build support --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 5 +++-- apps/desktop/electron-builder.yml | 11 +++++++++++ apps/desktop/package.json | 10 +++++++--- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd43a2f7..97039e57 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,7 +61,7 @@ jobs: - name: Install run: pnpm install --frozen-lockfile - - name: Package Linux AppImage + - name: Package Linux AppImage and deb run: pnpm --filter @pi-gui/desktop run package:linux - name: Verify packaged runtime dependencies diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8801e92..7245c1dc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -143,11 +143,11 @@ jobs: - name: Typecheck run: pnpm typecheck - - name: Package Linux AppImage + - name: Package Linux AppImage and deb run: | cd apps/desktop pnpm run build - pnpm exec electron-builder --linux AppImage \ + pnpm exec electron-builder --linux AppImage deb \ --publish never \ "-c.extraMetadata.version=${GITHUB_REF_NAME#v}" @@ -159,6 +159,7 @@ jobs: with: files: | apps/desktop/release/*.AppImage + apps/desktop/release/*.deb apps/desktop/release/latest-linux*.yml prerelease: ${{ contains(github.ref_name, 'beta') || contains(github.ref_name, 'alpha') || contains(github.ref_name, 'rc') }} generate_release_notes: true diff --git a/apps/desktop/electron-builder.yml b/apps/desktop/electron-builder.yml index 121e48a8..1cf17583 100644 --- a/apps/desktop/electron-builder.yml +++ b/apps/desktop/electron-builder.yml @@ -44,8 +44,19 @@ mac: linux: category: Development executableName: pi-gui + maintainer: Matthew Lam target: - target: AppImage + - target: deb + +deb: + depends: + - libgtk-3-0 + - libgbm1 + - libnss3 + - libxss1 + - libasound2 + - libatspi2.0-0 toolsets: appimage: "1.0.2" diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 39d3f71b..b903aa2f 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -3,7 +3,11 @@ "private": true, "trustedDependencies": ["electron", "node-pty"], "version": "0.1.0", - "author": "Matthew Lam", + "author": { + "name": "Matthew Lam", + "email": "lochois@gmail.com" + }, + "homepage": "https://github.com/minghinmatthewlam/pi-gui", "license": "MIT", "description": "Codex-style desktop shell for pi", "main": "out/main/main.js", @@ -21,8 +25,8 @@ "bun:package": "bun run bun:build && bun run scripts/bun-package-wrapper.mjs electron-builder --mac", "package:dir": "pnpm run build && electron-builder --mac --dir", "bun:package:dir": "bun run bun:build && bun run scripts/bun-package-wrapper.mjs electron-builder --mac --dir", - "package:linux": "pnpm run build && electron-builder --linux AppImage", - "bun:package:linux": "bun run bun:build && bun run scripts/bun-package-wrapper.mjs electron-builder --linux AppImage", + "package:linux": "pnpm run build && electron-builder --linux AppImage deb", + "bun:package:linux": "bun run bun:build && bun run scripts/bun-package-wrapper.mjs electron-builder --linux AppImage deb", "package:linux:dir": "pnpm run build && electron-builder --linux --dir", "bun:package:linux:dir": "bun run bun:build && bun run scripts/bun-package-wrapper.mjs electron-builder --linux --dir", "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.electron.json --noEmit", From 765fa30e9bfe27222c912c29f0d569635c295c08 Mon Sep 17 00:00:00 2001 From: PylotLight Date: Thu, 28 May 2026 00:06:10 +1000 Subject: [PATCH 04/11] chore: update pi-sdk dependencies to 0.75.5 and fix OAuth callback types --- apps/desktop/package.json | 2 +- apps/desktop/scripts/bun-package-wrapper.mjs | 21 +- bun.lock | 393 +++++++++++++----- package.json | 5 +- packages/pi-sdk-driver/package.json | 2 +- .../pi-sdk-driver/src/runtime-supervisor.ts | 3 +- packages/session-driver/src/runtime-types.ts | 9 +- 7 files changed, 310 insertions(+), 125 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index b903aa2f..f70607ff 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -81,7 +81,7 @@ }, "dependencies": { "@aws-sdk/token-providers": "^3.1036.0", - "@earendil-works/pi-coding-agent": "^0.74.0", + "@earendil-works/pi-coding-agent": "^0.75.5", "@pi-gui/pi-sdk-driver": "workspace:*", "@pi-gui/session-driver": "workspace:*", "@smithy/is-array-buffer": "^2.2.0", diff --git a/apps/desktop/scripts/bun-package-wrapper.mjs b/apps/desktop/scripts/bun-package-wrapper.mjs index 73f96c80..4135d22f 100644 --- a/apps/desktop/scripts/bun-package-wrapper.mjs +++ b/apps/desktop/scripts/bun-package-wrapper.mjs @@ -13,14 +13,13 @@ writeFileSync(ROOT_PACKAGE_JSON, JSON.stringify(json, null, 2)); console.log(`Temporarily set packageManager to bun (was ${originalPM})`); -try { - const result = spawnSync(process.argv[2], process.argv.slice(3), { - stdio: 'inherit', - shell: true, - env: { ...process.env, npm_config_user_agent: 'bun' } - }); - process.exit(result.status ?? 0); -} finally { - writeFileSync(ROOT_PACKAGE_JSON, originalContent); - console.log(`Restored packageManager to ${originalPM}`); -} +const result = spawnSync(process.argv[2], process.argv.slice(3), { + stdio: 'inherit', + shell: true, + env: { ...process.env, npm_config_user_agent: 'bun' } +}); + +writeFileSync(ROOT_PACKAGE_JSON, originalContent); +console.log(`Restored packageManager to ${originalPM}`); + +process.exit(result.status ?? 0); diff --git a/bun.lock b/bun.lock index e73f0110..859b470c 100644 --- a/bun.lock +++ b/bun.lock @@ -4,6 +4,9 @@ "workspaces": { "": { "name": "pi-gui", + "dependencies": { + "@earendil-works/pi-ai": "^0.75.5", + }, "devDependencies": { "@playwright/test": "^1.52.0", "@types/node": "^24.0.0", @@ -15,7 +18,7 @@ "version": "0.1.0", "dependencies": { "@aws-sdk/token-providers": "^3.1036.0", - "@earendil-works/pi-coding-agent": "^0.74.0", + "@earendil-works/pi-coding-agent": "^0.75.5", "@pi-gui/pi-sdk-driver": "workspace:*", "@pi-gui/session-driver": "workspace:*", "@smithy/is-array-buffer": "^2.2.0", @@ -89,7 +92,7 @@ "name": "@pi-gui/pi-sdk-driver", "version": "0.0.0", "dependencies": { - "@earendil-works/pi-coding-agent": "^0.74.0", + "@earendil-works/pi-coding-agent": "^0.75.5", "@pi-gui/catalogs": "workspace:*", "@pi-gui/session-driver": "workspace:*", }, @@ -131,29 +134,29 @@ "@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "3.973.8", "@smithy/util-utf8": "2.3.0", "tslib": "2.8.1" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-sdk/client-bedrock-runtime": ["@aws-sdk/client-bedrock-runtime@3.1037.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.974.5", "@aws-sdk/credential-provider-node": "3.972.36", "@aws-sdk/eventstream-handler-node": "3.972.14", "@aws-sdk/middleware-eventstream": "3.972.10", "@aws-sdk/middleware-host-header": "3.972.10", "@aws-sdk/middleware-logger": "3.972.10", "@aws-sdk/middleware-recursion-detection": "3.972.11", "@aws-sdk/middleware-user-agent": "3.972.35", "@aws-sdk/middleware-websocket": "3.972.16", "@aws-sdk/region-config-resolver": "3.972.13", "@aws-sdk/token-providers": "3.1037.0", "@aws-sdk/types": "3.973.8", "@aws-sdk/util-endpoints": "3.996.8", "@aws-sdk/util-user-agent-browser": "3.972.10", "@aws-sdk/util-user-agent-node": "3.973.21", "@smithy/config-resolver": "4.4.17", "@smithy/core": "3.23.17", "@smithy/eventstream-serde-browser": "4.2.14", "@smithy/eventstream-serde-config-resolver": "4.3.14", "@smithy/eventstream-serde-node": "4.2.14", "@smithy/fetch-http-handler": "5.3.17", "@smithy/hash-node": "4.2.14", "@smithy/invalid-dependency": "4.2.14", "@smithy/middleware-content-length": "4.2.14", "@smithy/middleware-endpoint": "4.4.32", "@smithy/middleware-retry": "4.5.5", "@smithy/middleware-serde": "4.2.20", "@smithy/middleware-stack": "4.2.14", "@smithy/node-config-provider": "4.3.14", "@smithy/node-http-handler": "4.6.1", "@smithy/protocol-http": "5.3.14", "@smithy/smithy-client": "4.12.13", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-body-length-node": "4.2.3", "@smithy/util-defaults-mode-browser": "4.3.49", "@smithy/util-defaults-mode-node": "4.2.54", "@smithy/util-endpoints": "3.4.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-retry": "4.3.4", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "tslib": "2.8.1" } }, "sha512-Evla4DUdBf1pQpQa7pbfquj7jRaRktkI0qGoWBJBXWB9wQISzJ8OEI4sHugk/W6SF47C7hMP/o3Z/XBrfnejCw=="], + "@aws-sdk/client-bedrock-runtime": ["@aws-sdk/client-bedrock-runtime@3.1048.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.974.11", "@aws-sdk/credential-provider-node": "^3.972.42", "@aws-sdk/eventstream-handler-node": "^3.972.16", "@aws-sdk/middleware-eventstream": "^3.972.12", "@aws-sdk/middleware-websocket": "^3.972.19", "@aws-sdk/token-providers": "3.1048.0", "@aws-sdk/types": "^3.973.8", "@smithy/core": "^3.24.2", "@smithy/fetch-http-handler": "^5.4.2", "@smithy/node-http-handler": "^4.7.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" } }, "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ=="], "@aws-sdk/core": ["@aws-sdk/core@3.974.5", "", { "dependencies": { "@aws-sdk/types": "3.973.8", "@aws-sdk/xml-builder": "3.972.19", "@smithy/core": "3.23.17", "@smithy/node-config-provider": "4.3.14", "@smithy/property-provider": "4.2.14", "@smithy/protocol-http": "5.3.14", "@smithy/signature-v4": "5.3.14", "@smithy/smithy-client": "4.12.13", "@smithy/types": "4.14.1", "@smithy/util-base64": "4.3.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-retry": "4.3.4", "@smithy/util-utf8": "4.2.2", "tslib": "2.8.1" } }, "sha512-lMPlYlYfQdNZhlkJgnkmESwrY+hNh3PljmZ+37oAqLNdJ6rnILAwFSyc6B3bJeDOtMORNnMQIej0aTRuOlDyhQ=="], - "@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.31", "", { "dependencies": { "@aws-sdk/core": "3.974.5", "@aws-sdk/types": "3.973.8", "@smithy/property-provider": "4.2.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-X/yGB73LmDW/6MdDJGCDzZBUXnM3ys4vs9l+5ZTJmiEswDdP1OjeoAFlFjVGS9o4KB2wZWQ9KOfdVNSSK6Ep3w=="], + "@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.40", "", { "dependencies": { "@aws-sdk/core": "^3.974.14", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-jjT0p0Y7KZtcvExYiPCLJnqM9lkXDV1KBEg/13OE2DXv/9batzlyJHVKUEnRNJccY0O2Sul17E1su38CgdBhGQ=="], - "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.33", "", { "dependencies": { "@aws-sdk/core": "3.974.5", "@aws-sdk/types": "3.973.8", "@smithy/fetch-http-handler": "5.3.17", "@smithy/node-http-handler": "4.6.1", "@smithy/property-provider": "4.2.14", "@smithy/protocol-http": "5.3.14", "@smithy/smithy-client": "4.12.13", "@smithy/types": "4.14.1", "@smithy/util-stream": "4.5.25", "tslib": "2.8.1" } }, "sha512-c0ZF+lwoWVvX5iCaGKL5T/4DnIw88CGqxA0BcBs3U86mIp5EZYPVg+KSPkMXOyokmADvNewiMUfSG2uFwjRp0g=="], + "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.42", "", { "dependencies": { "@aws-sdk/core": "^3.974.14", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", "@smithy/node-http-handler": "^4.7.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-+3fsKtWybe5BjKEUA3/07oh7Ayfd82IED2+gyyaVfS/4PU78E3TaOQxSGOJ1t7Imefoidw/ne9QA7apX8wEnJg=="], - "@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.972.35", "", { "dependencies": { "@aws-sdk/core": "3.974.5", "@aws-sdk/credential-provider-env": "3.972.31", "@aws-sdk/credential-provider-http": "3.972.33", "@aws-sdk/credential-provider-login": "3.972.35", "@aws-sdk/credential-provider-process": "3.972.31", "@aws-sdk/credential-provider-sso": "3.972.35", "@aws-sdk/credential-provider-web-identity": "3.972.35", "@aws-sdk/nested-clients": "3.997.3", "@aws-sdk/types": "3.973.8", "@smithy/credential-provider-imds": "4.2.14", "@smithy/property-provider": "4.2.14", "@smithy/shared-ini-file-loader": "4.4.9", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-jsU4u/cRkKFLKQS0k918FQ27fzXLG5ENiLWQMYE6581zLeI2hWh04ptlrvZMB3wJT/5d+vSzJk74X1CMFr4y8Q=="], + "@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.972.44", "", { "dependencies": { "@aws-sdk/core": "^3.974.14", "@aws-sdk/credential-provider-env": "^3.972.40", "@aws-sdk/credential-provider-http": "^3.972.42", "@aws-sdk/credential-provider-login": "^3.972.44", "@aws-sdk/credential-provider-process": "^3.972.40", "@aws-sdk/credential-provider-sso": "^3.972.44", "@aws-sdk/credential-provider-web-identity": "^3.972.44", "@aws-sdk/nested-clients": "^3.997.12", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/credential-provider-imds": "^4.3.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-gZFw5wBefCIPg9vpT+gV5FdhfNKhYTVDZa1IsZCcn3SRoYUOJ/E05vwIogkJoonqBL0ttBGi5vhthX7xceekRg=="], - "@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.35", "", { "dependencies": { "@aws-sdk/core": "3.974.5", "@aws-sdk/nested-clients": "3.997.3", "@aws-sdk/types": "3.973.8", "@smithy/property-provider": "4.2.14", "@smithy/protocol-http": "5.3.14", "@smithy/shared-ini-file-loader": "4.4.9", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-5oa3j0cA50jPqgNhZ9XdJVopuzUf1klRb28/2MfLYWWiPi9DRVvbrBWT+DidbHTT36520VuXZJahQwR+YgSjrg=="], + "@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.44", "", { "dependencies": { "@aws-sdk/core": "^3.974.14", "@aws-sdk/nested-clients": "^3.997.12", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-QqEGHfQeZgUDqh7zpqHufrZ8T644ELEWvB+4gUdewLyRw4IRF+6CJqeQuRWqucZdQzoQeMh7fNAD9BWxFAdNig=="], - "@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.36", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.972.31", "@aws-sdk/credential-provider-http": "3.972.33", "@aws-sdk/credential-provider-ini": "3.972.35", "@aws-sdk/credential-provider-process": "3.972.31", "@aws-sdk/credential-provider-sso": "3.972.35", "@aws-sdk/credential-provider-web-identity": "3.972.35", "@aws-sdk/types": "3.973.8", "@smithy/credential-provider-imds": "4.2.14", "@smithy/property-provider": "4.2.14", "@smithy/shared-ini-file-loader": "4.4.9", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-4nT2T8Z7vH8KE9EdjEsuIlHpZSlcaK2PrKbQBjuUGU46BCCzF3WvP0u0Uiosni3Ykmmn4rWLVawoOCLotUtCbg=="], + "@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.45", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.40", "@aws-sdk/credential-provider-http": "^3.972.42", "@aws-sdk/credential-provider-ini": "^3.972.44", "@aws-sdk/credential-provider-process": "^3.972.40", "@aws-sdk/credential-provider-sso": "^3.972.44", "@aws-sdk/credential-provider-web-identity": "^3.972.44", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/credential-provider-imds": "^4.3.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-3YCv52ExXIRz3LAVNysevd+s7akSpg9dl39v9LJ7dOQH+s5rHi3jMZYQyxwMmglxQGMuzYRfQ0o1VSP2UOlIRw=="], - "@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.972.31", "", { "dependencies": { "@aws-sdk/core": "3.974.5", "@aws-sdk/types": "3.973.8", "@smithy/property-provider": "4.2.14", "@smithy/shared-ini-file-loader": "4.4.9", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-eKeT4MXumpBJsrDLCYcSzIkFPVTFn/es7It2oogp2OhU/ic7P/+xzFpQx9ZhwtXS57Mc5S42BPWi7lHmvs/nYg=="], + "@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.972.40", "", { "dependencies": { "@aws-sdk/core": "^3.974.14", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-cXaozlgJCOwmE6D7x4npcPdyk7kiFZdrGjN3D6tXXtItJJMNGPafDfAJn4YQmciMooG/X+b0Y6RTqdVVMx26jg=="], - "@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.972.35", "", { "dependencies": { "@aws-sdk/core": "3.974.5", "@aws-sdk/nested-clients": "3.997.3", "@aws-sdk/token-providers": "3.1036.0", "@aws-sdk/types": "3.973.8", "@smithy/property-provider": "4.2.14", "@smithy/shared-ini-file-loader": "4.4.9", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-bCuBdfnj0KGDMdLp6utMTLiJcFN2ek9EgZinxQZZSc3FxjJ/HSqeqab2cjbnoNfy8RM6suDCsRkmVY1izp9I+A=="], + "@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.972.44", "", { "dependencies": { "@aws-sdk/core": "^3.974.14", "@aws-sdk/nested-clients": "^3.997.12", "@aws-sdk/token-providers": "3.1054.0", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-YePoj5kQuPmE0MHnyftXCfsO8ZSBd2kDr50XEIUrdejSbGFlayYvUuCohdb8drhGhPm6b65o7H1eC26EZhwUvA=="], - "@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.35", "", { "dependencies": { "@aws-sdk/core": "3.974.5", "@aws-sdk/nested-clients": "3.997.3", "@aws-sdk/types": "3.973.8", "@smithy/property-provider": "4.2.14", "@smithy/shared-ini-file-loader": "4.4.9", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-swW6Bwvl8lanyEMtZOWE/oR6yqcRQH4HTQZUVsnDVgoXvRjRywpYpLv2BWwjUFyjPrqsdX6FeTkf4tMSe/qFTQ=="], + "@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.44", "", { "dependencies": { "@aws-sdk/core": "^3.974.14", "@aws-sdk/nested-clients": "^3.997.12", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Ys/JJe++8Z2Y5meR1taMBaVcrGBA0/XsVTQR+qOKZbdNyg+8Jlv5rYZSwh8SqEHY00goSOZy7PHzZ2rLNQxDLg=="], - "@aws-sdk/eventstream-handler-node": ["@aws-sdk/eventstream-handler-node@3.972.14", "", { "dependencies": { "@aws-sdk/types": "3.973.8", "@smithy/eventstream-codec": "4.2.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-m4X56gxG76/CKfxNVbOFuYwnAZcHgS6HOH8lgp15HoGHIAVTcZfZrXvcYzJFOMLEJgVn+JHBu6EiNV+xSNXXFg=="], + "@aws-sdk/eventstream-handler-node": ["@aws-sdk/eventstream-handler-node@3.972.17", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-WFwdNcjchKZr7jKYgGimUZO8sSKQF/le7GGqgeCzz/lHozInE6b0gFJ1YMr8NaIeAoWJwgtrF7RE4/qMgosAdQ=="], - "@aws-sdk/middleware-eventstream": ["@aws-sdk/middleware-eventstream@3.972.10", "", { "dependencies": { "@aws-sdk/types": "3.973.8", "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-QUqLs7Af1II9X4fCRAu+EGHG3KHyOp4RkuLhRKoA3NuFlh6TL8i+zXBl8w2LUxqm44B/Kom45hgSlwA1SpTsXQ=="], + "@aws-sdk/middleware-eventstream": ["@aws-sdk/middleware-eventstream@3.972.13", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-ECfsw7mf6G/sxNbKbGE3/h1xeIArY/yRI1IjDGYkLgDIankh+aDOtDRSr40LVlIHGL9+jEH1cVuxmbJ8NLL/1A=="], "@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.972.10", "", { "dependencies": { "@aws-sdk/types": "3.973.8", "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg=="], @@ -165,7 +168,7 @@ "@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.972.35", "", { "dependencies": { "@aws-sdk/core": "3.974.5", "@aws-sdk/types": "3.973.8", "@aws-sdk/util-endpoints": "3.996.8", "@smithy/core": "3.23.17", "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/util-retry": "4.3.4", "tslib": "2.8.1" } }, "sha512-hOFWNOjVmOocpRlrU04nYxjMOeoe0Obu5AXEuhB8zblMCPl3cG1hdluQCZERRKFyhMQjwZnDbhSHjoMUjetFGw=="], - "@aws-sdk/middleware-websocket": ["@aws-sdk/middleware-websocket@3.972.16", "", { "dependencies": { "@aws-sdk/types": "3.973.8", "@aws-sdk/util-format-url": "3.972.10", "@smithy/eventstream-codec": "4.2.14", "@smithy/eventstream-serde-browser": "4.2.14", "@smithy/fetch-http-handler": "5.3.17", "@smithy/protocol-http": "5.3.14", "@smithy/signature-v4": "5.3.14", "@smithy/types": "4.14.1", "@smithy/util-base64": "4.3.2", "@smithy/util-hex-encoding": "4.2.2", "@smithy/util-utf8": "4.2.2", "tslib": "2.8.1" } }, "sha512-86+S9oCyRVGzoMRpQhxkArp7kD2K75GPmaNevd9B6EyNhWoNvnCZZ3WbgN4j7ZT+jvtvBCGZvI2XHsWZJ+BRIg=="], + "@aws-sdk/middleware-websocket": ["@aws-sdk/middleware-websocket@3.972.22", "", { "dependencies": { "@aws-sdk/core": "^3.974.14", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-aumo6pYnvD1/eda3R0UDkRVecwxsuW4zTZLdjbHg7NqYMKmy7vK0bM3NGJzCD+Ys8iqCC7EeDU4LuWVIsXvL+A=="], "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.3", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.974.5", "@aws-sdk/middleware-host-header": "3.972.10", "@aws-sdk/middleware-logger": "3.972.10", "@aws-sdk/middleware-recursion-detection": "3.972.11", "@aws-sdk/middleware-user-agent": "3.972.35", "@aws-sdk/region-config-resolver": "3.972.13", "@aws-sdk/signature-v4-multi-region": "3.996.22", "@aws-sdk/types": "3.973.8", "@aws-sdk/util-endpoints": "3.996.8", "@aws-sdk/util-user-agent-browser": "3.972.10", "@aws-sdk/util-user-agent-node": "3.973.21", "@smithy/config-resolver": "4.4.17", "@smithy/core": "3.23.17", "@smithy/fetch-http-handler": "5.3.17", "@smithy/hash-node": "4.2.14", "@smithy/invalid-dependency": "4.2.14", "@smithy/middleware-content-length": "4.2.14", "@smithy/middleware-endpoint": "4.4.32", "@smithy/middleware-retry": "4.5.5", "@smithy/middleware-serde": "4.2.20", "@smithy/middleware-stack": "4.2.14", "@smithy/node-config-provider": "4.3.14", "@smithy/node-http-handler": "4.6.1", "@smithy/protocol-http": "5.3.14", "@smithy/smithy-client": "4.12.13", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-body-length-node": "4.2.3", "@smithy/util-defaults-mode-browser": "4.3.49", "@smithy/util-defaults-mode-node": "4.2.54", "@smithy/util-endpoints": "3.4.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-retry": "4.3.4", "@smithy/util-utf8": "4.2.2", "tslib": "2.8.1" } }, "sha512-SivE6GP228IVgfsrr2c/vqTg95X0Qj39Yw4uIrcddpkUzIltNMoNOR62leHOLhODfjv9K8X2mPTwS69A5kT0nQ=="], @@ -181,8 +184,6 @@ "@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.996.8", "", { "dependencies": { "@aws-sdk/types": "3.973.8", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-endpoints": "3.4.2", "tslib": "2.8.1" } }, "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g=="], - "@aws-sdk/util-format-url": ["@aws-sdk/util-format-url@3.972.10", "", { "dependencies": { "@aws-sdk/types": "3.973.8", "@smithy/querystring-builder": "4.2.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-DEKiHNJVtNxdyTeQspzY+15Po/kHm6sF0Cs4HV9Q2+lplB63+DrvdeiSoOSdWEWAoO2RcY1veoXVDz2tWxWCgQ=="], - "@aws-sdk/util-locate-window": ["@aws-sdk/util-locate-window@3.965.5", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ=="], "@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.972.10", "", { "dependencies": { "@aws-sdk/types": "3.973.8", "@smithy/types": "4.14.1", "bowser": "2.14.1", "tslib": "2.8.1" } }, "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g=="], @@ -235,8 +236,6 @@ "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "7.27.1", "@babel/helper-validator-identifier": "7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], - "@borewit/text-codec": ["@borewit/text-codec@0.2.2", "", {}, "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ=="], - "@develar/schema-utils": ["@develar/schema-utils@2.6.5", "", { "dependencies": { "ajv": "6.14.0", "ajv-keywords": "3.5.2" } }, "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig=="], "@dnd-kit/accessibility": ["@dnd-kit/accessibility@3.1.1", "", { "dependencies": { "tslib": "2.8.1" }, "peerDependencies": { "react": "19.2.4" } }, "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw=="], @@ -247,13 +246,13 @@ "@dnd-kit/utilities": ["@dnd-kit/utilities@3.2.2", "", { "dependencies": { "tslib": "2.8.1" }, "peerDependencies": { "react": "19.2.4" } }, "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg=="], - "@earendil-works/pi-agent-core": ["@earendil-works/pi-agent-core@0.74.0", "", { "dependencies": { "@earendil-works/pi-ai": "0.74.0", "typebox": "1.1.33" } }, "sha512-6GMR7/wwjEJ1EsXLWEz03QOWin4AMrJ/AZoMpgm5DJ6GHsF6q6GOhQbj5Zip4dow3vo/TmBAVqM+vmGfrjGAFQ=="], + "@earendil-works/pi-agent-core": ["@earendil-works/pi-agent-core@0.75.5", "", { "dependencies": { "@earendil-works/pi-ai": "^0.75.5", "ignore": "7.0.5", "typebox": "1.1.38", "yaml": "2.9.0" } }, "sha512-LHygOgsW2pgXKb3IkXkOAeZPovHr9VF+EixgXVsDNuB4jmhEOXgshy/zksZ7slkUAx10OQ9W1Ed/2jsnhd1NqA=="], - "@earendil-works/pi-ai": ["@earendil-works/pi-ai@0.74.0", "", { "dependencies": { "@anthropic-ai/sdk": "0.91.1", "@aws-sdk/client-bedrock-runtime": "3.1037.0", "@google/genai": "1.50.1", "@mistralai/mistralai": "2.2.1", "chalk": "5.6.2", "openai": "6.26.0", "partial-json": "0.1.7", "proxy-agent": "6.5.0", "typebox": "1.1.33", "undici": "7.25.0", "zod-to-json-schema": "3.25.2" }, "bin": { "pi-ai": "dist/cli.js" } }, "sha512-7M7qcrZY/KEkH4wFkX3eqzvmKru4O88wezNKoN0KD2m4aAOmp9tdW2xCmUgSTSWlKB7b2Xw9QtAgrzHtg6t6iw=="], + "@earendil-works/pi-ai": ["@earendil-works/pi-ai@0.75.5", "", { "dependencies": { "@anthropic-ai/sdk": "0.91.1", "@aws-sdk/client-bedrock-runtime": "3.1048.0", "@google/genai": "1.52.0", "@mistralai/mistralai": "2.2.1", "@smithy/node-http-handler": "4.7.3", "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", "openai": "6.26.0", "partial-json": "0.1.7", "typebox": "1.1.38" }, "bin": { "pi-ai": "dist/cli.js" } }, "sha512-zf1F5kXk1pqZeFShXOqq9ibUk8QdtRoLCDPAjO+hj44e3EUs9/GFO2qnhTC5+JA2uwVCx+WCNe1PiCjlBYWm5w=="], - "@earendil-works/pi-coding-agent": ["@earendil-works/pi-coding-agent@0.74.0", "", { "dependencies": { "@earendil-works/pi-agent-core": "0.74.0", "@earendil-works/pi-ai": "0.74.0", "@earendil-works/pi-tui": "0.74.0", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cli-highlight": "2.1.11", "diff": "8.0.4", "extract-zip": "2.0.1", "file-type": "21.3.4", "glob": "13.0.6", "hosted-git-info": "9.0.2", "ignore": "7.0.5", "jiti": "2.7.0", "marked": "15.0.12", "minimatch": "10.2.4", "proper-lockfile": "4.1.2", "strip-ansi": "7.2.0", "typebox": "1.1.33", "undici": "7.25.0", "uuid": "14.0.0", "yaml": "2.8.2" }, "optionalDependencies": { "@mariozechner/clipboard": "0.3.5" }, "bin": { "pi": "dist/cli.js" } }, "sha512-Q5GikbB5vRBrsrrf/uvet53rPSQ1sn5I5mO+l7sIobdXYpS04/X2oOc2UHFm90fNdkl3yU+ANTZL0zOtHbnqRw=="], + "@earendil-works/pi-coding-agent": ["@earendil-works/pi-coding-agent@0.75.5", "", { "dependencies": { "@earendil-works/pi-agent-core": "^0.75.5", "@earendil-works/pi-ai": "^0.75.5", "@earendil-works/pi-tui": "^0.75.5", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cross-spawn": "7.0.6", "diff": "8.0.4", "glob": "13.0.6", "highlight.js": "10.7.3", "hosted-git-info": "9.0.3", "ignore": "7.0.5", "jiti": "2.7.0", "minimatch": "10.2.5", "proper-lockfile": "4.1.2", "typebox": "1.1.38", "undici": "8.3.0", "yaml": "2.9.0" }, "optionalDependencies": { "@mariozechner/clipboard": "0.3.6" }, "bin": { "pi": "dist/cli.js" } }, "sha512-O3CCQDYy28D4uwtP6zZkdEwzHN6X22v49Sb0+SZTC7x37V/YfmogrWPiaFoWeoc2hmdKhSATI7ZAK5bQbJG5NA=="], - "@earendil-works/pi-tui": ["@earendil-works/pi-tui@0.74.0", "", { "dependencies": { "@types/mime-types": "2.1.4", "chalk": "5.6.2", "get-east-asian-width": "1.5.0", "marked": "15.0.12", "mime-types": "3.0.2" }, "optionalDependencies": { "koffi": "2.16.1" } }, "sha512-1aIfXZp7D/z+1VlZX8BZcs6pgO8rjmil7kwyhctNDsWvce3Yfl8GVgu4eq+I0Mjhr8Cj+ipBiv9CLIzdoyCOIQ=="], + "@earendil-works/pi-tui": ["@earendil-works/pi-tui@0.75.5", "", { "dependencies": { "get-east-asian-width": "1.6.0", "marked": "15.0.12" } }, "sha512-LkXUM1/49pvzzeI39Y5wjBMlgafcCf67HCLhB9Z7yuXHy4XgT+VqxWcZVW5hBdhQsHZd0znjJotfGH1BzxMfiA=="], "@electron/asar": ["@electron/asar@3.4.1", "", { "dependencies": { "commander": "5.1.0", "glob": "7.2.3", "minimatch": "3.1.5" }, "bin": { "asar": "bin/asar.js" } }, "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA=="], @@ -329,7 +328,7 @@ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], - "@google/genai": ["@google/genai@1.50.1", "", { "dependencies": { "google-auth-library": "10.6.2", "p-retry": "4.6.2", "protobufjs": "7.5.5", "ws": "8.20.0" } }, "sha512-YbkX7H9+1Pt8wOt7DDREy8XSoiL6fRDzZQRyaVBarFf8MR3zHGqVdvM4cLbDXqPhxqvegZShgfxb8kw9C7YhAQ=="], + "@google/genai": ["@google/genai@1.52.0", "", { "dependencies": { "google-auth-library": "^10.3.0", "p-retry": "^4.6.2", "protobufjs": "^7.5.4", "ws": "^8.18.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q=="], "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], @@ -401,27 +400,27 @@ "@malept/flatpak-bundler": ["@malept/flatpak-bundler@0.4.0", "", { "dependencies": { "debug": "4.4.3", "fs-extra": "9.1.0", "lodash": "4.17.23", "tmp-promise": "3.0.3" } }, "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q=="], - "@mariozechner/clipboard": ["@mariozechner/clipboard@0.3.5", "", { "optionalDependencies": { "@mariozechner/clipboard-darwin-arm64": "0.3.2", "@mariozechner/clipboard-darwin-universal": "0.3.2", "@mariozechner/clipboard-darwin-x64": "0.3.2", "@mariozechner/clipboard-linux-arm64-gnu": "0.3.2", "@mariozechner/clipboard-linux-arm64-musl": "0.3.2", "@mariozechner/clipboard-linux-riscv64-gnu": "0.3.2", "@mariozechner/clipboard-linux-x64-gnu": "0.3.2", "@mariozechner/clipboard-linux-x64-musl": "0.3.2", "@mariozechner/clipboard-win32-arm64-msvc": "0.3.2", "@mariozechner/clipboard-win32-x64-msvc": "0.3.2" } }, "sha512-D3F+UrU9CR7roJt0zDLp6Oc+4/KlLDIrN4frH+6V90SJNW2KKUec1oCQIPaaDjCqeOsQyX9dyqYbImIQIM45PA=="], + "@mariozechner/clipboard": ["@mariozechner/clipboard@0.3.6", "", { "optionalDependencies": { "@mariozechner/clipboard-darwin-arm64": "0.3.6", "@mariozechner/clipboard-darwin-universal": "0.3.6", "@mariozechner/clipboard-darwin-x64": "0.3.6", "@mariozechner/clipboard-linux-arm64-gnu": "0.3.6", "@mariozechner/clipboard-linux-arm64-musl": "0.3.6", "@mariozechner/clipboard-linux-riscv64-gnu": "0.3.6", "@mariozechner/clipboard-linux-x64-gnu": "0.3.6", "@mariozechner/clipboard-linux-x64-musl": "0.3.6", "@mariozechner/clipboard-win32-arm64-msvc": "0.3.6", "@mariozechner/clipboard-win32-x64-msvc": "0.3.6" } }, "sha512-MXdtr+6+ntlIVHdrZYuZNQydu6o8yZswFJ2Ln81j2O/Y9B/LDHvEaIm95xWNPkjGTWriSOeLnQJRFs6dYb60bg=="], - "@mariozechner/clipboard-darwin-arm64": ["@mariozechner/clipboard-darwin-arm64@0.3.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uBf6K7Je1ihsgvmWxA8UCGCeI+nbRVRXoarZdLjl6slz94Zs1tNKFZqx7aCI5O1i3e0B6ja82zZ06BWrl0MCVw=="], + "@mariozechner/clipboard-darwin-arm64": ["@mariozechner/clipboard-darwin-arm64@0.3.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HjaisYCAbHi/1+N1yDAQHc8ZXGffufIUT5NSOSVR3f3AuMDusxTtnbK8tZ7JFDkShua1oNGZoNwQHsc8MPtE0Q=="], - "@mariozechner/clipboard-darwin-universal": ["@mariozechner/clipboard-darwin-universal@0.3.2", "", { "os": "darwin" }, "sha512-mxSheKTW2U9LsBdXy0SdmdCAE5HqNS9QUmpNHLnfJ+SsbFKALjEZc5oRrVMXxGQSirDvYf5bjmRyT0QYYonnlg=="], + "@mariozechner/clipboard-darwin-universal": ["@mariozechner/clipboard-darwin-universal@0.3.6", "", { "os": "darwin" }, "sha512-8BWtPjOtJOJoykml3w0fx0zRrfWP31mXrJwfoA7xzNprkZw1uolCNfgmjDiVBseoKjp16EGITz7bN+61qn8dWA=="], - "@mariozechner/clipboard-darwin-x64": ["@mariozechner/clipboard-darwin-x64@0.3.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-U1BcVEoidvwIp95+HJswSW+xr28EQiHR7rZjH6pn8Sja5yO4Yoe3yCN0Zm8Lo72BbSOK/fTSq0je7CJpaPCspg=="], + "@mariozechner/clipboard-darwin-x64": ["@mariozechner/clipboard-darwin-x64@0.3.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-p9syiZD1kU4I+1ya7f7g+zD1GiUvR8fdlRlNmgsZNWlyjtc8rlV2EjTLd/35x1LsdBq020GVvtzp0ZmPgBI09Q=="], - "@mariozechner/clipboard-linux-arm64-gnu": ["@mariozechner/clipboard-linux-arm64-gnu@0.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-BsinwG3yWTIjdgNCxsFlip7LkfwPk+ruw/aFCXHUg/fb5XC/Ksp+YMQ7u0LUtiKzIv/7LMXgZInJQH6gxbAaqQ=="], + "@mariozechner/clipboard-linux-arm64-gnu": ["@mariozechner/clipboard-linux-arm64-gnu@0.3.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-5JFf5rGofrm+V29HNF+wLthXphHdQpMbKDUYJ5tML6/Z5DLlLOV/9Ak4kDPtYyZ+Dzf+kAusE0VsFg4+tfP1IA=="], - "@mariozechner/clipboard-linux-arm64-musl": ["@mariozechner/clipboard-linux-arm64-musl@0.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-0/Gi5Xq2V6goXBop19ePoHvXsmJD9SzFlO3S+d6+T2b+BlPcpOu3Oa0wTjl+cZrLAAEzA86aPNBI+VVAFDFPKw=="], + "@mariozechner/clipboard-linux-arm64-musl": ["@mariozechner/clipboard-linux-arm64-musl@0.3.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-JlVjxxw0GbGC0djXYWRIqyteO3J1KZ/QG3udlEFaOD5TLOM1FnmXXAPDQBqr+aBVr720ef9K00dirYnJ0LDCtw=="], - "@mariozechner/clipboard-linux-riscv64-gnu": ["@mariozechner/clipboard-linux-riscv64-gnu@0.3.2", "", { "os": "linux", "cpu": "none" }, "sha512-2AFFiXB24qf0zOZsxI1GJGb9wQGlOJyN6UwoXqmKS3dpQi/l6ix30IzDDA4c4ZcCcx4D+9HLYXhC1w7Sov8pXA=="], + "@mariozechner/clipboard-linux-riscv64-gnu": ["@mariozechner/clipboard-linux-riscv64-gnu@0.3.6", "", { "os": "linux", "cpu": "none" }, "sha512-4t8BUi5zZ+L77otFQVnVSlaTyAX4TVk9EqQm4syMrEQp96trFEHEwwNHcNEBGzYv5+K7mxay50TthYkz47OWzQ=="], - "@mariozechner/clipboard-linux-x64-gnu": ["@mariozechner/clipboard-linux-x64-gnu@0.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-v6fVnsn7WMGg73Dab8QMwyFce7tzGfgEixKgzLP8f1GJqkJZi5zO4k4FOHzSgUufgLil63gnxvMpjWkgfeQN7A=="], + "@mariozechner/clipboard-linux-x64-gnu": ["@mariozechner/clipboard-linux-x64-gnu@0.3.6", "", { "os": "linux", "cpu": "x64" }, "sha512-trtPwcNLW37irwQCJLtCxLw757jjJZk3TSnY/MU9bhtWtA3K9b/eLW0e4RGhUXDoFRds9opNWWaUDuFLa8dm0w=="], - "@mariozechner/clipboard-linux-x64-musl": ["@mariozechner/clipboard-linux-x64-musl@0.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-xVUtnoMQ8v2JVyfJLKKXACA6avdnchdbBkTsZs8BgJQo29qwCp5NIHAUO8gbJ40iaEGToW5RlmVk2M9V0HsHEw=="], + "@mariozechner/clipboard-linux-x64-musl": ["@mariozechner/clipboard-linux-x64-musl@0.3.6", "", { "os": "linux", "cpu": "x64" }, "sha512-WfnzIvOCCWQiN0MmltCEo6cLceUDbYe+I7xyFZjaps5A+2Op/M2CY7Rey+C4ucQhrvmpoHmTSFgY9ODWk7snoA=="], - "@mariozechner/clipboard-win32-arm64-msvc": ["@mariozechner/clipboard-win32-arm64-msvc@0.3.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-AEgg95TNi8TGgak2wSXZkXKCvAUTjWoU1Pqb0ON7JHrX78p616XUFNTJohtIon3e0w6k0pYPZeCuqRCza/Tqeg=="], + "@mariozechner/clipboard-win32-arm64-msvc": ["@mariozechner/clipboard-win32-arm64-msvc@0.3.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-+8+1aHYsBPUjmW3otmWlg+Hijt0iJvoBBs5e0mxFeUd4gDaKMB8Bn6x7c6KVtscg7E5j5NFXnwQqNSIAO4p8zQ=="], - "@mariozechner/clipboard-win32-x64-msvc": ["@mariozechner/clipboard-win32-x64-msvc@0.3.2", "", { "os": "win32", "cpu": "x64" }, "sha512-tGRuYpZwDOD7HBrCpyRuhGnHHSCknELvqwKKUG4JSfSB7JIU7LKRh6zx6fMUOQd8uISK35TjFg5UcNih+vJhFA=="], + "@mariozechner/clipboard-win32-x64-msvc": ["@mariozechner/clipboard-win32-x64-msvc@0.3.6", "", { "os": "win32", "cpu": "x64" }, "sha512-S4xfPmERC8ZkiLHe3vekZCjdDwNEETCuvCgQK2kP6/TnvmUkq1y2Pk+DjM4t8uh9KMX9bH4zs5ePcKa8GTXmfg=="], "@mediabunny/aac-encoder": ["@mediabunny/aac-encoder@1.39.2", "", { "peerDependencies": { "mediabunny": "1.39.2" } }, "sha512-KD6KADVzAnW7tqhRFGBOX4uaiHbd0Yxvg0lfthj3wJLAEEgEBAvi43w+ZXWeEn54X/jpabrLe4bW/eYFFvlbUA=="], @@ -631,21 +630,11 @@ "@smithy/config-resolver": ["@smithy/config-resolver@4.4.17", "", { "dependencies": { "@smithy/node-config-provider": "4.3.14", "@smithy/types": "4.14.1", "@smithy/util-config-provider": "4.2.2", "@smithy/util-endpoints": "3.4.2", "@smithy/util-middleware": "4.2.14", "tslib": "2.8.1" } }, "sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ=="], - "@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "@smithy/uuid": "1.1.2", "tslib": "2.8.1" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], - - "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.14", "", { "dependencies": { "@smithy/node-config-provider": "4.3.14", "@smithy/property-provider": "4.2.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "tslib": "2.8.1" } }, "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg=="], + "@smithy/core": ["@smithy/core@3.24.4", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-3UNRKEyQyAgVgM0LGlerCLm+ChZWZ1GPfde+jBEW6bm6bSBGU1p0EbblaUV3unbhwvidjLA5Zs3sOs7mnZwvAw=="], - "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.14", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "4.14.1", "@smithy/util-hex-encoding": "4.2.2", "tslib": "2.8.1" } }, "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw=="], + "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.3.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-vKW0MEFRU4Y3MkVZUkpJm+g9qyPGLCXhc0YLggUdSdBB4g7IaSSsCE75P9rBXyWHrXY1UYSQUl8/DwsTR7QciA=="], - "@smithy/eventstream-serde-browser": ["@smithy/eventstream-serde-browser@4.2.14", "", { "dependencies": { "@smithy/eventstream-serde-universal": "4.2.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ=="], - - "@smithy/eventstream-serde-config-resolver": ["@smithy/eventstream-serde-config-resolver@4.3.14", "", { "dependencies": { "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA=="], - - "@smithy/eventstream-serde-node": ["@smithy/eventstream-serde-node@4.2.14", "", { "dependencies": { "@smithy/eventstream-serde-universal": "4.2.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw=="], - - "@smithy/eventstream-serde-universal": ["@smithy/eventstream-serde-universal@4.2.14", "", { "dependencies": { "@smithy/eventstream-codec": "4.2.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg=="], - - "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/querystring-builder": "4.2.14", "@smithy/types": "4.14.1", "@smithy/util-base64": "4.3.2", "tslib": "2.8.1" } }, "sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw=="], + "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-qM7AUKI4G6d7lNgaZD3lA1tWSolh5r6gcixfTZAPstVURfjIbvreVTPz+994M0yC3HbX4YYhDRgr31Xy3XwWOQ=="], "@smithy/hash-node": ["@smithy/hash-node@4.2.14", "", { "dependencies": { "@smithy/types": "4.14.1", "@smithy/util-buffer-from": "4.2.2", "@smithy/util-utf8": "4.2.2", "tslib": "2.8.1" } }, "sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g=="], @@ -665,7 +654,7 @@ "@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.14", "", { "dependencies": { "@smithy/property-provider": "4.2.14", "@smithy/shared-ini-file-loader": "4.4.9", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg=="], - "@smithy/node-http-handler": ["@smithy/node-http-handler@4.6.1", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/querystring-builder": "4.2.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg=="], + "@smithy/node-http-handler": ["@smithy/node-http-handler@4.7.3", "", { "dependencies": { "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA=="], "@smithy/property-provider": ["@smithy/property-provider@4.2.14", "", { "dependencies": { "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ=="], @@ -721,10 +710,6 @@ "@szmarczak/http-timer": ["@szmarczak/http-timer@4.0.6", "", { "dependencies": { "defer-to-connect": "2.0.1" } }, "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w=="], - "@tokenizer/inflate": ["@tokenizer/inflate@0.4.1", "", { "dependencies": { "debug": "4.4.3", "token-types": "6.1.2" } }, "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA=="], - - "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="], - "@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="], "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], @@ -765,8 +750,6 @@ "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "3.0.3" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], - "@types/mime-types": ["@types/mime-types@2.1.4", "", {}, "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w=="], - "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], "@types/node": ["@types/node@24.12.2", "", { "dependencies": { "undici-types": "7.16.0" } }, "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g=="], @@ -853,8 +836,6 @@ "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], - "app-builder-bin": ["app-builder-bin@5.0.0-alpha.12", "", {}, "sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w=="], "app-builder-lib": ["app-builder-lib@26.8.1", "", { "dependencies": { "@develar/schema-utils": "2.6.5", "@electron/asar": "3.4.1", "@electron/fuses": "1.8.0", "@electron/get": "3.1.0", "@electron/notarize": "2.5.0", "@electron/osx-sign": "1.3.3", "@electron/rebuild": "4.0.3", "@electron/universal": "2.0.3", "@malept/flatpak-bundler": "0.4.0", "@types/fs-extra": "9.0.13", "async-exit-hook": "2.0.1", "builder-util": "26.8.1", "builder-util-runtime": "9.5.1", "chromium-pickle-js": "0.2.0", "ci-info": "4.3.1", "debug": "4.4.3", "dotenv": "16.6.1", "dotenv-expand": "11.0.7", "ejs": "3.1.10", "electron-publish": "26.8.1", "fs-extra": "10.1.0", "hosted-git-info": "4.1.0", "isbinaryfile": "5.0.7", "jiti": "2.6.1", "js-yaml": "4.1.1", "json5": "2.2.3", "lazy-val": "1.0.5", "minimatch": "10.2.4", "plist": "3.1.0", "proper-lockfile": "4.1.2", "resedit": "1.7.2", "semver": "7.7.4", "tar": "7.5.13", "temp-file": "3.4.0", "tiny-async-pool": "1.3.0", "which": "5.0.0" }, "peerDependencies": { "dmg-builder": "26.8.1", "electron-builder-squirrel-windows": "26.8.1" } }, "sha512-p0Im/Dx5C4tmz8QEE1Yn4MkuPC8PrnlRneMhWJj7BBXQfNTJUshM/bp3lusdEsDbvvfJZpXWnYesgSLvwtM2Zw=="], @@ -945,8 +926,6 @@ "cli-cursor": ["cli-cursor@3.1.0", "", { "dependencies": { "restore-cursor": "3.1.0" } }, "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="], - "cli-highlight": ["cli-highlight@2.1.11", "", { "dependencies": { "chalk": "4.1.2", "highlight.js": "10.7.3", "mz": "2.7.0", "parse5": "5.1.1", "parse5-htmlparser2-tree-adapter": "6.0.1", "yargs": "16.2.0" }, "bin": { "highlight": "bin/highlight" } }, "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg=="], - "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], "cli-truncate": ["cli-truncate@2.1.0", "", { "dependencies": { "slice-ansi": "3.0.0", "string-width": "4.2.3" } }, "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg=="], @@ -1131,8 +1110,6 @@ "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "1.0.0", "web-streams-polyfill": "3.3.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], - "file-type": ["file-type@21.3.4", "", { "dependencies": { "@tokenizer/inflate": "0.4.1", "strtok3": "10.3.5", "token-types": "6.1.2", "uint8array-extras": "1.5.0" } }, "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g=="], - "filelist": ["filelist@1.0.6", "", { "dependencies": { "minimatch": "5.1.9" } }, "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA=="], "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "7.0.6", "signal-exit": "4.1.0" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], @@ -1161,7 +1138,7 @@ "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], - "get-east-asian-width": ["get-east-asian-width@1.5.0", "", {}, "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA=="], + "get-east-asian-width": ["get-east-asian-width@1.6.0", "", {}, "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA=="], "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "1.0.2", "es-define-property": "1.0.1", "es-errors": "1.3.0", "es-object-atoms": "1.1.1", "function-bind": "1.1.2", "get-proto": "1.0.1", "gopd": "1.2.0", "has-symbols": "1.1.0", "hasown": "2.0.2", "math-intrinsics": "1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], @@ -1309,8 +1286,6 @@ "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], - "koffi": ["koffi@2.16.1", "", {}, "sha512-0Ie6CfD026dNfWSosDw9dPxPzO9Rlyo0N8m5r05S8YjytIpuilzMFDMY4IDy/8xQsTwpuVinhncD+S8n3bcYZQ=="], - "lazy-val": ["lazy-val@1.0.5", "", {}, "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q=="], "loader-runner": ["loader-runner@4.3.1", "", {}, "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q=="], @@ -1467,8 +1442,6 @@ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "1.3.0", "object-assign": "4.1.1", "thenify-all": "1.6.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], - "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], @@ -1501,8 +1474,6 @@ "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "3.1.1" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], - "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1.0.2" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], @@ -1715,8 +1686,6 @@ "strnum": ["strnum@2.2.3", "", {}, "sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg=="], - "strtok3": ["strtok3@10.3.5", "", { "dependencies": { "@tokenizer/token": "0.3.0" } }, "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA=="], - "style-loader": ["style-loader@4.0.0", "", { "peerDependencies": { "webpack": "5.105.0" } }, "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA=="], "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], @@ -1741,10 +1710,6 @@ "terser-webpack-plugin": ["terser-webpack-plugin@5.4.0", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.31", "jest-worker": "27.5.1", "schema-utils": "4.3.3", "terser": "5.46.1" }, "optionalDependencies": { "esbuild": "0.25.0" }, "peerDependencies": { "webpack": "5.105.0" } }, "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g=="], - "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "1.3.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], - - "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": "3.3.1" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], - "tiny-async-pool": ["tiny-async-pool@1.3.0", "", { "dependencies": { "semver": "5.7.2" } }, "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA=="], "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], @@ -1755,8 +1720,6 @@ "tmp-promise": ["tmp-promise@3.0.3", "", { "dependencies": { "tmp": "0.2.5" } }, "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ=="], - "token-types": ["token-types@6.1.2", "", { "dependencies": { "@borewit/text-codec": "0.2.2", "@tokenizer/token": "0.3.0", "ieee754": "1.2.1" } }, "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww=="], - "tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "2.3.1" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="], "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], @@ -1773,13 +1736,11 @@ "type-fest": ["type-fest@0.13.1", "", {}, "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg=="], - "typebox": ["typebox@1.1.33", "", {}, "sha512-+/MWwlQ1q2GSVwoxi/+u5JsHkgLQKcCN2Nsjree9c+K7GJu40qbaHrFETmfV1i9Fs1TcOVfynW+jJvIWcXtvjw=="], + "typebox": ["typebox@1.1.38", "", {}, "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA=="], "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "uint8array-extras": ["uint8array-extras@1.5.0", "", {}, "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A=="], - - "undici": ["undici@7.25.0", "", {}, "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ=="], + "undici": ["undici@8.3.0", "", {}, "sha512-TkUDgb6tl7KOGZ+7e8E3d2FYgUQgF6z5YypqjWmixVQSQERFcVrVg0ySADm2LVLRh5ljAaHTCR5Fmz3Q34rB7Q=="], "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], @@ -1809,8 +1770,6 @@ "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], - "uuid": ["uuid@14.0.0", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg=="], - "verror": ["verror@1.10.1", "", { "dependencies": { "assert-plus": "1.0.0", "core-util-is": "1.0.2", "extsprintf": "1.4.1" } }, "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg=="], "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "3.0.3", "vfile-message": "4.0.3" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], @@ -1843,7 +1802,9 @@ "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - "ws": ["ws@8.17.1", "", {}, "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ=="], + "ws": ["ws@8.20.0", "", {}, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], + + "xml-naming": ["xml-naming@0.1.0", "", {}, "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw=="], "xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="], @@ -1867,15 +1828,97 @@ "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], - "@aws-sdk/client-bedrock-runtime/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@aws-sdk/client-bedrock-runtime/@aws-sdk/core": ["@aws-sdk/core@3.974.14", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1048.0", "", { "dependencies": { "@aws-sdk/core": "^3.974.11", "@aws-sdk/nested-clients": "^3.997.9", "@aws-sdk/types": "^3.973.8", "@smithy/core": "^3.24.2", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" } }, "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA=="], + + "@aws-sdk/core/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "@smithy/uuid": "1.1.2", "tslib": "2.8.1" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], "@aws-sdk/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], - "@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1036.0", "", { "dependencies": { "@aws-sdk/core": "3.974.5", "@aws-sdk/nested-clients": "3.997.3", "@aws-sdk/types": "3.973.8", "@smithy/property-provider": "4.2.14", "@smithy/shared-ini-file-loader": "4.4.9", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-aNSJ6jjDYayxN9ZA1JpycVScX93Lx03kKZ1EXt3DGOTahcWVLJj3oLAlop0xKP+vP2Ga2t49p1tEaMkTbCCaZA=="], + "@aws-sdk/credential-provider-env/@aws-sdk/core": ["@aws-sdk/core@3.974.14", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw=="], + + "@aws-sdk/credential-provider-env/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/credential-provider-env/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/credential-provider-http/@aws-sdk/core": ["@aws-sdk/core@3.974.14", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw=="], + + "@aws-sdk/credential-provider-http/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/credential-provider-http/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/core": ["@aws-sdk/core@3.974.14", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.12", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.974.14", "@aws-sdk/signature-v4-multi-region": "^3.996.29", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", "@smithy/node-http-handler": "^4.7.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Js2VYaCM269feB0cs0cGmlIhdOgT9aMqzdBx68lCy6kVCYfzr0T36ovUFDvfUmatkuBeyBJhCwaLBh7P8meH5Q=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/credential-provider-ini/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/core": ["@aws-sdk/core@3.974.14", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.12", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.974.14", "@aws-sdk/signature-v4-multi-region": "^3.996.29", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", "@smithy/node-http-handler": "^4.7.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Js2VYaCM269feB0cs0cGmlIhdOgT9aMqzdBx68lCy6kVCYfzr0T36ovUFDvfUmatkuBeyBJhCwaLBh7P8meH5Q=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/credential-provider-login/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/credential-provider-node/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/credential-provider-node/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/credential-provider-process/@aws-sdk/core": ["@aws-sdk/core@3.974.14", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw=="], + + "@aws-sdk/credential-provider-process/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/credential-provider-process/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/core": ["@aws-sdk/core@3.974.14", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.12", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.974.14", "@aws-sdk/signature-v4-multi-region": "^3.996.29", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", "@smithy/node-http-handler": "^4.7.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Js2VYaCM269feB0cs0cGmlIhdOgT9aMqzdBx68lCy6kVCYfzr0T36ovUFDvfUmatkuBeyBJhCwaLBh7P8meH5Q=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1054.0", "", { "dependencies": { "@aws-sdk/core": "^3.974.14", "@aws-sdk/nested-clients": "^3.997.12", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-hG9YKApmZOw+drJ9Nuoaf/OvC8e5W1+3eoLeN5p2uVCZRWsv27teIS0b4kiH6Sfv3WMmamqYJxmE2WMwyp/L/A=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/credential-provider-sso/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core": ["@aws-sdk/core@3.974.14", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.12", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.974.14", "@aws-sdk/signature-v4-multi-region": "^3.996.29", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", "@smithy/node-http-handler": "^4.7.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Js2VYaCM269feB0cs0cGmlIhdOgT9aMqzdBx68lCy6kVCYfzr0T36ovUFDvfUmatkuBeyBJhCwaLBh7P8meH5Q=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/credential-provider-web-identity/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/eventstream-handler-node/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/eventstream-handler-node/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/middleware-eventstream/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/middleware-eventstream/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/middleware-sdk-s3/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "@smithy/uuid": "1.1.2", "tslib": "2.8.1" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], "@aws-sdk/middleware-sdk-s3/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], - "@aws-sdk/middleware-websocket/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@aws-sdk/middleware-user-agent/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "@smithy/uuid": "1.1.2", "tslib": "2.8.1" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + + "@aws-sdk/middleware-websocket/@aws-sdk/core": ["@aws-sdk/core@3.974.14", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw=="], + + "@aws-sdk/middleware-websocket/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/middleware-websocket/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/middleware-websocket/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/nested-clients/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "@smithy/uuid": "1.1.2", "tslib": "2.8.1" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + + "@aws-sdk/nested-clients/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/querystring-builder": "4.2.14", "@smithy/types": "4.14.1", "@smithy/util-base64": "4.3.2", "tslib": "2.8.1" } }, "sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw=="], + + "@aws-sdk/nested-clients/@smithy/node-http-handler": ["@smithy/node-http-handler@4.6.1", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/querystring-builder": "4.2.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg=="], "@aws-sdk/nested-clients/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], @@ -1893,6 +1936,16 @@ "@babel/traverse/@babel/parser": ["@babel/parser@7.29.2", "", { "dependencies": { "@babel/types": "7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA=="], + "@earendil-works/pi-agent-core/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], + + "@earendil-works/pi-coding-agent/highlight.js": ["highlight.js@10.7.3", "", {}, "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="], + + "@earendil-works/pi-coding-agent/hosted-git-info": ["hosted-git-info@9.0.3", "", { "dependencies": { "lru-cache": "^11.1.0" } }, "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg=="], + + "@earendil-works/pi-coding-agent/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + + "@earendil-works/pi-coding-agent/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], + "@electron/asar/commander": ["commander@5.1.0", "", {}, "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg=="], "@electron/asar/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "1.0.0", "inflight": "1.0.6", "inherits": "2.0.4", "minimatch": "3.1.5", "once": "1.4.0", "path-is-absolute": "1.0.1" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], @@ -1907,6 +1960,8 @@ "@electron/get/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + "@electron/get/undici": ["undici@7.25.0", "", {}, "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ=="], + "@electron/notarize/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "1.0.0", "graceful-fs": "4.2.11", "jsonfile": "6.2.0", "universalify": "2.0.1" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], "@electron/osx-sign/isbinaryfile": ["isbinaryfile@4.0.10", "", {}, "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw=="], @@ -1925,16 +1980,12 @@ "@electron/windows-sign/minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - "@google/genai/ws": ["ws@8.20.0", "", {}, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], - "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "0.2.0", "emoji-regex": "9.2.2", "strip-ansi": "7.2.0" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "6.2.3", "string-width": "5.1.2", "strip-ansi": "7.2.0" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], "@malept/flatpak-bundler/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "1.0.0", "graceful-fs": "4.2.11", "jsonfile": "6.2.0", "universalify": "2.0.1" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], - "@mistralai/mistralai/ws": ["ws@8.20.0", "", {}, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], - "@npmcli/agent/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], "@npmcli/fs/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], @@ -1945,22 +1996,44 @@ "@remotion/renderer/source-map": ["source-map@0.8.0-beta.0", "", { "dependencies": { "whatwg-url": "7.1.0" } }, "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA=="], + "@remotion/renderer/ws": ["ws@8.17.1", "", {}, "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ=="], + "@rspack/plugin-react-refresh/react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], - "@smithy/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@smithy/core/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@smithy/credential-provider-imds/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@smithy/fetch-http-handler/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], "@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], "@smithy/hash-node/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@smithy/middleware-endpoint/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "@smithy/uuid": "1.1.2", "tslib": "2.8.1" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + + "@smithy/middleware-retry/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "@smithy/uuid": "1.1.2", "tslib": "2.8.1" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + + "@smithy/middleware-serde/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "@smithy/uuid": "1.1.2", "tslib": "2.8.1" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + + "@smithy/node-http-handler/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + "@smithy/signature-v4/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], "@smithy/signature-v4/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@smithy/smithy-client/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "@smithy/util-base64": "4.3.2", "@smithy/util-body-length-browser": "4.2.2", "@smithy/util-middleware": "4.2.14", "@smithy/util-stream": "4.5.25", "@smithy/util-utf8": "4.2.2", "@smithy/uuid": "1.1.2", "tslib": "2.8.1" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + "@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], "@smithy/util-base64/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.14", "", { "dependencies": { "@smithy/node-config-provider": "4.3.14", "@smithy/property-provider": "4.2.14", "@smithy/types": "4.14.1", "@smithy/url-parser": "4.2.14", "tslib": "2.8.1" } }, "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg=="], + + "@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.17", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/querystring-builder": "4.2.14", "@smithy/types": "4.14.1", "@smithy/util-base64": "4.3.2", "tslib": "2.8.1" } }, "sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw=="], + + "@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.6.1", "", { "dependencies": { "@smithy/protocol-http": "5.3.14", "@smithy/querystring-builder": "4.2.14", "@smithy/types": "4.14.1", "tslib": "2.8.1" } }, "sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg=="], + "@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], "@smithy/util-stream/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], @@ -2003,10 +2076,6 @@ "cacache/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "cli-highlight/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "4.3.0", "supports-color": "7.2.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - - "cli-highlight/highlight.js": ["highlight.js@10.7.3", "", {}, "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="], - "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="], @@ -2075,8 +2144,6 @@ "node-gyp/which": ["which@5.0.0", "", { "dependencies": { "isexe": "3.1.5" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], - "openai/ws": ["ws@8.20.0", "", {}, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], - "ora/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "4.3.0", "supports-color": "7.2.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "ora/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -2131,18 +2198,68 @@ "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "@aws-sdk/client-bedrock-runtime/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + "@aws-sdk/client-bedrock-runtime/@aws-sdk/core/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/core/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.12", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.974.14", "@aws-sdk/signature-v4-multi-region": "^3.996.29", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", "@smithy/node-http-handler": "^4.7.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Js2VYaCM269feB0cs0cGmlIhdOgT9aMqzdBx68lCy6kVCYfzr0T36ovUFDvfUmatkuBeyBJhCwaLBh7P8meH5Q=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers/@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], "@aws-sdk/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + "@aws-sdk/credential-provider-env/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + + "@aws-sdk/credential-provider-env/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-http/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + + "@aws-sdk/credential-provider-http/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.29", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Few9FoQqOt/0KSvZYP+qdW0dfOhfQ9N+gl2UUDvCPW6mkPKHli9LMbKxWj+wZ5zKPaOoqxuR3Hhy3OTpndkfSw=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.29", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Few9FoQqOt/0KSvZYP+qdW0dfOhfQ9N+gl2UUDvCPW6mkPKHli9LMbKxWj+wZ5zKPaOoqxuR3Hhy3OTpndkfSw=="], + + "@aws-sdk/credential-provider-process/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + + "@aws-sdk/credential-provider-process/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.29", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Few9FoQqOt/0KSvZYP+qdW0dfOhfQ9N+gl2UUDvCPW6mkPKHli9LMbKxWj+wZ5zKPaOoqxuR3Hhy3OTpndkfSw=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.29", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Few9FoQqOt/0KSvZYP+qdW0dfOhfQ9N+gl2UUDvCPW6mkPKHli9LMbKxWj+wZ5zKPaOoqxuR3Hhy3OTpndkfSw=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], - "@aws-sdk/middleware-websocket/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + "@aws-sdk/middleware-user-agent/@smithy/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + + "@aws-sdk/middleware-websocket/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], "@aws-sdk/nested-clients/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + "@earendil-works/pi-coding-agent/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + "@electron/asar/minimatch/brace-expansion": ["brace-expansion@1.1.13", "", { "dependencies": { "balanced-match": "1.0.2", "concat-map": "0.0.1" } }, "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w=="], "@electron/rebuild/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "4.2.3", "strip-ansi": "6.0.1", "wrap-ansi": "7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], @@ -2205,12 +2322,18 @@ "@remotion/bundler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], - "@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], - "@smithy/hash-node/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + "@smithy/middleware-endpoint/@smithy/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + + "@smithy/middleware-retry/@smithy/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + + "@smithy/middleware-serde/@smithy/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@smithy/signature-v4/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + "@smithy/smithy-client/@smithy/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "4.2.2", "tslib": "2.8.1" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], "@smithy/util-stream/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], @@ -2345,13 +2468,41 @@ "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "@aws-sdk/client-bedrock-runtime/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + "@aws-sdk/client-bedrock-runtime/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.29", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Few9FoQqOt/0KSvZYP+qdW0dfOhfQ9N+gl2UUDvCPW6mkPKHli9LMbKxWj+wZ5zKPaOoqxuR3Hhy3OTpndkfSw=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers/@aws-sdk/nested-clients/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], "@aws-sdk/core/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + "@aws-sdk/credential-provider-env/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + + "@aws-sdk/credential-provider-http/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-process/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], - "@aws-sdk/middleware-websocket/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + "@aws-sdk/middleware-user-agent/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/middleware-websocket/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], "@aws-sdk/nested-clients/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], @@ -2361,7 +2512,13 @@ "@electron/universal/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + "@smithy/middleware-endpoint/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@smithy/middleware-retry/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@smithy/middleware-serde/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@smithy/smithy-client/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "4.2.2", "tslib": "2.8.1" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], "app-builder-lib/@electron/get/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "4.2.11" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], @@ -2383,8 +2540,38 @@ "webpack/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "@aws-sdk/client-bedrock-runtime/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.4.4", "", { "dependencies": { "@smithy/core": "^3.24.4", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q=="], + + "@aws-sdk/credential-provider-env/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], + + "@aws-sdk/credential-provider-http/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], + + "@aws-sdk/credential-provider-process/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], + + "@aws-sdk/middleware-user-agent/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/middleware-websocket/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], + "@electron/rebuild/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@smithy/middleware-endpoint/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@smithy/middleware-retry/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@smithy/middleware-serde/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@smithy/smithy-client/@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + "cacache/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], "electron-builder/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], diff --git a/package.json b/package.json index 2d64332a..8a76ebb0 100644 --- a/package.json +++ b/package.json @@ -39,5 +39,8 @@ "apps/*", "packages/*", "video" - ] + ], + "dependencies": { + "@earendil-works/pi-ai": "^0.75.5" + } } \ No newline at end of file diff --git a/packages/pi-sdk-driver/package.json b/packages/pi-sdk-driver/package.json index 1d19f8ca..3018e645 100644 --- a/packages/pi-sdk-driver/package.json +++ b/packages/pi-sdk-driver/package.json @@ -19,7 +19,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@earendil-works/pi-coding-agent": "^0.74.0", + "@earendil-works/pi-coding-agent": "^0.75.5", "@pi-gui/catalogs": "workspace:*", "@pi-gui/session-driver": "workspace:*" } diff --git a/packages/pi-sdk-driver/src/runtime-supervisor.ts b/packages/pi-sdk-driver/src/runtime-supervisor.ts index 890066b6..88bb9ac2 100644 --- a/packages/pi-sdk-driver/src/runtime-supervisor.ts +++ b/packages/pi-sdk-driver/src/runtime-supervisor.ts @@ -11,6 +11,7 @@ import { type ResolvedPaths, type ResolvedResource, } from "@earendil-works/pi-coding-agent"; +import type { OAuthLoginCallbacks } from "@earendil-works/pi-ai"; import type { RuntimeLoginCallbacks, RuntimeExtensionDiagnostic, @@ -87,7 +88,7 @@ export class RuntimeSupervisor implements RuntimeResourceDriver { async login(workspace: WorkspaceRef, providerId: string, callbacks: RuntimeLoginCallbacks): Promise { const context = await this.ensureContext(workspace); - await this.authStorage.login(providerId, callbacks); + await this.authStorage.login(providerId, callbacks as OAuthLoginCallbacks); this.modelRegistry.refresh(); await context.resourceLoader.reload(); await this.autoEnableModelsForAuthenticatedProviders(context, [providerId]); diff --git a/packages/session-driver/src/runtime-types.ts b/packages/session-driver/src/runtime-types.ts index 8d47df41..3a49faf4 100644 --- a/packages/session-driver/src/runtime-types.ts +++ b/packages/session-driver/src/runtime-types.ts @@ -1,4 +1,5 @@ import type { WorkspaceRef } from "./types.js"; +import type { OAuthLoginCallbacks } from "@earendil-works/pi-ai"; export type RuntimeAuthType = "oauth" | "api_key" | "none"; export type RuntimeProviderAuthSource = "none" | "oauth" | "auth_file" | "env" | "external"; @@ -122,13 +123,7 @@ export interface RuntimeLoginPrompt { readonly allowEmpty?: boolean; } -export interface RuntimeLoginCallbacks { - readonly onAuth: (info: RuntimeLoginAuthInfo) => void | Promise; - readonly onPrompt: (prompt: RuntimeLoginPrompt) => Promise; - readonly onProgress?: (message: string) => void | Promise; - readonly onManualCodeInput?: () => Promise; - readonly signal?: AbortSignal; -} +export type RuntimeLoginCallbacks = OAuthLoginCallbacks; export interface RuntimeResourceDriver { getRuntimeSnapshot(workspace: WorkspaceRef): Promise; From 671f28042fdf6a28cc6357cb1133540aff4e9ac3 Mon Sep 17 00:00:00 2001 From: PylotLight Date: Thu, 28 May 2026 13:05:21 +1000 Subject: [PATCH 05/11] add WIP reasoning text for new messages. --- apps/desktop/electron/app-store-timeline.ts | 34 ++++++++++++++ apps/desktop/electron/app-store.ts | 43 +++++++++++++++++ apps/desktop/electron/session-state-map.ts | 2 + apps/desktop/src/App.tsx | 1 + apps/desktop/src/conversation-timeline.tsx | 10 ++++ apps/desktop/src/desktop-state.ts | 2 + apps/desktop/src/styles/main.css | 35 ++++++++++++++ apps/desktop/src/timeline-item.tsx | 14 +++++- packages/pi-sdk-driver/src/pi-sdk-driver.ts | 5 +- .../src/session-supervisor-utils.ts | 37 +++++++++++++++ .../pi-sdk-driver/src/session-supervisor.ts | 47 ++++++++++++++----- packages/pi-sdk-driver/src/transcript.ts | 1 + packages/session-driver/src/types.ts | 16 +++++++ 13 files changed, 231 insertions(+), 16 deletions(-) diff --git a/apps/desktop/electron/app-store-timeline.ts b/apps/desktop/electron/app-store-timeline.ts index a8fe2f0c..f80cbbc1 100644 --- a/apps/desktop/electron/app-store-timeline.ts +++ b/apps/desktop/electron/app-store-timeline.ts @@ -68,6 +68,40 @@ export function appendQueuedUserMessage( transcriptCache.set(key, transcript); } +export function appendAssistantThinkingDelta( + transcriptCache: Map, + activeAssistantMessageBySession: Map, + sessionRef: SessionRef, + text: string, +): void { + const key = sessionKey(sessionRef); + const transcript = [...(transcriptCache.get(key) ?? [])]; + const activeId = activeAssistantMessageBySession.get(key); + + if (activeId) { + const index = transcript.findIndex((message) => message.id === activeId); + const current = index >= 0 ? transcript[index] : undefined; + if (current?.kind === "message") { + transcript[index] = { + ...(current as any), + reasoning: `${(current as any).reasoning ?? ""}${text}`, + }; + } else { + const message = makeTranscriptMessage("assistant", ""); + (message as any).reasoning = text; + transcript.push(message); + activeAssistantMessageBySession.set(key, message.id); + } + } else { + const message = makeTranscriptMessage("assistant", ""); + (message as any).reasoning = text; + transcript.push(message); + activeAssistantMessageBySession.set(key, message.id); + } + + transcriptCache.set(key, transcript); +} + export function appendAssistantDelta( transcriptCache: Map, activeAssistantMessageBySession: Map, diff --git a/apps/desktop/electron/app-store.ts b/apps/desktop/electron/app-store.ts index 679c1e40..e9b18d59 100644 --- a/apps/desktop/electron/app-store.ts +++ b/apps/desktop/electron/app-store.ts @@ -54,6 +54,7 @@ import { import { applyTimelineEvent, appendAssistantDelta, + appendAssistantThinkingDelta, clearActiveAssistantMessage, } from "./app-store-timeline"; import { applySessionEventState, updateSessionRecord } from "./app-store-session-state"; @@ -187,6 +188,7 @@ export class DesktopAppStore implements AppStoreInternals { async getSelectedTranscript(): Promise { await this.initialize(); const sessionRef = this.selectedSessionRef(); + console.log(`[pi-gui] getSelectedTranscript called for session: ${sessionRef ? JSON.stringify(sessionRef) : 'none'}`); if (!sessionRef) { return null; } @@ -1045,6 +1047,7 @@ export class DesktopAppStore implements AppStoreInternals { private async ensureTranscriptLoaded(sessionRef: SessionRef): Promise { const key = sessionKey(sessionRef); if (this.sessionState.loadedTranscriptKeys.has(key)) { + console.log(`[pi-gui] ensureTranscriptLoaded: cache hit for session: ${key}`); return; } @@ -1054,6 +1057,8 @@ export class DesktopAppStore implements AppStoreInternals { : await this.driver.getTranscript(sessionRef); if (!cachedTranscript || cachedTranscript.format === "legacy") { + console.log(`[pi-gui] ensureTranscriptLoaded: cache miss, fetched transcript for session: ${key}`); + await this.writePersistedTranscript(key, transcript); } @@ -1376,6 +1381,44 @@ export class DesktopAppStore implements AppStoreInternals { } switch (event.type) { + case "assistantThinkingStarted": { + const key = sessionKey(event.sessionRef); + this.sessionState.reasoningStreamingMessageIdBySession.set(key, null); + this.state = { + ...this.state, + reasoningStreamingMessageIdBySession: { + ...this.state.reasoningStreamingMessageIdBySession, + [key]: null, + }, + }; + break; + } + case "assistantThinkingFinished": { + const key = sessionKey(event.sessionRef); + this.sessionState.reasoningStreamingMessageIdBySession.set(key, null); + this.state = { + ...this.state, + reasoningStreamingMessageIdBySession: { + ...this.state.reasoningStreamingMessageIdBySession, + [key]: null, + }, + }; + break; + } + case "assistantThinkingDelta": { + const key = sessionKey(event.sessionRef); + appendAssistantThinkingDelta(this.sessionState.transcriptCache, this.sessionState.activeAssistantMessageBySession, event.sessionRef, event.text); + const activeId = this.sessionState.activeAssistantMessageBySession.get(key); + this.sessionState.reasoningStreamingMessageIdBySession.set(key, activeId ?? null); + this.state = { + ...this.state, + reasoningStreamingMessageIdBySession: { + ...this.state.reasoningStreamingMessageIdBySession, + [key]: activeId ?? null, + }, + }; + break; + } case "assistantDelta": appendAssistantDelta(this.sessionState.transcriptCache, this.sessionState.activeAssistantMessageBySession, event.sessionRef, event.text); break; diff --git a/apps/desktop/electron/session-state-map.ts b/apps/desktop/electron/session-state-map.ts index 6c26789e..d1c4914c 100644 --- a/apps/desktop/electron/session-state-map.ts +++ b/apps/desktop/electron/session-state-map.ts @@ -48,6 +48,7 @@ export class SessionStateMap { readonly sessionCommandsBySession = new Map(); readonly extensionUiBySession = new Map(); readonly pendingAutoTitleBySession = new Map(); + readonly reasoningStreamingMessageIdBySession = new Map(); readonly loadedTranscriptKeys = new Set(); /** @@ -81,6 +82,7 @@ export class SessionStateMap { this.sessionCommandsBySession.delete(key); this.extensionUiBySession.delete(key); this.pendingAutoTitleBySession.delete(key); + this.reasoningStreamingMessageIdBySession.delete(key); pendingAutoTitle?.cancel(); this.loadedTranscriptKeys.delete(key); this.transcriptCache.delete(key); diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/App.tsx index 0a90239e..1025b4e2 100644 --- a/apps/desktop/src/App.tsx +++ b/apps/desktop/src/App.tsx @@ -2166,6 +2166,7 @@ export default function App() { showJumpToLatest={showJumpToLatest} onJumpToLatest={jumpToLatest} onContentHeightChange={handleTimelineContentHeightChange} + reasoningStreamingMessageId={snapshot?.reasoningStreamingMessageIdBySession[selectedSessionKey] ?? null} onViewFileInDiff={handleViewFileInDiff} />
diff --git a/apps/desktop/src/conversation-timeline.tsx b/apps/desktop/src/conversation-timeline.tsx index 450ae7aa..fa46afa9 100644 --- a/apps/desktop/src/conversation-timeline.tsx +++ b/apps/desktop/src/conversation-timeline.tsx @@ -30,6 +30,7 @@ interface ConversationTimelineProps { readonly showJumpToLatest: boolean; readonly onJumpToLatest: () => void; readonly onContentHeightChange: () => void; + readonly reasoningStreamingMessageId: string | null; readonly onViewFileInDiff?: (path: string) => void; } @@ -45,6 +46,7 @@ export function ConversationTimeline({ showJumpToLatest, onJumpToLatest, onContentHeightChange, + reasoningStreamingMessageId, onViewFileInDiff, }: ConversationTimelineProps) { // Giant prose blocks and attachment-heavy rows routinely blow past the estimator, @@ -173,6 +175,7 @@ export function ConversationTimeline({ onHeightChange={updateMeasuredHeight} onToggleToolCall={toggleToolCall} onViewFileInDiff={onViewFileInDiff} + reasoningStreamingMessageId={reasoningStreamingMessageId} /> ) : (
@@ -184,6 +187,7 @@ export function ConversationTimeline({ expandedToolCallIds={expandedToolCallIds} onToggleToolCall={toggleToolCall} onViewFileInDiff={onViewFileInDiff} + reasoningStreamingMessageId={reasoningStreamingMessageId} /> ))}
@@ -207,6 +211,7 @@ function VirtualizedTranscriptList({ onHeightChange, onToggleToolCall, onViewFileInDiff, + reasoningStreamingMessageId, }: { readonly transcript: readonly TranscriptMessage[]; readonly timelinePaneRef: MutableRefObject; @@ -217,6 +222,7 @@ function VirtualizedTranscriptList({ readonly onHeightChange: (id: string, height: number) => void; readonly onToggleToolCall: (callId: string) => void; readonly onViewFileInDiff?: (path: string) => void; + readonly reasoningStreamingMessageId: string | null; }) { const [viewport, setViewport] = useState({ scrollTop: 0, height: 0 }); const previousTotalHeightRef = useRef(0); @@ -289,6 +295,7 @@ function VirtualizedTranscriptList({ expandedToolCallIds={expandedToolCallIds} onToggleToolCall={onToggleToolCall} onViewFileInDiff={onViewFileInDiff} + reasoningStreamingMessageId={reasoningStreamingMessageId} /> ); })} @@ -304,6 +311,7 @@ function MeasuredTimelineItem({ expandedToolCallIds, onToggleToolCall, onViewFileInDiff, + reasoningStreamingMessageId, }: { readonly item: TranscriptMessage; readonly className?: string; @@ -312,6 +320,7 @@ function MeasuredTimelineItem({ readonly expandedToolCallIds: ReadonlySet; readonly onToggleToolCall: (callId: string) => void; readonly onViewFileInDiff?: (path: string) => void; + readonly reasoningStreamingMessageId: string | null; }) { const rowRef = useRef(null); @@ -347,6 +356,7 @@ function MeasuredTimelineItem({ expandedToolCallIds={expandedToolCallIds} onToggleToolCall={onToggleToolCall} onViewFileInDiff={onViewFileInDiff} + reasoningStreamingMessageId={reasoningStreamingMessageId} /> ); diff --git a/apps/desktop/src/desktop-state.ts b/apps/desktop/src/desktop-state.ts index 89352cc2..09d4b33b 100644 --- a/apps/desktop/src/desktop-state.ts +++ b/apps/desktop/src/desktop-state.ts @@ -167,6 +167,7 @@ export interface DesktopAppState { readonly sessionCommandsBySession: Readonly>; readonly sessionExtensionUiBySession: Readonly>; readonly extensionCommandCompatibilityByWorkspace: Readonly>; + readonly reasoningStreamingMessageIdBySession: Readonly>; readonly notificationPreferences: NotificationPreferences; readonly integratedTerminalShell: string; readonly allowMultiple: boolean; @@ -206,6 +207,7 @@ export function createEmptyDesktopAppState(): DesktopAppState { sessionCommandsBySession: {}, sessionExtensionUiBySession: {}, extensionCommandCompatibilityByWorkspace: {}, + reasoningStreamingMessageIdBySession: {}, notificationPreferences: { backgroundCompletion: true, backgroundFailure: true, diff --git a/apps/desktop/src/styles/main.css b/apps/desktop/src/styles/main.css index e1cbdb5b..b158026b 100644 --- a/apps/desktop/src/styles/main.css +++ b/apps/desktop/src/styles/main.css @@ -1,4 +1,38 @@ .sr-only { +.timeline-item__reasoning { + margin-bottom: 0.75rem; + border-left: 2px solid var(--line); + padding-left: 0.5rem; + color: var(--muted-soft); + transition: opacity 0.2s ease; +} + +.timeline-item__reasoning-summary { + cursor: pointer; + font-size: 0.7rem; + font-weight: 500; + color: var(--muted-soft); + user-select: none; + margin-bottom: 0.15rem; + outline: none; + transition: color 0.15s ease; +} +.timeline-item__reasoning-summary:hover { + color: var(--muted-strong); +} + +.timeline-item__reasoning-content { + transition: all 0.2s ease; + font-size: 0.8rem; + line-height: 1.5; + margin-top: 0.2rem; + animation: reasoning-fade-in 0.3s ease-out; +} + +@keyframes reasoning-fade-in { + from { opacity: 0; transform: translateY(-2px); } + to { opacity: 1; transform: translateY(0); } +} position: absolute; width: 1px; height: 1px; @@ -3402,3 +3436,4 @@ mark.thread-find-active { background: rgba(224, 84, 103, 0.12); border-color: rgba(224, 84, 103, 0.2); } +.timeline-item__reasoning .message__content { color: var(--muted-soft); font-size: 0.8rem; } diff --git a/apps/desktop/src/timeline-item.tsx b/apps/desktop/src/timeline-item.tsx index 954414cd..5b890cd1 100644 --- a/apps/desktop/src/timeline-item.tsx +++ b/apps/desktop/src/timeline-item.tsx @@ -9,16 +9,18 @@ export function TimelineItem({ item, expandedToolCallIds, onToggleToolCall, + reasoningStreamingMessageId, onViewFileInDiff, }: { readonly item: TranscriptMessage; readonly expandedToolCallIds?: ReadonlySet; readonly onToggleToolCall?: (callId: string) => void; + readonly reasoningStreamingMessageId?: string | null; readonly onViewFileInDiff?: (path: string) => void; }) { switch (item.kind) { case "message": - return ; + return ; case "activity": return ; case "tool": @@ -37,7 +39,7 @@ export function TimelineItem({ } } -function TimelineMessage({ item }: { readonly item: SessionTranscriptMessage }) { +function TimelineMessage({ item, reasoningStreamingMessageId }: { readonly item: SessionTranscriptMessage; readonly reasoningStreamingMessageId?: string | null }) { if (item.role === "user") { return (
@@ -86,6 +88,14 @@ function TimelineMessage({ item }: { readonly item: SessionTranscriptMessage }) return (
+ {item.reasoning ? ( +
+ Reasoning +
+ +
+
+ ) : null}
); diff --git a/packages/pi-sdk-driver/src/pi-sdk-driver.ts b/packages/pi-sdk-driver/src/pi-sdk-driver.ts index 1e0e20b8..f08910ba 100644 --- a/packages/pi-sdk-driver/src/pi-sdk-driver.ts +++ b/packages/pi-sdk-driver/src/pi-sdk-driver.ts @@ -5,8 +5,6 @@ import type { NavigateSessionTreeResult, SessionQueuedMessage, SessionTreeSnapshot, -} from "@pi-gui/session-driver/types"; -import type { CreateSessionOptions, HostUiResponse, SessionDriver, @@ -17,7 +15,8 @@ import type { SessionMessageInput, Unsubscribe, WorkspaceRef, -} from "@pi-gui/session-driver"; +} from "@pi-gui/session-driver/types"; +import type { } from "@pi-gui/session-driver"; import { SessionSupervisor, type PiSdkDriverOptions, diff --git a/packages/pi-sdk-driver/src/session-supervisor-utils.ts b/packages/pi-sdk-driver/src/session-supervisor-utils.ts index 8a51e117..6b9d9620 100644 --- a/packages/pi-sdk-driver/src/session-supervisor-utils.ts +++ b/packages/pi-sdk-driver/src/session-supervisor-utils.ts @@ -240,12 +240,18 @@ export function transcriptFromMessages(messages: readonly unknown[], fallbackTim } } + const reasoningText = extractReasoning(message); + if (reasoningText) { + console.log(`[pi-sdk-driver] Extracted reasoning for message ${message.id || 'unknown'}: ${reasoningText.slice(0, 100)}...`); + } + transcript.push({ kind: "message", id: typeof message.id === "string" ? message.id : `${role}-${index}`, role, text, ...(attachments.length > 0 ? { attachments } : {}), + ...(reasoningText ? { reasoning: reasoningText } : {}), createdAt: typeof message.createdAt === "string" ? message.createdAt : fallbackTimestamp, }); } @@ -253,6 +259,37 @@ export function transcriptFromMessages(messages: readonly unknown[], fallbackTim return transcript; } +function extractReasoning(message: Record): string | undefined { + const { content } = message; + if (Array.isArray(content)) { + const thinkingPart = content.find((part) => isRecord(part) && (part.type === "thinking" || part.type === "reasoning")); + if (thinkingPart) { + return ( + (thinkingPart as any).thinking || + (thinkingPart as any).text || + (thinkingPart as any).content || + (thinkingPart as any).reasoning + ) as string | undefined; + } + } + + if (typeof message.thought === "string") return message.thought; + if (typeof message.reasoning === "string") { + return message.reasoning; + } + + // Debug: Dump the message structure if it's an assistant message and we haven't found reasoning yet + if (message.role === 'assistant') { + console.log(`[pi-sdk-driver] MESSAGE DUMP for ${message.id || 'unknown'}:`); + console.log(JSON.stringify(message, null, 2)); + } + + if (typeof content === 'string' && content.includes('thinking')) { + console.log(`[pi-sdk-driver] Found 'thinking' keyword in string content for message ${message.id || 'unknown'}`); + } + return undefined; +} + function isRecord(value: unknown): value is Record { return typeof value === "object" && value !== null; } diff --git a/packages/pi-sdk-driver/src/session-supervisor.ts b/packages/pi-sdk-driver/src/session-supervisor.ts index 9adb8144..e0597c1a 100644 --- a/packages/pi-sdk-driver/src/session-supervisor.ts +++ b/packages/pi-sdk-driver/src/session-supervisor.ts @@ -22,13 +22,10 @@ import type { SessionQueuedMessage, SessionTreeNodeSnapshot, SessionTreeSnapshot, -} from "@pi-gui/session-driver/types"; -import type { CreateSessionOptions, HostUiRequest, HostUiResponse, SessionConfig, - SessionDriverEvent, SessionEventListener, SessionModelSelection, SessionRef, @@ -37,7 +34,9 @@ import type { Unsubscribe, WorkspaceId, WorkspaceRef, -} from "@pi-gui/session-driver"; +} from "@pi-gui/session-driver/types"; +import type { SessionDriverEvent } from "@pi-gui/session-driver/types"; +import type { } from "@pi-gui/session-driver"; import type { RuntimeCommandRecord } from "@pi-gui/session-driver/runtime-types"; import { JsonCatalogStore, type SessionFileCatalogStorage } from "./json-catalog-store.js"; import { @@ -1314,13 +1313,39 @@ export class SessionSupervisor { return [sessionUpdatedEvent(record)]; case "message_update": this.updatePreviewFromMessage(record, event.message); - if (event.message.role === "assistant" && event.assistantMessageEvent.type === "text_delta") { - return toDriverEvents({ - type: "assistantDelta" as const, - sessionRef: record.ref, - timestamp, - text: event.assistantMessageEvent.delta ?? "", - }, record); + if (event.message.role === "assistant") { + if (event.assistantMessageEvent.type === "thinking_start") { + return toDriverEvents({ + type: "assistantThinkingStarted" as const, + sessionRef: record.ref, + timestamp, + }, record); + } + if (event.assistantMessageEvent.type === "thinking_end") { + return toDriverEvents({ + type: "assistantThinkingFinished" as const, + sessionRef: record.ref, + timestamp, + }, record); + } + } + if (event.message.role === "assistant") { + if (event.assistantMessageEvent.type === "thinking_delta") { + return toDriverEvents({ + type: "assistantThinkingDelta" as const, + sessionRef: record.ref, + timestamp, + text: event.assistantMessageEvent.delta ?? "", + }, record); + } + if (event.assistantMessageEvent.type === "text_delta") { + return toDriverEvents({ + type: "assistantDelta" as const, + sessionRef: record.ref, + timestamp, + text: event.assistantMessageEvent.delta ?? "", + }, record); + } } return [sessionUpdatedEvent(record)]; case "tool_execution_start": diff --git a/packages/pi-sdk-driver/src/transcript.ts b/packages/pi-sdk-driver/src/transcript.ts index a2424f53..2aac262f 100644 --- a/packages/pi-sdk-driver/src/transcript.ts +++ b/packages/pi-sdk-driver/src/transcript.ts @@ -21,6 +21,7 @@ export interface SessionTranscriptMessage { readonly kind: "message"; readonly role: SessionTranscriptRole; readonly text: string; + readonly reasoning?: string; readonly attachments?: readonly SessionTranscriptAttachment[]; readonly createdAt: string; readonly id: string; diff --git a/packages/session-driver/src/types.ts b/packages/session-driver/src/types.ts index eb1b3638..35a2c2d0 100644 --- a/packages/session-driver/src/types.ts +++ b/packages/session-driver/src/types.ts @@ -143,6 +143,19 @@ export interface AssistantDeltaEvent extends SessionEventBase { readonly text: string; } +export interface AssistantThinkingDeltaEvent extends SessionEventBase { + readonly type: "assistantThinkingDelta"; + readonly text: string; +} + +export interface AssistantThinkingStartedEvent extends SessionEventBase { + readonly type: "assistantThinkingStarted"; +} + +export interface AssistantThinkingFinishedEvent extends SessionEventBase { + readonly type: "assistantThinkingFinished"; +} + export interface QueuedMessageStartedEvent extends SessionEventBase { readonly type: "queuedMessageStarted"; readonly message: SessionQueuedMessage; @@ -291,6 +304,9 @@ export type SessionDriverEvent = | SessionOpenedEvent | SessionUpdatedEvent | AssistantDeltaEvent + | AssistantThinkingStartedEvent + | AssistantThinkingFinishedEvent + | AssistantThinkingDeltaEvent | QueuedMessageStartedEvent | ToolStartedEvent | ToolUpdatedEvent From f8d18d95f6342bdad3f10275dbc41fa687d8fb1f Mon Sep 17 00:00:00 2001 From: PylotLight Date: Sat, 30 May 2026 15:29:34 +1000 Subject: [PATCH 06/11] feat: implement retry logic for LLM requests and improve error handling - Added exponential backoff retry for non-streaming LLM calls in PiSdkDriver - Sanitized provider error messages to be more user-friendly and generic - Fixed type errors in apps/desktop (DesktopAppState, readFileSync, RuntimeLoginCallbacks) --- apps/desktop/electron/main.ts | 11 ++- apps/desktop/src/desktop-state.ts | 2 + .../src/session-supervisor-utils.ts | 34 ++++++-- .../pi-sdk-driver/src/session-supervisor.ts | 87 ++++++++++++++++--- 4 files changed, 110 insertions(+), 24 deletions(-) diff --git a/apps/desktop/electron/main.ts b/apps/desktop/electron/main.ts index c544e8db..7ceb548a 100644 --- a/apps/desktop/electron/main.ts +++ b/apps/desktop/electron/main.ts @@ -11,6 +11,7 @@ import { type MessageBoxOptions, } from "electron"; import { randomUUID } from "node:crypto"; +import { readFileSync } from "node:fs"; import { readFile, stat } from "node:fs/promises"; import path from "node:path"; import { pathToFileURL } from "node:url"; @@ -38,6 +39,7 @@ import type { StartThreadInput, WorkspaceSessionTarget, } from "../src/desktop-state"; +import type { RuntimeLoginCallbacks } from "@pi-gui/session-driver/runtime-types"; import type { SessionDriverEvent } from "@pi-gui/session-driver"; import type { GenerateThreadTitleOptions } from "@pi-gui/pi-sdk-driver"; import type { WorkspaceRef } from "@pi-gui/session-driver"; @@ -897,13 +899,20 @@ function validateComposerAttachmentPayload(attachment: ComposerAttachment): Comp return [normalized]; } -function createRuntimeLoginCallbacks() { +function createRuntimeLoginCallbacks(): RuntimeLoginCallbacks { return { onAuth: async ({ url, instructions: _instructions }: { readonly url: string; readonly instructions?: string }) => { await shell.openExternal(url); }, onPrompt: async ({ message, placeholder }: { readonly message: string; readonly placeholder?: string }) => promptForText(message, placeholder), + onDeviceCode: async () => { + // Not implemented in desktop app + }, + onSelect: async () => { + // Not implemented in desktop app + return undefined; + }, }; } diff --git a/apps/desktop/src/desktop-state.ts b/apps/desktop/src/desktop-state.ts index 2672803d..ba6b485f 100644 --- a/apps/desktop/src/desktop-state.ts +++ b/apps/desktop/src/desktop-state.ts @@ -175,6 +175,7 @@ export interface DesktopAppState { readonly modelSettingsScopeMode: ModelSettingsScopeMode; readonly globalModelSettings: ModelSettingsSnapshot; readonly sidebarCollapsed: boolean; + readonly allowMultiple: boolean; readonly enableTransparency: boolean; readonly revision: number; readonly lastError?: string; @@ -220,6 +221,7 @@ export function createEmptyDesktopAppState(): DesktopAppState { enabledModelPatterns: [], }, sidebarCollapsed: false, + allowMultiple: false, enableTransparency: false, revision: 0, }; diff --git a/packages/pi-sdk-driver/src/session-supervisor-utils.ts b/packages/pi-sdk-driver/src/session-supervisor-utils.ts index 6b9d9620..dbd70b83 100644 --- a/packages/pi-sdk-driver/src/session-supervisor-utils.ts +++ b/packages/pi-sdk-driver/src/session-supervisor-utils.ts @@ -131,7 +131,7 @@ export function extractPreview(message: unknown): string | undefined { } if (typeof message.stopReason === "string" && typeof message.errorMessage === "string") { - return truncate(message.errorMessage); + return truncate(sanitizeProviderError(message.errorMessage)); } return undefined; @@ -149,12 +149,13 @@ export function determineRunOutcome(messages: readonly unknown[]): { const stopReason = typeof message.stopReason === "string" ? message.stopReason : undefined; if (stopReason === "error" || stopReason === "aborted") { - const messageText = + let messageText = typeof message.errorMessage === "string" && message.errorMessage.trim().length > 0 ? message.errorMessage : stopReason === "aborted" ? "Run aborted" : "Run failed"; + messageText = sanitizeProviderError(messageText); return { success: false, error: { @@ -168,11 +169,10 @@ export function determineRunOutcome(messages: readonly unknown[]): { return { success: true }; } - export function toSessionErrorInfo(error: unknown, code: string): SessionErrorInfo { if (error instanceof Error) { return { - message: error.message, + message: sanitizeProviderError(error.message), code, details: { name: error.name, @@ -181,11 +181,27 @@ export function toSessionErrorInfo(error: unknown, code: string): SessionErrorIn }; } - return { - message: typeof error === "string" ? error : "Unknown error", - code, - details: error, - }; + return { + message: typeof error === "string" ? sanitizeProviderError(error) : "Unknown error", + code, + details: error, + }; + } +export function sanitizeProviderError(message: string): string { + if (!message) return message; + + // Strip " ERROR Worked for Xs" suffix + const stripped = message.replace(/\s*ERROR Worked for \d+s$/, "").trim(); + + if (stripped.includes("Connection error")) { + return "Connection error: Please try again."; + } + + if (stripped.includes("JSON error injected into SSE stream")) { + return "Provider stream error: Received invalid JSON. Please try again."; + } + + return stripped; } export function truncate(value: string, limit = 140): string { diff --git a/packages/pi-sdk-driver/src/session-supervisor.ts b/packages/pi-sdk-driver/src/session-supervisor.ts index e0597c1a..f211ce76 100644 --- a/packages/pi-sdk-driver/src/session-supervisor.ts +++ b/packages/pi-sdk-driver/src/session-supervisor.ts @@ -378,25 +378,27 @@ export class SessionSupervisor { } await this.persistSnapshot(record); await this.emit(record, sessionUpdatedEvent(record)); - try { const images = input.attachments?.flatMap((attachment: NonNullable[number]) => attachment.kind === "image" - ? [{ - type: "image" as const, - data: attachment.data, - mimeType: attachment.mimeType, - }] - : [], + ? [{ + type: "image" as const, + data: attachment.data, + mimeType: attachment.mimeType, + }] + : [], ); const promptText = injectFileAttachmentPreamble(input.text, input.attachments); if (isQueuedMessage) { await this.queuePrompt(session, promptText, input.deliverAs!, images); } else { - await session.prompt(promptText, { - ...(images && images.length > 0 ? { images } : {}), - source: "interactive", - }); + // For non-streaming, non-queued messages, use retry logic for transient errors + await this.callWithRetry(() => + session.prompt(promptText, { + ...(images && images.length > 0 ? { images } : {}), + source: "interactive", + }) + ); } if (isExtensionCommand) { @@ -425,12 +427,64 @@ export class SessionSupervisor { } } + /** + * Determines if an error is retryable based on its message. + * This is a heuristic since we don't have rich error objects from the agent. + */ + private isRetryableError(error: unknown): boolean { + if (!error) return false; + const message = (error as Error)?.message ?? String(error); + // Common transient error patterns + return ( + message.includes("Connection error") || + message.includes("NetworkError") || + message.includes("Failed to fetch") || + message.includes("timeout") || + message.includes("JSON error injected into SSE stream") || + message.includes("Unexpected end of JSON input") || + message.includes("Stream closed") || + // HTTP 5xx errors might be represented as strings + /\b5\d{2}\b/.test(message) + ); + } + + /** + * Calls an async function with retry logic using exponential backoff. + * @param fn The function to call + * @param maxAttempts Maximum number of attempts (default: 3) + * @param baseDelayMs Base delay in milliseconds (default: 100) + * @returns The result of the function + * @throws The last error if all attempts fail + */ + private async callWithRetry( + fn: () => Promise, + maxAttempts: number = 3, + baseDelayMs: number = 100 + ): Promise { + let lastError: unknown; + for (let attempt = 0; attempt < maxAttempts; attempt++) { + try { + return await fn(); + } catch (error) { + lastError = error; + if (!this.isRetryableError(error) || attempt === maxAttempts - 1) { + // If not retryable or last attempt, rethrow + throw error; + } + // Wait before retrying + const delayMs = baseDelayMs * Math.pow(2, attempt); + await new Promise(resolve => setTimeout(resolve, delayMs)); + } + } + // This should never be reached due to the throw in the loop + throw lastError; +} + async replaceQueuedMessages(sessionRef: SessionRef, messages: readonly SessionQueuedMessage[]): Promise { const record = await this.ensureRecord(sessionRef); const session = this.requireSession(record); session.clearQueue(); - record.queuedMessages = messages.map((message) => cloneQueuedMessage(message)); for (const message of record.queuedMessages) { const images = message.attachments?.flatMap((attachment: NonNullable[number]) => attachment.kind === "image" @@ -1040,11 +1094,16 @@ export class SessionSupervisor { readonly mimeType: string; }[], ): Promise { + // These operations can also fail with transient network errors if (deliverAs === "steer") { - await session.steer(text, images ? [...images] : undefined); + await this.callWithRetry(() => + session.steer(text, images ? [...images] : undefined) + ); return; } - await session.followUp(text, images ? [...images] : undefined); + await this.callWithRetry(() => + session.followUp(text, images ? [...images] : undefined) + ); } private resolveModel(provider: string, modelId: string) { From 41838643cce4bc2fd51a02382794ade1151a9d48 Mon Sep 17 00:00:00 2001 From: PylotLight Date: Sat, 30 May 2026 16:17:45 +1000 Subject: [PATCH 07/11] fix(desktop): inherit user shell PATH on macOS to ensure access to local CLI tools --- apps/desktop/electron/main.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/apps/desktop/electron/main.ts b/apps/desktop/electron/main.ts index 7ceb548a..9ddfc13c 100644 --- a/apps/desktop/electron/main.ts +++ b/apps/desktop/electron/main.ts @@ -15,6 +15,32 @@ import { readFileSync } from "node:fs"; import { readFile, stat } from "node:fs/promises"; import path from "node:path"; import { pathToFileURL } from "node:url"; +import { existsSync } from "node:fs"; +import { spawnSync } from "node:child_process"; + +function inheritShellPath() { + const shell = process.env.SHELL || "/bin/zsh"; + try { + const result = spawnSync(shell, ["-l", "-c", "printenv PATH"], { encoding: "utf8" }); + if (result.stdout && result.stdout.trim()) { + const shellPath = result.stdout.trim(); + if (shellPath !== process.env.PATH) { + process.env.PATH = shellPath; + } + } + } catch (e) { + console.error(`[pi-gui] Failed to inherit PATH from shell ${shell}:`, e); + // Fallback to safe defaults if shell resolution fails + const fallbacks = ["/opt/homebrew/bin", "/usr/local/bin"]; + for (const p of fallbacks) { + if (existsSync(p) && !process.env.PATH.includes(p)) { + process.env.PATH = `${p}${path.delimiter}${process.env.PATH}`; + } + } + } +} +inheritShellPath(); + import { DesktopAppStore } from "./app-store"; import { getChangedFiles, getFileDiff, stageFile } from "./app-store-diff"; import { listWorkspaceFiles } from "./app-store-files"; From ff6324a17d26afea08e89b9def002193266809d1 Mon Sep 17 00:00:00 2001 From: PylotLight Date: Sun, 31 May 2026 00:09:21 +1000 Subject: [PATCH 08/11] feat(desktop): restore multi-instance support - Restore 'allowMultiple' state and persistence in DesktopAppStore - Implement IPC handler and preload bridge for toggling multi-instance mode - Add 'Allow multiple app instances' toggle to general settings UI - Fix various build errors in Electron main process and app-store --- apps/desktop/electron/app-store.ts | 17 +- apps/desktop/electron/main.ts | 5 +- apps/desktop/electron/preload.ts | 2 + apps/desktop/src/App.tsx | 6 + apps/desktop/src/desktop-state.ts | 2 + apps/desktop/src/ipc.ts | 2 + apps/desktop/src/settings-general-section.tsx | 12 + apps/desktop/src/settings-view.tsx | 6 + packages/session-driver/package.json | 3 + pnpm-lock.yaml | 995 ++++++++---------- 10 files changed, 517 insertions(+), 533 deletions(-) diff --git a/apps/desktop/electron/app-store.ts b/apps/desktop/electron/app-store.ts index 905cb47d..09f305a8 100644 --- a/apps/desktop/electron/app-store.ts +++ b/apps/desktop/electron/app-store.ts @@ -495,7 +495,6 @@ export class DesktopAppStore implements AppStoreInternals { await this.persistUiState(); return this.emit(); } - async setEnableTransparency(enabled: boolean): Promise { await this.initialize(); if (this.state.enableTransparency === enabled) { @@ -511,11 +510,23 @@ export class DesktopAppStore implements AppStoreInternals { return this.emit(); } - async setModelSettingsScopeMode(modelSettingsScopeMode: ModelSettingsScopeMode): Promise { + async setAllowMultiple(allowMultiple: boolean): Promise { await this.initialize(); - if (this.state.modelSettingsScopeMode === modelSettingsScopeMode) { + if (this.state.allowMultiple === allowMultiple) { return this.emit(); } + this.state = { + ...this.state, + allowMultiple, + lastError: undefined, + revision: this.state.revision + 1, + }; + await this.persistUiState(); + return this.emit(); + } + + async setModelSettingsScopeMode(modelSettingsScopeMode: ModelSettingsScopeMode): Promise { + await this.initialize(); if (modelSettingsScopeMode === "app-global") { await this.restoreGlobalModelSettings(this.state.globalModelSettings); } diff --git a/apps/desktop/electron/main.ts b/apps/desktop/electron/main.ts index 9ddfc13c..fcb022ec 100644 --- a/apps/desktop/electron/main.ts +++ b/apps/desktop/electron/main.ts @@ -10,8 +10,8 @@ import { type MenuItemConstructorOptions, type MessageBoxOptions, } from "electron"; -import { randomUUID } from "node:crypto"; import { readFileSync } from "node:fs"; +import { randomUUID } from "node:crypto"; import { readFile, stat } from "node:fs/promises"; import path from "node:path"; import { pathToFileURL } from "node:url"; @@ -581,6 +581,9 @@ app.whenReady().then(async () => { ipcMain.handle(desktopIpc.setDefaultModel, (_event, workspaceId: string, provider: string, modelId: string) => store.setDefaultModel(workspaceId, provider, modelId), ); + ipcMain.handle(desktopIpc.setAllowMultiple, (_event, allowMultiple: boolean) => + store.setAllowMultiple(allowMultiple), + ); ipcMain.handle( desktopIpc.setDefaultThinkingLevel, (_event, workspaceId: string, thinkingLevel) => store.setDefaultThinkingLevel(workspaceId, thinkingLevel), diff --git a/apps/desktop/electron/preload.ts b/apps/desktop/electron/preload.ts index 7af681bc..b9a0b68f 100644 --- a/apps/desktop/electron/preload.ts +++ b/apps/desktop/electron/preload.ts @@ -180,6 +180,8 @@ contextBridge.exposeInMainWorld("piApp", { ipcRenderer.invoke(desktopIpc.respondToHostUiRequest, workspaceId, sessionId, response) as Promise, setNotificationPreferences: (preferences: Partial) => ipcRenderer.invoke(desktopIpc.setNotificationPreferences, preferences) as Promise, + setAllowMultiple: (allowMultiple: boolean) => + ipcRenderer.invoke(desktopIpc.setAllowMultiple, allowMultiple) as Promise, setIntegratedTerminalShell: (shellPath: string) => ipcRenderer.invoke(desktopIpc.setIntegratedTerminalShell, shellPath) as Promise, setEnableTransparency: (enabled: boolean) => diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/App.tsx index 7f8ab7bf..a58b7ea0 100644 --- a/apps/desktop/src/App.tsx +++ b/apps/desktop/src/App.tsx @@ -1648,6 +1648,10 @@ export default function App() { const handleSetIntegratedTerminalShell = (shellPath: string) => { void updateSnapshot(api, setSnapshot, () => api.setIntegratedTerminalShell(shellPath)); + const handleToggleAllowMultiple = (enabled: boolean) => { + void updateSnapshot(api, setSnapshot, () => api.setAllowMultiple(enabled)); + }; + }; const handleRequestNotificationPermission = () => { @@ -1897,6 +1901,7 @@ export default function App() { integratedTerminalShell={snapshot.integratedTerminalShell} themeMode={themeMode} enableTransparency={snapshot.enableTransparency} + allowMultiple={snapshot.allowMultiple} onLoginProvider={handleLoginProvider} onLogoutProvider={handleLogoutProvider} onSetProviderApiKey={handleSetProviderApiKey} @@ -1908,6 +1913,7 @@ export default function App() { onRequestNotificationPermission={handleRequestNotificationPermission} onOpenSystemNotificationSettings={handleOpenSystemNotificationSettings} onSetScopedModelPatterns={handleSetScopedModelPatterns} + onToggleAllowMultiple={handleToggleAllowMultiple} onSetThemeMode={handleSetThemeMode} onSetThinkingLevel={handleSetThinkingLevel} onToggleSkillCommands={handleToggleSkillCommands} diff --git a/apps/desktop/src/desktop-state.ts b/apps/desktop/src/desktop-state.ts index ba6b485f..83c1439b 100644 --- a/apps/desktop/src/desktop-state.ts +++ b/apps/desktop/src/desktop-state.ts @@ -167,6 +167,7 @@ export interface DesktopAppState { readonly sessionCommandsBySession: Readonly>; readonly sessionExtensionUiBySession: Readonly>; readonly extensionCommandCompatibilityByWorkspace: Readonly>; + readonly allowMultiple: boolean; readonly reasoningStreamingMessageIdBySession: Readonly>; readonly notificationPreferences: NotificationPreferences; readonly integratedTerminalShell: string; @@ -213,6 +214,7 @@ export function createEmptyDesktopAppState(): DesktopAppState { backgroundFailure: true, attentionNeeded: true, }, + allowMultiple: false, integratedTerminalShell: "", lastViewedAtBySession: {}, workspaceOrder: [], diff --git a/apps/desktop/src/ipc.ts b/apps/desktop/src/ipc.ts index 233b3f7e..bdc8b655 100644 --- a/apps/desktop/src/ipc.ts +++ b/apps/desktop/src/ipc.ts @@ -68,6 +68,7 @@ export const desktopIpc = { setSkillEnabled: "pi-gui:set-skill-enabled", setExtensionEnabled: "pi-gui:set-extension-enabled", respondToHostUiRequest: "pi-gui:respond-to-host-ui-request", + setAllowMultiple: "pi-gui:set-allow-multiple", setNotificationPreferences: "pi-gui:set-notification-preferences", setIntegratedTerminalShell: "pi-gui:set-integrated-terminal-shell", setEnableTransparency: "pi-gui:set-enable-transparency", @@ -273,6 +274,7 @@ export interface PiDesktopApi { | { readonly requestId: string; readonly cancelled: true }, ): Promise; setNotificationPreferences(preferences: Partial): Promise; + setAllowMultiple(allowMultiple: boolean): Promise; setIntegratedTerminalShell(shell: string): Promise; setEnableTransparency(enabled: boolean): Promise; ensureTerminalPanel( diff --git a/apps/desktop/src/settings-general-section.tsx b/apps/desktop/src/settings-general-section.tsx index 62f893c3..14b8c2ea 100644 --- a/apps/desktop/src/settings-general-section.tsx +++ b/apps/desktop/src/settings-general-section.tsx @@ -5,7 +5,9 @@ import { SettingsGroup, SettingsInfoRow, SettingsRow } from "./settings-utils"; interface SettingsGeneralSectionProps { readonly runtime?: RuntimeSnapshot; + readonly allowMultiple: boolean; readonly modelSettingsScopeMode: ModelSettingsScopeMode; + readonly onToggleAllowMultiple: (enabled: boolean) => void; readonly integratedTerminalShell: string; readonly onSetModelSettingsScopeMode: (mode: ModelSettingsScopeMode) => void; readonly onSetIntegratedTerminalShell: (shellPath: string) => void; @@ -16,6 +18,8 @@ export function SettingsGeneralSection({ runtime, modelSettingsScopeMode, integratedTerminalShell, + allowMultiple, + onToggleAllowMultiple, onSetModelSettingsScopeMode, onSetIntegratedTerminalShell, onToggleSkillCommands, @@ -88,6 +92,14 @@ export function SettingsGeneralSection({ + + onToggleAllowMultiple(event.target.checked)} + /> + diff --git a/apps/desktop/src/settings-view.tsx b/apps/desktop/src/settings-view.tsx index 950d3a17..0997bfb2 100644 --- a/apps/desktop/src/settings-view.tsx +++ b/apps/desktop/src/settings-view.tsx @@ -17,6 +17,7 @@ interface SettingsViewProps { readonly notificationPreferences: NotificationPreferences; readonly notificationPermissionStatus: DesktopNotificationPermissionStatus; readonly notificationPermissionPending: boolean; + readonly allowMultiple: boolean; readonly modelSettingsScopeMode: ModelSettingsScopeMode; readonly integratedTerminalShell: string; readonly themeMode: "system" | "light" | "dark"; @@ -31,6 +32,7 @@ interface SettingsViewProps { readonly onSetProviderApiKey: (providerId: string, apiKey: string) => Promise; readonly onRemoveProviderApiKey: (providerId: string) => Promise; readonly onSetNotificationPreferences: (preferences: Partial) => void; + readonly onToggleAllowMultiple: (enabled: boolean) => void; readonly onSetIntegratedTerminalShell: (shellPath: string) => void; readonly onRequestNotificationPermission: () => void; readonly onOpenSystemNotificationSettings: () => void; @@ -47,6 +49,7 @@ export function SettingsView({ notificationPermissionPending, modelSettingsScopeMode, integratedTerminalShell, + allowMultiple, themeMode, enableTransparency, onSetModelSettingsScopeMode, @@ -61,6 +64,7 @@ export function SettingsView({ onSetNotificationPreferences, onSetIntegratedTerminalShell, onRequestNotificationPermission, + onToggleAllowMultiple, onOpenSystemNotificationSettings, onSetThemeMode, onSetEnableTransparency, @@ -107,7 +111,9 @@ export function SettingsView({ integratedTerminalShell={integratedTerminalShell} onSetModelSettingsScopeMode={onSetModelSettingsScopeMode} onSetIntegratedTerminalShell={onSetIntegratedTerminalShell} + allowMultiple={allowMultiple} onToggleSkillCommands={onToggleSkillCommands} + onToggleAllowMultiple={onToggleAllowMultiple} /> ) : null} diff --git a/packages/session-driver/package.json b/packages/session-driver/package.json index e96fa7a6..06f0652c 100644 --- a/packages/session-driver/package.json +++ b/packages/session-driver/package.json @@ -25,5 +25,8 @@ "scripts": { "build": "tsc -p tsconfig.json", "typecheck": "tsc -p tsconfig.json --noEmit" + }, + "dependencies": { + "@earendil-works/pi-ai": "^0.75.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02f90c7d..39a634fc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,10 @@ settings: importers: .: + dependencies: + '@earendil-works/pi-ai': + specifier: ^0.75.5 + version: 0.75.5(ws@8.20.0)(zod@4.3.6) devDependencies: '@playwright/test': specifier: ^1.52.0 @@ -24,8 +28,8 @@ importers: specifier: ^3.1036.0 version: 3.1037.0 '@earendil-works/pi-coding-agent': - specifier: ^0.74.0 - version: 0.74.0(ws@8.20.0)(zod@4.3.6) + specifier: ^0.75.5 + version: 0.75.5(ws@8.20.0)(zod@4.3.6) '@pi-gui/pi-sdk-driver': specifier: workspace:* version: link:../../packages/pi-sdk-driver @@ -140,7 +144,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.7.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)) + version: 4.7.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -152,16 +156,16 @@ importers: version: 26.8.1(electron-builder-squirrel-windows@26.8.1) electron-vite: specifier: ^5.0.0 - version: 5.0.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)) + version: 5.0.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)) playwright: specifier: ^1.58.2 version: 1.58.2 vite: specifier: ^6.2.0 - version: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) + version: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)) + version: 6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)) apps/website: dependencies: @@ -191,8 +195,8 @@ importers: packages/pi-sdk-driver: dependencies: '@earendil-works/pi-coding-agent': - specifier: ^0.74.0 - version: 0.74.0(ws@8.20.0)(zod@4.3.6) + specifier: ^0.75.5 + version: 0.75.5(ws@8.20.0)(zod@4.3.6) '@pi-gui/catalogs': specifier: workspace:* version: link:../catalogs @@ -200,7 +204,11 @@ importers: specifier: workspace:* version: link:../session-driver - packages/session-driver: {} + packages/session-driver: + dependencies: + '@earendil-works/pi-ai': + specifier: ^0.75.5 + version: 0.75.5(ws@8.20.0)(zod@4.3.6) video: dependencies: @@ -252,52 +260,56 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-bedrock-runtime@3.1037.0': - resolution: {integrity: sha512-Evla4DUdBf1pQpQa7pbfquj7jRaRktkI0qGoWBJBXWB9wQISzJ8OEI4sHugk/W6SF47C7hMP/o3Z/XBrfnejCw==} + '@aws-sdk/client-bedrock-runtime@3.1048.0': + resolution: {integrity: sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/core@3.974.15': + resolution: {integrity: sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.974.5': resolution: {integrity: sha512-lMPlYlYfQdNZhlkJgnkmESwrY+hNh3PljmZ+37oAqLNdJ6rnILAwFSyc6B3bJeDOtMORNnMQIej0aTRuOlDyhQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.31': - resolution: {integrity: sha512-X/yGB73LmDW/6MdDJGCDzZBUXnM3ys4vs9l+5ZTJmiEswDdP1OjeoAFlFjVGS9o4KB2wZWQ9KOfdVNSSK6Ep3w==} + '@aws-sdk/credential-provider-env@3.972.41': + resolution: {integrity: sha512-n1EbJ98yvPWWdHZZv8bRBMqqDQJrtgtxyJ4xLy2Uqrh25BCOZQ7nnS1CsFXvuH8r0b0KVHDZEGEH5FxmEMP8jg==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.33': - resolution: {integrity: sha512-c0ZF+lwoWVvX5iCaGKL5T/4DnIw88CGqxA0BcBs3U86mIp5EZYPVg+KSPkMXOyokmADvNewiMUfSG2uFwjRp0g==} + '@aws-sdk/credential-provider-http@3.972.43': + resolution: {integrity: sha512-TT76RN1NkI9WoyZqCNxOw6/WBMF7pYOTJcXbMokNFU+euSG40Kaf/t/FhDACVZWP+43wEM6ZynIPIkzS1wR1iA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.972.35': - resolution: {integrity: sha512-jsU4u/cRkKFLKQS0k918FQ27fzXLG5ENiLWQMYE6581zLeI2hWh04ptlrvZMB3wJT/5d+vSzJk74X1CMFr4y8Q==} + '@aws-sdk/credential-provider-ini@3.972.46': + resolution: {integrity: sha512-hvcgcwOiS0nb2XFb5Op1Pz/vYaWz5K8kKullziGpdNRuG0NwzRXseuPt2CoBqknHGaSPVesu1aOn2OcctEYdCA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.35': - resolution: {integrity: sha512-5oa3j0cA50jPqgNhZ9XdJVopuzUf1klRb28/2MfLYWWiPi9DRVvbrBWT+DidbHTT36520VuXZJahQwR+YgSjrg==} + '@aws-sdk/credential-provider-login@3.972.45': + resolution: {integrity: sha512-MZQv4SNjByk1iOKmrqmzcUF/uCB05wjvEHyXKxmGQTUANTIVayX6HPUF0bzkWLvtnkH7sAn9kUCfkXbSpj9sDA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.36': - resolution: {integrity: sha512-4nT2T8Z7vH8KE9EdjEsuIlHpZSlcaK2PrKbQBjuUGU46BCCzF3WvP0u0Uiosni3Ykmmn4rWLVawoOCLotUtCbg==} + '@aws-sdk/credential-provider-node@3.972.47': + resolution: {integrity: sha512-HrId+C0DWA5qDIyLG64/kjUB2RNtPypxmABnIctK+TA1P1kHlOYoE/Wf5T5tKOMKgb08P7k/zNyhvfJ3lh5Oag==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.31': - resolution: {integrity: sha512-eKeT4MXumpBJsrDLCYcSzIkFPVTFn/es7It2oogp2OhU/ic7P/+xzFpQx9ZhwtXS57Mc5S42BPWi7lHmvs/nYg==} + '@aws-sdk/credential-provider-process@3.972.41': + resolution: {integrity: sha512-7I/n1zkysouLOWvkEhjNEP4vMnD2v4kzzr3/3QBdrripEpn7ap1/I5DF3Hou1SUqkKWo1f3oPGMyFAA1FAMvsQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.972.35': - resolution: {integrity: sha512-bCuBdfnj0KGDMdLp6utMTLiJcFN2ek9EgZinxQZZSc3FxjJ/HSqeqab2cjbnoNfy8RM6suDCsRkmVY1izp9I+A==} + '@aws-sdk/credential-provider-sso@3.972.45': + resolution: {integrity: sha512-oHgbz/eFD8IKiksqDsz9ZMU4A59BpQq4QwJedBnGD80ZqYcHPPHZBwjBnxLVkB7iRVVHWpDclR8yWdD2PkQIUA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.35': - resolution: {integrity: sha512-swW6Bwvl8lanyEMtZOWE/oR6yqcRQH4HTQZUVsnDVgoXvRjRywpYpLv2BWwjUFyjPrqsdX6FeTkf4tMSe/qFTQ==} + '@aws-sdk/credential-provider-web-identity@3.972.45': + resolution: {integrity: sha512-CDhzKdb2onv5bpnjn/acgdNmJOQthPDLsPizU7rZflsEcgMMp8Mlri+U5hdxf8ldvZJpvM3vLU6D56vfJm5AMQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/eventstream-handler-node@3.972.14': - resolution: {integrity: sha512-m4X56gxG76/CKfxNVbOFuYwnAZcHgS6HOH8lgp15HoGHIAVTcZfZrXvcYzJFOMLEJgVn+JHBu6EiNV+xSNXXFg==} + '@aws-sdk/eventstream-handler-node@3.972.18': + resolution: {integrity: sha512-QPQhwY/fstR8fMZFWrsJRNoTP6D1RjRPHGRX7u9/VkF3opCsvD0oXPz6qzkX94SchzvuS5vyFZbJbPcMEs2Jeg==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-eventstream@3.972.10': - resolution: {integrity: sha512-QUqLs7Af1II9X4fCRAu+EGHG3KHyOp4RkuLhRKoA3NuFlh6TL8i+zXBl8w2LUxqm44B/Kom45hgSlwA1SpTsXQ==} + '@aws-sdk/middleware-eventstream@3.972.14': + resolution: {integrity: sha512-DoZ4djVj/74XQ6M/IwxuKh543tTvLCL7u1Dx+VDHMgW9yGNrFSJJ1l0LrUQRaekic5CB12wUiiOoHL0VI6H0gg==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-host-header@3.972.10': @@ -320,10 +332,14 @@ packages: resolution: {integrity: sha512-hOFWNOjVmOocpRlrU04nYxjMOeoe0Obu5AXEuhB8zblMCPl3cG1hdluQCZERRKFyhMQjwZnDbhSHjoMUjetFGw==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-websocket@3.972.16': - resolution: {integrity: sha512-86+S9oCyRVGzoMRpQhxkArp7kD2K75GPmaNevd9B6EyNhWoNvnCZZ3WbgN4j7ZT+jvtvBCGZvI2XHsWZJ+BRIg==} + '@aws-sdk/middleware-websocket@3.972.23': + resolution: {integrity: sha512-F0d4A9pJFiwljyKgSwU1Z5n+CXSv8bp+V5SthbS2rftB8wBN9z1K2Yyv3xbeK0AM2T0g4q6Ptf0shFF+oQZyiA==} engines: {node: '>= 14.0.0'} + '@aws-sdk/nested-clients@3.997.13': + resolution: {integrity: sha512-2pA6eyb5nSo/ZD2cayhOTEMoGQYgspq0RI05GDLkzQ3ajZ6isS6waV6E92Am/hz4LIlLUTrbwPLurJ/fuiHvkg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/nested-clients@3.997.3': resolution: {integrity: sha512-SivE6GP228IVgfsrr2c/vqTg95X0Qj39Yw4uIrcddpkUzIltNMoNOR62leHOLhODfjv9K8X2mPTwS69A5kT0nQ==} engines: {node: '>=20.0.0'} @@ -336,18 +352,30 @@ packages: resolution: {integrity: sha512-/rXhMXteD+BqhFd0nYprAgcZ/KtU+963uftPqd3tiFcFfooHZINXUGtOmo2SQjRVauCTNqIEzkwuSETdZFqTTA==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1036.0': - resolution: {integrity: sha512-aNSJ6jjDYayxN9ZA1JpycVScX93Lx03kKZ1EXt3DGOTahcWVLJj3oLAlop0xKP+vP2Ga2t49p1tEaMkTbCCaZA==} + '@aws-sdk/signature-v4-multi-region@3.996.30': + resolution: {integrity: sha512-HULDLMVzkmTSEv6//7kx2kRevp/VYUpm8hJNNFbmhxDn0fUiGTxVcM9yg31TukvTq8nyOBDUN2gH0o5IRbKjdw==} engines: {node: '>=20.0.0'} '@aws-sdk/token-providers@3.1037.0': resolution: {integrity: sha512-csxa484KboWLs3f8jFQ5v9RwH8FVf0fQ+SO3GSXyu4Jtinhh4qXmOWLSVX30RBpB933dZaKGHGEXzEEY88NqRw==} engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.1048.0': + resolution: {integrity: sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1056.0': + resolution: {integrity: sha512-81duvlltQlsfn5K+o8zILcystBRdbT1G2JJYVCML5NZHBz4CL/zf+sAemCtBh/uh6RQUMyInGeZLQ7/8igZhbA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/types@3.973.8': resolution: {integrity: sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==} engines: {node: '>=20.0.0'} + '@aws-sdk/types@3.973.9': + resolution: {integrity: sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/util-arn-parser@3.972.3': resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==} engines: {node: '>=20.0.0'} @@ -356,10 +384,6 @@ packages: resolution: {integrity: sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-format-url@3.972.10': - resolution: {integrity: sha512-DEKiHNJVtNxdyTeQspzY+15Po/kHm6sF0Cs4HV9Q2+lplB63+DrvdeiSoOSdWEWAoO2RcY1veoXVDz2tWxWCgQ==} - engines: {node: '>=20.0.0'} - '@aws-sdk/util-locate-window@3.965.5': resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} engines: {node: '>=20.0.0'} @@ -380,6 +404,10 @@ packages: resolution: {integrity: sha512-Cw8IOMdBUEIl8ZlhRC3Dc/E64D5B5/8JhV6vhPLiPfJwcRC84S6F8aBOIi/N4vR9ZyA4I5Cc0Ateb/9EHaJXeQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/xml-builder@3.972.26': + resolution: {integrity: sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g==} + engines: {node: '>=20.0.0'} + '@aws/lambda-invoke-store@0.2.4': resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} engines: {node: '>=18.0.0'} @@ -482,9 +510,6 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@borewit/text-codec@0.2.2': - resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==} - '@develar/schema-utils@2.6.5': resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} engines: {node: '>= 8.9.0'} @@ -511,23 +536,23 @@ packages: peerDependencies: react: '>=16.8.0' - '@earendil-works/pi-agent-core@0.74.0': - resolution: {integrity: sha512-6GMR7/wwjEJ1EsXLWEz03QOWin4AMrJ/AZoMpgm5DJ6GHsF6q6GOhQbj5Zip4dow3vo/TmBAVqM+vmGfrjGAFQ==} - engines: {node: '>=20.0.0'} + '@earendil-works/pi-agent-core@0.75.5': + resolution: {integrity: sha512-LHygOgsW2pgXKb3IkXkOAeZPovHr9VF+EixgXVsDNuB4jmhEOXgshy/zksZ7slkUAx10OQ9W1Ed/2jsnhd1NqA==} + engines: {node: '>=22.19.0'} - '@earendil-works/pi-ai@0.74.0': - resolution: {integrity: sha512-7M7qcrZY/KEkH4wFkX3eqzvmKru4O88wezNKoN0KD2m4aAOmp9tdW2xCmUgSTSWlKB7b2Xw9QtAgrzHtg6t6iw==} - engines: {node: '>=20.0.0'} + '@earendil-works/pi-ai@0.75.5': + resolution: {integrity: sha512-zf1F5kXk1pqZeFShXOqq9ibUk8QdtRoLCDPAjO+hj44e3EUs9/GFO2qnhTC5+JA2uwVCx+WCNe1PiCjlBYWm5w==} + engines: {node: '>=22.19.0'} hasBin: true - '@earendil-works/pi-coding-agent@0.74.0': - resolution: {integrity: sha512-Q5GikbB5vRBrsrrf/uvet53rPSQ1sn5I5mO+l7sIobdXYpS04/X2oOc2UHFm90fNdkl3yU+ANTZL0zOtHbnqRw==} - engines: {node: '>=20.6.0'} + '@earendil-works/pi-coding-agent@0.75.5': + resolution: {integrity: sha512-O3CCQDYy28D4uwtP6zZkdEwzHN6X22v49Sb0+SZTC7x37V/YfmogrWPiaFoWeoc2hmdKhSATI7ZAK5bQbJG5NA==} + engines: {node: '>=22.19.0'} hasBin: true - '@earendil-works/pi-tui@0.74.0': - resolution: {integrity: sha512-1aIfXZp7D/z+1VlZX8BZcs6pgO8rjmil7kwyhctNDsWvce3Yfl8GVgu4eq+I0Mjhr8Cj+ipBiv9CLIzdoyCOIQ==} - engines: {node: '>=20.0.0'} + '@earendil-works/pi-tui@0.75.5': + resolution: {integrity: sha512-LkXUM1/49pvzzeI39Y5wjBMlgafcCf67HCLhB9Z7yuXHy4XgT+VqxWcZVW5hBdhQsHZd0znjJotfGH1BzxMfiA==} + engines: {node: '>=22.19.0'} '@electron/asar@3.4.1': resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} @@ -884,8 +909,8 @@ packages: cpu: [x64] os: [win32] - '@google/genai@1.50.1': - resolution: {integrity: sha512-YbkX7H9+1Pt8wOt7DDREy8XSoiL6fRDzZQRyaVBarFf8MR3zHGqVdvM4cLbDXqPhxqvegZShgfxb8kw9C7YhAQ==} + '@google/genai@1.52.0': + resolution: {integrity: sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.25.2 @@ -1065,67 +1090,67 @@ packages: resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} engines: {node: '>= 10.0.0'} - '@mariozechner/clipboard-darwin-arm64@0.3.2': - resolution: {integrity: sha512-uBf6K7Je1ihsgvmWxA8UCGCeI+nbRVRXoarZdLjl6slz94Zs1tNKFZqx7aCI5O1i3e0B6ja82zZ06BWrl0MCVw==} + '@mariozechner/clipboard-darwin-arm64@0.3.6': + resolution: {integrity: sha512-HjaisYCAbHi/1+N1yDAQHc8ZXGffufIUT5NSOSVR3f3AuMDusxTtnbK8tZ7JFDkShua1oNGZoNwQHsc8MPtE0Q==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@mariozechner/clipboard-darwin-universal@0.3.2': - resolution: {integrity: sha512-mxSheKTW2U9LsBdXy0SdmdCAE5HqNS9QUmpNHLnfJ+SsbFKALjEZc5oRrVMXxGQSirDvYf5bjmRyT0QYYonnlg==} + '@mariozechner/clipboard-darwin-universal@0.3.6': + resolution: {integrity: sha512-8BWtPjOtJOJoykml3w0fx0zRrfWP31mXrJwfoA7xzNprkZw1uolCNfgmjDiVBseoKjp16EGITz7bN+61qn8dWA==} engines: {node: '>= 10'} os: [darwin] - '@mariozechner/clipboard-darwin-x64@0.3.2': - resolution: {integrity: sha512-U1BcVEoidvwIp95+HJswSW+xr28EQiHR7rZjH6pn8Sja5yO4Yoe3yCN0Zm8Lo72BbSOK/fTSq0je7CJpaPCspg==} + '@mariozechner/clipboard-darwin-x64@0.3.6': + resolution: {integrity: sha512-p9syiZD1kU4I+1ya7f7g+zD1GiUvR8fdlRlNmgsZNWlyjtc8rlV2EjTLd/35x1LsdBq020GVvtzp0ZmPgBI09Q==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@mariozechner/clipboard-linux-arm64-gnu@0.3.2': - resolution: {integrity: sha512-BsinwG3yWTIjdgNCxsFlip7LkfwPk+ruw/aFCXHUg/fb5XC/Ksp+YMQ7u0LUtiKzIv/7LMXgZInJQH6gxbAaqQ==} + '@mariozechner/clipboard-linux-arm64-gnu@0.3.6': + resolution: {integrity: sha512-5JFf5rGofrm+V29HNF+wLthXphHdQpMbKDUYJ5tML6/Z5DLlLOV/9Ak4kDPtYyZ+Dzf+kAusE0VsFg4+tfP1IA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@mariozechner/clipboard-linux-arm64-musl@0.3.2': - resolution: {integrity: sha512-0/Gi5Xq2V6goXBop19ePoHvXsmJD9SzFlO3S+d6+T2b+BlPcpOu3Oa0wTjl+cZrLAAEzA86aPNBI+VVAFDFPKw==} + '@mariozechner/clipboard-linux-arm64-musl@0.3.6': + resolution: {integrity: sha512-JlVjxxw0GbGC0djXYWRIqyteO3J1KZ/QG3udlEFaOD5TLOM1FnmXXAPDQBqr+aBVr720ef9K00dirYnJ0LDCtw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@mariozechner/clipboard-linux-riscv64-gnu@0.3.2': - resolution: {integrity: sha512-2AFFiXB24qf0zOZsxI1GJGb9wQGlOJyN6UwoXqmKS3dpQi/l6ix30IzDDA4c4ZcCcx4D+9HLYXhC1w7Sov8pXA==} + '@mariozechner/clipboard-linux-riscv64-gnu@0.3.6': + resolution: {integrity: sha512-4t8BUi5zZ+L77otFQVnVSlaTyAX4TVk9EqQm4syMrEQp96trFEHEwwNHcNEBGzYv5+K7mxay50TthYkz47OWzQ==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - '@mariozechner/clipboard-linux-x64-gnu@0.3.2': - resolution: {integrity: sha512-v6fVnsn7WMGg73Dab8QMwyFce7tzGfgEixKgzLP8f1GJqkJZi5zO4k4FOHzSgUufgLil63gnxvMpjWkgfeQN7A==} + '@mariozechner/clipboard-linux-x64-gnu@0.3.6': + resolution: {integrity: sha512-trtPwcNLW37irwQCJLtCxLw757jjJZk3TSnY/MU9bhtWtA3K9b/eLW0e4RGhUXDoFRds9opNWWaUDuFLa8dm0w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@mariozechner/clipboard-linux-x64-musl@0.3.2': - resolution: {integrity: sha512-xVUtnoMQ8v2JVyfJLKKXACA6avdnchdbBkTsZs8BgJQo29qwCp5NIHAUO8gbJ40iaEGToW5RlmVk2M9V0HsHEw==} + '@mariozechner/clipboard-linux-x64-musl@0.3.6': + resolution: {integrity: sha512-WfnzIvOCCWQiN0MmltCEo6cLceUDbYe+I7xyFZjaps5A+2Op/M2CY7Rey+C4ucQhrvmpoHmTSFgY9ODWk7snoA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@mariozechner/clipboard-win32-arm64-msvc@0.3.2': - resolution: {integrity: sha512-AEgg95TNi8TGgak2wSXZkXKCvAUTjWoU1Pqb0ON7JHrX78p616XUFNTJohtIon3e0w6k0pYPZeCuqRCza/Tqeg==} + '@mariozechner/clipboard-win32-arm64-msvc@0.3.6': + resolution: {integrity: sha512-+8+1aHYsBPUjmW3otmWlg+Hijt0iJvoBBs5e0mxFeUd4gDaKMB8Bn6x7c6KVtscg7E5j5NFXnwQqNSIAO4p8zQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@mariozechner/clipboard-win32-x64-msvc@0.3.2': - resolution: {integrity: sha512-tGRuYpZwDOD7HBrCpyRuhGnHHSCknELvqwKKUG4JSfSB7JIU7LKRh6zx6fMUOQd8uISK35TjFg5UcNih+vJhFA==} + '@mariozechner/clipboard-win32-x64-msvc@0.3.6': + resolution: {integrity: sha512-S4xfPmERC8ZkiLHe3vekZCjdDwNEETCuvCgQK2kP6/TnvmUkq1y2Pk+DjM4t8uh9KMX9bH4zs5ePcKa8GTXmfg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@mariozechner/clipboard@0.3.5': - resolution: {integrity: sha512-D3F+UrU9CR7roJt0zDLp6Oc+4/KlLDIrN4frH+6V90SJNW2KKUec1oCQIPaaDjCqeOsQyX9dyqYbImIQIM45PA==} + '@mariozechner/clipboard@0.3.6': + resolution: {integrity: sha512-MXdtr+6+ntlIVHdrZYuZNQydu6o8yZswFJ2Ln81j2O/Y9B/LDHvEaIm95xWNPkjGTWriSOeLnQJRFs6dYb60bg==} engines: {node: '>= 10'} '@mediabunny/aac-encoder@1.39.2': @@ -1582,34 +1607,26 @@ packages: resolution: {integrity: sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.2.14': - resolution: {integrity: sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-codec@4.2.14': - resolution: {integrity: sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-browser@4.2.14': - resolution: {integrity: sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==} + '@smithy/core@3.24.5': + resolution: {integrity: sha512-Kt8phUg45M15EjhYAbZ+fFikYneijLu9Liugz8ZsYz2i8j0hzGv27LWKpEHYRfvj+LyCOSijpcR/2i8RouV+cA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@4.3.14': - resolution: {integrity: sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-node@4.2.14': - resolution: {integrity: sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==} + '@smithy/credential-provider-imds@4.2.14': + resolution: {integrity: sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.2.14': - resolution: {integrity: sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==} + '@smithy/credential-provider-imds@4.3.6': + resolution: {integrity: sha512-tHhdiWZfG1ZIh2YcRfPJmY2gHcBmqbAzqm3ER4TIDFYsSEqTD5tICT7cgQ/kI8LRakxp12myOYyK68XPn7MnHw==} engines: {node: '>=18.0.0'} '@smithy/fetch-http-handler@5.3.17': resolution: {integrity: sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==} engines: {node: '>=18.0.0'} + '@smithy/fetch-http-handler@5.4.5': + resolution: {integrity: sha512-SK3VMeH0fibgdTg2QeB+O4p7Yy/2E5HBOHJeC58FshkDdeuX8lOgO7PfjYfLyPLP1ch55j91cQqKBzDS0mRjSQ==} + engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.2.14': resolution: {integrity: sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==} engines: {node: '>=18.0.0'} @@ -1650,8 +1667,12 @@ packages: resolution: {integrity: sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.6.1': - resolution: {integrity: sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==} + '@smithy/node-http-handler@4.7.3': + resolution: {integrity: sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.7.5': + resolution: {integrity: sha512-3dA9TQ+ybRSZ/m0wnbZhiBy4Dezjgq1Ib/ZZrYTpJDBgpoLLU/SDzZc/g0x0MNAdOJe1wPcM+x2PBRmoOur+Sw==} engines: {node: '>=18.0.0'} '@smithy/property-provider@4.2.14': @@ -1682,6 +1703,10 @@ packages: resolution: {integrity: sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==} engines: {node: '>=18.0.0'} + '@smithy/signature-v4@5.4.5': + resolution: {integrity: sha512-QBJKWGqIknH0dc9LWpfH1mkdokAx6iXYN3UcQ3eY6uIEyScuoQAhfl94ge7ozUy9WgFUdE8xsvwBjaYBbWmPNA==} + engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.12.13': resolution: {integrity: sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==} engines: {node: '>=18.0.0'} @@ -1690,6 +1715,10 @@ packages: resolution: {integrity: sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==} engines: {node: '>=18.0.0'} + '@smithy/types@4.14.2': + resolution: {integrity: sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==} + engines: {node: '>=18.0.0'} + '@smithy/url-parser@4.2.14': resolution: {integrity: sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==} engines: {node: '>=18.0.0'} @@ -1769,13 +1798,6 @@ packages: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - '@tokenizer/inflate@0.4.1': - resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} - engines: {node: '>=18'} - - '@tokenizer/token@0.3.0': - resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -1836,9 +1858,6 @@ packages: '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/mime-types@2.1.4': - resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} - '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -2011,9 +2030,6 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - app-builder-bin@5.0.0-alpha.12: resolution: {integrity: sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==} @@ -2105,6 +2121,10 @@ packages: resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} engines: {node: 18 || 20 || >=22} + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + browserslist@4.28.1: resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -2198,11 +2218,6 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cli-highlight@2.1.11: - resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true - cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -2583,10 +2598,17 @@ packages: fast-xml-builder@1.1.5: resolution: {integrity: sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==} + fast-xml-builder@1.2.0: + resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} + fast-xml-parser@5.7.1: resolution: {integrity: sha512-8Cc3f8GUGUULg34pBch/KGyPLglS+OFs05deyOlY7fL2MTagYPKrVQNmR1fLF/yJ9PH5ZSTd3YDF6pnmeZU+zA==} hasBin: true + fast-xml-parser@5.7.3: + resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==} + hasBin: true + fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -2603,10 +2625,6 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} - file-type@21.3.4: - resolution: {integrity: sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==} - engines: {node: '>=20'} - filelist@1.0.6: resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} @@ -2681,8 +2699,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.5.0: - resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -2791,6 +2809,10 @@ packages: resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} engines: {node: ^20.17.0 || >=22.9.0} + hosted-git-info@9.0.3: + resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} + engines: {node: ^20.17.0 || >=22.9.0} + html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} @@ -2993,9 +3015,6 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - koffi@2.16.1: - resolution: {integrity: sha512-0Ie6CfD026dNfWSosDw9dPxPzO9Rlyo0N8m5r05S8YjytIpuilzMFDMY4IDy/8xQsTwpuVinhncD+S8n3bcYZQ==} - lazy-val@1.0.5: resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} @@ -3244,6 +3263,10 @@ packages: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} @@ -3300,9 +3323,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3386,10 +3406,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -3858,10 +3874,6 @@ packages: strnum@2.2.3: resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==} - strtok3@10.3.5: - resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==} - engines: {node: '>=18'} - style-loader@4.0.0: resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} engines: {node: '>= 18.12.0'} @@ -3935,13 +3947,6 @@ packages: engines: {node: '>=10'} hasBin: true - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - tiny-async-pool@1.3.0: resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} @@ -3959,10 +3964,6 @@ packages: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} - token-types@6.1.2: - resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} - engines: {node: '>=14.16'} - tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} @@ -3995,18 +3996,14 @@ packages: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} - typebox@1.1.33: - resolution: {integrity: sha512-+/MWwlQ1q2GSVwoxi/+u5JsHkgLQKcCN2Nsjree9c+K7GJu40qbaHrFETmfV1i9Fs1TcOVfynW+jJvIWcXtvjw==} + typebox@1.1.38: + resolution: {integrity: sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==} typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true - uint8array-extras@1.5.0: - resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} - engines: {node: '>=18'} - undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -4014,6 +4011,10 @@ packages: resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} engines: {node: '>=20.18.1'} + undici@8.3.0: + resolution: {integrity: sha512-TkUDgb6tl7KOGZ+7e8E3d2FYgUQgF6z5YypqjWmixVQSQERFcVrVg0ySADm2LVLRh5ljAaHTCR5Fmz3Q34rB7Q==} + engines: {node: '>=22.19.0'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -4063,10 +4064,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@14.0.0: - resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} - hasBin: true - verror@1.10.1: resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} engines: {node: '>=0.6.0'} @@ -4198,6 +4195,10 @@ packages: utf-8-validate: optional: true + xml-naming@0.1.0: + resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} + engines: {node: '>=16.0.0'} + xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} @@ -4216,8 +4217,8 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} hasBin: true @@ -4268,7 +4269,7 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 tslib: 2.8.1 '@aws-crypto/sha256-browser@5.2.0': @@ -4276,7 +4277,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 '@aws-sdk/util-locate-window': 3.965.5 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -4284,7 +4285,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -4293,61 +4294,37 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-bedrock-runtime@3.1037.0': + '@aws-sdk/client-bedrock-runtime@3.1048.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.5 - '@aws-sdk/credential-provider-node': 3.972.36 - '@aws-sdk/eventstream-handler-node': 3.972.14 - '@aws-sdk/middleware-eventstream': 3.972.10 - '@aws-sdk/middleware-host-header': 3.972.10 - '@aws-sdk/middleware-logger': 3.972.10 - '@aws-sdk/middleware-recursion-detection': 3.972.11 - '@aws-sdk/middleware-user-agent': 3.972.35 - '@aws-sdk/middleware-websocket': 3.972.16 - '@aws-sdk/region-config-resolver': 3.972.13 - '@aws-sdk/token-providers': 3.1037.0 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-endpoints': 3.996.8 - '@aws-sdk/util-user-agent-browser': 3.972.10 - '@aws-sdk/util-user-agent-node': 3.973.21 - '@smithy/config-resolver': 4.4.17 - '@smithy/core': 3.23.17 - '@smithy/eventstream-serde-browser': 4.2.14 - '@smithy/eventstream-serde-config-resolver': 4.3.14 - '@smithy/eventstream-serde-node': 4.2.14 - '@smithy/fetch-http-handler': 5.3.17 - '@smithy/hash-node': 4.2.14 - '@smithy/invalid-dependency': 4.2.14 - '@smithy/middleware-content-length': 4.2.14 - '@smithy/middleware-endpoint': 4.4.32 - '@smithy/middleware-retry': 4.5.5 - '@smithy/middleware-serde': 4.2.20 - '@smithy/middleware-stack': 4.2.14 - '@smithy/node-config-provider': 4.3.14 - '@smithy/node-http-handler': 4.6.1 - '@smithy/protocol-http': 5.3.14 - '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.2.14 - '@smithy/util-base64': 4.3.2 - '@smithy/util-body-length-browser': 4.2.2 - '@smithy/util-body-length-node': 4.2.3 - '@smithy/util-defaults-mode-browser': 4.3.49 - '@smithy/util-defaults-mode-node': 4.2.54 - '@smithy/util-endpoints': 3.4.2 - '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.4 - '@smithy/util-stream': 4.5.25 - '@smithy/util-utf8': 4.2.2 + '@aws-sdk/core': 3.974.15 + '@aws-sdk/credential-provider-node': 3.972.47 + '@aws-sdk/eventstream-handler-node': 3.972.18 + '@aws-sdk/middleware-eventstream': 3.972.14 + '@aws-sdk/middleware-websocket': 3.972.23 + '@aws-sdk/token-providers': 3.1048.0 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/fetch-http-handler': 5.4.5 + '@smithy/node-http-handler': 4.7.5 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + + '@aws-sdk/core@3.974.15': + dependencies: + '@aws-sdk/types': 3.973.9 + '@aws-sdk/xml-builder': 3.972.26 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/core': 3.24.5 + '@smithy/signature-v4': 5.4.5 + '@smithy/types': 4.14.2 + bowser: 2.14.1 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt '@aws-sdk/core@3.974.5': dependencies: @@ -4366,135 +4343,115 @@ snapshots: '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.31': + '@aws-sdk/credential-provider-env@3.972.41': dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.15 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.33': + '@aws-sdk/credential-provider-http@3.972.43': dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/types': 3.973.8 - '@smithy/fetch-http-handler': 5.3.17 - '@smithy/node-http-handler': 4.6.1 - '@smithy/property-provider': 4.2.14 - '@smithy/protocol-http': 5.3.14 - '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 - '@smithy/util-stream': 4.5.25 + '@aws-sdk/core': 3.974.15 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/fetch-http-handler': 5.4.5 + '@smithy/node-http-handler': 4.7.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.972.35': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/credential-provider-env': 3.972.31 - '@aws-sdk/credential-provider-http': 3.972.33 - '@aws-sdk/credential-provider-login': 3.972.35 - '@aws-sdk/credential-provider-process': 3.972.31 - '@aws-sdk/credential-provider-sso': 3.972.35 - '@aws-sdk/credential-provider-web-identity': 3.972.35 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/types': 3.973.8 - '@smithy/credential-provider-imds': 4.2.14 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 + '@aws-sdk/credential-provider-ini@3.972.46': + dependencies: + '@aws-sdk/core': 3.974.15 + '@aws-sdk/credential-provider-env': 3.972.41 + '@aws-sdk/credential-provider-http': 3.972.43 + '@aws-sdk/credential-provider-login': 3.972.45 + '@aws-sdk/credential-provider-process': 3.972.41 + '@aws-sdk/credential-provider-sso': 3.972.45 + '@aws-sdk/credential-provider-web-identity': 3.972.45 + '@aws-sdk/nested-clients': 3.997.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/credential-provider-imds': 4.3.6 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-login@3.972.35': + '@aws-sdk/credential-provider-login@3.972.45': dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/protocol-http': 5.3.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.15 + '@aws-sdk/nested-clients': 3.997.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-node@3.972.36': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.31 - '@aws-sdk/credential-provider-http': 3.972.33 - '@aws-sdk/credential-provider-ini': 3.972.35 - '@aws-sdk/credential-provider-process': 3.972.31 - '@aws-sdk/credential-provider-sso': 3.972.35 - '@aws-sdk/credential-provider-web-identity': 3.972.35 - '@aws-sdk/types': 3.973.8 - '@smithy/credential-provider-imds': 4.2.14 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 + '@aws-sdk/credential-provider-node@3.972.47': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.41 + '@aws-sdk/credential-provider-http': 3.972.43 + '@aws-sdk/credential-provider-ini': 3.972.46 + '@aws-sdk/credential-provider-process': 3.972.41 + '@aws-sdk/credential-provider-sso': 3.972.45 + '@aws-sdk/credential-provider-web-identity': 3.972.45 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/credential-provider-imds': 4.3.6 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-process@3.972.31': + '@aws-sdk/credential-provider-process@3.972.41': dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.15 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.35': + '@aws-sdk/credential-provider-sso@3.972.45': dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/token-providers': 3.1036.0 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.15 + '@aws-sdk/nested-clients': 3.997.13 + '@aws-sdk/token-providers': 3.1056.0 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-web-identity@3.972.35': + '@aws-sdk/credential-provider-web-identity@3.972.45': dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.15 + '@aws-sdk/nested-clients': 3.997.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/eventstream-handler-node@3.972.14': + '@aws-sdk/eventstream-handler-node@3.972.18': dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/eventstream-codec': 4.2.14 - '@smithy/types': 4.14.1 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-eventstream@3.972.10': + '@aws-sdk/middleware-eventstream@3.972.14': dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@aws-sdk/middleware-host-header@3.972.10': dependencies: '@aws-sdk/types': 3.973.8 '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@aws-sdk/middleware-logger@3.972.10': dependencies: '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@aws-sdk/middleware-recursion-detection@3.972.11': @@ -4502,7 +4459,7 @@ snapshots: '@aws-sdk/types': 3.973.8 '@aws/lambda-invoke-store': 0.2.4 '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@aws-sdk/middleware-sdk-s3@3.972.34': @@ -4510,12 +4467,12 @@ snapshots: '@aws-sdk/core': 3.974.5 '@aws-sdk/types': 3.973.8 '@aws-sdk/util-arn-parser': 3.972.3 - '@smithy/core': 3.23.17 + '@smithy/core': 3.24.5 '@smithy/node-config-provider': 4.3.14 '@smithy/protocol-http': 5.3.14 '@smithy/signature-v4': 5.3.14 '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/util-config-provider': 4.2.2 '@smithy/util-middleware': 4.2.14 '@smithy/util-stream': 4.5.25 @@ -4527,25 +4484,33 @@ snapshots: '@aws-sdk/core': 3.974.5 '@aws-sdk/types': 3.973.8 '@aws-sdk/util-endpoints': 3.996.8 - '@smithy/core': 3.23.17 + '@smithy/core': 3.24.5 '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/util-retry': 4.3.4 tslib: 2.8.1 - '@aws-sdk/middleware-websocket@3.972.16': + '@aws-sdk/middleware-websocket@3.972.23': dependencies: - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-format-url': 3.972.10 - '@smithy/eventstream-codec': 4.2.14 - '@smithy/eventstream-serde-browser': 4.2.14 - '@smithy/fetch-http-handler': 5.3.17 - '@smithy/protocol-http': 5.3.14 - '@smithy/signature-v4': 5.3.14 - '@smithy/types': 4.14.1 - '@smithy/util-base64': 4.3.2 - '@smithy/util-hex-encoding': 4.2.2 - '@smithy/util-utf8': 4.2.2 + '@aws-sdk/core': 3.974.15 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/fetch-http-handler': 5.4.5 + '@smithy/signature-v4': 5.4.5 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.997.13': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.15 + '@aws-sdk/signature-v4-multi-region': 3.996.30 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/fetch-http-handler': 5.4.5 + '@smithy/node-http-handler': 4.7.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@aws-sdk/nested-clients@3.997.3': @@ -4574,7 +4539,7 @@ snapshots: '@smithy/middleware-serde': 4.2.20 '@smithy/middleware-stack': 4.2.14 '@smithy/node-config-provider': 4.3.14 - '@smithy/node-http-handler': 4.6.1 + '@smithy/node-http-handler': 4.7.5 '@smithy/protocol-http': 5.3.14 '@smithy/smithy-client': 4.12.13 '@smithy/types': 4.14.1 @@ -4597,7 +4562,7 @@ snapshots: '@aws-sdk/types': 3.973.8 '@smithy/config-resolver': 4.4.17 '@smithy/node-config-provider': 4.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@aws-sdk/signature-v4-multi-region@3.996.22': @@ -4606,20 +4571,15 @@ snapshots: '@aws-sdk/types': 3.973.8 '@smithy/protocol-http': 5.3.14 '@smithy/signature-v4': 5.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1036.0': + '@aws-sdk/signature-v4-multi-region@3.996.30': dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 + '@aws-sdk/types': 3.973.9 + '@smithy/signature-v4': 5.4.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt '@aws-sdk/token-providers@3.1037.0': dependencies: @@ -4633,11 +4593,34 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/token-providers@3.1048.0': + dependencies: + '@aws-sdk/core': 3.974.15 + '@aws-sdk/nested-clients': 3.997.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1056.0': + dependencies: + '@aws-sdk/core': 3.974.15 + '@aws-sdk/nested-clients': 3.997.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/types@3.973.8': dependencies: '@smithy/types': 4.14.1 tslib: 2.8.1 + '@aws-sdk/types@3.973.9': + dependencies: + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/util-arn-parser@3.972.3': dependencies: tslib: 2.8.1 @@ -4645,18 +4628,11 @@ snapshots: '@aws-sdk/util-endpoints@3.996.8': dependencies: '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/url-parser': 4.2.14 '@smithy/util-endpoints': 3.4.2 tslib: 2.8.1 - '@aws-sdk/util-format-url@3.972.10': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/querystring-builder': 4.2.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.965.5': dependencies: tslib: 2.8.1 @@ -4664,7 +4640,7 @@ snapshots: '@aws-sdk/util-user-agent-browser@3.972.10': dependencies: '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 bowser: 2.14.1 tslib: 2.8.1 @@ -4673,7 +4649,7 @@ snapshots: '@aws-sdk/middleware-user-agent': 3.972.35 '@aws-sdk/types': 3.973.8 '@smithy/node-config-provider': 4.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/util-config-provider': 4.2.2 tslib: 2.8.1 @@ -4683,6 +4659,12 @@ snapshots: fast-xml-parser: 5.7.1 tslib: 2.8.1 + '@aws-sdk/xml-builder@3.972.26': + dependencies: + '@smithy/types': 4.14.2 + fast-xml-parser: 5.7.3 + tslib: 2.8.1 + '@aws/lambda-invoke-store@0.2.4': {} '@babel/code-frame@7.29.0': @@ -4808,8 +4790,6 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@borewit/text-codec@0.2.2': {} - '@develar/schema-utils@2.6.5': dependencies: ajv: 6.14.0 @@ -4840,84 +4820,73 @@ snapshots: react: 19.2.4 tslib: 2.8.1 - '@earendil-works/pi-agent-core@0.74.0(ws@8.20.0)(zod@4.3.6)': + '@earendil-works/pi-agent-core@0.75.5(ws@8.20.0)(zod@4.3.6)': dependencies: - '@earendil-works/pi-ai': 0.74.0(ws@8.20.0)(zod@4.3.6) - typebox: 1.1.33 + '@earendil-works/pi-ai': 0.75.5(ws@8.20.0)(zod@4.3.6) + ignore: 7.0.5 + typebox: 1.1.38 + yaml: 2.9.0 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - - aws-crt - bufferutil - supports-color - utf-8-validate - ws - zod - '@earendil-works/pi-ai@0.74.0(ws@8.20.0)(zod@4.3.6)': + '@earendil-works/pi-ai@0.75.5(ws@8.20.0)(zod@4.3.6)': dependencies: '@anthropic-ai/sdk': 0.91.1(zod@4.3.6) - '@aws-sdk/client-bedrock-runtime': 3.1037.0 - '@google/genai': 1.50.1 + '@aws-sdk/client-bedrock-runtime': 3.1048.0 + '@google/genai': 1.52.0 '@mistralai/mistralai': 2.2.1 - chalk: 5.6.2 + '@smithy/node-http-handler': 4.7.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 openai: 6.26.0(ws@8.20.0)(zod@4.3.6) partial-json: 0.1.7 - proxy-agent: 6.5.0 - typebox: 1.1.33 - undici: 7.25.0 - zod-to-json-schema: 3.25.2(zod@4.3.6) + typebox: 1.1.38 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - - aws-crt - bufferutil - supports-color - utf-8-validate - ws - zod - '@earendil-works/pi-coding-agent@0.74.0(ws@8.20.0)(zod@4.3.6)': + '@earendil-works/pi-coding-agent@0.75.5(ws@8.20.0)(zod@4.3.6)': dependencies: - '@earendil-works/pi-agent-core': 0.74.0(ws@8.20.0)(zod@4.3.6) - '@earendil-works/pi-ai': 0.74.0(ws@8.20.0)(zod@4.3.6) - '@earendil-works/pi-tui': 0.74.0 + '@earendil-works/pi-agent-core': 0.75.5(ws@8.20.0)(zod@4.3.6) + '@earendil-works/pi-ai': 0.75.5(ws@8.20.0)(zod@4.3.6) + '@earendil-works/pi-tui': 0.75.5 '@silvia-odwyer/photon-node': 0.3.4 chalk: 5.6.2 - cli-highlight: 2.1.11 + cross-spawn: 7.0.6 diff: 8.0.4 - extract-zip: 2.0.1 - file-type: 21.3.4 glob: 13.0.6 - hosted-git-info: 9.0.2 + highlight.js: 10.7.3 + hosted-git-info: 9.0.3 ignore: 7.0.5 jiti: 2.7.0 - marked: 15.0.12 - minimatch: 10.2.4 + minimatch: 10.2.5 proper-lockfile: 4.1.2 - strip-ansi: 7.2.0 - typebox: 1.1.33 - undici: 7.25.0 - uuid: 14.0.0 - yaml: 2.8.2 + typebox: 1.1.38 + undici: 8.3.0 + yaml: 2.9.0 optionalDependencies: - '@mariozechner/clipboard': 0.3.5 + '@mariozechner/clipboard': 0.3.6 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - - aws-crt - bufferutil - supports-color - utf-8-validate - ws - zod - '@earendil-works/pi-tui@0.74.0': + '@earendil-works/pi-tui@0.75.5': dependencies: - '@types/mime-types': 2.1.4 - chalk: 5.6.2 - get-east-asian-width: 1.5.0 + get-east-asian-width: 1.6.0 marked: 15.0.12 - mime-types: 3.0.2 - optionalDependencies: - koffi: 2.16.1 '@electron/asar@3.4.1': dependencies: @@ -5187,7 +5156,7 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@google/genai@1.50.1': + '@google/genai@1.52.0': dependencies: google-auth-library: 10.6.2 p-retry: 4.6.2 @@ -5345,48 +5314,48 @@ snapshots: transitivePeerDependencies: - supports-color - '@mariozechner/clipboard-darwin-arm64@0.3.2': + '@mariozechner/clipboard-darwin-arm64@0.3.6': optional: true - '@mariozechner/clipboard-darwin-universal@0.3.2': + '@mariozechner/clipboard-darwin-universal@0.3.6': optional: true - '@mariozechner/clipboard-darwin-x64@0.3.2': + '@mariozechner/clipboard-darwin-x64@0.3.6': optional: true - '@mariozechner/clipboard-linux-arm64-gnu@0.3.2': + '@mariozechner/clipboard-linux-arm64-gnu@0.3.6': optional: true - '@mariozechner/clipboard-linux-arm64-musl@0.3.2': + '@mariozechner/clipboard-linux-arm64-musl@0.3.6': optional: true - '@mariozechner/clipboard-linux-riscv64-gnu@0.3.2': + '@mariozechner/clipboard-linux-riscv64-gnu@0.3.6': optional: true - '@mariozechner/clipboard-linux-x64-gnu@0.3.2': + '@mariozechner/clipboard-linux-x64-gnu@0.3.6': optional: true - '@mariozechner/clipboard-linux-x64-musl@0.3.2': + '@mariozechner/clipboard-linux-x64-musl@0.3.6': optional: true - '@mariozechner/clipboard-win32-arm64-msvc@0.3.2': + '@mariozechner/clipboard-win32-arm64-msvc@0.3.6': optional: true - '@mariozechner/clipboard-win32-x64-msvc@0.3.2': + '@mariozechner/clipboard-win32-x64-msvc@0.3.6': optional: true - '@mariozechner/clipboard@0.3.5': + '@mariozechner/clipboard@0.3.6': optionalDependencies: - '@mariozechner/clipboard-darwin-arm64': 0.3.2 - '@mariozechner/clipboard-darwin-universal': 0.3.2 - '@mariozechner/clipboard-darwin-x64': 0.3.2 - '@mariozechner/clipboard-linux-arm64-gnu': 0.3.2 - '@mariozechner/clipboard-linux-arm64-musl': 0.3.2 - '@mariozechner/clipboard-linux-riscv64-gnu': 0.3.2 - '@mariozechner/clipboard-linux-x64-gnu': 0.3.2 - '@mariozechner/clipboard-linux-x64-musl': 0.3.2 - '@mariozechner/clipboard-win32-arm64-msvc': 0.3.2 - '@mariozechner/clipboard-win32-x64-msvc': 0.3.2 + '@mariozechner/clipboard-darwin-arm64': 0.3.6 + '@mariozechner/clipboard-darwin-universal': 0.3.6 + '@mariozechner/clipboard-darwin-x64': 0.3.6 + '@mariozechner/clipboard-linux-arm64-gnu': 0.3.6 + '@mariozechner/clipboard-linux-arm64-musl': 0.3.6 + '@mariozechner/clipboard-linux-riscv64-gnu': 0.3.6 + '@mariozechner/clipboard-linux-x64-gnu': 0.3.6 + '@mariozechner/clipboard-linux-x64-musl': 0.3.6 + '@mariozechner/clipboard-win32-arm64-msvc': 0.3.6 + '@mariozechner/clipboard-win32-x64-msvc': 0.3.6 optional: true '@mediabunny/aac-encoder@1.39.2(mediabunny@1.39.2)': @@ -5847,7 +5816,7 @@ snapshots: '@smithy/config-resolver@4.4.17': dependencies: '@smithy/node-config-provider': 4.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/util-config-provider': 4.2.2 '@smithy/util-endpoints': 3.4.2 '@smithy/util-middleware': 4.2.14 @@ -5866,62 +5835,50 @@ snapshots: '@smithy/uuid': 1.1.2 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.2.14': - dependencies: - '@smithy/node-config-provider': 4.3.14 - '@smithy/property-provider': 4.2.14 - '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.2.14 - tslib: 2.8.1 - - '@smithy/eventstream-codec@4.2.14': + '@smithy/core@3.24.5': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.14.1 - '@smithy/util-hex-encoding': 4.2.2 - tslib: 2.8.1 - - '@smithy/eventstream-serde-browser@4.2.14': - dependencies: - '@smithy/eventstream-serde-universal': 4.2.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - - '@smithy/eventstream-serde-config-resolver@4.3.14': - dependencies: - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@smithy/eventstream-serde-node@4.2.14': + '@smithy/credential-provider-imds@4.2.14': dependencies: - '@smithy/eventstream-serde-universal': 4.2.14 - '@smithy/types': 4.14.1 + '@smithy/node-config-provider': 4.3.14 + '@smithy/property-provider': 4.2.14 + '@smithy/types': 4.14.2 + '@smithy/url-parser': 4.2.14 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.2.14': + '@smithy/credential-provider-imds@4.3.6': dependencies: - '@smithy/eventstream-codec': 4.2.14 - '@smithy/types': 4.14.1 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/fetch-http-handler@5.3.17': dependencies: '@smithy/protocol-http': 5.3.14 '@smithy/querystring-builder': 4.2.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/util-base64': 4.3.2 tslib: 2.8.1 + '@smithy/fetch-http-handler@5.4.5': + dependencies: + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@smithy/hash-node@4.2.14': dependencies: - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/util-buffer-from': 4.2.2 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 '@smithy/invalid-dependency@4.2.14': dependencies: - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': @@ -5935,28 +5892,28 @@ snapshots: '@smithy/middleware-content-length@4.2.14': dependencies: '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/middleware-endpoint@4.4.32': dependencies: - '@smithy/core': 3.23.17 + '@smithy/core': 3.24.5 '@smithy/middleware-serde': 4.2.20 '@smithy/node-config-provider': 4.3.14 '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/url-parser': 4.2.14 '@smithy/util-middleware': 4.2.14 tslib: 2.8.1 '@smithy/middleware-retry@4.5.5': dependencies: - '@smithy/core': 3.23.17 + '@smithy/core': 3.24.5 '@smithy/node-config-provider': 4.3.14 '@smithy/protocol-http': 5.3.14 '@smithy/service-error-classification': 4.3.0 '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/util-middleware': 4.2.14 '@smithy/util-retry': 4.3.4 '@smithy/uuid': 1.1.2 @@ -5964,14 +5921,14 @@ snapshots: '@smithy/middleware-serde@4.2.20': dependencies: - '@smithy/core': 3.23.17 + '@smithy/core': 3.24.5 '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/middleware-stack@4.2.14': dependencies: - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/node-config-provider@4.3.14': @@ -5981,11 +5938,16 @@ snapshots: '@smithy/types': 4.14.1 tslib: 2.8.1 - '@smithy/node-http-handler@4.6.1': + '@smithy/node-http-handler@4.7.3': dependencies: - '@smithy/protocol-http': 5.3.14 - '@smithy/querystring-builder': 4.2.14 - '@smithy/types': 4.14.1 + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.7.5': + dependencies: + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/property-provider@4.2.14': @@ -6000,13 +5962,13 @@ snapshots: '@smithy/querystring-builder@4.2.14': dependencies: - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 '@smithy/util-uri-escape': 4.2.2 tslib: 2.8.1 '@smithy/querystring-parser@4.2.14': dependencies: - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/service-error-classification@4.3.0': @@ -6029,6 +5991,12 @@ snapshots: '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 + '@smithy/signature-v4@5.4.5': + dependencies: + '@smithy/core': 3.24.5 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@smithy/smithy-client@4.12.13': dependencies: '@smithy/core': 3.23.17 @@ -6043,10 +6011,14 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/types@4.14.2': + dependencies: + tslib: 2.8.1 + '@smithy/url-parser@4.2.14': dependencies: '@smithy/querystring-parser': 4.2.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/util-base64@4.3.2': @@ -6081,7 +6053,7 @@ snapshots: dependencies: '@smithy/property-provider': 4.2.14 '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/util-defaults-mode-node@4.2.54': @@ -6091,13 +6063,13 @@ snapshots: '@smithy/node-config-provider': 4.3.14 '@smithy/property-provider': 4.2.14 '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/util-endpoints@3.4.2': dependencies: '@smithy/node-config-provider': 4.3.14 - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/util-hex-encoding@4.2.2': @@ -6118,7 +6090,7 @@ snapshots: '@smithy/util-stream@4.5.25': dependencies: '@smithy/fetch-http-handler': 5.3.17 - '@smithy/node-http-handler': 4.6.1 + '@smithy/node-http-handler': 4.7.5 '@smithy/types': 4.14.1 '@smithy/util-base64': 4.3.2 '@smithy/util-buffer-from': 4.2.2 @@ -6152,15 +6124,6 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tokenizer/inflate@0.4.1': - dependencies: - debug: 4.4.3 - token-types: 6.1.2 - transitivePeerDependencies: - - supports-color - - '@tokenizer/token@0.3.0': {} - '@tootallnate/quickjs-emscripten@0.23.0': {} '@tybys/wasm-util@0.10.1': @@ -6242,8 +6205,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/mime-types@2.1.4': {} - '@types/ms@2.1.0': {} '@types/node@24.12.2': @@ -6284,7 +6245,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2))': + '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -6292,7 +6253,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) + vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -6435,8 +6396,6 @@ snapshots: ansi-styles@6.2.3: {} - any-promise@1.3.0: {} - app-builder-bin@5.0.0-alpha.12: {} app-builder-lib@26.8.1(dmg-builder@26.8.1)(electron-builder-squirrel-windows@26.8.1): @@ -6546,6 +6505,10 @@ snapshots: dependencies: balanced-match: 4.0.4 + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.10.9 @@ -6660,15 +6623,6 @@ snapshots: dependencies: restore-cursor: 3.1.0 - cli-highlight@2.1.11: - dependencies: - chalk: 4.1.2 - highlight.js: 10.7.3 - mz: 2.7.0 - parse5: 5.1.1 - parse5-htmlparser2-tree-adapter: 6.0.1 - yargs: 16.2.0 - cli-spinners@2.9.2: {} cli-truncate@2.1.0: @@ -6914,7 +6868,7 @@ snapshots: electron-to-chromium@1.5.321: {} - electron-vite@5.0.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)): + electron-vite@5.0.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)): dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) @@ -6922,7 +6876,7 @@ snapshots: esbuild: 0.25.12 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) + vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -7128,6 +7082,11 @@ snapshots: dependencies: path-expression-matcher: 1.5.0 + fast-xml-builder@1.2.0: + dependencies: + path-expression-matcher: 1.5.0 + xml-naming: 0.1.0 + fast-xml-parser@5.7.1: dependencies: '@nodable/entities': 2.1.0 @@ -7135,6 +7094,13 @@ snapshots: path-expression-matcher: 1.5.0 strnum: 2.2.3 + fast-xml-parser@5.7.3: + dependencies: + '@nodable/entities': 2.1.0 + fast-xml-builder: 1.2.0 + path-expression-matcher: 1.5.0 + strnum: 2.2.3 + fd-slicer@1.1.0: dependencies: pend: 1.2.0 @@ -7148,15 +7114,6 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 - file-type@21.3.4: - dependencies: - '@tokenizer/inflate': 0.4.1 - strtok3: 10.3.5 - token-types: 6.1.2 - uint8array-extras: 1.5.0 - transitivePeerDependencies: - - supports-color - filelist@1.0.6: dependencies: minimatch: 5.1.9 @@ -7245,7 +7202,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.5.0: {} + get-east-asian-width@1.6.0: {} get-intrinsic@1.3.0: dependencies: @@ -7407,6 +7364,10 @@ snapshots: dependencies: lru-cache: 11.2.7 + hosted-git-info@9.0.3: + dependencies: + lru-cache: 11.2.7 + html-entities@2.6.0: {} html-url-attributes@3.0.1: {} @@ -7581,9 +7542,6 @@ snapshots: kleur@3.0.3: {} - koffi@2.16.1: - optional: true - lazy-val@1.0.5: {} loader-runner@4.3.1: {} @@ -8033,6 +7991,10 @@ snapshots: dependencies: brace-expansion: 5.0.4 + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + minimatch@3.1.5: dependencies: brace-expansion: 1.1.13 @@ -8089,12 +8051,6 @@ snapshots: ms@2.1.3: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - nanoid@3.3.11: {} negotiator@1.0.0: {} @@ -8179,8 +8135,6 @@ snapshots: dependencies: path-key: 3.1.1 - object-assign@4.1.1: {} - object-keys@1.1.1: optional: true @@ -8744,10 +8698,6 @@ snapshots: strnum@2.2.3: {} - strtok3@10.3.5: - dependencies: - '@tokenizer/token': 0.3.0 - style-loader@4.0.0(webpack@5.105.0): dependencies: webpack: 5.105.0(esbuild@0.25.0) @@ -8816,14 +8766,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - tiny-async-pool@1.3.0: dependencies: semver: 5.7.2 @@ -8841,12 +8783,6 @@ snapshots: tmp@0.2.5: {} - token-types@6.1.2: - dependencies: - '@borewit/text-codec': 0.2.2 - '@tokenizer/token': 0.3.0 - ieee754: 1.2.1 - tr46@1.0.1: dependencies: punycode: 2.3.1 @@ -8870,15 +8806,16 @@ snapshots: type-fest@0.13.1: optional: true - typebox@1.1.33: {} + typebox@1.1.38: {} typescript@5.9.3: {} - uint8array-extras@1.5.0: {} - undici-types@7.16.0: {} - undici@7.25.0: {} + undici@7.25.0: + optional: true + + undici@8.3.0: {} unified@11.0.5: dependencies: @@ -8939,8 +8876,6 @@ snapshots: util-deprecate@1.0.2: {} - uuid@14.0.0: {} - verror@1.10.1: dependencies: assert-plus: 1.0.0 @@ -8958,17 +8893,17 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2) + vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) transitivePeerDependencies: - supports-color - typescript - vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.8.2): + vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -8981,7 +8916,7 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 terser: 5.46.1 - yaml: 2.8.2 + yaml: 2.9.0 watchpack@2.5.1: dependencies: @@ -9062,6 +8997,8 @@ snapshots: ws@8.20.0: {} + xml-naming@0.1.0: {} + xmlbuilder@15.1.1: {} y18n@5.0.8: {} @@ -9072,7 +9009,7 @@ snapshots: yallist@5.0.0: {} - yaml@2.8.2: {} + yaml@2.9.0: {} yargs-parser@20.2.9: {} From 341fa04b94e7927bf050342d4bdcffeae4131179 Mon Sep 17 00:00:00 2001 From: PylotLight Date: Mon, 1 Jun 2026 01:11:31 +1000 Subject: [PATCH 09/11] feat(desktop): implement session context token counter --- apps/desktop/electron/app-store.ts | 37 +++++++++- apps/desktop/electron/main.ts | 4 +- apps/desktop/src/App.tsx | 6 +- apps/desktop/src/composer-panel.tsx | 68 +++++++++++++++++-- apps/desktop/src/desktop-state.ts | 24 +++++-- apps/desktop/src/ipc.ts | 2 + apps/desktop/src/styles/main.css | 68 ++++++++++++++++--- apps/desktop/src/topbar.tsx | 4 +- packages/pi-sdk-driver/src/pi-sdk-driver.ts | 6 +- .../pi-sdk-driver/src/session-supervisor.ts | 2 +- 10 files changed, 191 insertions(+), 30 deletions(-) diff --git a/apps/desktop/electron/app-store.ts b/apps/desktop/electron/app-store.ts index 09f305a8..920bb01a 100644 --- a/apps/desktop/electron/app-store.ts +++ b/apps/desktop/electron/app-store.ts @@ -245,6 +245,19 @@ export class DesktopAppStore implements AppStoreInternals { }; } + async getSessionContextUsage(sessionRef: SessionRef): Promise { + console.log(`[pi-gui] getSessionContextUsage for ${JSON.stringify(sessionRef)}`); + const session = await this.driver.getSession(sessionRef); + const usage = session.getContextUsage(); + console.log(`[pi-gui] getSessionContextUsage result: ${JSON.stringify(usage)}`); + return { + ...usage, + input: usage.input ?? null, + output: usage.output ?? null, + cacheRead: usage.cacheRead ?? null, + }; + } + /* ── Workspace methods (delegated) ─────────────────────── */ async addWorkspace(path: string): Promise { @@ -992,6 +1005,7 @@ export class DesktopAppStore implements AppStoreInternals { composerAttachments: this.resolveComposerAttachments(selectedWorkspaceId, selectedSessionId), queuedComposerMessages: this.resolveQueuedComposerMessages(selectedWorkspaceId, selectedSessionId), editingQueuedMessageId: this.resolveEditingQueuedMessageId(selectedWorkspaceId, selectedSessionId), + selectedSessionContextUsage: (selectedWorkspaceId && selectedSessionId) ? await this.getSessionContextUsage({ workspaceId: selectedWorkspaceId, sessionId: selectedSessionId }).catch(() => undefined) : undefined, lastError: this.resolveSelectedSessionError(selectedWorkspaceId, selectedSessionId, options.clearLastError), revision: this.state.revision + 1, }; @@ -1493,6 +1507,18 @@ export class DesktopAppStore implements AppStoreInternals { ); this.markSessionViewedIfActivelyViewed(event.sessionRef); this.state = this.syncDerivedSessionState(this.state, event.sessionRef); + + // Update context usage for real-time counter + if ( + (event.type === "assistantDelta" || + event.type === "assistantThinkingDelta" || + event.type === "toolFinished" || + (event.type as string) === "sessionCompact") + ) { + const usage = await this.getSessionContextUsage(event.sessionRef); + this.state = { ...this.state, selectedSessionContextUsage: usage }; + } + if (shouldFollowSessionMutation && event.type !== "sessionClosed") { this.applyFastSessionSelection(event.sessionRef); if (!refreshedFollowedSession) { @@ -1963,6 +1989,7 @@ export class DesktopAppStore implements AppStoreInternals { composerDraftSyncSource: "selection", composerDraftSyncNonce: this.state.composerDraftSyncNonce + 1, composerAttachments: this.resolveComposerAttachments(sessionRef.workspaceId, sessionRef.sessionId), + selectedSessionContextUsage: undefined, lastError: undefined, revision: this.state.revision + 1, }; @@ -1991,13 +2018,19 @@ export class DesktopAppStore implements AppStoreInternals { return; } - const runtimeByWorkspace = runtimeMissing ? await this.serializeRuntimeStateForCurrentWorkspaces() : undefined; + const [runtimeByWorkspace, selectedSessionContextUsage] = await Promise.all([ + runtimeMissing ? this.serializeRuntimeStateForCurrentWorkspaces() : Promise.resolve(undefined), + this.getSessionContextUsage(sessionRef).catch(() => undefined), + ]); if (!this.isCurrentSelectionEpoch(sessionRef, selectionEpoch)) { return; } this.clearSessionError(sessionRef); - this.state = this.syncSelectedSessionHydrationState(this.state, sessionRef, snapshot, runtimeByWorkspace); + this.state = { + ...this.syncSelectedSessionHydrationState(this.state, sessionRef, snapshot, runtimeByWorkspace), + selectedSessionContextUsage, + }; if (options.markViewed ?? true) { this.markSessionViewed(sessionRef); } diff --git a/apps/desktop/electron/main.ts b/apps/desktop/electron/main.ts index fcb022ec..f89e4346 100644 --- a/apps/desktop/electron/main.ts +++ b/apps/desktop/electron/main.ts @@ -33,8 +33,8 @@ function inheritShellPath() { // Fallback to safe defaults if shell resolution fails const fallbacks = ["/opt/homebrew/bin", "/usr/local/bin"]; for (const p of fallbacks) { - if (existsSync(p) && !process.env.PATH.includes(p)) { - process.env.PATH = `${p}${path.delimiter}${process.env.PATH}`; + if (existsSync(p) && !(process.env.PATH?.includes(p))) { + process.env.PATH = `${p}${path.delimiter}${process.env.PATH ?? ""}`; } } } diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/App.tsx index a58b7ea0..3515151c 100644 --- a/apps/desktop/src/App.tsx +++ b/apps/desktop/src/App.tsx @@ -1913,7 +1913,9 @@ export default function App() { onRequestNotificationPermission={handleRequestNotificationPermission} onOpenSystemNotificationSettings={handleOpenSystemNotificationSettings} onSetScopedModelPatterns={handleSetScopedModelPatterns} - onToggleAllowMultiple={handleToggleAllowMultiple} + onToggleAllowMultiple={(enabled) => { + void updateSnapshot(api, setSnapshot, () => api.setAllowMultiple(enabled)); + }} onSetThemeMode={handleSetThemeMode} onSetThinkingLevel={handleSetThinkingLevel} onToggleSkillCommands={handleToggleSkillCommands} @@ -2051,6 +2053,7 @@ export default function App() { sidebarCollapsed={snapshot.sidebarCollapsed} sidebarToggleShortcutLabel={sidebarToggleShortcutLabel} onTogglePrimarySidebar={handleTogglePrimarySidebar} + selectedSessionContextUsage={snapshot.selectedSessionContextUsage} /> {showTerminalTakeover ? ( @@ -2151,6 +2154,7 @@ export default function App() { N/A; + } + const formatTokens = (count: number) => { + if (count < 1000) return count.toString(); + if (count < 10000) return `${(count / 1000).toFixed(1)}k`; + if (count < 1000000) return `${Math.round(count / 1000)}k`; + if (count < 10000000) return `${(count / 1000000).toFixed(1)}M`; + return `${Math.round(count / 1000000)}M`; + }; + + const percent = usage.percent ?? 0; + let colorClass = ""; + if (percent > 90) { + colorClass = "token-counter--error"; + } else if (percent > 70) { + colorClass = "token-counter--warning"; + } + + return ( +
+ {formatTokens(usage.tokens)} / {formatTokens(usage.contextWindow)} ({percent.toFixed(1)}%) +
+
Context Usage
+
+ Total: + {usage.tokens.toLocaleString()} / {usage.contextWindow.toLocaleString()} ({percent.toFixed(1)}%) + <> + Input: + {(usage.input ?? 0).toLocaleString()} + + <> + Output: + {(usage.output ?? 0).toLocaleString()} + + {/* + <> + Cache Read: + {(usage.cacheRead ?? 0).toLocaleString()} + + */} +
+
+
+ ); +} interface ComposerPanelProps { readonly selectedSession: SessionRecord; + readonly selectedSessionContextUsage?: ContextUsage; readonly lastError?: string; readonly runtime?: RuntimeSnapshot; readonly activeSlashCommand?: ComposerSlashCommand; @@ -56,7 +105,7 @@ interface ComposerPanelProps { readonly onSubmit: () => void; readonly showMentionMenu: boolean; readonly mentionOptions: readonly string[]; - readonly selectedMentionIndex: number; + readonly selectedMentionIndex?: number; readonly onSelectMention: (filePath: string) => void; readonly extensionDock?: ExtensionDockModel; readonly extensionDockExpanded: boolean; @@ -65,6 +114,7 @@ interface ComposerPanelProps { export function ComposerPanel({ selectedSession, + selectedSessionContextUsage, lastError, runtime, activeSlashCommand, @@ -150,7 +200,7 @@ export function ComposerPanel({ onSelectSlashOption={onSelectSlashOption} showMentionMenu={showMentionMenu} mentionOptions={mentionOptions} - selectedMentionIndex={selectedMentionIndex} + selectedMentionIndex={selectedMentionIndex ?? 0} onSelectMention={onSelectMention} textareaLabel="Composer" textareaTestId="composer" @@ -165,7 +215,15 @@ export function ComposerPanel({ {selectedSession.status === "running" ? `${runningLabel} · Enter to queue · Cmd+Enter to steer` : "Enter to send · Shift+Enter for newline"} - {" · "} + {(() => { + console.log(`[pi-gui-ui] ComposerPanel usage:`, selectedSessionContextUsage); + return selectedSessionContextUsage !== undefined ? ( + <> + {" · "} + + + ) : null; + })()} workspace.id === state.selectedWorkspaceId); diff --git a/apps/desktop/src/ipc.ts b/apps/desktop/src/ipc.ts index bdc8b655..aeb8862d 100644 --- a/apps/desktop/src/ipc.ts +++ b/apps/desktop/src/ipc.ts @@ -1,4 +1,5 @@ import type { RuntimeSettingsSnapshot } from "@pi-gui/session-driver/runtime-types"; +import type { ContextUsage } from "./desktop-state"; import type { NavigateSessionTreeOptions, NavigateSessionTreeResult, @@ -214,6 +215,7 @@ export interface PiDesktopApi { ping(): Promise; getState(): Promise; onStateChanged(listener: PiDesktopStateListener): () => void; + getSessionContextUsage(sessionRef: { workspaceId: string; sessionId: string }): Promise; getSelectedTranscript(): Promise; onSelectedTranscriptChanged(listener: PiDesktopSelectedTranscriptListener): () => void; onCommand(listener: (command: PiDesktopCommand) => void): () => void; diff --git a/apps/desktop/src/styles/main.css b/apps/desktop/src/styles/main.css index b158026b..70890efd 100644 --- a/apps/desktop/src/styles/main.css +++ b/apps/desktop/src/styles/main.css @@ -1,4 +1,62 @@ +/* Existing styles preserved... */ + +.token-counter { + font-size: 11px; + font-weight: 500; + opacity: 0.8; + padding: 0 4px; + position: relative; + display: inline-block; + cursor: help; +} + +.token-counter--warning { + color: var(--color-warning); +} + +.token-counter--error { + color: var(--color-error); +} + +.token-counter__tooltip { + position: absolute; + bottom: 125%; + left: 50%; + transform: translateX(-50%); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; + padding: 8px 12px; + font-size: 11px; + white-space: nowrap; + box-shadow: 0 4px 12px rgba(0,0,0,0.1); + opacity: 0; + pointer-events: none; + transition: opacity 0.1s ease; + z-index: 100; + display: flex; + flex-direction: column; + gap: 4px; + color: var(--text-strong); + text-align: left; +} + +.token-counter:hover .token-counter__tooltip { + opacity: 1; +} + .sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + .timeline-item__reasoning { margin-bottom: 0.75rem; border-left: 2px solid var(--line); @@ -33,16 +91,6 @@ from { opacity: 0; transform: translateY(-2px); } to { opacity: 1; transform: translateY(0); } } - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} .main { background: var(--main); diff --git a/apps/desktop/src/topbar.tsx b/apps/desktop/src/topbar.tsx index 09e70e54..5a43921c 100644 --- a/apps/desktop/src/topbar.tsx +++ b/apps/desktop/src/topbar.tsx @@ -1,6 +1,6 @@ import type { MouseEvent as ReactMouseEvent, Dispatch, SetStateAction } from "react"; import { SidebarToggleButton } from "./sidebar-toggle-button"; -import type { AppView, DesktopAppState, SessionRecord, WorkspaceRecord, WorktreeRecord } from "./desktop-state"; +import type { AppView, DesktopAppState, SessionRecord, WorkspaceRecord, WorktreeRecord, ContextUsage } from "./desktop-state"; import { DiffIcon, FolderIcon, TerminalIcon } from "./icons"; import { getDesktopShortcutLabel, type PiDesktopApi } from "./ipc"; import type { WorkspaceMenuState } from "./hooks/use-workspace-menu"; @@ -31,6 +31,7 @@ interface TopbarProps { readonly sidebarCollapsed: boolean; readonly sidebarToggleShortcutLabel: string; readonly onTogglePrimarySidebar: () => void; + readonly selectedSessionContextUsage?: ContextUsage; } export function Topbar(props: TopbarProps) { @@ -56,6 +57,7 @@ export function Topbar(props: TopbarProps) { sidebarCollapsed, sidebarToggleShortcutLabel, onTogglePrimarySidebar, + selectedSessionContextUsage, } = props; const terminalShortcut = getDesktopShortcutLabel(api.platform, "J"); diff --git a/packages/pi-sdk-driver/src/pi-sdk-driver.ts b/packages/pi-sdk-driver/src/pi-sdk-driver.ts index f08910ba..52649bac 100644 --- a/packages/pi-sdk-driver/src/pi-sdk-driver.ts +++ b/packages/pi-sdk-driver/src/pi-sdk-driver.ts @@ -1,4 +1,4 @@ -import type { AuthStorage, ModelRegistry } from "@earendil-works/pi-coding-agent"; +import type { AuthStorage, ModelRegistry, AgentSession } from "@earendil-works/pi-coding-agent"; import type { SessionCatalogSnapshot, WorkspaceCatalogSnapshot, WorkspaceId } from "@pi-gui/catalogs"; import type { NavigateSessionTreeOptions, @@ -125,6 +125,10 @@ export class PiSdkDriver implements SessionDriver { return this.supervisor.closeSession(sessionRef); } + async getSession(sessionRef: SessionRef): Promise { + return this.supervisor.ensureRecord(sessionRef).then(r => r.session!); + } + listWorkspaces(): Promise { return this.supervisor.listWorkspaces(); } diff --git a/packages/pi-sdk-driver/src/session-supervisor.ts b/packages/pi-sdk-driver/src/session-supervisor.ts index f211ce76..028335ad 100644 --- a/packages/pi-sdk-driver/src/session-supervisor.ts +++ b/packages/pi-sdk-driver/src/session-supervisor.ts @@ -678,7 +678,7 @@ export class SessionSupervisor { }); } - private async ensureRecord(sessionRef: SessionRef): Promise { + public async ensureRecord(sessionRef: SessionRef): Promise { const key = sessionKey(sessionRef); const existing = this.records.get(key); if (existing && existing.session && !existing.closed) { From 0d66bbe0c2ca9728025f6cb86b8ff8f7d58eae1f Mon Sep 17 00:00:00 2001 From: PylotLight Date: Mon, 1 Jun 2026 01:12:56 +1000 Subject: [PATCH 10/11] chore(deps): upgrade vite and pi-coding-agent --- apps/desktop/package.json | 7 +- package.json | 10 +- packages/pi-sdk-driver/package.json | 2 +- pnpm-lock.yaml | 276 +++++++++++++++++++++++++--- 4 files changed, 265 insertions(+), 30 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 8ea4106c..9ffd6607 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,7 +1,10 @@ { "name": "@pi-gui/desktop", "private": true, - "trustedDependencies": ["electron", "node-pty"], + "trustedDependencies": [ + "electron", + "node-pty" + ], "version": "0.1.0", "author": { "name": "Matthew Lam", @@ -127,7 +130,7 @@ "electron-builder": "^26.8.1", "electron-vite": "^5.0.0", "playwright": "^1.58.2", - "vite": "^6.2.0", + "vite": "^6.4.2", "vite-tsconfig-paths": "^6.1.1" } } diff --git a/package.json b/package.json index 8a76ebb0..51a0e736 100644 --- a/package.json +++ b/package.json @@ -13,17 +13,17 @@ "dev": "pnpm --filter @pi-gui/desktop dev", "bun:dev": "cd apps/desktop && bun run dev", "build": "pnpm -r --if-present build", - "bun:build": "for dir in apps/* packages/*; do (cd \"$dir\" && (grep -q '\"bun:build\":' package.json && bun run bun:build || (grep -q '\"build\":' package.json && bun run build))); done", + "bun:build": "bun run --filter @pi-gui/session-driver build && bun run --filter @pi-gui/pi-sdk-driver build && bun run --filter @pi-gui/catalogs build && bun run --filter @pi-gui/desktop build", "typecheck": "pnpm --filter @pi-gui/session-driver build && pnpm --filter @pi-gui/catalogs build && pnpm --filter @pi-gui/pi-sdk-driver build && pnpm -r --if-present typecheck", - "bun:typecheck": "cd packages/session-driver && bun run build && cd ../pi-sdk-driver && bun run build && cd ../catalogs && bun run build && for dir in apps/* packages/*; do (cd \"$dir\" && grep -q '\"typecheck\":' package.json && bun run typecheck); done", + "bun:typecheck": "bun run --filter @pi-gui/session-driver build && bun run --filter @pi-gui/pi-sdk-driver build && bun run --filter @pi-gui/catalogs build && bun run --filter @pi-gui/session-driver typecheck && bun run --filter @pi-gui/pi-sdk-driver typecheck && bun run --filter @pi-gui/catalogs typecheck && bun run --filter @pi-gui/desktop typecheck", "bun:package": "cd apps/desktop && bun run bun:package", "bun:package:dir": "cd apps/desktop && bun run bun:package:dir", "bun:package:linux": "cd apps/desktop && bun run bun:package:linux", "bun:package:linux:dir": "cd apps/desktop && bun run bun:package:linux:dir", "lint": "pnpm -r --if-present lint", - "bun:lint": "for dir in apps/* packages/*; do (cd \"$dir\" && (grep -q '\"bun:lint\":' package.json && bun run bun:lint || (grep -q '\"lint\":' package.json && bun run lint))); done", + "bun:lint": "bun run --filter @pi-gui/session-driver lint && bun run --filter @pi-gui/pi-sdk-driver lint && bun run --filter @pi-gui/catalogs lint && bun run --filter @pi-gui/desktop lint", "test": "pnpm -r --if-present test", - "bun:test": "for dir in apps/* packages/*; do (cd \"$dir\" && (grep -q '\"bun:test\":' package.json && bun run bun:test || (grep -q '\"test\":' package.json && bun run test))); done", + "bun:test": "bun run --filter @pi-gui/session-driver test && bun run --filter @pi-gui/pi-sdk-driver test && bun run --filter @pi-gui/catalogs test && bun run --filter @pi-gui/desktop test", "e2e": "playwright test", "test:homebrew-tap": "node scripts/test-update-homebrew-tap.mjs", "verify:install-copy": "node scripts/verify-install-copy.mjs", @@ -41,6 +41,6 @@ "video" ], "dependencies": { - "@earendil-works/pi-ai": "^0.75.5" + "@earendil-works/pi-ai": "^0.78.0" } } \ No newline at end of file diff --git a/packages/pi-sdk-driver/package.json b/packages/pi-sdk-driver/package.json index 3018e645..d4700c35 100644 --- a/packages/pi-sdk-driver/package.json +++ b/packages/pi-sdk-driver/package.json @@ -19,7 +19,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@earendil-works/pi-coding-agent": "^0.75.5", + "@earendil-works/pi-coding-agent": "^0.78.0", "@pi-gui/catalogs": "workspace:*", "@pi-gui/session-driver": "workspace:*" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 39a634fc..39674178 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@earendil-works/pi-ai': - specifier: ^0.75.5 - version: 0.75.5(ws@8.20.0)(zod@4.3.6) + specifier: ^0.78.0 + version: 0.78.0(ws@8.20.0)(zod@4.3.6) devDependencies: '@playwright/test': specifier: ^1.52.0 @@ -144,7 +144,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.7.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)) + version: 4.7.0(vite@6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -156,16 +156,16 @@ importers: version: 26.8.1(electron-builder-squirrel-windows@26.8.1) electron-vite: specifier: ^5.0.0 - version: 5.0.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)) + version: 5.0.0(vite@6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)) playwright: specifier: ^1.58.2 version: 1.58.2 vite: - specifier: ^6.2.0 - version: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) + specifier: ^6.4.2 + version: 6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)) + version: 6.1.1(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)) apps/website: dependencies: @@ -195,8 +195,8 @@ importers: packages/pi-sdk-driver: dependencies: '@earendil-works/pi-coding-agent': - specifier: ^0.75.5 - version: 0.75.5(ws@8.20.0)(zod@4.3.6) + specifier: ^0.78.0 + version: 0.78.0(ws@8.20.0)(zod@4.3.6) '@pi-gui/catalogs': specifier: workspace:* version: link:../catalogs @@ -540,20 +540,38 @@ packages: resolution: {integrity: sha512-LHygOgsW2pgXKb3IkXkOAeZPovHr9VF+EixgXVsDNuB4jmhEOXgshy/zksZ7slkUAx10OQ9W1Ed/2jsnhd1NqA==} engines: {node: '>=22.19.0'} + '@earendil-works/pi-agent-core@0.78.0': + resolution: {integrity: sha512-xhWd59Qzd8yO88gYQw2S4dEQstJJEiUtxRP01//YzVJ61jCtUASMfcyAmYhgGYR4Onp7GmwEAbBBGOiV6Iwk9g==} + engines: {node: '>=22.19.0'} + '@earendil-works/pi-ai@0.75.5': resolution: {integrity: sha512-zf1F5kXk1pqZeFShXOqq9ibUk8QdtRoLCDPAjO+hj44e3EUs9/GFO2qnhTC5+JA2uwVCx+WCNe1PiCjlBYWm5w==} engines: {node: '>=22.19.0'} hasBin: true + '@earendil-works/pi-ai@0.78.0': + resolution: {integrity: sha512-q0hUrvT6ngT6cgBX0oIbzfQfmzztgdkZobP8OTL+sCOOBlnG6+1YRt8g7zO9CC/4NdeYEqa7uGqWdQhH0fjCLA==} + engines: {node: '>=22.19.0'} + hasBin: true + '@earendil-works/pi-coding-agent@0.75.5': resolution: {integrity: sha512-O3CCQDYy28D4uwtP6zZkdEwzHN6X22v49Sb0+SZTC7x37V/YfmogrWPiaFoWeoc2hmdKhSATI7ZAK5bQbJG5NA==} engines: {node: '>=22.19.0'} hasBin: true + '@earendil-works/pi-coding-agent@0.78.0': + resolution: {integrity: sha512-gXt6pD3BoSG0yLwfLqb6844vz6qAO87PvNrv+YSDYKP3QliTjcwIld9v4ihmDcmBjO13QwKswubq/lYCvn4bkg==} + engines: {node: '>=22.19.0'} + hasBin: true + '@earendil-works/pi-tui@0.75.5': resolution: {integrity: sha512-LkXUM1/49pvzzeI39Y5wjBMlgafcCf67HCLhB9Z7yuXHy4XgT+VqxWcZVW5hBdhQsHZd0znjJotfGH1BzxMfiA==} engines: {node: '>=22.19.0'} + '@earendil-works/pi-tui@0.78.0': + resolution: {integrity: sha512-3a705FnsVVUhAyceShNB3kS2rpxcxLcx+hqB0u6MMMpHwQGbW+m++MqA6r7eOzq/8FLx5e3vDh38h/SVTk2qzw==} + engines: {node: '>=22.19.0'} + '@electron/asar@3.4.1': resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} engines: {node: '>=10.12.0'} @@ -1096,63 +1114,126 @@ packages: cpu: [arm64] os: [darwin] + '@mariozechner/clipboard-darwin-arm64@0.3.9': + resolution: {integrity: sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@mariozechner/clipboard-darwin-universal@0.3.6': resolution: {integrity: sha512-8BWtPjOtJOJoykml3w0fx0zRrfWP31mXrJwfoA7xzNprkZw1uolCNfgmjDiVBseoKjp16EGITz7bN+61qn8dWA==} engines: {node: '>= 10'} os: [darwin] + '@mariozechner/clipboard-darwin-universal@0.3.9': + resolution: {integrity: sha512-BGGR4iA9Z2shAjI65eI5xtyb3LYNlDW9X3gxKxDbqtbnREohsrqznov6zpKoIrsRWpzlYVEdKphS7ksJ0/ndSQ==} + engines: {node: '>= 10'} + os: [darwin] + '@mariozechner/clipboard-darwin-x64@0.3.6': resolution: {integrity: sha512-p9syiZD1kU4I+1ya7f7g+zD1GiUvR8fdlRlNmgsZNWlyjtc8rlV2EjTLd/35x1LsdBq020GVvtzp0ZmPgBI09Q==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@mariozechner/clipboard-darwin-x64@0.3.9': + resolution: {integrity: sha512-4kURmCbS6nt8uYhtmWpUcJWyPHfmAr5dTpXD1nO3pIfa+TSQ9DbrGOYCKH+aEFW47XhQ4Vp8ZTszie+wfFvDKg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@mariozechner/clipboard-linux-arm64-gnu@0.3.6': resolution: {integrity: sha512-5JFf5rGofrm+V29HNF+wLthXphHdQpMbKDUYJ5tML6/Z5DLlLOV/9Ak4kDPtYyZ+Dzf+kAusE0VsFg4+tfP1IA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@mariozechner/clipboard-linux-arm64-gnu@0.3.9': + resolution: {integrity: sha512-g59OkUGP2DDfCOIKypHeYgv2M55u/cKvXa5dSxFbEJ34XvIQMdcVmpKCkGUro3ZgefXiGVdwguvTMQGpHWzIXw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@mariozechner/clipboard-linux-arm64-musl@0.3.6': resolution: {integrity: sha512-JlVjxxw0GbGC0djXYWRIqyteO3J1KZ/QG3udlEFaOD5TLOM1FnmXXAPDQBqr+aBVr720ef9K00dirYnJ0LDCtw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@mariozechner/clipboard-linux-arm64-musl@0.3.9': + resolution: {integrity: sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@mariozechner/clipboard-linux-riscv64-gnu@0.3.6': resolution: {integrity: sha512-4t8BUi5zZ+L77otFQVnVSlaTyAX4TVk9EqQm4syMrEQp96trFEHEwwNHcNEBGzYv5+K7mxay50TthYkz47OWzQ==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] + '@mariozechner/clipboard-linux-riscv64-gnu@0.3.9': + resolution: {integrity: sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + '@mariozechner/clipboard-linux-x64-gnu@0.3.6': resolution: {integrity: sha512-trtPwcNLW37irwQCJLtCxLw757jjJZk3TSnY/MU9bhtWtA3K9b/eLW0e4RGhUXDoFRds9opNWWaUDuFLa8dm0w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@mariozechner/clipboard-linux-x64-gnu@0.3.9': + resolution: {integrity: sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@mariozechner/clipboard-linux-x64-musl@0.3.6': resolution: {integrity: sha512-WfnzIvOCCWQiN0MmltCEo6cLceUDbYe+I7xyFZjaps5A+2Op/M2CY7Rey+C4ucQhrvmpoHmTSFgY9ODWk7snoA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@mariozechner/clipboard-linux-x64-musl@0.3.9': + resolution: {integrity: sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@mariozechner/clipboard-win32-arm64-msvc@0.3.6': resolution: {integrity: sha512-+8+1aHYsBPUjmW3otmWlg+Hijt0iJvoBBs5e0mxFeUd4gDaKMB8Bn6x7c6KVtscg7E5j5NFXnwQqNSIAO4p8zQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@mariozechner/clipboard-win32-arm64-msvc@0.3.9': + resolution: {integrity: sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@mariozechner/clipboard-win32-x64-msvc@0.3.6': resolution: {integrity: sha512-S4xfPmERC8ZkiLHe3vekZCjdDwNEETCuvCgQK2kP6/TnvmUkq1y2Pk+DjM4t8uh9KMX9bH4zs5ePcKa8GTXmfg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@mariozechner/clipboard-win32-x64-msvc@0.3.9': + resolution: {integrity: sha512-ihQC3EufqEY81vhXBgVBtK4prL+wc62zJsSvxrgz7K1hsdt6OObz6v9p3Rn1OG3GJksTTKMJF0u/guMISHPhSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@mariozechner/clipboard@0.3.6': resolution: {integrity: sha512-MXdtr+6+ntlIVHdrZYuZNQydu6o8yZswFJ2Ln81j2O/Y9B/LDHvEaIm95xWNPkjGTWriSOeLnQJRFs6dYb60bg==} engines: {node: '>= 10'} + '@mariozechner/clipboard@0.3.9': + resolution: {integrity: sha512-ABnA53mdfkGZwOFUdZNv2S0CWGO/EIuPj8Vv9xmBFmSYg/qFc7ihO6q5FcQjvoE67kZpWkEc4AhD6B/os04yuA==} + engines: {node: '>= 10'} + '@mediabunny/aac-encoder@1.39.2': resolution: {integrity: sha512-KD6KADVzAnW7tqhRFGBOX4uaiHbd0Yxvg0lfthj3wJLAEEgEBAvi43w+ZXWeEn54X/jpabrLe4bW/eYFFvlbUA==} peerDependencies: @@ -2117,6 +2198,9 @@ packages: brace-expansion@2.0.3: resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} + brace-expansion@2.1.1: + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} + brace-expansion@5.0.4: resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} engines: {node: 18 || 20 || >=22} @@ -2648,6 +2732,10 @@ packages: resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} engines: {node: '>=14.14'} + fs-extra@11.3.5: + resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} + engines: {node: '>=14.14'} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -3002,6 +3090,9 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} @@ -3032,6 +3123,9 @@ packages: lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} @@ -3053,6 +3147,10 @@ packages: resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} engines: {node: 20 || >=22} + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -4079,8 +4177,8 @@ packages: peerDependencies: vite: '*' - vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} + vite@6.4.2: + resolution: {integrity: sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -4834,6 +4932,20 @@ snapshots: - ws - zod + '@earendil-works/pi-agent-core@0.78.0(ws@8.20.0)(zod@4.3.6)': + dependencies: + '@earendil-works/pi-ai': 0.78.0(ws@8.20.0)(zod@4.3.6) + ignore: 7.0.5 + typebox: 1.1.38 + yaml: 2.9.0 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + '@earendil-works/pi-ai@0.75.5(ws@8.20.0)(zod@4.3.6)': dependencies: '@anthropic-ai/sdk': 0.91.1(zod@4.3.6) @@ -4854,6 +4966,26 @@ snapshots: - ws - zod + '@earendil-works/pi-ai@0.78.0(ws@8.20.0)(zod@4.3.6)': + dependencies: + '@anthropic-ai/sdk': 0.91.1(zod@4.3.6) + '@aws-sdk/client-bedrock-runtime': 3.1048.0 + '@google/genai': 1.52.0 + '@mistralai/mistralai': 2.2.1 + '@smithy/node-http-handler': 4.7.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + openai: 6.26.0(ws@8.20.0)(zod@4.3.6) + partial-json: 0.1.7 + typebox: 1.1.38 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + '@earendil-works/pi-coding-agent@0.75.5(ws@8.20.0)(zod@4.3.6)': dependencies: '@earendil-works/pi-agent-core': 0.75.5(ws@8.20.0)(zod@4.3.6) @@ -4883,11 +5015,45 @@ snapshots: - ws - zod + '@earendil-works/pi-coding-agent@0.78.0(ws@8.20.0)(zod@4.3.6)': + dependencies: + '@earendil-works/pi-agent-core': 0.78.0(ws@8.20.0)(zod@4.3.6) + '@earendil-works/pi-ai': 0.78.0(ws@8.20.0)(zod@4.3.6) + '@earendil-works/pi-tui': 0.78.0 + '@silvia-odwyer/photon-node': 0.3.4 + chalk: 5.6.2 + cross-spawn: 7.0.6 + diff: 8.0.4 + glob: 13.0.6 + highlight.js: 10.7.3 + hosted-git-info: 9.0.3 + ignore: 7.0.5 + jiti: 2.7.0 + minimatch: 10.2.5 + proper-lockfile: 4.1.2 + typebox: 1.1.38 + undici: 8.3.0 + yaml: 2.9.0 + optionalDependencies: + '@mariozechner/clipboard': 0.3.9 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + '@earendil-works/pi-tui@0.75.5': dependencies: get-east-asian-width: 1.6.0 marked: 15.0.12 + '@earendil-works/pi-tui@0.78.0': + dependencies: + get-east-asian-width: 1.6.0 + marked: 15.0.12 + '@electron/asar@3.4.1': dependencies: commander: 5.1.0 @@ -4980,7 +5146,7 @@ snapshots: dependencies: cross-dirname: 0.1.0 debug: 4.4.3 - fs-extra: 11.3.4 + fs-extra: 11.3.5 minimist: 1.2.8 postject: 1.0.0-alpha.6 transitivePeerDependencies: @@ -5317,33 +5483,63 @@ snapshots: '@mariozechner/clipboard-darwin-arm64@0.3.6': optional: true + '@mariozechner/clipboard-darwin-arm64@0.3.9': + optional: true + '@mariozechner/clipboard-darwin-universal@0.3.6': optional: true + '@mariozechner/clipboard-darwin-universal@0.3.9': + optional: true + '@mariozechner/clipboard-darwin-x64@0.3.6': optional: true + '@mariozechner/clipboard-darwin-x64@0.3.9': + optional: true + '@mariozechner/clipboard-linux-arm64-gnu@0.3.6': optional: true + '@mariozechner/clipboard-linux-arm64-gnu@0.3.9': + optional: true + '@mariozechner/clipboard-linux-arm64-musl@0.3.6': optional: true + '@mariozechner/clipboard-linux-arm64-musl@0.3.9': + optional: true + '@mariozechner/clipboard-linux-riscv64-gnu@0.3.6': optional: true + '@mariozechner/clipboard-linux-riscv64-gnu@0.3.9': + optional: true + '@mariozechner/clipboard-linux-x64-gnu@0.3.6': optional: true + '@mariozechner/clipboard-linux-x64-gnu@0.3.9': + optional: true + '@mariozechner/clipboard-linux-x64-musl@0.3.6': optional: true + '@mariozechner/clipboard-linux-x64-musl@0.3.9': + optional: true + '@mariozechner/clipboard-win32-arm64-msvc@0.3.6': optional: true + '@mariozechner/clipboard-win32-arm64-msvc@0.3.9': + optional: true + '@mariozechner/clipboard-win32-x64-msvc@0.3.6': optional: true + '@mariozechner/clipboard-win32-x64-msvc@0.3.9': + optional: true + '@mariozechner/clipboard@0.3.6': optionalDependencies: '@mariozechner/clipboard-darwin-arm64': 0.3.6 @@ -5358,6 +5554,20 @@ snapshots: '@mariozechner/clipboard-win32-x64-msvc': 0.3.6 optional: true + '@mariozechner/clipboard@0.3.9': + optionalDependencies: + '@mariozechner/clipboard-darwin-arm64': 0.3.9 + '@mariozechner/clipboard-darwin-universal': 0.3.9 + '@mariozechner/clipboard-darwin-x64': 0.3.9 + '@mariozechner/clipboard-linux-arm64-gnu': 0.3.9 + '@mariozechner/clipboard-linux-arm64-musl': 0.3.9 + '@mariozechner/clipboard-linux-riscv64-gnu': 0.3.9 + '@mariozechner/clipboard-linux-x64-gnu': 0.3.9 + '@mariozechner/clipboard-linux-x64-musl': 0.3.9 + '@mariozechner/clipboard-win32-arm64-msvc': 0.3.9 + '@mariozechner/clipboard-win32-x64-msvc': 0.3.9 + optional: true + '@mediabunny/aac-encoder@1.39.2(mediabunny@1.39.2)': dependencies: mediabunny: 1.39.2 @@ -6245,7 +6455,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0))': + '@vitejs/plugin-react@4.7.0(vite@6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -6253,7 +6463,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) + vite: 6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -6501,6 +6711,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@2.1.1: + dependencies: + balanced-match: 1.0.2 + brace-expansion@5.0.4: dependencies: balanced-match: 4.0.4 @@ -6868,7 +7082,7 @@ snapshots: electron-to-chromium@1.5.321: {} - electron-vite@5.0.0(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)): + electron-vite@5.0.0(vite@6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)): dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) @@ -6876,7 +7090,7 @@ snapshots: esbuild: 0.25.12 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) + vite: 6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -6885,7 +7099,7 @@ snapshots: '@electron/asar': 3.4.1 debug: 4.4.3 fs-extra: 7.0.1 - lodash: 4.17.23 + lodash: 4.18.1 temp: 0.9.4 optionalDependencies: '@electron/windows-sign': 1.2.2 @@ -7147,6 +7361,13 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 + fs-extra@11.3.5: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + optional: true + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -7366,7 +7587,7 @@ snapshots: hosted-git-info@9.0.3: dependencies: - lru-cache: 11.2.7 + lru-cache: 11.5.1 html-entities@2.6.0: {} @@ -7525,6 +7746,13 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + optional: true + jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 @@ -7556,6 +7784,8 @@ snapshots: lodash@4.17.23: {} + lodash@4.18.1: {} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 @@ -7571,6 +7801,8 @@ snapshots: lru-cache@11.2.7: {} + lru-cache@11.5.1: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -8001,7 +8233,7 @@ snapshots: minimatch@5.1.9: dependencies: - brace-expansion: 2.0.3 + brace-expansion: 2.1.1 minimatch@9.0.9: dependencies: @@ -8893,17 +9125,17 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) + vite: 6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0) transitivePeerDependencies: - supports-color - typescript - vite@6.4.1(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0): + vite@6.4.2(@types/node@24.12.2)(jiti@2.7.0)(terser@5.46.1)(yaml@2.9.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) From 804ae8ee65d6159b1845d76a0edcaeea7f747fd4 Mon Sep 17 00:00:00 2001 From: PylotLight Date: Mon, 1 Jun 2026 01:52:57 +1000 Subject: [PATCH 11/11] feat(desktop): refine token counter usage and remove debug logs --- apps/desktop/electron/app-store.ts | 13 ++----- apps/desktop/src/composer-panel.tsx | 58 +++++++++++++++++------------ 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/apps/desktop/electron/app-store.ts b/apps/desktop/electron/app-store.ts index 920bb01a..edfc0e0a 100644 --- a/apps/desktop/electron/app-store.ts +++ b/apps/desktop/electron/app-store.ts @@ -189,7 +189,6 @@ export class DesktopAppStore implements AppStoreInternals { async getSelectedTranscript(): Promise { await this.initialize(); const sessionRef = this.selectedSessionRef(); - console.log(`[pi-gui] getSelectedTranscript called for session: ${sessionRef ? JSON.stringify(sessionRef) : 'none'}`); if (!sessionRef) { return null; } @@ -246,15 +245,14 @@ export class DesktopAppStore implements AppStoreInternals { } async getSessionContextUsage(sessionRef: SessionRef): Promise { - console.log(`[pi-gui] getSessionContextUsage for ${JSON.stringify(sessionRef)}`); const session = await this.driver.getSession(sessionRef); const usage = session.getContextUsage(); - console.log(`[pi-gui] getSessionContextUsage result: ${JSON.stringify(usage)}`); + const stats = session.getSessionStats(); return { ...usage, - input: usage.input ?? null, - output: usage.output ?? null, - cacheRead: usage.cacheRead ?? null, + input: stats.tokens.input, + output: stats.tokens.output, + cacheRead: stats.tokens.cacheRead, }; } @@ -1063,17 +1061,14 @@ export class DesktopAppStore implements AppStoreInternals { private async ensureTranscriptLoaded(sessionRef: SessionRef): Promise { const key = sessionKey(sessionRef); if (this.sessionState.loadedTranscriptKeys.has(key)) { - console.log(`[pi-gui] ensureTranscriptLoaded: cache hit for session: ${key}`); return; } - const cachedTranscript = await this.readPersistedTranscript(key); const transcript = cachedTranscript ? await this.resolveLoadedTranscript(sessionRef, cachedTranscript) : await this.driver.getTranscript(sessionRef); if (!cachedTranscript || cachedTranscript.format === "legacy") { - console.log(`[pi-gui] ensureTranscriptLoaded: cache miss, fetched transcript for session: ${key}`); await this.writePersistedTranscript(key, transcript); } diff --git a/apps/desktop/src/composer-panel.tsx b/apps/desktop/src/composer-panel.tsx index c462469d..abe5fc05 100644 --- a/apps/desktop/src/composer-panel.tsx +++ b/apps/desktop/src/composer-panel.tsx @@ -14,7 +14,6 @@ import type { ModelOnboardingState, ModelOnboardingSettingsSection } from "./mod import { ModelSelector } from "./model-selector"; import type { ExtensionDockModel } from "./extension-session-ui"; function TokenCounter({ usage }: { usage?: ContextUsage }) { - console.log(`[pi-gui-ui] TokenCounter rendering with usage:`, usage); if (!usage || usage.tokens === null) { return
N/A
; } @@ -39,24 +38,38 @@ function TokenCounter({ usage }: { usage?: ContextUsage }) {
{formatTokens(usage.tokens)} / {formatTokens(usage.contextWindow)} ({percent.toFixed(1)}%)
-
Context Usage
-
- Total: - {usage.tokens.toLocaleString()} / {usage.contextWindow.toLocaleString()} ({percent.toFixed(1)}%) - <> - Input: - {(usage.input ?? 0).toLocaleString()} - - <> - Output: - {(usage.output ?? 0).toLocaleString()} - - {/* - <> - Cache Read: - {(usage.cacheRead ?? 0).toLocaleString()} - - */} +
Token Usage
+ +
+
Context Window
+
+ Current: + {usage.tokens.toLocaleString()} / {usage.contextWindow.toLocaleString()} ({percent.toFixed(1)}%) +
+
+ +
+
Session Usage
+
+ Input: + {(usage.input ?? 0).toLocaleString()} + Output: + {(usage.output ?? 0).toLocaleString()} + Cache Read: + {(usage.cacheRead ?? 0).toLocaleString()} +
+ Total: + {( (usage.input ?? 0) + (usage.output ?? 0) + (usage.cacheRead ?? 0) ).toLocaleString()} +
+
@@ -216,10 +229,9 @@ export function ComposerPanel({ ? `${runningLabel} · Enter to queue · Cmd+Enter to steer` : "Enter to send · Shift+Enter for newline"} {(() => { - console.log(`[pi-gui-ui] ComposerPanel usage:`, selectedSessionContextUsage); - return selectedSessionContextUsage !== undefined ? ( - <> - {" · "} + return selectedSessionContextUsage !== undefined ? ( + <> + {" · "} ) : null;