@raingor/pi-web-switch 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +17 -1
- package/README.md +17 -1
- package/README.zh-CN.md +17 -1
- package/package.json +49 -3
- package/public/apple-touch-icon.png +0 -0
- package/public/icon-192.png +0 -0
- package/public/icon-512.png +0 -0
- package/public/pi.svg +47 -4
- package/public/sw.js +28 -5
- package/server/agent-session-manager.ts +827 -0
- package/server/chat-api-plugin.ts +488 -0
- package/server/pi-reader.ts +441 -71
- package/src/App.tsx +2 -0
- package/src/components/chat/ChatInput.tsx +863 -0
- package/src/components/chat/ChatPage.tsx +617 -0
- package/src/components/chat/ChatWindow.tsx +338 -0
- package/src/components/chat/MessageView.tsx +595 -0
- package/src/components/dashboard/DashboardPage.tsx +45 -5
- package/src/components/layout/AppShell.tsx +12 -5
- package/src/components/layout/Sidebar.tsx +3 -5
- package/src/components/providers/ProvidersModelsPage.tsx +768 -146
- package/src/components/sessions/SessionsPage.tsx +466 -148
- package/src/components/settings/SettingsPage.tsx +74 -55
- package/src/data/builtin-providers.ts +7 -7
- package/src/data/model-catalog.ts +967 -0
- package/src/hooks/useAgentSession.ts +1104 -0
- package/src/index.css +29 -1
- package/src/lib/config.ts +61 -0
- package/src/lib/translations/en.ts +99 -0
- package/src/lib/translations/ja.ts +99 -0
- package/src/lib/translations/zh-CN.ts +99 -0
- package/src/lib/translations/zh-TW.ts +99 -0
- package/src/main.tsx +13 -2
- package/src/store/config-store.ts +78 -21
- package/src/types/chat.ts +217 -0
- package/tsconfig.json +1 -1
- package/vite.config.ts +150 -1
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-1-1785132166652.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-1-1785291744290.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-1-1785291756870.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-1-1785293871314.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-10-1785297139944.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-2-1785132240502.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-2-1785132249748.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-2-1785294992352.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-2-1785295104532.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-2-1785295132507.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-3-1785132387218.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-4-1785295319523.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-4-1785295349664.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-4-1785295399600.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-5-1785295450850.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-5-1785295487872.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-5-1785295562600.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-5-1785295761054.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-5-1785295840175.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-6-1785295915007.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-6-1785296069913.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-7-1785296128252.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-9-1785297091531.png +0 -0
- package/.pi/.pi-puppeteer/artifacts/screenshots/session-9-1785297116790.png +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/ActorSafetyLists/9.5220.3721/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/ActorSafetyLists/9.5220.3721/listdata.json +0 -91946
- package/.pi/.pi-puppeteer/profiles/chrome/default/ActorSafetyLists/9.5220.3721/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/AmountExtractionHeuristicRegexes/4/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/AmountExtractionHeuristicRegexes/4/heuristic_regexes.binarypb +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/AmountExtractionHeuristicRegexes/4/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/BrowserMetrics/BrowserMetrics-6A6978EB-A861.pma +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/BrowserMetrics-spare.pma +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/CaptchaProviders/8.5419.4434/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/CaptchaProviders/8.5419.4434/captcha_providers.json +0 -12
- package/.pi/.pi-puppeteer/profiles/chrome/default/CaptchaProviders/8.5419.4434/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/CertificateRevocation/10680/LICENSE +0 -27
- package/.pi/.pi-puppeteer/profiles/chrome/default/CertificateRevocation/10680/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/CertificateRevocation/10680/crl-set +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/CertificateRevocation/10680/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/ChromeFeatureState +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Consent To Send Stats +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Crowd Deny/2026.7.27.84/Preload Data +0 -24078
- package/.pi/.pi-puppeteer/profiles/chrome/default/Crowd Deny/2026.7.27.84/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Crowd Deny/2026.7.27.84/manifest.json +0 -6
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/.com.google.Chrome.Hbf1ld +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Account Web Data +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Account Web Data-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Affiliation Database +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Affiliation Database-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/AutofillAiModelCache/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/AutofillAiModelCache/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/AutofillAiModelCache/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/AutofillStrikeDatabase/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/AutofillStrikeDatabase/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/AutofillStrikeDatabase/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/BookmarkMergedSurfaceOrdering +0 -2
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/BudgetDatabase/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/BudgetDatabase/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/BudgetDatabase/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/003827f5ea5ac9e9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/00473eec8b9b56d5_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/05a190c784b641e3_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/066df8884be8cf8d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/09627b0809e61f83_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/09b27ac23861b1d7_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/0fd9412b623e5a66_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/118fb0fa2505d3b2_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/1194588b7e2b20e9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/135a3004445f6f03_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/13f1e7131fe25bc6_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/15a2a5dccd304be7_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/17893ac60e1e94c2_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/19474b63539a4609_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/1a1ecc22219568db_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/1bb0006133ebefa3_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/1cfaeeed4b13a026_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/1e3cf5f23a4de58b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/20427e8d33888ba3_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/2258d238accf0bfa_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/228c3ad9d63adf48_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/2437d308abe15ac2_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/246f33a252b55bce_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/25862298f2999d7d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/262d9bff9f7f64bb_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/264aad789515de93_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/269ad8897b8e63d0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/2cd2c50a38161cab_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/2dd4db1365eeeac8_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/2eae0c639fd772df_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/30bb21d39b68bd84_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/31121aeb5ecffa5f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/32766be1527c8e9a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/328e80b1ed10d28d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/339dcbdde8b8ac4e_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/34439c1d4bfc8dad_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/381d5603ee3fd8b9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/38fbe92680d28074_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/393ce7bb08410970_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/3d74b8be0f86614f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/4016e35a2021656d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/409bcaf42c9c09b4_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/41888ebeeb475a59_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/4714ef11264459f5_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/479d2c4f7d4f3b38_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/4824ea24720f1a77_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/4a73d37e6e4ce922_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/4ecdd068adbdf42a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/54e6cc05346dd07c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/5505ea174dc90263_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/551679343b836505_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/573f6264a77df462_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/578926a5c39768ed_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/582a8182776d9380_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/5f3aa184b329759d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/6351cd107efed247_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/637516a46d1d8587_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/65e82d9cb58cbd6d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/66d24a1529d6dae0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/6995a7c799490d3d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/6d10426240c5ff67_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/6dc325603c897784_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/6fbab020dd731222_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/70fa542a6974378a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/72a8c452abd1b0e6_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/72df48e9888c822b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/73abcb8da3b9f73d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/741e8bcc257a64a9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/75df0820975fcdfa_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/7789e307be36811d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/79a161a9b2f4a11e_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/7afd0bc7f9852bf0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/7ce691ce1ceb3b8d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/7ef6780a186001ac_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/80402f00feb6a222_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/85b55ea0ca260643_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/86300205c03092e4_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/87c94a2eac816ea9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/880c25af3ab59187_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/8a7d0881c813aeec_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/8bad3b1bccd25517_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/8bd9377481fa7d43_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/8c1a58ce19e15d16_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/8e44e385f5911b07_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/90e39d8d065f6ac0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/93d81321f8c35eab_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/93e9945beb439414_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/944e08f273fccc44_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/95edd63493c49660_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/9789c4ee76bdb350_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/9a5911308e0f26ad_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/9a6cdf8f5c03aee5_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/9aeb4a3d1a607b07_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/9aff0e1ff1742ee0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/9bdabd2703f2e3ba_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/9d4d11ac8a8e264f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/9dd169e672e31961_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/9e72442bf8821115_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/a330965ccf5564ca_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/a3a3c6351a3f2f42_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/a818977d416f829d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/aa452720fc9d634f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/ac06b722aea9fcb8_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/aca3b8cf1f98e0bb_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/add439b7aae9334a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/b0113626d8ba968d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/ba97b9d927729aa7_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/bfcb9d225e4f11a8_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/c364377515d768e0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/c4376485fa897eca_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/c5b74f49505d3ecc_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/c7e10eb03f6d5cc2_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/c91efba145098b4c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/caecbbde37e3c866_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/cdddd64b252697fd_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/d3efa3ab37db7796_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/d6289ab00fe343c0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/d6be42432091d3ae_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/d7137f065f39412f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/d83db61c108fa34f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/d86cd6e1d99a8eaf_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/d97f1cfcc2edd001_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/de620df53673a107_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/de86892a6fa4e33b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/deb2cfe585bf96b0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/df93d6767095d5ea_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e1f8d8432edb7ea6_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e2e1058ec6a8e645_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e39ddd81e303f259_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e468a0fb6aa7fd4e_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e46f51470717ac3c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e4a531774ba47406_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e57a3a1fa60638e1_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e594d414c7f4d6a1_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e771a081db13a5b8_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e78c0ca6dbdafcd0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e8e671ad5c3fb2a8_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/e96e46c4d92b214f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/ea24ade36915d935_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/eaa70273ce58d3b3_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/eca41bfe04d1680d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/ed551f6d52fa6049_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/ee2190fb8068ea31_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/ee688f43baa25b4b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/f016dffa17337f95_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/f0707f1f113fa72c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/f12650f2be214ec8_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/f1887b75d61dbd90_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/f28900863f2e45b7_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/f4ee911c81881048_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/f557a2bca202c132_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/f61ed35c6c0b87d8_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/f6f1caefb3e18ade_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/fd695fa621d42490_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/Cache_Data/index-dir/the-real-index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/No_Vary_Search/journal.baj +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cache/No_Vary_Search/snapshot.baf +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/ClientCertificates/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/ClientCertificates/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/ClientCertificates/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/02b3a268866a7a0c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/0edbc65a5e505019_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/1051d2e224b9dd7a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/13cf7a1704163ded_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/16860cee78cb7179_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/17ea85d6fceb9229_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/1b6c1ba202c59494_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/1ebec9ea59157454_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/1ee2a6b57d251d09_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/2445a9737b996e2a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/2d10a08da99d6d96_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/325c8b935b677e9d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/454c49e6be2650e9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/4a34df5a255ad22e_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/4dfd5beef212627f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/5fe872a733479fff_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/66943b0755a2799d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/6a1839253b0d0b0a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/6e13894af36f3b79_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/786d3f1f49d31154_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/82f67f35254528ab_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/831e5a135cde918e_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/9965b2c8a33ec50d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/a15b1367fd75ef89_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/a7c7741248aeea07_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/a8e54c52a52541a9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/afa0d16c75997a6c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/b35d29b5b3583a88_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/bc55d051b6fd0744_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/bc8566d00f634dfb_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/c0be8aeb35882f7c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/c771807a395d295c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/c9058e9015c26dc7_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/d6804628a868f972_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/d7f211a5cec70609_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/d9c03164fc246389_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/e1011bf217f0ad7a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/efd85d739d006527_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/f5fe496bf55cd561_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/fc52f43646894a73_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/fc8954eb9445852d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/ff6de2f37189b29f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/js/index-dir/the-real-index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/wasm/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Code Cache/wasm/index-dir/the-real-index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cookies +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Cookies-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DIPS +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnGraphiteCache/data_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnGraphiteCache/data_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnGraphiteCache/data_2 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnGraphiteCache/data_3 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnGraphiteCache/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnWebGPUCache/data_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnWebGPUCache/data_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnWebGPUCache/data_2 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnWebGPUCache/data_3 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/DawnWebGPUCache/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension Rules/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension Rules/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension Rules/LOG +0 -2
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension Rules/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension Scripts/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension Scripts/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension Scripts/LOG +0 -2
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension Scripts/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension State/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension State/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension State/LOG +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension State/LOG.old +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Extension State/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Favicons +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Favicons-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Feature Engagement Tracker/AvailabilityDB/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Feature Engagement Tracker/AvailabilityDB/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Feature Engagement Tracker/AvailabilityDB/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Feature Engagement Tracker/EventDB/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Feature Engagement Tracker/EventDB/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Feature Engagement Tracker/EventDB/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GCM Store/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GCM Store/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GCM Store/LOG +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GCM Store/LOG.old +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GCM Store/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GPUCache/data_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GPUCache/data_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GPUCache/data_2 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GPUCache/data_3 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/GPUCache/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/History +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/History-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Local Storage/leveldb/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Local Storage/leveldb/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Local Storage/leveldb/LOG +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Local Storage/leveldb/LOG.old +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Local Storage/leveldb/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Login Data +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Login Data For Account +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Login Data For Account-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Login Data-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Network Action Predictor +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Network Action Predictor-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Network Persistent State +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/PersistentOriginTrials/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/PersistentOriginTrials/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/PersistentOriginTrials/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Preferences +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/PreferredApps +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/README +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Reporting and NEL +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Reporting and NEL-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Safe Browsing Cookies +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Safe Browsing Cookies-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Secure Preferences +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Segmentation Platform/SegmentInfoDB/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Segmentation Platform/SegmentInfoDB/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Segmentation Platform/SegmentInfoDB/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Segmentation Platform/SignalDB/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Segmentation Platform/SignalDB/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Segmentation Platform/SignalDB/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Segmentation Platform/SignalStorageConfigDB/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Segmentation Platform/SignalStorageConfigDB/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Segmentation Platform/SignalStorageConfigDB/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/ServerCertificate +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/ServerCertificate-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/09ed93488198f423_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/09ed93488198f423_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/0a30220965d74d1e_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/1300177f362c3a4a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/1300177f362c3a4a_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/27b9ccf88365ee26_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/2921673031323747_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/2921673031323747_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/35f037f406300022_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/35f037f406300022_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/3adbee165bfbf214_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/3c8f4750e95148d9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/3ce96b151d8c7cc1_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/3ce96b151d8c7cc1_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/483d56a1df05215a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/483d56a1df05215a_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/4d82f9d0e0941cce_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/4f42af3671d8c6c6_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/4f42af3671d8c6c6_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/5973e266a3773c26_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/5ad1663b68163b6f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/5b4c15b3725d9989_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/5b4c15b3725d9989_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/5c619235d9c64bc3_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/5c619235d9c64bc3_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/5e3af97b8dccb412_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/5e3af97b8dccb412_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/6e068fc05df362b0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/6e068fc05df362b0_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/755a4c7663f8dc02_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/755a4c7663f8dc02_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/7969561312c7823f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/7969561312c7823f_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/79ffa2733a735063_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/7f91cd3066f0019f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/7f91cd3066f0019f_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/7f97d42038a92017_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/7f97d42038a92017_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/820d43cc26b882ff_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/820d43cc26b882ff_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/88e95753fb6f9ea9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/8b469fd8bafad3b3_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/8b469fd8bafad3b3_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/900dd661df81967a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/9546d2c6dd38203c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/9546d2c6dd38203c_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/96d03a8b051613e1_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/96d03a8b051613e1_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/a0222364eb3781e3_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/a0222364eb3781e3_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/a524d2c2d64c3660_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/a524d2c2d64c3660_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/a78bfbcc1859fb76_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/a78bfbcc1859fb76_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/ac56d7aa94c8dd89_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/ac56d7aa94c8dd89_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/b5055aa76b1823e0_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/b5055aa76b1823e0_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/c0b18bd33c20f43c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/c0b18bd33c20f43c_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/c31100b4d5efc61d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/c31100b4d5efc61d_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/c62331d49f110533_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/c62331d49f110533_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/c7bb739419f12b43_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/cdf6536f6656df3e_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/cdf6536f6656df3e_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/d0e2620915e19afb_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/d0e2620915e19afb_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/d4313ca21cedf2ad_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/d4313ca21cedf2ad_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/d4cbe68232f52d97_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/d4cbe68232f52d97_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/d90bf1dbbf713592_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/d90bf1dbbf713592_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/df18dfd2a1ad9fb4_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/df18dfd2a1ad9fb4_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/e321e1f483bdf8f3_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/e321e1f483bdf8f3_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/e3cf32438c59b057_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/e3cf32438c59b057_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/e5d70b58b9ad133a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/e5d70b58b9ad133a_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/e6bebc23f041524b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/e6bebc23f041524b_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/ec2dbc36a8a707bf_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f0d3846d04ec57fa_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f0d3846d04ec57fa_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f41ecefc4e8c4d02_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f41ecefc4e8c4d02_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f641877808e85797_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f641877808e85797_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f792102a3adfa574_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f792102a3adfa574_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f87456efb50ead2b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f87456efb50ead2b_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f9c75818bcb88359_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/f9c75818bcb88359_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/fb21145c8e2675cb_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/fb21145c8e2675cb_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/56407312-0248-4546-be02-0d16e58a3522/index-dir/the-real-index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/d12381ba-daf3-4f23-9177-0ab3706f83a2/0281c98fa97441e5_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/d12381ba-daf3-4f23-9177-0ab3706f83a2/319cb45fc46cfd93_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/d12381ba-daf3-4f23-9177-0ab3706f83a2/685282d5721939ea_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/d12381ba-daf3-4f23-9177-0ab3706f83a2/8634e8d5eb849493_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/d12381ba-daf3-4f23-9177-0ab3706f83a2/c6ba0abf049dda93_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/d12381ba-daf3-4f23-9177-0ab3706f83a2/ff32d8eaf874a37b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/d12381ba-daf3-4f23-9177-0ab3706f83a2/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/d12381ba-daf3-4f23-9177-0ab3706f83a2/index-dir/the-real-index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/046fd1ef5e540ebf33332849ed99f4174f5bbafc/index.txt +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/024678dda211fa26_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/024678dda211fa26_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/037830b98bc2d51d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/037830b98bc2d51d_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/058b480bfb167f1d_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/058b480bfb167f1d_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/0655e9ff0425de79_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/0a59caba16743dc4_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/0a59caba16743dc4_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/136ff5c99b26781c_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/136ff5c99b26781c_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/17a566dc27c99ba4_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/17a566dc27c99ba4_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/21f0f05b2eceebc6_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/21f0f05b2eceebc6_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/258481d12e2d6b56_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/258481d12e2d6b56_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/384fffcb0c07b624_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/4d19946442d4bfbb_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/4db2b1b4ab66bab9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/4db2b1b4ab66bab9_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/51f125f305445381_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/51f125f305445381_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/5a8718d400d2f051_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/5a8718d400d2f051_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/61766447abeea15f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/61766447abeea15f_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/62151dfee245ae9b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/62151dfee245ae9b_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/696c1b7392b5c15a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/696c1b7392b5c15a_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/6c82448ab5b28377_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/6c82448ab5b28377_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/6d24995ced602e98_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/722befb3ecafcb3f_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/78c3660b76e7d93a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/78c3660b76e7d93a_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/798dd4b9b7d9d5c2_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/8595071248e29ee1_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/8595071248e29ee1_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/8b04b7c22f0fd1f9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/8b04b7c22f0fd1f9_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/8f520d5d41ee00bd_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/8f520d5d41ee00bd_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/901ff14ab13b28c6_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/901ff14ab13b28c6_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/a1d474dd0b6dd558_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/a1d474dd0b6dd558_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/a3011f5e2ef033c1_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/a3011f5e2ef033c1_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/a8b1cac4bc45ce95_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/a8b1cac4bc45ce95_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/ba58c86b9d2825b2_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/ba58c86b9d2825b2_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/c5d7b8f405d5e062_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/ca40ebe1bbd077ac_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/ca40ebe1bbd077ac_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/d0ab2b640b0a13e7_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/d0ab2b640b0a13e7_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/d0c3865f553ac976_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/d0c3865f553ac976_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/da45add0238a285a_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/da45add0238a285a_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/e4307c16470799da_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/e4307c16470799da_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/e7690ca8c63cad14_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/e7690ca8c63cad14_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/e7ba6f4de6562c89_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/e7ba6f4de6562c89_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/eb1bcf853b355e13_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/eb1bcf853b355e13_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/f32ce7214b1774ba_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/f32ce7214b1774ba_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/f62e4b05ee7d99f9_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/f62e4b05ee7d99f9_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/fc5ef4b63ae4bb4b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/3691c090-dad1-4066-a2d5-4462a09e7435/index-dir/the-real-index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/de96e545-808a-4ef3-b7b1-a72521505ad2/52158ab3c1d3fdde_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/de96e545-808a-4ef3-b7b1-a72521505ad2/9c3cfbb43286df23_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/de96e545-808a-4ef3-b7b1-a72521505ad2/b19f1b829e018cf2_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/de96e545-808a-4ef3-b7b1-a72521505ad2/b8ae4f867095f4fd_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/de96e545-808a-4ef3-b7b1-a72521505ad2/bdc920a7c2524c3b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/de96e545-808a-4ef3-b7b1-a72521505ad2/ea5f9af36eefd38b_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/de96e545-808a-4ef3-b7b1-a72521505ad2/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/de96e545-808a-4ef3-b7b1-a72521505ad2/index-dir/the-real-index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/CacheStorage/2f12120e9e05877e5620444e87e1a223bba7f923/index.txt +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/Database/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/Database/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/Database/LOG +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/Database/LOG.old +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/Database/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/ScriptCache/2cc80dabc69f58b6_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/ScriptCache/2cc80dabc69f58b6_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/ScriptCache/fa813c9ad67834ac_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/ScriptCache/fa813c9ad67834ac_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/ScriptCache/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Service Worker/ScriptCache/index-dir/the-real-index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Session Storage/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Session Storage/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Session Storage/LOG +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Session Storage/LOG.old +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Session Storage/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Sessions/Session_13429768577966436 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Sessions/Tabs_13429770684888237 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Sessions/Tabs_13429770734729173 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Shared Dictionary/cache/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Shared Dictionary/cache/index-dir/the-real-index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Shared Dictionary/db +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Shared Dictionary/db-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/SharedStorage +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Shortcuts +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Shortcuts-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Site Characteristics Database/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Site Characteristics Database/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Site Characteristics Database/LOG +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Site Characteristics Database/LOG.old +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Site Characteristics Database/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Sync Data/LevelDB/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Sync Data/LevelDB/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Sync Data/LevelDB/LOG +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Sync Data/LevelDB/LOG.old +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Sync Data/LevelDB/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Top Sites +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Top Sites-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Translate Ranker Model +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/TransportSecurity +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Trust Tokens +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Trust Tokens-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Web Data +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/Web Data-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/WebStorage/QuotaManager +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/WebStorage/QuotaManager-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/chrome_cart_db/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/chrome_cart_db/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/chrome_cart_db/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/commerce_subscription_db/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/commerce_subscription_db/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/commerce_subscription_db/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/discount_infos_db/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/discount_infos_db/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/discount_infos_db/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/discounts_db/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/discounts_db/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/discounts_db/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/engine_allowlist.bf +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/heavy_ad_intervention_opt_out.db +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/heavy_ad_intervention_opt_out.db-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/parcel_tracking_db/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/parcel_tracking_db/LOG +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/parcel_tracking_db/LOG.old +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/LOG +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/LOG.old +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/metadata/CURRENT +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/metadata/LOCK +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/metadata/LOG +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/metadata/LOG.old +0 -3
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/shared_proto_db/metadata/MANIFEST-000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Default/trusted_vault.pb +0 -2
- package/.pi/.pi-puppeteer/profiles/chrome/default/DevToolsActivePort +0 -2
- package/.pi/.pi-puppeteer/profiles/chrome/default/FileTypePolicies/145.0.7584.0/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/FileTypePolicies/145.0.7584.0/download_file_types.pb +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/FileTypePolicies/145.0.7584.0/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/FirstPartySetsPreloaded/2025.7.24.0/LICENSE +0 -27
- package/.pi/.pi-puppeteer/profiles/chrome/default/FirstPartySetsPreloaded/2025.7.24.0/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/FirstPartySetsPreloaded/2025.7.24.0/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/FirstPartySetsPreloaded/2025.7.24.0/sets.json +0 -70
- package/.pi/.pi-puppeteer/profiles/chrome/default/GPUPersistentCache/GPUCache/NDJN3PYMYS2VQL44TKFDS34NLSXM6YVU/cache.db +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GPUPersistentCache/GPUCache/NDJN3PYMYS2VQL44TKFDS34NLSXM6YVU/cache.db-wal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GPUPersistentCache/GPUCache/NDJN3PYMYS2VQL44TKFDS34NLSXM6YVU/cache.journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GraphiteDawnCache/data_0 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GraphiteDawnCache/data_1 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GraphiteDawnCache/data_2 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GraphiteDawnCache/data_3 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GraphiteDawnCache/f_000001 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GraphiteDawnCache/f_000002 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GraphiteDawnCache/f_000003 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GraphiteDawnCache/f_000004 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/GraphiteDawnCache/index +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Last Version +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Local State +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/MEIPreload/1.1.0.3/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/MEIPreload/1.1.0.3/manifest.json +0 -7
- package/.pi/.pi-puppeteer/profiles/chrome/default/MEIPreload/1.1.0.3/preloaded_data.pb +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/PKIMetadata/1728/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/PKIMetadata/1728/crs.pb +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/PKIMetadata/1728/ct_config.pb +3 -322
- package/.pi/.pi-puppeteer/profiles/chrome/default/PKIMetadata/1728/kp_pinslist.pb +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/PKIMetadata/1728/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/PKIMetadata/1728/mtc_config.pb +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/SSLErrorAssistant/7/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/SSLErrorAssistant/7/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/SSLErrorAssistant/7/ssl_error_assistant.pb +0 -54
- package/.pi/.pi-puppeteer/profiles/chrome/default/SafetyTips/3091/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/SafetyTips/3091/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/SafetyTips/3091/safety_tips.pb +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Subresource Filter/Indexed Rules/38/9.70.0/Ruleset Data +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/Subresource Filter/Unindexed Rules/9.70.0/Filtering Rules +0 -6106
- package/.pi/.pi-puppeteer/profiles/chrome/default/Subresource Filter/Unindexed Rules/9.70.0/LICENSE.txt +0 -383
- package/.pi/.pi-puppeteer/profiles/chrome/default/Subresource Filter/Unindexed Rules/9.70.0/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/Subresource Filter/Unindexed Rules/9.70.0/manifest.json +0 -6
- package/.pi/.pi-puppeteer/profiles/chrome/default/TrustTokenKeyCommitments/2026.3.23.1/LICENSE +0 -27
- package/.pi/.pi-puppeteer/profiles/chrome/default/TrustTokenKeyCommitments/2026.3.23.1/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/TrustTokenKeyCommitments/2026.3.23.1/keys.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/TrustTokenKeyCommitments/2026.3.23.1/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/Variations +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/background_compiled.js +0 -40
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/bindings_main.js +0 -6281
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/bindings_main.wasm +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/offscreen.html +0 -2
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/offscreen_compiled.js +0 -131
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/streaming_worklet_processor.js +0 -78
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/voices.json +0 -1779
- package/.pi/.pi-puppeteer/profiles/chrome/default/WasmTtsEngine/20260723.1/wasm_tts_manifest_v3.json +0 -43
- package/.pi/.pi-puppeteer/profiles/chrome/default/ZxcvbnData/3/_metadata/verified_contents.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/ZxcvbnData/3/english_wikipedia.txt +0 -30000
- package/.pi/.pi-puppeteer/profiles/chrome/default/ZxcvbnData/3/female_names.txt +0 -3712
- package/.pi/.pi-puppeteer/profiles/chrome/default/ZxcvbnData/3/male_names.txt +0 -984
- package/.pi/.pi-puppeteer/profiles/chrome/default/ZxcvbnData/3/manifest.json +0 -5
- package/.pi/.pi-puppeteer/profiles/chrome/default/ZxcvbnData/3/passwords.txt +0 -30000
- package/.pi/.pi-puppeteer/profiles/chrome/default/ZxcvbnData/3/ranked_dicts +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/ZxcvbnData/3/surnames.txt +0 -10000
- package/.pi/.pi-puppeteer/profiles/chrome/default/ZxcvbnData/3/us_tv_and_film.txt +0 -19160
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/0d784450fcc5b3ad7ab4efa85b2e1fe56bd5086b69807eab756f62c257ea0d8b +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/0d994b6c9c5d4b0316bcc7a79f4939a2390c638169ea6dc783198c17286d8255 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/3eb16d6c28b502ac4cfee8f4a148df05f4d93229fa36a71db8b08d06329ff18a +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/4448b37acb13eb51a842a8ebc85ea826729571c7293f2213d855d3a76cb9a4f8 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/545666a4efd056351597bb386aea1368105ededc976ed5650d8682daab9f37ff +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/56c21927faa028be6ce18c931660eec37e41da4bfbfd47cafa48350f828c0dbd +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/733776833212346a1018b95197c61bed2d107fbb7790a985ef692780e02f31cb +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/7b05c14dba04ed522210b733f004cb0e74d7679a653b19bd029f9bc0e6b19903 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/8f2c0712b6800fa9622a039cb167cc9503d508a271247e445f08a96eded5772f +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/9bec6c2c0185d3305ac8495047a1aa01e725d58f8f18d219742a2988f07cd93a +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/9f157bd09a986baa46110a0acb7e3d7407208e58d02250c637902962e5ed2c5e +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/abd93867c038d4d17c101ace2226d7e21303d984d7097271392bae6be478495b +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/ae216724654f3e52d3c502328caf83f773e66cc5818c38850165864005a35169 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/c8c2fd0acdb7eecaf4f66d5164204c4e8e5ebbabb6398e0ee6ec6d8af71ea672 +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/fd8fd38c229ab33755ff429ccc9919eba21b566551cbfb17d8e11e35e941ee0e +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/component_crx_cache/metadata.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/extensions_crx_cache/metadata.json +0 -1
- package/.pi/.pi-puppeteer/profiles/chrome/default/first_party_sets.db +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/first_party_sets.db-journal +0 -0
- package/.pi/.pi-puppeteer/profiles/chrome/default/segmentation_platform/ukm_db +0 -0
- package/.pi-subagents/artifacts/6d0b4431_custom.vision-agent_0_input.md +0 -54
- package/.pi-subagents/artifacts/6d0b4431_custom.vision-agent_0_meta.json +0 -114
- package/.pi-subagents/artifacts/6d0b4431_custom.vision-agent_0_output.md +0 -22
- package/.pi-subagents/artifacts/6d0b4431_custom.vision-agent_0_transcript.jsonl +0 -7
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,1104 @@
|
|
|
1
|
+
// useAgentSession — core hook for managing pi agent chat sessions.
|
|
2
|
+
// Ported and simplified from pi-web's hooks/useAgentSession.ts.
|
|
3
|
+
// Handles: session loading, SSE events, message sending, model switching, abort, compact.
|
|
4
|
+
|
|
5
|
+
import { useState, useCallback, useRef, useEffect, useMemo, useReducer } from "react";
|
|
6
|
+
import type {
|
|
7
|
+
AgentMessage,
|
|
8
|
+
AssistantMessage,
|
|
9
|
+
SessionData,
|
|
10
|
+
SessionInfo,
|
|
11
|
+
SessionStatsInfo,
|
|
12
|
+
AttachedImage,
|
|
13
|
+
ChatInputHandle,
|
|
14
|
+
ModelEntry,
|
|
15
|
+
AgentStateResponse,
|
|
16
|
+
NoticeItem,
|
|
17
|
+
AgentPhase,
|
|
18
|
+
QueuedMessages,
|
|
19
|
+
SlashCommandInfo,
|
|
20
|
+
ContextUsage,
|
|
21
|
+
ToolResultMessage,
|
|
22
|
+
} from "@/types/chat";
|
|
23
|
+
|
|
24
|
+
// ─── Helpers ─────────────────────────────────────────────
|
|
25
|
+
|
|
26
|
+
export async function sendAgentCommand<T = unknown>(
|
|
27
|
+
sessionId: string,
|
|
28
|
+
command: Record<string, unknown>,
|
|
29
|
+
): Promise<T> {
|
|
30
|
+
const res = await fetch(`/api/chat/agent/${encodeURIComponent(sessionId)}`, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
headers: { "Content-Type": "application/json" },
|
|
33
|
+
body: JSON.stringify(command),
|
|
34
|
+
});
|
|
35
|
+
const body = (await res.json().catch(() => ({}))) as {
|
|
36
|
+
success?: boolean;
|
|
37
|
+
data?: T;
|
|
38
|
+
error?: string;
|
|
39
|
+
};
|
|
40
|
+
if (!res.ok || body.error) {
|
|
41
|
+
throw new Error(body.error ?? `HTTP ${res.status}`);
|
|
42
|
+
}
|
|
43
|
+
return body.data as T;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function normalizeToolCalls(message: AgentMessage): AgentMessage {
|
|
47
|
+
if (message.role !== "assistant") return message;
|
|
48
|
+
const am = message as AssistantMessage;
|
|
49
|
+
let changed = false;
|
|
50
|
+
const content = am.content.map((block) => {
|
|
51
|
+
if (block.type === "toolCall" && (block as any).tool_name && !block.toolName) {
|
|
52
|
+
changed = true;
|
|
53
|
+
const { tool_name, ...rest } = block as any;
|
|
54
|
+
return { ...rest, toolName: tool_name };
|
|
55
|
+
}
|
|
56
|
+
if (block.type === "toolCall" && (block as any).tool_input && !block.input) {
|
|
57
|
+
changed = true;
|
|
58
|
+
const { tool_input, ...rest } = block as any;
|
|
59
|
+
return { ...rest, input: tool_input };
|
|
60
|
+
}
|
|
61
|
+
return block;
|
|
62
|
+
});
|
|
63
|
+
return changed ? { ...am, content } : am;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function createNoticeId(): string {
|
|
67
|
+
if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
|
|
68
|
+
return crypto.randomUUID();
|
|
69
|
+
}
|
|
70
|
+
return `${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function extractMessageText(message: Partial<AgentMessage>): string {
|
|
74
|
+
const content = (message as { content?: unknown }).content;
|
|
75
|
+
if (typeof content === "string") return content;
|
|
76
|
+
if (!Array.isArray(content)) return "";
|
|
77
|
+
return content
|
|
78
|
+
.map((block) =>
|
|
79
|
+
block && typeof block === "object"
|
|
80
|
+
&& (block as { type?: string }).type === "text"
|
|
81
|
+
&& typeof (block as { text?: unknown }).text === "string"
|
|
82
|
+
? (block as { text: string }).text
|
|
83
|
+
: "")
|
|
84
|
+
.filter(Boolean)
|
|
85
|
+
.join("\n");
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function imageSignature(block: unknown): string {
|
|
89
|
+
if (!block || typeof block !== "object" || (block as { type?: unknown }).type !== "image") return "";
|
|
90
|
+
const source = (block as { source?: unknown }).source;
|
|
91
|
+
if (source && typeof source === "object") {
|
|
92
|
+
const src = source as { type?: unknown; media_type?: unknown; data?: unknown; url?: unknown };
|
|
93
|
+
return [src.type === "url" ? "url" : "base64", typeof src.media_type === "string" ? src.media_type : "", typeof src.data === "string" ? src.data : "", typeof src.url === "string" ? src.url : ""].join(":");
|
|
94
|
+
}
|
|
95
|
+
const flat = block as { data?: unknown; mimeType?: unknown };
|
|
96
|
+
return ["base64", typeof flat.mimeType === "string" ? flat.mimeType : "", typeof flat.data === "string" ? flat.data : "", ""].join(":");
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function userMessageKey(message: Partial<AgentMessage>): string {
|
|
100
|
+
const content = (message as { content?: unknown }).content;
|
|
101
|
+
if (typeof content === "string") return JSON.stringify({ text: content, images: [] });
|
|
102
|
+
if (!Array.isArray(content)) return JSON.stringify({ text: "", images: [] });
|
|
103
|
+
return JSON.stringify({
|
|
104
|
+
text: extractMessageText(message),
|
|
105
|
+
images: content.map(imageSignature).filter(Boolean),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// ─── Stream Reducer ──────────────────────────────────────
|
|
110
|
+
|
|
111
|
+
interface StreamingState {
|
|
112
|
+
isStreaming: boolean;
|
|
113
|
+
streamingMessage: Partial<AgentMessage> | null;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
type StreamAction =
|
|
117
|
+
| { type: "start" }
|
|
118
|
+
| { type: "update"; message: Partial<AgentMessage> }
|
|
119
|
+
| { type: "end" }
|
|
120
|
+
| { type: "reset" };
|
|
121
|
+
|
|
122
|
+
function streamReducer(state: StreamingState, action: StreamAction): StreamingState {
|
|
123
|
+
switch (action.type) {
|
|
124
|
+
case "start":
|
|
125
|
+
return { isStreaming: true, streamingMessage: null };
|
|
126
|
+
case "update":
|
|
127
|
+
return { isStreaming: true, streamingMessage: action.message };
|
|
128
|
+
case "end":
|
|
129
|
+
case "reset":
|
|
130
|
+
return { isStreaming: false, streamingMessage: null };
|
|
131
|
+
default:
|
|
132
|
+
return state;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ─── Notice Reducer ──────────────────────────────────────
|
|
137
|
+
|
|
138
|
+
type NoticeAction =
|
|
139
|
+
| { type: "add"; notice: NoticeItem }
|
|
140
|
+
| { type: "mark_oldest_exiting" }
|
|
141
|
+
| { type: "remove"; id: string };
|
|
142
|
+
|
|
143
|
+
type NoticeState = { visible: NoticeItem[]; pending: NoticeItem[] };
|
|
144
|
+
|
|
145
|
+
const MAX_NOTICES = 5;
|
|
146
|
+
const NOTICE_VISIBLE_MS = 5000;
|
|
147
|
+
const NOTICE_EXIT_ANIMATION_MS = 180;
|
|
148
|
+
|
|
149
|
+
function markOldestNoticeExiting(notices: NoticeItem[]): NoticeItem[] {
|
|
150
|
+
const index = notices.findIndex((notice) => !notice.exiting);
|
|
151
|
+
if (index === -1) return notices;
|
|
152
|
+
return notices.map((notice, i) => (i === index ? { ...notice, exiting: true } : notice));
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function fillPendingNotices(visible: NoticeItem[], pending: NoticeItem[]): NoticeState {
|
|
156
|
+
let nextVisible = visible;
|
|
157
|
+
let nextPending = pending;
|
|
158
|
+
while (nextPending.length > 0 && nextVisible.length < MAX_NOTICES) {
|
|
159
|
+
const [next, ...rest] = nextPending;
|
|
160
|
+
if (!next) break;
|
|
161
|
+
nextVisible = [...nextVisible, next];
|
|
162
|
+
nextPending = rest;
|
|
163
|
+
}
|
|
164
|
+
if (nextPending.length > 0 && !nextVisible.some((notice) => notice.exiting)) {
|
|
165
|
+
nextVisible = markOldestNoticeExiting(nextVisible);
|
|
166
|
+
}
|
|
167
|
+
return { visible: nextVisible, pending: nextPending };
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function noticeReducer(state: NoticeState, action: NoticeAction): NoticeState {
|
|
171
|
+
switch (action.type) {
|
|
172
|
+
case "add": {
|
|
173
|
+
if (state.visible.some((notice) => notice.exiting) || state.visible.length >= MAX_NOTICES) {
|
|
174
|
+
return {
|
|
175
|
+
visible: state.visible.some((notice) => notice.exiting)
|
|
176
|
+
? state.visible
|
|
177
|
+
: markOldestNoticeExiting(state.visible),
|
|
178
|
+
pending: [...state.pending, action.notice],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return { ...state, visible: [...state.visible, action.notice] };
|
|
182
|
+
}
|
|
183
|
+
case "mark_oldest_exiting":
|
|
184
|
+
return { ...state, visible: markOldestNoticeExiting(state.visible) };
|
|
185
|
+
case "remove": {
|
|
186
|
+
const visible = state.visible.filter((notice) => notice.id !== action.id);
|
|
187
|
+
return fillPendingNotices(visible, state.pending);
|
|
188
|
+
}
|
|
189
|
+
default:
|
|
190
|
+
return state;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// ─── Hook Options ────────────────────────────────────────
|
|
195
|
+
|
|
196
|
+
export interface UseAgentSessionOptions {
|
|
197
|
+
session: SessionInfo | null;
|
|
198
|
+
newSessionCwd: string | null;
|
|
199
|
+
onAgentEnd?: () => void;
|
|
200
|
+
onSessionCreated?: (session: SessionInfo) => void;
|
|
201
|
+
onSessionForked?: (newSessionId: string) => void;
|
|
202
|
+
modelsRefreshKey?: number;
|
|
203
|
+
chatInputRef?: React.RefObject<ChatInputHandle | null>;
|
|
204
|
+
onSessionStatsPanelOpen?: () => void;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export type ThinkingLevelOption = "auto" | "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
208
|
+
|
|
209
|
+
// ─── Main Hook ───────────────────────────────────────────
|
|
210
|
+
|
|
211
|
+
export function useAgentSession(opts: UseAgentSessionOptions) {
|
|
212
|
+
const {
|
|
213
|
+
session, newSessionCwd, onAgentEnd, onSessionCreated, onSessionForked,
|
|
214
|
+
modelsRefreshKey, onSessionStatsPanelOpen,
|
|
215
|
+
} = opts;
|
|
216
|
+
|
|
217
|
+
const isNew = session === null && newSessionCwd !== null;
|
|
218
|
+
|
|
219
|
+
const [data, setData] = useState<SessionData | null>(null);
|
|
220
|
+
const [loading, setLoading] = useState(!isNew);
|
|
221
|
+
const [error, setError] = useState<string | null>(null);
|
|
222
|
+
const [messages, setMessages] = useState<AgentMessage[]>([]);
|
|
223
|
+
const [entryIds, setEntryIds] = useState<string[]>([]);
|
|
224
|
+
const [streamState, dispatch] = useReducer(streamReducer, { isStreaming: false, streamingMessage: null });
|
|
225
|
+
const [agentRunning, setAgentRunning] = useState(false);
|
|
226
|
+
const [bashRunning, setBashRunning] = useState(false);
|
|
227
|
+
const [pendingBash, setPendingBash] = useState<{ command: string; excludeFromContext: boolean } | null>(null);
|
|
228
|
+
const [modelNames, setModelNames] = useState<Record<string, string>>({});
|
|
229
|
+
const [modelList, setModelList] = useState<ModelEntry[]>([]);
|
|
230
|
+
const [modelError, setModelError] = useState<string | null>(null);
|
|
231
|
+
const [newSessionModel, setNewSessionModel] = useState<{ provider: string; modelId: string } | null>(null);
|
|
232
|
+
const [newSessionDefaultModel, setNewSessionDefaultModel] = useState<{ provider: string; modelId: string } | null>(null);
|
|
233
|
+
const [thinkingLevel, setThinkingLevel] = useState<ThinkingLevelOption>("auto");
|
|
234
|
+
const [contextUsage, setContextUsage] = useState<ContextUsage | null>(null);
|
|
235
|
+
const [systemPrompt, setSystemPrompt] = useState<string | null>(null);
|
|
236
|
+
const [forkingEntryId, setForkingEntryId] = useState<string | null>(null);
|
|
237
|
+
const [currentModelOverride, setCurrentModelOverride] = useState<{ provider: string; modelId: string } | null>(null);
|
|
238
|
+
const [pendingModel, setPendingModel] = useState<{ provider: string; modelId: string } | null>(null);
|
|
239
|
+
const [isCompacting, setIsCompacting] = useState(false);
|
|
240
|
+
const [compactError, setCompactError] = useState<string | null>(null);
|
|
241
|
+
const [compactResult, setCompactResult] = useState<{ reason: string; tokensBefore: number; estimatedTokensAfter: number } | null>(null);
|
|
242
|
+
const [agentPhase, setAgentPhase] = useState<AgentPhase>(null);
|
|
243
|
+
const [slashCommands, setSlashCommands] = useState<SlashCommandInfo[]>([]);
|
|
244
|
+
const [slashCommandsLoading, setSlashCommandsLoading] = useState(false);
|
|
245
|
+
const [queuedMessages, setQueuedMessages] = useState<QueuedMessages>({ steering: [], followUp: [] });
|
|
246
|
+
const [noticeState, dispatchNotice] = useReducer(noticeReducer, { visible: [], pending: [] });
|
|
247
|
+
const [retryInfo, setRetryInfo] = useState<{ attempt: number; maxAttempts: number; errorMessage?: string } | null>(null);
|
|
248
|
+
|
|
249
|
+
const eventSourceRef = useRef<EventSource | null>(null);
|
|
250
|
+
const sessionIdRef = useRef<string | null>(session?.id ?? null);
|
|
251
|
+
const agentRunningRef = useRef(false);
|
|
252
|
+
const handleAgentEventRef = useRef<((event: any) => void) | null>(null);
|
|
253
|
+
const initialScrollDoneRef = useRef(false);
|
|
254
|
+
const lastUserMsgRef = useRef<HTMLDivElement | null>(null);
|
|
255
|
+
const messagesEndRef = useRef<HTMLDivElement | null>(null);
|
|
256
|
+
const scrollContainerRef = useRef<HTMLDivElement | null>(null);
|
|
257
|
+
const ensuringNewSessionRef = useRef<Promise<string | null> | null>(null);
|
|
258
|
+
const newSessionPromotedRef = useRef(false);
|
|
259
|
+
const newSessionModelOverrideRef = useRef<{ provider: string; modelId: string } | null>(null);
|
|
260
|
+
const thinkingLevelOverrideRef = useRef<Exclude<ThinkingLevelOption, "auto"> | null>(null);
|
|
261
|
+
const promptRunIdRef = useRef(0);
|
|
262
|
+
const optimisticUserMessageKeyRef = useRef<string | null>(null);
|
|
263
|
+
const toolPresetRef = useRef<"none" | "default" | "full">("default");
|
|
264
|
+
const [toolPreset, setToolPresetState] = useState<"none" | "default" | "full">("default");
|
|
265
|
+
|
|
266
|
+
const currentModel = currentModelOverride ?? data?.context.model ?? pendingModel ?? null;
|
|
267
|
+
const displayModel = isNew ? (newSessionModel ?? newSessionDefaultModel) : currentModel;
|
|
268
|
+
|
|
269
|
+
// ─── Session Stats ─────────────────────────────────────
|
|
270
|
+
|
|
271
|
+
const sessionStats = useMemo(() => {
|
|
272
|
+
const tokens = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 };
|
|
273
|
+
let cost = 0;
|
|
274
|
+
let userMessages = 0;
|
|
275
|
+
let assistantMessages = 0;
|
|
276
|
+
let toolResults = 0;
|
|
277
|
+
let toolCalls = 0;
|
|
278
|
+
for (const msg of messages) {
|
|
279
|
+
if (msg.role === "user") userMessages += 1;
|
|
280
|
+
if (msg.role === "toolResult") toolResults += 1;
|
|
281
|
+
if (msg.role !== "assistant") continue;
|
|
282
|
+
assistantMessages += 1;
|
|
283
|
+
const u = (msg as AssistantMessage).usage;
|
|
284
|
+
toolCalls += (msg as AssistantMessage).content.filter((c) => c.type === "toolCall").length;
|
|
285
|
+
if (!u) continue;
|
|
286
|
+
tokens.input += u.input ?? 0;
|
|
287
|
+
tokens.output += u.output ?? 0;
|
|
288
|
+
tokens.cacheRead += u.cacheRead ?? 0;
|
|
289
|
+
tokens.cacheWrite += u.cacheWrite ?? 0;
|
|
290
|
+
cost += u.cost?.total ?? 0;
|
|
291
|
+
}
|
|
292
|
+
tokens.total = tokens.input + tokens.output + tokens.cacheRead + tokens.cacheWrite;
|
|
293
|
+
if (tokens.total === 0 && messages.length === 0) return null;
|
|
294
|
+
return {
|
|
295
|
+
sessionFile: data?.filePath || undefined,
|
|
296
|
+
sessionId: sessionIdRef.current ?? session?.id ?? "",
|
|
297
|
+
sessionName: session?.name,
|
|
298
|
+
userMessages,
|
|
299
|
+
assistantMessages,
|
|
300
|
+
toolCalls,
|
|
301
|
+
toolResults,
|
|
302
|
+
totalMessages: messages.length,
|
|
303
|
+
tokens,
|
|
304
|
+
cost,
|
|
305
|
+
...(contextUsage ? { contextUsage } : {}),
|
|
306
|
+
} satisfies SessionStatsInfo;
|
|
307
|
+
}, [messages, contextUsage, data?.filePath, session?.id, session?.name]);
|
|
308
|
+
|
|
309
|
+
// ─── Load Session ──────────────────────────────────────
|
|
310
|
+
|
|
311
|
+
const loadSession = useCallback(async (sid: string, showLoading = false) => {
|
|
312
|
+
try {
|
|
313
|
+
if (showLoading) setLoading(true);
|
|
314
|
+
const res = await fetch(`/api/chat/sessions/${encodeURIComponent(sid)}`);
|
|
315
|
+
if (res.status === 404) {
|
|
316
|
+
if (showLoading) {
|
|
317
|
+
setData(null);
|
|
318
|
+
setMessages([]);
|
|
319
|
+
setError(null);
|
|
320
|
+
}
|
|
321
|
+
return null;
|
|
322
|
+
}
|
|
323
|
+
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
324
|
+
const d = await res.json() as SessionData;
|
|
325
|
+
if (sessionIdRef.current !== sid) return null;
|
|
326
|
+
setData(d);
|
|
327
|
+
setMessages(d.context.messages);
|
|
328
|
+
setEntryIds(d.context.entryIds ?? []);
|
|
329
|
+
setCurrentModelOverride(null);
|
|
330
|
+
setError(null);
|
|
331
|
+
if (showLoading) setLoading(false);
|
|
332
|
+
|
|
333
|
+
// Load agent state if running
|
|
334
|
+
try {
|
|
335
|
+
const stateRes = await fetch(`/api/chat/agent/${encodeURIComponent(sid)}`);
|
|
336
|
+
if (stateRes.ok) {
|
|
337
|
+
const agentState = await stateRes.json() as { running?: boolean; state?: AgentStateResponse };
|
|
338
|
+
if (sessionIdRef.current !== sid) return null;
|
|
339
|
+
const liveState = agentState.state;
|
|
340
|
+
if (liveState) {
|
|
341
|
+
if (liveState.contextUsage !== undefined) setContextUsage(liveState.contextUsage ?? null);
|
|
342
|
+
if (liveState.systemPrompt !== undefined) setSystemPrompt(liveState.systemPrompt ?? null);
|
|
343
|
+
if (liveState.thinkingLevel !== undefined) setThinkingLevel((liveState.thinkingLevel as ThinkingLevelOption) ?? "auto");
|
|
344
|
+
}
|
|
345
|
+
if (agentState.running && liveState?.isStreaming) {
|
|
346
|
+
agentRunningRef.current = true;
|
|
347
|
+
setAgentRunning(true);
|
|
348
|
+
setAgentPhase({ kind: "waiting_model" });
|
|
349
|
+
dispatch({ type: "start" });
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
} catch {
|
|
353
|
+
// ignore state fetch errors
|
|
354
|
+
}
|
|
355
|
+
return null;
|
|
356
|
+
} catch (e) {
|
|
357
|
+
setError(String(e));
|
|
358
|
+
return null;
|
|
359
|
+
} finally {
|
|
360
|
+
if (showLoading) setLoading(false);
|
|
361
|
+
}
|
|
362
|
+
}, []);
|
|
363
|
+
|
|
364
|
+
// ─── Load Models ───────────────────────────────────────
|
|
365
|
+
|
|
366
|
+
const loadModels = useCallback(async (signal?: AbortSignal) => {
|
|
367
|
+
const modelCwd = newSessionCwd ?? session?.cwd ?? "";
|
|
368
|
+
const modelsUrl = modelCwd ? `/api/chat/models?cwd=${encodeURIComponent(modelCwd)}` : "/api/chat/models";
|
|
369
|
+
console.log("[loadModels] Fetching models for cwd:", modelCwd, "URL:", modelsUrl);
|
|
370
|
+
try {
|
|
371
|
+
const res = await fetch(modelsUrl, signal ? { signal } : undefined);
|
|
372
|
+
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
373
|
+
const d = await res.json() as any;
|
|
374
|
+
console.log("[loadModels] Response:", { models: d.models, modelList: d.modelList, defaultModel: d.defaultModel, modelError: d.modelError });
|
|
375
|
+
setModelNames(d.models ?? {});
|
|
376
|
+
setModelError(d.modelError ?? null);
|
|
377
|
+
const nextModelList = d.modelList ?? [];
|
|
378
|
+
setModelList(nextModelList);
|
|
379
|
+
if (isNew && !sessionIdRef.current) {
|
|
380
|
+
const match = d.defaultModel
|
|
381
|
+
? nextModelList.find((m: ModelEntry) => m.id === d.defaultModel?.modelId && m.provider === d.defaultModel?.provider)
|
|
382
|
+
: undefined;
|
|
383
|
+
const display = match ?? nextModelList[0];
|
|
384
|
+
setNewSessionDefaultModel(display ? { provider: display.provider, modelId: display.id } : null);
|
|
385
|
+
}
|
|
386
|
+
} catch (e) {
|
|
387
|
+
if (e instanceof DOMException && e.name === "AbortError") return;
|
|
388
|
+
console.error("Failed to load models:", e);
|
|
389
|
+
}
|
|
390
|
+
}, [isNew, newSessionCwd, session?.cwd]);
|
|
391
|
+
|
|
392
|
+
// ─── Ensure New Session ────────────────────────────────
|
|
393
|
+
|
|
394
|
+
const ensureNewSession = useCallback(async (): Promise<string | null> => {
|
|
395
|
+
if (sessionIdRef.current) return sessionIdRef.current;
|
|
396
|
+
if (!isNew || !newSessionCwd) return sessionIdRef.current;
|
|
397
|
+
if (ensuringNewSessionRef.current) return ensuringNewSessionRef.current;
|
|
398
|
+
|
|
399
|
+
const promise = (async () => {
|
|
400
|
+
const selectedModel = newSessionModelOverrideRef.current;
|
|
401
|
+
const selectedThinkingLevel = thinkingLevelOverrideRef.current;
|
|
402
|
+
if (selectedModel) setPendingModel(selectedModel);
|
|
403
|
+
const toolNames = toolPresetRef.current === "default"
|
|
404
|
+
? ["read", "bash", "edit", "write", "grep", "find", "ls"]
|
|
405
|
+
: toolPresetRef.current === "full"
|
|
406
|
+
? ["read", "bash", "edit", "write", "grep", "find", "ls"]
|
|
407
|
+
: [];
|
|
408
|
+
const res = await fetch("/api/chat/agent/new", {
|
|
409
|
+
method: "POST",
|
|
410
|
+
headers: { "Content-Type": "application/json" },
|
|
411
|
+
body: JSON.stringify({
|
|
412
|
+
cwd: newSessionCwd,
|
|
413
|
+
type: "ensure_session",
|
|
414
|
+
toolNames,
|
|
415
|
+
...(selectedModel ? { provider: selectedModel.provider, modelId: selectedModel.modelId } : {}),
|
|
416
|
+
...(selectedThinkingLevel ? { thinkingLevel: selectedThinkingLevel } : {}),
|
|
417
|
+
}),
|
|
418
|
+
});
|
|
419
|
+
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
420
|
+
const result = await res.json() as {
|
|
421
|
+
sessionId: string;
|
|
422
|
+
model?: { provider: string; modelId: string } | null;
|
|
423
|
+
thinkingLevel?: ThinkingLevelOption;
|
|
424
|
+
};
|
|
425
|
+
const realId = result.sessionId;
|
|
426
|
+
sessionIdRef.current = realId;
|
|
427
|
+
if (result.model) {
|
|
428
|
+
setPendingModel(result.model);
|
|
429
|
+
if (!selectedModel) setNewSessionDefaultModel(result.model);
|
|
430
|
+
}
|
|
431
|
+
if (result.thinkingLevel) {
|
|
432
|
+
setThinkingLevel(result.thinkingLevel);
|
|
433
|
+
}
|
|
434
|
+
return realId;
|
|
435
|
+
})();
|
|
436
|
+
|
|
437
|
+
ensuringNewSessionRef.current = promise;
|
|
438
|
+
try {
|
|
439
|
+
return await promise;
|
|
440
|
+
} finally {
|
|
441
|
+
ensuringNewSessionRef.current = null;
|
|
442
|
+
}
|
|
443
|
+
}, [isNew, newSessionCwd]);
|
|
444
|
+
|
|
445
|
+
// ─── Promote New Session ───────────────────────────────
|
|
446
|
+
|
|
447
|
+
const promoteNewSession = useCallback((messageCount = 0, firstMessage = "(no messages)") => {
|
|
448
|
+
const sid = sessionIdRef.current;
|
|
449
|
+
if (!isNew || !newSessionCwd || !sid || newSessionPromotedRef.current) return;
|
|
450
|
+
newSessionPromotedRef.current = true;
|
|
451
|
+
onSessionCreated?.({
|
|
452
|
+
id: sid,
|
|
453
|
+
path: "",
|
|
454
|
+
cwd: newSessionCwd,
|
|
455
|
+
created: new Date().toISOString(),
|
|
456
|
+
modified: new Date().toISOString(),
|
|
457
|
+
messageCount,
|
|
458
|
+
firstMessage,
|
|
459
|
+
});
|
|
460
|
+
}, [isNew, newSessionCwd, onSessionCreated]);
|
|
461
|
+
|
|
462
|
+
// ─── Event Source Connection ───────────────────────────
|
|
463
|
+
|
|
464
|
+
const closeEvents = useCallback(() => {
|
|
465
|
+
eventSourceRef.current?.close();
|
|
466
|
+
eventSourceRef.current = null;
|
|
467
|
+
}, []);
|
|
468
|
+
|
|
469
|
+
const connectEvents = useCallback((sid: string) => {
|
|
470
|
+
closeEvents();
|
|
471
|
+
const es = new EventSource(`/api/chat/agent/${encodeURIComponent(sid)}/events`);
|
|
472
|
+
eventSourceRef.current = es;
|
|
473
|
+
|
|
474
|
+
es.onmessage = (e) => {
|
|
475
|
+
try {
|
|
476
|
+
const event = JSON.parse(e.data);
|
|
477
|
+
if (event.type === "connected") return;
|
|
478
|
+
handleAgentEventRef.current?.(event);
|
|
479
|
+
} catch {
|
|
480
|
+
// ignore
|
|
481
|
+
}
|
|
482
|
+
};
|
|
483
|
+
es.onerror = () => {
|
|
484
|
+
// EventSource will auto-reconnect for recoverable errors
|
|
485
|
+
};
|
|
486
|
+
}, [closeEvents]);
|
|
487
|
+
|
|
488
|
+
// ─── Agent Event Handler ───────────────────────────────
|
|
489
|
+
|
|
490
|
+
const addNotice = useCallback((notice: { id?: string; message: string; type?: "info" | "success" | "warning" | "error" }) => {
|
|
491
|
+
const message = notice.message.trim();
|
|
492
|
+
if (!message) return;
|
|
493
|
+
dispatchNotice({
|
|
494
|
+
type: "add",
|
|
495
|
+
notice: {
|
|
496
|
+
id: notice.id ?? createNoticeId(),
|
|
497
|
+
message,
|
|
498
|
+
type: notice.type ?? "info",
|
|
499
|
+
},
|
|
500
|
+
});
|
|
501
|
+
}, []);
|
|
502
|
+
|
|
503
|
+
const handleAgentEvent = useCallback((event: any) => {
|
|
504
|
+
switch (event.type) {
|
|
505
|
+
case "agent_start":
|
|
506
|
+
agentRunningRef.current = true;
|
|
507
|
+
setAgentRunning(true);
|
|
508
|
+
setAgentPhase({ kind: "waiting_model" });
|
|
509
|
+
dispatch({ type: "start" });
|
|
510
|
+
break;
|
|
511
|
+
|
|
512
|
+
case "agent_end":
|
|
513
|
+
setAgentPhase(null);
|
|
514
|
+
setRetryInfo(null);
|
|
515
|
+
dispatch({ type: "end" });
|
|
516
|
+
if (sessionIdRef.current) {
|
|
517
|
+
loadSession(sessionIdRef.current);
|
|
518
|
+
fetch(`/api/chat/agent/${encodeURIComponent(sessionIdRef.current)}`)
|
|
519
|
+
.then((r) => r.json())
|
|
520
|
+
.then((d: { state?: AgentStateResponse }) => {
|
|
521
|
+
if (d.state?.contextUsage !== undefined) setContextUsage(d.state.contextUsage ?? null);
|
|
522
|
+
if (d.state?.systemPrompt !== undefined) setSystemPrompt(d.state.systemPrompt ?? null);
|
|
523
|
+
})
|
|
524
|
+
.catch(() => {});
|
|
525
|
+
}
|
|
526
|
+
break;
|
|
527
|
+
|
|
528
|
+
case "agent_settled": {
|
|
529
|
+
const wasRunning = agentRunningRef.current;
|
|
530
|
+
agentRunningRef.current = false;
|
|
531
|
+
if (!wasRunning) break;
|
|
532
|
+
setAgentRunning(false);
|
|
533
|
+
setAgentPhase(null);
|
|
534
|
+
setRetryInfo(null);
|
|
535
|
+
dispatch({ type: "end" });
|
|
536
|
+
setIsCompacting(false);
|
|
537
|
+
if (sessionIdRef.current) {
|
|
538
|
+
loadSession(sessionIdRef.current);
|
|
539
|
+
}
|
|
540
|
+
if (wasRunning) onAgentEnd?.();
|
|
541
|
+
break;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
case "prompt_done": {
|
|
545
|
+
const runId = promptRunIdRef.current;
|
|
546
|
+
const promptWasPending = true;
|
|
547
|
+
promptRunIdRef.current = 0;
|
|
548
|
+
optimisticUserMessageKeyRef.current = null;
|
|
549
|
+
if (!promptWasPending) break;
|
|
550
|
+
const sid = sessionIdRef.current;
|
|
551
|
+
if (sid) loadSession(sid);
|
|
552
|
+
if (!agentRunningRef.current) {
|
|
553
|
+
setAgentRunning(false);
|
|
554
|
+
setAgentPhase(null);
|
|
555
|
+
dispatch({ type: "end" });
|
|
556
|
+
}
|
|
557
|
+
onAgentEnd?.();
|
|
558
|
+
break;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
case "prompt_error":
|
|
562
|
+
addNotice({ type: "error", message: (event.errorMessage as string | undefined) ?? "Command failed" });
|
|
563
|
+
break;
|
|
564
|
+
|
|
565
|
+
case "message_start":
|
|
566
|
+
case "message_update": {
|
|
567
|
+
if (!agentRunningRef.current) break;
|
|
568
|
+
const msg = event.message as Partial<AgentMessage> | undefined;
|
|
569
|
+
if (msg?.role === "user") break;
|
|
570
|
+
if (msg) {
|
|
571
|
+
dispatch({ type: "update", message: normalizeToolCalls(msg as AgentMessage) });
|
|
572
|
+
}
|
|
573
|
+
setAgentPhase(null);
|
|
574
|
+
break;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
case "message_end": {
|
|
578
|
+
if (!agentRunningRef.current) break;
|
|
579
|
+
const completed = event.message as AgentMessage | undefined;
|
|
580
|
+
if (completed && completed.role === "user") {
|
|
581
|
+
const delivered = normalizeToolCalls(completed);
|
|
582
|
+
const deliveredKey = userMessageKey(delivered);
|
|
583
|
+
const optimisticKey = optimisticUserMessageKeyRef.current;
|
|
584
|
+
optimisticUserMessageKeyRef.current = null;
|
|
585
|
+
setMessages((prev) => {
|
|
586
|
+
const last = prev[prev.length - 1];
|
|
587
|
+
if (optimisticKey && last?.role === "user" && userMessageKey(last) === optimisticKey) {
|
|
588
|
+
return optimisticKey === deliveredKey ? prev : [...prev.slice(0, -1), delivered];
|
|
589
|
+
}
|
|
590
|
+
return [...prev, delivered];
|
|
591
|
+
});
|
|
592
|
+
} else if (completed) {
|
|
593
|
+
setMessages((prev) => [...prev, normalizeToolCalls(completed)]);
|
|
594
|
+
}
|
|
595
|
+
dispatch({ type: "reset" });
|
|
596
|
+
setAgentPhase({ kind: "waiting_model" });
|
|
597
|
+
break;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
case "tool_execution_start": {
|
|
601
|
+
const id = event.toolCallId as string;
|
|
602
|
+
const name = event.toolName as string;
|
|
603
|
+
setAgentPhase((prev) => {
|
|
604
|
+
const tools = prev?.kind === "running_tools" ? [...prev.tools] : [];
|
|
605
|
+
if (!tools.some((t) => t.id === id)) tools.push({ id, name });
|
|
606
|
+
return { kind: "running_tools", tools };
|
|
607
|
+
});
|
|
608
|
+
break;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
case "tool_execution_end": {
|
|
612
|
+
const id = event.toolCallId as string;
|
|
613
|
+
setAgentPhase((prev) => {
|
|
614
|
+
if (prev?.kind !== "running_tools") return prev;
|
|
615
|
+
const tools = prev.tools.filter((t) => t.id !== id);
|
|
616
|
+
if (tools.length === 0) return { kind: "waiting_model" };
|
|
617
|
+
return { kind: "running_tools", tools };
|
|
618
|
+
});
|
|
619
|
+
break;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
case "queue_update":
|
|
623
|
+
setQueuedMessages({
|
|
624
|
+
steering: [...((event.steering as string[] | undefined) ?? [])],
|
|
625
|
+
followUp: [...((event.followUp as string[] | undefined) ?? [])],
|
|
626
|
+
});
|
|
627
|
+
break;
|
|
628
|
+
|
|
629
|
+
case "auto_retry_start":
|
|
630
|
+
setRetryInfo({ attempt: event.attempt as number, maxAttempts: event.maxAttempts as number, errorMessage: event.errorMessage as string | undefined });
|
|
631
|
+
break;
|
|
632
|
+
|
|
633
|
+
case "auto_retry_end":
|
|
634
|
+
setRetryInfo(null);
|
|
635
|
+
break;
|
|
636
|
+
|
|
637
|
+
case "auto_compaction_start":
|
|
638
|
+
case "compaction_start":
|
|
639
|
+
setIsCompacting(true);
|
|
640
|
+
setCompactError(null);
|
|
641
|
+
setCompactResult(null);
|
|
642
|
+
break;
|
|
643
|
+
|
|
644
|
+
case "auto_compaction_end":
|
|
645
|
+
case "compaction_end":
|
|
646
|
+
setIsCompacting(false);
|
|
647
|
+
if (event.errorMessage) {
|
|
648
|
+
setCompactError(event.errorMessage as string);
|
|
649
|
+
setCompactResult(null);
|
|
650
|
+
} else if (!event.aborted) {
|
|
651
|
+
if (event.result) {
|
|
652
|
+
setCompactResult({
|
|
653
|
+
reason: (event.reason as string | undefined) ?? "auto",
|
|
654
|
+
tokensBefore: (event.result as any).tokensBefore ?? 0,
|
|
655
|
+
estimatedTokensAfter: (event.result as any).estimatedTokensAfter ?? 0,
|
|
656
|
+
});
|
|
657
|
+
}
|
|
658
|
+
if (sessionIdRef.current) loadSession(sessionIdRef.current);
|
|
659
|
+
}
|
|
660
|
+
break;
|
|
661
|
+
}
|
|
662
|
+
}, [addNotice, loadSession, onAgentEnd]);
|
|
663
|
+
|
|
664
|
+
handleAgentEventRef.current = handleAgentEvent;
|
|
665
|
+
|
|
666
|
+
// ─── Send Message ──────────────────────────────────────
|
|
667
|
+
|
|
668
|
+
const handleSend = useCallback(async (message: string, images?: AttachedImage[]) => {
|
|
669
|
+
const trimmedMessage = message.trim();
|
|
670
|
+
if (!trimmedMessage && !images?.length) return;
|
|
671
|
+
if (agentRunningRef.current) return;
|
|
672
|
+
|
|
673
|
+
const isBashCommand = !images?.length && trimmedMessage.startsWith("!");
|
|
674
|
+
if (isBashCommand) {
|
|
675
|
+
const isExcluded = trimmedMessage.startsWith("!!");
|
|
676
|
+
const bashCmd = (isExcluded ? trimmedMessage.slice(2) : trimmedMessage.slice(1)).trim();
|
|
677
|
+
if (!bashCmd) return;
|
|
678
|
+
// Execute bash command
|
|
679
|
+
try {
|
|
680
|
+
const sid = sessionIdRef.current ?? await ensureNewSession();
|
|
681
|
+
if (!sid) return;
|
|
682
|
+
setBashRunning(true);
|
|
683
|
+
setPendingBash({ command: bashCmd, excludeFromContext: isExcluded });
|
|
684
|
+
await sendAgentCommand(sid, { type: "bash", command: bashCmd, excludeFromContext: isExcluded });
|
|
685
|
+
await loadSession(sid);
|
|
686
|
+
promoteNewSession(1, trimmedMessage);
|
|
687
|
+
} catch (e) {
|
|
688
|
+
addNotice({ type: "error", message: e instanceof Error ? e.message : String(e) });
|
|
689
|
+
} finally {
|
|
690
|
+
setPendingBash(null);
|
|
691
|
+
setBashRunning(false);
|
|
692
|
+
}
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
const promptRunId = promptRunIdRef.current + 1;
|
|
697
|
+
const imageBlocks = images?.map((img) => ({ type: "image" as const, source: { type: "base64" as const, media_type: img.mimeType, data: img.data } }));
|
|
698
|
+
const userMsg: AgentMessage = {
|
|
699
|
+
role: "user",
|
|
700
|
+
content: imageBlocks?.length
|
|
701
|
+
? [...(message.trim() ? [{ type: "text" as const, text: message }] : []), ...imageBlocks]
|
|
702
|
+
: message,
|
|
703
|
+
timestamp: Date.now(),
|
|
704
|
+
};
|
|
705
|
+
setMessages((prev) => [...prev, userMsg]);
|
|
706
|
+
optimisticUserMessageKeyRef.current = userMessageKey(userMsg);
|
|
707
|
+
promptRunIdRef.current = promptRunId;
|
|
708
|
+
agentRunningRef.current = true;
|
|
709
|
+
setAgentRunning(true);
|
|
710
|
+
setAgentPhase({ kind: "waiting_model" });
|
|
711
|
+
dispatch({ type: "start" });
|
|
712
|
+
|
|
713
|
+
const piImages = images?.map((img) => ({ type: "image" as const, data: img.data, mimeType: img.mimeType }));
|
|
714
|
+
|
|
715
|
+
try {
|
|
716
|
+
if (isNew && newSessionCwd) {
|
|
717
|
+
const selectedModel = newSessionModel;
|
|
718
|
+
const sid = await ensureNewSession();
|
|
719
|
+
if (sid) {
|
|
720
|
+
if (selectedModel) {
|
|
721
|
+
setPendingModel(selectedModel);
|
|
722
|
+
await sendAgentCommand(sid, { type: "set_model", provider: selectedModel.provider, modelId: selectedModel.modelId });
|
|
723
|
+
}
|
|
724
|
+
connectEvents(sid);
|
|
725
|
+
await sendAgentCommand(sid, {
|
|
726
|
+
type: "prompt",
|
|
727
|
+
message,
|
|
728
|
+
...(piImages?.length ? { images: piImages } : {}),
|
|
729
|
+
});
|
|
730
|
+
promoteNewSession(1, message);
|
|
731
|
+
}
|
|
732
|
+
} else if (session) {
|
|
733
|
+
connectEvents(session.id);
|
|
734
|
+
await sendAgentCommand(session.id, {
|
|
735
|
+
type: "prompt",
|
|
736
|
+
message,
|
|
737
|
+
...(piImages?.length ? { images: piImages } : {}),
|
|
738
|
+
});
|
|
739
|
+
}
|
|
740
|
+
} catch (e) {
|
|
741
|
+
console.error("Failed to send message:", e);
|
|
742
|
+
addNotice({ type: "error", message: e instanceof Error ? e.message : String(e) });
|
|
743
|
+
const optimisticKey = optimisticUserMessageKeyRef.current;
|
|
744
|
+
if (optimisticKey) {
|
|
745
|
+
setMessages((prev) => {
|
|
746
|
+
const last = prev[prev.length - 1];
|
|
747
|
+
return last?.role === "user" && userMessageKey(last) === optimisticKey ? prev.slice(0, -1) : prev;
|
|
748
|
+
});
|
|
749
|
+
}
|
|
750
|
+
optimisticUserMessageKeyRef.current = null;
|
|
751
|
+
agentRunningRef.current = false;
|
|
752
|
+
setAgentRunning(false);
|
|
753
|
+
setAgentPhase(null);
|
|
754
|
+
dispatch({ type: "end" });
|
|
755
|
+
closeEvents();
|
|
756
|
+
if (message) opts.chatInputRef?.current?.insertIfEmpty(message);
|
|
757
|
+
}
|
|
758
|
+
}, [isNew, newSessionCwd, newSessionModel, session, ensureNewSession, connectEvents, promoteNewSession, addNotice, closeEvents, loadSession, opts.chatInputRef]);
|
|
759
|
+
|
|
760
|
+
// ─── Abort ─────────────────────────────────────────────
|
|
761
|
+
|
|
762
|
+
const handleAbort = useCallback(async () => {
|
|
763
|
+
const sid = sessionIdRef.current;
|
|
764
|
+
if (!sid) return;
|
|
765
|
+
try {
|
|
766
|
+
await sendAgentCommand(sid, { type: "abort" });
|
|
767
|
+
} catch (e) {
|
|
768
|
+
console.error("Failed to abort:", e);
|
|
769
|
+
}
|
|
770
|
+
}, []);
|
|
771
|
+
|
|
772
|
+
// ─── Fork ──────────────────────────────────────────────
|
|
773
|
+
|
|
774
|
+
const handleFork = useCallback(async (entryId: string) => {
|
|
775
|
+
const sid = sessionIdRef.current;
|
|
776
|
+
if (!sid) return;
|
|
777
|
+
setForkingEntryId(entryId);
|
|
778
|
+
try {
|
|
779
|
+
const result = await sendAgentCommand<{ cancelled?: boolean; newSessionId?: string }>(sid, {
|
|
780
|
+
type: "fork",
|
|
781
|
+
entryId,
|
|
782
|
+
});
|
|
783
|
+
if (!result?.cancelled && result?.newSessionId) {
|
|
784
|
+
onSessionForked?.(result.newSessionId);
|
|
785
|
+
}
|
|
786
|
+
} catch (e) {
|
|
787
|
+
console.error("Fork failed:", e);
|
|
788
|
+
} finally {
|
|
789
|
+
setForkingEntryId(null);
|
|
790
|
+
}
|
|
791
|
+
}, [onSessionForked]);
|
|
792
|
+
|
|
793
|
+
// ─── Model Change ──────────────────────────────────────
|
|
794
|
+
|
|
795
|
+
const handleModelChange = useCallback(async (provider: string, modelId: string) => {
|
|
796
|
+
if (isNew) {
|
|
797
|
+
const selectedModel = { provider, modelId };
|
|
798
|
+
newSessionModelOverrideRef.current = selectedModel;
|
|
799
|
+
setNewSessionModel(selectedModel);
|
|
800
|
+
setPendingModel(selectedModel);
|
|
801
|
+
const sid = sessionIdRef.current ?? await ensuringNewSessionRef.current;
|
|
802
|
+
if (!sid) return;
|
|
803
|
+
try {
|
|
804
|
+
await sendAgentCommand(sid, { type: "set_model", provider, modelId });
|
|
805
|
+
} catch (e) {
|
|
806
|
+
console.error("Failed to set model:", e);
|
|
807
|
+
}
|
|
808
|
+
return;
|
|
809
|
+
}
|
|
810
|
+
const sid = sessionIdRef.current;
|
|
811
|
+
if (!sid) return;
|
|
812
|
+
try {
|
|
813
|
+
await sendAgentCommand(sid, { type: "set_model", provider, modelId });
|
|
814
|
+
setCurrentModelOverride({ provider, modelId });
|
|
815
|
+
} catch (e) {
|
|
816
|
+
console.error("Failed to set model:", e);
|
|
817
|
+
}
|
|
818
|
+
}, [isNew]);
|
|
819
|
+
|
|
820
|
+
// ─── Compact ───────────────────────────────────────────
|
|
821
|
+
|
|
822
|
+
const handleCompact = useCallback(async () => {
|
|
823
|
+
const sid = sessionIdRef.current;
|
|
824
|
+
if (!sid || isCompacting) return;
|
|
825
|
+
setIsCompacting(true);
|
|
826
|
+
setCompactError(null);
|
|
827
|
+
setCompactResult(null);
|
|
828
|
+
try {
|
|
829
|
+
const result = await sendAgentCommand<any>(sid, { type: "compact" });
|
|
830
|
+
if (result) {
|
|
831
|
+
setCompactResult({
|
|
832
|
+
reason: "manual",
|
|
833
|
+
tokensBefore: result.tokensBefore ?? 0,
|
|
834
|
+
estimatedTokensAfter: result.estimatedTokensAfter ?? 0,
|
|
835
|
+
});
|
|
836
|
+
}
|
|
837
|
+
await loadSession(sid, true);
|
|
838
|
+
} catch (e) {
|
|
839
|
+
setCompactError(e instanceof Error ? e.message : String(e));
|
|
840
|
+
setCompactResult(null);
|
|
841
|
+
} finally {
|
|
842
|
+
setIsCompacting(false);
|
|
843
|
+
}
|
|
844
|
+
}, [isCompacting, loadSession]);
|
|
845
|
+
|
|
846
|
+
// ─── Steering & Follow-up ──────────────────────────────
|
|
847
|
+
|
|
848
|
+
const handleSteer = useCallback(async (message: string, images?: AttachedImage[]) => {
|
|
849
|
+
const sid = sessionIdRef.current;
|
|
850
|
+
if (!sid) return;
|
|
851
|
+
const piImages = images?.map((img) => ({ type: "image" as const, data: img.data, mimeType: img.mimeType }));
|
|
852
|
+
try {
|
|
853
|
+
await sendAgentCommand(sid, { type: "steer", message, ...(piImages?.length ? { images: piImages } : {}) });
|
|
854
|
+
} catch (e) {
|
|
855
|
+
console.error("Failed to steer:", e);
|
|
856
|
+
}
|
|
857
|
+
}, []);
|
|
858
|
+
|
|
859
|
+
const handleFollowUp = useCallback(async (message: string, images?: AttachedImage[]) => {
|
|
860
|
+
const sid = sessionIdRef.current;
|
|
861
|
+
if (!sid) return;
|
|
862
|
+
const piImages = images?.map((img) => ({ type: "image" as const, data: img.data, mimeType: img.mimeType }));
|
|
863
|
+
try {
|
|
864
|
+
await sendAgentCommand(sid, { type: "follow_up", message, ...(piImages?.length ? { images: piImages } : {}) });
|
|
865
|
+
} catch (e) {
|
|
866
|
+
console.error("Failed to follow up:", e);
|
|
867
|
+
}
|
|
868
|
+
}, []);
|
|
869
|
+
|
|
870
|
+
// ─── Recall Queue ──────────────────────────────────────
|
|
871
|
+
|
|
872
|
+
const handleRecallQueue = useCallback(async () => {
|
|
873
|
+
const sid = sessionIdRef.current;
|
|
874
|
+
if (!sid) return;
|
|
875
|
+
try {
|
|
876
|
+
const result = await sendAgentCommand<{ steering?: string[]; followUp?: string[] }>(sid, { type: "clear_queue" });
|
|
877
|
+
setQueuedMessages({ steering: [], followUp: [] });
|
|
878
|
+
const texts = [...(result?.steering ?? []), ...(result?.followUp ?? [])];
|
|
879
|
+
if (texts.length > 0) {
|
|
880
|
+
opts.chatInputRef?.current?.prependText(texts.join("\n\n"));
|
|
881
|
+
}
|
|
882
|
+
} catch (e) {
|
|
883
|
+
console.error("Failed to recall queued messages:", e);
|
|
884
|
+
addNotice({ type: "error", message: "Failed to recall queued messages" });
|
|
885
|
+
}
|
|
886
|
+
}, [opts.chatInputRef, addNotice]);
|
|
887
|
+
|
|
888
|
+
// ─── Thinking Level ────────────────────────────────────
|
|
889
|
+
|
|
890
|
+
const handleThinkingLevelChange = useCallback(async (level: ThinkingLevelOption) => {
|
|
891
|
+
setThinkingLevel(level);
|
|
892
|
+
if (isNew && !sessionIdRef.current) {
|
|
893
|
+
thinkingLevelOverrideRef.current = level === "auto" ? null : level;
|
|
894
|
+
}
|
|
895
|
+
if (level === "auto") return;
|
|
896
|
+
const sid = sessionIdRef.current ?? await ensuringNewSessionRef.current;
|
|
897
|
+
if (!sid) return;
|
|
898
|
+
try {
|
|
899
|
+
await sendAgentCommand(sid, { type: "set_thinking_level", level });
|
|
900
|
+
} catch (e) {
|
|
901
|
+
console.error("Failed to set thinking level:", e);
|
|
902
|
+
}
|
|
903
|
+
}, [isNew]);
|
|
904
|
+
|
|
905
|
+
// ─── Tool Preset ───────────────────────────────────────
|
|
906
|
+
|
|
907
|
+
const handleToolPresetChange = useCallback(async (preset: "none" | "default" | "full") => {
|
|
908
|
+
const toolNames = preset === "default" || preset === "full"
|
|
909
|
+
? ["read", "bash", "edit", "write", "grep", "find", "ls"]
|
|
910
|
+
: [];
|
|
911
|
+
setToolPresetState(preset);
|
|
912
|
+
toolPresetRef.current = preset;
|
|
913
|
+
const sid = sessionIdRef.current ?? await ensuringNewSessionRef.current;
|
|
914
|
+
if (!sid) return;
|
|
915
|
+
try {
|
|
916
|
+
await sendAgentCommand(sid, { type: "set_tools", toolNames });
|
|
917
|
+
} catch (e) {
|
|
918
|
+
console.error("Failed to set tools:", e);
|
|
919
|
+
}
|
|
920
|
+
}, []);
|
|
921
|
+
|
|
922
|
+
// ─── Slash Commands ────────────────────────────────────
|
|
923
|
+
|
|
924
|
+
const loadSlashCommands = useCallback(async () => {
|
|
925
|
+
const sid = sessionIdRef.current ?? await ensureNewSession();
|
|
926
|
+
if (!sid) {
|
|
927
|
+
setSlashCommands([]);
|
|
928
|
+
return [];
|
|
929
|
+
}
|
|
930
|
+
setSlashCommandsLoading(true);
|
|
931
|
+
try {
|
|
932
|
+
const data = await sendAgentCommand<{ commands?: SlashCommandInfo[] }>(sid, { type: "get_commands" });
|
|
933
|
+
const commands = data?.commands ?? [];
|
|
934
|
+
setSlashCommands(commands);
|
|
935
|
+
return commands;
|
|
936
|
+
} catch {
|
|
937
|
+
setSlashCommands([]);
|
|
938
|
+
return [];
|
|
939
|
+
} finally {
|
|
940
|
+
setSlashCommandsLoading(false);
|
|
941
|
+
}
|
|
942
|
+
}, [ensureNewSession]);
|
|
943
|
+
|
|
944
|
+
// ─── Built-in Slash Commands ───────────────────────────
|
|
945
|
+
|
|
946
|
+
const handleBuiltinSlashCommand = useCallback(async (text: string): Promise<{ handled: boolean; message?: string; error?: string }> => {
|
|
947
|
+
if (!text.startsWith("/")) return { handled: false };
|
|
948
|
+
const match = text.match(/^\/([^\s]+)(?:\s+([\s\S]*))?$/);
|
|
949
|
+
if (!match) return { handled: false };
|
|
950
|
+
const [, commandName, rawArgs = ""] = match;
|
|
951
|
+
const args = rawArgs.trim();
|
|
952
|
+
const sid = sessionIdRef.current ?? await ensureNewSession();
|
|
953
|
+
if (!sid) return { handled: true, error: "No active session" };
|
|
954
|
+
|
|
955
|
+
try {
|
|
956
|
+
switch (commandName) {
|
|
957
|
+
case "compact": {
|
|
958
|
+
if (isCompacting) return { handled: true, error: "Already compacting" };
|
|
959
|
+
setIsCompacting(true);
|
|
960
|
+
setCompactError(null);
|
|
961
|
+
setCompactResult(null);
|
|
962
|
+
const result = await sendAgentCommand<any>(sid, { type: "compact", ...(args ? { customInstructions: args } : {}) });
|
|
963
|
+
if (result) {
|
|
964
|
+
setCompactResult({ reason: "manual", tokensBefore: result.tokensBefore ?? 0, estimatedTokensAfter: result.estimatedTokensAfter ?? 0 });
|
|
965
|
+
}
|
|
966
|
+
await loadSession(sid, true);
|
|
967
|
+
return { handled: true, message: "Compacted context" };
|
|
968
|
+
}
|
|
969
|
+
case "name": {
|
|
970
|
+
if (!args) return { handled: true, error: "Usage: /name <name>" };
|
|
971
|
+
await sendAgentCommand(sid, { type: "set_session_name", name: args });
|
|
972
|
+
await loadSession(sid);
|
|
973
|
+
return { handled: true, message: `Session renamed to ${args}` };
|
|
974
|
+
}
|
|
975
|
+
case "copy": {
|
|
976
|
+
const data = await sendAgentCommand<{ text?: string }>(sid, { type: "get_last_assistant_text" });
|
|
977
|
+
const textToCopy = data?.text ?? "";
|
|
978
|
+
if (!textToCopy) return { handled: true, error: "No assistant message to copy" };
|
|
979
|
+
await navigator.clipboard.writeText(textToCopy);
|
|
980
|
+
return { handled: true, message: "Copied last assistant message" };
|
|
981
|
+
}
|
|
982
|
+
default:
|
|
983
|
+
return { handled: false };
|
|
984
|
+
}
|
|
985
|
+
} catch (e) {
|
|
986
|
+
return { handled: true, error: e instanceof Error ? e.message : String(e) };
|
|
987
|
+
} finally {
|
|
988
|
+
if (commandName === "compact") setIsCompacting(false);
|
|
989
|
+
}
|
|
990
|
+
}, [ensureNewSession, isCompacting, loadSession]);
|
|
991
|
+
|
|
992
|
+
// ─── Abort Compaction ──────────────────────────────────
|
|
993
|
+
|
|
994
|
+
const handleAbortCompaction = useCallback(async () => {
|
|
995
|
+
const sid = sessionIdRef.current;
|
|
996
|
+
if (!sid) return;
|
|
997
|
+
try {
|
|
998
|
+
await sendAgentCommand(sid, { type: "abort_compaction" });
|
|
999
|
+
} catch (e) {
|
|
1000
|
+
console.error("Failed to abort compaction:", e);
|
|
1001
|
+
}
|
|
1002
|
+
}, []);
|
|
1003
|
+
|
|
1004
|
+
// ─── Navigate ──────────────────────────────────────────
|
|
1005
|
+
|
|
1006
|
+
const handleNavigate = useCallback(async (entryId: string) => {
|
|
1007
|
+
const sid = sessionIdRef.current;
|
|
1008
|
+
if (!sid) return;
|
|
1009
|
+
sendAgentCommand(sid, { type: "navigate_tree", targetId: entryId }).catch(() => {});
|
|
1010
|
+
// Load context for the branch
|
|
1011
|
+
try {
|
|
1012
|
+
const res = await fetch(`/api/chat/sessions/${encodeURIComponent(sid)}/context?leafId=${encodeURIComponent(entryId)}`);
|
|
1013
|
+
if (!res.ok) return;
|
|
1014
|
+
const d = await res.json() as { context: { messages: AgentMessage[]; entryIds: string[] } };
|
|
1015
|
+
setMessages(d.context.messages);
|
|
1016
|
+
setEntryIds(d.context.entryIds ?? []);
|
|
1017
|
+
} catch (e) {
|
|
1018
|
+
console.error("Failed to load context:", e);
|
|
1019
|
+
}
|
|
1020
|
+
}, []);
|
|
1021
|
+
|
|
1022
|
+
// ─── Effects ───────────────────────────────────────────
|
|
1023
|
+
|
|
1024
|
+
// Load session when session.id changes
|
|
1025
|
+
useEffect(() => {
|
|
1026
|
+
if (session) {
|
|
1027
|
+
sessionIdRef.current = session.id;
|
|
1028
|
+
loadSession(session.id, true).then(() => {
|
|
1029
|
+
if (agentRunningRef.current) {
|
|
1030
|
+
connectEvents(session.id);
|
|
1031
|
+
}
|
|
1032
|
+
});
|
|
1033
|
+
} else {
|
|
1034
|
+
// Clear session data when no session is selected
|
|
1035
|
+
sessionIdRef.current = null;
|
|
1036
|
+
setData(null);
|
|
1037
|
+
setMessages([]);
|
|
1038
|
+
setEntryIds([]);
|
|
1039
|
+
setError(null);
|
|
1040
|
+
}
|
|
1041
|
+
return () => {
|
|
1042
|
+
closeEvents();
|
|
1043
|
+
};
|
|
1044
|
+
}, [session?.id, loadSession, connectEvents, closeEvents]);
|
|
1045
|
+
|
|
1046
|
+
// Load models - also reload when session changes to ensure we get the correct models for the session's cwd
|
|
1047
|
+
useEffect(() => {
|
|
1048
|
+
const controller = new AbortController();
|
|
1049
|
+
loadModels(controller.signal);
|
|
1050
|
+
return () => controller.abort();
|
|
1051
|
+
}, [loadModels, modelsRefreshKey, session?.id]);
|
|
1052
|
+
|
|
1053
|
+
// Notice auto-dismiss
|
|
1054
|
+
useEffect(() => {
|
|
1055
|
+
if (noticeState.visible.length === 0) return;
|
|
1056
|
+
const exiting = noticeState.visible.find((notice) => notice.exiting);
|
|
1057
|
+
if (exiting) {
|
|
1058
|
+
const t = setTimeout(() => dispatchNotice({ type: "remove", id: exiting.id }), NOTICE_EXIT_ANIMATION_MS);
|
|
1059
|
+
return () => clearTimeout(t);
|
|
1060
|
+
}
|
|
1061
|
+
const oldest = noticeState.visible[0];
|
|
1062
|
+
if (!oldest) return;
|
|
1063
|
+
const t = setTimeout(() => dispatchNotice({ type: "mark_oldest_exiting" }), NOTICE_VISIBLE_MS);
|
|
1064
|
+
return () => clearTimeout(t);
|
|
1065
|
+
}, [noticeState.visible]);
|
|
1066
|
+
|
|
1067
|
+
// Compact result auto-dismiss
|
|
1068
|
+
useEffect(() => {
|
|
1069
|
+
if (!compactResult) return;
|
|
1070
|
+
const t = setTimeout(() => setCompactResult(null), 6000);
|
|
1071
|
+
return () => clearTimeout(t);
|
|
1072
|
+
}, [compactResult]);
|
|
1073
|
+
|
|
1074
|
+
// Auto-scroll to bottom on new messages
|
|
1075
|
+
useEffect(() => {
|
|
1076
|
+
if (messages.length > 0 && messagesEndRef.current) {
|
|
1077
|
+
messagesEndRef.current.scrollIntoView({ behavior: agentRunning ? "smooth" : "auto" });
|
|
1078
|
+
}
|
|
1079
|
+
}, [messages.length, agentRunning]);
|
|
1080
|
+
|
|
1081
|
+
return {
|
|
1082
|
+
// State
|
|
1083
|
+
data, loading, error, messages, entryIds, streamState,
|
|
1084
|
+
agentRunning, modelNames, modelList, modelError,
|
|
1085
|
+
newSessionModel, toolPreset, thinkingLevel,
|
|
1086
|
+
retryInfo, contextUsage, systemPrompt, forkingEntryId,
|
|
1087
|
+
isCompacting, compactError, compactResult, currentModel, displayModel, sessionStats,
|
|
1088
|
+
slashCommands, slashCommandsLoading, queuedMessages,
|
|
1089
|
+
notices: noticeState.visible,
|
|
1090
|
+
agentPhase,
|
|
1091
|
+
isNew,
|
|
1092
|
+
bashRunning, pendingBash,
|
|
1093
|
+
// Refs
|
|
1094
|
+
sessionIdRef, messagesEndRef, scrollContainerRef, lastUserMsgRef,
|
|
1095
|
+
// Actions
|
|
1096
|
+
handleSend, handleAbort, handleFork, handleNavigate, handleModelChange,
|
|
1097
|
+
handleCompact, handleSteer, handleFollowUp, handleAbortCompaction,
|
|
1098
|
+
handleRecallQueue, handleBuiltinSlashCommand,
|
|
1099
|
+
handleToolPresetChange, handleThinkingLevelChange, loadSlashCommands,
|
|
1100
|
+
addNotice,
|
|
1101
|
+
// Derived
|
|
1102
|
+
isAutoModelSelection: isNew && newSessionModel === null,
|
|
1103
|
+
};
|
|
1104
|
+
}
|