@prismshadow/penguin-server 0.2.13 → 0.2.16

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 (423) hide show
  1. package/dist/api/types.d.ts +2762 -153
  2. package/dist/api/types.js +3 -1
  3. package/dist/auth-token.d.ts +22 -1
  4. package/dist/auth-token.js +3 -3
  5. package/dist/auth-token.js.map +1 -1
  6. package/dist/{chunk-A3QANMU5.js → chunk-3SFJKLQU.js} +315 -10
  7. package/dist/chunk-3SFJKLQU.js.map +1 -0
  8. package/dist/{chunk-3I2XOPJB.js → chunk-D3JNA6ZI.js} +126 -46
  9. package/dist/chunk-D3JNA6ZI.js.map +1 -0
  10. package/dist/{chunk-TOOTEEM4.js → chunk-G7GY7PJU.js} +1 -1
  11. package/dist/chunk-G7GY7PJU.js.map +1 -0
  12. package/dist/chunk-HX3WBUYX.js +18 -0
  13. package/dist/chunk-HX3WBUYX.js.map +1 -0
  14. package/dist/chunk-QFV3ERQO.js +20 -0
  15. package/dist/chunk-QFV3ERQO.js.map +1 -0
  16. package/dist/chunk-W7JNIJ25.js +19 -0
  17. package/dist/chunk-W7JNIJ25.js.map +1 -0
  18. package/dist/index.js +73676 -39990
  19. package/dist/index.js.map +1 -1
  20. package/dist/install.ps1 +16 -6
  21. package/dist/install.sh +24 -10
  22. package/dist/machine-status.js +1 -1
  23. package/dist/plugin/index.d.ts +1073 -276
  24. package/dist/reset-admin-password.js +3 -3
  25. package/dist/secret-file.js +3 -14
  26. package/dist/secret-file.js.map +1 -1
  27. package/dist/version-report.d.ts +3 -0
  28. package/dist/version-report.js +1 -1
  29. package/package.json +8 -6
  30. package/web-dist/assets/KaTeX_Size3-Regular-gV2CO0n9.woff2 +0 -0
  31. package/web-dist/assets/abnfDiagram-VCTEODGH-0AKFiyig.js +1 -0
  32. package/web-dist/assets/{addon-clipboard-DrZY90Ks.js → addon-clipboard-BovFnNVg.js} +1 -1
  33. package/web-dist/assets/{addon-fit-CtEAdAax.js → addon-fit-B1npgxQk.js} +1 -1
  34. package/web-dist/assets/{addon-web-links-DJL13cYY.js → addon-web-links-D88QHj7A.js} +1 -1
  35. package/web-dist/assets/arc-Beox1Cgf.js +1 -0
  36. package/web-dist/assets/architectureDiagram-5GKGNRK7-CC1sLMY1.js +36 -0
  37. package/web-dist/assets/blockDiagram-I7D4REHJ-B8BY1PkZ.js +129 -0
  38. package/web-dist/assets/c4Diagram-7LVT6UL2-yjY0BkxQ.js +38 -0
  39. package/web-dist/assets/channel-mfsAVJLE.js +1 -0
  40. package/web-dist/assets/chunk-2Q5K7J3B-DdgIvETg.js +1 -0
  41. package/web-dist/assets/chunk-5VM5RSS4-BE38k1Rs.js +15 -0
  42. package/web-dist/assets/chunk-F27PBJKO-D4YXmaqQ.js +1 -0
  43. package/web-dist/assets/chunk-IMKFNOWR-CyJFdThc.js +231 -0
  44. package/web-dist/assets/chunk-JWPE2WC7-BAM_oEUU.js +1 -0
  45. package/web-dist/assets/chunk-POPQ4Y6H-BP3D0FVi.js +1 -0
  46. package/web-dist/assets/chunk-SVP7TREG-Clk8PdKZ.js +88 -0
  47. package/web-dist/assets/chunk-TICWLB2K-EvWPnEGg.js +206 -0
  48. package/web-dist/assets/chunk-XXDRQBXY-6p5D0UB1.js +1 -0
  49. package/web-dist/assets/classDiagram-ZZMXUADV-BPVO1m8i.js +1 -0
  50. package/web-dist/assets/classDiagram-v2-VYDZK3BY-BPVO1m8i.js +1 -0
  51. package/web-dist/assets/cose-bilkent-JH36ORCC-bpkI-tLJ.js +1 -0
  52. package/web-dist/assets/cynefin-OW5HDTMX-srLaqJ4e.js +166 -0
  53. package/web-dist/assets/cynefinDiagram-5FMLGOSQ-BPfpHSPc.js +62 -0
  54. package/web-dist/assets/cytoscape.esm-BB4DxJjf.js +321 -0
  55. package/web-dist/assets/dagre-GXQ25YYZ-C4fF5-j7.js +4 -0
  56. package/web-dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  57. package/web-dist/assets/diagram-S7CK7UJ4-BzBLb_9-.js +30 -0
  58. package/web-dist/assets/diagram-UQ7AKVKN-BJuJ1o_T.js +41 -0
  59. package/web-dist/assets/diagram-VSXAHHWV-DFelN9i9.js +3 -0
  60. package/web-dist/assets/diagram-VX7I27RA-BgrEoPyp.js +24 -0
  61. package/web-dist/assets/diagram-Z3DM3KII-C71KiMiX.js +24 -0
  62. package/web-dist/assets/ebnfDiagram-PWID7BFC-EYteyp1b.js +1 -0
  63. package/web-dist/assets/erDiagram-RLTQ6QDP-B6n6-sz6.js +99 -0
  64. package/web-dist/assets/flowDiagram-HODETNUW-BtoMTdyT.js +168 -0
  65. package/web-dist/assets/ganttDiagram-EL5Y4UJY-CbOAa3vS.js +292 -0
  66. package/web-dist/assets/gitGraphDiagram-WWUBYQGX-B7-8sszH.js +106 -0
  67. package/web-dist/assets/highlighter-Bj5l2XH_.js +2 -0
  68. package/web-dist/assets/{highlighter-core-CrBdruEx.js → highlighter-core-CMXoD8ze.js} +7 -7
  69. package/web-dist/assets/{highlighter.worker-CL6f9Fzw.js → highlighter.worker-D6D9fPma.js} +9 -9
  70. package/web-dist/assets/ibm-plex-sans-condensed-latin-600-normal-CRd5VyFf.woff2 +0 -0
  71. package/web-dist/assets/ibm-plex-sans-condensed-latin-ext-600-normal-CBdNZ9Ci.woff2 +0 -0
  72. package/web-dist/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2 +0 -0
  73. package/web-dist/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2 +0 -0
  74. package/web-dist/assets/index-BOCqRT4e.css +1 -0
  75. package/web-dist/assets/index-BrMpjp2s.js +1286 -0
  76. package/web-dist/assets/infoDiagram-27XIBGKW-BBjf6pkP.js +2 -0
  77. package/web-dist/assets/init-Gi6I4Gst.js +1 -0
  78. package/web-dist/assets/ishikawaDiagram-5VMMS53U-BBSvCv45.js +70 -0
  79. package/web-dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  80. package/web-dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  81. package/web-dist/assets/journeyDiagram-3NMN7TZE-CuHHl5zk.js +139 -0
  82. package/web-dist/assets/kanban-definition-UXKFOSKX-DJyP4Myw.js +89 -0
  83. package/web-dist/assets/layout-Bqqhdwtt.js +1 -0
  84. package/web-dist/assets/linear-BZfUSIf8.js +1 -0
  85. package/web-dist/assets/mermaid.core-BlUspEsI.js +310 -0
  86. package/web-dist/assets/mindmap-definition-YA3MSWOX-BtyMD4wz.js +96 -0
  87. package/web-dist/assets/misans-400-100-DHkMCix2.woff2 +0 -0
  88. package/web-dist/assets/misans-400-101-CwgSLsmc.woff2 +0 -0
  89. package/web-dist/assets/misans-400-102-BQgefHPQ.woff2 +0 -0
  90. package/web-dist/assets/misans-400-103-CP58Mc_T.woff2 +0 -0
  91. package/web-dist/assets/misans-400-104-Ta_Xu1gd.woff2 +0 -0
  92. package/web-dist/assets/misans-400-105-CDop11AR.woff2 +0 -0
  93. package/web-dist/assets/misans-400-106-Dv8y0ubk.woff2 +0 -0
  94. package/web-dist/assets/misans-400-107-CjnHtp9E.woff2 +0 -0
  95. package/web-dist/assets/misans-400-108-BA8nQUBw.woff2 +0 -0
  96. package/web-dist/assets/misans-400-109-B6uEN0pG.woff2 +0 -0
  97. package/web-dist/assets/misans-400-110-BQqnShrY.woff2 +0 -0
  98. package/web-dist/assets/misans-400-111-CHB-Jj5X.woff2 +0 -0
  99. package/web-dist/assets/misans-400-112-D1dh4Cjx.woff2 +0 -0
  100. package/web-dist/assets/misans-400-113-Bw_wNCFp.woff2 +0 -0
  101. package/web-dist/assets/misans-400-114-CUb-5IzE.woff2 +0 -0
  102. package/web-dist/assets/misans-400-115-BICOatsO.woff2 +0 -0
  103. package/web-dist/assets/misans-400-116-B3_gmYW6.woff2 +0 -0
  104. package/web-dist/assets/misans-400-117-B8k_y3cv.woff2 +0 -0
  105. package/web-dist/assets/misans-400-118-C-2Cf5C6.woff2 +0 -0
  106. package/web-dist/assets/misans-400-119-CmLP7xnX.woff2 +0 -0
  107. package/web-dist/assets/misans-400-21-DsSSD_Zj.woff2 +0 -0
  108. package/web-dist/assets/misans-400-22-rtkxWOv4.woff2 +0 -0
  109. package/web-dist/assets/misans-400-23-CDDB4M1H.woff2 +0 -0
  110. package/web-dist/assets/misans-400-24-Dqf_XeOL.woff2 +0 -0
  111. package/web-dist/assets/misans-400-25-C4U1tJ5J.woff2 +0 -0
  112. package/web-dist/assets/misans-400-26-CEXOK-nT.woff2 +0 -0
  113. package/web-dist/assets/misans-400-27-BrNOAScF.woff2 +0 -0
  114. package/web-dist/assets/misans-400-28-CPpEnCkG.woff2 +0 -0
  115. package/web-dist/assets/misans-400-29-C9JMVw8g.woff2 +0 -0
  116. package/web-dist/assets/misans-400-30-CD-QimXa.woff2 +0 -0
  117. package/web-dist/assets/misans-400-31-S4k06NbS.woff2 +0 -0
  118. package/web-dist/assets/misans-400-32-zRMBDkz6.woff2 +0 -0
  119. package/web-dist/assets/misans-400-33-sQ_tNZSM.woff2 +0 -0
  120. package/web-dist/assets/misans-400-34-8LEGljja.woff2 +0 -0
  121. package/web-dist/assets/misans-400-35-CxSPyuiU.woff2 +0 -0
  122. package/web-dist/assets/misans-400-36-BY1i4WtO.woff2 +0 -0
  123. package/web-dist/assets/misans-400-37-C0oF42pu.woff2 +0 -0
  124. package/web-dist/assets/misans-400-38-y7xcB90w.woff2 +0 -0
  125. package/web-dist/assets/misans-400-39-C307YgZx.woff2 +0 -0
  126. package/web-dist/assets/misans-400-40-ByZr736f.woff2 +0 -0
  127. package/web-dist/assets/misans-400-41-ChKEw5zV.woff2 +0 -0
  128. package/web-dist/assets/misans-400-42-CD__zJu5.woff2 +0 -0
  129. package/web-dist/assets/misans-400-43-CqNV6_TG.woff2 +0 -0
  130. package/web-dist/assets/misans-400-44-zE-akmW8.woff2 +0 -0
  131. package/web-dist/assets/misans-400-45-Du98otwc.woff2 +0 -0
  132. package/web-dist/assets/misans-400-46-B6JXbEy2.woff2 +0 -0
  133. package/web-dist/assets/misans-400-47-DpqW0kSq.woff2 +0 -0
  134. package/web-dist/assets/misans-400-48-BprON5Q_.woff2 +0 -0
  135. package/web-dist/assets/misans-400-49-N-ct3sN6.woff2 +0 -0
  136. package/web-dist/assets/misans-400-5-ton_4jCN.woff2 +0 -0
  137. package/web-dist/assets/misans-400-50-JgU49P0U.woff2 +0 -0
  138. package/web-dist/assets/misans-400-51-DSS3Moge.woff2 +0 -0
  139. package/web-dist/assets/misans-400-52-BMoXFmwE.woff2 +0 -0
  140. package/web-dist/assets/misans-400-53-BaLMGl4z.woff2 +0 -0
  141. package/web-dist/assets/misans-400-54-CaeSn3OR.woff2 +0 -0
  142. package/web-dist/assets/misans-400-55-BBqrtLxN.woff2 +0 -0
  143. package/web-dist/assets/misans-400-56-DAZ5BnbO.woff2 +0 -0
  144. package/web-dist/assets/misans-400-57-F-n3b0gI.woff2 +0 -0
  145. package/web-dist/assets/misans-400-58-DEUuPQAq.woff2 +0 -0
  146. package/web-dist/assets/misans-400-59-DXP5rhCL.woff2 +0 -0
  147. package/web-dist/assets/misans-400-6-DWCCUO_c.woff2 +0 -0
  148. package/web-dist/assets/misans-400-60-BE6IO6zJ.woff2 +0 -0
  149. package/web-dist/assets/misans-400-61-5Qb1gaxK.woff2 +0 -0
  150. package/web-dist/assets/misans-400-62-D_tJKNAj.woff2 +0 -0
  151. package/web-dist/assets/misans-400-63-hwmne8yB.woff2 +0 -0
  152. package/web-dist/assets/misans-400-64-BGedxReM.woff2 +0 -0
  153. package/web-dist/assets/misans-400-65-BaKPsugb.woff2 +0 -0
  154. package/web-dist/assets/misans-400-66-IdaOMzCz.woff2 +0 -0
  155. package/web-dist/assets/misans-400-67-BdWyS83H.woff2 +0 -0
  156. package/web-dist/assets/misans-400-68-DrZ_1swq.woff2 +0 -0
  157. package/web-dist/assets/misans-400-69-B3jsSD92.woff2 +0 -0
  158. package/web-dist/assets/misans-400-70-D6UZI2Ua.woff2 +0 -0
  159. package/web-dist/assets/misans-400-71-HFxyMCYg.woff2 +0 -0
  160. package/web-dist/assets/misans-400-72-CP5A-yQP.woff2 +0 -0
  161. package/web-dist/assets/misans-400-73-BoD_bu6s.woff2 +0 -0
  162. package/web-dist/assets/misans-400-74-CbJlhZlZ.woff2 +0 -0
  163. package/web-dist/assets/misans-400-75-BsbWuELX.woff2 +0 -0
  164. package/web-dist/assets/misans-400-76-DkwiQhof.woff2 +0 -0
  165. package/web-dist/assets/misans-400-77-6pVHXHnF.woff2 +0 -0
  166. package/web-dist/assets/misans-400-78-CfUF6pih.woff2 +0 -0
  167. package/web-dist/assets/misans-400-79-BCS3Dx4e.woff2 +0 -0
  168. package/web-dist/assets/misans-400-80-BEYSdQ_N.woff2 +0 -0
  169. package/web-dist/assets/misans-400-81-BzL-Gncx.woff2 +0 -0
  170. package/web-dist/assets/misans-400-82-CaENmdUU.woff2 +0 -0
  171. package/web-dist/assets/misans-400-83-Bvq1eBcA.woff2 +0 -0
  172. package/web-dist/assets/misans-400-84-Ctd90hiP.woff2 +0 -0
  173. package/web-dist/assets/misans-400-85-DWuOxfL1.woff2 +0 -0
  174. package/web-dist/assets/misans-400-86-D5niZS5c.woff2 +0 -0
  175. package/web-dist/assets/misans-400-87-DkOIADQJ.woff2 +0 -0
  176. package/web-dist/assets/misans-400-88-CGY4WTcC.woff2 +0 -0
  177. package/web-dist/assets/misans-400-89-CA3eoMTt.woff2 +0 -0
  178. package/web-dist/assets/misans-400-90-CzxR9MYb.woff2 +0 -0
  179. package/web-dist/assets/misans-400-91-Dyr85txc.woff2 +0 -0
  180. package/web-dist/assets/misans-400-97-qEZrCUNe.woff2 +0 -0
  181. package/web-dist/assets/misans-400-cyrillic--hFcG0Xp.woff2 +0 -0
  182. package/web-dist/assets/misans-400-extra-ZRI9n2Hu.woff2 +0 -0
  183. package/web-dist/assets/misans-400-latin-BRDR1WaL.woff2 +0 -0
  184. package/web-dist/assets/misans-400-latin-ext-6xS-MvHW.woff2 +0 -0
  185. package/web-dist/assets/misans-400-vietnamese-D7xD7kBB.woff2 +0 -0
  186. package/web-dist/assets/misans-500-100-BHuGA96E.woff2 +0 -0
  187. package/web-dist/assets/misans-500-101-CDMYUz0c.woff2 +0 -0
  188. package/web-dist/assets/misans-500-102-CWcqYYCV.woff2 +0 -0
  189. package/web-dist/assets/misans-500-103-BE1QSEzY.woff2 +0 -0
  190. package/web-dist/assets/misans-500-104-CDp743BV.woff2 +0 -0
  191. package/web-dist/assets/misans-500-105-y7dY6Foi.woff2 +0 -0
  192. package/web-dist/assets/misans-500-106-CP-kGZ6j.woff2 +0 -0
  193. package/web-dist/assets/misans-500-107-CUc8Hvle.woff2 +0 -0
  194. package/web-dist/assets/misans-500-108-ItN_x8jX.woff2 +0 -0
  195. package/web-dist/assets/misans-500-109-CEtf3R4D.woff2 +0 -0
  196. package/web-dist/assets/misans-500-110-BSZSHYRL.woff2 +0 -0
  197. package/web-dist/assets/misans-500-111-DfdArrjn.woff2 +0 -0
  198. package/web-dist/assets/misans-500-112-DRtNyrQw.woff2 +0 -0
  199. package/web-dist/assets/misans-500-113-CDT7tKuB.woff2 +0 -0
  200. package/web-dist/assets/misans-500-114-CCh4jwL8.woff2 +0 -0
  201. package/web-dist/assets/misans-500-115-DplUgPp0.woff2 +0 -0
  202. package/web-dist/assets/misans-500-116-C7eCklyK.woff2 +0 -0
  203. package/web-dist/assets/misans-500-117-BA0KabyT.woff2 +0 -0
  204. package/web-dist/assets/misans-500-118-V_M0eu2q.woff2 +0 -0
  205. package/web-dist/assets/misans-500-119-Cgf3Hszt.woff2 +0 -0
  206. package/web-dist/assets/misans-500-21-Di6DyR6O.woff2 +0 -0
  207. package/web-dist/assets/misans-500-22-CSnXvtL-.woff2 +0 -0
  208. package/web-dist/assets/misans-500-23-A06Hm9a6.woff2 +0 -0
  209. package/web-dist/assets/misans-500-24-Df97RCik.woff2 +0 -0
  210. package/web-dist/assets/misans-500-25-bOSJ6YXH.woff2 +0 -0
  211. package/web-dist/assets/misans-500-26-C65icgBb.woff2 +0 -0
  212. package/web-dist/assets/misans-500-27-C_GRm0va.woff2 +0 -0
  213. package/web-dist/assets/misans-500-28-CzZkqO0l.woff2 +0 -0
  214. package/web-dist/assets/misans-500-29-BReyeRyX.woff2 +0 -0
  215. package/web-dist/assets/misans-500-30-DzfjlROz.woff2 +0 -0
  216. package/web-dist/assets/misans-500-31-B2nLpgdU.woff2 +0 -0
  217. package/web-dist/assets/misans-500-32-Bz3rHm8X.woff2 +0 -0
  218. package/web-dist/assets/misans-500-33-AU3lZ1vY.woff2 +0 -0
  219. package/web-dist/assets/misans-500-34-CBAWkH-I.woff2 +0 -0
  220. package/web-dist/assets/misans-500-35-VgnGd14P.woff2 +0 -0
  221. package/web-dist/assets/misans-500-36-B2kfXv6A.woff2 +0 -0
  222. package/web-dist/assets/misans-500-37-DhKo8ykb.woff2 +0 -0
  223. package/web-dist/assets/misans-500-38-D8tTxFuc.woff2 +0 -0
  224. package/web-dist/assets/misans-500-39-DTm3aqJQ.woff2 +0 -0
  225. package/web-dist/assets/misans-500-40-C_akwj8_.woff2 +0 -0
  226. package/web-dist/assets/misans-500-41-RVM1JHQW.woff2 +0 -0
  227. package/web-dist/assets/misans-500-42-MVWIN_il.woff2 +0 -0
  228. package/web-dist/assets/misans-500-43-BtLZYNyD.woff2 +0 -0
  229. package/web-dist/assets/misans-500-44-D0QHMl6G.woff2 +0 -0
  230. package/web-dist/assets/misans-500-45-DRlclX7-.woff2 +0 -0
  231. package/web-dist/assets/misans-500-46-BEWswL4N.woff2 +0 -0
  232. package/web-dist/assets/misans-500-47-COSoxWaW.woff2 +0 -0
  233. package/web-dist/assets/misans-500-48-DZAISq3n.woff2 +0 -0
  234. package/web-dist/assets/misans-500-49-KSfi7MW0.woff2 +0 -0
  235. package/web-dist/assets/misans-500-5-h1SBcwuW.woff2 +0 -0
  236. package/web-dist/assets/misans-500-50-CIVMfG11.woff2 +0 -0
  237. package/web-dist/assets/misans-500-51-BdeNBhBL.woff2 +0 -0
  238. package/web-dist/assets/misans-500-52-CEW4e7ex.woff2 +0 -0
  239. package/web-dist/assets/misans-500-53-lmPCsEnt.woff2 +0 -0
  240. package/web-dist/assets/misans-500-54-B_7AqKQW.woff2 +0 -0
  241. package/web-dist/assets/misans-500-55-B-3RtUnH.woff2 +0 -0
  242. package/web-dist/assets/misans-500-56-g6D0e0cW.woff2 +0 -0
  243. package/web-dist/assets/misans-500-57-D5hp5Yqr.woff2 +0 -0
  244. package/web-dist/assets/misans-500-58-ilnDgEKt.woff2 +0 -0
  245. package/web-dist/assets/misans-500-59-DJYXz8tr.woff2 +0 -0
  246. package/web-dist/assets/misans-500-6-uCdpdDQy.woff2 +0 -0
  247. package/web-dist/assets/misans-500-60-B3Iaqx0p.woff2 +0 -0
  248. package/web-dist/assets/misans-500-61-CMxqg5hc.woff2 +0 -0
  249. package/web-dist/assets/misans-500-62-7FY8O2NQ.woff2 +0 -0
  250. package/web-dist/assets/misans-500-63-JP6vEuJf.woff2 +0 -0
  251. package/web-dist/assets/misans-500-64-Cdub62jh.woff2 +0 -0
  252. package/web-dist/assets/misans-500-65-DVHk_mlC.woff2 +0 -0
  253. package/web-dist/assets/misans-500-66-BX39wRtF.woff2 +0 -0
  254. package/web-dist/assets/misans-500-67-BcsepI3X.woff2 +0 -0
  255. package/web-dist/assets/misans-500-68-etUIUjrh.woff2 +0 -0
  256. package/web-dist/assets/misans-500-69-DfhVmnuA.woff2 +0 -0
  257. package/web-dist/assets/misans-500-70-D6dgy6-B.woff2 +0 -0
  258. package/web-dist/assets/misans-500-71-PkeKjcVn.woff2 +0 -0
  259. package/web-dist/assets/misans-500-72-D66Fnb30.woff2 +0 -0
  260. package/web-dist/assets/misans-500-73-jr9z9870.woff2 +0 -0
  261. package/web-dist/assets/misans-500-74-DsCkPKwe.woff2 +0 -0
  262. package/web-dist/assets/misans-500-75-Dkooq6KM.woff2 +0 -0
  263. package/web-dist/assets/misans-500-76-B0sfieHl.woff2 +0 -0
  264. package/web-dist/assets/misans-500-77-8tflq1ji.woff2 +0 -0
  265. package/web-dist/assets/misans-500-78-COKdMbdp.woff2 +0 -0
  266. package/web-dist/assets/misans-500-79-Bm0rBjSF.woff2 +0 -0
  267. package/web-dist/assets/misans-500-80-B9OoAnyy.woff2 +0 -0
  268. package/web-dist/assets/misans-500-81-DsQ9tpfX.woff2 +0 -0
  269. package/web-dist/assets/misans-500-82-VKsL2Tk2.woff2 +0 -0
  270. package/web-dist/assets/misans-500-83-Ce6mfHYD.woff2 +0 -0
  271. package/web-dist/assets/misans-500-84-D7kPSZLm.woff2 +0 -0
  272. package/web-dist/assets/misans-500-85-W5L0cEfd.woff2 +0 -0
  273. package/web-dist/assets/misans-500-86-DukGOEET.woff2 +0 -0
  274. package/web-dist/assets/misans-500-87-BJ_Lok6j.woff2 +0 -0
  275. package/web-dist/assets/misans-500-88-DbJ11zcA.woff2 +0 -0
  276. package/web-dist/assets/misans-500-89-LNKcEq6M.woff2 +0 -0
  277. package/web-dist/assets/misans-500-90-DNDDgSCd.woff2 +0 -0
  278. package/web-dist/assets/misans-500-91-rT8Q0evu.woff2 +0 -0
  279. package/web-dist/assets/misans-500-97-c8zW_WRq.woff2 +0 -0
  280. package/web-dist/assets/misans-500-cyrillic-CLHOGwgx.woff2 +0 -0
  281. package/web-dist/assets/misans-500-extra-CTAMEQ59.woff2 +0 -0
  282. package/web-dist/assets/misans-500-latin-Be606ott.woff2 +0 -0
  283. package/web-dist/assets/misans-500-latin-ext-BzDyL4sU.woff2 +0 -0
  284. package/web-dist/assets/misans-500-vietnamese-DBOLOqZH.woff2 +0 -0
  285. package/web-dist/assets/mona-sans-latin-ext-wght-normal-BqSk0Z3x.woff2 +0 -0
  286. package/web-dist/assets/mona-sans-latin-wght-normal-Pz49MTQZ.woff2 +0 -0
  287. package/web-dist/assets/noto-sans-sc-100-wght-normal-DrqXJETY.woff2 +0 -0
  288. package/web-dist/assets/noto-sans-sc-101-wght-normal-c94LAl5p.woff2 +0 -0
  289. package/web-dist/assets/noto-sans-sc-102-wght-normal-C1RtbCZr.woff2 +0 -0
  290. package/web-dist/assets/noto-sans-sc-103-wght-normal-DGHo20nu.woff2 +0 -0
  291. package/web-dist/assets/noto-sans-sc-104-wght-normal-CJT2ioDJ.woff2 +0 -0
  292. package/web-dist/assets/noto-sans-sc-105-wght-normal-BFoiJwz2.woff2 +0 -0
  293. package/web-dist/assets/noto-sans-sc-106-wght-normal-D6uUHw3w.woff2 +0 -0
  294. package/web-dist/assets/noto-sans-sc-107-wght-normal-kFQzJDLH.woff2 +0 -0
  295. package/web-dist/assets/noto-sans-sc-108-wght-normal-7aXvqIa2.woff2 +0 -0
  296. package/web-dist/assets/noto-sans-sc-109-wght-normal-CnjNbNmw.woff2 +0 -0
  297. package/web-dist/assets/noto-sans-sc-110-wght-normal-D2JBr045.woff2 +0 -0
  298. package/web-dist/assets/noto-sans-sc-111-wght-normal-ClFr5QXM.woff2 +0 -0
  299. package/web-dist/assets/noto-sans-sc-112-wght-normal-CiZxJMyY.woff2 +0 -0
  300. package/web-dist/assets/noto-sans-sc-113-wght-normal-OgQXOX6x.woff2 +0 -0
  301. package/web-dist/assets/noto-sans-sc-114-wght-normal-CRH9SDZu.woff2 +0 -0
  302. package/web-dist/assets/noto-sans-sc-115-wght-normal-BN__2iBG.woff2 +0 -0
  303. package/web-dist/assets/noto-sans-sc-116-wght-normal-vdFVzbO2.woff2 +0 -0
  304. package/web-dist/assets/noto-sans-sc-117-wght-normal-Dsz3vkzU.woff2 +0 -0
  305. package/web-dist/assets/noto-sans-sc-118-wght-normal-BPEb0gM9.woff2 +0 -0
  306. package/web-dist/assets/noto-sans-sc-119-wght-normal-BfzSEbFz.woff2 +0 -0
  307. package/web-dist/assets/noto-sans-sc-21-wght-normal-DIu_1ZBI.woff2 +0 -0
  308. package/web-dist/assets/noto-sans-sc-22-wght-normal-VXjdYcT-.woff2 +0 -0
  309. package/web-dist/assets/noto-sans-sc-23-wght-normal-4HrHKhpL.woff2 +0 -0
  310. package/web-dist/assets/noto-sans-sc-24-wght-normal-B58DWgHS.woff2 +0 -0
  311. package/web-dist/assets/noto-sans-sc-25-wght-normal-C3Jm6l7O.woff2 +0 -0
  312. package/web-dist/assets/noto-sans-sc-26-wght-normal-YNOygvr_.woff2 +0 -0
  313. package/web-dist/assets/noto-sans-sc-27-wght-normal-BP2pEGQH.woff2 +0 -0
  314. package/web-dist/assets/noto-sans-sc-28-wght-normal-BWPKDbtH.woff2 +0 -0
  315. package/web-dist/assets/noto-sans-sc-29-wght-normal-45aVmHn_.woff2 +0 -0
  316. package/web-dist/assets/noto-sans-sc-30-wght-normal-B8_s30jZ.woff2 +0 -0
  317. package/web-dist/assets/noto-sans-sc-31-wght-normal-DW0t445S.woff2 +0 -0
  318. package/web-dist/assets/noto-sans-sc-32-wght-normal-ShbWPcei.woff2 +0 -0
  319. package/web-dist/assets/noto-sans-sc-33-wght-normal-BOTZYTjM.woff2 +0 -0
  320. package/web-dist/assets/noto-sans-sc-34-wght-normal-BF1rqDSt.woff2 +0 -0
  321. package/web-dist/assets/noto-sans-sc-35-wght-normal-Bosspiyr.woff2 +0 -0
  322. package/web-dist/assets/noto-sans-sc-36-wght-normal-CtU9CyKw.woff2 +0 -0
  323. package/web-dist/assets/noto-sans-sc-37-wght-normal-ghDiyiuv.woff2 +0 -0
  324. package/web-dist/assets/noto-sans-sc-38-wght-normal-4Nz8k_dt.woff2 +0 -0
  325. package/web-dist/assets/noto-sans-sc-39-wght-normal-Ddtm1XVC.woff2 +0 -0
  326. package/web-dist/assets/noto-sans-sc-4-wght-normal-BRbPMj-C.woff2 +0 -0
  327. package/web-dist/assets/noto-sans-sc-40-wght-normal-BVn4-kgX.woff2 +0 -0
  328. package/web-dist/assets/noto-sans-sc-41-wght-normal-CZqajZnl.woff2 +0 -0
  329. package/web-dist/assets/noto-sans-sc-42-wght-normal-CQ4lY28u.woff2 +0 -0
  330. package/web-dist/assets/noto-sans-sc-43-wght-normal-psppu0d8.woff2 +0 -0
  331. package/web-dist/assets/noto-sans-sc-44-wght-normal-cbKJlTUe.woff2 +0 -0
  332. package/web-dist/assets/noto-sans-sc-45-wght-normal-MKIEVRIC.woff2 +0 -0
  333. package/web-dist/assets/noto-sans-sc-46-wght-normal-CErGc6Mt.woff2 +0 -0
  334. package/web-dist/assets/noto-sans-sc-47-wght-normal-C5Kgg1_m.woff2 +0 -0
  335. package/web-dist/assets/noto-sans-sc-48-wght-normal-DFMjDDY6.woff2 +0 -0
  336. package/web-dist/assets/noto-sans-sc-49-wght-normal-B7l_3BZr.woff2 +0 -0
  337. package/web-dist/assets/noto-sans-sc-5-wght-normal-DI846rD9.woff2 +0 -0
  338. package/web-dist/assets/noto-sans-sc-50-wght-normal-C5KfAmFp.woff2 +0 -0
  339. package/web-dist/assets/noto-sans-sc-51-wght-normal-C2bq6hC8.woff2 +0 -0
  340. package/web-dist/assets/noto-sans-sc-52-wght-normal-P18e_Y0j.woff2 +0 -0
  341. package/web-dist/assets/noto-sans-sc-53-wght-normal-Bgkuo2tF.woff2 +0 -0
  342. package/web-dist/assets/noto-sans-sc-54-wght-normal-DL5lmlUd.woff2 +0 -0
  343. package/web-dist/assets/noto-sans-sc-55-wght-normal-BV_Oy6IF.woff2 +0 -0
  344. package/web-dist/assets/noto-sans-sc-56-wght-normal-B4L7Hj8f.woff2 +0 -0
  345. package/web-dist/assets/noto-sans-sc-57-wght-normal-DU8YBsDj.woff2 +0 -0
  346. package/web-dist/assets/noto-sans-sc-58-wght-normal-CE0BKS9u.woff2 +0 -0
  347. package/web-dist/assets/noto-sans-sc-59-wght-normal-Azv2Ku9_.woff2 +0 -0
  348. package/web-dist/assets/noto-sans-sc-6-wght-normal-ozUCEY9O.woff2 +0 -0
  349. package/web-dist/assets/noto-sans-sc-60-wght-normal-C1lngC61.woff2 +0 -0
  350. package/web-dist/assets/noto-sans-sc-61-wght-normal-BxWkGF5M.woff2 +0 -0
  351. package/web-dist/assets/noto-sans-sc-62-wght-normal-CXXMAq-5.woff2 +0 -0
  352. package/web-dist/assets/noto-sans-sc-63-wght-normal-4La5uKvS.woff2 +0 -0
  353. package/web-dist/assets/noto-sans-sc-64-wght-normal-CbIuD2Eg.woff2 +0 -0
  354. package/web-dist/assets/noto-sans-sc-65-wght-normal-BGqvKda2.woff2 +0 -0
  355. package/web-dist/assets/noto-sans-sc-66-wght-normal-BvNozWOY.woff2 +0 -0
  356. package/web-dist/assets/noto-sans-sc-67-wght-normal-CC-WRBV-.woff2 +0 -0
  357. package/web-dist/assets/noto-sans-sc-68-wght-normal-c0FjfUaj.woff2 +0 -0
  358. package/web-dist/assets/noto-sans-sc-69-wght-normal-D596Jjl2.woff2 +0 -0
  359. package/web-dist/assets/noto-sans-sc-70-wght-normal-ColEcmtJ.woff2 +0 -0
  360. package/web-dist/assets/noto-sans-sc-71-wght-normal-ChZfXpdg.woff2 +0 -0
  361. package/web-dist/assets/noto-sans-sc-72-wght-normal-D1VyfEG3.woff2 +0 -0
  362. package/web-dist/assets/noto-sans-sc-73-wght-normal-DwSJRYPJ.woff2 +0 -0
  363. package/web-dist/assets/noto-sans-sc-74-wght-normal-Cte7o1QG.woff2 +0 -0
  364. package/web-dist/assets/noto-sans-sc-75-wght-normal-B0qL41rF.woff2 +0 -0
  365. package/web-dist/assets/noto-sans-sc-76-wght-normal-BPLMO_2x.woff2 +0 -0
  366. package/web-dist/assets/noto-sans-sc-77-wght-normal-Dkbi3pye.woff2 +0 -0
  367. package/web-dist/assets/noto-sans-sc-78-wght-normal-BFUXeSw6.woff2 +0 -0
  368. package/web-dist/assets/noto-sans-sc-79-wght-normal-DoJG4UTB.woff2 +0 -0
  369. package/web-dist/assets/noto-sans-sc-80-wght-normal-BEFypWOO.woff2 +0 -0
  370. package/web-dist/assets/noto-sans-sc-81-wght-normal-ed_TZlfo.woff2 +0 -0
  371. package/web-dist/assets/noto-sans-sc-82-wght-normal-DcxfR5OJ.woff2 +0 -0
  372. package/web-dist/assets/noto-sans-sc-83-wght-normal-C9UjAcMM.woff2 +0 -0
  373. package/web-dist/assets/noto-sans-sc-84-wght-normal-C7NxT478.woff2 +0 -0
  374. package/web-dist/assets/noto-sans-sc-85-wght-normal-DBcDBu1n.woff2 +0 -0
  375. package/web-dist/assets/noto-sans-sc-86-wght-normal-CLJIoPpl.woff2 +0 -0
  376. package/web-dist/assets/noto-sans-sc-87-wght-normal-DYfJ-vGE.woff2 +0 -0
  377. package/web-dist/assets/noto-sans-sc-88-wght-normal-ClNDOCGW.woff2 +0 -0
  378. package/web-dist/assets/noto-sans-sc-89-wght-normal-IQU_KQA8.woff2 +0 -0
  379. package/web-dist/assets/noto-sans-sc-90-wght-normal-BWcrRNoG.woff2 +0 -0
  380. package/web-dist/assets/noto-sans-sc-91-wght-normal-CGekvDdH.woff2 +0 -0
  381. package/web-dist/assets/noto-sans-sc-97-wght-normal-BsBHkXi3.woff2 +0 -0
  382. package/web-dist/assets/noto-sans-sc-98-wght-normal-BZqSA1r_.woff2 +0 -0
  383. package/web-dist/assets/noto-sans-sc-99-wght-normal-Q_IptJM5.woff2 +0 -0
  384. package/web-dist/assets/noto-sans-sc-cyrillic-wght-normal-CRA5_Pf1.woff2 +0 -0
  385. package/web-dist/assets/noto-sans-sc-latin-ext-wght-normal-CqPqLCfe.woff2 +0 -0
  386. package/web-dist/assets/noto-sans-sc-latin-wght-normal-DYAKOyvl.woff2 +0 -0
  387. package/web-dist/assets/noto-sans-sc-vietnamese-wght-normal-y5SU35Rl.woff2 +0 -0
  388. package/web-dist/assets/ordinal-Cboi1Yqb.js +1 -0
  389. package/web-dist/assets/pegDiagram-XKGWAZYB-BUF_GJ0B.js +1 -0
  390. package/web-dist/assets/pieDiagram-E7YTZNPT-nweubbsU.js +39 -0
  391. package/web-dist/assets/quadrantDiagram-AXDQQJYC-B_r4Wkxy.js +7 -0
  392. package/web-dist/assets/railroadDiagram-O6MQD6OU-Dn7nm0MX.js +1 -0
  393. package/web-dist/assets/requirementDiagram-BXWQKSXE-DaagYJ49.js +84 -0
  394. package/web-dist/assets/sankeyDiagram-P5KCCOFB-CqEX6H-B.js +40 -0
  395. package/web-dist/assets/sequenceDiagram-WJ2MYXX4-BzLfQO55.js +162 -0
  396. package/web-dist/assets/sizeCapture-INFHLROL-BcUuVH2L.js +1 -0
  397. package/web-dist/assets/stateDiagram-D77RDMKH-BO3LWLvT.js +1 -0
  398. package/web-dist/assets/stateDiagram-v2-MP3YSRHH-B-EuucjM.js +1 -0
  399. package/web-dist/assets/swimlanes-42K2YHIH-etP_hkIB.js +1 -0
  400. package/web-dist/assets/swimlanesDiagram-VR7AAH4N-0JbFdDbQ.js +8 -0
  401. package/web-dist/assets/timeline-definition-24CTP7MA-CTLt2XCT.js +120 -0
  402. package/web-dist/assets/vennDiagram-4TSXK5OY-DPO6ZSvH.js +34 -0
  403. package/web-dist/assets/wardleyDiagram-VM6X3IG4-DFofGg8b.js +78 -0
  404. package/web-dist/assets/{xterm-B2oS8Mg8.js → xterm-RdyTuaAH.js} +1 -1
  405. package/web-dist/assets/xychartDiagram-S5SC5T6Z-Bgtb34Gu.js +7 -0
  406. package/web-dist/fonts-licenses/ibm-plex-sans-condensed.txt +93 -0
  407. package/web-dist/fonts-licenses/ibm-plex-sans.txt +93 -0
  408. package/web-dist/fonts-licenses/jetbrains-mono.txt +93 -0
  409. package/web-dist/fonts-licenses/misans.txt +119 -0
  410. package/web-dist/fonts-licenses/mona-sans.txt +93 -0
  411. package/web-dist/fonts-licenses/noto-sans-sc.txt +93 -0
  412. package/web-dist/index.html +24 -5
  413. package/web-dist/workbench-ui.css +266 -0
  414. package/dist/chunk-3I2XOPJB.js.map +0 -1
  415. package/dist/chunk-A3QANMU5.js.map +0 -1
  416. package/dist/chunk-L2H3K4DT.js +0 -7
  417. package/dist/chunk-L2H3K4DT.js.map +0 -1
  418. package/dist/chunk-S3BI6R7I.js +0 -14
  419. package/dist/chunk-S3BI6R7I.js.map +0 -1
  420. package/dist/chunk-TOOTEEM4.js.map +0 -1
  421. package/web-dist/assets/highlighter-CUb4XKtQ.js +0 -2
  422. package/web-dist/assets/index-CmfumtXy.js +0 -570
  423. package/web-dist/assets/index-Ywc2uM5u.css +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/db/repos/users.ts","../src/db/repos/auth-sessions.ts"],"sourcesContent":["/**\n * users table repo: pure SQL wrapper, no business rules.\n * user_id is the login name (a semantic id, specified at creation, immutable).\n */\nimport { Component, Use } from \"@prismshadow/penguin-core/kernel\";\nimport type { Db } from \"../../hmr/capabilities.js\";\nimport type { Users } from \"../../mechanisms/identity.js\";\n\nexport interface UserRow {\n userId: string;\n passwordHash: string;\n isAdmin: boolean;\n /** Still using the initial password (seeded / set by an admin); cleared to 0 once the user changes it. */\n passwordIsInitial: boolean;\n /** Nickname shown in place of the id; null = never set. */\n displayName: string | null;\n /** Avatar as a data URL; null = never set. */\n avatar: string | null;\n createdAt: string;\n}\n\nfunction mapRow(r: Record<string, unknown>): UserRow {\n return {\n userId: r.user_id as string,\n passwordHash: r.password_hash as string,\n isAdmin: (r.is_admin as number) === 1,\n passwordIsInitial: (r.password_is_initial as number) === 1,\n displayName: (r.display_name as string | null) ?? null,\n avatar: (r.avatar as string | null) ?? null,\n createdAt: r.created_at as string,\n };\n}\n\n@Component()\nexport class UsersRepo implements Users {\n @Use() private readonly db!: Db;\n\n insert(row: UserRow): void {\n this.db\n .prepare(\n \"INSERT INTO users (user_id, password_hash, is_admin, password_is_initial, display_name, avatar, created_at)\" +\n \" VALUES (?, ?, ?, ?, ?, ?, ?)\",\n )\n .run(\n row.userId,\n row.passwordHash,\n row.isAdmin ? 1 : 0,\n row.passwordIsInitial ? 1 : 0,\n row.displayName,\n row.avatar,\n row.createdAt,\n );\n }\n\n findById(userId: string): UserRow | null {\n const r = this.db.prepare(\"SELECT * FROM users WHERE user_id = ?\").get(userId);\n return r ? mapRow(r) : null;\n }\n\n /** All users (for the admin user backend), ordered by creation time ascending. */\n list(): UserRow[] {\n const rows = this.db.prepare(\"SELECT * FROM users ORDER BY created_at ASC, user_id ASC\").all();\n return rows.map(mapRow);\n }\n\n count(): number {\n const r = this.db.prepare(\"SELECT COUNT(*) AS n FROM users\").get();\n return (r?.n as number) ?? 0;\n }\n\n /** Update the password hash; isInitial marks whether the password was set by someone else (seed / admin). */\n updatePassword(userId: string, passwordHash: string, isInitial: boolean): void {\n this.db\n .prepare(\"UPDATE users SET password_hash = ?, password_is_initial = ? WHERE user_id = ?\")\n .run(passwordHash, isInitial ? 1 : 0, userId);\n }\n\n /**\n * Writes the profile fields the patch names, leaving the rest as they are: an absent key\n * keeps the stored value, `null` clears it, a string replaces it. A patch naming neither\n * field writes nothing rather than issuing an UPDATE with an empty SET list.\n */\n updateProfile(\n userId: string,\n patch: { displayName?: string | null; avatar?: string | null },\n ): void {\n const sets: string[] = [];\n const values: (string | null)[] = [];\n if (patch.displayName !== undefined) {\n sets.push(\"display_name = ?\");\n values.push(patch.displayName);\n }\n if (patch.avatar !== undefined) {\n sets.push(\"avatar = ?\");\n values.push(patch.avatar);\n }\n if (sets.length === 0) return;\n this.db.prepare(`UPDATE users SET ${sets.join(\", \")} WHERE user_id = ?`).run(...values, userId);\n }\n\n /** Used by admin user deletion and account-creation compensation paths (owned Projects must be cleaned up first). */\n delete(userId: string): void {\n this.db.prepare(\"DELETE FROM users WHERE user_id = ?\").run(userId);\n }\n}\n","/**\n * auth_sessions table repo (server-side sessions backing the HttpOnly cookie). Stores only\n * sha256(token); the raw token appears only in the cookie. `issue()` is the ONE minting point,\n * so a CLI-minted row cannot drift from one the server issues itself.\n */\nimport { createHash, randomBytes } from \"node:crypto\";\nimport { Component, Use } from \"@prismshadow/penguin-core/kernel\";\nimport type { Db } from \"../../hmr/capabilities.js\";\nimport type { AuthSessions } from \"../../mechanisms/identity.js\";\n\n/** How a session was established, as stored. NULL on rows formed before the column existed. */\nexport type SessionViaValue = \"password\" | \"desktop\" | \"setup\" | \"cli\" | \"remote\";\n\nexport interface AuthSessionRow {\n tokenHash: string;\n userId: string;\n createdAt: string;\n expiresAt: string;\n via: SessionViaValue | null;\n}\n\n/** sha256 hex of a raw session token — the only form the database ever holds. */\nexport function sessionTokenHash(token: string): string {\n return createHash(\"sha256\").update(token).digest(\"hex\");\n}\n\n@Component()\nexport class AuthSessionsRepo implements AuthSessions {\n @Use() private readonly db!: Db;\n\n /**\n * Mints a session and returns the raw token for a cookie or the terminal. `maxTtlMs` caps a\n * caller-supplied lifetime (`--ttl-seconds`): one longer than an ordinary session would make\n * a leaked token file outlive every other credential, sliding forever. Expired rows are\n * swept here too, so a cron that only mints does not accumulate them.\n */\n issue(opts: {\n userId: string;\n via: SessionViaValue;\n now: Date;\n ttlMs: number;\n maxTtlMs?: number;\n }): { token: string; expiresAt: string } {\n const ttlMs = Math.max(1_000, Math.min(opts.ttlMs, opts.maxTtlMs ?? opts.ttlMs));\n const token = randomBytes(32).toString(\"base64url\");\n const createdAt = opts.now.toISOString();\n const expiresAt = new Date(opts.now.getTime() + ttlMs).toISOString();\n this.deleteExpired(createdAt);\n this.insert({\n tokenHash: sessionTokenHash(token),\n userId: opts.userId,\n createdAt,\n expiresAt,\n via: opts.via,\n });\n return { token, expiresAt };\n }\n\n insert(row: AuthSessionRow): void {\n this.db\n .prepare(\n \"INSERT INTO auth_sessions (token_hash, user_id, created_at, expires_at, via) VALUES (?, ?, ?, ?, ?)\",\n )\n .run(row.tokenHash, row.userId, row.createdAt, row.expiresAt, row.via);\n }\n\n findByTokenHash(tokenHash: string): AuthSessionRow | null {\n const r = this.db.prepare(\"SELECT * FROM auth_sessions WHERE token_hash = ?\").get(tokenHash);\n if (!r) return null;\n return {\n tokenHash: r.token_hash as string,\n userId: r.user_id as string,\n createdAt: r.created_at as string,\n expiresAt: r.expires_at as string,\n via: (r.via as SessionViaValue | null) ?? null,\n };\n }\n\n /** Sliding renewal: update the expiration time. */\n touch(tokenHash: string, expiresAt: string): void {\n this.db\n .prepare(\"UPDATE auth_sessions SET expires_at = ? WHERE token_hash = ?\")\n .run(expiresAt, tokenHash);\n }\n\n delete(tokenHash: string): void {\n this.db.prepare(\"DELETE FROM auth_sessions WHERE token_hash = ?\").run(tokenHash);\n }\n\n /** Opportunistically clean up expired sessions (called during login/validation). */\n deleteExpired(nowIso: string): void {\n this.db.prepare(\"DELETE FROM auth_sessions WHERE expires_at < ?\").run(nowIso);\n }\n\n /** Clear all sessions for a user (forces re-login after an admin resets the password). */\n deleteByUser(userId: string): void {\n this.db.prepare(\"DELETE FROM auth_sessions WHERE user_id = ?\").run(userId);\n }\n\n /**\n * Clear a user's sessions of one kind. Used to end EVERY first-login session when a password\n * is set: an earlier boot's link may still be live in someone's scrollback, and a `setup`\n * session may change the password without knowing the old one.\n */\n deleteByUserAndVia(userId: string, via: SessionViaValue): void {\n this.db.prepare(\"DELETE FROM auth_sessions WHERE user_id = ? AND via = ?\").run(userId, via);\n }\n}\n"],"mappings":"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","names":["Component","Use","_db_dec","_init","Component","Use"]}
@@ -0,0 +1,18 @@
1
+ // src/secret-file.ts
2
+ import fs from "fs";
3
+ function writeSecretFile(filePath, contents) {
4
+ fs.rmSync(filePath, { force: true });
5
+ const flags = fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL | (fs.constants.O_NOFOLLOW ?? 0);
6
+ const fd = fs.openSync(filePath, flags, 384);
7
+ try {
8
+ fs.fchmodSync(fd, 384);
9
+ fs.writeSync(fd, contents);
10
+ } finally {
11
+ fs.closeSync(fd);
12
+ }
13
+ }
14
+
15
+ export {
16
+ writeSecretFile
17
+ };
18
+ //# sourceMappingURL=chunk-HX3WBUYX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/secret-file.ts"],"sourcesContent":["/**\n * Writes a bearer secret to a 0600 file, refusing to follow a symlink parked at the path:\n * someone who can write the directory but not read the file could otherwise redirect the write\n * into a file they CAN read. Hence unlink + exclusive create, and chmod on the fd rather than\n * the path. Exported as `@prismshadow/penguin-server/secret-file` so the CLI shares it.\n */\nimport fs from \"node:fs\";\n\nexport function writeSecretFile(filePath: string, contents: string): void {\n fs.rmSync(filePath, { force: true });\n const flags =\n fs.constants.O_WRONLY |\n fs.constants.O_CREAT |\n fs.constants.O_EXCL |\n (fs.constants.O_NOFOLLOW ?? 0);\n const fd = fs.openSync(filePath, flags, 0o600);\n try {\n fs.fchmodSync(fd, 0o600);\n fs.writeSync(fd, contents);\n } finally {\n fs.closeSync(fd);\n }\n}\n"],"mappings":";AAMA,OAAO,QAAQ;AAER,SAAS,gBAAgB,UAAkB,UAAwB;AACxE,KAAG,OAAO,UAAU,EAAE,OAAO,KAAK,CAAC;AACnC,QAAM,QACJ,GAAG,UAAU,WACb,GAAG,UAAU,UACb,GAAG,UAAU,UACZ,GAAG,UAAU,cAAc;AAC9B,QAAM,KAAK,GAAG,SAAS,UAAU,OAAO,GAAK;AAC7C,MAAI;AACF,OAAG,WAAW,IAAI,GAAK;AACvB,OAAG,UAAU,IAAI,QAAQ;AAAA,EAC3B,UAAE;AACA,OAAG,UAAU,EAAE;AAAA,EACjB;AACF;","names":[]}
@@ -0,0 +1,20 @@
1
+ import {
2
+ readHarnessInfo,
3
+ readManifest
4
+ } from "./chunk-LPPVGHYD.js";
5
+
6
+ // src/version-report.ts
7
+ import { buildInfo } from "@prismshadow/penguin-core";
8
+ async function versionReport(root) {
9
+ const [harness, manifest] = await Promise.all([readHarnessInfo(root), readManifest(root)]);
10
+ const dir = manifest?.assets?.dir;
11
+ return {
12
+ ...buildInfo(),
13
+ harness: harness === null ? null : { ...harness, assets: typeof dir === "string" && dir.length > 0 ? dir : null }
14
+ };
15
+ }
16
+
17
+ export {
18
+ versionReport
19
+ };
20
+ //# sourceMappingURL=chunk-QFV3ERQO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/version-report.ts"],"sourcesContent":["/**\n * The one assembler behind `penguin version --json` and GET /api/version.\n *\n * The report has two halves that no single layer can produce. Core knows the artifact this\n * process is executing and nothing about data roots; the HMR store knows what harness was\n * pushed to a root and nothing about the process reading it. Joining them here — rather\n * than in each caller — is what makes \"the CLI and the API report the same thing\" a\n * structural fact instead of two spreads that have to be kept in step.\n *\n * It lives in the server package because that is where the harness.json format is owned\n * (see ./hmr/manifest.ts), and is exported as its own entry point so the CLI can reach it\n * without pulling in a server: the module graph here is core plus a `node:fs` read.\n */\nimport { buildInfo } from \"@prismshadow/penguin-core\";\nimport type { VersionReport } from \"@prismshadow/penguin-core\";\nimport { readHarnessInfo, readManifest } from \"./hmr/manifest.js\";\n\n/**\n * The running build's identity plus the harness committed to `root`'s HMR store.\n *\n * Never throws: an unreadable or malformed store reports `harness: null`, which is also\n * what a root with nothing ever pushed to it reports. Version reporting degrades to fewer\n * facts, never to a failure.\n *\n * `harness.assets` is read here rather than by the mechanism's readHarnessInfo, which the\n * runtime layer owns: the report adds the pointer, the reader stays as it is.\n */\nexport async function versionReport(root: string): Promise<VersionReport> {\n const [harness, manifest] = await Promise.all([readHarnessInfo(root), readManifest(root)]);\n const dir = manifest?.assets?.dir;\n return {\n ...buildInfo(),\n harness:\n harness === null\n ? null\n : { ...harness, assets: typeof dir === \"string\" && dir.length > 0 ? dir : null },\n };\n}\n"],"mappings":";;;;;;AAaA,SAAS,iBAAiB;AAc1B,eAAsB,cAAc,MAAsC;AACxE,QAAM,CAAC,SAAS,QAAQ,IAAI,MAAM,QAAQ,IAAI,CAAC,gBAAgB,IAAI,GAAG,aAAa,IAAI,CAAC,CAAC;AACzF,QAAM,MAAM,UAAU,QAAQ;AAC9B,SAAO;AAAA,IACL,GAAG,UAAU;AAAA,IACb,SACE,YAAY,OACR,OACA,EAAE,GAAG,SAAS,QAAQ,OAAO,QAAQ,YAAY,IAAI,SAAS,IAAI,MAAM,KAAK;AAAA,EACrF;AACF;","names":[]}
@@ -0,0 +1,19 @@
1
+ // src/api/types.ts
2
+ var MACHINE_PHASES = [
3
+ "build",
4
+ "check",
5
+ "install",
6
+ "handover",
7
+ "restart",
8
+ "connect",
9
+ "sync",
10
+ "stop",
11
+ "remove"
12
+ ];
13
+ var TICKET_SLUG_PATTERN = /^[a-z]+(?:-[a-z]+)*$/;
14
+
15
+ export {
16
+ MACHINE_PHASES,
17
+ TICKET_SLUG_PATTERN
18
+ };
19
+ //# sourceMappingURL=chunk-W7JNIJ25.js.map