@chainingintention/pi-web-cn 2.202610.5 → 2.202611.2

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.
Files changed (997) hide show
  1. package/README.md +4 -2
  2. package/dist/bin/pi-web-server.sh +91 -0
  3. package/dist/bin/pi-web-sessiond.sh +91 -0
  4. package/dist/bin/pi-web.sh +91 -0
  5. package/dist/cli.js +33 -29
  6. package/dist/cli.js.map +1 -1
  7. package/dist/client/assets/3d-Dr68X8h8.svg +1 -0
  8. package/dist/client/assets/PiWebApp-Dur6Wi62.js +3952 -0
  9. package/dist/client/assets/SettingsDialog-SOljSiee.js +1129 -0
  10. package/dist/client/assets/abap-uAHVFerN.svg +1 -0
  11. package/dist/client/assets/abc-CXjdSXsv.svg +1 -0
  12. package/dist/client/assets/actionscript-BCkIwjgm.svg +1 -0
  13. package/dist/client/assets/ada-GL6JWmc_.svg +1 -0
  14. package/dist/client/assets/adobe-illustrator-DhGvkpwi.svg +1 -0
  15. package/dist/client/assets/adobe-photoshop-0hmnA7cm.svg +1 -0
  16. package/dist/client/assets/adobe-swc-myFGSGFT.svg +1 -0
  17. package/dist/client/assets/adonis-SdGYdzCA.svg +1 -0
  18. package/dist/client/assets/advpl-BWLgf_Ky.svg +1 -0
  19. package/dist/client/assets/advpl-include-DYgH3R0u.svg +1 -0
  20. package/dist/client/assets/advpl-ptm-C5Y5ffZi.svg +1 -0
  21. package/dist/client/assets/advpl-tlpp-BAlVwpPL.svg +1 -0
  22. package/dist/client/assets/agent-DAWBwR7s.svg +1 -0
  23. package/dist/client/assets/amplify-BAWPaFFb.svg +1 -0
  24. package/dist/client/assets/android-TigHCxTb.svg +1 -0
  25. package/dist/client/assets/angular-D2ijCUIg.svg +1 -0
  26. package/dist/client/assets/angular-component-eczQQRE6.svg +1 -0
  27. package/dist/client/assets/angular-directive-C_jq8cjP.svg +1 -0
  28. package/dist/client/assets/angular-guard-B4iC5rXF.svg +1 -0
  29. package/dist/client/assets/angular-interceptor-CJvi6DuQ.svg +1 -0
  30. package/dist/client/assets/angular-pipe-BQZMATB_.svg +1 -0
  31. package/dist/client/assets/angular-service-DHYn6jIk.svg +1 -0
  32. package/dist/client/assets/antlr-DkzdiGgY.svg +1 -0
  33. package/dist/client/assets/apiblueprint-BDRvCIBM.svg +1 -0
  34. package/dist/client/assets/apollo-BAVoyYDs.svg +1 -0
  35. package/dist/client/assets/applescript-Bm_R8YT0.svg +1 -0
  36. package/dist/client/assets/apps-script-6efl-CXu.svg +1 -0
  37. package/dist/client/assets/appveyor-6B1suIBr.svg +1 -0
  38. package/dist/client/assets/appwrite-D7AlK8SW.svg +1 -0
  39. package/dist/client/assets/architecture-CtuqF8rD.svg +1 -0
  40. package/dist/client/assets/arduino-DFxCIupZ.svg +1 -0
  41. package/dist/client/assets/asciidoc-DUAdVwVP.svg +1 -0
  42. package/dist/client/assets/assembly-BKikEKKy.svg +1 -0
  43. package/dist/client/assets/astro-Bivf18eC.svg +1 -0
  44. package/dist/client/assets/astro-config-Cr5suFul.svg +1 -0
  45. package/dist/client/assets/astyle-BiqOWu-0.svg +1 -0
  46. package/dist/client/assets/audio-B4FatEUD.svg +1 -0
  47. package/dist/client/assets/aurelia-CnUjHPcZ.svg +1 -0
  48. package/dist/client/assets/authors-DdaDoKVR.svg +1 -0
  49. package/dist/client/assets/auto-BOO_fhxh.svg +1 -0
  50. package/dist/client/assets/autohotkey-D87F33UG.svg +1 -0
  51. package/dist/client/assets/autoit-DQTGS66r.svg +1 -0
  52. package/dist/client/assets/azure-DMSkMABH.svg +1 -0
  53. package/dist/client/assets/azure-pipelines-CcGJw3Rl.svg +1 -0
  54. package/dist/client/assets/babel-DFMbiqHA.svg +1 -0
  55. package/dist/client/assets/ballerina-BT8MyHl8.svg +1 -0
  56. package/dist/client/assets/bashly-settings-Ch9mIpw9.svg +1 -0
  57. package/dist/client/assets/bazel-CPXexffJ.svg +1 -0
  58. package/dist/client/assets/bbx-CB-6IYxw.svg +1 -0
  59. package/dist/client/assets/beancount-DR_GSwds.svg +1 -0
  60. package/dist/client/assets/bench-js-DOHd4EZB.svg +1 -0
  61. package/dist/client/assets/bench-jsx-CLJJl81D.svg +1 -0
  62. package/dist/client/assets/bench-ts-BM8GsfrF.svg +1 -0
  63. package/dist/client/assets/bibliography-D3emS1pd.svg +1 -0
  64. package/dist/client/assets/bibtex-style-CVY4tTiP.svg +1 -0
  65. package/dist/client/assets/bicep-BMMGt18P.svg +1 -0
  66. package/dist/client/assets/biome-Bf2373dl.svg +1 -0
  67. package/dist/client/assets/bitbucket-BQr8Az5R.svg +1 -0
  68. package/dist/client/assets/bithound-BOh7-s-G.svg +1 -0
  69. package/dist/client/assets/blender-B7Vz8gxa.svg +1 -0
  70. package/dist/client/assets/blink-DVWcfhba.svg +1 -0
  71. package/dist/client/assets/blitz-B4hhOxPa.svg +1 -0
  72. package/dist/client/assets/bower-CkFcC1Ou.svg +1 -0
  73. package/dist/client/assets/brainfuck-BXozg9z7.svg +1 -0
  74. package/dist/client/assets/browserlist-CUbhNMS9.svg +1 -0
  75. package/dist/client/assets/bruno-CoSNrNfv.svg +1 -0
  76. package/dist/client/assets/buck-BRuOl0ko.svg +1 -0
  77. package/dist/client/assets/bucklescript-TfoVgTnq.svg +1 -0
  78. package/dist/client/assets/buildkite-BrDKWLhW.svg +1 -0
  79. package/dist/client/assets/bun-CZtgPBjt.svg +1 -0
  80. package/dist/client/assets/c-CCkhSkL9.svg +1 -0
  81. package/dist/client/assets/c3-J0cVtsWq.svg +1 -0
  82. package/dist/client/assets/cabal-CQb4_DnV.svg +1 -0
  83. package/dist/client/assets/caddy-ywaArsUF.svg +1 -0
  84. package/dist/client/assets/cadence-BRBsaulT.svg +1 -0
  85. package/dist/client/assets/cairo-Cls19dwE.svg +1 -0
  86. package/dist/client/assets/cake-DpuWz3gE.svg +1 -0
  87. package/dist/client/assets/capacitor-CugB3p3d.svg +1 -0
  88. package/dist/client/assets/capnp-DtxOZ2_z.svg +1 -0
  89. package/dist/client/assets/cbx-QvSmyWq4.svg +1 -0
  90. package/dist/client/assets/cds-Bi3ghsEA.svg +1 -0
  91. package/dist/client/assets/certificate-B5QPOK_C.svg +1 -0
  92. package/dist/client/assets/changelog-mhp3hE32.svg +1 -0
  93. package/dist/client/assets/chess-4hVz24Rg.svg +1 -0
  94. package/dist/client/assets/chromatic-DRZoj4Hg.svg +1 -0
  95. package/dist/client/assets/chrome-ox3b9yI4.svg +1 -0
  96. package/dist/client/assets/circleci-DubwoSEv.svg +1 -0
  97. package/dist/client/assets/citation-ldCt-JF8.svg +1 -0
  98. package/dist/client/assets/clangd-bL8W2_13.svg +1 -0
  99. package/dist/client/assets/claude-DypBvzkn.svg +1 -0
  100. package/dist/client/assets/cline-Dd7x4bMT.svg +1 -0
  101. package/dist/client/assets/clojure-wfCfR06G.svg +1 -0
  102. package/dist/client/assets/cloudfoundry-BS-9yLUv.svg +1 -0
  103. package/dist/client/assets/cmake-B7q-R28A.svg +1 -0
  104. package/dist/client/assets/coala-D4YHPVOS.svg +1 -0
  105. package/dist/client/assets/cobol-wDz3o6g-.svg +1 -0
  106. package/dist/client/assets/coconut-C7cPswso.svg +1 -0
  107. package/dist/client/assets/code-climate-BJrwzyOv.svg +1 -0
  108. package/dist/client/assets/codecov-CXg1oY95.svg +1 -0
  109. package/dist/client/assets/codeowners-D_rztV49.svg +1 -0
  110. package/dist/client/assets/coderabbit-ai-DGoTDlyw.svg +1 -0
  111. package/dist/client/assets/coffee-D5JGmA63.svg +1 -0
  112. package/dist/client/assets/coldfusion-DhOnvVS_.svg +1 -0
  113. package/dist/client/assets/coloredpetrinets-DY894G_S.svg +1 -0
  114. package/dist/client/assets/command-Df3AkI2A.svg +1 -0
  115. package/dist/client/assets/commitizen-9SU1u7to.svg +1 -0
  116. package/dist/client/assets/commitlint-3vvjpxJt.svg +1 -0
  117. package/dist/client/assets/composerShortcuts-BggqvE9J.js +31 -0
  118. package/dist/client/assets/concourse-DAGkX2vY.svg +1 -0
  119. package/dist/client/assets/conduct-2Bm8RK0N.svg +1 -0
  120. package/dist/client/assets/console-pcgGAn8Z.svg +1 -0
  121. package/dist/client/assets/contentlayer-vXTwXOHk.svg +1 -0
  122. package/dist/client/assets/context-CebLrksE.svg +1 -0
  123. package/dist/client/assets/contributing-DLcmDS34.svg +1 -0
  124. package/dist/client/assets/controller-Doc75EnV.svg +1 -0
  125. package/dist/client/assets/copilot-DBlNrZ6L.svg +1 -0
  126. package/dist/client/assets/cpp-DT2939hp.svg +1 -0
  127. package/dist/client/assets/craco-BySmcQ23.svg +1 -0
  128. package/dist/client/assets/credits-GALyqcNu.svg +1 -0
  129. package/dist/client/assets/crystal-BbNQlJLs.svg +1 -0
  130. package/dist/client/assets/csharp-D5ZKsaqY.svg +1 -0
  131. package/dist/client/assets/css-JKwEyWYb.svg +1 -0
  132. package/dist/client/assets/css-map-Ctu4D9Ve.svg +1 -0
  133. package/dist/client/assets/cucumber-B3ZYwjRe.svg +1 -0
  134. package/dist/client/assets/cuda-CRW2z42A.svg +1 -0
  135. package/dist/client/assets/cue-ni2TTLiZ.svg +1 -0
  136. package/dist/client/assets/cursor-CJahHGg2.svg +1 -0
  137. package/dist/client/assets/cypress-DR0JRbfI.svg +1 -0
  138. package/dist/client/assets/d-B87zyVMx.svg +1 -0
  139. package/dist/client/assets/dart-Dx2oVcaR.svg +1 -0
  140. package/dist/client/assets/dart_generated-Wk58pte9.svg +1 -0
  141. package/dist/client/assets/database-B_oKaDcf.svg +1 -0
  142. package/dist/client/assets/deepsource-DUTIJ9mv.svg +1 -0
  143. package/dist/client/assets/denizenscript-BJc2vgOS.svg +1 -0
  144. package/dist/client/assets/deno-CyFvrzCm.svg +1 -0
  145. package/dist/client/assets/dependabot-BgJkJLU3.svg +1 -0
  146. package/dist/client/assets/dependencies-update-CdGy9ujO.svg +1 -0
  147. package/dist/client/assets/dhall-Dmhh82EO.svg +1 -0
  148. package/dist/client/assets/diff-6SXDCokN.svg +1 -0
  149. package/dist/client/assets/dinophp-D9hQnqAR.svg +1 -0
  150. package/dist/client/assets/disc-h_dLNGEL.svg +1 -0
  151. package/dist/client/assets/django-N1UNAXk1.svg +1 -0
  152. package/dist/client/assets/dll-1DkaBp0q.svg +1 -0
  153. package/dist/client/assets/docker-CfHcr61D.svg +1 -0
  154. package/dist/client/assets/doctex-installer-Cs7SA-ct.svg +1 -0
  155. package/dist/client/assets/document-o-3iA9GQ.svg +1 -0
  156. package/dist/client/assets/dotjs-DIyH7Gzv.svg +1 -0
  157. package/dist/client/assets/drawio-2RVDLi9g.svg +1 -0
  158. package/dist/client/assets/drizzle-hhBCZx1t.svg +1 -0
  159. package/dist/client/assets/drone-KvQ2n-xY.svg +1 -0
  160. package/dist/client/assets/dtx-DdGk8fFj.svg +1 -0
  161. package/dist/client/assets/duc-CHcAZQos.svg +1 -0
  162. package/dist/client/assets/dune-DuGO6qDA.svg +1 -0
  163. package/dist/client/assets/edge-ChHKXrYp.svg +1 -0
  164. package/dist/client/assets/editorconfig-BUzUAwRX.svg +1 -0
  165. package/dist/client/assets/ejs-D_Li05n3.svg +1 -0
  166. package/dist/client/assets/elixir-75mYTx2s.svg +1 -0
  167. package/dist/client/assets/elm-DE_LIp02.svg +1 -0
  168. package/dist/client/assets/email-G8mUttGa.svg +1 -0
  169. package/dist/client/assets/ember-B1y9-Oks.svg +1 -0
  170. package/dist/client/assets/epub-DPvrBCNf.svg +1 -0
  171. package/dist/client/assets/erlang-DosS6spf.svg +1 -0
  172. package/dist/client/assets/esbuild-DV6xNZ-T.svg +1 -0
  173. package/dist/client/assets/eslint-IU_g232-.svg +1 -0
  174. package/dist/client/assets/excalidraw-BllKd-7L.svg +1 -0
  175. package/dist/client/assets/exe-SfcXmkQy.svg +1 -0
  176. package/dist/client/assets/expo-B4PonO4I.svg +1 -0
  177. package/dist/client/assets/external-DjGXa4ZP.js +1 -0
  178. package/dist/client/assets/fastlane-C4SZDg50.svg +1 -0
  179. package/dist/client/assets/favicon-VsCcG-A-.svg +1 -0
  180. package/dist/client/assets/figma-C8Gjq2Xj.svg +1 -0
  181. package/dist/client/assets/file-BEIHQH8Q.svg +256 -0
  182. package/dist/client/assets/firebase-DHIO0glR.svg +1 -0
  183. package/dist/client/assets/flash-Dck7x_rj.svg +1 -0
  184. package/dist/client/assets/flow-DD4KQiTg.svg +1 -0
  185. package/dist/client/assets/font-ChbWr8nk.svg +1 -0
  186. package/dist/client/assets/forth-C3qwGqMh.svg +1 -0
  187. package/dist/client/assets/fortran-B0jORJ3v.svg +1 -0
  188. package/dist/client/assets/foxpro-D3Wp1B1h.svg +1 -0
  189. package/dist/client/assets/freemarker-BLonnh3h.svg +1 -0
  190. package/dist/client/assets/fsharp-QwwPC8x_.svg +1 -0
  191. package/dist/client/assets/fusebox-DqjzyXyI.svg +1 -0
  192. package/dist/client/assets/gamemaker-C82Pt646.svg +1 -0
  193. package/dist/client/assets/garden-BUsWpFKW.svg +1 -0
  194. package/dist/client/assets/gatsby-OA1TADMJ.svg +1 -0
  195. package/dist/client/assets/gcp-CW2RG_Wp.svg +1 -0
  196. package/dist/client/assets/gemfile-1RY6BqSx.svg +1 -0
  197. package/dist/client/assets/gemini-CIgUY8Tg.svg +1 -0
  198. package/dist/client/assets/gemini-ai-Bwe7HeFb.svg +1 -0
  199. package/dist/client/assets/git-BEMs8TOZ.svg +1 -0
  200. package/dist/client/assets/gitlab-zt07_Oa4.svg +1 -0
  201. package/dist/client/assets/gitpod-BtZJQuF0.svg +1 -0
  202. package/dist/client/assets/gleam-CKPcrRAD.svg +1 -0
  203. package/dist/client/assets/gnuplot-BvFqM0ms.svg +1 -0
  204. package/dist/client/assets/go-ByY4sxRu.svg +1 -0
  205. package/dist/client/assets/go-mod-CB6BWQDr.svg +1 -0
  206. package/dist/client/assets/godot-C1EmL4jR.svg +1 -0
  207. package/dist/client/assets/godot-assets-D-FMsuJX.svg +1 -0
  208. package/dist/client/assets/google-BnrMOJ4V.svg +1 -0
  209. package/dist/client/assets/gradle-zsQ12U1q.svg +1 -0
  210. package/dist/client/assets/grafana-alloy-D2DQ33BM.svg +1 -0
  211. package/dist/client/assets/grain-5NkvKROL.svg +1 -0
  212. package/dist/client/assets/graphcool-CInCTIdE.svg +1 -0
  213. package/dist/client/assets/graphql-DnNt2maR.svg +1 -0
  214. package/dist/client/assets/gridsome-C2H5SpaD.svg +1 -0
  215. package/dist/client/assets/groovy-B93RxI7a.svg +1 -0
  216. package/dist/client/assets/grunt-cwitasVS.svg +1 -0
  217. package/dist/client/assets/gulp-BIZ8EAl0.svg +1 -0
  218. package/dist/client/assets/h-1bd73y8t.svg +1 -0
  219. package/dist/client/assets/hack-Bsd1y9bu.svg +1 -0
  220. package/dist/client/assets/hadolint-D1aEtESc.svg +1 -0
  221. package/dist/client/assets/haml-BKq8hU-U.svg +1 -0
  222. package/dist/client/assets/handlebars-Dem98Ago.svg +1 -0
  223. package/dist/client/assets/happo-B64XokX0.svg +1 -0
  224. package/dist/client/assets/hardhat-ByFzkuf4.svg +1 -0
  225. package/dist/client/assets/harmonix-CUh3S11M.svg +1 -0
  226. package/dist/client/assets/haskell-C6GxEwdX.svg +1 -0
  227. package/dist/client/assets/haxe-DdxZWPQy.svg +1 -0
  228. package/dist/client/assets/hcl-BJiZ3gWE.svg +1 -0
  229. package/dist/client/assets/helm-CF4Mi35z.svg +1 -0
  230. package/dist/client/assets/heroku-B6vPz_TJ.svg +1 -0
  231. package/dist/client/assets/hex-BuGJuqn1.svg +1 -0
  232. package/dist/client/assets/hip-DB4xe1Ab.svg +1 -0
  233. package/dist/client/assets/histoire-BMTufysg.svg +1 -0
  234. package/dist/client/assets/hjson-Dl4ZTgK4.svg +1 -0
  235. package/dist/client/assets/horusec-z6vyrVAy.svg +1 -0
  236. package/dist/client/assets/hosts-BydfWJ9z.svg +1 -0
  237. package/dist/client/assets/hpp-HerxyIaC.svg +1 -0
  238. package/dist/client/assets/html-BNRzQ3jk.svg +1 -0
  239. package/dist/client/assets/http-Cp7RCu8F.svg +1 -0
  240. package/dist/client/assets/huff-t3uGT10D.svg +1 -0
  241. package/dist/client/assets/hurl-S3Fvmz3R.svg +1 -0
  242. package/dist/client/assets/husky-A0ALYNcp.svg +1 -0
  243. package/dist/client/assets/i18n-BezCQ09L.svg +1 -0
  244. package/dist/client/assets/idris-CfHPjxcM.svg +1 -0
  245. package/dist/client/assets/ifanr-cloud-DnqgZYHA.svg +1 -0
  246. package/dist/client/assets/image-DYZiZ4CP.svg +1 -0
  247. package/dist/client/assets/imba-C1Q6aK1I.svg +1 -0
  248. package/dist/client/assets/index-CInvlJKI.js +2 -0
  249. package/dist/client/assets/installation-p19cVXO7.svg +1 -0
  250. package/dist/client/assets/instructions-CaWEzdge.svg +1 -0
  251. package/dist/client/assets/ionic-Xp-47Icg.svg +1 -0
  252. package/dist/client/assets/istanbul-DJKvMwnq.svg +1 -0
  253. package/dist/client/assets/jar-BaN44U3v.svg +1 -0
  254. package/dist/client/assets/java-QyMrrPma.svg +1 -0
  255. package/dist/client/assets/javaclass-BU8_3KBR.svg +1 -0
  256. package/dist/client/assets/javascript-CQjpTQab.svg +1 -0
  257. package/dist/client/assets/javascript-map-BQGiWnDM.svg +1 -0
  258. package/dist/client/assets/jenkins-Bf7aNz-w.svg +1 -0
  259. package/dist/client/assets/jest-BgbiFFEd.svg +1 -0
  260. package/dist/client/assets/jinja-4WR9tA6i.svg +1 -0
  261. package/dist/client/assets/jsconfig-ZAi6fTF1.svg +1 -0
  262. package/dist/client/assets/json-NsberLUP.svg +1 -0
  263. package/dist/client/assets/json_schema-sOuobP_H.svg +1 -0
  264. package/dist/client/assets/jsr-CWVSPSyV.svg +1 -0
  265. package/dist/client/assets/julia-DCKDSo9T.svg +1 -0
  266. package/dist/client/assets/jupyter-BKV2q0IB.svg +1 -0
  267. package/dist/client/assets/just-WQgcj-TR.svg +1 -0
  268. package/dist/client/assets/karma-Dm3AtiMd.svg +1 -0
  269. package/dist/client/assets/kcl-CyzArNE1.svg +1 -0
  270. package/dist/client/assets/key-CrFjkQiv.svg +1 -0
  271. package/dist/client/assets/keystatic-BECeLiHJ.svg +1 -0
  272. package/dist/client/assets/kivy-baDYR7ar.svg +1 -0
  273. package/dist/client/assets/kl-Dy3qeUbd.svg +1 -0
  274. package/dist/client/assets/knip-BWpBMXqu.svg +1 -0
  275. package/dist/client/assets/kotlin-DcjME28v.svg +1 -0
  276. package/dist/client/assets/kubernetes-B5EEXb3e.svg +1 -0
  277. package/dist/client/assets/kusto-CIjvTfRW.svg +1 -0
  278. package/dist/client/assets/label-AKZOJqFh.svg +1 -0
  279. package/dist/client/assets/laravel-DWauj5w4.svg +1 -0
  280. package/dist/client/assets/latexmk-DQ0u8QMa.svg +1 -0
  281. package/dist/client/assets/lbx-BMCQe48q.svg +1 -0
  282. package/dist/client/assets/lean-COOrALn9.svg +1 -0
  283. package/dist/client/assets/lefthook-DClcp3br.svg +1 -0
  284. package/dist/client/assets/lerna-BsWY3uYS.svg +1 -0
  285. package/dist/client/assets/less-0c0PeB1Z.svg +1 -0
  286. package/dist/client/assets/liara-CSN9sJzE.svg +1 -0
  287. package/dist/client/assets/lib-B-NXM8aC.svg +1 -0
  288. package/dist/client/assets/license-DmydDYqK.svg +1 -0
  289. package/dist/client/assets/lighthouse-CtbIoCdK.svg +1 -0
  290. package/dist/client/assets/lilypond-CBSm3LFL.svg +1 -0
  291. package/dist/client/assets/lintstaged-Bj1Eddi5.svg +1 -0
  292. package/dist/client/assets/liquid-ClnkrScY.svg +1 -0
  293. package/dist/client/assets/lisp-CMn3epg5.svg +1 -0
  294. package/dist/client/assets/lit-CJ6w1GHF.js +2 -0
  295. package/dist/client/assets/livescript-B5PkWD8e.svg +1 -0
  296. package/dist/client/assets/lock-DRloBj1S.svg +1 -0
  297. package/dist/client/assets/log-Db6NwxHZ.svg +1 -0
  298. package/dist/client/assets/lolcode-C6q6fY1O.svg +1 -0
  299. package/dist/client/assets/lottie-ExyLYhtq.svg +1 -0
  300. package/dist/client/assets/lua-CUh_Iwk8.svg +1 -0
  301. package/dist/client/assets/luau-De_4eP_9.svg +1 -0
  302. package/dist/client/assets/lynx-B49IBNBN.svg +1 -0
  303. package/dist/client/assets/lyric-Bm3UlVp3.svg +1 -0
  304. package/dist/client/assets/macaulay2-0YotwNnE.svg +1 -0
  305. package/dist/client/assets/main-CWcn0Deu.js +2 -0
  306. package/dist/client/assets/makefile-B2WlY55Y.svg +1 -0
  307. package/dist/client/assets/markdoc-DjROVW5I.svg +1 -0
  308. package/dist/client/assets/markdoc-config-BpVRhg1B.svg +1 -0
  309. package/dist/client/assets/markdown-Bm_LLmmi.svg +1 -0
  310. package/dist/client/assets/markdownlint-D4M2LXbH.svg +1 -0
  311. package/dist/client/assets/markojs-BohUrSLp.svg +1 -0
  312. package/dist/client/assets/mathematica-BGWNQXSR.svg +1 -0
  313. package/dist/client/assets/maven-BffVB5hm.svg +1 -0
  314. package/dist/client/assets/mdsvex-Dc9CFJJa.svg +1 -0
  315. package/dist/client/assets/mdx-D6qa5U8C.svg +1 -0
  316. package/dist/client/assets/mercurial-BDoD6ubd.svg +1 -0
  317. package/dist/client/assets/merlin-D5wTXfO4.svg +1 -0
  318. package/dist/client/assets/mermaid-BTscZDRS.svg +1 -0
  319. package/dist/client/assets/meson-dcvm8lmo.svg +1 -0
  320. package/dist/client/assets/metro-XIyWX0Go.svg +1 -0
  321. package/dist/client/assets/minecraft-CE8xXE3-.svg +1 -0
  322. package/dist/client/assets/minecraft-fabric-wG6LwgIf.svg +1 -0
  323. package/dist/client/assets/mint-Cb-YXACo.svg +1 -0
  324. package/dist/client/assets/mist-DAm4UkTw.svg +1 -0
  325. package/dist/client/assets/mjml-C_r30C5E.svg +1 -0
  326. package/dist/client/assets/mocha-BF5_j65C.svg +1 -0
  327. package/dist/client/assets/modernizr-89IMS8eL.svg +1 -0
  328. package/dist/client/assets/mojo-CscjT2Jm.svg +1 -0
  329. package/dist/client/assets/moon-_L_nTq1_.svg +1 -0
  330. package/dist/client/assets/moonscript-Ayut2PrD.svg +1 -0
  331. package/dist/client/assets/mrpack-BVpGpKVf.svg +1 -0
  332. package/dist/client/assets/mxml-B21Nbdgw.svg +1 -0
  333. package/dist/client/assets/nano-staged-CAVSFkY8.svg +1 -0
  334. package/dist/client/assets/ndst-DpYLiHkx.svg +1 -0
  335. package/dist/client/assets/nest-CUu_iPqI.svg +1 -0
  336. package/dist/client/assets/netlify-Bb7vRMfV.svg +1 -0
  337. package/dist/client/assets/next-2gAImGWJ.svg +1 -0
  338. package/dist/client/assets/nextflow-dPJG5e3G.svg +1 -0
  339. package/dist/client/assets/nginx-Ss9U_SJ3.svg +1 -0
  340. package/dist/client/assets/nim-CXHB5kuH.svg +1 -0
  341. package/dist/client/assets/nix-DoxxkZ2k.svg +1 -0
  342. package/dist/client/assets/nodejs-Czg5JT6z.svg +1 -0
  343. package/dist/client/assets/nodemon-CprsexAJ.svg +1 -0
  344. package/dist/client/assets/npm-BSKPS9CC.svg +1 -0
  345. package/dist/client/assets/nuget-D_mqKH22.svg +1 -0
  346. package/dist/client/assets/nunjucks-CSL1En7R.svg +1 -0
  347. package/dist/client/assets/nuxt-BszScKzK.svg +1 -0
  348. package/dist/client/assets/nx-CTIqtdbG.svg +1 -0
  349. package/dist/client/assets/objective-c-3E5wWl6u.svg +1 -0
  350. package/dist/client/assets/objective-cpp-DjpoLOMo.svg +1 -0
  351. package/dist/client/assets/ocaml-T4fLeZFT.svg +1 -0
  352. package/dist/client/assets/odin-DlWnbZWN.svg +1 -0
  353. package/dist/client/assets/onnx-C6WInyrb.svg +1 -0
  354. package/dist/client/assets/opa-D5GoZW5M.svg +1 -0
  355. package/dist/client/assets/opam-3IZadro4.svg +1 -0
  356. package/dist/client/assets/openapi-DjlVyoOp.svg +1 -0
  357. package/dist/client/assets/opencode-BaYncWio.svg +1 -0
  358. package/dist/client/assets/opentofu-jFw9lQBP.svg +1 -0
  359. package/dist/client/assets/otne-SLiO8whA.svg +1 -0
  360. package/dist/client/assets/oxc-DN6_023j.svg +1 -0
  361. package/dist/client/assets/packship-UyLXQ_8n.svg +1 -0
  362. package/dist/client/assets/palette-C0GOsJgu.svg +1 -0
  363. package/dist/client/assets/panda-D469wGns.svg +1 -0
  364. package/dist/client/assets/parcel-BrXQSBYb.svg +1 -0
  365. package/dist/client/assets/pascal-oxGvvJ_x.svg +1 -0
  366. package/dist/client/assets/pawn-BvapPd-t.svg +1 -0
  367. package/dist/client/assets/payload-Cks6N40-.svg +1 -0
  368. package/dist/client/assets/pdf-DtjgBDdX.svg +1 -0
  369. package/dist/client/assets/pdm-CbwhGqOl.svg +1 -0
  370. package/dist/client/assets/peg-BJdFn78b.svg +1 -0
  371. package/dist/client/assets/percy-CWbuYL05.svg +1 -0
  372. package/dist/client/assets/perl-DUX0zwsQ.svg +1 -0
  373. package/dist/client/assets/php-5lebFt-d.svg +1 -0
  374. package/dist/client/assets/php-cs-fixer-D3Vv91zO.svg +1 -0
  375. package/dist/client/assets/phpstan-D9FJYotS.svg +1 -0
  376. package/dist/client/assets/phpunit-BlNyjrEw.svg +1 -0
  377. package/dist/client/assets/pinejs-CDuWmsOY.svg +1 -0
  378. package/dist/client/assets/pipeline-CCHJ-CIC.svg +1 -0
  379. package/dist/client/assets/pkl-CzHZDqdt.svg +1 -0
  380. package/dist/client/assets/plastic-CvMMB3c5.svg +1 -0
  381. package/dist/client/assets/playwright-C8c_RKic.svg +1 -0
  382. package/dist/client/assets/plop-D4uymN-_.svg +1 -0
  383. package/dist/client/assets/pm2-ecosystem-Cv28zGx9.svg +1 -0
  384. package/dist/client/assets/pnpm-ndvMXYUu.svg +1 -0
  385. package/dist/client/assets/poetry-ClZfXo_0.svg +1 -0
  386. package/dist/client/assets/postcss-g3C3DDoi.svg +1 -0
  387. package/dist/client/assets/posthtml-BkDCsIkz.svg +1 -0
  388. package/dist/client/assets/powerpoint-CCXYfzLu.svg +1 -0
  389. package/dist/client/assets/powershell-DnXi9Rjx.svg +1 -0
  390. package/dist/client/assets/pre-commit-DXbl2unR.svg +1 -0
  391. package/dist/client/assets/preload-helper-CRzLMJPS.js +1 -0
  392. package/dist/client/assets/prettier-DFxlFAp4.svg +1 -0
  393. package/dist/client/assets/prisma-BgG1MIwh.svg +1 -0
  394. package/dist/client/assets/processing-B1bs0VmW.svg +1 -0
  395. package/dist/client/assets/prolog-CxwCfnlm.svg +1 -0
  396. package/dist/client/assets/prompt-7jgVTNou.svg +1 -0
  397. package/dist/client/assets/proto-Bv4-L0XU.svg +1 -0
  398. package/dist/client/assets/protractor-CJWv1lK-.svg +1 -0
  399. package/dist/client/assets/pug-BXlORXuH.svg +1 -0
  400. package/dist/client/assets/puppet-CKCVJvZX.svg +1 -0
  401. package/dist/client/assets/puppeteer-DDZkfQNZ.svg +1 -0
  402. package/dist/client/assets/purescript-CUdIfJrp.svg +1 -0
  403. package/dist/client/assets/python-misc-BZ5TXfdG.svg +1 -0
  404. package/dist/client/assets/python-oHA753pt.svg +1 -0
  405. package/dist/client/assets/pytorch-f0udCMaw.svg +1 -0
  406. package/dist/client/assets/qsharp-BaFNvoXS.svg +1 -0
  407. package/dist/client/assets/quarto-zhC7oGOB.svg +1 -0
  408. package/dist/client/assets/quasar-BXE2pW5w.svg +1 -0
  409. package/dist/client/assets/quokka-DrMOw93T.svg +1 -0
  410. package/dist/client/assets/r-AQewf3lz.svg +1 -0
  411. package/dist/client/assets/racket-BCyLzvrP.svg +1 -0
  412. package/dist/client/assets/raml-WDbT4cRb.svg +1 -0
  413. package/dist/client/assets/razor-BAUCpTxC.svg +1 -0
  414. package/dist/client/assets/rbxmk-CZ9pB7X6.svg +1 -0
  415. package/dist/client/assets/rc-BDgxm_A8.svg +1 -0
  416. package/dist/client/assets/react-CdMrIyLK.svg +1 -0
  417. package/dist/client/assets/react_ts-9WeLJBIj.svg +1 -0
  418. package/dist/client/assets/readme-BSIQKZwq.svg +1 -0
  419. package/dist/client/assets/reason-m9vOqeqw.svg +1 -0
  420. package/dist/client/assets/red-Dzf3O8j4.svg +1 -0
  421. package/dist/client/assets/regedit-DJzxfiQN.svg +1 -0
  422. package/dist/client/assets/remark-C55cxr93.svg +1 -0
  423. package/dist/client/assets/remix-Bk2h4zH7.svg +1 -0
  424. package/dist/client/assets/renovate-zzi8oRFv.svg +1 -0
  425. package/dist/client/assets/replit-BpeMxcBh.svg +1 -0
  426. package/dist/client/assets/requiredTerminalPlugin-B-0wkiKe.js +3 -0
  427. package/dist/client/assets/rescript-interface-a87dYX5u.svg +1 -0
  428. package/dist/client/assets/rescript-qPAwtDLa.svg +1 -0
  429. package/dist/client/assets/restql-CnZcZpny.svg +1 -0
  430. package/dist/client/assets/riot-DjRzaRVp.svg +1 -0
  431. package/dist/client/assets/roadmap-DWpVc5P5.svg +1 -0
  432. package/dist/client/assets/roblox-Bv5zbklC.svg +1 -0
  433. package/dist/client/assets/robot-Cto_i8jo.svg +1 -0
  434. package/dist/client/assets/robots-COnOCAqh.svg +1 -0
  435. package/dist/client/assets/rocket-CAmUpMm6.svg +1 -0
  436. package/dist/client/assets/rolldown-Cy_4AzVW.svg +1 -0
  437. package/dist/client/assets/rollup-2ZkmBeWV.svg +1 -0
  438. package/dist/client/assets/rome-Cq3lb2xY.svg +1 -0
  439. package/dist/client/assets/routing-BNxHhbXZ.svg +1 -0
  440. package/dist/client/assets/rspec-CoEmfx5H.svg +1 -0
  441. package/dist/client/assets/rstack-DzJ3cPXM.svg +1 -0
  442. package/dist/client/assets/rubocop-CokGq15J.svg +1 -0
  443. package/dist/client/assets/ruby-DTGQ4xCM.svg +1 -0
  444. package/dist/client/assets/ruff-BN0KpNzC.svg +1 -0
  445. package/dist/client/assets/rust-B122pUHY.svg +1 -0
  446. package/dist/client/assets/salt-B8j0OVNV.svg +1 -0
  447. package/dist/client/assets/san-C0UnyaU4.svg +1 -0
  448. package/dist/client/assets/sas-RNoBA0-Y.svg +1 -0
  449. package/dist/client/assets/sass-B7y5mYt_.svg +1 -0
  450. package/dist/client/assets/sbt-DosCci-d.svg +1 -0
  451. package/dist/client/assets/scala-CsGkKwl5.svg +1 -0
  452. package/dist/client/assets/scheme-CS2UbTis.svg +1 -0
  453. package/dist/client/assets/scons-CyqfFgvx.svg +1 -0
  454. package/dist/client/assets/screwdriver-DjTKuDz7.svg +1 -0
  455. package/dist/client/assets/search-fq7VxV09.svg +1 -0
  456. package/dist/client/assets/semantic-release-BbLzZX96.svg +1 -0
  457. package/dist/client/assets/semgrep-Cl6VUQtd.svg +1 -0
  458. package/dist/client/assets/sentry-MrouyD-P.svg +1 -0
  459. package/dist/client/assets/sequelize-BQWikTCs.svg +1 -0
  460. package/dist/client/assets/serverless-C7Jdn6_T.svg +1 -0
  461. package/dist/client/assets/settings-CtzL1evz.svg +1 -0
  462. package/dist/client/assets/shader-BZXKDeiD.svg +1 -0
  463. package/dist/client/assets/shellcheck-BgWOclub.svg +1 -0
  464. package/dist/client/assets/simulink-yQnKyx__.svg +1 -0
  465. package/dist/client/assets/siyuan-CPWD86-6.svg +1 -0
  466. package/dist/client/assets/sketch-NbltjaPf.svg +1 -0
  467. package/dist/client/assets/skill-BThvgH87.svg +1 -0
  468. package/dist/client/assets/slim-CTjdZAfz.svg +1 -0
  469. package/dist/client/assets/slint-B0xbkqgr.svg +1 -0
  470. package/dist/client/assets/slug-CWkQgR9s.svg +1 -0
  471. package/dist/client/assets/smarty-BXDiLQNt.svg +1 -0
  472. package/dist/client/assets/sml-DMkoWEN5.svg +1 -0
  473. package/dist/client/assets/snakemake-xG7xUrdI.svg +1 -0
  474. package/dist/client/assets/snapcraft-zvgAcZ4p.svg +1 -0
  475. package/dist/client/assets/snowpack-l0uHt304.svg +1 -0
  476. package/dist/client/assets/snyk-DCW3rtvv.svg +1 -0
  477. package/dist/client/assets/solidity-C4TQWJKU.svg +1 -0
  478. package/dist/client/assets/sonarcloud-ClLIXGyx.svg +1 -0
  479. package/dist/client/assets/spwn-31WG9ftR.svg +1 -0
  480. package/dist/client/assets/stackblitz-ZX6aBRKb.svg +1 -0
  481. package/dist/client/assets/stan-CPcUXbxB.svg +1 -0
  482. package/dist/client/assets/steadybit-BZtlLY-3.svg +1 -0
  483. package/dist/client/assets/stencil-D0FNO32O.svg +1 -0
  484. package/dist/client/assets/stitches-BYlEJvuz.svg +1 -0
  485. package/dist/client/assets/storybook-KxGhpZYa.svg +1 -0
  486. package/dist/client/assets/stryker-CYflxT_R.svg +1 -0
  487. package/dist/client/assets/sty-C4HqHV4z.svg +1 -0
  488. package/dist/client/assets/stylable-Bi9Gr97T.svg +1 -0
  489. package/dist/client/assets/styleSources-CdF2T_pj.js +1 -0
  490. package/dist/client/assets/stylelint-JSbd-yhE.svg +1 -0
  491. package/dist/client/assets/styles-BwN5rgmt.js +10 -0
  492. package/dist/client/assets/styles-DK4aKhCE.js +1 -0
  493. package/dist/client/assets/stylus-ZoqbP9jE.svg +1 -0
  494. package/dist/client/assets/sublime-DFvp_Ess.svg +1 -0
  495. package/dist/client/assets/subtitles-BNOc1mEf.svg +1 -0
  496. package/dist/client/assets/supabase-CX7cap86.svg +1 -0
  497. package/dist/client/assets/svelte-B8HKO6BX.svg +1 -0
  498. package/dist/client/assets/svelte_js-C_RKcwSP.svg +1 -0
  499. package/dist/client/assets/svelte_ts-APH7lcVp.svg +1 -0
  500. package/dist/client/assets/svg-DVy7iktw.svg +1 -0
  501. package/dist/client/assets/svgo-CJXaeDEN.svg +1 -0
  502. package/dist/client/assets/svgr-Dn8OFGar.svg +1 -0
  503. package/dist/client/assets/swagger-Dqyrwr4g.svg +1 -0
  504. package/dist/client/assets/sway-C1Kkif7r.svg +1 -0
  505. package/dist/client/assets/swc-BUhoW8cb.svg +1 -0
  506. package/dist/client/assets/swift-D4_pkWil.svg +1 -0
  507. package/dist/client/assets/syncpack-DtZ994Gf.svg +1 -0
  508. package/dist/client/assets/table-YhsaNNk_.svg +1 -0
  509. package/dist/client/assets/tailwindcss-DODJSdj1.svg +1 -0
  510. package/dist/client/assets/tape-DGYhnMht.svg +1 -0
  511. package/dist/client/assets/taskfile-f5DM79_-.svg +1 -0
  512. package/dist/client/assets/tauri-DBBtDoCo.svg +1 -0
  513. package/dist/client/assets/taze-BPR9LgXp.svg +1 -0
  514. package/dist/client/assets/tcl-CiAJKGaA.svg +1 -0
  515. package/dist/client/assets/teal-WyfAQok0.svg +1 -0
  516. package/dist/client/assets/templ-BHla0pe-.svg +1 -0
  517. package/dist/client/assets/template-qJWiB5gQ.svg +1 -0
  518. package/dist/client/assets/terraform-R86_iPhv.svg +1 -0
  519. package/dist/client/assets/test-js-A34KrdbK.svg +1 -0
  520. package/dist/client/assets/test-jsx-C2PQBkQP.svg +1 -0
  521. package/dist/client/assets/test-ts-fdt299ek.svg +1 -0
  522. package/dist/client/assets/tex-DpewR4UN.svg +1 -0
  523. package/dist/client/assets/textlint-pjwsbDhs.svg +1 -0
  524. package/dist/client/assets/themeCatalog-B3yda95n.js +1 -0
  525. package/dist/client/assets/themePreference-BBiJxLjs.js +1 -0
  526. package/dist/client/assets/themeStartup-0b02tNrh.js +2 -0
  527. package/dist/client/assets/tilt-Dwon5dv-.svg +1 -0
  528. package/dist/client/assets/tldraw-BnDJmluq.svg +1 -0
  529. package/dist/client/assets/tobi-CQ-666uh.svg +1 -0
  530. package/dist/client/assets/tobimake-DzDbTYW1.svg +1 -0
  531. package/dist/client/assets/toc-nUTycYjl.svg +1 -0
  532. package/dist/client/assets/todo-CpcorlsE.svg +1 -0
  533. package/dist/client/assets/toml-DvUt-GOd.svg +1 -0
  534. package/dist/client/assets/toon-CGe9RDKY.svg +1 -0
  535. package/dist/client/assets/travis-CH6zNy43.svg +1 -0
  536. package/dist/client/assets/tree-epW9JaxP.svg +1 -0
  537. package/dist/client/assets/trigger-CqdxCyG0.svg +1 -0
  538. package/dist/client/assets/tsconfig-ROp_YdWL.svg +1 -0
  539. package/dist/client/assets/tsdoc-BEXcYgLD.svg +1 -0
  540. package/dist/client/assets/tsdown-B96z16my.svg +1 -0
  541. package/dist/client/assets/tsil-D-U9yWS8.svg +1 -0
  542. package/dist/client/assets/tune-DISlqKNZ.svg +1 -0
  543. package/dist/client/assets/turborepo-CWNwoZtI.svg +1 -0
  544. package/dist/client/assets/twig-CA70AYNK.svg +1 -0
  545. package/dist/client/assets/twine-BPJsGZd2.svg +1 -0
  546. package/dist/client/assets/typedoc-FY7jFoGW.svg +1 -0
  547. package/dist/client/assets/typescript-DjjXqw-n.svg +1 -0
  548. package/dist/client/assets/typescript-def-CTN5WM5i.svg +1 -0
  549. package/dist/client/assets/typst-CnDSkp_i.svg +1 -0
  550. package/dist/client/assets/uiua-BOsurlxn.svg +1 -0
  551. package/dist/client/assets/umi-DYOjFi8w.svg +1 -0
  552. package/dist/client/assets/uml-CYijxuna.svg +1 -0
  553. package/dist/client/assets/unity-CRNCEoK6.svg +1 -0
  554. package/dist/client/assets/unlicense-DG_b3BEE.svg +1 -0
  555. package/dist/client/assets/unocss-MqLuLfeL.svg +1 -0
  556. package/dist/client/assets/url-hE4h5p6b.svg +1 -0
  557. package/dist/client/assets/uv-DRTOVSi_.svg +1 -0
  558. package/dist/client/assets/vagrant-YnxMTuKe.svg +1 -0
  559. package/dist/client/assets/vala-m_i2ZWns.svg +1 -0
  560. package/dist/client/assets/vanilla-extract-76H6-A4R.svg +1 -0
  561. package/dist/client/assets/varnish-CX3oiNcp.svg +1 -0
  562. package/dist/client/assets/vedic-D6-oQUka.svg +1 -0
  563. package/dist/client/assets/velite-nLLNxKBA.svg +1 -0
  564. package/dist/client/assets/velocity-CSvfE9yM.svg +1 -0
  565. package/dist/client/assets/vercel-CgKLo9IO.svg +1 -0
  566. package/dist/client/assets/verdaccio-gsdiCbvv.svg +1 -0
  567. package/dist/client/assets/verified-BFLtqroG.svg +1 -0
  568. package/dist/client/assets/verilog-CbZvRaae.svg +1 -0
  569. package/dist/client/assets/verse-D_RZ0Bz0.svg +1 -0
  570. package/dist/client/assets/vfl-8CAM-hjs.svg +1 -0
  571. package/dist/client/assets/video-qxpJXkH6.svg +1 -0
  572. package/dist/client/assets/vim-CB8qTVuS.svg +1 -0
  573. package/dist/client/assets/virtual-Hoc2XbZN.svg +1 -0
  574. package/dist/client/assets/visualstudio-BHj2x5q7.svg +1 -0
  575. package/dist/client/assets/vite-JKzchVew.svg +1 -0
  576. package/dist/client/assets/vitest-Cl4_wKFu.svg +1 -0
  577. package/dist/client/assets/vlang-C3-DMUIm.svg +1 -0
  578. package/dist/client/assets/vscode-BtTXhPua.svg +1 -0
  579. package/dist/client/assets/vue-BlenztPP.svg +1 -0
  580. package/dist/client/assets/vue-config-o7yPAADv.svg +1 -0
  581. package/dist/client/assets/wakatime-DNz7qcxZ.svg +1 -0
  582. package/dist/client/assets/wallaby-C0UIkEOa.svg +1 -0
  583. package/dist/client/assets/wally-Ds1quKSG.svg +1 -0
  584. package/dist/client/assets/warp-B3X5Zoeh.svg +1 -0
  585. package/dist/client/assets/watchman-7EFq9LSa.svg +1 -0
  586. package/dist/client/assets/webassembly-Bs4UtU2T.svg +1 -0
  587. package/dist/client/assets/webhint-B4I6V0Ee.svg +1 -0
  588. package/dist/client/assets/webpack-zo2uWGOg.svg +1 -0
  589. package/dist/client/assets/wepy-Cho54Qlr.svg +1 -0
  590. package/dist/client/assets/werf-BW9FiKe5.svg +1 -0
  591. package/dist/client/assets/windicss-C_8y516i.svg +1 -0
  592. package/dist/client/assets/wolframlanguage-D6C1WBYh.svg +1 -0
  593. package/dist/client/assets/word-BcPLm6YH.svg +1 -0
  594. package/dist/client/assets/wrangler-CjgAkoTg.svg +1 -0
  595. package/dist/client/assets/wxt-c6drtC9H.svg +1 -0
  596. package/dist/client/assets/xaml-DE72OHNQ.svg +1 -0
  597. package/dist/client/assets/xmake-4WNmmIJj.svg +1 -0
  598. package/dist/client/assets/xml-S4aCxoUr.svg +1 -0
  599. package/dist/client/assets/yaml-DPTMsOTP.svg +1 -0
  600. package/dist/client/assets/yang-N-7dP4WI.svg +1 -0
  601. package/dist/client/assets/yarn-Cios8OFX.svg +1 -0
  602. package/dist/client/assets/zeabur-kqbNXTTH.svg +1 -0
  603. package/dist/client/assets/zig-CdphsgLN.svg +1 -0
  604. package/dist/client/assets/zip-GDnEynqi.svg +1 -0
  605. package/dist/client/assets/zizmor-IsFFdy6W.svg +1 -0
  606. package/dist/client/index.html +12 -6
  607. package/dist/config.js +233 -87
  608. package/dist/config.js.map +1 -1
  609. package/dist/configSessionNamingMigration.js +63 -0
  610. package/dist/configSessionNamingMigration.js.map +1 -0
  611. package/dist/nativeServices/serviceDoctor.js +3 -3
  612. package/dist/nativeServices/serviceDoctor.js.map +1 -1
  613. package/dist/nativeServices/servicePlan.js +53 -23
  614. package/dist/nativeServices/servicePlan.js.map +1 -1
  615. package/dist/nativeServices/serviceProbe.js +27 -7
  616. package/dist/nativeServices/serviceProbe.js.map +1 -1
  617. package/dist/pi-packages/relays/markdownDocument.js +8 -9
  618. package/dist/pi-packages/relays/pi-web-plugin.js +11 -11
  619. package/dist/pi-packages/relays/relays.messages.js +38 -0
  620. package/dist/pi-packages/relays/relaysLocalization.js +19 -0
  621. package/dist/pi-packages/relays/relaysPanelElement.js +151 -96
  622. package/dist/pi-packages/scheduled-tasks/browser/pi-web-plugin.js +1135 -0
  623. package/dist/pi-packages/scheduled-tasks/domain.js +63 -0
  624. package/dist/pi-packages/scheduled-tasks/extensions/index.js +710 -0
  625. package/dist/pi-packages/scheduled-tasks/package.json +30 -0
  626. package/dist/pi-packages/scheduled-tasks/scheduler.js +89 -0
  627. package/dist/pi-packages/scheduled-tasks/server-plugin.js +9872 -0
  628. package/dist/pi-packages/scheduled-tasks/service.js +178 -0
  629. package/dist/pi-packages/scheduled-tasks/skills/scheduled-tasks/SKILL.md +30 -0
  630. package/dist/pi-packages/scheduled-tasks/sqlite.js +18 -0
  631. package/dist/pi-packages/scheduled-tasks/store.js +230 -0
  632. package/dist/pi-packages/scheduled-tasks/vite.browser.config.mjs +16 -0
  633. package/dist/pi-packages/scheduled-tasks/vite.companion.config.mjs +17 -0
  634. package/dist/pi-packages/scheduled-tasks/vite.config.mjs +17 -0
  635. package/dist/pi-packages/session-naming/config.js +78 -0
  636. package/dist/pi-packages/session-naming/extensions/index.js +74 -0
  637. package/dist/pi-packages/session-naming/generator.js +76 -0
  638. package/dist/pi-packages/session-naming/package.json +15 -0
  639. package/dist/pi-packages/workflows/browser/pi-web-plugin.js +10 -7
  640. package/dist/pi-packages/workflows/browser/workflows.messages.js +32 -0
  641. package/dist/pi-packages/workflows/browser/worktreeDialog.js +71 -50
  642. package/dist/pi-packages/workflows/server-plugin.js +137 -23
  643. package/dist/pi-web-plugins/audio/audioElement.js +61 -0
  644. package/dist/pi-web-plugins/audio/audioFormats.js +18 -0
  645. package/dist/pi-web-plugins/audio/byteRange.js +21 -0
  646. package/dist/pi-web-plugins/audio/package.json +10 -0
  647. package/dist/pi-web-plugins/audio/pi-web-plugin.js +39 -0
  648. package/dist/pi-web-plugins/audio/server.js +71 -0
  649. package/dist/pi-web-plugins/code-highlight/browser/pi-web-plugin.js +4 -4
  650. package/dist/pi-web-plugins/custom-ui-codex/codex.css +8 -0
  651. package/dist/pi-web-plugins/custom-ui-codex/fileIcons.js +30 -0
  652. package/dist/pi-web-plugins/custom-ui-codex/package.json +8 -1
  653. package/dist/pi-web-plugins/custom-ui-codex/pi-web-plugin.js +8 -8
  654. package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +236 -259
  655. package/dist/pi-web-plugins/git/browser/git-panel.js +138 -59
  656. package/dist/pi-web-plugins/git/browser/git.messages.js +47 -0
  657. package/dist/pi-web-plugins/git/browser/gitFileIcon.js +71 -0
  658. package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +21 -4
  659. package/dist/pi-web-plugins/git/server-plugin.js +5 -3
  660. package/dist/pi-web-plugins/info/info.messages.js +66 -0
  661. package/dist/pi-web-plugins/info/infoInternals.js +217 -217
  662. package/dist/pi-web-plugins/info/pi-web-plugin.js +19 -14
  663. package/dist/pi-web-plugins/language-spanish/catalogs.js +1896 -0
  664. package/dist/pi-web-plugins/language-spanish/package.json +14 -0
  665. package/dist/pi-web-plugins/language-spanish/pi-web-plugin.js +90 -0
  666. package/dist/pi-web-plugins/language-swedish/catalogs.js +1896 -0
  667. package/dist/pi-web-plugins/language-swedish/package.json +14 -0
  668. package/dist/pi-web-plugins/language-swedish/pi-web-plugin.js +89 -0
  669. package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +4 -4
  670. package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +71 -66
  671. package/dist/pi-web-plugins/terminal/bunPtyProvider.js +109 -0
  672. package/dist/pi-web-plugins/terminal/nodePtyProvider.js +75 -0
  673. package/dist/pi-web-plugins/terminal/nodePtySpawnHelper.js +36 -0
  674. package/dist/pi-web-plugins/terminal/ptyComposition.js +12 -0
  675. package/dist/pi-web-plugins/terminal/ptyProvider.js +2 -0
  676. package/dist/pi-web-plugins/terminal/server-plugin.js +42 -14
  677. package/dist/pi-web-plugins/terminal/terminalService.js +218 -76
  678. package/dist/pi-web-plugins/themes/assets/graphite.css +56 -0
  679. package/dist/pi-web-plugins/themes/assets/paper.css +56 -0
  680. package/dist/pi-web-plugins/themes/package.json +21 -0
  681. package/dist/pi-web-plugins/updates/pi-web-plugin.js +200 -155
  682. package/dist/pi-web-plugins/updates/updates.messages.js +59 -0
  683. package/dist/pi-web-plugins/updates/updatesLogic.js +27 -29
  684. package/dist/pi-web-plugins/workspace-tasks/config.js +18 -19
  685. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +13 -8
  686. package/dist/pi-web-plugins/workspace-tasks/tasks.messages.js +45 -0
  687. package/dist/pi-web-plugins/workspace-tasks/tasksLocalization.js +33 -0
  688. package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +56 -42
  689. package/dist/pi-web-plugins/workspace-tasks/workspaceTasksClient.js +7 -33
  690. package/dist/pi-web-plugins/zh-cn/catalogs.json +1803 -0
  691. package/dist/pi-web-plugins/zh-cn/main.json +5 -1
  692. package/dist/pi-web-plugins/zh-cn/management-errors.json +6 -0
  693. package/dist/pi-web-plugins/zh-cn/pi-web-plugin.js +13 -4
  694. package/dist/pi-web-plugins/zh-cn/server.json +1 -1
  695. package/dist/piWebVersionReport.js +2 -0
  696. package/dist/piWebVersionReport.js.map +1 -1
  697. package/dist/plugin-api.d.ts +194 -9
  698. package/dist/runtimePreflight.js +14 -0
  699. package/dist/runtimePreflight.js.map +1 -0
  700. package/dist/server/activity/workspaceActivityService.js +18 -1
  701. package/dist/server/activity/workspaceActivityService.js.map +1 -1
  702. package/dist/server/app.js +45 -10
  703. package/dist/server/app.js.map +1 -1
  704. package/dist/server/configRoutes.js +117 -139
  705. package/dist/server/configRoutes.js.map +1 -1
  706. package/dist/server/configUpdates.js +104 -0
  707. package/dist/server/configUpdates.js.map +1 -0
  708. package/dist/server/deploymentIdentity.js +12 -10
  709. package/dist/server/deploymentIdentity.js.map +1 -1
  710. package/dist/server/deploymentIdentityRoutes.js +2 -1
  711. package/dist/server/deploymentIdentityRoutes.js.map +1 -1
  712. package/dist/server/diagnostics/nodePtyNativeModule.js +0 -18
  713. package/dist/server/diagnostics/nodePtyNativeModule.js.map +1 -1
  714. package/dist/server/diagnostics/terminalPrerequisites.js +54 -0
  715. package/dist/server/diagnostics/terminalPrerequisites.js.map +1 -0
  716. package/dist/server/index.js +9 -0
  717. package/dist/server/index.js.map +1 -1
  718. package/dist/server/knownAutoInstallPiPackages.js +6 -0
  719. package/dist/server/knownAutoInstallPiPackages.js.map +1 -1
  720. package/dist/server/knownPiPackages.js +4 -4
  721. package/dist/server/knownPiPackages.js.map +1 -1
  722. package/dist/server/machines/machineClient.js +39 -17
  723. package/dist/server/machines/machineClient.js.map +1 -1
  724. package/dist/server/machines/machinePluginProxyRoutes.js +3 -1
  725. package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
  726. package/dist/server/machines/machineProxyRoutes.js +60 -9
  727. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  728. package/dist/server/machines/machineService.js +81 -13
  729. package/dist/server/machines/machineService.js.map +1 -1
  730. package/dist/server/machines/machineStore.js.map +1 -1
  731. package/dist/server/managementEmbed.js +4 -1
  732. package/dist/server/managementEmbed.js.map +1 -1
  733. package/dist/server/managementEntryRoutes.js +51 -0
  734. package/dist/server/managementEntryRoutes.js.map +1 -0
  735. package/dist/server/managementEntryTickets.js +46 -0
  736. package/dist/server/managementEntryTickets.js.map +1 -0
  737. package/dist/server/managementTransportLimits.js +5 -0
  738. package/dist/server/managementTransportLimits.js.map +1 -0
  739. package/dist/server/navigationPreferenceRoutes.js +58 -2
  740. package/dist/server/navigationPreferenceRoutes.js.map +1 -1
  741. package/dist/server/normalAuth.js +3 -1
  742. package/dist/server/normalAuth.js.map +1 -1
  743. package/dist/server/notices/serverNoticeStore.js +4 -0
  744. package/dist/server/notices/serverNoticeStore.js.map +1 -1
  745. package/dist/server/piPackageService.js +15 -1
  746. package/dist/server/piPackageService.js.map +1 -1
  747. package/dist/server/piWebPluginCatalog.js +23 -11
  748. package/dist/server/piWebPluginCatalog.js.map +1 -1
  749. package/dist/server/piWebPluginLifecycle.js +14 -4
  750. package/dist/server/piWebPluginLifecycle.js.map +1 -1
  751. package/dist/server/piWebPluginService.js +11 -5
  752. package/dist/server/piWebPluginService.js.map +1 -1
  753. package/dist/server/piWebStatus.js +12 -10
  754. package/dist/server/piWebStatus.js.map +1 -1
  755. package/dist/server/piWebStatusCache.js +3 -1
  756. package/dist/server/piWebStatusCache.js.map +1 -1
  757. package/dist/server/plugins/pluginBackendRegistry.js +229 -4
  758. package/dist/server/plugins/pluginBackendRegistry.js.map +1 -1
  759. package/dist/server/plugins/pluginBackendResourceProxyRoutes.js +40 -0
  760. package/dist/server/plugins/pluginBackendResourceProxyRoutes.js.map +1 -0
  761. package/dist/server/plugins/pluginBackendResourceResponse.js +84 -0
  762. package/dist/server/plugins/pluginBackendResourceResponse.js.map +1 -0
  763. package/dist/server/plugins/projectPluginSettings.js +9 -2
  764. package/dist/server/plugins/projectPluginSettings.js.map +1 -1
  765. package/dist/server/plugins/serverPluginCatalogCapability.js +7 -2
  766. package/dist/server/plugins/serverPluginCatalogCapability.js.map +1 -1
  767. package/dist/server/plugins/serverPluginPiSessionsCapability.js +16 -3
  768. package/dist/server/plugins/serverPluginPiSessionsCapability.js.map +1 -1
  769. package/dist/server/plugins/serverPluginRuntime.js +25 -9
  770. package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
  771. package/dist/server/plugins/serverPluginSessionLifecycleCapability.js +87 -0
  772. package/dist/server/plugins/serverPluginSessionLifecycleCapability.js.map +1 -0
  773. package/dist/server/requestLogging.js +1 -1
  774. package/dist/server/requestLogging.js.map +1 -1
  775. package/dist/server/sessiond/agentHttpDispatcher.js +14 -7
  776. package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -1
  777. package/dist/server/sessiond/autoInstallPiPackageSources.js +54 -0
  778. package/dist/server/sessiond/autoInstallPiPackageSources.js.map +1 -0
  779. package/dist/server/sessiond/autoInstallPiPackages.js +77 -30
  780. package/dist/server/sessiond/autoInstallPiPackages.js.map +1 -1
  781. package/dist/server/sessiond/pluginBackendChannelRoutes.js +3 -13
  782. package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -1
  783. package/dist/server/sessiond/pluginBackendResourceRoutes.js +62 -0
  784. package/dist/server/sessiond/pluginBackendResourceRoutes.js.map +1 -0
  785. package/dist/server/sessiond/pluginSessionLifecycleRoutes.js +45 -0
  786. package/dist/server/sessiond/pluginSessionLifecycleRoutes.js.map +1 -0
  787. package/dist/server/sessiond/sessionProxyRoutes.js +76 -12
  788. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  789. package/dist/server/sessiond/sessionServiceDependencies.js +3 -0
  790. package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
  791. package/dist/server/sessiond.js +47 -16
  792. package/dist/server/sessiond.js.map +1 -1
  793. package/dist/server/sessions/askUserDomain.js +24 -2
  794. package/dist/server/sessions/askUserDomain.js.map +1 -1
  795. package/dist/server/sessions/askUserTool.js +1 -1
  796. package/dist/server/sessions/askUserTool.js.map +1 -1
  797. package/dist/server/sessions/dockerEnvironmentFacts.js +10 -9
  798. package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -1
  799. package/dist/server/sessions/mcpOAuthCredentialAdapter.js +4 -4
  800. package/dist/server/sessions/mcpOAuthCredentialAdapter.js.map +1 -1
  801. package/dist/server/sessions/piSessionService.js +491 -283
  802. package/dist/server/sessions/piSessionService.js.map +1 -1
  803. package/dist/server/sessions/requestHumanInterventionTool.js +27 -0
  804. package/dist/server/sessions/requestHumanInterventionTool.js.map +1 -0
  805. package/dist/server/sessions/sendSessionMessageTool.js +32 -0
  806. package/dist/server/sessions/sendSessionMessageTool.js.map +1 -0
  807. package/dist/server/sessions/sessionActivityCoordinator.js.map +1 -1
  808. package/dist/server/sessions/sessionCleanup.js +18 -1
  809. package/dist/server/sessions/sessionCleanup.js.map +1 -1
  810. package/dist/server/sessions/sessionCommandService.js +58 -52
  811. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  812. package/dist/server/sessions/sessionContentSearch.js +103 -30
  813. package/dist/server/sessions/sessionContentSearch.js.map +1 -1
  814. package/dist/server/sessions/sessionIntervention.js +29 -0
  815. package/dist/server/sessions/sessionIntervention.js.map +1 -0
  816. package/dist/server/sessions/sessionNameGenerator.js +0 -60
  817. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  818. package/dist/server/sessions/sessionNotificationStore.js +2 -1
  819. package/dist/server/sessions/sessionNotificationStore.js.map +1 -1
  820. package/dist/server/sessions/sessionRoutes.js +25 -28
  821. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  822. package/dist/server/sessions/sessionSummaryScanner.js +8 -0
  823. package/dist/server/sessions/sessionSummaryScanner.js.map +1 -1
  824. package/dist/server/sessions/sessionTreeProjection.js +108 -97
  825. package/dist/server/sessions/sessionTreeProjection.js.map +1 -1
  826. package/dist/server/sessions/sessionUiEvents.js +2 -0
  827. package/dist/server/sessions/sessionUiEvents.js.map +1 -1
  828. package/dist/server/sessions/sessionUnreadStore.js +11 -1
  829. package/dist/server/sessions/sessionUnreadStore.js.map +1 -1
  830. package/dist/server/sessions/spawnSubsessionTool.js +66 -15
  831. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  832. package/dist/server/sessions/subsessionCompletionDelivery.js +6 -3
  833. package/dist/server/sessions/subsessionCompletionDelivery.js.map +1 -1
  834. package/dist/server/sessions/subsessionCompletionInbox.js +6 -9
  835. package/dist/server/sessions/subsessionCompletionInbox.js.map +1 -1
  836. package/dist/server/status/machineStatusService.js +15 -3
  837. package/dist/server/status/machineStatusService.js.map +1 -1
  838. package/dist/server/storage/navigationPreferenceStore.js +19 -2
  839. package/dist/server/storage/navigationPreferenceStore.js.map +1 -1
  840. package/dist/server/storage/sessionPinStore.js +101 -0
  841. package/dist/server/storage/sessionPinStore.js.map +1 -0
  842. package/dist/server/terminals/maintenanceExecutionContext.js +18 -0
  843. package/dist/server/terminals/maintenanceExecutionContext.js.map +1 -0
  844. package/dist/server/terminals/maintenanceTerminalCapability.js +25 -0
  845. package/dist/server/terminals/maintenanceTerminalCapability.js.map +1 -0
  846. package/dist/server/terminals/requiredTerminalService.js.map +1 -1
  847. package/dist/server/terminals/terminalStatusRoutes.js +22 -0
  848. package/dist/server/terminals/terminalStatusRoutes.js.map +1 -0
  849. package/dist/server/themeBootstrap.js +123 -0
  850. package/dist/server/themeBootstrap.js.map +1 -0
  851. package/dist/server/themeCatalog.js +206 -0
  852. package/dist/server/themeCatalog.js.map +1 -0
  853. package/dist/server/themeMetadata.js +74 -0
  854. package/dist/server/themeMetadata.js.map +1 -0
  855. package/dist/server/webSocketBridge.js +16 -12
  856. package/dist/server/webSocketBridge.js.map +1 -1
  857. package/dist/server/webSocketPayloadLimit.js +17 -0
  858. package/dist/server/webSocketPayloadLimit.js.map +1 -0
  859. package/dist/server/workspaces/effectivePathAccess.js +1 -1
  860. package/dist/server/workspaces/effectivePathAccess.js.map +1 -1
  861. package/dist/server/workspaces/projectPiWebConfig.js +30 -7
  862. package/dist/server/workspaces/projectPiWebConfig.js.map +1 -1
  863. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +2 -0
  864. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -1
  865. package/dist/server/workspaces/workspaceProviderRegistry.js +6 -2
  866. package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
  867. package/dist/server/workspaces/workspaceRemovalService.js +6 -4
  868. package/dist/server/workspaces/workspaceRemovalService.js.map +1 -1
  869. package/dist/server-plugin-api.d.ts +39 -1
  870. package/dist/server-plugin-api.js +18 -3
  871. package/dist/server-plugin-api.js.map +1 -1
  872. package/dist/sessiond/sessionDaemonClient.js +7 -1
  873. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  874. package/dist/sessiond/sessionDaemonTerminalStatus.js +27 -0
  875. package/dist/sessiond/sessionDaemonTerminalStatus.js.map +1 -0
  876. package/dist/shared/apiTypes.js +5 -0
  877. package/dist/shared/apiTypes.js.map +1 -1
  878. package/dist/shared/capabilities.js +9 -0
  879. package/dist/shared/capabilities.js.map +1 -1
  880. package/dist/shared/commandOutputPresentation.js +17 -0
  881. package/dist/shared/commandOutputPresentation.js.map +1 -0
  882. package/dist/shared/commandResultPresentation.js +51 -0
  883. package/dist/shared/commandResultPresentation.js.map +1 -0
  884. package/dist/shared/configResolution.js +99 -0
  885. package/dist/shared/configResolution.js.map +1 -0
  886. package/dist/shared/defaultLocalization.js +60 -0
  887. package/dist/shared/defaultLocalization.js.map +1 -0
  888. package/dist/shared/federatedRoutes.js +11 -4
  889. package/dist/shared/federatedRoutes.js.map +1 -1
  890. package/dist/shared/installationName.js +21 -0
  891. package/dist/shared/installationName.js.map +1 -0
  892. package/dist/shared/localization.d.ts +55 -0
  893. package/dist/shared/localization.js +4 -0
  894. package/dist/shared/machineStatus.js +2 -0
  895. package/dist/shared/machineStatus.js.map +1 -1
  896. package/dist/shared/piWebConfigParsing.js +16 -30
  897. package/dist/shared/piWebConfigParsing.js.map +1 -1
  898. package/dist/shared/piWebRuntime.js +17 -0
  899. package/dist/shared/piWebRuntime.js.map +1 -0
  900. package/dist/shared/piWebStatusParsing.js +5 -0
  901. package/dist/shared/piWebStatusParsing.js.map +1 -1
  902. package/dist/shared/pluginApiTypes.d.ts +35 -7
  903. package/dist/shared/pluginBackendProtocol.js +24 -0
  904. package/dist/shared/pluginBackendProtocol.js.map +1 -1
  905. package/dist/shared/pluginCatalogTypes.d.ts +8 -0
  906. package/dist/shared/pluginCatalogTypes.js +15 -0
  907. package/dist/shared/pluginCatalogTypes.js.map +1 -1
  908. package/dist/shared/pluginResourceMetadata.js +58 -0
  909. package/dist/shared/pluginResourceMetadata.js.map +1 -0
  910. package/dist/shared/pluginSessionLifecycleTypes.d.ts +24 -0
  911. package/dist/shared/pluginSessionLifecycleTypes.js +56 -0
  912. package/dist/shared/pluginSessionLifecycleTypes.js.map +1 -0
  913. package/dist/shared/serverNoticePresentation.d.ts +9 -0
  914. package/dist/shared/serverNoticePresentation.js +12 -0
  915. package/dist/shared/serverNoticePresentation.js.map +1 -0
  916. package/dist/shared/sessionActivityPresentation.js +73 -0
  917. package/dist/shared/sessionActivityPresentation.js.map +1 -0
  918. package/dist/shared/sessionNotificationPresentation.js +16 -0
  919. package/dist/shared/sessionNotificationPresentation.js.map +1 -0
  920. package/dist/shared/terminalCommandRun.js +4 -0
  921. package/dist/shared/terminalCommandRun.js.map +1 -1
  922. package/dist/shared/terminalServiceStatus.js +14 -0
  923. package/dist/shared/terminalServiceStatus.js.map +1 -0
  924. package/dist/shared/terminalTitlePresentation.d.ts +10 -0
  925. package/dist/shared/terminalTitlePresentation.js +13 -0
  926. package/dist/shared/terminalTitlePresentation.js.map +1 -0
  927. package/dist/shared/themeCatalog.js +2 -0
  928. package/dist/shared/themeCatalog.js.map +1 -0
  929. package/dist/shared/themePreference.js +1 -0
  930. package/dist/shared/themePreference.js.map +1 -1
  931. package/dist/shared/thinkingLevels.d.ts +29 -0
  932. package/dist/shared/thinkingLevels.js +6 -4
  933. package/dist/shared/thinkingLevels.js.map +1 -1
  934. package/dist/shared/versionCheckPolicy.js +10 -0
  935. package/dist/shared/versionCheckPolicy.js.map +1 -0
  936. package/dist/shared/workspaceRemovalPresentation.d.ts +8 -0
  937. package/dist/shared/workspaceRemovalPresentation.js +10 -0
  938. package/dist/shared/workspaceRemovalPresentation.js.map +1 -0
  939. package/docs/README.md +7 -3
  940. package/docs/assets/pi-web-desktop-graphite.png +0 -0
  941. package/docs/assets/pi-web-desktop-paper.png +0 -0
  942. package/docs/assets/pi-web-desktop-pi-web-dark.png +0 -0
  943. package/docs/assets/pi-web-desktop-pi-web-light.png +0 -0
  944. package/docs/assets/pi-web-desktop.png +0 -0
  945. package/docs/assets/pi-web-mobile-graphite.png +0 -0
  946. package/docs/assets/pi-web-mobile-paper.png +0 -0
  947. package/docs/assets/pi-web-mobile-pi-web-dark.png +0 -0
  948. package/docs/assets/pi-web-mobile-pi-web-light.png +0 -0
  949. package/docs/assets/pi-web-mobile-themes.gif +0 -0
  950. package/docs/assets/pi-web-mobile.png +0 -0
  951. package/docs/assets/pi-web-tablet-graphite.png +0 -0
  952. package/docs/assets/pi-web-tablet-paper.png +0 -0
  953. package/docs/assets/pi-web-tablet-pi-web-dark.png +0 -0
  954. package/docs/assets/pi-web-tablet-pi-web-light.png +0 -0
  955. package/docs/assets/pi-web-tablet-themes.gif +0 -0
  956. package/docs/assets/pi-web-tablet.png +0 -0
  957. package/docs/assets/pi-web-themes.gif +0 -0
  958. package/docs/config.md +193 -55
  959. package/docs/plugins.md +350 -21
  960. package/docs/scheduled-tasks.md +127 -0
  961. package/package.json +43 -19
  962. package/dist/client/assets/CommandPicker-8oDe6AaV.js +0 -70
  963. package/dist/client/assets/PiWebApp-TCQVYghs.js +0 -3761
  964. package/dist/client/assets/SettingsDialog-DFUpwUyp.js +0 -1015
  965. package/dist/client/assets/index-DzMPXVth.js +0 -2
  966. package/dist/client/assets/managementEmbed-Bx8Mwzdw.js +0 -2
  967. package/dist/client/assets/preload-helper-XpATwJ5c.js +0 -1
  968. package/dist/pi-packages/captains-log/README.md +0 -11
  969. package/dist/pi-packages/captains-log/dist/browser/channelProtocol.js +0 -29
  970. package/dist/pi-packages/captains-log/dist/browser/index.js +0 -143
  971. package/dist/pi-packages/captains-log/dist/browser/markdown.js +0 -68
  972. package/dist/pi-packages/captains-log/dist/browser/panel.js +0 -148
  973. package/dist/pi-packages/captains-log/dist/browser/protocol.js +0 -26
  974. package/dist/pi-packages/captains-log/dist/companion.js +0 -126
  975. package/dist/pi-packages/captains-log/dist/roundtrip.js +0 -62
  976. package/dist/pi-packages/captains-log/dist/server.js +0 -210
  977. package/dist/pi-packages/captains-log/dist/store.js +0 -75
  978. package/dist/pi-packages/captains-log/docs/usage.md +0 -29
  979. package/dist/pi-packages/captains-log/i18n.js +0 -7
  980. package/dist/pi-packages/captains-log/package.json +0 -35
  981. package/dist/pi-packages/captains-log/tsconfig.json +0 -21
  982. package/dist/pi-packages/captains-log/vite.config.mjs +0 -28
  983. package/dist/server/sessions/sessionPinStore.js +0 -109
  984. package/dist/server/sessions/sessionPinStore.js.map +0 -1
  985. package/examples/session-bridge-plugin/README.md +0 -20
  986. package/examples/session-bridge-plugin/docs/usage.md +0 -54
  987. package/examples/session-bridge-plugin/package.json +0 -26
  988. package/examples/session-bridge-plugin/src/browser/index.ts +0 -87
  989. package/examples/session-bridge-plugin/src/browser/protocol.ts +0 -24
  990. package/examples/session-bridge-plugin/src/companion.ts +0 -65
  991. package/examples/session-bridge-plugin/src/reviewRun.ts +0 -39
  992. package/examples/session-bridge-plugin/src/server.ts +0 -85
  993. package/examples/session-bridge-plugin/src/store.ts +0 -80
  994. package/examples/session-bridge-plugin/tsconfig.json +0 -21
  995. /package/dist/{client/assets/classic-CyM97Akm.css → pi-web-plugins/themes/assets/classic.css} +0 -0
  996. /package/dist/{client/assets/pi-web-dark-D_KtbM95.css → pi-web-plugins/themes/assets/pi-web-dark.css} +0 -0
  997. /package/dist/{client/assets/pi-web-light-DSNLMIBI.css → pi-web-plugins/themes/assets/pi-web-light.css} +0 -0
@@ -1,3 +1,23 @@
1
+ // src/shared/thinkingLevels.ts
2
+ /**
3
+ * Known levels in increasing intensity, derived from pi's `ThinkingLevel` union.
4
+ * The `satisfies` clause makes this fail to compile if pi removes or renames a
5
+ * level; thinkingLevels.test.ts adds a compile-time check for additions too. When
6
+ * either breaks, update this list and give the new level a label/description
7
+ * where thinking levels are presented.
8
+ */
9
+ var KNOWN_THINKING_LEVELS = [
10
+ "off",
11
+ "minimal",
12
+ "low",
13
+ "medium",
14
+ "high",
15
+ "xhigh",
16
+ "max"
17
+ ];
18
+ function isKnownThinkingLevel(value) {
19
+ return KNOWN_THINKING_LEVELS.some((level) => level === value);
20
+ }
1
21
  // src/shared/pluginCatalogTypes.ts
2
22
  var PI_WEB_HOST_CATALOG_CAPABILITY = Object.freeze({
3
23
  pluginId: "pi-web.host",
@@ -7,7 +27,7 @@ var PI_WEB_HOST_CATALOG_CAPABILITY = Object.freeze({
7
27
  });
8
28
  function snapshotCatalog(value) {
9
29
  const catalog = record(value);
10
- if (catalog["version"] !== 1) throw invalid();
30
+ if (catalog["version"] !== 1) throw invalid$1();
11
31
  const projects = methods(catalog["projects"]);
12
32
  const workspaces = methods(catalog["workspaces"]);
13
33
  const sessions = methods(catalog["sessions"]);
@@ -18,7 +38,7 @@ function snapshotCatalog(value) {
18
38
  get: async (projectId, options) => {
19
39
  const id = text(projectId);
20
40
  const result = snapshotProject(await projects.get(id, options));
21
- if (result.id !== id) throw invalid();
41
+ if (result.id !== id) throw invalid$1();
22
42
  return result;
23
43
  }
24
44
  }),
@@ -28,18 +48,18 @@ function snapshotCatalog(value) {
28
48
  return array(await workspaces.list(id, options), (row) => workspaceFor(row, id));
29
49
  },
30
50
  get: async (selection, options) => {
31
- const requested = snapshotSelection(selection);
51
+ const requested = snapshotSelection$1(selection);
32
52
  const result = workspaceFor(await workspaces.get(requested, options), requested.projectId);
33
- if (result.id !== requested.workspaceId) throw invalid();
53
+ if (result.id !== requested.workspaceId) throw invalid$1();
34
54
  return result;
35
55
  }
36
56
  }),
37
57
  sessions: Object.freeze({
38
- list: async (selection, options) => array(await sessions.list(snapshotSelection(selection), options), snapshotSession),
58
+ list: async (selection, options) => array(await sessions.list(snapshotSelection$1(selection), options), snapshotSession),
39
59
  get: async (selection, options) => {
40
- const requested = snapshotSelection(selection, true);
60
+ const requested = snapshotSelection$1(selection, true);
41
61
  const result = snapshotSession(await sessions.get(requested, options));
42
- if (result.id !== requested.sessionId) throw invalid();
62
+ if (result.id !== requested.sessionId) throw invalid$1();
43
63
  return result;
44
64
  }
45
65
  })
@@ -49,7 +69,7 @@ function methods(value) {
49
69
  const owner = record(value);
50
70
  const list = owner["list"];
51
71
  const get = owner["get"];
52
- if (typeof list !== "function" || typeof get !== "function") throw invalid();
72
+ if (typeof list !== "function" || typeof get !== "function") throw invalid$1();
53
73
  return {
54
74
  list: (...args) => Promise.resolve(Reflect.apply(list, owner, args)),
55
75
  get: (...args) => Promise.resolve(Reflect.apply(get, owner, args))
@@ -65,12 +85,12 @@ function snapshotProject(value) {
65
85
  }
66
86
  function workspaceFor(value, projectId) {
67
87
  const row = record(value);
68
- if (row["projectId"] !== projectId || typeof row["isMain"] !== "boolean") throw invalid();
88
+ if (row["projectId"] !== projectId || typeof row["isMain"] !== "boolean") throw invalid$1();
69
89
  let provider;
70
90
  if (row["provider"] !== void 0) {
71
91
  const source = record(row["provider"]);
72
92
  const capabilities = record(source["capabilities"]);
73
- if (typeof capabilities["remove"] !== "boolean") throw invalid();
93
+ if (typeof capabilities["remove"] !== "boolean") throw invalid$1();
74
94
  provider = Object.freeze({
75
95
  pluginId: text(source["pluginId"]),
76
96
  capabilities: Object.freeze({ remove: capabilities["remove"] }),
@@ -94,27 +114,41 @@ function workspaceFor(value, projectId) {
94
114
  function snapshotSession(value) {
95
115
  const row = record(value);
96
116
  const runtime = row["runtime"];
97
- if (typeof row["archived"] !== "boolean" || runtime !== "not-hosted" && runtime !== "idle" && runtime !== "busy") throw invalid();
117
+ if (typeof row["archived"] !== "boolean" || runtime !== "not-hosted" && runtime !== "idle" && runtime !== "busy") throw invalid$1();
98
118
  let metadata;
99
119
  if (row["metadata"] !== void 0) metadata = Object.freeze(Object.fromEntries(Object.entries(record(row["metadata"])).map(([key, data]) => [key, jsonObject(data)])));
100
- if (row["name"] !== void 0 && typeof row["name"] !== "string") throw invalid();
120
+ if (row["name"] !== void 0 && typeof row["name"] !== "string") throw invalid$1();
121
+ if (typeof row["pinned"] !== "boolean") throw invalid$1();
122
+ const created = nullableTimestamp(row["created"]);
123
+ const modified = nullableTimestamp(row["modified"]);
124
+ const archivedAt = nullableTimestamp(row["archivedAt"]);
125
+ if (archivedAt !== null && !row["archived"]) throw invalid$1();
101
126
  return Object.freeze({
102
127
  id: text(row["id"]),
103
128
  cwd: text(row["cwd"]),
104
129
  archived: row["archived"],
105
130
  runtime,
131
+ created,
132
+ modified,
133
+ archivedAt,
134
+ pinned: row["pinned"],
106
135
  ...row["name"] === void 0 ? {} : { name: row["name"] },
107
136
  ...metadata === void 0 ? {} : { metadata }
108
137
  });
109
138
  }
110
- function snapshotSelection(value, session = false) {
139
+ function nullableTimestamp(value) {
140
+ if (value === null) return null;
141
+ if (typeof value !== "string" || !Number.isFinite(Date.parse(value))) throw invalid$1();
142
+ return value;
143
+ }
144
+ function snapshotSelection$1(value, session = false) {
111
145
  const row = record(value);
112
146
  const keys = session ? [
113
147
  "projectId",
114
148
  "workspaceId",
115
149
  "sessionId"
116
150
  ] : ["projectId", "workspaceId"];
117
- if (Reflect.ownKeys(row).some((key) => typeof key !== "string" || !keys.includes(key))) throw invalid();
151
+ if (Reflect.ownKeys(row).some((key) => typeof key !== "string" || !keys.includes(key))) throw invalid$1();
118
152
  return Object.freeze({
119
153
  projectId: text(row["projectId"]),
120
154
  workspaceId: text(row["workspaceId"]),
@@ -122,11 +156,11 @@ function snapshotSelection(value, session = false) {
122
156
  });
123
157
  }
124
158
  function array(value, snapshot) {
125
- if (!Array.isArray(value)) throw invalid();
159
+ if (!Array.isArray(value)) throw invalid$1();
126
160
  return Object.freeze(value.map(snapshot));
127
161
  }
128
162
  function record(value) {
129
- if (!isRecord(value)) throw invalid();
163
+ if (!isRecord(value)) throw invalid$1();
130
164
  return value;
131
165
  }
132
166
  function isRecord(value) {
@@ -135,12 +169,12 @@ function isRecord(value) {
135
169
  return prototype === Object.prototype || prototype === null;
136
170
  }
137
171
  function text(value) {
138
- if (typeof value !== "string" || value.trim() === "") throw invalid();
172
+ if (typeof value !== "string" || value.trim() === "") throw invalid$1();
139
173
  return value;
140
174
  }
141
175
  function jsonObject(value, ancestors = /* @__PURE__ */ new Set()) {
142
176
  const source = record(value);
143
- if (ancestors.has(source)) throw invalid();
177
+ if (ancestors.has(source)) throw invalid$1();
144
178
  ancestors.add(source);
145
179
  const result = Object.freeze(Object.fromEntries(Object.entries(source).map(([key, data]) => [key, json(data, ancestors)])));
146
180
  ancestors.delete(source);
@@ -149,7 +183,7 @@ function jsonObject(value, ancestors = /* @__PURE__ */ new Set()) {
149
183
  function json(value, ancestors) {
150
184
  if (value === null || typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value)) return value;
151
185
  if (Array.isArray(value)) {
152
- if (ancestors.has(value)) throw invalid();
186
+ if (ancestors.has(value)) throw invalid$1();
153
187
  ancestors.add(value);
154
188
  const result = Object.freeze(value.map((item) => json(item, ancestors)));
155
189
  ancestors.delete(value);
@@ -157,9 +191,74 @@ function json(value, ancestors) {
157
191
  }
158
192
  return jsonObject(value, ancestors);
159
193
  }
160
- function invalid() {
194
+ function invalid$1() {
161
195
  return /* @__PURE__ */ new Error("Invalid PI WEB host catalog capability v1 data");
162
196
  }
197
+ Object.freeze({
198
+ pluginId: "pi-web.host",
199
+ id: "session-lifecycle",
200
+ version: 1,
201
+ parse: snapshotLifecycle
202
+ });
203
+ function snapshotLifecycle(value) {
204
+ if (typeof value !== "object" || value === null || !("version" in value) || value.version !== 1) throw invalid();
205
+ const owner = value;
206
+ const method = (name) => {
207
+ const fn = Reflect.get(owner, name);
208
+ if (typeof fn !== "function") throw invalid();
209
+ return async (selection, options) => {
210
+ const result = Reflect.apply(fn, owner, [snapshotSelection(selection), options]);
211
+ return await Promise.resolve(result);
212
+ };
213
+ };
214
+ const get = method("get");
215
+ const mutation = (name) => {
216
+ const invoke = method(name);
217
+ return async (selection, options) => {
218
+ await invoke(selection, options);
219
+ };
220
+ };
221
+ return Object.freeze({
222
+ version: 1,
223
+ get: async (selection, options) => {
224
+ const requested = snapshotSelection(selection);
225
+ const result = await get(requested, options);
226
+ if (typeof result !== "object" || result === null || !("sessionId" in result) || result.sessionId !== requested.sessionId || !("pinned" in result) || typeof result.pinned !== "boolean" || !("archived" in result) || typeof result.archived !== "boolean") throw invalid();
227
+ return Object.freeze({
228
+ sessionId: requested.sessionId,
229
+ pinned: result.pinned,
230
+ archived: result.archived
231
+ });
232
+ },
233
+ pin: mutation("pin"),
234
+ unpin: mutation("unpin"),
235
+ archive: mutation("archive"),
236
+ restore: mutation("restore"),
237
+ delete: mutation("delete")
238
+ });
239
+ }
240
+ function snapshotSelection(value) {
241
+ if (typeof value !== "object" || value === null || Array.isArray(value)) throw invalid();
242
+ const keys = [
243
+ "projectId",
244
+ "workspaceId",
245
+ "sessionId"
246
+ ];
247
+ if (Reflect.ownKeys(value).some((key) => typeof key !== "string" || !keys.some((allowed) => key === allowed))) throw invalid();
248
+ const text = (key) => {
249
+ const field = Reflect.get(value, key);
250
+ if (typeof field !== "string" || field.trim() === "" || field.length > 512) throw invalid();
251
+ return field;
252
+ };
253
+ return Object.freeze({
254
+ projectId: text("projectId"),
255
+ workspaceId: text("workspaceId"),
256
+ sessionId: text("sessionId")
257
+ });
258
+ }
259
+ function invalid() {
260
+ return /* @__PURE__ */ new Error("Invalid PI WEB host session lifecycle capability v1 data");
261
+ }
163
262
  Object.freeze({
164
263
  pluginId: "pi-web.host",
165
264
  id: "workspaces",
@@ -260,17 +359,21 @@ function snapshotPiWebHostPiSessionRunInput(value) {
260
359
  const supportedKeys = /* @__PURE__ */ new Set([
261
360
  "projectId",
262
361
  "workspaceId",
263
- "prompt"
362
+ "prompt",
363
+ "model",
364
+ "thinkingLevel"
264
365
  ]);
265
366
  for (const key of Reflect.ownKeys(value)) if (typeof key !== "string" || !supportedKeys.has(key)) throw new Error(`Unsupported PI WEB host PI sessions capability v1 run input field: ${String(key)}`);
266
367
  if (!Object.hasOwn(value, "projectId") || !Object.hasOwn(value, "workspaceId") || !Object.hasOwn(value, "prompt")) throw new Error("PI WEB host PI sessions capability v1 run input must contain projectId, workspaceId, and prompt");
267
368
  const projectId = requiredBoundedPiSessionString(Reflect.get(value, "projectId"), "projectId", 512);
268
369
  const workspaceId = requiredBoundedPiSessionString(Reflect.get(value, "workspaceId"), "workspaceId", 512);
269
370
  const prompt = requiredBoundedPiSessionUtf8String(Reflect.get(value, "prompt"), "prompt", 65536);
371
+ const settings = snapshotPiSessionSettings(value);
270
372
  return Object.freeze({
271
373
  projectId,
272
374
  workspaceId,
273
- prompt
375
+ prompt,
376
+ ...settings
274
377
  });
275
378
  }
276
379
  function snapshotPiWebHostPiSessionRun(value) {
@@ -281,9 +384,20 @@ function snapshotPiWebHostPiSessionRun(value) {
281
384
  const completion = Promise.resolve(completionValue).then(snapshotPiWebHostPiSessionRunCompletion);
282
385
  return Object.freeze({
283
386
  sessionId,
284
- completion
387
+ completion,
388
+ ...snapshotPiSessionSettings(value)
285
389
  });
286
390
  }
391
+ function snapshotPiSessionSettings(value) {
392
+ const modelValue = Reflect.get(value, "model");
393
+ const thinkingValue = Reflect.get(value, "thinkingLevel");
394
+ const model = modelValue === void 0 ? void 0 : requiredBoundedPiSessionString(modelValue, "model", 512);
395
+ if (thinkingValue !== void 0 && (typeof thinkingValue !== "string" || !isKnownThinkingLevel(thinkingValue))) throw new Error("Invalid PI WEB host PI sessions thinkingLevel");
396
+ return {
397
+ ...model === void 0 ? {} : { model },
398
+ ...thinkingValue === void 0 ? {} : { thinkingLevel: thinkingValue }
399
+ };
400
+ }
287
401
  function snapshotPiWebHostPiSessionRunCompletion(value) {
288
402
  if (!isPublicJsonObject(value)) throw new Error("PI WEB host PI sessions capability v1 completion must be an object");
289
403
  const status = Reflect.get(value, "status");
@@ -0,0 +1,61 @@
1
+ // Generated from pi-web-plugins/audio/audioElement.ts. Do not edit directly.
2
+ /** Native media owns decoding and accessible playback controls, never autoplay. */
3
+ export class AudioPreviewElement extends HTMLElement {
4
+ #model;
5
+ #cleanup;
6
+ set model(value) {
7
+ if (this.#model === value)
8
+ return;
9
+ this.#cleanup?.();
10
+ this.#model = value;
11
+ if (this.isConnected)
12
+ this.#mount();
13
+ }
14
+ connectedCallback() {
15
+ Object.assign(this.style, {
16
+ display: "flex", flex: "1 1 auto", minHeight: "0", minWidth: "0",
17
+ alignItems: "center", justifyContent: "center", boxSizing: "border-box", padding: "24px",
18
+ });
19
+ this.#mount();
20
+ }
21
+ disconnectedCallback() { this.#cleanup?.(); }
22
+ #mount() {
23
+ this.#cleanup?.();
24
+ const model = this.#model;
25
+ if (model === undefined || model.signal.aborted)
26
+ return;
27
+ const audio = document.createElement("audio");
28
+ audio.controls = true;
29
+ audio.autoplay = false;
30
+ audio.preload = "metadata";
31
+ audio.setAttribute("aria-label", model.label);
32
+ audio.style.maxWidth = "100%";
33
+ let active = true;
34
+ const onError = () => {
35
+ // MEDIA_ERR_ABORTED is deliberate cancellation, not a codec/network failure.
36
+ if (active && !model.signal.aborted && audio.error?.code !== 1)
37
+ model.fail(new Error(model.errorMessage));
38
+ };
39
+ const cleanup = () => {
40
+ if (!active)
41
+ return;
42
+ active = false;
43
+ model.signal.removeEventListener("abort", cleanup);
44
+ audio.removeEventListener("error", onError);
45
+ audio.pause();
46
+ audio.removeAttribute("src");
47
+ audio.load();
48
+ audio.remove();
49
+ this.#cleanup = undefined;
50
+ };
51
+ this.#cleanup = cleanup;
52
+ audio.addEventListener("error", onError);
53
+ model.signal.addEventListener("abort", cleanup, { once: true });
54
+ audio.src = model.url;
55
+ this.replaceChildren(audio);
56
+ }
57
+ }
58
+ export function registerAudioPreviewElement() {
59
+ if (customElements.get("pi-web-audio-preview") === undefined)
60
+ customElements.define("pi-web-audio-preview", AudioPreviewElement);
61
+ }
@@ -0,0 +1,18 @@
1
+ // Generated from pi-web-plugins/audio/audioFormats.ts. Do not edit directly.
2
+ export const audioMimeTypes = {
3
+ mp3: "audio/mpeg",
4
+ wav: "audio/wav",
5
+ ogg: "audio/ogg",
6
+ m4a: "audio/mp4",
7
+ aac: "audio/aac",
8
+ flac: "audio/flac",
9
+ opus: "audio/ogg",
10
+ };
11
+ export function audioContentType(path) {
12
+ const name = path.split(/[\\/]/).at(-1) ?? "";
13
+ const dot = name.lastIndexOf(".");
14
+ const extension = dot < 0 ? undefined : name.slice(dot + 1).toLowerCase();
15
+ return extension !== undefined && Object.hasOwn(audioMimeTypes, extension)
16
+ ? audioMimeTypes[extension]
17
+ : undefined;
18
+ }
@@ -0,0 +1,21 @@
1
+ // Generated from pi-web-plugins/audio/byteRange.ts. Do not edit directly.
2
+ /** Invalid, multipart and unsatisfiable ranges all produce a bounded 416 response. */
3
+ export function parseByteRange(header, size) {
4
+ if (!Number.isSafeInteger(size) || size <= 0)
5
+ return undefined;
6
+ const match = /^bytes=(\d*)-(\d*)$/.exec(header);
7
+ if (match?.[0] !== header || (match[1] === "" && match[2] === ""))
8
+ return undefined;
9
+ const first = match[1] === "" ? undefined : Number(match[1]);
10
+ const last = match[2] === "" ? undefined : Number(match[2]);
11
+ if ((first !== undefined && !Number.isSafeInteger(first)) || (last !== undefined && !Number.isSafeInteger(last)))
12
+ return undefined;
13
+ if (first === undefined) {
14
+ if (last === undefined || last === 0)
15
+ return undefined;
16
+ return { start: Math.max(0, size - last), end: size - 1 };
17
+ }
18
+ if (first >= size || (last !== undefined && last < first))
19
+ return undefined;
20
+ return { start: first, end: Math.min(last ?? size - 1, size - 1) };
21
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "@pi-web/audio-plugin",
3
+ "private": true,
4
+ "type": "module",
5
+ "piWeb": {
6
+ "plugins": [
7
+ { "id": "pi-web.audio", "browserRoot": ".", "module": "pi-web-plugin.js", "serverModule": "server.js", "machineSpecific": true }
8
+ ]
9
+ }
10
+ }
@@ -0,0 +1,39 @@
1
+ // Generated from pi-web-plugins/audio/pi-web-plugin.ts. Do not edit directly.
2
+ import { audioMimeTypes } from "./audioFormats.js";
3
+ import { registerAudioPreviewElement } from "./audioElement.js";
4
+ const plugin = {
5
+ apiVersion: 5,
6
+ name: "Audio",
7
+ activate: ({ html, localization }) => {
8
+ if (localization === undefined)
9
+ throw new Error("Audio requires localization support");
10
+ const messages = localization.registerMessages("preview", {
11
+ audio: localization.message("Audio", "Audio file preview title and player accessible name"),
12
+ failed: localization.message("Audio could not play. Download the file or open it externally.", "Audio decoding or network failure with fallback actions in the Files toolbar"),
13
+ });
14
+ registerAudioPreviewElement();
15
+ return { contributions: { filePreviewers: [{
16
+ id: "audio",
17
+ get title() { return messages.t("audio"); },
18
+ fileExtensions: Object.keys(audioMimeTypes),
19
+ renderMode: "automatic",
20
+ render: ({ backend, projectId, workspaceId, file, signal, fail }) => {
21
+ try {
22
+ const peer = backend?.forScope({ kind: "workspace", projectId, workspaceId });
23
+ if (peer?.resourceUrl === undefined)
24
+ throw new Error(messages.t("failed"));
25
+ const model = {
26
+ url: peer.resourceUrl("audio.read", { path: file.path }),
27
+ signal, fail, label: messages.t("audio"), errorMessage: messages.t("failed"),
28
+ };
29
+ return html `<pi-web-audio-preview .model=${model}></pi-web-audio-preview>`;
30
+ }
31
+ catch {
32
+ fail(new Error(messages.t("failed")));
33
+ return html `<p role="alert">${messages.t("failed")}</p>`;
34
+ }
35
+ },
36
+ }] } };
37
+ },
38
+ };
39
+ export default plugin;
@@ -0,0 +1,71 @@
1
+ // Generated from pi-web-plugins/audio/server.ts. Do not edit directly.
2
+ import { constants } from "node:fs";
3
+ import { open, realpath } from "node:fs/promises";
4
+ import { isAbsolute, relative, resolve, sep } from "node:path";
5
+ import { audioContentType } from "./audioFormats.js";
6
+ import { parseByteRange } from "./byteRange.js";
7
+ function within(root, path) {
8
+ const child = relative(root, path);
9
+ return child !== ".." && !child.startsWith(`..${sep}`) && !isAbsolute(child);
10
+ }
11
+ /** Reads only the host-resolved workspace; browser selectors never supply authority. */
12
+ export async function readAudioResource(context) {
13
+ const { scope, operation, input, signal, range } = context;
14
+ signal.throwIfAborted();
15
+ if (operation !== "audio.read" || scope.kind !== "workspace")
16
+ throw new Error("Audio requires a workspace resource");
17
+ if (typeof input !== "object" || input === null || Array.isArray(input)
18
+ || Object.keys(input).length !== 1 || !("path" in input)
19
+ || typeof input["path"] !== "string")
20
+ throw new Error("Invalid audio path");
21
+ const inputPath = input["path"];
22
+ if (inputPath.length === 0 || inputPath.length > 4096 || inputPath.includes("\0")
23
+ || inputPath.split(/[\\/]/).includes(".."))
24
+ throw new Error("Invalid audio path");
25
+ const contentType = audioContentType(inputPath);
26
+ if (contentType === undefined)
27
+ throw new Error("Unsupported audio file");
28
+ const root = await realpath(scope.workspace.path);
29
+ const path = await realpath(resolve(root, inputPath));
30
+ if (!within(root, path))
31
+ throw new Error("Audio path is outside the workspace");
32
+ signal.throwIfAborted();
33
+ // O_NONBLOCK prevents a FIFO named *.mp3 from hanging before fstat rejects it.
34
+ // O_NOFOLLOW prevents swapping the validated final component for a symlink.
35
+ const handle = await open(path, constants.O_RDONLY | constants.O_NONBLOCK | constants.O_NOFOLLOW);
36
+ let transferred = false;
37
+ try {
38
+ signal.throwIfAborted();
39
+ const stat = await handle.stat();
40
+ signal.throwIfAborted();
41
+ if (!stat.isFile() || !Number.isSafeInteger(stat.size))
42
+ throw new Error("Audio must be a regular file with a supported size");
43
+ const selected = range === undefined ? { start: 0, end: stat.size - 1 } : parseByteRange(range, stat.size);
44
+ if (selected === undefined)
45
+ return { body: new Uint8Array(), contentType, statusCode: 416, contentLength: 0, contentRange: `bytes */${String(stat.size)}`, acceptRanges: "bytes" };
46
+ const contentLength = selected.end - selected.start + 1;
47
+ const metadata = {
48
+ contentType, contentLength, acceptRanges: "bytes",
49
+ statusCode: range === undefined ? 200 : 206,
50
+ ...(range === undefined ? {} : { contentRange: `bytes ${String(selected.start)}-${String(selected.end)}/${String(stat.size)}` }),
51
+ };
52
+ signal.throwIfAborted();
53
+ if (contentLength === 0)
54
+ return { ...metadata, body: new Uint8Array() };
55
+ const stream = handle.createReadStream({ start: selected.start, end: selected.end, autoClose: true, signal });
56
+ // Cancellation may precede transport consumption; always observe stream errors.
57
+ stream.on("error", () => { });
58
+ transferred = true;
59
+ return { ...metadata, body: stream };
60
+ }
61
+ finally {
62
+ if (!transferred)
63
+ await handle.close();
64
+ }
65
+ }
66
+ const plugin = {
67
+ apiVersion: 5,
68
+ name: "Audio",
69
+ activate: () => ({ peer: { resource: readAudioResource } }),
70
+ };
71
+ export default plugin;
@@ -15,8 +15,8 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(
15
15
  .hljs-meta, .hljs-deletion { color: var(--pi-syntax-deletion, var(--pi-error, var(--pi-danger, #e07b7b))); }
16
16
  .hljs-emphasis { font-style: italic; }
17
17
  .hljs-strong { font-weight: bold; }
18
- `}};mt([st({attribute:!1})],ht.prototype,`stylesheetIntegration`,null),mt([st({attribute:!1})],ht.prototype,`markup`,void 0);var gt=class extends rt{constructor(...e){super(...e),this.tokens=[]}get stylesheetIntegration(){return this.integration}set stylesheetIntegration(e){e!==this.integration&&(this.releaseStyles?.(),this.releaseStyles=void 0,this.integration=e,this.isConnected&&this.renderRoot instanceof ShadowRoot&&(this.releaseStyles=e?.registerRoot(this.renderRoot)))}connectedCallback(){super.connectedCallback(),this.renderRoot instanceof ShadowRoot&&(this.releaseStyles??=this.integration?.registerRoot(this.renderRoot)),this.requestUpdate(`input`)}disconnectedCallback(){this.controller?.abort(),this.releaseStyles?.(),this.releaseStyles=void 0,super.disconnectedCallback()}willUpdate(e){if(!e.has(`input`)&&!e.has(`highlight`))return;this.controller?.abort(),this.tokens=[];let t=this.input,n=this.highlight;if(!this.isConnected||t===void 0||n===void 0)return;let r=new AbortController;this.controller=r;let i=AbortSignal.any([t.signal,r.signal]);Promise.resolve().then(()=>(i.throwIfAborted(),n(t.text,i))).then(e=>{if(!i.aborted){if(e===void 0)throw Error(`Syntax highlighter is no longer available`);this.tokens=e}}).catch(e=>{i.aborted||t.fail(e)})}render(){let e=this.input?.text??``,t=0;return Ve`<pre><code>${this.tokens.map(({from:n,to:r,kind:i})=>{let a=e.slice(t,n);return t=r,Ve`${a}<span class=${`hljs-${i===`function`||i===`property`?`title`:i===`operator`?`keyword`:i}`}>${e.slice(n,r)}</span>`})}${e.slice(t)}</code></pre>`}static{this.styles=ht.styles}};mt([st({attribute:!1})],gt.prototype,`stylesheetIntegration`,null),mt([st({attribute:!1})],gt.prototype,`input`,void 0),mt([st({attribute:!1})],gt.prototype,`highlight`,void 0),mt([ct()],gt.prototype,`tokens`,void 0);var _t={pluginId:`pi-web`,id:`stylesheet-integration`,version:1,parse(e){if(!vt(e))throw Error(`Stylesheet integration capability v1 requires registerRoot and createController`);return e}};function vt(e){return typeof e==`object`&&!!e&&`registerRoot`in e&&typeof e.registerRoot==`function`&&`createController`in e&&typeof e.createController==`function`&&`subscribe`in e&&typeof e.subscribe==`function`}var yt={pluginId:`pi-web`,id:`syntax-highlighting`,version:1,parse(e){if(!bt(e))throw Error(`Code highlighting requires syntax highlighting capability v1`);return e}};function bt(e){return typeof e==`object`&&!!e&&`supports`in e&&typeof e.supports==`function`&&`highlight`in e&&typeof e.highlight==`function`}function xt(e){let t=e.language?.trim().split(/\s/u)[0]?.toLowerCase();if(t!==void 0&&V.getLanguage(t)!==void 0)return t;let n=e.filePath?.split(/[\\/]/u).at(-1),r=n?.includes(`.`)===!0?n.split(`.`).at(-1)?.toLowerCase():void 0;return r!==void 0&&V.getLanguage(r)!==void 0?r:void 0}var St={apiVersion:5,name:`Code highlighting`,requires:[_t,yt,{pluginId:`pi-web`,id:`content-rendering`,version:1,parse:()=>void 0}],activate:({html:e,translate:t})=>{customElements.get(`pi-web-highlighted-code`)===void 0&&customElements.define(`pi-web-highlighted-code`,ht),customElements.get(`pi-web-token-highlighted-code`)===void 0&&customElements.define(`pi-web-token-highlighted-code`,gt);let n,r;return{start:({capabilities:e})=>{n=e.resolve(_t),r=e.resolve(yt)},contributions:{contentRenderers:[{id:`highlighted`,title:t?.(`ui.codeHighlight.highlighted`,`Highlighted`)??`Highlighted`,renderMode:`automatic`,supports:e=>r?.supports(e)===!0||xt(e)!==void 0,render:t=>{let i={machineId:t.machineId??`local`,...t.language===void 0?{}:{language:t.language},...t.filePath===void 0?{}:{filePath:t.filePath}},a=r;if(a?.supports(i)===!0)return e`<pi-web-token-highlighted-code .stylesheetIntegration=${n} .input=${t}
19
- .highlight=${(e,t)=>a.highlight({...i,text:e,signal:t})}
20
- ></pi-web-token-highlighted-code>`;let o=xt(i);if(o===void 0)throw Error(`No syntax highlighter supports this source`);return e`<pi-web-highlighted-code .stylesheetIntegration=${n}
18
+ `}};mt([st({attribute:!1})],ht.prototype,`stylesheetIntegration`,null),mt([st({attribute:!1})],ht.prototype,`markup`,void 0);var gt=class extends rt{constructor(...e){super(...e),this.tokens=[]}get stylesheetIntegration(){return this.integration}set stylesheetIntegration(e){e!==this.integration&&(this.releaseStyles?.(),this.releaseStyles=void 0,this.integration=e,this.isConnected&&this.renderRoot instanceof ShadowRoot&&(this.releaseStyles=e?.registerRoot(this.renderRoot)))}connectedCallback(){super.connectedCallback(),this.renderRoot instanceof ShadowRoot&&(this.releaseStyles??=this.integration?.registerRoot(this.renderRoot)),this.requestUpdate(`input`)}disconnectedCallback(){this.controller?.abort(),this.releaseStyles?.(),this.releaseStyles=void 0,super.disconnectedCallback()}willUpdate(e){if(!e.has(`input`)&&!e.has(`highlight`))return;this.controller?.abort(),this.tokens=[];let t=this.input,n=this.highlight;if(!this.isConnected||t===void 0||n===void 0)return;let r=new AbortController;this.controller=r;let i=AbortSignal.any([t.signal,r.signal]);Promise.resolve().then(()=>(i.throwIfAborted(),n(t.text,i))).then(e=>{if(!i.aborted){if(e===void 0)throw Error(`Syntax highlighter is no longer available`);this.tokens=e}}).catch(e=>{i.aborted||t.fail(e)})}render(){let e=this.input?.text??``,t=0;return Ve`<pre><code>${this.tokens.map(({from:n,to:r,kind:i})=>{let a=e.slice(t,n);return t=r,Ve`${a}<span class=${`hljs-${i===`function`||i===`property`?`title`:i===`operator`?`keyword`:i}`}>${e.slice(n,r)}</span>`})}${e.slice(t)}</code></pre>`}static{this.styles=ht.styles}};mt([st({attribute:!1})],gt.prototype,`stylesheetIntegration`,null),mt([st({attribute:!1})],gt.prototype,`input`,void 0),mt([st({attribute:!1})],gt.prototype,`highlight`,void 0),mt([ct()],gt.prototype,`tokens`,void 0);var _t={highlighted:{message:`Highlighted`,description:`Renderer view button for syntax-highlighted source code`}},vt={pluginId:`pi-web`,id:`stylesheet-integration`,version:1,parse(e){if(!yt(e))throw Error(`Stylesheet integration capability v1 requires registerRoot and createController`);return e}};function yt(e){return typeof e==`object`&&!!e&&`registerRoot`in e&&typeof e.registerRoot==`function`&&`createController`in e&&typeof e.createController==`function`&&`subscribe`in e&&typeof e.subscribe==`function`}var bt={pluginId:`pi-web`,id:`syntax-highlighting`,version:1,parse(e){if(!xt(e))throw Error(`Code highlighting requires syntax highlighting capability v1`);return e}};function xt(e){return typeof e==`object`&&!!e&&`supports`in e&&typeof e.supports==`function`&&`highlight`in e&&typeof e.highlight==`function`}function St(e){let t=e.language?.trim().split(/\s/u)[0]?.toLowerCase(),n=e.filePath?.split(/[\\/]/u).at(-1),r=n?.includes(`.`)===!0?n.split(`.`).at(-1)?.toLowerCase():void 0,i=t!==void 0&&V.getLanguage(t)!==void 0?t:r,a=i===void 0?void 0:V.getLanguage(i);return a!==void 0&&a!==V.getLanguage(`plaintext`)?i:void 0}var Ct={apiVersion:5,name:`Code highlighting`,requires:[vt,bt,{pluginId:`pi-web`,id:`content-rendering`,version:1,parse:()=>void 0}],activate:({html:e,localization:t})=>{if(t===void 0)throw Error(`The Code highlighting plugin requires a localization-capable PI WEB host`);let n=t.registerMessages(`renderer`,_t);customElements.get(`pi-web-highlighted-code`)===void 0&&customElements.define(`pi-web-highlighted-code`,ht),customElements.get(`pi-web-token-highlighted-code`)===void 0&&customElements.define(`pi-web-token-highlighted-code`,gt);let r,i;return{start:({capabilities:e})=>{r=e.resolve(vt),i=e.resolve(bt)},contributions:{contentRenderers:[{id:`highlighted`,get title(){return n.t(`highlighted`)},renderMode:`automatic`,supports:e=>i?.supports(e)===!0||St(e)!==void 0,render:t=>{let n={machineId:t.machineId??`local`,...t.language===void 0?{}:{language:t.language},...t.filePath===void 0?{}:{filePath:t.filePath}},a=i;if(a?.supports(n)===!0)return e`<pi-web-token-highlighted-code .stylesheetIntegration=${r} .input=${t}
19
+ .highlight=${(e,t)=>a.highlight({...n,text:e,signal:t})}
20
+ ></pi-web-token-highlighted-code>`;let o=St(n);if(o===void 0)throw Error(`No syntax highlighter supports this source`);return e`<pi-web-highlighted-code .stylesheetIntegration=${r}
21
21
  .markup=${V.highlight(t.text,{language:o,ignoreIllegals:!0}).value}
22
- ></pi-web-highlighted-code>`}}]}}}};export{St as default};
22
+ ></pi-web-highlighted-code>`}}]}}}};export{Ct as default};
@@ -4,6 +4,12 @@
4
4
  :host(pi-web-ui-presentation) .codex-commands { display: grid; gap: 2px; padding: 12px 8px 16px; }
5
5
  :host(pi-web-ui-presentation) .codex-command { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 36px; justify-content: flex-start; border: 0; padding: 6px 8px; text-align: start; border-radius: 6px; font-size: 14px; font-weight: 400; background: transparent; }
6
6
  :host(pi-web-ui-presentation) .codex-command svg { flex: 0 0 auto; width: 16px; height: 16px; }
7
+ :host(pi-web-ui-presentation) .codex-command[data-action-id="search"] { min-height: 48px; padding: 10px 12px; gap: 12px; font-size: 16px; }
8
+ :host(pi-web-ui-presentation) .codex-command[data-action-id="search"] svg { width: 22px; height: 22px; }
9
+ :host(session-search-dialog) { --session-search-width: min(1040px, 100%); --session-search-max-height: min(860px, 100%); --session-search-font-size: 16px; --session-search-input-height: 52px; --session-search-control-size: 44px; }
10
+ :host(session-search-dialog) .ui-dialog-title { font-size: 18px; font-weight: 600; }
11
+ :host(session-search-dialog) .ui-selection-option { border-color: transparent; border-radius: 4px; background: transparent; padding: 14px 38px 14px 14px; }
12
+ :host(session-search-dialog) .ui-selection-option:hover, :host(session-search-dialog) .ui-selection-option:focus-visible { background: var(--pi-surface-hover); border-color: var(--pi-border); }
7
13
  :host(pi-web-ui-presentation) .codex-command:hover:not(:disabled) { background: var(--codex-sidebar-hover, var(--pi-surface-hover)); }
8
14
  :host(pi-web-ui-presentation) .codex-machines { flex: 0 0 auto; }
9
15
  :host(pi-web-ui-presentation) .codex-project-tree { display: flex; flex: 1 1 0; flex-direction: column; min-width: 0; min-height: 0; overflow: auto; padding: 0 8px 16px; }
@@ -75,3 +81,5 @@
75
81
  :host(project-list) .action-main, :host(workspace-list) .action-main, :host(session-list) .action-main,
76
82
  :host(project-list) .action-menu-toggle, :host(workspace-list) .action-menu-toggle, :host(session-list) .action-menu-toggle { min-height: 44px; }
77
83
  }
84
+ :host(pi-web-files-panel) .toolbar, :host(pi-web-files-panel) .toolbar-actions, .codex-files-toolbar { flex-wrap: wrap; }
85
+ .codex-files-toolbar .file-action-icon { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
@@ -0,0 +1,30 @@
1
+ // Generated from pi-web-plugins/custom-ui-codex/fileIcons.ts. Do not edit directly.
2
+ import { svg } from "lit";
3
+ function icon(paths) {
4
+ return svg `
5
+ <svg class="file-action-icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
6
+ ${paths}
7
+ </svg>
8
+ `;
9
+ }
10
+ export function renderNewFileIcon() {
11
+ return icon(svg `<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z"></path><path d="M14 2v6h6"></path><path d="M12 12v6"></path><path d="M9 15h6"></path>`);
12
+ }
13
+ export function renderNewFolderIcon() {
14
+ return icon(svg `<path d="M3 6a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z"></path><path d="M12 10v6"></path><path d="M9 13h6"></path>`);
15
+ }
16
+ export function renderUploadIcon() {
17
+ return icon(svg `<path d="M12 16V4"></path><path d="m7 9 5-5 5 5"></path><path d="M5 20h14"></path>`);
18
+ }
19
+ export function renderDownloadIcon() {
20
+ return icon(svg `<path d="M12 4v12"></path><path d="m7 11 5 5 5-5"></path><path d="M5 20h14"></path>`);
21
+ }
22
+ export function renderRenameIcon() {
23
+ return icon(svg `<path d="M12 20h9"></path><path d="M16.5 3.5a2.1 2.1 0 0 1 3 3L8 18l-4 1 1-4Z"></path>`);
24
+ }
25
+ export function renderDeleteIcon() {
26
+ return icon(svg `<path d="M3 6h18"></path><path d="M8 6V4h8v2"></path><path d="m19 6-1 14H6L5 6"></path><path d="M10 11v5"></path><path d="M14 11v5"></path>`);
27
+ }
28
+ export function renderRefreshIcon() {
29
+ return icon(svg `<path d="M20 6v5h-5"></path><path d="M20 11a8 8 0 1 0-2.34 5.66"></path>`);
30
+ }
@@ -4,7 +4,14 @@
4
4
  "type": "module",
5
5
  "piWeb": {
6
6
  "plugins": [
7
- { "id": "pi-web.custom-ui-codex", "browserRoot": ".", "module": "pi-web-plugin.js", "defaultEnabled": true }
7
+ {
8
+ "id": "pi-web.custom-ui-codex", "browserRoot": ".", "module": "pi-web-plugin.js", "defaultEnabled": true,
9
+ "themes": [
10
+ { "id": "paper", "name": "Paper", "description": "White and neutral grays with restrained status colors.", "order": 40, "colorScheme": "light", "stylesheets": [{ "id": "palette", "path": "paper.css" }] },
11
+ { "id": "graphite", "name": "Graphite", "description": "Charcoal and neutral grays with restrained status colors.", "order": 50, "colorScheme": "dark", "stylesheets": [{ "id": "palette", "path": "graphite.css" }] }
12
+ ],
13
+ "themePairs": [{ "id": "paper-graphite", "name": "Paper / Graphite", "description": "Follow the system light/dark preference with neutral gray themes.", "order": 20, "light": "paper", "dark": "graphite" }]
14
+ }
8
15
  ]
9
16
  }
10
17
  }