@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,148 +0,0 @@
1
- // Generated from pi-packages/captains-log/src/browser/panel.ts. Do not edit directly.
2
- import { t } from "../../i18n.js";
3
- import { renderCaptainMarkdown } from "./markdown.js";
4
- export function selectedSourceSession(context) {
5
- if (context.state?.selectedMachine && context.state.selectedMachine.id !== context.machine.id)
6
- return;
7
- const selected = context.state?.selectedSession;
8
- if (!selected || selected.archived || selected.pending || selected.cwd !== context.workspace.path)
9
- return;
10
- return { id: selected.id, name: selected.name !== undefined && selected.name.trim() !== "" ? selected.name : t("ui.main.19976e58bf31", "Session {arg0}", { arg0: selected.id.slice(0, 8) }) };
11
- }
12
- export function captainStatusLabel(status) {
13
- return { running: t("ui.main.fcb979ef0b91", "Working"), completed: t("ui.main.e99b48a29bdf", "Done"), failed: t("ui.toolExecutionView.failed", "Failed"), interrupted: t("ui.main.8dd5ad764e4b", "Interrupted") }[status];
14
- }
15
- const stageLabels = {
16
- "Backend admitted translation": t("ui.main.21e0dc881126", "Backend accepted the relay request"),
17
- "Backend sent request to native companion": t("ui.main.269ce066984c", "Backend sent the request to the native companion extension"),
18
- "Native companion received request": t("ui.main.2666275c64be", "Native companion extension received the request"),
19
- "Native Pi agent running": t("ui.main.880fe7bb6b95", "Native Pi agent is running"),
20
- "Backend received correlated final reply": t("ui.main.a7da535ace12", "Backend received the final reply matching the request"),
21
- "Source reply read without changing source": t("ui.main.0883bfa9c8ef", "Source reply read; source session unchanged"),
22
- "Pirate conversation selected": t("ui.main.9def3f08ac2e", "Captain session selected"),
23
- "Backend recorded failure (not success)": t("ui.main.157309c7e4ca", "Backend recorded a failure, not a successful result"),
24
- "Backend saved completed roundtrip": t("ui.main.f33a027a96b7", "Backend saved the completed result"),
25
- };
26
- const errorLabels = {
27
- "Captain is already working.": t("ui.main.09d17019ed2e", "Captain is working; wait for the current relay to complete."),
28
- "Select a source session other than the pirate conversation.": t("ui.main.e4e81b805cf5", "Choose another source session; the Captain session cannot relay itself."),
29
- "Selected session is not hosted in this workspace on this machine": t("ui.main.17dbe57aba6b", "The selected session is not running in this workspace on the current machine."),
30
- "Source session must be idle with no pending messages. Wait for it to finish, then translate again.": t("ui.main.977c98d1294e", "The source session must be idle with no pending messages. Wait for it to finish before relaying."),
31
- "Source session has no completed assistant text reply on its active branch.": t("ui.main.14ddd1ef21f6", "The current source branch has no completed assistant text reply."),
32
- "Source reply exceeds the translation limit (48000 characters).": t("ui.main.eed449c7ce8e", "The source reply exceeds the relay limit of 48000 characters."),
33
- "Companion not ready or session busy; open Captain's Log in Sessions, wait for idle, then retry": t("ui.main.c562cb9f79cb", "The companion extension is not ready or the session is busy. Open the Captain session and wait until idle before retrying."),
34
- "Captain request interrupted by session shutdown or reload": t("ui.main.08ad1fcd5abc", "Closing or reloading the session interrupted the Captain request."),
35
- "Another prompt interfered with this Captain request; translation was not saved": t("ui.main.ba11baa65750", "Another prompt interfered with the Captain request; the relay result was not saved."),
36
- "Another user message interfered with this Captain request": t("ui.main.da152c51dbd7", "Another user message interfered with the Captain request."),
37
- "Captain request error": t("ui.main.09896d6c5119", "The Captain request encountered an error."),
38
- "Captain request aborted": t("ui.main.cf3f914e3924", "The Captain request was aborted."),
39
- "Captain request failed": t("ui.main.b34409c59ab5", "The Captain request failed."),
40
- "Captain request ended without a successful final text response": t("ui.main.e5b2393b01a1", "The Captain request ended without a successful final text reply."),
41
- "Captain reply exceeded the storage limit": t("ui.main.3ea3beebb303", "The Captain reply exceeds the storage length limit."),
42
- "Invalid translation text": t("ui.main.6f70b118900c", "Invalid relay text."),
43
- "Invalid companion reply": t("ui.main.af43aa465d0a", "Invalid companion extension reply."),
44
- "Captain connection interrupted; agent work may continue in Sessions": t("ui.main.dc807ddd54fa", "The Captain connection was interrupted; the agent may still be working in the session."),
45
- "No companion receipt within 5 seconds. Check package enablement/trust; inspect Sessions before retrying.": t("ui.main.afdcdd4b929c", "No companion acknowledgement arrived within 5 seconds. Check that the package is enabled and trusted, and inspect the session before retrying."),
46
- "Captain request exceeded 10 minutes; agent work may continue in Sessions. No translation saved.": t("ui.main.d2cd15752866", "The Captain request exceeded 10 minutes. The agent may still be working; the relay result was not saved."),
47
- "Captain's Log stopped before recording completion. Inspect the previous session before retrying. Nothing was resent automatically.": t("ui.main.b8e0a313e94a", "Captain's Log stopped before recording a completed result. Inspect the previous session before retrying; no request was resent automatically."),
48
- };
49
- function displayCaptainError(text) {
50
- const prefix = "Captain could not finish this request. Inspect the session before retrying; nothing was resent automatically.\n";
51
- if (text.startsWith(prefix))
52
- return t("ui.main.250d9fb3b162", "Captain could not complete the request. Inspect the session before retrying; no request was resent automatically.\n{arg0}", { arg0: displayCaptainError(text.slice(prefix.length)) });
53
- const message = text.startsWith("Error: ") ? text.slice(7) : text;
54
- return errorLabels[message] ?? text;
55
- }
56
- function dateLabel(value) {
57
- const date = new Date(value);
58
- return Number.isNaN(date.getTime()) ? value : date.toLocaleString(undefined, { month: "short", day: "numeric", hour: "2-digit", minute: "2-digit" });
59
- }
60
- export function renderCaptainPanel(html, view) {
61
- const working = view.entries.some((entry) => entry.status === "running");
62
- const pirateSelected = view.source !== undefined && view.entries.some((entry) => entry.sessionId === view.source?.id);
63
- const disabled = !view.connected || view.connecting || view.pending || working || !view.source || pirateSelected;
64
- const selected = view.selected;
65
- const sourceSessionId = selected?.sourceSessionId;
66
- const status = view.connecting ? t("ui.main.9d02d121573c", "Connecting…") : !view.connected ? t("ui.main.570f6d331cce", "Connection lost") : view.pending ? t("ui.main.482617a8c265", "Fetching the last reply…")
67
- : working ? t("ui.main.c13e5f4963ff", "The captain is translating…") : !view.source ? t("ui.main.3c86e23d60ea", "Select a session in this workspace first.") : pirateSelected ? t("ui.main.80a96f7d125e", "Select a different session — this one is the pirate.")
68
- : t("ui.main.12fc65d7525d", "Ready to translate");
69
- return html `<style>${styles}</style>
70
- <section class="captains-log" aria-label="${t("ui.main.40c450439267", "Captain's Log")}">
71
- <div class="captain-heading"><h2>${t("ui.main.e841f99d77f0", "Captain's Log")}</h2><p class="muted">${t("ui.main.1c3532df737d", "Have a dramatic pirate captain relay the last reply.")}</p></div>
72
- <div class="captain-source"><span class="muted">${t("ui.main.84521ab1f774", "Selected session")}</span><strong>${view.source?.name ?? t("ui.sessionList.noSessionSelected", "No session selected")}</strong></div>
73
- <button class="captain-primary ui-button ui-button--primary" ?disabled=${disabled} @click=${view.onTranslate}>${t("ui.main.09ee4046866f", "Let the Captain tell it")}</button>
74
- <p class="captain-status" role="status" aria-live="polite">${status}
75
- ${!view.connected && !view.connecting ? html `<button class="ui-button" @click=${view.onReconnect}>${t("ui.main.bac95e1e52fe", "Reconnect")}</button>` : null}
76
- </p>
77
- ${!view.connected && !view.connecting ? html `<p class="captain-notice">${t("ui.main.3c3a8d4bb0ab", "Reconnect to see the result. The captain may still be working; your request will not be sent again.")}</p>` : null}
78
- ${view.notice !== undefined && view.notice !== "" ? html `<p class="captain-notice" role="alert">${displayCaptainError(view.notice)}</p>` : null}
79
- ${selected ? html `<article class="captain-reply" aria-label="${t("ui.main.e572c45a01a6", "Pirate translation")}">
80
- <div class="captain-reply-heading"><strong>${selected.status === "running" ? t("ui.main.a3e678a94720", "Translating…") : selected.id === view.entries[0]?.id ? t("ui.main.aa1bf7a5ddbe", "Last translation") : t("ui.main.91515d50cc9e", "Earlier translation")}</strong><time datetime=${selected.createdAt}>${dateLabel(selected.createdAt)}</time></div>
81
- ${selected.status === "completed" ? html `<div class="captain-answer">${selected.text ? renderCaptainMarkdown(html, selected.text) : t("ui.main.648d8128e3c7", "Receiving the captain's reply…")}</div>`
82
- : selected.status === "running" ? html `<p class="muted">${t("ui.main.c61214cbad46", "Reading the source reply and turning it into pirate. No message is sent to the source conversation.")}</p>`
83
- : html `<div class="captain-notice" role="alert"><strong>${selected.status === "interrupted" ? t("ui.main.8ac60a0f0b8e", "Translation interrupted") : t("ui.main.fe0e672c27d4", "Couldn't translate that reply")}</strong><p>${displayCaptainError(selected.text) || t("ui.main.72a4ca9f0124", "Check Diagnostics for details, then try again when the session is ready.")}</p></div>`}
84
- ${sourceSessionId !== undefined && sourceSessionId !== "" ? html `<button class="ui-button" @click=${() => { view.onOpenSource(sourceSessionId); }}>${t("ui.main.58ea40f79134", "Open source session")}</button>` : null}
85
- </article>` : html `<p class="captain-empty muted">${t("ui.main.34a6d480c665", "Pick a conversation, then translate its latest finished assistant reply. The original stays untouched.")}</p>`}
86
- <div class="captain-secondary">
87
- ${view.entries.length > 1 ? html `<details><summary>${t("ui.main.91515d50cc9e", "Earlier translation")} <span class="muted">(${view.entries.length})</span></summary>
88
- <div class="captain-history">${view.entries.map((entry) => html `<button class=${entry.id === selected?.id ? "selected" : ""} ?disabled=${!view.connected} @click=${() => { view.onRead(entry.id); }}>
89
- <span>${dateLabel(entry.createdAt)} · ${entry.status === "completed" ? t("ui.main.9f66d2a4d6f7", "Translated") : entry.status === "running" ? t("ui.main.fcb979ef0b91", "Working") : t("ui.main.b61b08aec3a9", "Not completed")}</span>
90
- </button>`)}</div>
91
- </details>` : null}
92
- <details class="captain-diagnostics"><summary>${t("ui.main.e0b478941707", "Diagnostics")}</summary>
93
- <p>${displayCaptainError(view.status)}</p>
94
- ${selected ? html `<dl><dt>${t("bundled.info.machine.ece969", "Machine")}</dt><dd>${view.machineName}</dd><dt>${t("ui.main.b92dc0c2297a", "Source session")}</dt><dd>${selected.sourceSessionId ?? t("bundled.updates.unknown.4d8c1c", "Unknown")}</dd><dt>${t("ui.main.62b811ff4549", "Pirate session")}</dt><dd>${selected.sessionId || t("ui.main.db03d9974969", "Not created")}</dd><dt>${t("ui.main.926f6b6b6a93", "Request")}</dt><dd>${selected.id}</dd></dl>
95
- <p>${selected.question === "Translate last reply" ? t("ui.main.fc69d95b95b3", "Relay the last reply") : selected.question}</p><ol>${selected.stages.map((stage) => html `<li>${stageLabels[stage] ?? stage}</li>`)}</ol>` : null}
96
- </details>
97
- <p class="captain-footnote muted">${t("ui.main.8dbbd44d148a", "Uses your configured model. Reuses the pirate while it's available; otherwise starts one automatically.")}</p>
98
- </div>
99
- </section>`;
100
- }
101
- // Content layout stays package-scoped; native buttons use the host UI styles capability.
102
- const styles = `
103
- captains-log-lifetime { display: block; min-width: 0; }
104
- .captains-log { box-sizing: border-box; padding: 16px; min-width: 0; color: inherit; font: inherit; line-height: 1.5; }
105
- .captains-log *, .captains-log *::before, .captains-log *::after { box-sizing: border-box; }
106
- .captains-log h2, .captains-log p { margin: 0; }
107
- .captains-log h2 { font-size: 15px; }
108
- .captains-log summary:focus-visible { outline: 2px solid var(--pi-accent); outline-offset: 2px; }
109
- .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; }
110
- .captains-log .captain-source span { font-size: 11px; }
111
- .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; }
112
- .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; }
113
- .captains-log .captain-notice p { margin-top: 6px; }
114
- .captains-log .captain-empty { padding: 16px 0; }
115
- .captains-log .captain-reply { padding: 16px 0; border-top: 1px solid var(--pi-border-muted); }
116
- .captains-log .captain-reply-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
117
- .captains-log time { color: var(--pi-muted); font-size: 11px; }
118
- .captains-log .captain-answer { line-height: 1.65; overflow-wrap: anywhere; min-width: 0; }
119
- .captains-log .captain-answer > :first-child { margin-top: 0; }
120
- .captains-log .captain-answer > :last-child { margin-bottom: 0; }
121
- .captains-log .captain-answer p, .captains-log .captain-answer ul, .captains-log .captain-answer ol { margin: .65em 0; }
122
- .captains-log .captain-answer h1, .captains-log .captain-answer h2, .captains-log .captain-answer h3,
123
- .captains-log .captain-answer h4, .captains-log .captain-answer h5, .captains-log .captain-answer h6 { margin: 1em 0 .4em; line-height: 1.3; }
124
- .captains-log .captain-answer h1 { font-size: 1.5em; }
125
- .captains-log .captain-answer h2 { font-size: 1.3em; }
126
- .captains-log .captain-answer h3 { font-size: 1.15em; }
127
- .captains-log .captain-answer ul, .captains-log .captain-answer ol { padding-left: 1.7em; }
128
- .captains-log .captain-answer blockquote { margin: .75em 0; padding-left: 1em; border-left: 3px solid var(--pi-border-muted); color: var(--pi-muted); }
129
- .captains-log .captain-answer code { font-family: monospace; background: var(--pi-surface); border-radius: 3px; padding: .1em .25em; }
130
- .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; }
131
- .captains-log .captain-answer pre code { padding: 0; background: none; }
132
- .captains-log .captain-answer a { color: var(--pi-accent); text-decoration: underline; }
133
- .captains-log .captain-answer a:focus-visible { outline: 2px solid var(--pi-accent); outline-offset: 2px; }
134
- .captains-log .captain-table-scroll { max-width: 100%; overflow: auto; margin: .75em 0; }
135
- .captains-log .captain-answer table { border-collapse: collapse; width: 100%; }
136
- .captains-log .captain-answer th, .captains-log .captain-answer td { border: 1px solid var(--pi-border-muted); padding: 6px 10px; text-align: left; }
137
- .captains-log .captain-answer th { background: var(--pi-surface); }
138
- .captains-log .captain-answer hr { border: 0; border-top: 1px solid var(--pi-border-muted); }
139
- .captains-log .captain-secondary { border-top: 1px solid var(--pi-border-muted); margin-top: 12px; padding-top: 6px; }
140
- .captains-log details { padding: 8px 0; }
141
- .captains-log summary { cursor: pointer; color: var(--pi-muted); }
142
- .captains-log details p { margin: 8px 0; overflow-wrap: anywhere; }
143
- .captains-log .captain-history { display: grid; gap: 6px; padding-top: 8px; }
144
- .captains-log .captain-history button { justify-content: flex-start; text-align: left; min-width: 0; }
145
- .captains-log dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 10px; font-size: 11px; }
146
- .captains-log dd { margin: 0; overflow-wrap: anywhere; }
147
- .captains-log .captain-footnote { font-size: 11px; margin-top: 10px; }
148
- `;
@@ -1,26 +0,0 @@
1
- // Generated from pi-packages/captains-log/src/browser/protocol.ts. Do not edit directly.
2
- export const CAPTAIN_REQUEST = "captains-log:v1:request";
3
- export const CAPTAIN_REPLY = "captains-log:v1:reply";
4
- export const SOURCE_REQUEST = "captains-log:v1:source-request";
5
- export const SOURCE_REPLY = "captains-log:v1:source-reply";
6
- export const PIRATE_INTRO = "We are pirates. Always speak pirate.";
7
- export const PIRATE_MARKER = "captains-log:pirate-introduced";
8
- export const MAX_FINDINGS = 48_000;
9
- export const MAX_QUESTION = 8_000;
10
- export const UUID = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;
11
- export function isLogEntry(value) {
12
- if (typeof value !== "object" || value === null)
13
- return false;
14
- return "id" in value && typeof value.id === "string" && UUID.test(value.id)
15
- && "createdAt" in value && typeof value.createdAt === "string"
16
- && "sessionId" in value && typeof value.sessionId === "string" && value.sessionId.length <= 512
17
- && (!("sourceSessionId" in value) || value.sourceSessionId === undefined || (typeof value.sourceSessionId === "string" && !!value.sourceSessionId.trim() && value.sourceSessionId.length <= 512))
18
- && "question" in value && typeof value.question === "string" && value.question.length <= MAX_QUESTION
19
- && "status" in value && ["running", "completed", "failed", "interrupted"].includes(String(value.status))
20
- && (!("failureCode" in value) || value.failureCode === undefined || (typeof value.failureCode === "string" && ["session-unavailable", "request-failed", "interrupted"].includes(value.failureCode)))
21
- && "stages" in value && Array.isArray(value.stages) && value.stages.length <= 16 && value.stages.every((s) => typeof s === "string" && s.length <= 256)
22
- && "text" in value && typeof value.text === "string" && value.text.length <= MAX_FINDINGS;
23
- }
24
- export function captainPrompt(text) {
25
- return `Retell this as a theatrical pirate captain briefing the crew. Rewrite it from scratch: nautical metaphors, colorful pirate phrasing, and a little humor. Preserve the important facts, warnings, and next steps; keep code and commands exact. Don't merely sprinkle “arrr” onto the original. Always speak pirate.\n\nSource reply:\n${text}`;
26
- }
@@ -1,126 +0,0 @@
1
- // Generated from pi-packages/captains-log/src/companion.ts. Do not edit directly.
2
- import { MAX_FINDINGS, UUID, CAPTAIN_REPLY, CAPTAIN_REQUEST, SOURCE_REQUEST, SOURCE_REPLY, PIRATE_INTRO, PIRATE_MARKER, captainPrompt } from "./browser/protocol.js";
3
- export default function companion(pi) {
4
- let context;
5
- let active;
6
- const reply = (requestId, result) => { pi.events.emit(CAPTAIN_REPLY, { requestId, ...result }); };
7
- pi.on("session_start", (_event, ctx) => { context = ctx; });
8
- pi.on("session_shutdown", () => {
9
- if (active)
10
- reply(active.requestId, { status: "failed", error: "Captain request interrupted by session shutdown or reload" });
11
- active = undefined;
12
- context = undefined;
13
- });
14
- pi.on("before_agent_start", (event) => {
15
- if (!active)
16
- return;
17
- if (!active.started && "prompt" in event && event.prompt === active.prompt) {
18
- active.started = true;
19
- if (event.prompt === PIRATE_INTRO)
20
- pi.appendEntry(PIRATE_MARKER, {});
21
- reply(active.requestId, { status: "running" });
22
- }
23
- else
24
- active.error = "Another prompt interfered with this Captain request; translation was not saved";
25
- });
26
- pi.on("message_start", (event) => {
27
- if (!active || event.message.role !== "user")
28
- return;
29
- const content = event.message.content;
30
- const text = typeof content === "string" ? content : content.filter((part) => part.type === "text").map((part) => part.text).join("");
31
- if (text !== active.prompt)
32
- active.error = "Another user message interfered with this Captain request";
33
- });
34
- pi.on("tool_result", (event) => {
35
- if (active?.started === true && event.isError)
36
- active.error = `Captain tool failed: ${event.toolName}. Inspect the conversation and retry explicitly.`;
37
- });
38
- pi.on("message_end", (event) => {
39
- if (active?.started !== true || event.message.role !== "assistant")
40
- return;
41
- active.text = event.message.content.filter((part) => part.type === "text").map((part) => part.text).join("\n");
42
- active.stopReason = event.message.stopReason;
43
- if (event.message.stopReason === "error" || event.message.stopReason === "aborted") {
44
- active.error = event.message.errorMessage ?? `Captain request ${event.message.stopReason}`;
45
- }
46
- });
47
- // agent_end can precede automatic retries/compaction. Settlement is the final boundary.
48
- pi.on("agent_settled", () => {
49
- if (active?.started !== true)
50
- return;
51
- const result = active;
52
- active = undefined;
53
- const error = result.error ?? (result.stopReason !== "stop" || !result.text.trim()
54
- ? "Captain request ended without a successful final text response" : result.text.length > MAX_FINDINGS
55
- ? "Captain reply exceeded the storage limit" : undefined);
56
- if (error === undefined && result.nextPrompt !== undefined) {
57
- active = { requestId: result.requestId, prompt: result.nextPrompt, started: false, text: "", stopReason: "" };
58
- try {
59
- pi.sendUserMessage(active.prompt);
60
- }
61
- catch (failure) {
62
- active = undefined;
63
- reply(result.requestId, { status: "failed", error: String(failure) });
64
- }
65
- return;
66
- }
67
- reply(result.requestId, error !== undefined ? { status: "failed", error } : { status: "completed", text: result.text });
68
- });
69
- // Read only this companion's active branch; never prompt, rename, or append to the source.
70
- pi.events.on(SOURCE_REQUEST, (data) => {
71
- if (typeof data !== "object" || data === null || !("requestId" in data)
72
- || typeof data.requestId !== "string" || !UUID.test(data.requestId))
73
- return;
74
- const respond = (result) => { pi.events.emit(SOURCE_REPLY, { requestId: data.requestId, ...result }); };
75
- try {
76
- if (!context || active || !context.isIdle() || context.hasPendingMessages())
77
- throw new Error("Source session must be idle with no pending messages. Wait for it to finish, then translate again.");
78
- if (context.sessionManager.getEntries().some((entry) => entry.type === "custom" && (entry.customType === PIRATE_MARKER || entry.customType === "captains-log:request")))
79
- throw new Error("Select a source session other than the pirate conversation.");
80
- for (const entry of [...context.sessionManager.getBranch()].reverse()) {
81
- if (entry.type !== "message" || entry.message.role !== "assistant" || entry.message.stopReason !== "stop")
82
- continue;
83
- const text = entry.message.content.filter((part) => part.type === "text").map((part) => part.text).join("\n");
84
- if (!text.trim())
85
- continue;
86
- if (text.length > MAX_FINDINGS)
87
- throw new Error("Source reply exceeds the translation limit (48000 characters).");
88
- respond({ status: "completed", text });
89
- return;
90
- }
91
- throw new Error("Source session has no completed assistant text reply on its active branch.");
92
- }
93
- catch (error) {
94
- respond({ status: "failed", error: error instanceof Error ? error.message : String(error) });
95
- }
96
- });
97
- // Pi owns listeners and replaces them on /reload. No background resources at load time.
98
- pi.events.on(CAPTAIN_REQUEST, (data) => {
99
- if (typeof data !== "object" || data === null || !("requestId" in data)
100
- || typeof data.requestId !== "string" || !UUID.test(data.requestId))
101
- return;
102
- if (!("text" in data) || typeof data.text !== "string" || !data.text.trim() || data.text.length > MAX_FINDINGS) {
103
- reply(data.requestId, { status: "failed", error: "Invalid translation text" });
104
- return;
105
- }
106
- const { requestId } = data;
107
- if (!context || active || !context.isIdle() || context.hasPendingMessages()) {
108
- reply(requestId, { status: "failed", error: "Companion not ready or session busy; open Captain's Log in Sessions, wait for idle, then retry" });
109
- return;
110
- }
111
- const introduced = context.sessionManager.getEntries().some((entry) => entry.type === "custom" && entry.customType === PIRATE_MARKER);
112
- const translation = captainPrompt(data.text);
113
- const prompt = introduced ? translation : PIRATE_INTRO;
114
- active = { requestId, prompt, ...(introduced ? {} : { nextPrompt: translation }), started: false, text: "", stopReason: "" };
115
- try {
116
- pi.setSessionName("Captain's Log");
117
- pi.appendEntry("captains-log:request", { requestId });
118
- reply(requestId, { status: "accepted" });
119
- pi.sendUserMessage(prompt);
120
- }
121
- catch (error) {
122
- active = undefined;
123
- reply(requestId, { status: "failed", error: error instanceof Error ? error.message : String(error) });
124
- }
125
- });
126
- }
@@ -1,62 +0,0 @@
1
- // Generated from pi-packages/captains-log/src/roundtrip.ts. Do not edit directly.
2
- import { MAX_FINDINGS, CAPTAIN_REPLY, CAPTAIN_REQUEST, SOURCE_REPLY, SOURCE_REQUEST } from "./browser/protocol.js";
3
- export function collectReply(connection, requestId, text, lifetime, progress) {
4
- return collect(connection, requestId, { requestId, text }, CAPTAIN_REQUEST, CAPTAIN_REPLY, lifetime, progress);
5
- }
6
- export function collectSourceReply(connection, requestId, lifetime, progress) {
7
- return collect(connection, requestId, { requestId }, SOURCE_REQUEST, SOURCE_REPLY, lifetime, progress);
8
- }
9
- /** Subscribe before sending. Never retry an ambiguous send or cancel Pi on timeout. */
10
- async function collect(connection, requestId, payload, requestEvent, replyEvent, lifetime, progress) {
11
- const signal = AbortSignal.any([lifetime, connection.signal]);
12
- signal.throwIfAborted();
13
- let unsubscribe;
14
- let onAbort;
15
- let receiptTimer;
16
- let completionTimer;
17
- try {
18
- return await new Promise((resolve, reject) => {
19
- onAbort = () => { reject(new Error("Captain connection interrupted; agent work may continue in Sessions")); };
20
- signal.addEventListener("abort", onAbort, { once: true });
21
- receiptTimer = setTimeout(() => { reject(new Error("No companion receipt within 5 seconds. Check package enablement/trust; inspect Sessions before retrying.")); }, 5_000);
22
- completionTimer = setTimeout(() => { reject(new Error("Captain request exceeded 10 minutes; agent work may continue in Sessions. No translation saved.")); }, 600_000);
23
- unsubscribe = connection.on(replyEvent, (data) => {
24
- if (typeof data !== "object" || data === null || !("requestId" in data) || data.requestId !== requestId)
25
- return;
26
- if (!("status" in data))
27
- return;
28
- if (data.status === "accepted") {
29
- clearTimeout(receiptTimer);
30
- progress("Native companion received request");
31
- return;
32
- }
33
- if (data.status === "running") {
34
- progress("Native Pi agent running");
35
- return;
36
- }
37
- if (data.status === "failed") {
38
- reject(new Error("error" in data && typeof data.error === "string" ? data.error.slice(0, 4000) : "Captain request failed"));
39
- }
40
- else if (data.status === "completed") {
41
- if (!("text" in data) || typeof data.text !== "string" || !data.text.trim() || data.text.length > MAX_FINDINGS) {
42
- reject(new Error("Invalid companion reply"));
43
- }
44
- else {
45
- progress("Backend received correlated final reply");
46
- resolve(data.text);
47
- }
48
- }
49
- });
50
- // Native listeners can reply synchronously.
51
- progress("Backend sent request to native companion");
52
- connection.emit(requestEvent, payload);
53
- });
54
- }
55
- finally {
56
- clearTimeout(receiptTimer);
57
- clearTimeout(completionTimer);
58
- if (onAbort)
59
- signal.removeEventListener("abort", onAbort);
60
- unsubscribe?.();
61
- }
62
- }
@@ -1,210 +0,0 @@
1
- // Generated from pi-packages/captains-log/src/server.ts. Do not edit directly.
2
- import { randomUUID } from "node:crypto";
3
- import { PI_WEB_HOST_PI_SESSIONS_CAPABILITY, PI_WEB_HOST_PI_SESSION_EVENTS_CAPABILITY } from "@chainingintention/pi-web-cn/server-plugin-api";
4
- import {} from "./browser/protocol.js";
5
- import { LOG_CHANNEL, entryFrames, isCaptainClientFrame } from "./browser/channelProtocol.js";
6
- import { collectReply, collectSourceReply } from "./roundtrip.js";
7
- import { LogStore, logScope } from "./store.js";
8
- const plugin = {
9
- apiVersion: 3,
10
- name: "Captain's Log",
11
- requires: [PI_WEB_HOST_PI_SESSIONS_CAPABILITY, PI_WEB_HOST_PI_SESSION_EVENTS_CAPABILITY],
12
- activate(host) {
13
- const store = new LogStore(host.dataDirectory);
14
- const active = new Map();
15
- const unsaved = new Map();
16
- const currentSessions = new Map();
17
- const subscribers = new Map();
18
- const channelCleanups = new Set();
19
- function publish(scope, entry, saved) {
20
- for (const frame of entryFrames(entry, saved))
21
- for (const send of subscribers.get(scope) ?? [])
22
- send(frame);
23
- }
24
- const tasks = new Set();
25
- let sessions;
26
- let events;
27
- function visible(scope, entry) {
28
- const live = active.get(scope);
29
- if (live?.id === entry.id)
30
- return live;
31
- return unsaved.get(entry.id) ?? (entry.status === "running"
32
- ? { ...entry, status: "interrupted", failureCode: "interrupted", text: "Captain's Log stopped before recording completion. Inspect the previous session before retrying. Nothing was resent automatically." }
33
- : entry);
34
- }
35
- return {
36
- start({ capabilities }) {
37
- sessions = capabilities.resolve(PI_WEB_HOST_PI_SESSIONS_CAPABILITY);
38
- events = capabilities.resolve(PI_WEB_HOST_PI_SESSION_EVENTS_CAPABILITY);
39
- },
40
- peer: {
41
- async request(context) {
42
- context.signal.throwIfAborted();
43
- host.lifetimeSignal.throwIfAborted();
44
- const selection = { projectId: context.project.id, workspaceId: context.workspace.id };
45
- const scope = logScope(selection.projectId, selection.workspaceId);
46
- if (context.operation === "list") {
47
- const entries = (await store.list(scope)).map((entry) => visible(scope, entry));
48
- const live = active.get(scope);
49
- if (live && !entries.some((entry) => entry.id === live.id))
50
- entries.unshift(live);
51
- return entries.map((entry) => ({ ...entry, text: "" }));
52
- }
53
- if (context.operation === "read") {
54
- const live = active.get(scope);
55
- return { ...(live?.id === context.input ? live : visible(scope, await store.read(scope, context.input))) };
56
- }
57
- throw new Error("Unknown Captain operation (translations require the log channel)");
58
- },
59
- openChannel(context) {
60
- context.signal.throwIfAborted();
61
- host.lifetimeSignal.throwIfAborted();
62
- if (context.operation !== LOG_CHANNEL || context.input !== null)
63
- throw new Error("Invalid Captain channel open");
64
- const selection = { projectId: context.project.id, workspaceId: context.workspace.id };
65
- const scope = logScope(selection.projectId, selection.workspaceId);
66
- let listening = true;
67
- const send = (frame) => {
68
- if (!listening)
69
- return;
70
- try {
71
- context.send(frame.type === "entry" ? { ...frame, entry: { ...frame.entry } } : frame);
72
- }
73
- catch (error) {
74
- cleanup();
75
- host.logger.warn(`Captain subscriber disconnected: ${String(error)}`);
76
- }
77
- };
78
- const cleanup = () => {
79
- listening = false;
80
- subscribers.get(scope)?.delete(send);
81
- if ((subscribers.get(scope)?.size ?? 0) === 0)
82
- subscribers.delete(scope);
83
- context.signal.removeEventListener("abort", cleanup);
84
- host.lifetimeSignal.removeEventListener("abort", cleanup);
85
- channelCleanups.delete(cleanup);
86
- };
87
- if (!subscribers.has(scope))
88
- subscribers.set(scope, new Set());
89
- subscribers.get(scope)?.add(send);
90
- context.signal.addEventListener("abort", cleanup, { once: true });
91
- host.lifetimeSignal.addEventListener("abort", cleanup, { once: true });
92
- channelCleanups.add(cleanup);
93
- return {
94
- close: cleanup,
95
- async receive(data, signal) {
96
- signal.throwIfAborted();
97
- host.lifetimeSignal.throwIfAborted();
98
- if (!isCaptainClientFrame(data))
99
- throw new Error("Invalid Captain translation frame");
100
- const reject = (message) => { send({ type: "rejected", requestId: data.requestId, message: message.slice(0, 2000) }); };
101
- if (active.has(scope)) {
102
- reject("Captain is already working.");
103
- return;
104
- }
105
- const entry = { id: randomUUID(), createdAt: new Date().toISOString(), sessionId: "", question: "Translate last reply", sourceSessionId: data.sourceSessionId, status: "running", stages: ["Backend admitted translation"], text: "Preparing Captain's Log…" };
106
- // Lock before any I/O so concurrent tabs cannot create two dedicated sessions.
107
- active.set(scope, entry);
108
- try {
109
- const previous = await store.list(scope);
110
- // Strictly increasing admission times make persisted session selection independent of UUID ties.
111
- const latestTime = Math.max(0, ...previous.map((record) => Date.parse(record.createdAt)).filter(Number.isFinite));
112
- entry.createdAt = new Date(Math.max(Date.now(), latestTime + 1)).toISOString();
113
- entry.sessionId = currentSessions.get(scope) ?? previous.find((record) => record.sessionId)?.sessionId ?? "";
114
- if (entry.sessionId === data.sourceSessionId || previous.some((record) => record.sessionId === data.sourceSessionId))
115
- throw new Error("Select a source session other than the pirate conversation.");
116
- await store.save(scope, entry);
117
- }
118
- catch (error) {
119
- active.delete(scope);
120
- reject(String(error));
121
- return;
122
- }
123
- send({ type: "admitted", requestId: data.requestId, id: entry.id });
124
- publish(scope, entry, true);
125
- const progress = (stage) => {
126
- if (!entry.stages.includes(stage) && entry.stages.length < 16)
127
- entry.stages.push(stage);
128
- publish(scope, entry, false);
129
- };
130
- const task = (async () => {
131
- try {
132
- host.lifetimeSignal.throwIfAborted();
133
- const source = await events.connect({ ...selection, sessionId: data.sourceSessionId });
134
- let sourceText;
135
- try {
136
- sourceText = await collectSourceReply(source, entry.id, host.lifetimeSignal, progress);
137
- }
138
- finally {
139
- source.close();
140
- }
141
- progress("Source reply read without changing source");
142
- const createPirate = async () => {
143
- ({ sessionId: entry.sessionId } = await sessions.create(selection));
144
- currentSessions.set(scope, entry.sessionId);
145
- // Persist identity before any potentially ambiguous send.
146
- await store.save(scope, entry);
147
- return events.connect({ ...selection, sessionId: entry.sessionId });
148
- };
149
- const previousSessionId = entry.sessionId;
150
- const connection = previousSessionId
151
- ? await events.connect({ ...selection, sessionId: previousSessionId }).catch((error) => {
152
- // Only a definitive rejection before sending permits automatic replacement.
153
- if (error instanceof Error && error.message === "Selected session is not hosted in this workspace on this machine")
154
- return createPirate();
155
- throw error;
156
- })
157
- : await createPirate();
158
- progress("Pirate conversation selected");
159
- try {
160
- entry.text = await collectReply(connection, entry.id, sourceText, host.lifetimeSignal, progress);
161
- }
162
- finally {
163
- connection.close();
164
- }
165
- entry.status = "completed";
166
- }
167
- catch (error) {
168
- entry.status = "failed";
169
- entry.failureCode ??= "request-failed";
170
- entry.text = `Captain could not finish this request. Inspect the session before retrying; nothing was resent automatically.\n${error instanceof Error ? error.message : String(error)}`.slice(0, 4000);
171
- progress("Backend recorded failure (not success)");
172
- }
173
- let saved = false;
174
- try {
175
- if (entry.status === "completed")
176
- entry.stages.push("Backend saved completed roundtrip");
177
- await store.save(scope, entry);
178
- saved = true;
179
- }
180
- catch (error) {
181
- entry.status = "failed";
182
- entry.failureCode = "request-failed";
183
- entry.stages = entry.stages.filter((stage) => stage !== "Backend saved completed roundtrip");
184
- entry.text = `Could not save Captain's Log: ${String(error)}. Inspect session ${entry.sessionId}.`.slice(0, 4000);
185
- unsaved.set(entry.id, { ...entry });
186
- host.logger.error(entry.text);
187
- }
188
- finally {
189
- active.delete(scope);
190
- publish(scope, entry, saved);
191
- }
192
- })();
193
- tasks.add(task);
194
- void task.finally(() => { tasks.delete(task); });
195
- },
196
- };
197
- },
198
- },
199
- async dispose() {
200
- await Promise.all(tasks);
201
- for (const cleanup of channelCleanups)
202
- cleanup();
203
- active.clear();
204
- unsaved.clear();
205
- currentSessions.clear();
206
- },
207
- };
208
- },
209
- };
210
- export default plugin;