@prismshadow/penguin-server 0.2.2 → 0.2.4

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 (302) hide show
  1. package/README.md +3 -0
  2. package/dist/api/types.d.ts +552 -49
  3. package/dist/chunk-KQQ3HSTK.js +568 -0
  4. package/dist/chunk-KQQ3HSTK.js.map +1 -0
  5. package/dist/hmr/manifest.d.ts +54 -0
  6. package/dist/hmr/manifest.js +27 -0
  7. package/dist/hmr/manifest.js.map +1 -0
  8. package/dist/index.js +4495 -1041
  9. package/dist/index.js.map +1 -1
  10. package/dist/reset-admin-password.d.ts +28 -0
  11. package/dist/reset-admin-password.js +39 -0
  12. package/dist/reset-admin-password.js.map +1 -0
  13. package/package.json +15 -3
  14. package/web-dist/assets/addon-fit-ClUHZ6NU.js +1 -0
  15. package/web-dist/assets/addon-web-links-BKMSMMvN.js +1 -0
  16. package/web-dist/assets/cpp-DIPi6g--.js +1 -0
  17. package/web-dist/assets/highlighter-Cp5vYdaX.js +152 -0
  18. package/web-dist/assets/index-BJNmFD1m.js +187 -0
  19. package/web-dist/assets/index-BneOZQwC.css +1 -0
  20. package/web-dist/assets/ruby-B13GW9FM.js +1 -0
  21. package/web-dist/assets/xterm-j28bzvOQ.js +9 -0
  22. package/web-dist/index.html +2 -2
  23. package/web-dist/assets/abap-BdImnpbu.js +0 -1
  24. package/web-dist/assets/actionscript-3-CoDkCxhg.js +0 -1
  25. package/web-dist/assets/ada-bCR0ucgS.js +0 -1
  26. package/web-dist/assets/andromeeda-C4gqWexZ.js +0 -1
  27. package/web-dist/assets/angular-html-DA-rfuFy.js +0 -1
  28. package/web-dist/assets/angular-ts-BrjP3tb8.js +0 -1
  29. package/web-dist/assets/apache-Pmp26Uib.js +0 -1
  30. package/web-dist/assets/apex-Dqspr-GT.js +0 -1
  31. package/web-dist/assets/apl-CORt7UWP.js +0 -1
  32. package/web-dist/assets/applescript-Co6uUVPk.js +0 -1
  33. package/web-dist/assets/ara-BRHolxvo.js +0 -1
  34. package/web-dist/assets/asciidoc-Ve4PFQV2.js +0 -1
  35. package/web-dist/assets/asm-D_Q5rh1f.js +0 -1
  36. package/web-dist/assets/astro-HNnZUWAn.js +0 -1
  37. package/web-dist/assets/aurora-x-D-2ljcwZ.js +0 -1
  38. package/web-dist/assets/awk-DMzUqQB5.js +0 -1
  39. package/web-dist/assets/ayu-dark-DYE7WIF3.js +0 -1
  40. package/web-dist/assets/ayu-light-BA47KaF1.js +0 -1
  41. package/web-dist/assets/ayu-mirage-32ctXXKs.js +0 -1
  42. package/web-dist/assets/ballerina-BFfxhgS-.js +0 -1
  43. package/web-dist/assets/bat-BkioyH1T.js +0 -1
  44. package/web-dist/assets/beancount-k_qm7-4y.js +0 -1
  45. package/web-dist/assets/berry-uYugtg8r.js +0 -1
  46. package/web-dist/assets/bibtex-CHM0blh-.js +0 -1
  47. package/web-dist/assets/bicep-Bmn6On1c.js +0 -1
  48. package/web-dist/assets/bird2-BIv1doCn.js +0 -1
  49. package/web-dist/assets/blade-2xfisSek.js +0 -1
  50. package/web-dist/assets/bsl-BO_Y6i37.js +0 -1
  51. package/web-dist/assets/c3-MRO5bC_T.js +0 -1
  52. package/web-dist/assets/cadence-Bv_4Rxtq.js +0 -1
  53. package/web-dist/assets/cairo-KRGpt6FW.js +0 -1
  54. package/web-dist/assets/catppuccin-frappe-DFWUc33u.js +0 -1
  55. package/web-dist/assets/catppuccin-latte-C9dUb6Cb.js +0 -1
  56. package/web-dist/assets/catppuccin-macchiato-DQyhUUbL.js +0 -1
  57. package/web-dist/assets/catppuccin-mocha-D87Tk5Gz.js +0 -1
  58. package/web-dist/assets/clarity-D53aC0YG.js +0 -1
  59. package/web-dist/assets/clojure-P80f7IUj.js +0 -1
  60. package/web-dist/assets/cmake-D1j8_8rp.js +0 -1
  61. package/web-dist/assets/cobol-nBiQ_Alo.js +0 -1
  62. package/web-dist/assets/codeowners-Bp6g37R7.js +0 -1
  63. package/web-dist/assets/codeql-DsOJ9woJ.js +0 -1
  64. package/web-dist/assets/coffee-Ch7k5sss.js +0 -1
  65. package/web-dist/assets/common-lisp-Cg-RD9OK.js +0 -1
  66. package/web-dist/assets/coq-DkFqJrB1.js +0 -1
  67. package/web-dist/assets/cpp-UfJy6YNI.js +0 -1
  68. package/web-dist/assets/crystal-DGywbUpC.js +0 -1
  69. package/web-dist/assets/csharp-DSvCPggb.js +0 -1
  70. package/web-dist/assets/csv-fuZLfV_i.js +0 -1
  71. package/web-dist/assets/cue-D82EKSYY.js +0 -1
  72. package/web-dist/assets/cypher-COkxafJQ.js +0 -1
  73. package/web-dist/assets/d-85-TOEBH.js +0 -1
  74. package/web-dist/assets/dark-plus-C3mMm8J8.js +0 -1
  75. package/web-dist/assets/dart-bE4Kk8sk.js +0 -1
  76. package/web-dist/assets/dax-CEL-wOlO.js +0 -1
  77. package/web-dist/assets/desktop-BmXAJ9_W.js +0 -1
  78. package/web-dist/assets/docker-BcOcwvcX.js +0 -1
  79. package/web-dist/assets/dotenv-Da5cRb03.js +0 -1
  80. package/web-dist/assets/dracula-BzJJZx-M.js +0 -1
  81. package/web-dist/assets/dracula-soft-BXkSAIEj.js +0 -1
  82. package/web-dist/assets/dream-maker-BtqSS_iP.js +0 -1
  83. package/web-dist/assets/edge-FbVlp4U3.js +0 -1
  84. package/web-dist/assets/elixir-CkH2-t6x.js +0 -1
  85. package/web-dist/assets/elm-DbKCFpqz.js +0 -1
  86. package/web-dist/assets/emacs-lisp-CXvaQtF9.js +0 -1
  87. package/web-dist/assets/erb-Dm6A9KJ5.js +0 -1
  88. package/web-dist/assets/erlang-DsQrWhSR.js +0 -1
  89. package/web-dist/assets/everforest-dark-BgDCqdQA.js +0 -1
  90. package/web-dist/assets/everforest-light-C8M2exoo.js +0 -1
  91. package/web-dist/assets/fennel-BYunw83y.js +0 -1
  92. package/web-dist/assets/fish-BvzEVeQv.js +0 -1
  93. package/web-dist/assets/fluent-C4IJs8-o.js +0 -1
  94. package/web-dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
  95. package/web-dist/assets/fortran-free-form-BxgE0vQu.js +0 -1
  96. package/web-dist/assets/fsharp-CXgrBDvD.js +0 -1
  97. package/web-dist/assets/gdresource-BOOCDP_w.js +0 -1
  98. package/web-dist/assets/gdscript-C5YyOfLZ.js +0 -1
  99. package/web-dist/assets/gdshader-DkwncUOv.js +0 -1
  100. package/web-dist/assets/genie-D0YGMca9.js +0 -1
  101. package/web-dist/assets/gherkin-DyxjwDmM.js +0 -1
  102. package/web-dist/assets/git-commit-F4YmCXRG.js +0 -1
  103. package/web-dist/assets/git-rebase-r7XF79zn.js +0 -1
  104. package/web-dist/assets/github-dark-default-Cuk6v7N8.js +0 -1
  105. package/web-dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
  106. package/web-dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
  107. package/web-dist/assets/github-light-default-D7oLnXFd.js +0 -1
  108. package/web-dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
  109. package/web-dist/assets/gleam-BspZqrRM.js +0 -1
  110. package/web-dist/assets/glimmer-js-ByusRIyA.js +0 -1
  111. package/web-dist/assets/glimmer-ts-BfAWNZQY.js +0 -1
  112. package/web-dist/assets/glsl-DplSGwfg.js +0 -1
  113. package/web-dist/assets/gn-n2N0HUVH.js +0 -1
  114. package/web-dist/assets/gnuplot-DdkO51Og.js +0 -1
  115. package/web-dist/assets/graphql-ChdNCCLP.js +0 -1
  116. package/web-dist/assets/groovy-gcz8RCvz.js +0 -1
  117. package/web-dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
  118. package/web-dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
  119. package/web-dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
  120. package/web-dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
  121. package/web-dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
  122. package/web-dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
  123. package/web-dist/assets/hack-DbPARsA_.js +0 -1
  124. package/web-dist/assets/haml-D5jkg6IW.js +0 -1
  125. package/web-dist/assets/handlebars-BpdQsYii.js +0 -1
  126. package/web-dist/assets/haskell-Df6bDoY_.js +0 -1
  127. package/web-dist/assets/haxe-CzTSHFRz.js +0 -1
  128. package/web-dist/assets/hcl-BWvSN4gD.js +0 -1
  129. package/web-dist/assets/hjson-D5-asLiD.js +0 -1
  130. package/web-dist/assets/hlsl-D3lLCCz7.js +0 -1
  131. package/web-dist/assets/horizon-BUw7H-hv.js +0 -1
  132. package/web-dist/assets/horizon-bright-CUuTKBJd.js +0 -1
  133. package/web-dist/assets/houston-DnULxvSX.js +0 -1
  134. package/web-dist/assets/html-derivative-DlHx6ybY.js +0 -1
  135. package/web-dist/assets/http-jrhK8wxY.js +0 -1
  136. package/web-dist/assets/hurl-irOxFIW8.js +0 -1
  137. package/web-dist/assets/hxml-Bvhsp5Yf.js +0 -1
  138. package/web-dist/assets/hy-DFXneXwc.js +0 -1
  139. package/web-dist/assets/imba-DGztddWO.js +0 -1
  140. package/web-dist/assets/index-B3puu-Hr.js +0 -153
  141. package/web-dist/assets/index-CaDuyrN0.css +0 -1
  142. package/web-dist/assets/index-rgHg3m6g.js +0 -181
  143. package/web-dist/assets/jinja-f2NsQr07.js +0 -1
  144. package/web-dist/assets/jison-wvAkD_A8.js +0 -1
  145. package/web-dist/assets/json5-C9tS-k6U.js +0 -1
  146. package/web-dist/assets/jsonc-Des-eS-w.js +0 -1
  147. package/web-dist/assets/jsonl-DcaNXYhu.js +0 -1
  148. package/web-dist/assets/jsonnet-DFQXde-d.js +0 -1
  149. package/web-dist/assets/jssm-C2t-YnRu.js +0 -1
  150. package/web-dist/assets/julia-D7OTSIA_.js +0 -1
  151. package/web-dist/assets/just-CUsbIsdP.js +0 -1
  152. package/web-dist/assets/kanagawa-dragon-CkXjmgJE.js +0 -1
  153. package/web-dist/assets/kanagawa-lotus-CfQXZHmo.js +0 -1
  154. package/web-dist/assets/kanagawa-wave-DWedfzmr.js +0 -1
  155. package/web-dist/assets/kdl-DV7GczEv.js +0 -1
  156. package/web-dist/assets/kotlin-BdnUsdx6.js +0 -1
  157. package/web-dist/assets/kusto-wEQ09or8.js +0 -1
  158. package/web-dist/assets/laserwave-DUszq2jm.js +0 -1
  159. package/web-dist/assets/latex-CaSxy8MP.js +0 -1
  160. package/web-dist/assets/lean-BZvkOJ9d.js +0 -1
  161. package/web-dist/assets/less-B1dDrJ26.js +0 -1
  162. package/web-dist/assets/light-plus-B7mTdjB0.js +0 -1
  163. package/web-dist/assets/liquid-C0sCDyMI.js +0 -1
  164. package/web-dist/assets/llvm-DjAJT7YJ.js +0 -1
  165. package/web-dist/assets/logo-BtOb2qkB.js +0 -1
  166. package/web-dist/assets/lua-BaeVxFsk.js +0 -1
  167. package/web-dist/assets/luau-KW6xsasC.js +0 -1
  168. package/web-dist/assets/make-CHLpvVh8.js +0 -1
  169. package/web-dist/assets/marko-DjSrsDqO.js +0 -1
  170. package/web-dist/assets/material-theme-D5KoaKCx.js +0 -1
  171. package/web-dist/assets/material-theme-darker-BfHTSMKl.js +0 -1
  172. package/web-dist/assets/material-theme-lighter-B0m2ddpp.js +0 -1
  173. package/web-dist/assets/material-theme-ocean-CyktbL80.js +0 -1
  174. package/web-dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
  175. package/web-dist/assets/matlab-D7o27uSR.js +0 -1
  176. package/web-dist/assets/mdc-DTYItulj.js +0 -1
  177. package/web-dist/assets/mdx-Cmh6b_Ma.js +0 -1
  178. package/web-dist/assets/mermaid-mWjccvbQ.js +0 -1
  179. package/web-dist/assets/min-dark-CafNBF8u.js +0 -1
  180. package/web-dist/assets/min-light-CTRr51gU.js +0 -1
  181. package/web-dist/assets/mipsasm-CKIfxQSi.js +0 -1
  182. package/web-dist/assets/mojo-rZm6bMo-.js +0 -1
  183. package/web-dist/assets/monokai-D4h5O-jR.js +0 -1
  184. package/web-dist/assets/moonbit-_H4v1dQx.js +0 -1
  185. package/web-dist/assets/move-IF9eRakj.js +0 -1
  186. package/web-dist/assets/narrat-DRg8JJMk.js +0 -1
  187. package/web-dist/assets/nextflow-C-mBbutL.js +0 -1
  188. package/web-dist/assets/nextflow-groovy-vE_lwT2v.js +0 -1
  189. package/web-dist/assets/nginx-BpAMiNFr.js +0 -1
  190. package/web-dist/assets/night-owl-C39BiMTA.js +0 -1
  191. package/web-dist/assets/night-owl-light-CMTm3GFP.js +0 -1
  192. package/web-dist/assets/nim-BIad80T-.js +0 -1
  193. package/web-dist/assets/nix-CwoSXNpI.js +0 -1
  194. package/web-dist/assets/nord-Ddv68eIx.js +0 -1
  195. package/web-dist/assets/nushell-Cz2AlsmD.js +0 -1
  196. package/web-dist/assets/objective-c-DXmwc3jG.js +0 -1
  197. package/web-dist/assets/objective-cpp-CLxacb5B.js +0 -1
  198. package/web-dist/assets/ocaml-C0hk2d4L.js +0 -1
  199. package/web-dist/assets/odin-BBf5iR-q.js +0 -1
  200. package/web-dist/assets/one-dark-pro-DVMEJ2y_.js +0 -1
  201. package/web-dist/assets/one-light-C3Wv6jpd.js +0 -1
  202. package/web-dist/assets/openscad-C4EeE6gA.js +0 -1
  203. package/web-dist/assets/pascal-D93ZcfNL.js +0 -1
  204. package/web-dist/assets/perl-B9cMNwum.js +0 -1
  205. package/web-dist/assets/pkl-u5AG7uiY.js +0 -1
  206. package/web-dist/assets/plastic-3e1v2bzS.js +0 -1
  207. package/web-dist/assets/plsql-ChMvpjG-.js +0 -1
  208. package/web-dist/assets/po-BTJTHyun.js +0 -1
  209. package/web-dist/assets/poimandres-CS3Unz2-.js +0 -1
  210. package/web-dist/assets/polar-C0HS_06l.js +0 -1
  211. package/web-dist/assets/postcss-CXtECtnM.js +0 -1
  212. package/web-dist/assets/powerquery-CEu0bR-o.js +0 -1
  213. package/web-dist/assets/powershell-Dpen1YoG.js +0 -1
  214. package/web-dist/assets/prisma-Dd19v3D-.js +0 -1
  215. package/web-dist/assets/prolog-CbFg5uaA.js +0 -1
  216. package/web-dist/assets/proto-C7zT0LnQ.js +0 -1
  217. package/web-dist/assets/pug-DKIMFp6K.js +0 -1
  218. package/web-dist/assets/puppet-BMWR74SV.js +0 -1
  219. package/web-dist/assets/purescript-CklMAg4u.js +0 -1
  220. package/web-dist/assets/qml-3beO22l8.js +0 -1
  221. package/web-dist/assets/qmldir-C8lEn-DE.js +0 -1
  222. package/web-dist/assets/qss-IeuSbFQv.js +0 -1
  223. package/web-dist/assets/r-Dspwwk_N.js +0 -1
  224. package/web-dist/assets/racket-BqYA7rlc.js +0 -1
  225. package/web-dist/assets/raku-DXvB9xmW.js +0 -1
  226. package/web-dist/assets/razor-BjBPvh-w.js +0 -1
  227. package/web-dist/assets/red-bN70gL4F.js +0 -1
  228. package/web-dist/assets/reg-C-SQnVFl.js +0 -1
  229. package/web-dist/assets/regexp-CDVJQ6XC.js +0 -1
  230. package/web-dist/assets/rel-C3B-1QV4.js +0 -1
  231. package/web-dist/assets/riscv-BM1_JUlF.js +0 -1
  232. package/web-dist/assets/ron-D8l8udqQ.js +0 -1
  233. package/web-dist/assets/rose-pine-dawn-DHQR4-dF.js +0 -1
  234. package/web-dist/assets/rose-pine-moon-D4_iv3hh.js +0 -1
  235. package/web-dist/assets/rose-pine-qdsjHGoJ.js +0 -1
  236. package/web-dist/assets/rosmsg-BJDFO7_C.js +0 -1
  237. package/web-dist/assets/rst-CpCqk9r5.js +0 -1
  238. package/web-dist/assets/ruby-DyJCeAvU.js +0 -1
  239. package/web-dist/assets/sas-DEy46yEz.js +0 -1
  240. package/web-dist/assets/sass-Cj5Yp3dK.js +0 -1
  241. package/web-dist/assets/scala-C151Ov-r.js +0 -1
  242. package/web-dist/assets/scheme-C98Dy4si.js +0 -1
  243. package/web-dist/assets/scss-D5BDwBP9.js +0 -1
  244. package/web-dist/assets/sdbl-DVxCFoDh.js +0 -1
  245. package/web-dist/assets/shaderlab-Dg9Lc6iA.js +0 -1
  246. package/web-dist/assets/shellsession-BADoaaVG.js +0 -1
  247. package/web-dist/assets/slack-dark-BthQWCQV.js +0 -1
  248. package/web-dist/assets/slack-ochin-DqwNpetd.js +0 -1
  249. package/web-dist/assets/smalltalk-BERRCDM3.js +0 -1
  250. package/web-dist/assets/snazzy-light-Bw305WKR.js +0 -1
  251. package/web-dist/assets/solarized-dark-DXbdFlpD.js +0 -1
  252. package/web-dist/assets/solarized-light-L9t79GZl.js +0 -1
  253. package/web-dist/assets/solidity-rGO070M0.js +0 -1
  254. package/web-dist/assets/soy-8wufbnw4.js +0 -1
  255. package/web-dist/assets/sparql-rVzFXLq3.js +0 -1
  256. package/web-dist/assets/splunk-BtCnVYZw.js +0 -1
  257. package/web-dist/assets/ssh-config-_ykCGR6B.js +0 -1
  258. package/web-dist/assets/stata-DI20mbqo.js +0 -1
  259. package/web-dist/assets/stylus-BEDo0Tqx.js +0 -1
  260. package/web-dist/assets/surrealql-Bq5Q-fJD.js +0 -1
  261. package/web-dist/assets/svelte-Cy7k_4gC.js +0 -1
  262. package/web-dist/assets/swift-D82vCrfD.js +0 -1
  263. package/web-dist/assets/synthwave-84-CbfX1IO0.js +0 -1
  264. package/web-dist/assets/system-verilog-CnnmHF94.js +0 -1
  265. package/web-dist/assets/systemd-4A_iFExJ.js +0 -1
  266. package/web-dist/assets/talonscript-CkByrt1z.js +0 -1
  267. package/web-dist/assets/tasl-QIJgUcNo.js +0 -1
  268. package/web-dist/assets/tcl-dwOrl1Do.js +0 -1
  269. package/web-dist/assets/templ-DhtptRzy.js +0 -1
  270. package/web-dist/assets/terraform-BETggiCN.js +0 -1
  271. package/web-dist/assets/tex-idrVyKtj.js +0 -1
  272. package/web-dist/assets/tokyo-night-hegEt444.js +0 -1
  273. package/web-dist/assets/ts-tags-D351s5mN.js +0 -1
  274. package/web-dist/assets/tsv-B_m7g4N7.js +0 -1
  275. package/web-dist/assets/turtle-BsS91CYL.js +0 -1
  276. package/web-dist/assets/twig-CW1WmMYd.js +0 -1
  277. package/web-dist/assets/typespec-CAFt9gP4.js +0 -1
  278. package/web-dist/assets/typst-DHCkPAjA.js +0 -1
  279. package/web-dist/assets/v-BcVCzyr7.js +0 -1
  280. package/web-dist/assets/vala-CsfeWuGM.js +0 -1
  281. package/web-dist/assets/vb-D17OF-Vu.js +0 -1
  282. package/web-dist/assets/verilog-BQ8w6xss.js +0 -1
  283. package/web-dist/assets/vesper-DRje8inN.js +0 -1
  284. package/web-dist/assets/vhdl-CeAyd5Ju.js +0 -1
  285. package/web-dist/assets/viml-CJc9bBzg.js +0 -1
  286. package/web-dist/assets/vitesse-black-Bkuqu6BP.js +0 -1
  287. package/web-dist/assets/vitesse-dark-D0r3Knsf.js +0 -1
  288. package/web-dist/assets/vitesse-light-CVO1_9PV.js +0 -1
  289. package/web-dist/assets/vue-D2xRrEX4.js +0 -1
  290. package/web-dist/assets/vue-html-AaS7Mt5G.js +0 -1
  291. package/web-dist/assets/vue-vine-BoDAl6tE.js +0 -1
  292. package/web-dist/assets/vyper-CDx5xZoG.js +0 -1
  293. package/web-dist/assets/wasm-CG6Dc4jp.js +0 -1
  294. package/web-dist/assets/wasm-MzD3tlZU.js +0 -1
  295. package/web-dist/assets/wenyan-BV7otONQ.js +0 -1
  296. package/web-dist/assets/wgsl-Dx-B1_4e.js +0 -1
  297. package/web-dist/assets/wikitext-BhOHFoWU.js +0 -1
  298. package/web-dist/assets/wit-5i3qLPDT.js +0 -1
  299. package/web-dist/assets/wolfram-lXgVvXCa.js +0 -1
  300. package/web-dist/assets/xsl-CtQFsRM5.js +0 -1
  301. package/web-dist/assets/zenscript-DVFEvuxE.js +0 -1
  302. package/web-dist/assets/zig-VOosw3JB.js +0 -1
package/README.md CHANGED
@@ -9,6 +9,7 @@ The PenguinHarness Web backend — the Web implementation of the SDK's Human bou
9
9
  - **Runtime**: a session manager keeps active Sessions (get-or-resume-or-heal, per-Session mutex, run/compact driving); approvals surface over SSE as `approval_request` and decisions re-read the stored approval mode each time; interrupts converge pending approvals to deny before aborting; a scheduler fires `agent_state/schedule/*.toml` tasks while the service runs.
10
10
  - **SSE**: per-channel monotonic event ids with a bounded replay buffer (1000 events / 2MB); reconnects replay from `Last-Event-ID` or receive `resync_required`; heartbeat comment every 20s.
11
11
  - **Usage**: `token_usage` events are persisted row by row; costs are computed at query time from current per-model pricing.
12
+ - **Terminals**: `src/terminal/` runs pty sessions server-side (node-pty) and feeds every byte into a headless xterm, so the daemon — not the browser — owns the screen. Control is JSON over HTTP (`/api/terminals`: list / create / capture / keys / kill; create accepts `cwd`, `name`, `cols`/`rows` and a `shell` override); the byte stream is a binary WebSocket at `/api/terminals/:id/stream` (`[opcode, slot, payload]`, output coalesced into ~5ms windows with an immediate leading flush). On attach the server renders the current grid back into an ANSI restore stream, so a reload or a second device rebuilds the exact screen — scrollback, colours, cursor and DEC input modes — while the shell keeps running the whole time. The web app surfaces this twice: an in-app dock (Ctrl+` , Codex-style) and the standalone `/terminal` page (`?id=` attaches an existing terminal — the dock's detach handoff — `?cwd=`/`?name=` parameterize a new one). Sessions run in-process (no forked terminal worker); this module is the only thing touching node-pty, which is where that split would go if load ever demands it.
12
13
 
13
14
  The full route tables and the SSE protocol are documented in the [Server API reference](https://penguin.ooo/docs/server-api). DTO types are exported for type-only import via `@prismshadow/penguin-server/api`.
14
15
 
@@ -20,6 +21,7 @@ The full route tables and the SSE protocol are documented in the [Server API ref
20
21
  | `PENGUIN_HOME` | Data root (shared with SDK/CLI) | `~/.penguin/data` |
21
22
  | `PENGUIN_WEB_DB` | SQLite file path | `<root>/web.db` |
22
23
  | `PENGUIN_WEB_DIST` | Front-end build dir (static hosting + SPA fallback when present) | `../web/dist`, or the bundled `web-dist/` in the npm package |
24
+ | `PENGUIN_TRUST_PROXY` | Trust `x-forwarded-proto` for the hot-update network gate (`1` to enable) — only behind a reverse proxy that sets/strips the header itself | unset (untrusted) |
23
25
 
24
26
  `.env` in the process cwd is loaded automatically.
25
27
 
@@ -40,6 +42,7 @@ pnpm --filter @prismshadow/penguin-server start # node dist/index.js
40
42
  - **Built-in admin `admin` starts with a random initial password** of the form `penguin-1234`, printed once to the server console at seed time (`PENGUIN_SEED_ADMIN_PASSWORD` pins it for tests/e2e): change it immediately (a banner keeps reminding until you do).
41
43
  - Passwords use `node:crypto` scrypt (`scrypt$N$r$p$salt$hash`, timingSafeEqual); login sessions renew on a 7-day sliding window; the DB stores only the token's sha256.
42
44
  - Model credentials live in the Project's hidden 0600 config file; the API always masks them.
45
+ - **Terminals are a shell as the OS account running the server**, i.e. the most privileged thing the API hands out — they are not Project-scoped. A terminal is only visible to the account that created it (someone else's id answers 404, not 403), and the stream WebSocket checks `Origin` on top of the session cookie because a WebSocket handshake is not subject to CORS. Do not expose a deployment with terminals enabled to accounts you would not give SSH.
43
46
  - Behind a reverse proxy, disable response buffering for SSE paths (the server already sends `X-Accel-Buffering: no`) and forward `x-forwarded-proto` to enable Secure cookies.
44
47
 
45
48
  Part of [PenguinHarness](https://github.com/Prism-Shadow/penguin-harness) · Apache-2.0