@chainingintention/pi-web-cn 2.202610.4 → 2.202611.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1010) 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-D9e-Nrxi.js +3952 -0
  9. package/dist/client/assets/SettingsDialog-BvlvoXvD.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-Bawe0tSn.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-0z4D-18M.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-DDgPZEYp.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-ZZOwUcbr.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/relayDiscovery.js +5 -1
  620. package/dist/pi-packages/relays/relays.messages.js +38 -0
  621. package/dist/pi-packages/relays/relaysLocalization.js +19 -0
  622. package/dist/pi-packages/relays/relaysPanelElement.js +151 -96
  623. package/dist/pi-packages/scheduled-tasks/browser/pi-web-plugin.js +1135 -0
  624. package/dist/pi-packages/scheduled-tasks/domain.js +63 -0
  625. package/dist/pi-packages/scheduled-tasks/extensions/index.js +710 -0
  626. package/dist/pi-packages/scheduled-tasks/package.json +30 -0
  627. package/dist/pi-packages/scheduled-tasks/scheduler.js +89 -0
  628. package/dist/pi-packages/scheduled-tasks/server-plugin.js +9872 -0
  629. package/dist/pi-packages/scheduled-tasks/service.js +178 -0
  630. package/dist/pi-packages/scheduled-tasks/skills/scheduled-tasks/SKILL.md +30 -0
  631. package/dist/pi-packages/scheduled-tasks/sqlite.js +18 -0
  632. package/dist/pi-packages/scheduled-tasks/store.js +230 -0
  633. package/dist/pi-packages/scheduled-tasks/vite.browser.config.mjs +16 -0
  634. package/dist/pi-packages/scheduled-tasks/vite.companion.config.mjs +17 -0
  635. package/dist/pi-packages/scheduled-tasks/vite.config.mjs +17 -0
  636. package/dist/pi-packages/session-naming/config.js +78 -0
  637. package/dist/pi-packages/session-naming/extensions/index.js +74 -0
  638. package/dist/pi-packages/session-naming/generator.js +76 -0
  639. package/dist/pi-packages/session-naming/package.json +15 -0
  640. package/dist/pi-packages/workflows/browser/pi-web-plugin.js +10 -7
  641. package/dist/pi-packages/workflows/browser/workflows.messages.js +32 -0
  642. package/dist/pi-packages/workflows/browser/worktreeDialog.js +71 -50
  643. package/dist/pi-packages/workflows/server-plugin.js +137 -23
  644. package/dist/pi-web-plugins/audio/audioElement.js +61 -0
  645. package/dist/pi-web-plugins/audio/audioFormats.js +18 -0
  646. package/dist/pi-web-plugins/audio/byteRange.js +21 -0
  647. package/dist/pi-web-plugins/audio/package.json +10 -0
  648. package/dist/pi-web-plugins/audio/pi-web-plugin.js +39 -0
  649. package/dist/pi-web-plugins/audio/server.js +71 -0
  650. package/dist/pi-web-plugins/code-highlight/browser/pi-web-plugin.js +4 -4
  651. package/dist/pi-web-plugins/custom-ui-codex/README.md +2 -0
  652. package/dist/pi-web-plugins/custom-ui-codex/chat-settings.css +15 -2
  653. package/dist/pi-web-plugins/custom-ui-codex/codex.css +8 -0
  654. package/dist/pi-web-plugins/custom-ui-codex/fileIcons.js +30 -0
  655. package/dist/pi-web-plugins/custom-ui-codex/package.json +8 -1
  656. package/dist/pi-web-plugins/custom-ui-codex/pi-web-plugin.js +8 -8
  657. package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +256 -242
  658. package/dist/pi-web-plugins/git/browser/git-panel.js +138 -59
  659. package/dist/pi-web-plugins/git/browser/git.messages.js +47 -0
  660. package/dist/pi-web-plugins/git/browser/gitFileIcon.js +71 -0
  661. package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +21 -4
  662. package/dist/pi-web-plugins/git/server-plugin.js +5 -3
  663. package/dist/pi-web-plugins/info/info.messages.js +66 -0
  664. package/dist/pi-web-plugins/info/infoInternals.js +217 -217
  665. package/dist/pi-web-plugins/info/pi-web-plugin.js +19 -14
  666. package/dist/pi-web-plugins/language-spanish/catalogs.js +1896 -0
  667. package/dist/pi-web-plugins/language-spanish/package.json +14 -0
  668. package/dist/pi-web-plugins/language-spanish/pi-web-plugin.js +90 -0
  669. package/dist/pi-web-plugins/language-swedish/catalogs.js +1896 -0
  670. package/dist/pi-web-plugins/language-swedish/package.json +14 -0
  671. package/dist/pi-web-plugins/language-swedish/pi-web-plugin.js +89 -0
  672. package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +4 -4
  673. package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +71 -66
  674. package/dist/pi-web-plugins/terminal/bunPtyProvider.js +109 -0
  675. package/dist/pi-web-plugins/terminal/nodePtyProvider.js +75 -0
  676. package/dist/pi-web-plugins/terminal/nodePtySpawnHelper.js +36 -0
  677. package/dist/pi-web-plugins/terminal/ptyComposition.js +12 -0
  678. package/dist/pi-web-plugins/terminal/ptyProvider.js +2 -0
  679. package/dist/pi-web-plugins/terminal/server-plugin.js +42 -14
  680. package/dist/pi-web-plugins/terminal/terminalService.js +218 -76
  681. package/dist/pi-web-plugins/themes/assets/graphite.css +56 -0
  682. package/dist/pi-web-plugins/themes/assets/paper.css +56 -0
  683. package/dist/pi-web-plugins/themes/package.json +21 -0
  684. package/dist/pi-web-plugins/updates/pi-web-plugin.js +200 -155
  685. package/dist/pi-web-plugins/updates/updates.messages.js +59 -0
  686. package/dist/pi-web-plugins/updates/updatesLogic.js +27 -29
  687. package/dist/pi-web-plugins/workspace-tasks/config.js +18 -19
  688. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +13 -8
  689. package/dist/pi-web-plugins/workspace-tasks/tasks.messages.js +45 -0
  690. package/dist/pi-web-plugins/workspace-tasks/tasksLocalization.js +33 -0
  691. package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +75 -46
  692. package/dist/pi-web-plugins/workspace-tasks/workspaceTasksClient.js +7 -33
  693. package/dist/pi-web-plugins/zh-cn/bundled.json +31 -18
  694. package/dist/pi-web-plugins/zh-cn/catalogs.json +1803 -0
  695. package/dist/pi-web-plugins/zh-cn/components.json +2 -0
  696. package/dist/pi-web-plugins/zh-cn/files.json +7 -0
  697. package/dist/pi-web-plugins/zh-cn/main.json +5 -1
  698. package/dist/pi-web-plugins/zh-cn/management-errors.json +6 -0
  699. package/dist/pi-web-plugins/zh-cn/pi-web-plugin.js +13 -4
  700. package/dist/pi-web-plugins/zh-cn/server-main.json +4 -4
  701. package/dist/pi-web-plugins/zh-cn/server.json +1 -1
  702. package/dist/piWebVersionReport.js +2 -0
  703. package/dist/piWebVersionReport.js.map +1 -1
  704. package/dist/plugin-api.d.ts +202 -8
  705. package/dist/runtimePreflight.js +14 -0
  706. package/dist/runtimePreflight.js.map +1 -0
  707. package/dist/server/activity/workspaceActivityService.js +18 -1
  708. package/dist/server/activity/workspaceActivityService.js.map +1 -1
  709. package/dist/server/app.js +48 -10
  710. package/dist/server/app.js.map +1 -1
  711. package/dist/server/configRoutes.js +117 -139
  712. package/dist/server/configRoutes.js.map +1 -1
  713. package/dist/server/configUpdates.js +104 -0
  714. package/dist/server/configUpdates.js.map +1 -0
  715. package/dist/server/deploymentIdentity.js +12 -10
  716. package/dist/server/deploymentIdentity.js.map +1 -1
  717. package/dist/server/deploymentIdentityRoutes.js +2 -1
  718. package/dist/server/deploymentIdentityRoutes.js.map +1 -1
  719. package/dist/server/diagnostics/nodePtyNativeModule.js +0 -18
  720. package/dist/server/diagnostics/nodePtyNativeModule.js.map +1 -1
  721. package/dist/server/diagnostics/terminalPrerequisites.js +54 -0
  722. package/dist/server/diagnostics/terminalPrerequisites.js.map +1 -0
  723. package/dist/server/index.js +9 -0
  724. package/dist/server/index.js.map +1 -1
  725. package/dist/server/knownAutoInstallPiPackages.js +6 -0
  726. package/dist/server/knownAutoInstallPiPackages.js.map +1 -1
  727. package/dist/server/knownPiPackages.js +4 -4
  728. package/dist/server/knownPiPackages.js.map +1 -1
  729. package/dist/server/machines/machineClient.js +39 -17
  730. package/dist/server/machines/machineClient.js.map +1 -1
  731. package/dist/server/machines/machinePluginProxyRoutes.js +3 -1
  732. package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
  733. package/dist/server/machines/machineProxyRoutes.js +60 -9
  734. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  735. package/dist/server/machines/machineService.js +81 -13
  736. package/dist/server/machines/machineService.js.map +1 -1
  737. package/dist/server/machines/machineStore.js.map +1 -1
  738. package/dist/server/managementAgents.js +179 -0
  739. package/dist/server/managementAgents.js.map +1 -0
  740. package/dist/server/managementAgentsRoutes.js +42 -0
  741. package/dist/server/managementAgentsRoutes.js.map +1 -0
  742. package/dist/server/managementEmbed.js +27 -44
  743. package/dist/server/managementEmbed.js.map +1 -1
  744. package/dist/server/managementEntryRoutes.js +51 -0
  745. package/dist/server/managementEntryRoutes.js.map +1 -0
  746. package/dist/server/managementEntryTickets.js +46 -0
  747. package/dist/server/managementEntryTickets.js.map +1 -0
  748. package/dist/server/managementTransportLimits.js +5 -0
  749. package/dist/server/managementTransportLimits.js.map +1 -0
  750. package/dist/server/navigationPreferenceRoutes.js +20 -1
  751. package/dist/server/navigationPreferenceRoutes.js.map +1 -1
  752. package/dist/server/normalAuth.js +3 -1
  753. package/dist/server/normalAuth.js.map +1 -1
  754. package/dist/server/notices/serverNoticeStore.js +4 -0
  755. package/dist/server/notices/serverNoticeStore.js.map +1 -1
  756. package/dist/server/piPackageService.js +15 -1
  757. package/dist/server/piPackageService.js.map +1 -1
  758. package/dist/server/piWebPluginCatalog.js +23 -11
  759. package/dist/server/piWebPluginCatalog.js.map +1 -1
  760. package/dist/server/piWebPluginLifecycle.js +14 -4
  761. package/dist/server/piWebPluginLifecycle.js.map +1 -1
  762. package/dist/server/piWebPluginService.js +11 -5
  763. package/dist/server/piWebPluginService.js.map +1 -1
  764. package/dist/server/piWebStatus.js +12 -10
  765. package/dist/server/piWebStatus.js.map +1 -1
  766. package/dist/server/piWebStatusCache.js +3 -1
  767. package/dist/server/piWebStatusCache.js.map +1 -1
  768. package/dist/server/plugins/pluginBackendRegistry.js +229 -4
  769. package/dist/server/plugins/pluginBackendRegistry.js.map +1 -1
  770. package/dist/server/plugins/pluginBackendResourceProxyRoutes.js +40 -0
  771. package/dist/server/plugins/pluginBackendResourceProxyRoutes.js.map +1 -0
  772. package/dist/server/plugins/pluginBackendResourceResponse.js +84 -0
  773. package/dist/server/plugins/pluginBackendResourceResponse.js.map +1 -0
  774. package/dist/server/plugins/projectPluginSettings.js +9 -2
  775. package/dist/server/plugins/projectPluginSettings.js.map +1 -1
  776. package/dist/server/plugins/serverPluginCatalogCapability.js +7 -2
  777. package/dist/server/plugins/serverPluginCatalogCapability.js.map +1 -1
  778. package/dist/server/plugins/serverPluginPiSessionsCapability.js +16 -3
  779. package/dist/server/plugins/serverPluginPiSessionsCapability.js.map +1 -1
  780. package/dist/server/plugins/serverPluginRuntime.js +25 -9
  781. package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
  782. package/dist/server/plugins/serverPluginSessionLifecycleCapability.js +87 -0
  783. package/dist/server/plugins/serverPluginSessionLifecycleCapability.js.map +1 -0
  784. package/dist/server/requestLogging.js +1 -1
  785. package/dist/server/requestLogging.js.map +1 -1
  786. package/dist/server/sessiond/agentHttpDispatcher.js +14 -7
  787. package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -1
  788. package/dist/server/sessiond/autoInstallPiPackageSources.js +54 -0
  789. package/dist/server/sessiond/autoInstallPiPackageSources.js.map +1 -0
  790. package/dist/server/sessiond/autoInstallPiPackages.js +77 -30
  791. package/dist/server/sessiond/autoInstallPiPackages.js.map +1 -1
  792. package/dist/server/sessiond/pluginBackendChannelRoutes.js +3 -13
  793. package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -1
  794. package/dist/server/sessiond/pluginBackendResourceRoutes.js +62 -0
  795. package/dist/server/sessiond/pluginBackendResourceRoutes.js.map +1 -0
  796. package/dist/server/sessiond/pluginSessionLifecycleRoutes.js +45 -0
  797. package/dist/server/sessiond/pluginSessionLifecycleRoutes.js.map +1 -0
  798. package/dist/server/sessiond/sessionProxyRoutes.js +55 -11
  799. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  800. package/dist/server/sessiond/sessionServiceDependencies.js +3 -0
  801. package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
  802. package/dist/server/sessiond.js +46 -15
  803. package/dist/server/sessiond.js.map +1 -1
  804. package/dist/server/sessions/askUserDomain.js +24 -2
  805. package/dist/server/sessions/askUserDomain.js.map +1 -1
  806. package/dist/server/sessions/askUserTool.js +1 -1
  807. package/dist/server/sessions/askUserTool.js.map +1 -1
  808. package/dist/server/sessions/dockerEnvironmentFacts.js +10 -9
  809. package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -1
  810. package/dist/server/sessions/mcpOAuthCredentialAdapter.js +4 -4
  811. package/dist/server/sessions/mcpOAuthCredentialAdapter.js.map +1 -1
  812. package/dist/server/sessions/piSessionService.js +500 -259
  813. package/dist/server/sessions/piSessionService.js.map +1 -1
  814. package/dist/server/sessions/requestHumanInterventionTool.js +27 -0
  815. package/dist/server/sessions/requestHumanInterventionTool.js.map +1 -0
  816. package/dist/server/sessions/sendSessionMessageTool.js +32 -0
  817. package/dist/server/sessions/sendSessionMessageTool.js.map +1 -0
  818. package/dist/server/sessions/sessionActivityCoordinator.js.map +1 -1
  819. package/dist/server/sessions/sessionCleanup.js +18 -1
  820. package/dist/server/sessions/sessionCleanup.js.map +1 -1
  821. package/dist/server/sessions/sessionCommandService.js +58 -52
  822. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  823. package/dist/server/sessions/sessionContentSearch.js +103 -30
  824. package/dist/server/sessions/sessionContentSearch.js.map +1 -1
  825. package/dist/server/sessions/sessionIntervention.js +29 -0
  826. package/dist/server/sessions/sessionIntervention.js.map +1 -0
  827. package/dist/server/sessions/sessionNameGenerator.js +0 -60
  828. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  829. package/dist/server/sessions/sessionNotificationStore.js +2 -1
  830. package/dist/server/sessions/sessionNotificationStore.js.map +1 -1
  831. package/dist/server/sessions/sessionRoutes.js +25 -1
  832. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  833. package/dist/server/sessions/sessionSummaryScanner.js +8 -0
  834. package/dist/server/sessions/sessionSummaryScanner.js.map +1 -1
  835. package/dist/server/sessions/sessionTreeProjection.js +108 -97
  836. package/dist/server/sessions/sessionTreeProjection.js.map +1 -1
  837. package/dist/server/sessions/sessionUiEvents.js +2 -0
  838. package/dist/server/sessions/sessionUiEvents.js.map +1 -1
  839. package/dist/server/sessions/sessionUnreadStore.js +11 -1
  840. package/dist/server/sessions/sessionUnreadStore.js.map +1 -1
  841. package/dist/server/sessions/spawnSubsessionTool.js +66 -15
  842. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  843. package/dist/server/sessions/subsessionCompletionDelivery.js +6 -3
  844. package/dist/server/sessions/subsessionCompletionDelivery.js.map +1 -1
  845. package/dist/server/sessions/subsessionCompletionInbox.js +6 -9
  846. package/dist/server/sessions/subsessionCompletionInbox.js.map +1 -1
  847. package/dist/server/status/machineStatusService.js +15 -3
  848. package/dist/server/status/machineStatusService.js.map +1 -1
  849. package/dist/server/storage/navigationPreferenceStore.js +11 -0
  850. package/dist/server/storage/navigationPreferenceStore.js.map +1 -1
  851. package/dist/server/storage/sessionPinStore.js +95 -0
  852. package/dist/server/storage/sessionPinStore.js.map +1 -0
  853. package/dist/server/terminals/maintenanceExecutionContext.js +18 -0
  854. package/dist/server/terminals/maintenanceExecutionContext.js.map +1 -0
  855. package/dist/server/terminals/maintenanceTerminalCapability.js +25 -0
  856. package/dist/server/terminals/maintenanceTerminalCapability.js.map +1 -0
  857. package/dist/server/terminals/requiredTerminalService.js.map +1 -1
  858. package/dist/server/terminals/terminalStatusRoutes.js +22 -0
  859. package/dist/server/terminals/terminalStatusRoutes.js.map +1 -0
  860. package/dist/server/themeBootstrap.js +123 -0
  861. package/dist/server/themeBootstrap.js.map +1 -0
  862. package/dist/server/themeCatalog.js +206 -0
  863. package/dist/server/themeCatalog.js.map +1 -0
  864. package/dist/server/themeMetadata.js +74 -0
  865. package/dist/server/themeMetadata.js.map +1 -0
  866. package/dist/server/webSocketBridge.js +16 -12
  867. package/dist/server/webSocketBridge.js.map +1 -1
  868. package/dist/server/webSocketPayloadLimit.js +17 -0
  869. package/dist/server/webSocketPayloadLimit.js.map +1 -0
  870. package/dist/server/workspaceExplorerRoutes.js +3 -1
  871. package/dist/server/workspaceExplorerRoutes.js.map +1 -1
  872. package/dist/server/workspaces/effectivePathAccess.js +1 -1
  873. package/dist/server/workspaces/effectivePathAccess.js.map +1 -1
  874. package/dist/server/workspaces/projectPiWebConfig.js +30 -7
  875. package/dist/server/workspaces/projectPiWebConfig.js.map +1 -1
  876. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +2 -0
  877. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -1
  878. package/dist/server/workspaces/workspaceProviderRegistry.js +6 -2
  879. package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
  880. package/dist/server/workspaces/workspaceRemovalService.js +6 -4
  881. package/dist/server/workspaces/workspaceRemovalService.js.map +1 -1
  882. package/dist/server-plugin-api.d.ts +39 -1
  883. package/dist/server-plugin-api.js +18 -3
  884. package/dist/server-plugin-api.js.map +1 -1
  885. package/dist/sessiond/sessionDaemonClient.js +7 -1
  886. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  887. package/dist/sessiond/sessionDaemonTerminalStatus.js +27 -0
  888. package/dist/sessiond/sessionDaemonTerminalStatus.js.map +1 -0
  889. package/dist/shared/apiTypes.js +4 -0
  890. package/dist/shared/apiTypes.js.map +1 -1
  891. package/dist/shared/capabilities.js +6 -0
  892. package/dist/shared/capabilities.js.map +1 -1
  893. package/dist/shared/commandOutputPresentation.js +17 -0
  894. package/dist/shared/commandOutputPresentation.js.map +1 -0
  895. package/dist/shared/commandResultPresentation.js +51 -0
  896. package/dist/shared/commandResultPresentation.js.map +1 -0
  897. package/dist/shared/configResolution.js +99 -0
  898. package/dist/shared/configResolution.js.map +1 -0
  899. package/dist/shared/defaultLocalization.js +60 -0
  900. package/dist/shared/defaultLocalization.js.map +1 -0
  901. package/dist/shared/federatedRoutes.js +13 -1
  902. package/dist/shared/federatedRoutes.js.map +1 -1
  903. package/dist/shared/installationName.js +21 -0
  904. package/dist/shared/installationName.js.map +1 -0
  905. package/dist/shared/localization.d.ts +55 -0
  906. package/dist/shared/localization.js +4 -0
  907. package/dist/shared/machineStatus.js +2 -0
  908. package/dist/shared/machineStatus.js.map +1 -1
  909. package/dist/shared/managedAgents.js +2 -0
  910. package/dist/shared/managedAgents.js.map +1 -0
  911. package/dist/shared/piWebConfigParsing.js +16 -30
  912. package/dist/shared/piWebConfigParsing.js.map +1 -1
  913. package/dist/shared/piWebRuntime.js +17 -0
  914. package/dist/shared/piWebRuntime.js.map +1 -0
  915. package/dist/shared/piWebStatusParsing.js +5 -0
  916. package/dist/shared/piWebStatusParsing.js.map +1 -1
  917. package/dist/shared/pluginApiTypes.d.ts +49 -7
  918. package/dist/shared/pluginBackendProtocol.js +24 -0
  919. package/dist/shared/pluginBackendProtocol.js.map +1 -1
  920. package/dist/shared/pluginCatalogTypes.d.ts +8 -0
  921. package/dist/shared/pluginCatalogTypes.js +15 -0
  922. package/dist/shared/pluginCatalogTypes.js.map +1 -1
  923. package/dist/shared/pluginResourceMetadata.js +58 -0
  924. package/dist/shared/pluginResourceMetadata.js.map +1 -0
  925. package/dist/shared/pluginSessionLifecycleTypes.d.ts +24 -0
  926. package/dist/shared/pluginSessionLifecycleTypes.js +56 -0
  927. package/dist/shared/pluginSessionLifecycleTypes.js.map +1 -0
  928. package/dist/shared/serverNoticePresentation.d.ts +9 -0
  929. package/dist/shared/serverNoticePresentation.js +12 -0
  930. package/dist/shared/serverNoticePresentation.js.map +1 -0
  931. package/dist/shared/sessionActivityPresentation.js +73 -0
  932. package/dist/shared/sessionActivityPresentation.js.map +1 -0
  933. package/dist/shared/sessionNotificationPresentation.js +16 -0
  934. package/dist/shared/sessionNotificationPresentation.js.map +1 -0
  935. package/dist/shared/terminalCommandRun.js +4 -0
  936. package/dist/shared/terminalCommandRun.js.map +1 -1
  937. package/dist/shared/terminalServiceStatus.js +14 -0
  938. package/dist/shared/terminalServiceStatus.js.map +1 -0
  939. package/dist/shared/terminalTitlePresentation.d.ts +10 -0
  940. package/dist/shared/terminalTitlePresentation.js +13 -0
  941. package/dist/shared/terminalTitlePresentation.js.map +1 -0
  942. package/dist/shared/themeCatalog.js +2 -0
  943. package/dist/shared/themeCatalog.js.map +1 -0
  944. package/dist/shared/themePreference.js +1 -0
  945. package/dist/shared/themePreference.js.map +1 -1
  946. package/dist/shared/thinkingLevels.d.ts +29 -0
  947. package/dist/shared/thinkingLevels.js +6 -4
  948. package/dist/shared/thinkingLevels.js.map +1 -1
  949. package/dist/shared/versionCheckPolicy.js +10 -0
  950. package/dist/shared/versionCheckPolicy.js.map +1 -0
  951. package/dist/shared/workspaceRemovalPresentation.d.ts +8 -0
  952. package/dist/shared/workspaceRemovalPresentation.js +10 -0
  953. package/dist/shared/workspaceRemovalPresentation.js.map +1 -0
  954. package/docs/README.md +7 -3
  955. package/docs/assets/pi-web-desktop-graphite.png +0 -0
  956. package/docs/assets/pi-web-desktop-paper.png +0 -0
  957. package/docs/assets/pi-web-desktop-pi-web-dark.png +0 -0
  958. package/docs/assets/pi-web-desktop-pi-web-light.png +0 -0
  959. package/docs/assets/pi-web-desktop.png +0 -0
  960. package/docs/assets/pi-web-mobile-graphite.png +0 -0
  961. package/docs/assets/pi-web-mobile-paper.png +0 -0
  962. package/docs/assets/pi-web-mobile-pi-web-dark.png +0 -0
  963. package/docs/assets/pi-web-mobile-pi-web-light.png +0 -0
  964. package/docs/assets/pi-web-mobile-themes.gif +0 -0
  965. package/docs/assets/pi-web-mobile.png +0 -0
  966. package/docs/assets/pi-web-tablet-graphite.png +0 -0
  967. package/docs/assets/pi-web-tablet-paper.png +0 -0
  968. package/docs/assets/pi-web-tablet-pi-web-dark.png +0 -0
  969. package/docs/assets/pi-web-tablet-pi-web-light.png +0 -0
  970. package/docs/assets/pi-web-tablet-themes.gif +0 -0
  971. package/docs/assets/pi-web-tablet.png +0 -0
  972. package/docs/assets/pi-web-themes.gif +0 -0
  973. package/docs/config.md +196 -56
  974. package/docs/plugins.md +370 -26
  975. package/docs/scheduled-tasks.md +127 -0
  976. package/package.json +43 -19
  977. package/dist/client/assets/CommandPicker-gK2biReF.js +0 -70
  978. package/dist/client/assets/PiWebApp-Do_8tp5d.js +0 -3761
  979. package/dist/client/assets/SettingsDialog-vGDo1-BJ.js +0 -1015
  980. package/dist/client/assets/index-Ura0RJyr.js +0 -2
  981. package/dist/client/assets/managementEmbed-Bx8Mwzdw.js +0 -2
  982. package/dist/client/assets/preload-helper-XpATwJ5c.js +0 -1
  983. package/dist/pi-packages/captains-log/README.md +0 -11
  984. package/dist/pi-packages/captains-log/dist/browser/channelProtocol.js +0 -29
  985. package/dist/pi-packages/captains-log/dist/browser/index.js +0 -143
  986. package/dist/pi-packages/captains-log/dist/browser/markdown.js +0 -68
  987. package/dist/pi-packages/captains-log/dist/browser/panel.js +0 -148
  988. package/dist/pi-packages/captains-log/dist/browser/protocol.js +0 -26
  989. package/dist/pi-packages/captains-log/dist/companion.js +0 -126
  990. package/dist/pi-packages/captains-log/dist/roundtrip.js +0 -62
  991. package/dist/pi-packages/captains-log/dist/server.js +0 -210
  992. package/dist/pi-packages/captains-log/dist/store.js +0 -75
  993. package/dist/pi-packages/captains-log/docs/usage.md +0 -29
  994. package/dist/pi-packages/captains-log/i18n.js +0 -7
  995. package/dist/pi-packages/captains-log/package.json +0 -35
  996. package/dist/pi-packages/captains-log/tsconfig.json +0 -21
  997. package/dist/pi-packages/captains-log/vite.config.mjs +0 -28
  998. package/examples/session-bridge-plugin/README.md +0 -20
  999. package/examples/session-bridge-plugin/docs/usage.md +0 -54
  1000. package/examples/session-bridge-plugin/package.json +0 -26
  1001. package/examples/session-bridge-plugin/src/browser/index.ts +0 -87
  1002. package/examples/session-bridge-plugin/src/browser/protocol.ts +0 -24
  1003. package/examples/session-bridge-plugin/src/companion.ts +0 -65
  1004. package/examples/session-bridge-plugin/src/reviewRun.ts +0 -39
  1005. package/examples/session-bridge-plugin/src/server.ts +0 -85
  1006. package/examples/session-bridge-plugin/src/store.ts +0 -80
  1007. package/examples/session-bridge-plugin/tsconfig.json +0 -21
  1008. /package/dist/{client/assets/classic-CyM97Akm.css → pi-web-plugins/themes/assets/classic.css} +0 -0
  1009. /package/dist/{client/assets/pi-web-dark-D_KtbM95.css → pi-web-plugins/themes/assets/pi-web-dark.css} +0 -0
  1010. /package/dist/{client/assets/pi-web-light-DSNLMIBI.css → pi-web-plugins/themes/assets/pi-web-light.css} +0 -0
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./PiWebApp-Do_8tp5d.js","./CommandPicker-gK2biReF.js","./managementEmbed-Bx8Mwzdw.js","./preload-helper-XpATwJ5c.js","./vendor-editor-core-BfnHL1Dg.js","./vendor-editor-languages-bNquDJP0.js"])))=>i.map(i=>d[i]);
2
- import{I as e,J as t,L as n,R as r,V as i,X as a}from"./managementEmbed-Bx8Mwzdw.js";import{n as o,t as s}from"./preload-helper-XpATwJ5c.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();async function c(e=async()=>(await o(`pi-web-plugins/localization.json`,{shouldLoadPlugin:e=>e.id===`zh-cn`})).registrations){n(`en`,{});try{let i=(await e()).find(e=>e.id===`zh-cn`&&e.machineId===void 0);if(i!==void 0){let e=new AbortController,o=(await i.plugin.activate({apiVersion:4,pluginId:i.id,runtimePluginId:i.id,html:t,svg:a,translate:r,signal:e.signal,lifetimeSignal:e.signal})).contributions.localizations?.find(e=>e.locale===`zh-CN`);o!==void 0&&n(o.locale,o.messages)}}catch(e){console.warn(`Could not initialize UI localization; using English`,e)}}function l(t){t.documentElement.lang=e();let n=t.querySelector(`meta[name="description"]`);n!==null&&(n.content=r(`app.description`,`Remote web UI and browser control plane for persistent Pi Coding Agent sessions.`));let a=t.querySelector(`link[rel="manifest"]`);a!==null&&(a.href=i(e()===`zh-CN`?`pi-web-plugins/zh-cn/manifest.webmanifest`:`manifest.webmanifest`))}await c(),l(document),await s(()=>import(`./PiWebApp-Do_8tp5d.js`),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url);
@@ -1,2 +0,0 @@
1
- var e=globalThis,t=e.ShadowRoot&&(e.ShadyCSS===void 0||e.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,n=Symbol(),r=new WeakMap,i=class{constructor(e,t,r){if(this._$cssResult$=!0,r!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,n=this.t;if(t&&e===void 0){let t=n!==void 0&&n.length===1;t&&(e=r.get(n)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),t&&r.set(n,e))}return e}toString(){return this.cssText}},a=e=>new i(typeof e==`string`?e:e+``,void 0,n),o=(e,...t)=>new i(e.length===1?e[0]:t.reduce((t,n,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if(typeof e==`number`)return e;throw Error(`Value passed to 'css' function must be a 'css' function result: `+e+`. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`)})(n)+e[r+1],e[0]),e,n),s=(n,r)=>{if(t)n.adoptedStyleSheets=r.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let t of r){let r=document.createElement(`style`),i=e.litNonce;i!==void 0&&r.setAttribute(`nonce`,i),r.textContent=t.cssText,n.appendChild(r)}},c=t?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return a(t)})(e):e,{is:l,defineProperty:u,getOwnPropertyDescriptor:d,getOwnPropertyNames:ee,getOwnPropertySymbols:te,getPrototypeOf:ne}=Object,f=globalThis,re=f.trustedTypes,ie=re?re.emptyScript:``,ae=f.reactiveElementPolyfillSupport,p=(e,t)=>e,m={toAttribute(e,t){switch(t){case Boolean:e=e?ie:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},h=(e,t)=>!l(e,t),oe={attribute:!0,type:String,converter:m,reflect:!1,useDefault:!1,hasChanged:h};Symbol.metadata??=Symbol(`metadata`),f.litPropertyMetadata??=new WeakMap;var g=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=oe){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&u(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=d(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??oe}static _$Ei(){if(this.hasOwnProperty(p(`elementProperties`)))return;let e=ne(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(p(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(p(`properties`))){let e=this.properties,t=[...ee(e),...te(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(c(e))}else e!==void 0&&t.push(c(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?m:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?m:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??h)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};g.elementStyles=[],g.shadowRootOptions={mode:`open`},g[p(`elementProperties`)]=new Map,g[p(`finalized`)]=new Map,ae?.({ReactiveElement:g}),(f.reactiveElementVersions??=[]).push(`2.1.2`);var _=globalThis,se=e=>e,v=_.trustedTypes,ce=v?v.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,y=`$lit$`,b=`lit$${Math.random().toFixed(9).slice(2)}$`,x=`?`+b,le=`<${x}>`,S=document,C=()=>S.createComment(``),w=e=>e===null||typeof e!=`object`&&typeof e!=`function`,T=Array.isArray,ue=e=>T(e)||typeof e?.[Symbol.iterator]==`function`,E=`[
2
- \f\r]`,D=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,de=/-->/g,fe=/>/g,O=RegExp(`>|${E}(?:([^\\s"'>=/]+)(${E}*=${E}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),pe=/'/g,me=/"/g,he=/^(?:script|style|textarea|title)$/i,k=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),ge=k(1),_e=k(2),ve=k(3),A=Symbol.for(`lit-noChange`),j=Symbol.for(`lit-nothing`),ye=new WeakMap,M=S.createTreeWalker(S,129);function be(e,t){if(!T(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return ce===void 0?t:ce.createHTML(t)}var xe=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=D;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===D?c[1]===`!--`?o=de:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=O):(he.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=O):o=fe:o===O?c[0]===`>`?(o=i??D,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?O:c[3]===`"`?me:pe):o===me||o===pe?o=O:o===de||o===fe?o=D:(o=O,i=void 0);let d=o===O&&e[t+1].startsWith(`/>`)?` `:``;a+=o===D?n+le:l>=0?(r.push(s),n.slice(0,l)+y+n.slice(l)+b+d):n+b+(l===-2?t:d)}return[be(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},N=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=xe(t,n);if(this.el=e.createElement(l,r),M.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=M.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(y)){let t=u[o++],n=i.getAttribute(e).split(b),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?Ce:r[1]===`?`?we:r[1]===`@`?L:I}),i.removeAttribute(e)}else e.startsWith(b)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(he.test(i.tagName)){let e=i.textContent.split(b),t=e.length-1;if(t>0){i.textContent=v?v.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],C()),M.nextNode(),c.push({type:2,index:++a});i.append(e[t],C())}}}else if(i.nodeType===8){if(i.data===x)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(b,e+1))!==-1;)c.push({type:7,index:a}),e+=b.length-1}}a++}}static createElement(e,t){let n=S.createElement(`template`);return n.innerHTML=e,n}};function P(e,t,n=e,r){if(t===A)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=w(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=P(e,i._$AS(e,t.values),i,r)),t}var Se=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??S).importNode(t,!0);M.currentNode=r;let i=M.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new F(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new R(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=M.nextNode(),a++)}return M.currentNode=S,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},F=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=j,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=P(this,e,t),w(e)?e===j||e==null||e===``?(this._$AH!==j&&this._$AR(),this._$AH=j):e!==this._$AH&&e!==A&&this._(e):e._$litType$===void 0?e.nodeType===void 0?ue(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==j&&w(this._$AH)?this._$AA.nextSibling.data=e:this.T(S.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=N.createElement(be(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new Se(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=ye.get(e.strings);return t===void 0&&ye.set(e.strings,t=new N(e)),t}k(t){T(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(C()),this.O(C()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=se(e).nextSibling;se(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},I=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=j,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=j}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=P(this,e,t,0),a=!w(e)||e!==this._$AH&&e!==A,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=P(this,r[n+o],t,o),s===A&&(s=this._$AH[o]),a||=!w(s)||s!==this._$AH[o],s===j?e=j:e!==j&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===j?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},Ce=class extends I{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===j?void 0:e}},we=class extends I{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==j)}},L=class extends I{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=P(this,e,t,0)??j)===A)return;let n=this._$AH,r=e===j&&n!==j||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==j&&(n===j||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},R=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){P(this,e)}},Te={M:y,P:b,A:x,C:1,L:xe,R:Se,D:ue,V:P,I:F,H:I,N:we,U:L,B:Ce,F:R},Ee=_.litHtmlPolyfillSupport;Ee?.(N,F),(_.litHtmlVersions??=[]).push(`3.3.3`);var z=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new F(t.insertBefore(C(),e),e,void 0,n??{})}return i._$AI(e),i},B=globalThis,V=class extends g{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=z(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return A}};V._$litElement$=!0,V.finalized=!0,B.litElementHydrateSupport?.({LitElement:V});var De=B.litElementPolyfillSupport;De?.({LitElement:V}),(B.litElementVersions??=[]).push(`4.2.2`);function Oe(e,t=Ae()){let n=new URL(t.viteBaseUrl,t.documentBaseUrl);return new URL(je(e),n).toString()}function ke(e,t=Ae()){let n=new URL(Oe(e,t));if(n.protocol===`http:`)n.protocol=`ws:`;else if(n.protocol===`https:`)n.protocol=`wss:`;else throw Error(`Cannot create a WebSocket URL from ${n.protocol}`);return n.toString()}function Ae(){return{viteBaseUrl:`./`,documentBaseUrl:typeof document>`u`?`http://localhost/`:document.baseURI}}function je(e){return e.startsWith(`/`)?`.${e}`:e}var Me=class extends Error{constructor(e,t,n){super(U(`en`,{})(e,t,n)),this.messageKey=e,this.fallback=t,this.parameters=n,this.name=`UserFacingError`}},Ne=/\{([a-zA-Z][a-zA-Z0-9_]*)\}/gu;function H(e){return[...new Set([...e.matchAll(Ne)].map(e=>e[1]??``))].sort()}function U(e,t){return(n,r,i={})=>{let a=e===`en`||!Object.hasOwn(t,n)?void 0:t[n];return(a!==void 0&&H(a).join(`,`)===H(r).join(`,`)?a:r).replace(Ne,(e,t)=>Object.hasOwn(i,t)?String(i[t]):e)}}function Pe(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Invalid translation catalog`);let t=[];for(let[n,r]of Object.entries(e)){if(n===``||typeof r!=`string`)throw Error(`Invalid translation catalog`);t.push([n,r])}return Object.fromEntries(t)}var Fe=U(`en`,{}),Ie=`en`,Le=(e,t,n)=>Fe(e,t,n);function Re(e,t){Fe=U(e,Pe(t)),Ie=e}function ze(){return Ie}var Be={sessionsDeleteArchived:`sessions.deleteArchived`,sessionsBulkMutations:`sessions.bulkMutations`,sessionsCleanup:`sessions.cleanup`,sessionsReload:`sessions.reload`,sessionsClearQueue:`sessions.clearQueue`,sessionsQueueMessageActions:`sessions.queueMessageActions`,sessionsPersistedState:`sessions.persistedState`,sessionsNotifications:`sessions.notifications`,sessionsUnread:`sessions.unread`,sessionsAskUser:`sessions.askUser`,promptAttachments:`prompt.attachments`,workspaceFileSuggestions:`workspace.fileSuggestions`,piPackagesManage:`piPackages.manage`,selectedMachineSettings:`settings.selectedMachine`,agentProfileConfig:`settings.agentProfile`,pluginLifecycle:`plugins.lifecycle`},Ve=1e3,He=32768,Ue=8192,We=`pi-web.ask.answers`,Ge=1e3,Ke=4e3,qe=1e3,Je=4e3,Ye=1e4,Xe=/^[a-z][a-z0-9.-]*$/u,Ze=new Set([`core`,`themes`]),Qe=`machine.`,$e=`pi-web`,et=`${$e}.`;function tt(e){return Xe.test(e)}function nt(e){return e===$e||e.startsWith(et)}function rt(e){return Ze.has(e)||e.startsWith(Qe)||nt(e)}var W=262144,it=8388608,at=266240,ot=8392704,st=266240,ct=65536,G=69632,lt=1048576,ut=1e4,dt=2048;Object.freeze([`/paired-plugin-backends/:pluginId/:operation`,`/paired-plugin-backends/:pluginId/projects/:projectId/:operation`,`/paired-plugin-backends/:pluginId/projects/:projectId/workspaces/:workspaceId/:operation`]),Object.freeze([`/paired-plugin-backends/:pluginId/channels/:operation`,`/paired-plugin-backends/:pluginId/projects/:projectId/channels/:operation`,`/paired-plugin-backends/:pluginId/projects/:projectId/workspaces/:workspaceId/channels/:operation`]);function ft(e){let t=e.scope,n=e.projectId,r=e.workspaceId;if(t===void 0&&n===void 0&&r===void 0)return{};if(t!==`machine`&&t!==`project`&&t!==`workspace`)throw Error(`Plugin backend scope must be machine, project, or workspace`);for(let e of[n,r])if(e!==void 0&&(typeof e!=`string`||e===``||e.length>512))throw Error(`Plugin backend scope ids must be non-empty strings of at most 512 characters`);if(t===`machine`&&(n!==void 0||r!==void 0))throw Error(`Machine scope cannot contain project or workspace ids`);if(t===`project`&&r!==void 0)throw Error(`Project scope cannot contain a workspace id`);return{scope:t,...typeof n==`string`?{projectId:n}:{},...typeof r==`string`?{workspaceId:r}:{}}}function pt(e,t){let n=e.workspaceId===void 0?e.projectId===void 0?`machine`:`project`:`workspace`;if(t===void 0)return n;if(n!==`workspace`&&t.scope===void 0)throw Error(`Scoped plugin backend calls require an explicit scope`);if(t.scope!==void 0&&t.scope!==n||t.projectId!==void 0&&t.projectId!==e.projectId||t.workspaceId!==void 0&&t.workspaceId!==e.workspaceId)throw Error(`Plugin backend wire scope does not match route authority`);return n}function mt(e,t=!1){let n=[``,`paired-plugin-backends`,encodeURIComponent(e.pluginId)];return e.projectId!==void 0&&n.push(`projects`,encodeURIComponent(e.projectId)),e.workspaceId!==void 0&&n.push(`workspaces`,encodeURIComponent(e.workspaceId)),t&&n.push(`channels`),n.push(encodeURIComponent(e.operation)),n.join(`/`)}var ht=/^[a-z][a-z0-9.-]*$/u,gt=/^[a-z][a-z0-9.-]*$/u,_t=64;function vt(e){return e.length<=128&&ht.test(e)}function yt(e){if(!vt(e))throw Error(`Plugin backend operation must match ${String(ht)} and be at most 128 characters`);return e}function bt(e){if(typeof e!=`string`||e===``||e.length>512)throw Error(`Plugin backend revision must be a non-empty string of at most 512 characters`);return e}function K(e,t,n=W){let r=Y(e,new Set,t,0);if(q(JSON.stringify(r))>n)throw Error(`${t} exceeds the ${String(n)} byte limit`);return r}function xt(e,t,n=W){if(q(e)>n)throw Error(`${t} exceeds the ${String(n)} byte limit`);let r;try{r=JSON.parse(e)}catch(e){throw Error(`${t} must be valid JSON`,{cause:e})}return K(r,t,n)}function St(e,t,n={}){return Et({version:1,kind:`open`,...ft({...n}),revision:bt(e),input:K(t,`Plugin backend channel open input`,W)},`Plugin backend channel open envelope`,st)}function Ct(e){return Et({version:1,kind:`data`,data:K(e,`Plugin backend channel data`,ct)},`Plugin backend channel data envelope`,G)}function wt(e){let t=Dt(e,`Plugin backend channel server frame`);if(kt(t),t.kind===`ready`)return J(e,G,`Plugin backend channel ready frame`),Object.freeze({version:1,kind:`ready`});if(t.kind===`data`)return Ot(t,e);if(t.kind===`error`)return J(e,G,`Plugin backend channel error frame`),Object.freeze({version:1,kind:`error`,code:At(t.code),message:jt(t.message)});throw Error(`Plugin backend channel server frame kind is invalid`)}function Tt(e){if(typeof e!=`string`)throw Error(`Plugin backend channel close reason must be a string`);if(q(e)>120)throw Error(`Plugin backend channel close reason exceeds the 120 byte limit`);return e}function q(e){return new TextEncoder().encode(e).byteLength}function Et(e,t,n){let r=JSON.stringify(e);return J(r,n,t),r}function Dt(e,t){J(e,st,t);let n;try{n=JSON.parse(e)}catch(e){throw Error(`${t} must be valid JSON`,{cause:e})}if(!Nt(n))throw Error(`${t} must be an object`);return n}function Ot(e,t){return J(t,G,`Plugin backend channel data frame`),Object.freeze({version:1,kind:`data`,data:K(e.data,`Plugin backend channel data`,ct)})}function kt(e){if(e.version!==1)throw Error(`Plugin backend channel frame version is unsupported`)}function At(e){if(typeof e!=`string`||e.length>64||!gt.test(e))throw Error(`Plugin backend channel error code is invalid`);return e}function jt(e){if(typeof e!=`string`||e===``)throw Error(`Plugin backend channel error message must be a non-empty string`);if(q(e)>2048)throw Error(`Plugin backend channel error message exceeds the ${String(dt)} byte limit`);return e}function J(e,t,n){if(q(e)>t)throw Error(`${n} exceeds the ${String(t)} byte limit`)}function Y(e,t,n,r){if(r>_t)throw Error(`${n} exceeds the maximum JSON depth of ${String(_t)}`);if(e===null||typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw Error(`${n} must contain only finite JSON numbers`);return e}if(Array.isArray(e)){if(t.has(e))throw Error(`${n} must not contain cycles`);t.add(e);let i=e.map(e=>Y(e,t,n,r+1));return t.delete(e),Object.freeze(i),i}if(!Nt(e))throw Error(`${n} must contain only JSON values`);if(t.has(e))throw Error(`${n} must not contain cycles`);t.add(e);let i={};for(let[a,o]of Object.entries(e))Mt(i,a,Y(o,t,n,r+1));return t.delete(e),Object.freeze(i)}function Mt(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0})}function Nt(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}var Pt=`pi-web.terminal`,X=`management`;function Ft(e=Ut()){return Q(e)===X||e===Ut()&&Z()!==void 0&&Q(Z()?.search)===X}function It(e=$()){return Ft(e?.search)?`management`:`normal`}function Lt(e,t=$(),n=`management`){return Bt(e,t,n,!0)}function Rt(e,t=$(),n=`management`){return Bt(e,t,n,!1)}function zt(e){if(e!==`management`||globalThis.history===void 0)return;let t=$();t!==void 0&&Vt(t)?.token!==void 0&&(t.searchParams.delete(`token`),globalThis.history.replaceState(globalThis.history.state,``,`${t.pathname}${t.search}${t.hash}`))}function Bt(e,t,n,r){if(n===`normal`||t===void 0)return e;let i=Vt(t);if(i===void 0)return e;let a=new URL(e,t.origin);return a.searchParams.set(`embed`,i.embed),i.token!==void 0&&a.searchParams.set(`token`,i.token),`${a.pathname}${a.search}${r?a.hash:``}`}function Vt(e){let t=Ht(e);return t===void 0?Ht(Z()):t}function Ht(e){if(e===void 0)return;let t=Q(e.search),n=e.searchParams.get(`token`)?.trim();if(t===X)return{embed:t,...n===void 0||n===``?{}:{token:n}}}function Z(){if(typeof window<`u`&&window.parent!==window)try{return new URL(window.parent.location.href)}catch{return}}function Q(e){if(e===void 0||e===``)return;let t=new URLSearchParams(e).get(`embed`)?.trim();return t===``?void 0:t}function Ut(){return typeof window>`u`?void 0:window.location.search}function $(){if(globalThis.location===void 0)return;let e=globalThis.location;if(typeof e.href==`string`&&e.href!==``)return new URL(e.href);let t=typeof e.protocol==`string`&&e.protocol!==``?e.protocol:`http:`,n=typeof e.host==`string`&&e.host!==``?e.host:`localhost`,r=typeof e.search==`string`?e.search:``;return new URL(`${t}//${n}/${r}`)}export{o as $,qe as A,U as B,nt as C,Ke as D,We as E,Ve as F,z as G,ke as H,ze as I,ge as J,A as K,Re as L,Ue as M,Ye as N,Ge as O,He as P,m as Q,Le as R,q as S,rt as T,V as U,Oe as V,j as W,_e as X,Te as Y,h as Z,Tt as _,Rt as a,Ct as b,lt as c,it as d,a as et,K as f,pt as g,wt as h,Lt as i,Be as j,Je as k,at as l,xt as m,Ft as n,Pt as o,mt as p,ve as q,zt as r,ut as s,It as t,ot as u,yt as v,tt as w,St as x,bt as y,Me as z};
@@ -1 +0,0 @@
1
- import{C as e,T as t,V as n,i as r,n as i,o as a,w as o,y as s}from"./managementEmbed-Bx8Mwzdw.js";var c=`machine.`;function l(e,n){if(f(e,n),t(n))throw Error(`Reserved PI WEB plugin id: ${n}`);return p(e,n)}function u(t,n){if(f(t,n),!e(n))throw Error(`PI WEB bundled plugin id is required: ${n}`);return p(t,n)}function d(t,n){return e(n)?u(t,n):l(t,n)}function f(e,t){if(e===``)throw Error(`Machine id is required`);if(!o(t))throw Error(`Invalid PI WEB plugin id: ${t}`)}function p(e,t){return`${c}${m(e)}.${t}`}function m(e){return[...new TextEncoder().encode(e)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}function h(e){return{id:e.id,cwd:e.cwd,...e.name===void 0?{}:{name:e.name},...e.metadata===void 0?{}:{metadata:structuredClone(e.metadata)},archived:e.archived===!0,pending:`clientPendingStart`in e&&e.clientPendingStart===!0}}function g(e){let t=e.selectedSession,n=e.selectedMachine,r=e.selectedProject,i=e.selectedWorkspace;return{...n===void 0?{}:{selectedMachine:{id:n.id,name:n.name,kind:n.kind}},...r===void 0?{}:{selectedProject:{id:r.id,name:r.name,path:r.path}},...i===void 0?{}:{selectedWorkspace:{id:i.id,projectId:i.projectId,path:i.path,label:i.label,isMain:i.isMain,...i.branch===void 0?{}:{branch:i.branch},...i.isGitRepo===void 0?{}:{isGitRepo:i.isGitRepo},...i.isGitWorktree===void 0?{}:{isGitWorktree:i.isGitWorktree},...i.provider===void 0?{}:{provider:structuredClone(i.provider)},...i.removal===void 0?{}:{removal:{actionLabel:i.removal.actionLabel,confirmation:i.removal.confirmation}}}},...t===void 0?{}:{selectedSession:h(t)}}}function _(e){return{...g(e),...e.workspaceTool===void 0?{}:{workspaceTool:e.workspaceTool},mainView:e.mainView===`navigation`||e.mainView===`chat`?e.mainView:`workspace`,...e.piWebStatus===void 0?{}:{piWebStatus:e.piWebStatus}}}function v(e){return{...e,state:_(e.state)}}function y(e){return{...e,async activate(t){let n=await e.activate(t),{actions:r,applicationPanels:i,workspacePanels:a,workspaceLabels:o,sessionLabels:s}=n.contributions;return{...n,...n.start===void 0?{}:{start:n.start.bind(n)},...n.dispose===void 0?{}:{dispose:n.dispose.bind(n)},contributions:{...n.contributions,...r===void 0?{}:{actions:r.map(({enabled:e,disabledReason:t,run:n,...r})=>({...r,...e===void 0?{}:{enabled:t=>e(v(t))},...t===void 0?{}:{disabledReason:e=>t(v(e))},run:e=>n(v(e))}))},...i===void 0?{}:{applicationPanels:i.map(({visible:e,badge:t,render:n,...r})=>({...r,...e===void 0?{}:{visible:t=>e(v(t))},...t===void 0?{}:{badge:e=>t(v(e))},render:e=>n(v(e))}))},...a===void 0?{}:{workspacePanels:a.map(({visible:e,fileOpenQuery:t,badge:n,onInvalidate:r,render:i,...a})=>({...a,...e===void 0?{}:{visible:t=>e(v(t))},...t===void 0?{}:{fileOpenQuery:(e,n)=>t(v(e),n)},...n===void 0?{}:{badge:e=>n(v(e))},...r===void 0?{}:{onInvalidate:(e,t)=>r(v(e),t)},render:e=>i(v(e))}))},...o===void 0?{}:{workspaceLabels:o.map(({visible:e,items:t,...n})=>({...n,...e===void 0?{}:{visible:t=>e(v(t))},items:e=>t(v(e))}))},...s===void 0?{}:{sessionLabels:s.map(({visible:e,items:t,...n})=>({...n,...e===void 0?{}:{visible:t=>e(v(t))},items:e=>t(v(e))}))}}}}}}async function b(e=`pi-web-plugins/manifest.json`,t={}){let i=n(r(e)),a=await w(i,t.manifest),o=[],s=[],c=[],l=a.plugins.filter(e=>t.shouldLoadPlugin?.(e)!==!1).sort((e,t)=>Number(t.scope===`bundled`)-Number(e.scope===`bundled`)),u=t.moduleLoader??S,d=new Map,f=e=>{let t=d.get(e);if(t!==void 0)return t;let n=(async()=>{let t=x(e.module,i);return N(await C(t,u),t)})();return n.catch(()=>void 0),d.set(e,n),n},p=a.terminalMode===`required`&&l[0]?.id===`pi-web.terminal`;p||l.forEach(e=>{f(e)});for(let[e,n]of l.entries()){let r=M(n,t.machineId);o.push(r);try{let t=await f(n);p&&e===0&&l.slice(1).forEach(e=>{f(e)}),s.push({...r,plugin:t,...n.backendRevision===void 0?{}:{backendRevision:n.backendRevision},...n.pairedRequestVersion===void 0?{}:{pairedRequestVersion:n.pairedRequestVersion},...n.pairedChannelVersion===void 0?{}:{pairedChannelVersion:n.pairedChannelVersion}})}catch(e){if(c.push({entry:n,error:e}),a.terminalMode===`required`&&n.id===`pi-web.terminal`)return{terminalMode:a.terminalMode,declarations:o,registrations:[],failures:c}}}return{terminalMode:a.terminalMode,declarations:o,registrations:s,failures:c}}function x(e,t,r){return e.startsWith(`/`)?r===void 0?n(e):n(e,r):new URL(e,t).toString()}async function S(e){return import(e)}async function C(e,t){let n,r=new Promise((t,r)=>{n=setTimeout(()=>{r(Error(`Browser plugin import timed out after 10000ms: ${e}`))},1e4)});try{return await Promise.race([Promise.resolve().then(()=>t(e)),r])}finally{clearTimeout(n)}}async function w(e,t){if(t!==void 0)return T(t);let n=await fetch(e,{cache:`no-store`});if(!n.ok)throw Error(await O(n));return T(await n.json())}function T(n){if(!F(n)||!Array.isArray(n.plugins))throw Error(`Invalid plugin manifest`);if(n.lifecycleVersion!==2)throw Error(`Unsupported plugin manifest lifecycle version`);let r=D(n.terminalMode),s=n.plugins.map(n=>{if(!F(n)||typeof n.id!=`string`||typeof n.module!=`string`||n.module===``)throw Error(`Invalid plugin manifest entry`);let r=n.id;if(!o(r))throw Error(`Invalid plugin manifest id: ${r}`);let i=E(n.source),a=E(n.scope);if(t(r)&&!(e(r)&&i===`bundled`&&a===`bundled`))throw Error(`Reserved plugin manifest id: ${r}`);let s=k(n.backendRevision),c=A(n.pairedRequestVersion),l=A(n.pairedChannelVersion);if((c!==void 0||l!==void 0)&&s===void 0)throw Error(`Invalid plugin manifest entry`);return{id:r,module:n.module,...s===void 0?{}:{backendRevision:s},...c===void 0?{}:{pairedRequestVersion:c},...l===void 0?{}:{pairedChannelVersion:l},...i===void 0?{}:{source:i},...a===void 0?{}:{scope:a},machineSpecific:j(n.machineSpecific)}}),c=new Set;for(let e of s){if(c.has(e.id))throw Error(`Duplicate plugin manifest id: ${e.id}`);c.add(e.id)}let l=s.find(({id:e})=>e===a);if(r===`required`&&!i()){if(l===void 0||s[0]!==l||!l.machineSpecific)throw Error(`Required Terminal plugin manifest entry is unavailable or out of order`);if(l.backendRevision===void 0||l.pairedRequestVersion!==1||l.pairedChannelVersion!==1)throw Error(`Required Terminal plugin manifest entry is incompatible`)}else if(r===`recovery-disabled`&&l!==void 0)throw Error(`Recovery-disabled plugin manifest must not publish Terminal`);return{terminalMode:r,plugins:s}}function E(e){return typeof e==`string`?e:void 0}function D(e){if(e===`required`||e===`recovery-disabled`)return e;throw Error(`Invalid plugin manifest Terminal mode`)}async function O(e){let t;try{let n=await e.json();if(F(n)){let e=n.error,r=n.detail,i=n.message;t=typeof r==`string`?`${typeof e==`string`?`${e}: `:``}${r}`:typeof i==`string`?i:typeof e==`string`?e:void 0}}catch{}return`Failed to load plugin manifest (${`${String(e.status)}${e.statusText===``?``:` ${e.statusText}`}`})${t===void 0?``:`: ${t}`}`}function k(e){if(e!==void 0)try{return s(e)}catch{throw Error(`Invalid plugin manifest entry`)}}function A(e){if(e!==void 0){if(e!==1)throw Error(`Invalid plugin manifest entry`);return e}}function j(e){if(e===void 0)return!1;if(typeof e!=`boolean`)throw Error(`Invalid plugin manifest entry`);return e}function M(e,t){return Object.freeze({id:t===void 0?e.id:d(t,e.id),machineSpecific:e.machineSpecific,...e.source===void 0?{}:{manifestSource:e.source},...e.scope===void 0?{}:{manifestScope:e.scope},...t===void 0?{}:{machineId:t,sourcePluginId:e.id}})}function N(e,t){if(!F(e))throw Error(`Plugin module ${t} did not export an object`);let n=e.default;if(F(n)&&n.apiVersion!==4&&n.apiVersion!==5)throw Error(`Unsupported browser plugin API version for ${t}: ${String(n.apiVersion)} (expected 4 or 5)`);if(!P(n))throw Error(`Plugin module ${t} default export is not a PiWebPlugin`);return y(n)}function P(e){return F(e)&&(e.apiVersion===4||e.apiVersion===5)&&typeof e.name==`string`&&typeof e.activate==`function`}function F(e){return typeof e==`object`&&!!e}var I=`modulepreload`,L=function(e,t){return new URL(e,t).href},R={},z=function(e){return e.pathname.endsWith(`.css`)},B=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},V=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=L(t,n);let r=s(t),i=z(r);return B(R,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:I,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};export{u as a,h as i,b as n,g as r,V as t};
@@ -1,11 +0,0 @@
1
- # 船长日志(Captain's Log)
2
-
3
- 让戏剧化的海盗船长转述选中会话最新已完成的助手回复,保留重要事实、警告和后续步骤。浏览器面板通过后端与原生 Pi 伴随扩展交互,不向源会话发送提示或修改转录。
4
-
5
- 此示例随 PI WEB 预构建分发,但**默认不安装、不启用**。使用时,在目标机器的“设置 → Pi 包 → 可用包”中安装,再到“设置 → PI WEB 插件”中显式启用。也可使用目标机器的 Pi 配置执行 `pi install /absolute/path/to/dist/pi-packages/captains-log`。
6
-
7
- 服务端入口需要从承载会话之外手动重启目标 session daemon 才能激活,随后刷新浏览器。重启可能中断正在运行的会话;现有会话还需执行 `/reload` 加载伴随扩展。
8
-
9
- 选择会话,打开工作区的“船长日志”,点击“让船长转述”。此操作使用你配置的模型,可能产生费用,源文本会发送给模型提供方。这是受信任的代理代码,不是只读沙箱。打开面板本身不会发起模型调用。详情见[使用与恢复](docs/usage.md)。
10
-
11
- 维护者:仓库根目录的 `npm run build` 在 `dist/pi-packages/captains-log/` 生成可安装副本,本示例不单独发布到 npm。
@@ -1,29 +0,0 @@
1
- // Generated from pi-packages/captains-log/src/browser/channelProtocol.ts. Do not edit directly.
2
- import { isLogEntry, UUID } from "./protocol.js";
3
- /** Browser peer contract: open `log` with null; requests are only `list`/`read` snapshots. */
4
- export const LOG_CHANNEL = "log";
5
- export function isCaptainClientFrame(value) {
6
- if (value === null || typeof value !== "object")
7
- return false;
8
- return "type" in value && value.type === "translate"
9
- && "requestId" in value && typeof value.requestId === "string" && UUID.test(value.requestId)
10
- && "sourceSessionId" in value && typeof value.sourceSessionId === "string" && !!value.sourceSessionId.trim() && value.sourceSessionId.length <= 512;
11
- }
12
- export function isCaptainServerFrame(value) {
13
- if (value === null || typeof value !== "object" || !("type" in value))
14
- return false;
15
- switch (value.type) {
16
- case "entry": return "entry" in value && isLogEntry(value.entry) && "saved" in value && typeof value.saved === "boolean";
17
- case "text": return "id" in value && typeof value.id === "string" && UUID.test(value.id) && "text" in value && typeof value.text === "string" && value.text.length <= 4000;
18
- case "admitted": return "requestId" in value && typeof value.requestId === "string" && UUID.test(value.requestId) && "id" in value && typeof value.id === "string" && UUID.test(value.id);
19
- case "rejected": return "requestId" in value && typeof value.requestId === "string" && UUID.test(value.requestId) && "message" in value && typeof value.message === "string";
20
- default: return false;
21
- }
22
- }
23
- /** Reset text with each entry, then append bounded chunks. Even escaped Unicode fits host frames. */
24
- export function entryFrames(entry, saved) {
25
- const frames = [{ type: "entry", entry: { ...entry, stages: [...entry.stages], text: "" }, saved }];
26
- for (let offset = 0; offset < entry.text.length; offset += 4000)
27
- frames.push({ type: "text", id: entry.id, text: entry.text.slice(offset, offset + 4000) });
28
- return frames;
29
- }
@@ -1,143 +0,0 @@
1
- var e;function t(t){e=t}var n=(t,n,r)=>e?.(t,n,r)??n.replace(/\{([A-Za-z0-9_]+)\}/g,(e,t)=>String(r?.[t]??e)),r=48e3,i=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;function a(e){return typeof e!=`object`||!e?!1:`id`in e&&typeof e.id==`string`&&i.test(e.id)&&`createdAt`in e&&typeof e.createdAt==`string`&&`sessionId`in e&&typeof e.sessionId==`string`&&e.sessionId.length<=512&&(!(`sourceSessionId`in e)||e.sourceSessionId===void 0||typeof e.sourceSessionId==`string`&&!!e.sourceSessionId.trim()&&e.sourceSessionId.length<=512)&&`question`in e&&typeof e.question==`string`&&e.question.length<=8e3&&`status`in e&&[`running`,`completed`,`failed`,`interrupted`].includes(String(e.status))&&(!(`failureCode`in e)||e.failureCode===void 0||typeof e.failureCode==`string`&&[`session-unavailable`,`request-failed`,`interrupted`].includes(e.failureCode))&&`stages`in e&&Array.isArray(e.stages)&&e.stages.length<=16&&e.stages.every(e=>typeof e==`string`&&e.length<=256)&&`text`in e&&typeof e.text==`string`&&e.text.length<=48e3}function o(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var s=o();function c(e){s=e}var l={exec:()=>null};function u(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function d(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(p.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var f=((e=``)=>{try{return!!RegExp(`(?<=1)(?<!1)`+e)}catch{return!1}})(),p={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/,numericCharacterReferenceOrAmpersand:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:u(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:u(e=>RegExp(`^ {0,${e}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:u(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:u(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:u(e=>RegExp(`^ {0,${e}}(?:</?(?:${S})(?: +|$|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)`,`i`)),blockquoteBeginRegex:u(e=>RegExp(`^ {0,${e}}>`))},m=/^(?:[ \t]*(?:\n|$))+/,h=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,g=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,_=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ee=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,v=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,y=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,te=d(y).replace(/bull/g,v).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),ne=d(y).replace(/bull/g,v).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),b=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,re=/^[^\n]+/,x=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,ie=d(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,x).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ae=d(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,v).getRegex(),S=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,C=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,oe=d(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!(?:script|pre|style|textarea)(?![a-z0-9-]))([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,C).replace(`tag`,S).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),w=e=>d(b).replace(`hr`,_).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,e).replace(`html`,` {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)`).replace(`tag`,S).getRegex(),se=w(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),ce=w(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),T={blockquote:d(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,ce).getRegex(),code:h,def:ie,fences:g,heading:ee,hr:_,html:oe,lheading:te,list:ae,newline:m,paragraph:se,table:l,text:re},le=d(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,_).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,` {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)`).replace(`tag`,S).getRegex(),ue={...T,lheading:ne,table:le,paragraph:d(b).replace(`hr`,_).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,le).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,` {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)`).replace(`tag`,S).getRegex()},de={...T,html:d(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,C).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:l,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:d(b).replace(`hr`,_).replace(`heading`,` *#{1,6} *[^
2
- ]`).replace(`lheading`,te).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},fe=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,pe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,me=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,he=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,E=/[\p{P}\p{S}]/u,D=/[\s\p{P}\p{S}]/u,O=/[^\s\p{P}\p{S}]/u,ge=d(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,D).getRegex(),_e=/[\p{Pi}\p{Ps}"']/u,ve=/(?!~)[\p{P}\p{S}]/u,ye=/(?!~)[\s\p{P}\p{S}]/u,be=/(?:[^\s\p{P}\p{S}]|~)/u,xe=d(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,f?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Se=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Ce=d(Se,`u`).replace(/punct/g,E).getRegex(),we=d(Se,`u`).replace(/punct/g,ve).getRegex(),Te=d(/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,`u`).replace(/openQuote/g,_e).replace(/punct/g,E).getRegex(),Ee=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,De=d(Ee,`gu`).replace(/notPunctSpace/g,O).replace(/punctSpace/g,D).replace(/punct/g,E).getRegex(),Oe=d(Ee,`gu`).replace(/notPunctSpace/g,be).replace(/punctSpace/g,ye).replace(/punct/g,ve).getRegex(),ke=d(`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,O).replace(/punctSpace/g,D).replace(/punct/g,E).getRegex(),Ae=d(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,O).replace(/punctSpace/g,D).replace(/punct/g,E).getRegex(),je=d(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,O).replace(/punctSpace/g,D).replace(/punct/g,E).getRegex(),Me=d(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,E).getRegex(),Ne=d(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,O).replace(/punctSpace/g,D).replace(/punct/g,E).getRegex(),Pe=d(/\\(punct)/,`gu`).replace(/punct/g,E).getRegex(),Fe=d(/(`+)(?:[^`]|[^`][\s\S]*?[^`])\1(?!`)|`+|\\(punct)/,`gu`).replace(/punct/g,E).getRegex(),Ie=d(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Le=d(C).replace(`(?:-->|$)`,`-->`).getRegex(),Re=d(`^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,Le).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),ze=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,k=d(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace(`brackets`,ze).getRegex(),Be=d(/^!?\[(label)\]\([ \t\n]*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?[ \t\n]*\)/).replace(`label`,k).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ve=d(/^!?\[(label)\]\[(ref)\]/).replace(`label`,k).replace(`ref`,x).getRegex(),He=d(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,x).getRegex(),A=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,Ue=d(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace(`brackets`,ze).getRegex(),We=d(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,d(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Ue).replace(`ref`,A).getRegex()).replace(`nolink`,d(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,A).getRegex()).getRegex(),j=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ge=d(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),M={_backpedal:l,anyPunctuation:Pe,anyPunctuationOutsideCode:Fe,autolink:Ie,blockSkip:xe,br:me,code:pe,del:l,delLDelim:l,delRDelim:l,emStrongLDelim:Ce,emStrongRDelimAst:De,emStrongRDelimUnd:Ae,escape:fe,link:Be,nolink:He,punctuation:ge,reflink:Ve,reflinkSearch:We,tag:Re,text:he,url:l},Ke={...M,emStrongLDelim:Te,emStrongRDelimAst:ke,emStrongRDelimUnd:je,link:d(/^!?\[(label)\]\((.*?)\)/).replace(`label`,k).getRegex(),reflink:d(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,k).getRegex()},N={...M,emStrongRDelimAst:Oe,emStrongLDelim:we,delLDelim:Me,delRDelim:Ne,url:d(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`emailProtocol`,Ge).replace(`protocol`,j).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:d(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace(`protocol`,j).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},qe={...N,br:d(me).replace(`{2,}`,`*`).getRegex(),text:d(N.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},P={normal:T,gfm:ue,pedantic:de},F={normal:M,gfm:N,breaks:qe,pedantic:Ke},Je={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},Ye=e=>Je[e];function I(e,t){if(t){if(p.escapeTest.test(e))return e.replace(p.escapeReplace,Ye)}else if(p.escapeTestNoEncode.test(e))return e.replace(p.escapeReplaceNoEncode,Ye);return e}function Xe(e){return p.numericCharacterReference.test(e)?e.replace(p.numericCharacterReferenceOrAmpersand,(e,t,n)=>{if(t===void 0&&n===void 0)return`&amp;`;let r=t===void 0?Number.parseInt(n,16):Number.parseInt(t,10);return r===0||r>1114111||r>=55296&&r<=57343?`�`:r===38?`&amp;`:String.fromCodePoint(r)}):e}function Ze(e){try{e=encodeURI(e).replace(p.percentDecode,`%`)}catch{return null}return e}function Qe(e,t){let n=e.replace(p.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(p.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t){if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``)}for(;r<n.length;r++)n[r]=n[r].trim().replace(p.slashPipe,`|`);return n}function L(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function R(e){let t=e.split(`
3
- `),n=t.length-1;for(;n>=0&&p.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
4
- `)}function z(e){return e.trim().toLowerCase().toUpperCase().toLowerCase()}function B(e,t){if(e.indexOf(t[0])===-1&&e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function V(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function H(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`),c=e[0].charAt(0)===`!`,l=r.state.inLink,u=r.state.linkEmitted,d=r.state.inRawBlock;r.state.inLink=!0,r.state.linkEmitted=!1;let f=r.inlineTokens(s),p=r.state.linkEmitted;if(r.state.linkEmitted=u,r.state.inLink=l,!c){if(p){r.state.inRawBlock=d;return}r.state.linkEmitted=!0}return{type:c?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:f}}function $e(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
5
- `).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return e.slice(Math.min(r.length,i.length))}).join(`
6
- `)}function U(e,t,n,r){if(!t.includes(`<`))return!1;for(let i=0;i<t.length;i++){if(t[i]===`\\`){i++;continue}if(t[i]==="`"){let e=r.inline.code.exec(t.slice(i));if(e){i+=e[0].length-1;continue}}if(t[i]!==`<`)continue;let a=e.slice(n+i),o=r.inline.tag.exec(a)||r.inline.autolink.exec(a);if(o){if(o[0].length>t.length-i)return!0;i+=o[0].length-1}}return!1}var W=class{options;rules;lexer;constructor(e){this.options=e||s}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:R(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=$e(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=L(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceTabChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:L(t[0],`
7
- `),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:L(t[0],`
8
- `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=L(t[0],`
9
- `).split(`
10
- `),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o=0;for(;o<e.length;o++)if(this.rules.other.blockquoteStart.test(e[o]))a.push(e[o]),t=!0;else if(!t)a.push(e[o]);else break;e=e.slice(o);let s=a.join(`
11
- `),c=s.replace(this.rules.other.blockquoteSetextReplace,`
12
- $1`).replace(this.rules.other.blockquoteSetextReplace2,``);n=n?`${n}
13
- ${s}`:s,r=r?`${r}
14
- ${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,i,!0),this.lexer.state.top=l,e.length===0)break;let u=i.at(-1);if(u?.type===`code`||u?.type===`heading`||u?.type===`hr`||u?.type===`html`)break;if(u?.type===`blockquote`){let t=u,a=e.join(`
15
- `),o=t.raw+`
16
- `+a.replace(this.rules.other.blockquoteSetextReplace2,``),s=this.blockquote(o);i[i.length-1]=s;let c=o.substring(s.raw.length).replace(/^\n/,``),l=c?c.split(`
17
- `).length:0,d=l?e.slice(0,-l):e;d.length>0&&(n=`${n}
18
- ${d.join(`
19
- `)}`),r=r.substring(0,r.length-t.text.length)+s.text;break}if(u?.type===`list`){let t=u,a=t.raw+`
20
- `+e.join(`
21
- `),o=this.list(a);i[i.length-1]=o,n=n.substring(0,n.length-u.raw.length)+o.raw,r=r.substring(0,r.length-t.raw.length)+o.raw,e=a.substring(i.at(-1).raw.length).split(`
22
- `)}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=e,r=()=>n.length-e.length,i=t[1].trim(),a=i.length>1,o={type:`list`,raw:``,ordered:a,start:a?+i.slice(0,-1):``,loose:!1,items:[]};i=a?`\\d{1,9}\\${i.slice(-1)}`:`\\${i}`,this.options.pedantic&&(i=a?i:`[*+-]`);let s=this.rules.other.listItemRegex(i),c=!1;for(;e;){let i=!1,a=``;if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;let l=r();e=e.substring(t[0].length);let u=t[2].split(`
23
- `,1)[0],d=t[1].length,f=this.options.pedantic?V(u,d):u.replace(this.rules.other.leadingSpaceTab,e=>V(e,d)),p=e.split(`
24
- `,1)[0],m=!f.trim(),h=0;if(this.options.pedantic?(h=2,a=f.trimStart()):m?h=d+1:(h=f.search(this.rules.other.nonSpaceChar),h=h>4?1:h,a=f.slice(h),h+=d),m&&this.rules.other.blankLine.test(p)&&(e=e.substring(p.length+1),i=!0),!i){let t=this.rules.other.nextBulletRegex(h),n=this.rules.other.hrRegex(h),r=this.rules.other.fencesBeginRegex(h),i=this.rules.other.headingBeginRegex(h),o=this.rules.other.htmlBeginRegex(h),s=this.rules.other.blockquoteBeginRegex(h);for(;e;){let c=e.split(`
25
- `,1)[0],l;if(p=c,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting,` `),l=p):l=p.replace(this.rules.other.leadingSpaceTab,e=>V(e)),r.test(p)||i.test(p)||o.test(p)||s.test(p)||t.test(p)||n.test(p))break;if(l.search(this.rules.other.nonSpaceChar)>=h||!p.trim())a+=`
26
- `+l.slice(h);else{if(m||f.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||r.test(f)||i.test(f)||n.test(f))break;a+=`
27
- `+p}m=!p.trim(),e=e.substring(c.length+1),f=l.slice(h)}}let g=n.slice(l,r());o.loose||(c?o.loose=!0:this.rules.other.doubleBlankLine.test(g)&&(c=!0)),o.items.push({type:`list_item`,raw:g,task:!!this.options.gfm&&this.rules.other.listIsTask.test(a),loose:!1,text:a,tokens:[]})}let l=o.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;o.raw=n.slice(0,r()).trimEnd();for(let e of o.items)if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),!o.loose){let t=e.tokens.filter(e=>e.type===`space`);o.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}for(let e of o.items){let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,o.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1}if(o.loose)for(let e of o.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return o}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=R(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){if(!this.rules.other.startAngleBracket.test(t[2])&&B(t[2],`()`)!==-1)return;let e=z(t[1]).replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:L(t[0],`
28
- `),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Qe(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(`
29
- `):[],a={type:`table`,raw:L(t[0],`
30
- `),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push(Qe(e,a.header.length).map((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:L(t[0],`
31
- `),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===`
32
- `?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){if(this.lexer.state.linkParenPossible===!1)return;let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)===`!`?2:1;if(!this.options.pedantic&&U(e,t[1],n,this.rules))return;let r=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let e=L(r.slice(0,-1),`\\`);if((r.length-e.length)%2==0)return}else{let e=B(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let i=t[2],a=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(i);e&&(i=e[1],a=e[3])}else a=t[3]?t[3].slice(1,-1):``;return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(i=this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?i.slice(1):i.slice(1,-1)),H(t,{href:i&&i.replace(this.rules.inline.anyPunctuation,`$1`),title:a&&a.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=n[0].charAt(0)===`!`?2:1;if(!this.options.pedantic&&U(e,n[1],r,this.rules))return;let i=t[z((n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `))];if(!i){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return H(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...r[0]].length-1,a,o,s=i,c=0,l=r[0][0],u=n===l,d=l===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,t=t.slice(-1*e.length+i);(r=d.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){s+=o;continue}if(r[5]||r[6]){if(i%3&&!((i+o)%3)){c+=o;continue}if(u)break}if(s-=o,s>0)continue;o=Math.min(o,o+s+c);let t=[...r[0]][0].length,n=e.slice(0,i+r.index+t+o);if(Math.min(i,o)%2){let e=n.slice(1,-1);return{type:`em`,raw:n,text:e,tokens:this.lexer.inlineTokens(e)}}let l=n.slice(2,-2);return{type:`strong`,raw:n,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,autolink:!0,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,autolink:!0,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:e?t[0]:Xe(t[0]),escaped:e}}}},G=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||s,this.options.tokenizer=this.options.tokenizer||new W,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,linkParenPossible:!0,top:!0};let t={other:p,block:P.normal,inline:F.normal};this.options.pedantic?(t.block=P.pedantic,t.inline=F.pedantic):this.options.gfm&&(t.block=P.gfm,t.inline=this.options.breaks?F.breaks:F.gfm),this.tokenizer.rules=t}static get rules(){return{block:P,inline:F}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(p.carriageReturn,`
33
- `),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(p.tabCharGlobal,` `).replace(p.spaceLine,``));let r=1/0;for(;e;){if(e.length<r)r=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(n=>(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=`
34
- `:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
35
- `)?``:`
36
- `)+i.raw,n.text+=`
37
- `+i.text,this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if((i=this.tokenizer.fences(e))||(i=this.tokenizer.heading(e))||(i=this.tokenizer.hr(e))||(i=this.tokenizer.blockquote(e))||(i=this.tokenizer.list(e))||(i=this.tokenizer.html(e))){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
38
- `)?``:`
39
- `)+i.raw,n.text+=`
40
- `+i.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},t.push(i));continue}if((i=this.tokenizer.table(e))||(i=this.tokenizer.lheading(e))){e=e.substring(i.raw.length),t.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(a=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let r=t.at(-1);n&&r?.type===`paragraph`?(r.raw+=(r.raw.endsWith(`
41
- `)?``:`
42
- `)+i.raw,r.text+=`
43
- `+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length)}else if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(`
44
- `)?``:`
45
- `)+i.raw,n.text+=`
46
- `+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i)}else if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes(`[`))return!1;let t=this.tokenizer.rules.inline.link;for(let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(n[0])&&e.charAt(n.index-1)!==`!`)return!0;for(let t of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let e=t[0],n=e.lastIndexOf(`[`);if(e.charAt(0)!==`!`&&Object.hasOwn(this.tokens.links,z(e.slice(n+1,-1)))&&!(n>1&&this.linkInText(e.slice(1,n-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=this.state.linkParenPossible;this.state.linkParenPossible=n&&e.includes(`)`);try{return this.#e(e,t)}finally{this.state.linkParenPossible=n}}#e(e,t){let n=e;if(this.tokens.links&&e.includes(`[`)){let e=this.tokenizer.rules.inline.reflinkSearch,t=n=>{let r=n.lastIndexOf(`[`);if(!Object.hasOwn(this.tokens.links,z(n.slice(r+1,-1))))return n;if(r>1&&n.charAt(0)!==`!`){let i=n.slice(1,r-1);if(this.linkInText(i))return`[`+i.replace(e,t)+`][`+`a`.repeat(n.length-r-2)+`]`}return`[`+`a`.repeat(n.length-2)+`]`};n=n.replace(e,t)}n=n.replace(this.tokenizer.rules.inline.anyPunctuationOutsideCode,(e,t,n)=>n?`+`.repeat(e.length):t?t+e.slice(t.length,-t.length).replace(/`/g,`+`)+t:e),n=n.replace(this.tokenizer.rules.inline.blockSkip,(e,t,n)=>{let r=n?n.length:0;return e.slice(0,r)+`[`+`a`.repeat(e.length-r-2)+`]`}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let r=!1,i=``,a=1/0;for(;e;){if(e.length<a)a=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}r||(i=``),r=!1;let o;if(this.options.extensions?.inline?.some(n=>(o=n.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if((o=this.tokenizer.escape(e))||(o=this.tokenizer.tag(e))||(o=this.tokenizer.link(e))){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let n=t.at(-1);o.type===`text`&&n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if((o=this.tokenizer.emStrong(e,n,i))||(o=this.tokenizer.codespan(e))||(o=this.tokenizer.br(e))||(o=this.tokenizer.del(e,n,i))||(o=this.tokenizer.autolink(e))||!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(o=this.tokenizer.inlineText(s)){e=e.substring(o.raw.length),o.raw.slice(-1)!==`_`&&(i=o.raw.slice(-1)),r=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o)}else if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},K=class{options;parser;constructor(e){this.options=e||s}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(p.notSpaceStart)?.[0],i=e?e.replace(p.endingNewline,``)+`
47
- `:``;return r?`<pre><code class="language-`+I(r)+`">`+(n?i:I(i,!0))+`</code></pre>
48
- `:`<pre><code>`+(n?i:I(i,!0))+`</code></pre>
49
- `}blockquote({tokens:e}){return`<blockquote>
50
- ${this.parser.parse(e)}</blockquote>
51
- `}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
52
- `}hr(e){return`<hr>
53
- `}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t<e.items.length;t++){let n=e.items[t];r+=this.listitem(n)}let i=t?`ol`:`ul`,a=t&&n!==1?` start="`+n+`"`:``;return`<`+i+a+`>
54
- `+r+`</`+i+`>
55
- `}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
56
- `}checkbox({checked:e}){return`<input `+(e?`checked="" `:``)+`disabled="" type="checkbox"> `}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
57
- `}table(e){let t=``,n=``;for(let t=0;t<e.header.length;t++)n+=this.tablecell(e.header[t]);t+=this.tablerow({text:n});let r=``;for(let t=0;t<e.rows.length;t++){let i=e.rows[t];n=``;for(let e=0;e<i.length;e++)n+=this.tablecell(i[e]);r+=this.tablerow({text:n})}return r&&=`<tbody>${r}</tbody>`,`<table>
58
- <thead>
59
- `+t+`</thead>
60
- `+r+`</table>
61
- `}tablerow({text:e}){return`<tr>
62
- ${e}</tr>
63
- `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
64
- `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${I(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:r,autolink:i}){let a=i?I(n,!0):this.parser.parseInline(r),o=Ze(e);if(o===null)return a;e=I(o,i);let s=`<a href="`+e+`"`;return t&&(s+=` title="`+I(t)+`"`),s+=`>`+a+`</a>`,s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=Ze(e);if(i===null)return I(n);e=i;let a=`<img src="${I(e)}" alt="${I(n)}"`;return t&&(a+=` title="${I(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:I(e.text)}},q=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},J=class e{options;renderer;textRenderer;constructor(e){this.options=e||s,this.options.renderer=this.options.renderer||new K,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new q}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`checkbox`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`checkbox`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},Y=class{options;block;constructor(e){this.options=e||s}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?G.lex:G.lexInline}provideParser(e=this.block){return e?J.parse:J.parseInline}};function X(e,t){if(Array.isArray(t))for(let n=0;n<t.length;n++)e.push(t[n]);else e.push(t)}var Z=new class{defaults=o();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=J;Renderer=K;TextRenderer=q;Lexer=G;Tokenizer=W;Hooks=Y;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(X(n,t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)X(n,this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)X(n,this.walkTokens(e.tokens,t));break}case`list`:{let e=r;X(n,this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);X(n,this.walkTokens(i,t))}):e.tokens&&X(n,this.walkTokens(e.tokens,t))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new K(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new W(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Y;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=Y.passThroughHooks.has(n)?e=>{if(this.defaults.async&&Y.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&X(n,t.call(this,e)),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return G.lex(e,t??this.defaults)}parser(e,t){return J.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?G.lex:G.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?J.parse:J.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?G.lex:G.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?J.parse:J.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
65
- Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+I(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Q(e,t){return Z.parse(e,t)}Q.options=Q.setOptions=function(e){return Z.setOptions(e),Q.defaults=Z.defaults,c(Q.defaults),Q},Q.getDefaults=o,Q.defaults=s;function et(...e){return Z.use(...e),Q.defaults=Z.defaults,c(Q.defaults),Q}Q.use=et,Q.walkTokens=function(e,t){return Z.walkTokens(e,t)},Q.parseInline=Z.parseInline,Q.Parser=J,Q.parser=J.parse,Q.Renderer=K,Q.TextRenderer=q,Q.Lexer=G,Q.lexer=G.lex,Q.Tokenizer=W,Q.Hooks=Y,Q.parse=Q,Q.options,Q.setOptions,Q.walkTokens,Q.parseInline,J.parse,G.lex;function tt(e){return[`space`,`def`,`heading`,`paragraph`,`text`,`escape`,`html`,`strong`,`em`,`del`,`codespan`,`code`,`blockquote`,`br`,`hr`,`list`,`list_item`,`checkbox`,`link`,`image`,`table`].includes(e.type)}function nt(e){try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?t.href:void 0}catch{return}}function rt(e,t){let r=e=>e.map(i);function i(t){if(!tt(t))return t.raw;let i=t;switch(i.type){case`space`:case`def`:return null;case`heading`:{let t=r(i.tokens);switch(i.depth){case 1:return e`<h1>${t}</h1>`;case 2:return e`<h2>${t}</h2>`;case 3:return e`<h3>${t}</h3>`;case 4:return e`<h4>${t}</h4>`;case 5:return e`<h5>${t}</h5>`;default:return e`<h6>${t}</h6>`}}case`paragraph`:return e`<p>${r(i.tokens)}</p>`;case`text`:return i.tokens?r(i.tokens):i.text;case`escape`:return i.text;case`html`:return i.raw;case`strong`:return e`<strong>${r(i.tokens)}</strong>`;case`em`:return e`<em>${r(i.tokens)}</em>`;case`del`:return e`<del>${r(i.tokens)}</del>`;case`codespan`:return e`<code>${i.text}</code>`;case`code`:return e`<pre><code>${i.text}</code></pre>`;case`blockquote`:return e`<blockquote>${r(i.tokens)}</blockquote>`;case`br`:return e`<br>`;case`hr`:return e`<hr>`;case`list`:return i.ordered?e`<ol start=${i.start}>${r(i.items)}</ol>`:e`<ul>${r(i.items)}</ul>`;case`list_item`:return e`<li>${r(i.tokens)}</li>`;case`checkbox`:return e`<input type="checkbox" disabled ?checked=${i.checked} aria-label="${n(`ui.main.109177cfd281`,`Task completion status`)}">`;case`link`:{let t=nt(i.href),n=r(i.tokens);return t===void 0?n:e`<a href=${t} target="_blank" rel="noreferrer noopener">${n}</a>`}case`image`:return i.text;case`table`:return e`<div class="captain-table-scroll"><table><thead><tr>${i.header.map(t=>e`<th scope="col">${r(t.tokens)}</th>`)}</tr></thead><tbody>${i.rows.map(t=>e`<tr>${t.map(t=>e`<td>${r(t.tokens)}</td>`)}</tr>`)}</tbody></table></div>`;default:return t.raw}}return r(new G({gfm:!0}).lex(t))}function it(e){if(e.state?.selectedMachine&&e.state.selectedMachine.id!==e.machine.id)return;let t=e.state?.selectedSession;if(!(!t||t.archived||t.pending||t.cwd!==e.workspace.path))return{id:t.id,name:t.name!==void 0&&t.name.trim()!==``?t.name:n(`ui.main.19976e58bf31`,`Session {arg0}`,{arg0:t.id.slice(0,8)})}}function at(e){return{running:n(`ui.main.fcb979ef0b91`,`Working`),completed:n(`ui.main.e99b48a29bdf`,`Done`),failed:n(`ui.toolExecutionView.failed`,`Failed`),interrupted:n(`ui.main.8dd5ad764e4b`,`Interrupted`)}[e]}var ot={"Backend admitted translation":n(`ui.main.21e0dc881126`,`Backend accepted the relay request`),"Backend sent request to native companion":n(`ui.main.269ce066984c`,`Backend sent the request to the native companion extension`),"Native companion received request":n(`ui.main.2666275c64be`,`Native companion extension received the request`),"Native Pi agent running":n(`ui.main.880fe7bb6b95`,`Native Pi agent is running`),"Backend received correlated final reply":n(`ui.main.a7da535ace12`,`Backend received the final reply matching the request`),"Source reply read without changing source":n(`ui.main.0883bfa9c8ef`,`Source reply read; source session unchanged`),"Pirate conversation selected":n(`ui.main.9def3f08ac2e`,`Captain session selected`),"Backend recorded failure (not success)":n(`ui.main.157309c7e4ca`,`Backend recorded a failure, not a successful result`),"Backend saved completed roundtrip":n(`ui.main.f33a027a96b7`,`Backend saved the completed result`)},st={"Captain is already working.":n(`ui.main.09d17019ed2e`,`Captain is working; wait for the current relay to complete.`),"Select a source session other than the pirate conversation.":n(`ui.main.e4e81b805cf5`,`Choose another source session; the Captain session cannot relay itself.`),"Selected session is not hosted in this workspace on this machine":n(`ui.main.17dbe57aba6b`,`The selected session is not running in this workspace on the current machine.`),"Source session must be idle with no pending messages. Wait for it to finish, then translate again.":n(`ui.main.977c98d1294e`,`The source session must be idle with no pending messages. Wait for it to finish before relaying.`),"Source session has no completed assistant text reply on its active branch.":n(`ui.main.14ddd1ef21f6`,`The current source branch has no completed assistant text reply.`),"Source reply exceeds the translation limit (48000 characters).":n(`ui.main.eed449c7ce8e`,`The source reply exceeds the relay limit of 48000 characters.`),"Companion not ready or session busy; open Captain's Log in Sessions, wait for idle, then retry":n(`ui.main.c562cb9f79cb`,`The companion extension is not ready or the session is busy. Open the Captain session and wait until idle before retrying.`),"Captain request interrupted by session shutdown or reload":n(`ui.main.08ad1fcd5abc`,`Closing or reloading the session interrupted the Captain request.`),"Another prompt interfered with this Captain request; translation was not saved":n(`ui.main.ba11baa65750`,`Another prompt interfered with the Captain request; the relay result was not saved.`),"Another user message interfered with this Captain request":n(`ui.main.da152c51dbd7`,`Another user message interfered with the Captain request.`),"Captain request error":n(`ui.main.09896d6c5119`,`The Captain request encountered an error.`),"Captain request aborted":n(`ui.main.cf3f914e3924`,`The Captain request was aborted.`),"Captain request failed":n(`ui.main.b34409c59ab5`,`The Captain request failed.`),"Captain request ended without a successful final text response":n(`ui.main.e5b2393b01a1`,`The Captain request ended without a successful final text reply.`),"Captain reply exceeded the storage limit":n(`ui.main.3ea3beebb303`,`The Captain reply exceeds the storage length limit.`),"Invalid translation text":n(`ui.main.6f70b118900c`,`Invalid relay text.`),"Invalid companion reply":n(`ui.main.af43aa465d0a`,`Invalid companion extension reply.`),"Captain connection interrupted; agent work may continue in Sessions":n(`ui.main.dc807ddd54fa`,`The Captain connection was interrupted; the agent may still be working in the session.`),"No companion receipt within 5 seconds. Check package enablement/trust; inspect Sessions before retrying.":n(`ui.main.afdcdd4b929c`,`No companion acknowledgement arrived within 5 seconds. Check that the package is enabled and trusted, and inspect the session before retrying.`),"Captain request exceeded 10 minutes; agent work may continue in Sessions. No translation saved.":n(`ui.main.d2cd15752866`,`The Captain request exceeded 10 minutes. The agent may still be working; the relay result was not saved.`),"Captain's Log stopped before recording completion. Inspect the previous session before retrying. Nothing was resent automatically.":n(`ui.main.b8e0a313e94a`,`Captain's Log stopped before recording a completed result. Inspect the previous session before retrying; no request was resent automatically.`)};function $(e){return e.startsWith(`Captain could not finish this request. Inspect the session before retrying; nothing was resent automatically.
66
- `)?n(`ui.main.250d9fb3b162`,`Captain could not complete the request. Inspect the session before retrying; no request was resent automatically.
67
- {arg0}`,{arg0:$(e.slice(110))}):st[e.startsWith(`Error: `)?e.slice(7):e]??e}function ct(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function lt(e,t){let r=t.entries.some(e=>e.status===`running`),i=t.source!==void 0&&t.entries.some(e=>e.sessionId===t.source?.id),a=!t.connected||t.connecting||t.pending||r||!t.source||i,o=t.selected,s=o?.sourceSessionId,c=t.connecting?n(`ui.main.9d02d121573c`,`Connecting…`):t.connected?t.pending?n(`ui.main.482617a8c265`,`Fetching the last reply…`):r?n(`ui.main.c13e5f4963ff`,`The captain is translating…`):t.source?i?n(`ui.main.80a96f7d125e`,`Select a different session — this one is the pirate.`):n(`ui.main.12fc65d7525d`,`Ready to translate`):n(`ui.main.3c86e23d60ea`,`Select a session in this workspace first.`):n(`ui.main.570f6d331cce`,`Connection lost`);return e`<style>${ut}</style>
68
- <section class="captains-log" aria-label="${n(`ui.main.40c450439267`,`Captain's Log`)}">
69
- <div class="captain-heading"><h2>${n(`ui.main.e841f99d77f0`,`Captain's Log`)}</h2><p class="muted">${n(`ui.main.1c3532df737d`,`Have a dramatic pirate captain relay the last reply.`)}</p></div>
70
- <div class="captain-source"><span class="muted">${n(`ui.main.84521ab1f774`,`Selected session`)}</span><strong>${t.source?.name??n(`ui.sessionList.noSessionSelected`,`No session selected`)}</strong></div>
71
- <button class="captain-primary ui-button ui-button--primary" ?disabled=${a} @click=${t.onTranslate}>${n(`ui.main.09ee4046866f`,`Let the Captain tell it`)}</button>
72
- <p class="captain-status" role="status" aria-live="polite">${c}
73
- ${!t.connected&&!t.connecting?e`<button class="ui-button" @click=${t.onReconnect}>${n(`ui.main.bac95e1e52fe`,`Reconnect`)}</button>`:null}
74
- </p>
75
- ${!t.connected&&!t.connecting?e`<p class="captain-notice">${n(`ui.main.3c3a8d4bb0ab`,`Reconnect to see the result. The captain may still be working; your request will not be sent again.`)}</p>`:null}
76
- ${t.notice!==void 0&&t.notice!==``?e`<p class="captain-notice" role="alert">${$(t.notice)}</p>`:null}
77
- ${o?e`<article class="captain-reply" aria-label="${n(`ui.main.e572c45a01a6`,`Pirate translation`)}">
78
- <div class="captain-reply-heading"><strong>${o.status===`running`?n(`ui.main.a3e678a94720`,`Translating…`):o.id===t.entries[0]?.id?n(`ui.main.aa1bf7a5ddbe`,`Last translation`):n(`ui.main.91515d50cc9e`,`Earlier translation`)}</strong><time datetime=${o.createdAt}>${ct(o.createdAt)}</time></div>
79
- ${o.status===`completed`?e`<div class="captain-answer">${o.text?rt(e,o.text):n(`ui.main.648d8128e3c7`,`Receiving the captain's reply…`)}</div>`:o.status===`running`?e`<p class="muted">${n(`ui.main.c61214cbad46`,`Reading the source reply and turning it into pirate. No message is sent to the source conversation.`)}</p>`:e`<div class="captain-notice" role="alert"><strong>${o.status===`interrupted`?n(`ui.main.8ac60a0f0b8e`,`Translation interrupted`):n(`ui.main.fe0e672c27d4`,`Couldn't translate that reply`)}</strong><p>${$(o.text)||n(`ui.main.72a4ca9f0124`,`Check Diagnostics for details, then try again when the session is ready.`)}</p></div>`}
80
- ${s!==void 0&&s!==``?e`<button class="ui-button" @click=${()=>{t.onOpenSource(s)}}>${n(`ui.main.58ea40f79134`,`Open source session`)}</button>`:null}
81
- </article>`:e`<p class="captain-empty muted">${n(`ui.main.34a6d480c665`,`Pick a conversation, then translate its latest finished assistant reply. The original stays untouched.`)}</p>`}
82
- <div class="captain-secondary">
83
- ${t.entries.length>1?e`<details><summary>${n(`ui.main.91515d50cc9e`,`Earlier translation`)} <span class="muted">(${t.entries.length})</span></summary>
84
- <div class="captain-history">${t.entries.map(r=>e`<button class=${r.id===o?.id?`selected`:``} ?disabled=${!t.connected} @click=${()=>{t.onRead(r.id)}}>
85
- <span>${ct(r.createdAt)} · ${r.status===`completed`?n(`ui.main.9f66d2a4d6f7`,`Translated`):r.status===`running`?n(`ui.main.fcb979ef0b91`,`Working`):n(`ui.main.b61b08aec3a9`,`Not completed`)}</span>
86
- </button>`)}</div>
87
- </details>`:null}
88
- <details class="captain-diagnostics"><summary>${n(`ui.main.e0b478941707`,`Diagnostics`)}</summary>
89
- <p>${$(t.status)}</p>
90
- ${o?e`<dl><dt>${n(`bundled.info.machine.ece969`,`Machine`)}</dt><dd>${t.machineName}</dd><dt>${n(`ui.main.b92dc0c2297a`,`Source session`)}</dt><dd>${o.sourceSessionId??n(`bundled.updates.unknown.4d8c1c`,`Unknown`)}</dd><dt>${n(`ui.main.62b811ff4549`,`Pirate session`)}</dt><dd>${o.sessionId||n(`ui.main.db03d9974969`,`Not created`)}</dd><dt>${n(`ui.main.926f6b6b6a93`,`Request`)}</dt><dd>${o.id}</dd></dl>
91
- <p>${o.question===`Translate last reply`?n(`ui.main.fc69d95b95b3`,`Relay the last reply`):o.question}</p><ol>${o.stages.map(t=>e`<li>${ot[t]??t}</li>`)}</ol>`:null}
92
- </details>
93
- <p class="captain-footnote muted">${n(`ui.main.8dbbd44d148a`,`Uses your configured model. Reuses the pirate while it's available; otherwise starts one automatically.`)}</p>
94
- </div>
95
- </section>`}var ut=`
96
- captains-log-lifetime { display: block; min-width: 0; }
97
- .captains-log { box-sizing: border-box; padding: 16px; min-width: 0; color: inherit; font: inherit; line-height: 1.5; }
98
- .captains-log *, .captains-log *::before, .captains-log *::after { box-sizing: border-box; }
99
- .captains-log h2, .captains-log p { margin: 0; }
100
- .captains-log h2 { font-size: 15px; }
101
- .captains-log summary:focus-visible { outline: 2px solid var(--pi-accent); outline-offset: 2px; }
102
- .captains-log .captain-source { display: grid; gap: 3px; margin: 18px 0 12px; padding: 10px 12px; background: var(--pi-surface); border: 1px solid var(--pi-border-muted); border-radius: 8px; overflow-wrap: anywhere; }
103
- .captains-log .captain-source span { font-size: 11px; }
104
- .captains-log .captain-status { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 10px 0 16px; color: var(--pi-muted); font-size: 12px; }
105
- .captains-log .captain-notice { padding: 12px; margin-bottom: 12px; border: 1px solid var(--pi-warning-border); border-radius: 8px; background: var(--pi-warning-surface); overflow-wrap: anywhere; white-space: pre-wrap; }
106
- .captains-log .captain-notice p { margin-top: 6px; }
107
- .captains-log .captain-empty { padding: 16px 0; }
108
- .captains-log .captain-reply { padding: 16px 0; border-top: 1px solid var(--pi-border-muted); }
109
- .captains-log .captain-reply-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
110
- .captains-log time { color: var(--pi-muted); font-size: 11px; }
111
- .captains-log .captain-answer { line-height: 1.65; overflow-wrap: anywhere; min-width: 0; }
112
- .captains-log .captain-answer > :first-child { margin-top: 0; }
113
- .captains-log .captain-answer > :last-child { margin-bottom: 0; }
114
- .captains-log .captain-answer p, .captains-log .captain-answer ul, .captains-log .captain-answer ol { margin: .65em 0; }
115
- .captains-log .captain-answer h1, .captains-log .captain-answer h2, .captains-log .captain-answer h3,
116
- .captains-log .captain-answer h4, .captains-log .captain-answer h5, .captains-log .captain-answer h6 { margin: 1em 0 .4em; line-height: 1.3; }
117
- .captains-log .captain-answer h1 { font-size: 1.5em; }
118
- .captains-log .captain-answer h2 { font-size: 1.3em; }
119
- .captains-log .captain-answer h3 { font-size: 1.15em; }
120
- .captains-log .captain-answer ul, .captains-log .captain-answer ol { padding-left: 1.7em; }
121
- .captains-log .captain-answer blockquote { margin: .75em 0; padding-left: 1em; border-left: 3px solid var(--pi-border-muted); color: var(--pi-muted); }
122
- .captains-log .captain-answer code { font-family: monospace; background: var(--pi-surface); border-radius: 3px; padding: .1em .25em; }
123
- .captains-log .captain-answer pre { max-width: 100%; overflow: auto; padding: 12px; background: var(--pi-surface); border: 1px solid var(--pi-border-muted); border-radius: 6px; white-space: pre; overflow-wrap: normal; }
124
- .captains-log .captain-answer pre code { padding: 0; background: none; }
125
- .captains-log .captain-answer a { color: var(--pi-accent); text-decoration: underline; }
126
- .captains-log .captain-answer a:focus-visible { outline: 2px solid var(--pi-accent); outline-offset: 2px; }
127
- .captains-log .captain-table-scroll { max-width: 100%; overflow: auto; margin: .75em 0; }
128
- .captains-log .captain-answer table { border-collapse: collapse; width: 100%; }
129
- .captains-log .captain-answer th, .captains-log .captain-answer td { border: 1px solid var(--pi-border-muted); padding: 6px 10px; text-align: left; }
130
- .captains-log .captain-answer th { background: var(--pi-surface); }
131
- .captains-log .captain-answer hr { border: 0; border-top: 1px solid var(--pi-border-muted); }
132
- .captains-log .captain-secondary { border-top: 1px solid var(--pi-border-muted); margin-top: 12px; padding-top: 6px; }
133
- .captains-log details { padding: 8px 0; }
134
- .captains-log summary { cursor: pointer; color: var(--pi-muted); }
135
- .captains-log details p { margin: 8px 0; overflow-wrap: anywhere; }
136
- .captains-log .captain-history { display: grid; gap: 6px; padding-top: 8px; }
137
- .captains-log .captain-history button { justify-content: flex-start; text-align: left; min-width: 0; }
138
- .captains-log dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 10px; font-size: 11px; }
139
- .captains-log dd { margin: 0; overflow-wrap: anywhere; }
140
- .captains-log .captain-footnote { font-size: 11px; margin-top: 10px; }
141
- `;function dt(e){if(typeof e!=`object`||!e||!(`type`in e))return!1;switch(e.type){case`entry`:return`entry`in e&&a(e.entry)&&`saved`in e&&typeof e.saved==`boolean`;case`text`:return`id`in e&&typeof e.id==`string`&&i.test(e.id)&&`text`in e&&typeof e.text==`string`&&e.text.length<=4e3;case`admitted`:return`requestId`in e&&typeof e.requestId==`string`&&i.test(e.requestId)&&`id`in e&&typeof e.id==`string`&&i.test(e.id);case`rejected`:return`requestId`in e&&typeof e.requestId==`string`&&i.test(e.requestId)&&`message`in e&&typeof e.message==`string`;default:return!1}}var ft={pluginId:`pi-web`,id:`stylesheet-integration`,version:1,parse(e){if(!pt(e))throw Error(`Invalid PI WEB stylesheet integration capability v1`);return e}};function pt(e){return typeof e==`object`&&!!e&&`registerRoot`in e&&typeof e.registerRoot==`function`&&`subscribe`in e&&typeof e.subscribe==`function`&&`createController`in e&&typeof e.createController==`function`}var mt={apiVersion:4,name:n(`ui.main.40c450439267`,`Captain's Log`),requires:[ft],activate({html:e,runtimePluginId:i,lifetimeSignal:o,translate:s}){t(s);let c;customElements.get(`captains-log-lifetime`)||customElements.define(`captains-log-lifetime`,class extends HTMLElement{mount;unmount;currentScope;integration;releaseStyles;set stylesheetIntegration(e){this.integration!==e&&(this.releaseStyles?.(),this.releaseStyles=void 0,this.integration=e,this.registerStyles())}registerStyles(){if(!this.isConnected||this.releaseStyles!==void 0)return;let e=this.getRootNode();e instanceof ShadowRoot&&(this.releaseStyles=this.integration?.registerRoot(e,{sharedUi:!0}))}set scope(e){e!==this.currentScope&&(this.currentScope=e,this.isConnected&&queueMicrotask(()=>{this.isConnected&&this.mount?.()}))}connectedCallback(){this.registerStyles(),queueMicrotask(()=>{this.isConnected&&this.mount?.()})}disconnectedCallback(){this.releaseStyles?.(),this.releaseStyles=void 0,this.unmount?.()}});let l=new Map,u;function d(e){e.revision++,e.controller?.abort(),e.channel?.close(),delete e.channel,delete e.controller,e.connecting=!1,e.pending!==void 0&&(e.status=n(`ui.main.f396b70620bc`,`Channel closed. Admission is uncertain; reconnect before retrying. Questions are never resent automatically.`))}let f=()=>{for(let e of l.values())d(e)};o.addEventListener(`abort`,f,{once:!0});function p(e){let t=JSON.stringify([e.machine.id,e.workspace.projectId,e.workspace.id]),r=l.get(t);return r||(r={entries:[],status:n(`ui.main.b53dd9c80b8e`,`Connecting to Captain's Log…`),connecting:!1,revision:0,readRevision:0,updates:new Map},l.set(t,r)),u!==r&&(u&&d(u),u=r),r}function m(e,t){e.updates.set(t.id,t),e.entries=[t,...e.entries.filter(e=>e.id!==t.id)].sort((e,t)=>t.createdAt.localeCompare(e.createdAt)),e.selected&&e.selected.id!==t.id&&t.status!==`running`||(e.selected?.id!==t.id&&e.readRevision++,e.selected=t)}async function h(e,t,r){let i=t.revision,s=++t.readRevision,c=t.updates.get(r);try{if(!e.peer?.request)throw Error(n(`ui.main.1f43dcbac9b1`,`Captain saved records unavailable`));let l=await e.peer.request(`read`,r,{signal:t.controller?.signal??o});if(i!==t.revision||s!==t.readRevision||o.aborted)return;if(!a(l))throw Error(n(`ui.main.66223db3b219`,`Invalid Captain record`));let u=t.updates.get(r)===c?l:t.updates.get(r)??l;t.selected=u,t.updates.set(r,u),t.entries=t.entries.map(e=>e.id===r?u:e),e.host.requestRender()}catch(n){if(i!==t.revision||s!==t.readRevision||o.aborted)return;t.status=String(n),e.host.requestRender()}}async function g(e,t){if(t.channel||t.connecting||o.aborted)return;d(t);let i=t.revision,s=new AbortController;t.controller=s,t.connecting=!0,t.updates.clear();let c=()=>i===t.revision&&!s.signal.aborted&&!o.aborted;t.status=n(`ui.main.b53dd9c80b8e`,`Connecting to Captain's Log…`),e.host.requestRender();try{if(!e.peer?.openChannel||!e.peer.request)throw Error(n(`ui.main.8c0382b8ace3`,`Captain backend channels unavailable on this machine`));let i=await e.peer.openChannel(`log`,null,{signal:s.signal,onData(i){if(c()){if(!dt(i))t.status=n(`ui.main.009b398507ef`,`Invalid Captain channel frame`),d(t),e.host.requestRender();else{if(i.type===`admitted`&&i.requestId===t.pending)delete t.pending,t.status=n(`ui.main.39c27a5c621c`,`The backend accepted {arg0}; acceptance is not completion.`,{arg0:i.id});else if(i.type===`rejected`&&i.requestId===t.pending)delete t.pending,t.status=i.message,t.notice=i.message;else if(i.type===`entry`)m(t,i.entry),t.status=i.saved&&i.entry.status!==`running`?n(`ui.main.ba9cee805bff`,`The backend saved the result with status {arg0}.`,{arg0:at(i.entry.status)}):n(`ui.main.330b2b9daff1`,`Captain's Log is receiving progress.`);else if(i.type===`text`){let e=t.updates.get(i.id);if(e){let n={...e,text:(e.text+i.text).slice(0,r)};t.updates.set(i.id,n),t.entries=t.entries.map(e=>e.id===i.id?n:e),t.selected?.id===i.id&&(t.selected=n)}}e.host.requestRender()}}}});if(!c()){i.close();return}t.channel=i,i.closed.then(r=>{c()&&(d(t),t.status=n(`ui.main.59bb9b623aa3`,`{arg0}. Request acceptance may be uncertain; reconnect to restore saved state. Requests are not resent automatically.`,{arg0:r.error?.message??n(`ui.main.5de098bdc01f`,`Channel closed`)}),e.host.requestRender())});let o=await e.peer.request(`list`,null,{signal:s.signal});if(!c())return;if(!Array.isArray(o)||!o.every(a))throw Error(n(`ui.main.e18b3550af5f`,`Invalid Captain snapshot`));t.entries=[...t.updates.values(),...o.filter(e=>e.sourceSessionId!==void 0&&!t.updates.has(e.id))].sort((e,t)=>t.createdAt.localeCompare(e.createdAt)),delete t.pending;let l=t.selected?.id??t.entries[0]?.id;if(l!==void 0&&t.entries.some(e=>e.id===l)){let n=t.updates.get(l);n?t.selected=n:await h(e,t,l)}else delete t.selected;if(!c())return;t.status=n(`ui.main.a1fa58242a2e`,`Connected. Live updates arrive from the backend.`),delete t.notice,t.connecting=!1,e.host.requestRender()}catch(r){if(!c())return;d(t),t.status=n(`ui.main.b74852b31c3b`,`{arg0}. Reconnect manually; the relay request has not been resent.`,{arg0:String(r)}),e.host.requestRender()}}function _(e,t){let r=it(e);if(!r||!t.channel||t.connecting||t.pending!==void 0||o.aborted||t.entries.some(e=>e.status===`running`||e.sessionId===r.id))return;t.pending=crypto.randomUUID(),delete t.notice,t.status=n(`ui.main.f0eb1567fb8f`,`Relay for source session {arg0} is queued, awaiting backend acceptance.`,{arg0:r.id});let i={type:`translate`,requestId:t.pending,sourceSessionId:r.id};try{t.channel.send(i)}catch(e){d(t),t.status=n(`ui.main.737a9ae0b915`,`{arg0}. Request acceptance is uncertain; reconnect before retrying.`,{arg0:String(e)})}e.host.requestRender()}return{start({capabilities:e}){c=e.resolve(ft)},contributions:{actions:[{id:`summon`,title:n(`ui.main.77d215cd18a6`,`Open pirate translator`),group:n(`ui.main.40c450439267`,`Captain's Log`),enabled:({state:e})=>!!e.selectedWorkspace,run:({selectWorkspaceTool:e})=>{e(`${i}:log`)}}],workspacePanels:[{id:`log`,title:n(`ui.main.40c450439267`,`Captain's Log`),render(t){let n=p(t),r=it(t);return e`<captains-log-lifetime .stylesheetIntegration=${c} .mount=${()=>{g(t,n)}} .unmount=${()=>{d(n)}} .scope=${n}>
142
- ${lt(e,{...n,connected:n.channel!==void 0&&t.peer?.openChannel!==void 0,pending:n.pending!==void 0,machineName:t.machine.name,...r?{source:r}:{},onTranslate(){_(t,n)},onReconnect(){g(t,n)},onRead(e){h(t,n,e)},onOpenSource(e){t.navigate({machineId:t.machine.id,projectId:t.workspace.projectId,workspaceId:t.workspace.id,sessionId:e,view:`chat`})}})}
143
- </captains-log-lifetime>`}}]},dispose(){f(),o.removeEventListener(`abort`,f),l.clear()}}}};export{mt as default};
@@ -1,68 +0,0 @@
1
- // Generated from pi-packages/captains-log/src/browser/markdown.ts. Do not edit directly.
2
- import { t } from "../../i18n.js";
3
- import { Lexer } from "marked";
4
- // The private lexer has no extensions. Narrow away Marked's open-ended Generic token type.
5
- function isBuiltinToken(token) {
6
- return ["space", "def", "heading", "paragraph", "text", "escape", "html", "strong", "em", "del", "codespan", "code", "blockquote", "br", "hr", "list", "list_item", "checkbox", "link", "image", "table"].includes(token.type);
7
- }
8
- function safeLink(href) {
9
- // No relative URLs: translations must not navigate within the host application.
10
- try {
11
- const url = new URL(href);
12
- return url.protocol === "https:" || url.protocol === "http:" ? url.href : undefined;
13
- }
14
- catch {
15
- return undefined;
16
- }
17
- }
18
- /** Render only known Markdown constructs. Text (including raw HTML) always stays in Lit text bindings. */
19
- export function renderCaptainMarkdown(html, markdown) {
20
- const renderTokens = (tokens) => tokens.map(renderToken);
21
- function renderToken(input) {
22
- if (!isBuiltinToken(input))
23
- return input.raw;
24
- const token = input;
25
- switch (token.type) {
26
- case "space":
27
- case "def": return null;
28
- case "heading": {
29
- const content = renderTokens(token.tokens);
30
- switch (token.depth) {
31
- case 1: return html `<h1>${content}</h1>`;
32
- case 2: return html `<h2>${content}</h2>`;
33
- case 3: return html `<h3>${content}</h3>`;
34
- case 4: return html `<h4>${content}</h4>`;
35
- case 5: return html `<h5>${content}</h5>`;
36
- default: return html `<h6>${content}</h6>`;
37
- }
38
- }
39
- case "paragraph": return html `<p>${renderTokens(token.tokens)}</p>`;
40
- case "text": return token.tokens ? renderTokens(token.tokens) : token.text;
41
- case "escape": return token.text;
42
- case "html": return token.raw;
43
- case "strong": return html `<strong>${renderTokens(token.tokens)}</strong>`;
44
- case "em": return html `<em>${renderTokens(token.tokens)}</em>`;
45
- case "del": return html `<del>${renderTokens(token.tokens)}</del>`;
46
- case "codespan": return html `<code>${token.text}</code>`;
47
- case "code": return html `<pre><code>${token.text}</code></pre>`;
48
- case "blockquote": return html `<blockquote>${renderTokens(token.tokens)}</blockquote>`;
49
- case "br": return html `<br>`;
50
- case "hr": return html `<hr>`;
51
- case "list": return token.ordered
52
- ? html `<ol start=${token.start}>${renderTokens(token.items)}</ol>`
53
- : html `<ul>${renderTokens(token.items)}</ul>`;
54
- case "list_item": return html `<li>${renderTokens(token.tokens)}</li>`;
55
- case "checkbox": return html `<input type="checkbox" disabled ?checked=${token.checked} aria-label="${t("ui.main.109177cfd281", "Task completion status")}">`;
56
- case "link": {
57
- const href = safeLink(token.href);
58
- const label = renderTokens(token.tokens);
59
- return href !== undefined ? html `<a href=${href} target="_blank" rel="noreferrer noopener">${label}</a>` : label;
60
- }
61
- // Keep the description, but never create an image or load a remote resource.
62
- case "image": return token.text;
63
- case "table": return html `<div class="captain-table-scroll"><table><thead><tr>${token.header.map((cell) => html `<th scope="col">${renderTokens(cell.tokens)}</th>`)}</tr></thead><tbody>${token.rows.map((row) => html `<tr>${row.map((cell) => html `<td>${renderTokens(cell.tokens)}</td>`)}</tr>`)}</tbody></table></div>`;
64
- default: return input.raw;
65
- }
66
- }
67
- return renderTokens(new Lexer({ gfm: true }).lex(markdown));
68
- }