pisper 0.5.39-linux-x64.0 → 0.5.39
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.en.md +67 -0
- package/README.md +53 -53
- package/bin/pisper.mjs +48 -0
- package/lib/install.mjs +392 -0
- package/lib/npm-platform.mjs +41 -0
- package/lib/npm-update.mjs +165 -0
- package/lib/platform.mjs +43 -0
- package/lib/postinstall.mjs +3 -0
- package/package.json +36 -14
- package/updater.pubkey +1 -0
- package/web/.vite/manifest.json +2606 -0
- package/web/assets/AnimatedList-_pbK4tS3.js +1 -0
- package/web/assets/AppOverlays-DK_RBSUi.js +1 -0
- package/web/assets/AppSelect-v2NUOzRf.js +1 -0
- package/web/assets/AppShortcuts-D66c2bOM.js +1 -0
- package/web/assets/AssetsPage-DFD-JHLO.js +1 -0
- package/web/assets/ChannelsPage-S1iZpd8M.js +1 -0
- package/web/assets/ChatDockView-wwQKATRH.js +2 -0
- package/web/assets/ChatHistoryPage-BNckgbvE.js +1 -0
- package/web/assets/ChatPage-COE_4ulo.js +4 -0
- package/web/assets/ClickSpark-BhxL8WOQ.js +1 -0
- package/web/assets/ConfigPage-BsLy5y6L.js +1 -0
- package/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/web/assets/MarkdownMessage-ickiT81L.js +2 -0
- package/web/assets/MemoryPage-BryPFpf3.js +1 -0
- package/web/assets/MobileViewportStabilizer-CYh5obIv.js +1 -0
- package/web/assets/PageHeader-D7ZcsXHZ.js +1 -0
- package/web/assets/PluginsPage-By294e2k.js +1 -0
- package/web/assets/PreviewPages-gdxrspfV.js +1 -0
- package/web/assets/SchedulesPage-S6X-heBQ.js +1 -0
- package/web/assets/ShinyText-fuaKxKqJ.js +1 -0
- package/web/assets/SkillsPage-nP6Ilb53.js +1 -0
- package/web/assets/StarOrbit-BlI6MhVr.js +1 -0
- package/web/assets/TerminalPanel-Bb_Kf0kq.js +18 -0
- package/web/assets/TerminalPanel-BrP-ENHg.css +1 -0
- package/web/assets/Threads-DPFx-jxG.js +1 -0
- package/web/assets/WelcomeEffects-C9iQOeK6.js +1 -0
- package/web/assets/WorkflowsPage-DlZwTBcP.js +1 -0
- package/web/assets/WorkspacePicker-D766UTlt.js +1 -0
- package/web/assets/abort-signal-D0GPd1Mw.js +1 -0
- package/web/assets/alert-B7D8joCd.js +1 -0
- package/web/assets/andromeeda-vGVdxbeo.js +1 -0
- package/web/assets/angular-html-17rlCfBS.js +1 -0
- package/web/assets/angular-ts-it3MaXWH.js +1 -0
- package/web/assets/api-CmPTEiOc.js +3 -0
- package/web/assets/arrow-right-KWvgbo3p.js +1 -0
- package/web/assets/astro-BEVDzCov.js +1 -0
- package/web/assets/aurora-x-CDeNXAV0.js +1 -0
- package/web/assets/ayu-dark-DluEY0Gj.js +1 -0
- package/web/assets/ayu-light-C3h-C4tm.js +1 -0
- package/web/assets/ayu-mirage-Bqwy1Gya.js +1 -0
- package/web/assets/blade-B3yUZIOx.js +1 -0
- package/web/assets/brand-DIEc3fK8.js +1 -0
- package/web/assets/button-XhIEgIsg.js +1 -0
- package/web/assets/c-aGSZMVdM.js +1 -0
- package/web/assets/catppuccin-frappe-C9Q5zVZY.js +1 -0
- package/web/assets/catppuccin-latte-CtsyrtPq.js +1 -0
- package/web/assets/catppuccin-macchiato-R8nAf1vR.js +1 -0
- package/web/assets/catppuccin-mocha-DjuaAJKi.js +1 -0
- package/web/assets/chat-api-B4XafR63.js +1 -0
- package/web/assets/check-jIXqkGKr.js +1 -0
- package/web/assets/chevron-down-DT6AXwTP.js +1 -0
- package/web/assets/circle-dot-rl11gaty.js +1 -0
- package/web/assets/client-store-TRnjrXTz.js +1 -0
- package/web/assets/code-xml-Z4K2ea1N.js +1 -0
- package/web/assets/coffee-ouOQ86EC.js +1 -0
- package/web/assets/collapsible-DjbBeRo0.js +1 -0
- package/web/assets/config-search-DdUjL2D7.js +1 -0
- package/web/assets/copy-DS-8Hh_R.js +1 -0
- package/web/assets/cpp-Bm3vm43L.js +1 -0
- package/web/assets/css-CWcS1xXm.js +1 -0
- package/web/assets/csv-Dx-8-gkx.js +1 -0
- package/web/assets/dark-plus-Cs2F2srj.js +1 -0
- package/web/assets/dist-CISIC3_f.js +1 -0
- package/web/assets/dist-DOR8kAEV.js +1 -0
- package/web/assets/dracula-BHWKrbxM.js +1 -0
- package/web/assets/dracula-soft-5eyTD99u.js +1 -0
- package/web/assets/earth-DR_clkZ9.js +1 -0
- package/web/assets/embedded-D2rqyswH.js +269 -0
- package/web/assets/es2015-0VLo_afz.js +41 -0
- package/web/assets/everforest-dark-sB-x3p7T.js +1 -0
- package/web/assets/everforest-light-Df2xbC6M.js +1 -0
- package/web/assets/field-C8yUX8Pf.js +1 -0
- package/web/assets/file-C8GNXmhJ.js +1 -0
- package/web/assets/file-code-corner-BKkXAMHR.js +1 -0
- package/web/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/web/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/web/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/web/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/web/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/web/assets/github-dark-C-LZuMrd.js +1 -0
- package/web/assets/github-dark-default-DXG-b-1a.js +1 -0
- package/web/assets/github-dark-dimmed-Bx1FflLF.js +1 -0
- package/web/assets/github-dark-high-contrast-B_tTalzw.js +1 -0
- package/web/assets/github-light-EUqPIrTm.js +1 -0
- package/web/assets/github-light-default-BXViO-2h.js +1 -0
- package/web/assets/github-light-high-contrast-B68TUdTA.js +1 -0
- package/web/assets/glsl-TOBAB6bO.js +1 -0
- package/web/assets/graphql-BEmIBNve.js +1 -0
- package/web/assets/gruvbox-dark-hard-C820rvS2.js +1 -0
- package/web/assets/gruvbox-dark-medium-BPjhmG05.js +1 -0
- package/web/assets/gruvbox-dark-soft-MrdJrrXF.js +1 -0
- package/web/assets/gruvbox-light-hard-BC_s9l72.js +1 -0
- package/web/assets/gruvbox-light-medium-BAWPOn9u.js +1 -0
- package/web/assets/gruvbox-light-soft-BSMLrYjP.js +1 -0
- package/web/assets/haml-CDWtFtU9.js +1 -0
- package/web/assets/handlebars-BNtjo3pL.js +1 -0
- package/web/assets/horizon-CE9ld1lL.js +1 -0
- package/web/assets/horizon-bright-DSNQnXHK.js +1 -0
- package/web/assets/houston-CsvMBhTu.js +1 -0
- package/web/assets/html-BVyvp26C.js +1 -0
- package/web/assets/html-derivative-BseLpURQ.js +1 -0
- package/web/assets/http-CkCfSMV9.js +1 -0
- package/web/assets/hurl-syYMt6Rn.js +1 -0
- package/web/assets/image-Dh7-wI1d.js +1 -0
- package/web/assets/imba-DsUTQ-LC.js +1 -0
- package/web/assets/index-BvVJkBr0.js +40 -0
- package/web/assets/index-DTit-2OA.css +2 -0
- package/web/assets/input-D1QFzNMx.js +1 -0
- package/web/assets/java-duG_UTKe.js +1 -0
- package/web/assets/javascript-DWVbOe4X.js +1 -0
- package/web/assets/jinja-Boj4niAz.js +1 -0
- package/web/assets/jison-CHwnC1Pv.js +1 -0
- package/web/assets/json-qhed-kSA.js +1 -0
- package/web/assets/json5-BR5RXkoi.js +1 -0
- package/web/assets/jsonc-CYpm1nAK.js +1 -0
- package/web/assets/jsonl-CmCQp5Yx.js +1 -0
- package/web/assets/jsx-fcCEM_-L.js +1 -0
- package/web/assets/julia-VoF7UKfw.js +1 -0
- package/web/assets/kanagawa-dragon-Bozd7klA.js +1 -0
- package/web/assets/kanagawa-lotus-BmuOG9ZW.js +1 -0
- package/web/assets/kanagawa-wave-BML5mF2J.js +1 -0
- package/web/assets/laserwave-C_8bwKvT.js +1 -0
- package/web/assets/less-DVTAwKKz.js +1 -0
- package/web/assets/light-plus-DVQuIRkW.js +1 -0
- package/web/assets/link-2-CaZP6GWi.js +1 -0
- package/web/assets/loader-circle-72TYCcVQ.js +1 -0
- package/web/assets/markdown-BYOwaDjH.js +1 -0
- package/web/assets/marko-Cupn1xhw.js +1 -0
- package/web/assets/material-theme-Bm3Qr25_.js +1 -0
- package/web/assets/material-theme-darker-2IIEA8gg.js +1 -0
- package/web/assets/material-theme-lighter-uhdI0v04.js +1 -0
- package/web/assets/material-theme-ocean-CHQ94UKr.js +1 -0
- package/web/assets/material-theme-palenight-B5W6OYN7.js +1 -0
- package/web/assets/mdc-4FfK5iWR.js +1 -0
- package/web/assets/mdx-DQZ5AkYe.js +1 -0
- package/web/assets/message-circle-Bc_EzZop.js +1 -0
- package/web/assets/min-dark-BSWPekZh.js +1 -0
- package/web/assets/min-light-DDpmG2fV.js +1 -0
- package/web/assets/mobile-remote-fallback-JvG4VcPg.js +1 -0
- package/web/assets/mobile-runtime-recovery-DBq1Dp1R.js +1 -0
- package/web/assets/monokai-B_bV9PQ9.js +1 -0
- package/web/assets/night-owl-DhmEMT88.js +1 -0
- package/web/assets/night-owl-light-eJ-hLW7d.js +1 -0
- package/web/assets/nord-Cb4Vim4T.js +1 -0
- package/web/assets/one-dark-pro-CLwyXe_n.js +1 -0
- package/web/assets/one-light-D7Lr4KcI.js +1 -0
- package/web/assets/panel-left-CVuoi3zo.js +1 -0
- package/web/assets/panel-top-CA2GX1Rj.js +1 -0
- package/web/assets/paperclip-BMRj9kRG.js +1 -0
- package/web/assets/pencil-CxA1IK0x.js +1 -0
- package/web/assets/php-CUREQQ7f.js +1 -0
- package/web/assets/pick-system-directory-BnIFt85A.js +1 -0
- package/web/assets/plastic-DQwYfKfQ.js +1 -0
- package/web/assets/play-N6mg4pFl.js +1 -0
- package/web/assets/poimandres-DRFjx7u4.js +1 -0
- package/web/assets/postcss-BXeXVLqQ.js +1 -0
- package/web/assets/progress-493FBtJ4.js +6 -0
- package/web/assets/pug-CQyGKZpv.js +1 -0
- package/web/assets/python-gzcpVVnB.js +1 -0
- package/web/assets/r-C5FwQflr.js +1 -0
- package/web/assets/react-bits-DQli9s7O.css +1 -0
- package/web/assets/red-DX1BQOs8.js +1 -0
- package/web/assets/regexp--aR2_iz7.js +1 -0
- package/web/assets/rolldown-runtime-B0Z9INg1.js +1 -0
- package/web/assets/rose-pine-aMsaMD1D.js +1 -0
- package/web/assets/rose-pine-dawn-8PwUyIlP.js +1 -0
- package/web/assets/rose-pine-moon-DO-qXg-I.js +1 -0
- package/web/assets/sass-DXrisJhu.js +1 -0
- package/web/assets/save-CVL5N6eP.js +1 -0
- package/web/assets/scroll-area-CrWpxKGa.js +1 -0
- package/web/assets/scss-Davl4E3T.js +1 -0
- package/web/assets/send-DcLH_sg0.js +1 -0
- package/web/assets/separator-COSHUqEJ.js +1 -0
- package/web/assets/shellscript-CLZ0U2zV.js +1 -0
- package/web/assets/shield-check-BQHFfxVy.js +1 -0
- package/web/assets/shortcuts-BIzphxhz.js +1 -0
- package/web/assets/slack-dark-DnToyrRv.js +1 -0
- package/web/assets/slack-ochin-B2OO5cIa.js +1 -0
- package/web/assets/smithy-Dgaz7aur.js +1 -0
- package/web/assets/snazzy-light-4G7pJPwS.js +1 -0
- package/web/assets/solarized-dark-UdsmMDCL.js +1 -0
- package/web/assets/solarized-light-C1IUL_tW.js +1 -0
- package/web/assets/speech-session-UGYrCHlP.js +3 -0
- package/web/assets/speech-stream-text-Cwsgaoku.js +2 -0
- package/web/assets/speech-text-Js_tr4qo.js +1 -0
- package/web/assets/sql-b92rrcVl.js +1 -0
- package/web/assets/square-BZ3Bi3O-.js +1 -0
- package/web/assets/square-terminal-DpCa0gzM.js +1 -0
- package/web/assets/storage-BE5DCCG3.js +1 -0
- package/web/assets/stylus-B6D30XZt.js +1 -0
- package/web/assets/svelte-BfstjgUc.js +1 -0
- package/web/assets/synthwave-84-nFMaYfgc.js +1 -0
- package/web/assets/tag-Csd134FL.js +1 -0
- package/web/assets/tokyo-night-oM2G3aXe.js +1 -0
- package/web/assets/tool-labels-BJhLig5u.js +1 -0
- package/web/assets/tooltip-BIOYQmnq.js +1 -0
- package/web/assets/trash-2-mhzzyC6i.js +1 -0
- package/web/assets/ts-tags-Cckpt1jI.js +1 -0
- package/web/assets/tsx-JMDX3aQ7.js +1 -0
- package/web/assets/typescript-BAz-bF8J.js +1 -0
- package/web/assets/use-animation-visibility-C-GENY2Z.js +1 -0
- package/web/assets/use-i18n-B2uTAjsJ.js +1 -0
- package/web/assets/use-mobile-DikQ1IYz.js +1 -0
- package/web/assets/usePagePrimaryAction-Bw0OFTDZ.js +1 -0
- package/web/assets/utils-C8uzG5AZ.js +1 -0
- package/web/assets/vendor-dockview-D5adAaCg.css +1 -0
- package/web/assets/vendor-dockview-yY5mBM3U.js +1 -0
- package/web/assets/vendor-markdown-K9KdiImV.js +130 -0
- package/web/assets/vendor-markdown-plugins-DEcVZfaU.css +1 -0
- package/web/assets/vendor-markdown-plugins-Wv1dLaAO.js +263 -0
- package/web/assets/vendor-motion-XxgxfZSY.js +9 -0
- package/web/assets/vendor-react-CHuvPdJE.js +9 -0
- package/web/assets/vendor-router-Bw2aAdMs.js +4 -0
- package/web/assets/vendor-shiki-runtime-CxE5QolQ.js +153 -0
- package/web/assets/vendor-state-DE1O_s6m.js +1 -0
- package/web/assets/vendor-ui-DvrYggeS.js +1 -0
- package/web/assets/vendor-xyflow-CnjXtcyK.js +7 -0
- package/web/assets/vendor-xyflow-DLioOiRN.css +1 -0
- package/web/assets/vesper-DdrHHSXu.js +1 -0
- package/web/assets/vitesse-black-fwtXNY1n.js +1 -0
- package/web/assets/vitesse-dark-BZCL-v6S.js +1 -0
- package/web/assets/vitesse-light-VbXTXTou.js +1 -0
- package/web/assets/vue-3H7P6ncC.js +1 -0
- package/web/assets/vue-html-DZGW9MGR.js +1 -0
- package/web/assets/vue-vine-BECt67gq.js +1 -0
- package/web/assets/wasm-BnjxR4X6.js +1 -0
- package/web/assets/wasm-ByWQv1Qj.js +1 -0
- package/web/assets/web-preview-panel-Dp5aIwsV.js +556 -0
- package/web/assets/welcome-brand-W7Ox3fri.js +1 -0
- package/web/assets/wgsl-BsKzXJz4.js +1 -0
- package/web/assets/wit-DdvCle-K.js +1 -0
- package/web/assets/wrench-BqeVhocX.js +1 -0
- package/web/assets/x-bw26XDZM.js +1 -0
- package/web/assets/xml-CNfvW5JP.js +1 -0
- package/web/assets/yaml-rwi0_p6S.js +1 -0
- package/web/assets/zap-CFsp4Y1u.js +1 -0
- package/web/favicon.svg +25 -0
- package/web/icons.svg +24 -0
- package/web/index.html +82 -0
- package/web/memory-galaxy-background.webp +0 -0
- package/web/mobile-startup.html +322 -0
- package/web/notification-sw.js +13 -0
- package/web/tauri-pet.css +117 -0
- package/web/tauri-pet.html +16 -0
- package/web/tauri-pet.js +149 -0
- package/components/runtime/Pisper_Runtime_Node_0.5.37_linux_x86_64.tar.gz +0 -0
- package/components/runtime/Pisper_Runtime_Node_0.5.37_linux_x86_64.tar.gz.sig +0 -1
- package/components/tui/Pisper_TUI_Component_0.5.23_linux_x86_64.tar.gz +0 -0
- package/components/tui/Pisper_TUI_Component_0.5.23_linux_x86_64.tar.gz.sig +0 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import process from 'node:process'
|
|
2
|
+
|
|
3
|
+
export const NPM_PLATFORM_TARGETS = Object.freeze([
|
|
4
|
+
Object.freeze({ platform: 'win32', arch: 'x64', release: 'windows_x86_64', slug: 'win32-x64' }),
|
|
5
|
+
Object.freeze({ platform: 'darwin', arch: 'x64', release: 'darwin_x86_64', slug: 'darwin-x64' }),
|
|
6
|
+
Object.freeze({
|
|
7
|
+
platform: 'darwin',
|
|
8
|
+
arch: 'arm64',
|
|
9
|
+
release: 'darwin_aarch64',
|
|
10
|
+
slug: 'darwin-arm64',
|
|
11
|
+
}),
|
|
12
|
+
Object.freeze({ platform: 'linux', arch: 'x64', release: 'linux_x86_64', slug: 'linux-x64' }),
|
|
13
|
+
])
|
|
14
|
+
|
|
15
|
+
export function npmPlatformTarget(platform = process.platform, arch = process.arch) {
|
|
16
|
+
const target = NPM_PLATFORM_TARGETS.find(
|
|
17
|
+
(candidate) => candidate.platform === platform && candidate.arch === arch,
|
|
18
|
+
)
|
|
19
|
+
if (!target) throw new Error(`Pisper does not publish an npm package for ${platform}-${arch}`)
|
|
20
|
+
return target
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function npmPlatformAlias(platform = process.platform, arch = process.arch) {
|
|
24
|
+
return `pisper-binary-${npmPlatformTarget(platform, arch).slug}`
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function npmPlatformVersion(version, platform = process.platform, arch = process.arch) {
|
|
28
|
+
if (!/^\d+\.\d+\.\d+$/.test(version || '')) {
|
|
29
|
+
throw new Error(`invalid Pisper npm version: ${version}`)
|
|
30
|
+
}
|
|
31
|
+
return `${version}-${npmPlatformTarget(platform, arch).slug}.0`
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function npmPlatformOptionalDependencies(version) {
|
|
35
|
+
return Object.fromEntries(
|
|
36
|
+
NPM_PLATFORM_TARGETS.map(({ platform, arch }) => [
|
|
37
|
+
npmPlatformAlias(platform, arch),
|
|
38
|
+
`npm:pisper@${npmPlatformVersion(version, platform, arch)}`,
|
|
39
|
+
]),
|
|
40
|
+
)
|
|
41
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { execFile, spawn } from 'node:child_process'
|
|
2
|
+
import { readFile } from 'node:fs/promises'
|
|
3
|
+
import { join } from 'node:path'
|
|
4
|
+
import process from 'node:process'
|
|
5
|
+
import { promisify } from 'node:util'
|
|
6
|
+
import { fileURLToPath } from 'node:url'
|
|
7
|
+
|
|
8
|
+
const execFileAsync = promisify(execFile)
|
|
9
|
+
const packageRoot = fileURLToPath(new URL('..', import.meta.url))
|
|
10
|
+
const packageManifest = JSON.parse(await readFile(join(packageRoot, 'package.json'), 'utf8'))
|
|
11
|
+
|
|
12
|
+
function compareVersions(left, right) {
|
|
13
|
+
const a = left.split('.').map(Number)
|
|
14
|
+
const b = right.split('.').map(Number)
|
|
15
|
+
for (let index = 0; index < 3; index += 1) {
|
|
16
|
+
if (a[index] !== b[index]) return a[index] - b[index]
|
|
17
|
+
}
|
|
18
|
+
return 0
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function npmInvocation(arguments_) {
|
|
22
|
+
if (process.platform === 'win32') {
|
|
23
|
+
return {
|
|
24
|
+
command: process.env.ComSpec || 'cmd.exe',
|
|
25
|
+
arguments: ['/d', '/s', '/c', 'npm.cmd', ...arguments_],
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return { command: 'npm', arguments: arguments_ }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const NPM_CLI_HELP = `Pisper CLI
|
|
32
|
+
|
|
33
|
+
Start a coding session in your terminal.
|
|
34
|
+
|
|
35
|
+
Usage:
|
|
36
|
+
pisper [OPTIONS]
|
|
37
|
+
pisper resume [OPTIONS]
|
|
38
|
+
pisper doctor [OPTIONS]
|
|
39
|
+
pisper web [OPTIONS]
|
|
40
|
+
pisper update [--check]
|
|
41
|
+
pisper help [COMMAND]
|
|
42
|
+
|
|
43
|
+
Commands:
|
|
44
|
+
resume Choose and resume a conversation from any workspace
|
|
45
|
+
doctor Check the TUI, Runtime connection, and capability catalogs
|
|
46
|
+
web Open the bundled Web UI and Provider settings in your browser
|
|
47
|
+
update Update the complete Pisper distribution through npm
|
|
48
|
+
help Print this help or help for a command
|
|
49
|
+
|
|
50
|
+
Options:
|
|
51
|
+
--cwd <directory> Use a specific workspace (default: current directory)
|
|
52
|
+
-h, --help Print help
|
|
53
|
+
-V, --version Print the installed TUI version
|
|
54
|
+
|
|
55
|
+
Getting started:
|
|
56
|
+
1. Change to your project directory.
|
|
57
|
+
2. Run \`pisper\`. Use \`/provider\` to choose a Provider and save its API Key.
|
|
58
|
+
3. Type a request and press Enter. Type \`/\` to browse commands.
|
|
59
|
+
4. Run \`pisper web\` for the bundled visual settings and workspace UI.
|
|
60
|
+
5. Run \`pisper update\` to update through the configured npm registry.`
|
|
61
|
+
|
|
62
|
+
export function parseNpmHelpRequest(arguments_) {
|
|
63
|
+
if (arguments_.length === 1 && ['help', '--help', '-h'].includes(arguments_[0])) return true
|
|
64
|
+
return false
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function parseNpmUpdateRequest(arguments_) {
|
|
68
|
+
if (arguments_[0] === 'help' && arguments_[1] === 'update' && arguments_.length === 2) {
|
|
69
|
+
return { checkOnly: false, help: true }
|
|
70
|
+
}
|
|
71
|
+
if (arguments_[0] !== 'update') return null
|
|
72
|
+
let checkOnly = false
|
|
73
|
+
let help = false
|
|
74
|
+
for (const argument of arguments_.slice(1)) {
|
|
75
|
+
if (argument === '--check') {
|
|
76
|
+
checkOnly = true
|
|
77
|
+
} else if (argument === '--help' || argument === '-h') {
|
|
78
|
+
help = true
|
|
79
|
+
} else {
|
|
80
|
+
throw new Error('npm updates do not accept component names; run `pisper update`')
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { checkOnly, help }
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
async function queryLatestVersion() {
|
|
87
|
+
const invocation = npmInvocation(['view', 'pisper@latest', 'version', '--json'])
|
|
88
|
+
const { stdout } = await execFileAsync(invocation.command, invocation.arguments, {
|
|
89
|
+
encoding: 'utf8',
|
|
90
|
+
windowsHide: true,
|
|
91
|
+
})
|
|
92
|
+
const version = JSON.parse(stdout)
|
|
93
|
+
if (!/^\d+\.\d+\.\d+$/.test(version || '')) {
|
|
94
|
+
throw new Error('npm registry returned an invalid pisper version')
|
|
95
|
+
}
|
|
96
|
+
return version
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
async function installLatestVersion() {
|
|
100
|
+
await new Promise((resolve, reject) => {
|
|
101
|
+
const invocation = npmInvocation([
|
|
102
|
+
'install',
|
|
103
|
+
'--global',
|
|
104
|
+
'pisper@latest',
|
|
105
|
+
'--progress=true',
|
|
106
|
+
'--foreground-scripts',
|
|
107
|
+
])
|
|
108
|
+
const child = spawn(invocation.command, invocation.arguments, {
|
|
109
|
+
stdio: 'inherit',
|
|
110
|
+
windowsHide: false,
|
|
111
|
+
})
|
|
112
|
+
child.once('error', reject)
|
|
113
|
+
child.once('exit', (code, signal) => {
|
|
114
|
+
if (signal) {
|
|
115
|
+
reject(new Error(`npm update was terminated by ${signal}`))
|
|
116
|
+
} else if (code !== 0) {
|
|
117
|
+
reject(new Error(`npm update failed with exit code ${code ?? 1}`))
|
|
118
|
+
} else {
|
|
119
|
+
resolve()
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function handleNpmHelp(arguments_, { log = console.log } = {}) {
|
|
126
|
+
if (!parseNpmHelpRequest(arguments_)) return false
|
|
127
|
+
log(NPM_CLI_HELP)
|
|
128
|
+
return true
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export async function handleNpmUpdate(
|
|
132
|
+
arguments_,
|
|
133
|
+
{
|
|
134
|
+
currentVersion = packageManifest.version,
|
|
135
|
+
queryLatest = queryLatestVersion,
|
|
136
|
+
installLatest = installLatestVersion,
|
|
137
|
+
log = console.log,
|
|
138
|
+
} = {},
|
|
139
|
+
) {
|
|
140
|
+
const request = parseNpmUpdateRequest(arguments_)
|
|
141
|
+
if (!request) return false
|
|
142
|
+
|
|
143
|
+
if (request.help) {
|
|
144
|
+
log(`Pisper npm update
|
|
145
|
+
|
|
146
|
+
Usage:
|
|
147
|
+
pisper update [--check]
|
|
148
|
+
|
|
149
|
+
Options:
|
|
150
|
+
--check Check the configured npm registry without installing
|
|
151
|
+
-h, --help Print update help`)
|
|
152
|
+
return true
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const latest = await queryLatest()
|
|
156
|
+
if (compareVersions(currentVersion, latest) >= 0) {
|
|
157
|
+
log(`pisper: npm package ${currentVersion} is current`)
|
|
158
|
+
return true
|
|
159
|
+
}
|
|
160
|
+
log(`pisper: npm package update ${currentVersion} -> ${latest}`)
|
|
161
|
+
if (request.checkOnly) return true
|
|
162
|
+
await installLatest()
|
|
163
|
+
log(`pisper: npm package ${latest} is ready`)
|
|
164
|
+
return true
|
|
165
|
+
}
|
package/lib/platform.mjs
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { homedir } from 'node:os'
|
|
2
|
+
import { join } from 'node:path'
|
|
3
|
+
import process from 'node:process'
|
|
4
|
+
|
|
5
|
+
export function releasePlatform(platform = process.platform) {
|
|
6
|
+
if (platform === 'win32') return 'windows'
|
|
7
|
+
if (platform === 'darwin') return 'darwin'
|
|
8
|
+
if (platform === 'linux') return 'linux'
|
|
9
|
+
throw new Error(`unsupported operating system: ${platform}`)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function releaseArchitecture(arch = process.arch) {
|
|
13
|
+
if (arch === 'x64') return 'x86_64'
|
|
14
|
+
if (arch === 'arm64') return 'aarch64'
|
|
15
|
+
throw new Error(`unsupported CPU architecture: ${arch}`)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function supportedTarget(platform = process.platform, arch = process.arch) {
|
|
19
|
+
const target = `${releasePlatform(platform)}_${releaseArchitecture(arch)}`
|
|
20
|
+
const supported = new Set(['windows_x86_64', 'darwin_x86_64', 'darwin_aarch64', 'linux_x86_64'])
|
|
21
|
+
if (!supported.has(target)) {
|
|
22
|
+
throw new Error(`Pisper does not publish a TUI package for ${target}`)
|
|
23
|
+
}
|
|
24
|
+
return target
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function executableName(platform = process.platform) {
|
|
28
|
+
return platform === 'win32' ? 'pisper.exe' : 'pisper'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function localDataDirectory(platform = process.platform, env = process.env) {
|
|
32
|
+
if (env.PISPER_NPM_INSTALL_DIR) return env.PISPER_NPM_INSTALL_DIR
|
|
33
|
+
if (platform === 'win32') {
|
|
34
|
+
if (!env.LOCALAPPDATA) throw new Error('LOCALAPPDATA is unavailable')
|
|
35
|
+
return env.LOCALAPPDATA
|
|
36
|
+
}
|
|
37
|
+
if (platform === 'darwin') return join(homedir(), 'Library', 'Application Support')
|
|
38
|
+
return env.XDG_DATA_HOME || join(homedir(), '.local', 'share')
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function componentsRoot(platform = process.platform, env = process.env) {
|
|
42
|
+
return join(localDataDirectory(platform, env), 'com.lingkongran.pisper', 'components')
|
|
43
|
+
}
|
package/package.json
CHANGED
|
@@ -1,35 +1,57 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pisper",
|
|
3
|
-
"version": "0.5.39
|
|
4
|
-
"description": "Pisper
|
|
3
|
+
"version": "0.5.39",
|
|
4
|
+
"description": "Pisper CLI.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "ling-kong-ran",
|
|
8
8
|
"email": "65328093+ling-kong-ran@users.noreply.github.com",
|
|
9
9
|
"url": "https://github.com/ling-kong-ran"
|
|
10
10
|
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"homepage": "https://github.com/ling-kong-ran/pisper#readme",
|
|
11
13
|
"repository": {
|
|
12
14
|
"type": "git",
|
|
13
15
|
"url": "git+https://github.com/ling-kong-ran/pisper.git"
|
|
14
16
|
},
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/ling-kong-ran/pisper/issues"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=20"
|
|
22
|
+
},
|
|
23
|
+
"bin": {
|
|
24
|
+
"pisper": "bin/pisper.mjs"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"postinstall": "node lib/postinstall.mjs"
|
|
28
|
+
},
|
|
21
29
|
"files": [
|
|
22
|
-
"
|
|
30
|
+
"bin/",
|
|
31
|
+
"lib/",
|
|
32
|
+
"web/",
|
|
33
|
+
"updater.pubkey",
|
|
23
34
|
"README.md",
|
|
35
|
+
"README.en.md",
|
|
24
36
|
"LICENSE"
|
|
25
37
|
],
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@threema/wasm-minisign-verify": "0.1.3",
|
|
40
|
+
"tar": "7.5.22"
|
|
29
41
|
},
|
|
30
|
-
"
|
|
31
|
-
"
|
|
42
|
+
"pisper": {
|
|
43
|
+
"repository": "ling-kong-ran/pisper",
|
|
32
44
|
"tuiVersion": "0.5.23",
|
|
33
45
|
"runtimeVersion": "0.5.37"
|
|
46
|
+
},
|
|
47
|
+
"optionalDependencies": {
|
|
48
|
+
"pisper-binary-win32-x64": "npm:pisper@0.5.39-win32-x64.0",
|
|
49
|
+
"pisper-binary-darwin-x64": "npm:pisper@0.5.39-darwin-x64.0",
|
|
50
|
+
"pisper-binary-darwin-arm64": "npm:pisper@0.5.39-darwin-arm64.0",
|
|
51
|
+
"pisper-binary-linux-x64": "npm:pisper@0.5.39-linux-x64.0"
|
|
52
|
+
},
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public",
|
|
55
|
+
"provenance": true
|
|
34
56
|
}
|
|
35
57
|
}
|
package/updater.pubkey
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEYwRTUzMkExNjAyRUNGQTQKUldTa3p5NWdvVExsOEQ5TElOa3BVcUxZQ2I1RlNieHJHeFQ3YVdqeTRMK0VKS2dWSlZsMXRNazQK
|