@suveren/gateway 0.17.0 → 0.18.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 (769) hide show
  1. package/bin/suveren-gateway.js +26 -1
  2. package/content/guides/1-interview.md +31 -0
  3. package/content/guides/2-package.md +30 -0
  4. package/content/guides/3-mandates.md +35 -0
  5. package/content/guides/4-brief.md +30 -0
  6. package/content/guides/5-agent-process.md +39 -0
  7. package/content/guides/6-risks.md +14 -0
  8. package/dist/control-plane/index.mjs +132 -12
  9. package/dist/mcp-server/chunk-JUFH4SKS.mjs +639 -0
  10. package/dist/mcp-server/http.mjs +1733 -205
  11. package/dist/mcp-server/report-verify-cli.mjs +171 -0
  12. package/dist/ui/assets/index-78vuGrVE.js +111 -0
  13. package/dist/ui/assets/{index-y1OFeYnS.css → index-Dfh38n-b.css} +1 -1
  14. package/dist/ui/index.html +2 -2
  15. package/node_modules/dayjs/.editorconfig +7 -0
  16. package/node_modules/dayjs/CHANGELOG.md +1022 -0
  17. package/node_modules/dayjs/LICENSE +21 -0
  18. package/node_modules/dayjs/README.md +186 -0
  19. package/node_modules/dayjs/dayjs.min.js +1 -0
  20. package/node_modules/dayjs/esm/constant.js +25 -0
  21. package/node_modules/dayjs/esm/index.d.ts +429 -0
  22. package/node_modules/dayjs/esm/index.js +541 -0
  23. package/node_modules/dayjs/esm/locale/af.js +39 -0
  24. package/node_modules/dayjs/esm/locale/am.js +40 -0
  25. package/node_modules/dayjs/esm/locale/ar-dz.js +41 -0
  26. package/node_modules/dayjs/esm/locale/ar-iq.js +42 -0
  27. package/node_modules/dayjs/esm/locale/ar-kw.js +41 -0
  28. package/node_modules/dayjs/esm/locale/ar-ly.js +27 -0
  29. package/node_modules/dayjs/esm/locale/ar-ma.js +42 -0
  30. package/node_modules/dayjs/esm/locale/ar-sa.js +41 -0
  31. package/node_modules/dayjs/esm/locale/ar-tn.js +42 -0
  32. package/node_modules/dayjs/esm/locale/ar.js +81 -0
  33. package/node_modules/dayjs/esm/locale/az.js +39 -0
  34. package/node_modules/dayjs/esm/locale/be.js +102 -0
  35. package/node_modules/dayjs/esm/locale/bg.js +55 -0
  36. package/node_modules/dayjs/esm/locale/bi.js +39 -0
  37. package/node_modules/dayjs/esm/locale/bm.js +39 -0
  38. package/node_modules/dayjs/esm/locale/bn-bd.js +81 -0
  39. package/node_modules/dayjs/esm/locale/bn.js +72 -0
  40. package/node_modules/dayjs/esm/locale/bo.js +38 -0
  41. package/node_modules/dayjs/esm/locale/br.js +93 -0
  42. package/node_modules/dayjs/esm/locale/bs.js +24 -0
  43. package/node_modules/dayjs/esm/locale/ca.js +44 -0
  44. package/node_modules/dayjs/esm/locale/cs.js +120 -0
  45. package/node_modules/dayjs/esm/locale/cv.js +24 -0
  46. package/node_modules/dayjs/esm/locale/cy.js +39 -0
  47. package/node_modules/dayjs/esm/locale/da.js +40 -0
  48. package/node_modules/dayjs/esm/locale/de-at.js +63 -0
  49. package/node_modules/dayjs/esm/locale/de-ch.js +63 -0
  50. package/node_modules/dayjs/esm/locale/de.js +64 -0
  51. package/node_modules/dayjs/esm/locale/dv.js +39 -0
  52. package/node_modules/dayjs/esm/locale/el.js +39 -0
  53. package/node_modules/dayjs/esm/locale/en-au.js +41 -0
  54. package/node_modules/dayjs/esm/locale/en-ca.js +38 -0
  55. package/node_modules/dayjs/esm/locale/en-gb.js +42 -0
  56. package/node_modules/dayjs/esm/locale/en-ie.js +39 -0
  57. package/node_modules/dayjs/esm/locale/en-il.js +38 -0
  58. package/node_modules/dayjs/esm/locale/en-in.js +42 -0
  59. package/node_modules/dayjs/esm/locale/en-nz.js +41 -0
  60. package/node_modules/dayjs/esm/locale/en-sg.js +39 -0
  61. package/node_modules/dayjs/esm/locale/en-tt.js +42 -0
  62. package/node_modules/dayjs/esm/locale/en.js +12 -0
  63. package/node_modules/dayjs/esm/locale/eo.js +39 -0
  64. package/node_modules/dayjs/esm/locale/es-do.js +39 -0
  65. package/node_modules/dayjs/esm/locale/es-mx.js +38 -0
  66. package/node_modules/dayjs/esm/locale/es-pr.js +39 -0
  67. package/node_modules/dayjs/esm/locale/es-us.js +38 -0
  68. package/node_modules/dayjs/esm/locale/es.js +39 -0
  69. package/node_modules/dayjs/esm/locale/et.js +65 -0
  70. package/node_modules/dayjs/esm/locale/eu.js +43 -0
  71. package/node_modules/dayjs/esm/locale/fa.js +39 -0
  72. package/node_modules/dayjs/esm/locale/fi.js +88 -0
  73. package/node_modules/dayjs/esm/locale/fo.js +39 -0
  74. package/node_modules/dayjs/esm/locale/fr-ca.js +38 -0
  75. package/node_modules/dayjs/esm/locale/fr-ch.js +39 -0
  76. package/node_modules/dayjs/esm/locale/fr.js +41 -0
  77. package/node_modules/dayjs/esm/locale/fy.js +39 -0
  78. package/node_modules/dayjs/esm/locale/ga.js +39 -0
  79. package/node_modules/dayjs/esm/locale/gd.js +39 -0
  80. package/node_modules/dayjs/esm/locale/gl.js +39 -0
  81. package/node_modules/dayjs/esm/locale/gom-latn.js +25 -0
  82. package/node_modules/dayjs/esm/locale/gu.js +38 -0
  83. package/node_modules/dayjs/esm/locale/he.js +78 -0
  84. package/node_modules/dayjs/esm/locale/hi.js +38 -0
  85. package/node_modules/dayjs/esm/locale/hr.js +53 -0
  86. package/node_modules/dayjs/esm/locale/ht.js +38 -0
  87. package/node_modules/dayjs/esm/locale/hu.js +61 -0
  88. package/node_modules/dayjs/esm/locale/hy-am.js +39 -0
  89. package/node_modules/dayjs/esm/locale/id.js +39 -0
  90. package/node_modules/dayjs/esm/locale/index.d.ts +11 -0
  91. package/node_modules/dayjs/esm/locale/is.js +68 -0
  92. package/node_modules/dayjs/esm/locale/it-ch.js +39 -0
  93. package/node_modules/dayjs/esm/locale/it.js +39 -0
  94. package/node_modules/dayjs/esm/locale/ja.js +45 -0
  95. package/node_modules/dayjs/esm/locale/jv.js +39 -0
  96. package/node_modules/dayjs/esm/locale/ka.js +39 -0
  97. package/node_modules/dayjs/esm/locale/kk.js +39 -0
  98. package/node_modules/dayjs/esm/locale/km.js +42 -0
  99. package/node_modules/dayjs/esm/locale/kn.js +38 -0
  100. package/node_modules/dayjs/esm/locale/ko.js +45 -0
  101. package/node_modules/dayjs/esm/locale/ku.js +77 -0
  102. package/node_modules/dayjs/esm/locale/ky.js +39 -0
  103. package/node_modules/dayjs/esm/locale/lb.js +24 -0
  104. package/node_modules/dayjs/esm/locale/lo.js +38 -0
  105. package/node_modules/dayjs/esm/locale/lt.js +70 -0
  106. package/node_modules/dayjs/esm/locale/lv.js +39 -0
  107. package/node_modules/dayjs/esm/locale/me.js +24 -0
  108. package/node_modules/dayjs/esm/locale/mi.js +39 -0
  109. package/node_modules/dayjs/esm/locale/mk.js +39 -0
  110. package/node_modules/dayjs/esm/locale/ml.js +38 -0
  111. package/node_modules/dayjs/esm/locale/mn.js +38 -0
  112. package/node_modules/dayjs/esm/locale/mr.js +23 -0
  113. package/node_modules/dayjs/esm/locale/ms-my.js +39 -0
  114. package/node_modules/dayjs/esm/locale/ms.js +39 -0
  115. package/node_modules/dayjs/esm/locale/mt.js +39 -0
  116. package/node_modules/dayjs/esm/locale/my.js +39 -0
  117. package/node_modules/dayjs/esm/locale/nb.js +40 -0
  118. package/node_modules/dayjs/esm/locale/ne.js +40 -0
  119. package/node_modules/dayjs/esm/locale/nl-be.js +39 -0
  120. package/node_modules/dayjs/esm/locale/nl.js +40 -0
  121. package/node_modules/dayjs/esm/locale/nn.js +39 -0
  122. package/node_modules/dayjs/esm/locale/oc-lnc.js +39 -0
  123. package/node_modules/dayjs/esm/locale/pa-in.js +38 -0
  124. package/node_modules/dayjs/esm/locale/pl.js +87 -0
  125. package/node_modules/dayjs/esm/locale/pt-br.js +38 -0
  126. package/node_modules/dayjs/esm/locale/pt.js +40 -0
  127. package/node_modules/dayjs/esm/locale/rn.js +39 -0
  128. package/node_modules/dayjs/esm/locale/ro.js +39 -0
  129. package/node_modules/dayjs/esm/locale/ru.js +99 -0
  130. package/node_modules/dayjs/esm/locale/rw.js +35 -0
  131. package/node_modules/dayjs/esm/locale/sd.js +39 -0
  132. package/node_modules/dayjs/esm/locale/se.js +39 -0
  133. package/node_modules/dayjs/esm/locale/si.js +38 -0
  134. package/node_modules/dayjs/esm/locale/sk.js +121 -0
  135. package/node_modules/dayjs/esm/locale/sl.js +141 -0
  136. package/node_modules/dayjs/esm/locale/sq.js +39 -0
  137. package/node_modules/dayjs/esm/locale/sr-cyrl.js +74 -0
  138. package/node_modules/dayjs/esm/locale/sr.js +74 -0
  139. package/node_modules/dayjs/esm/locale/ss.js +39 -0
  140. package/node_modules/dayjs/esm/locale/sv-fi.js +46 -0
  141. package/node_modules/dayjs/esm/locale/sv.js +44 -0
  142. package/node_modules/dayjs/esm/locale/sw.js +39 -0
  143. package/node_modules/dayjs/esm/locale/ta.js +38 -0
  144. package/node_modules/dayjs/esm/locale/te.js +38 -0
  145. package/node_modules/dayjs/esm/locale/tet.js +39 -0
  146. package/node_modules/dayjs/esm/locale/tg.js +39 -0
  147. package/node_modules/dayjs/esm/locale/th.js +38 -0
  148. package/node_modules/dayjs/esm/locale/tk.js +39 -0
  149. package/node_modules/dayjs/esm/locale/tl-ph.js +39 -0
  150. package/node_modules/dayjs/esm/locale/tlh.js +24 -0
  151. package/node_modules/dayjs/esm/locale/tr.js +39 -0
  152. package/node_modules/dayjs/esm/locale/types.d.ts +33 -0
  153. package/node_modules/dayjs/esm/locale/tzl.js +24 -0
  154. package/node_modules/dayjs/esm/locale/tzm-latn.js +39 -0
  155. package/node_modules/dayjs/esm/locale/tzm.js +39 -0
  156. package/node_modules/dayjs/esm/locale/ug-cn.js +39 -0
  157. package/node_modules/dayjs/esm/locale/uk.js +77 -0
  158. package/node_modules/dayjs/esm/locale/ur.js +39 -0
  159. package/node_modules/dayjs/esm/locale/uz-latn.js +39 -0
  160. package/node_modules/dayjs/esm/locale/uz.js +39 -0
  161. package/node_modules/dayjs/esm/locale/vi.js +43 -0
  162. package/node_modules/dayjs/esm/locale/x-pseudo.js +39 -0
  163. package/node_modules/dayjs/esm/locale/yo.js +39 -0
  164. package/node_modules/dayjs/esm/locale/zh-cn.js +67 -0
  165. package/node_modules/dayjs/esm/locale/zh-hk.js +65 -0
  166. package/node_modules/dayjs/esm/locale/zh-tw.js +65 -0
  167. package/node_modules/dayjs/esm/locale/zh.js +67 -0
  168. package/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts +4 -0
  169. package/node_modules/dayjs/esm/plugin/advancedFormat/index.js +66 -0
  170. package/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts +10 -0
  171. package/node_modules/dayjs/esm/plugin/arraySupport/index.js +33 -0
  172. package/node_modules/dayjs/esm/plugin/badMutable/index.d.ts +4 -0
  173. package/node_modules/dayjs/esm/plugin/badMutable/index.js +61 -0
  174. package/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts +11 -0
  175. package/node_modules/dayjs/esm/plugin/bigIntSupport/index.js +32 -0
  176. package/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts +4 -0
  177. package/node_modules/dayjs/esm/plugin/buddhistEra/index.js +21 -0
  178. package/node_modules/dayjs/esm/plugin/calendar/index.d.ts +10 -0
  179. package/node_modules/dayjs/esm/plugin/calendar/index.js +32 -0
  180. package/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts +8 -0
  181. package/node_modules/dayjs/esm/plugin/customParseFormat/index.js +333 -0
  182. package/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts +11 -0
  183. package/node_modules/dayjs/esm/plugin/dayOfYear/index.js +9 -0
  184. package/node_modules/dayjs/esm/plugin/devHelper/index.d.ts +4 -0
  185. package/node_modules/dayjs/esm/plugin/devHelper/index.js +50 -0
  186. package/node_modules/dayjs/esm/plugin/duration/index.d.ts +88 -0
  187. package/node_modules/dayjs/esm/plugin/duration/index.js +357 -0
  188. package/node_modules/dayjs/esm/plugin/isBetween/index.d.ts +10 -0
  189. package/node_modules/dayjs/esm/plugin/isBetween/index.js +10 -0
  190. package/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts +10 -0
  191. package/node_modules/dayjs/esm/plugin/isLeapYear/index.js +7 -0
  192. package/node_modules/dayjs/esm/plugin/isMoment/index.d.ts +10 -0
  193. package/node_modules/dayjs/esm/plugin/isMoment/index.js +5 -0
  194. package/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts +10 -0
  195. package/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js +5 -0
  196. package/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts +10 -0
  197. package/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js +5 -0
  198. package/node_modules/dayjs/esm/plugin/isToday/index.d.ts +10 -0
  199. package/node_modules/dayjs/esm/plugin/isToday/index.js +9 -0
  200. package/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts +10 -0
  201. package/node_modules/dayjs/esm/plugin/isTomorrow/index.js +9 -0
  202. package/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts +10 -0
  203. package/node_modules/dayjs/esm/plugin/isYesterday/index.js +9 -0
  204. package/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts +27 -0
  205. package/node_modules/dayjs/esm/plugin/isoWeek/index.js +57 -0
  206. package/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts +10 -0
  207. package/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js +15 -0
  208. package/node_modules/dayjs/esm/plugin/localeData/index.d.ts +44 -0
  209. package/node_modules/dayjs/esm/plugin/localeData/index.js +114 -0
  210. package/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts +4 -0
  211. package/node_modules/dayjs/esm/plugin/localizedFormat/index.js +20 -0
  212. package/node_modules/dayjs/esm/plugin/localizedFormat/utils.js +20 -0
  213. package/node_modules/dayjs/esm/plugin/minMax/index.d.ts +22 -0
  214. package/node_modules/dayjs/esm/plugin/minMax/index.js +39 -0
  215. package/node_modules/dayjs/esm/plugin/negativeYear/index.d.ts +4 -0
  216. package/node_modules/dayjs/esm/plugin/negativeYear/index.js +36 -0
  217. package/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts +48 -0
  218. package/node_modules/dayjs/esm/plugin/objectSupport/index.js +97 -0
  219. package/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts +44 -0
  220. package/node_modules/dayjs/esm/plugin/pluralGetSet/index.js +7 -0
  221. package/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts +4 -0
  222. package/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js +40 -0
  223. package/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts +26 -0
  224. package/node_modules/dayjs/esm/plugin/quarterOfYear/index.js +41 -0
  225. package/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts +24 -0
  226. package/node_modules/dayjs/esm/plugin/relativeTime/index.js +130 -0
  227. package/node_modules/dayjs/esm/plugin/timezone/index.d.ts +20 -0
  228. package/node_modules/dayjs/esm/plugin/timezone/index.js +205 -0
  229. package/node_modules/dayjs/esm/plugin/toArray/index.d.ts +10 -0
  230. package/node_modules/dayjs/esm/plugin/toArray/index.js +7 -0
  231. package/node_modules/dayjs/esm/plugin/toObject/index.d.ts +20 -0
  232. package/node_modules/dayjs/esm/plugin/toObject/index.js +15 -0
  233. package/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts +8 -0
  234. package/node_modules/dayjs/esm/plugin/updateLocale/index.js +18 -0
  235. package/node_modules/dayjs/esm/plugin/utc/index.d.ts +19 -0
  236. package/node_modules/dayjs/esm/plugin/utc/index.js +188 -0
  237. package/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts +12 -0
  238. package/node_modules/dayjs/esm/plugin/weekOfYear/index.js +44 -0
  239. package/node_modules/dayjs/esm/plugin/weekYear/index.d.ts +10 -0
  240. package/node_modules/dayjs/esm/plugin/weekYear/index.js +19 -0
  241. package/node_modules/dayjs/esm/plugin/weekday/index.d.ts +12 -0
  242. package/node_modules/dayjs/esm/plugin/weekday/index.js +15 -0
  243. package/node_modules/dayjs/esm/utils.js +58 -0
  244. package/node_modules/dayjs/index.d.ts +429 -0
  245. package/node_modules/dayjs/locale/af.js +1 -0
  246. package/node_modules/dayjs/locale/am.js +1 -0
  247. package/node_modules/dayjs/locale/ar-dz.js +1 -0
  248. package/node_modules/dayjs/locale/ar-iq.js +1 -0
  249. package/node_modules/dayjs/locale/ar-kw.js +1 -0
  250. package/node_modules/dayjs/locale/ar-ly.js +1 -0
  251. package/node_modules/dayjs/locale/ar-ma.js +1 -0
  252. package/node_modules/dayjs/locale/ar-sa.js +1 -0
  253. package/node_modules/dayjs/locale/ar-tn.js +1 -0
  254. package/node_modules/dayjs/locale/ar.js +1 -0
  255. package/node_modules/dayjs/locale/az.js +1 -0
  256. package/node_modules/dayjs/locale/be.js +1 -0
  257. package/node_modules/dayjs/locale/bg.js +1 -0
  258. package/node_modules/dayjs/locale/bi.js +1 -0
  259. package/node_modules/dayjs/locale/bm.js +1 -0
  260. package/node_modules/dayjs/locale/bn-bd.js +1 -0
  261. package/node_modules/dayjs/locale/bn.js +1 -0
  262. package/node_modules/dayjs/locale/bo.js +1 -0
  263. package/node_modules/dayjs/locale/br.js +1 -0
  264. package/node_modules/dayjs/locale/bs.js +1 -0
  265. package/node_modules/dayjs/locale/ca.js +1 -0
  266. package/node_modules/dayjs/locale/cs.js +1 -0
  267. package/node_modules/dayjs/locale/cv.js +1 -0
  268. package/node_modules/dayjs/locale/cy.js +1 -0
  269. package/node_modules/dayjs/locale/da.js +1 -0
  270. package/node_modules/dayjs/locale/de-at.js +1 -0
  271. package/node_modules/dayjs/locale/de-ch.js +1 -0
  272. package/node_modules/dayjs/locale/de.js +1 -0
  273. package/node_modules/dayjs/locale/dv.js +1 -0
  274. package/node_modules/dayjs/locale/el.js +1 -0
  275. package/node_modules/dayjs/locale/en-au.js +1 -0
  276. package/node_modules/dayjs/locale/en-ca.js +1 -0
  277. package/node_modules/dayjs/locale/en-gb.js +1 -0
  278. package/node_modules/dayjs/locale/en-ie.js +1 -0
  279. package/node_modules/dayjs/locale/en-il.js +1 -0
  280. package/node_modules/dayjs/locale/en-in.js +1 -0
  281. package/node_modules/dayjs/locale/en-nz.js +1 -0
  282. package/node_modules/dayjs/locale/en-sg.js +1 -0
  283. package/node_modules/dayjs/locale/en-tt.js +1 -0
  284. package/node_modules/dayjs/locale/en.js +1 -0
  285. package/node_modules/dayjs/locale/eo.js +1 -0
  286. package/node_modules/dayjs/locale/es-do.js +1 -0
  287. package/node_modules/dayjs/locale/es-mx.js +1 -0
  288. package/node_modules/dayjs/locale/es-pr.js +1 -0
  289. package/node_modules/dayjs/locale/es-us.js +1 -0
  290. package/node_modules/dayjs/locale/es.js +1 -0
  291. package/node_modules/dayjs/locale/et.js +1 -0
  292. package/node_modules/dayjs/locale/eu.js +1 -0
  293. package/node_modules/dayjs/locale/fa.js +1 -0
  294. package/node_modules/dayjs/locale/fi.js +1 -0
  295. package/node_modules/dayjs/locale/fo.js +1 -0
  296. package/node_modules/dayjs/locale/fr-ca.js +1 -0
  297. package/node_modules/dayjs/locale/fr-ch.js +1 -0
  298. package/node_modules/dayjs/locale/fr.js +1 -0
  299. package/node_modules/dayjs/locale/fy.js +1 -0
  300. package/node_modules/dayjs/locale/ga.js +1 -0
  301. package/node_modules/dayjs/locale/gd.js +1 -0
  302. package/node_modules/dayjs/locale/gl.js +1 -0
  303. package/node_modules/dayjs/locale/gom-latn.js +1 -0
  304. package/node_modules/dayjs/locale/gu.js +1 -0
  305. package/node_modules/dayjs/locale/he.js +1 -0
  306. package/node_modules/dayjs/locale/hi.js +1 -0
  307. package/node_modules/dayjs/locale/hr.js +1 -0
  308. package/node_modules/dayjs/locale/ht.js +1 -0
  309. package/node_modules/dayjs/locale/hu.js +1 -0
  310. package/node_modules/dayjs/locale/hy-am.js +1 -0
  311. package/node_modules/dayjs/locale/id.js +1 -0
  312. package/node_modules/dayjs/locale/index.d.ts +11 -0
  313. package/node_modules/dayjs/locale/is.js +1 -0
  314. package/node_modules/dayjs/locale/it-ch.js +1 -0
  315. package/node_modules/dayjs/locale/it.js +1 -0
  316. package/node_modules/dayjs/locale/ja.js +1 -0
  317. package/node_modules/dayjs/locale/jv.js +1 -0
  318. package/node_modules/dayjs/locale/ka.js +1 -0
  319. package/node_modules/dayjs/locale/kk.js +1 -0
  320. package/node_modules/dayjs/locale/km.js +1 -0
  321. package/node_modules/dayjs/locale/kn.js +1 -0
  322. package/node_modules/dayjs/locale/ko.js +1 -0
  323. package/node_modules/dayjs/locale/ku.js +1 -0
  324. package/node_modules/dayjs/locale/ky.js +1 -0
  325. package/node_modules/dayjs/locale/lb.js +1 -0
  326. package/node_modules/dayjs/locale/lo.js +1 -0
  327. package/node_modules/dayjs/locale/lt.js +1 -0
  328. package/node_modules/dayjs/locale/lv.js +1 -0
  329. package/node_modules/dayjs/locale/me.js +1 -0
  330. package/node_modules/dayjs/locale/mi.js +1 -0
  331. package/node_modules/dayjs/locale/mk.js +1 -0
  332. package/node_modules/dayjs/locale/ml.js +1 -0
  333. package/node_modules/dayjs/locale/mn.js +1 -0
  334. package/node_modules/dayjs/locale/mr.js +1 -0
  335. package/node_modules/dayjs/locale/ms-my.js +1 -0
  336. package/node_modules/dayjs/locale/ms.js +1 -0
  337. package/node_modules/dayjs/locale/mt.js +1 -0
  338. package/node_modules/dayjs/locale/my.js +1 -0
  339. package/node_modules/dayjs/locale/nb.js +1 -0
  340. package/node_modules/dayjs/locale/ne.js +1 -0
  341. package/node_modules/dayjs/locale/nl-be.js +1 -0
  342. package/node_modules/dayjs/locale/nl.js +1 -0
  343. package/node_modules/dayjs/locale/nn.js +1 -0
  344. package/node_modules/dayjs/locale/oc-lnc.js +1 -0
  345. package/node_modules/dayjs/locale/pa-in.js +1 -0
  346. package/node_modules/dayjs/locale/pl.js +1 -0
  347. package/node_modules/dayjs/locale/pt-br.js +1 -0
  348. package/node_modules/dayjs/locale/pt.js +1 -0
  349. package/node_modules/dayjs/locale/rn.js +1 -0
  350. package/node_modules/dayjs/locale/ro.js +1 -0
  351. package/node_modules/dayjs/locale/ru.js +1 -0
  352. package/node_modules/dayjs/locale/rw.js +1 -0
  353. package/node_modules/dayjs/locale/sd.js +1 -0
  354. package/node_modules/dayjs/locale/se.js +1 -0
  355. package/node_modules/dayjs/locale/si.js +1 -0
  356. package/node_modules/dayjs/locale/sk.js +1 -0
  357. package/node_modules/dayjs/locale/sl.js +1 -0
  358. package/node_modules/dayjs/locale/sq.js +1 -0
  359. package/node_modules/dayjs/locale/sr-cyrl.js +1 -0
  360. package/node_modules/dayjs/locale/sr.js +1 -0
  361. package/node_modules/dayjs/locale/ss.js +1 -0
  362. package/node_modules/dayjs/locale/sv-fi.js +1 -0
  363. package/node_modules/dayjs/locale/sv.js +1 -0
  364. package/node_modules/dayjs/locale/sw.js +1 -0
  365. package/node_modules/dayjs/locale/ta.js +1 -0
  366. package/node_modules/dayjs/locale/te.js +1 -0
  367. package/node_modules/dayjs/locale/tet.js +1 -0
  368. package/node_modules/dayjs/locale/tg.js +1 -0
  369. package/node_modules/dayjs/locale/th.js +1 -0
  370. package/node_modules/dayjs/locale/tk.js +1 -0
  371. package/node_modules/dayjs/locale/tl-ph.js +1 -0
  372. package/node_modules/dayjs/locale/tlh.js +1 -0
  373. package/node_modules/dayjs/locale/tr.js +1 -0
  374. package/node_modules/dayjs/locale/types.d.ts +33 -0
  375. package/node_modules/dayjs/locale/tzl.js +1 -0
  376. package/node_modules/dayjs/locale/tzm-latn.js +1 -0
  377. package/node_modules/dayjs/locale/tzm.js +1 -0
  378. package/node_modules/dayjs/locale/ug-cn.js +1 -0
  379. package/node_modules/dayjs/locale/uk.js +1 -0
  380. package/node_modules/dayjs/locale/ur.js +1 -0
  381. package/node_modules/dayjs/locale/uz-latn.js +1 -0
  382. package/node_modules/dayjs/locale/uz.js +1 -0
  383. package/node_modules/dayjs/locale/vi.js +1 -0
  384. package/node_modules/dayjs/locale/x-pseudo.js +1 -0
  385. package/node_modules/dayjs/locale/yo.js +1 -0
  386. package/node_modules/dayjs/locale/zh-cn.js +1 -0
  387. package/node_modules/dayjs/locale/zh-hk.js +1 -0
  388. package/node_modules/dayjs/locale/zh-tw.js +1 -0
  389. package/node_modules/dayjs/locale/zh.js +1 -0
  390. package/node_modules/dayjs/locale.json +1 -0
  391. package/node_modules/dayjs/package.json +86 -0
  392. package/node_modules/dayjs/plugin/advancedFormat.d.ts +4 -0
  393. package/node_modules/dayjs/plugin/advancedFormat.js +1 -0
  394. package/node_modules/dayjs/plugin/arraySupport.d.ts +10 -0
  395. package/node_modules/dayjs/plugin/arraySupport.js +1 -0
  396. package/node_modules/dayjs/plugin/badMutable.d.ts +4 -0
  397. package/node_modules/dayjs/plugin/badMutable.js +1 -0
  398. package/node_modules/dayjs/plugin/bigIntSupport.d.ts +11 -0
  399. package/node_modules/dayjs/plugin/bigIntSupport.js +1 -0
  400. package/node_modules/dayjs/plugin/buddhistEra.d.ts +4 -0
  401. package/node_modules/dayjs/plugin/buddhistEra.js +1 -0
  402. package/node_modules/dayjs/plugin/calendar.d.ts +10 -0
  403. package/node_modules/dayjs/plugin/calendar.js +1 -0
  404. package/node_modules/dayjs/plugin/customParseFormat.d.ts +8 -0
  405. package/node_modules/dayjs/plugin/customParseFormat.js +1 -0
  406. package/node_modules/dayjs/plugin/dayOfYear.d.ts +11 -0
  407. package/node_modules/dayjs/plugin/dayOfYear.js +1 -0
  408. package/node_modules/dayjs/plugin/devHelper.d.ts +4 -0
  409. package/node_modules/dayjs/plugin/devHelper.js +1 -0
  410. package/node_modules/dayjs/plugin/duration.d.ts +88 -0
  411. package/node_modules/dayjs/plugin/duration.js +1 -0
  412. package/node_modules/dayjs/plugin/isBetween.d.ts +10 -0
  413. package/node_modules/dayjs/plugin/isBetween.js +1 -0
  414. package/node_modules/dayjs/plugin/isLeapYear.d.ts +10 -0
  415. package/node_modules/dayjs/plugin/isLeapYear.js +1 -0
  416. package/node_modules/dayjs/plugin/isMoment.d.ts +10 -0
  417. package/node_modules/dayjs/plugin/isMoment.js +1 -0
  418. package/node_modules/dayjs/plugin/isSameOrAfter.d.ts +10 -0
  419. package/node_modules/dayjs/plugin/isSameOrAfter.js +1 -0
  420. package/node_modules/dayjs/plugin/isSameOrBefore.d.ts +10 -0
  421. package/node_modules/dayjs/plugin/isSameOrBefore.js +1 -0
  422. package/node_modules/dayjs/plugin/isToday.d.ts +10 -0
  423. package/node_modules/dayjs/plugin/isToday.js +1 -0
  424. package/node_modules/dayjs/plugin/isTomorrow.d.ts +10 -0
  425. package/node_modules/dayjs/plugin/isTomorrow.js +1 -0
  426. package/node_modules/dayjs/plugin/isYesterday.d.ts +10 -0
  427. package/node_modules/dayjs/plugin/isYesterday.js +1 -0
  428. package/node_modules/dayjs/plugin/isoWeek.d.ts +27 -0
  429. package/node_modules/dayjs/plugin/isoWeek.js +1 -0
  430. package/node_modules/dayjs/plugin/isoWeeksInYear.d.ts +10 -0
  431. package/node_modules/dayjs/plugin/isoWeeksInYear.js +1 -0
  432. package/node_modules/dayjs/plugin/localeData.d.ts +44 -0
  433. package/node_modules/dayjs/plugin/localeData.js +1 -0
  434. package/node_modules/dayjs/plugin/localizedFormat.d.ts +4 -0
  435. package/node_modules/dayjs/plugin/localizedFormat.js +1 -0
  436. package/node_modules/dayjs/plugin/minMax.d.ts +22 -0
  437. package/node_modules/dayjs/plugin/minMax.js +1 -0
  438. package/node_modules/dayjs/plugin/negativeYear.d.ts +4 -0
  439. package/node_modules/dayjs/plugin/negativeYear.js +1 -0
  440. package/node_modules/dayjs/plugin/objectSupport.d.ts +48 -0
  441. package/node_modules/dayjs/plugin/objectSupport.js +1 -0
  442. package/node_modules/dayjs/plugin/pluralGetSet.d.ts +44 -0
  443. package/node_modules/dayjs/plugin/pluralGetSet.js +1 -0
  444. package/node_modules/dayjs/plugin/preParsePostFormat.d.ts +4 -0
  445. package/node_modules/dayjs/plugin/preParsePostFormat.js +1 -0
  446. package/node_modules/dayjs/plugin/quarterOfYear.d.ts +26 -0
  447. package/node_modules/dayjs/plugin/quarterOfYear.js +1 -0
  448. package/node_modules/dayjs/plugin/relativeTime.d.ts +24 -0
  449. package/node_modules/dayjs/plugin/relativeTime.js +1 -0
  450. package/node_modules/dayjs/plugin/timezone.d.ts +20 -0
  451. package/node_modules/dayjs/plugin/timezone.js +1 -0
  452. package/node_modules/dayjs/plugin/toArray.d.ts +10 -0
  453. package/node_modules/dayjs/plugin/toArray.js +1 -0
  454. package/node_modules/dayjs/plugin/toObject.d.ts +20 -0
  455. package/node_modules/dayjs/plugin/toObject.js +1 -0
  456. package/node_modules/dayjs/plugin/updateLocale.d.ts +8 -0
  457. package/node_modules/dayjs/plugin/updateLocale.js +1 -0
  458. package/node_modules/dayjs/plugin/utc.d.ts +19 -0
  459. package/node_modules/dayjs/plugin/utc.js +1 -0
  460. package/node_modules/dayjs/plugin/weekOfYear.d.ts +12 -0
  461. package/node_modules/dayjs/plugin/weekOfYear.js +1 -0
  462. package/node_modules/dayjs/plugin/weekYear.d.ts +10 -0
  463. package/node_modules/dayjs/plugin/weekYear.js +1 -0
  464. package/node_modules/dayjs/plugin/weekday.d.ts +12 -0
  465. package/node_modules/dayjs/plugin/weekday.js +1 -0
  466. package/node_modules/deepmerge/.editorconfig +7 -0
  467. package/node_modules/deepmerge/.eslintcache +1 -0
  468. package/node_modules/deepmerge/changelog.md +167 -0
  469. package/node_modules/deepmerge/dist/cjs.js +133 -0
  470. package/node_modules/deepmerge/dist/umd.js +139 -0
  471. package/node_modules/deepmerge/index.d.ts +20 -0
  472. package/node_modules/deepmerge/index.js +106 -0
  473. package/node_modules/deepmerge/license.txt +21 -0
  474. package/node_modules/deepmerge/package.json +42 -0
  475. package/node_modules/deepmerge/readme.md +264 -0
  476. package/node_modules/deepmerge/rollup.config.js +22 -0
  477. package/node_modules/dom-serializer/LICENSE +7 -0
  478. package/node_modules/dom-serializer/README.md +115 -0
  479. package/node_modules/dom-serializer/dist/foreign-names.d.ts +11 -0
  480. package/node_modules/dom-serializer/dist/foreign-names.d.ts.map +1 -0
  481. package/node_modules/dom-serializer/dist/foreign-names.js +15 -0
  482. package/node_modules/dom-serializer/dist/foreign-names.js.map +1 -0
  483. package/node_modules/dom-serializer/dist/index.d.ts +72 -0
  484. package/node_modules/dom-serializer/dist/index.d.ts.map +1 -0
  485. package/node_modules/dom-serializer/dist/index.js +173 -0
  486. package/node_modules/dom-serializer/dist/index.js.map +1 -0
  487. package/node_modules/dom-serializer/package.json +69 -0
  488. package/node_modules/dom-serializer/src/foreign-names.ts +19 -0
  489. package/node_modules/dom-serializer/src/index.ts +315 -0
  490. package/node_modules/domelementtype/LICENSE +11 -0
  491. package/node_modules/domelementtype/dist/index.d.ts +48 -0
  492. package/node_modules/domelementtype/dist/index.d.ts.map +1 -0
  493. package/node_modules/domelementtype/dist/index.js +60 -0
  494. package/node_modules/domelementtype/package.json +59 -0
  495. package/node_modules/domelementtype/readme.md +1 -0
  496. package/node_modules/domhandler/LICENSE +11 -0
  497. package/node_modules/domhandler/dist/index.d.ts +79 -0
  498. package/node_modules/domhandler/dist/index.d.ts.map +1 -0
  499. package/node_modules/domhandler/dist/index.js +155 -0
  500. package/node_modules/domhandler/dist/node.d.ts +264 -0
  501. package/node_modules/domhandler/dist/node.d.ts.map +1 -0
  502. package/node_modules/domhandler/dist/node.js +359 -0
  503. package/node_modules/domhandler/package.json +65 -0
  504. package/node_modules/domhandler/readme.md +86 -0
  505. package/node_modules/domutils/LICENSE +11 -0
  506. package/node_modules/domutils/dist/feeds.d.ts +71 -0
  507. package/node_modules/domutils/dist/feeds.d.ts.map +1 -0
  508. package/node_modules/domutils/dist/feeds.js +180 -0
  509. package/node_modules/domutils/dist/feeds.js.map +1 -0
  510. package/node_modules/domutils/dist/helpers.d.ts +59 -0
  511. package/node_modules/domutils/dist/helpers.d.ts.map +1 -0
  512. package/node_modules/domutils/dist/helpers.js +136 -0
  513. package/node_modules/domutils/dist/helpers.js.map +1 -0
  514. package/node_modules/domutils/dist/index.d.ts +8 -0
  515. package/node_modules/domutils/dist/index.d.ts.map +1 -0
  516. package/node_modules/domutils/dist/index.js +8 -0
  517. package/node_modules/domutils/dist/index.js.map +1 -0
  518. package/node_modules/domutils/dist/legacy.d.ts +79 -0
  519. package/node_modules/domutils/dist/legacy.d.ts.map +1 -0
  520. package/node_modules/domutils/dist/legacy.js +152 -0
  521. package/node_modules/domutils/dist/legacy.js.map +1 -0
  522. package/node_modules/domutils/dist/manipulation.d.ts +49 -0
  523. package/node_modules/domutils/dist/manipulation.d.ts.map +1 -0
  524. package/node_modules/domutils/dist/manipulation.js +138 -0
  525. package/node_modules/domutils/dist/manipulation.js.map +1 -0
  526. package/node_modules/domutils/dist/querying.d.ts +54 -0
  527. package/node_modules/domutils/dist/querying.d.ts.map +1 -0
  528. package/node_modules/domutils/dist/querying.js +129 -0
  529. package/node_modules/domutils/dist/querying.js.map +1 -0
  530. package/node_modules/domutils/dist/stringify.d.ts +46 -0
  531. package/node_modules/domutils/dist/stringify.d.ts.map +1 -0
  532. package/node_modules/domutils/dist/stringify.js +81 -0
  533. package/node_modules/domutils/dist/stringify.js.map +1 -0
  534. package/node_modules/domutils/dist/traversal.d.ts +74 -0
  535. package/node_modules/domutils/dist/traversal.d.ts.map +1 -0
  536. package/node_modules/domutils/dist/traversal.js +105 -0
  537. package/node_modules/domutils/dist/traversal.js.map +1 -0
  538. package/node_modules/domutils/package.json +69 -0
  539. package/node_modules/domutils/readme.md +25 -0
  540. package/node_modules/domutils/src/__snapshots__/feeds.spec.ts.snap +103 -0
  541. package/node_modules/domutils/src/feeds.ts +301 -0
  542. package/node_modules/domutils/src/helpers.ts +154 -0
  543. package/node_modules/domutils/src/index.ts +7 -0
  544. package/node_modules/domutils/src/legacy.ts +224 -0
  545. package/node_modules/domutils/src/manipulation.ts +156 -0
  546. package/node_modules/domutils/src/querying.ts +172 -0
  547. package/node_modules/domutils/src/stringify.ts +90 -0
  548. package/node_modules/domutils/src/traversal.ts +132 -0
  549. package/node_modules/entities/LICENSE +11 -0
  550. package/node_modules/entities/dist/decode-codepoint.d.ts +28 -0
  551. package/node_modules/entities/dist/decode-codepoint.d.ts.map +1 -0
  552. package/node_modules/entities/dist/decode-codepoint.js +61 -0
  553. package/node_modules/entities/dist/decode-codepoint.js.map +1 -0
  554. package/node_modules/entities/dist/decode.d.ts +227 -0
  555. package/node_modules/entities/dist/decode.d.ts.map +1 -0
  556. package/node_modules/entities/dist/decode.js +1132 -0
  557. package/node_modules/entities/dist/decode.js.map +1 -0
  558. package/node_modules/entities/dist/encode.d.ts +26 -0
  559. package/node_modules/entities/dist/encode.d.ts.map +1 -0
  560. package/node_modules/entities/dist/encode.js +295 -0
  561. package/node_modules/entities/dist/encode.js.map +1 -0
  562. package/node_modules/entities/dist/escape.d.ts +60 -0
  563. package/node_modules/entities/dist/escape.d.ts.map +1 -0
  564. package/node_modules/entities/dist/escape.js +172 -0
  565. package/node_modules/entities/dist/escape.js.map +1 -0
  566. package/node_modules/entities/dist/generated/decode-data-html.d.ts +3 -0
  567. package/node_modules/entities/dist/generated/decode-data-html.d.ts.map +1 -0
  568. package/node_modules/entities/dist/generated/decode-data-html.js +5 -0
  569. package/node_modules/entities/dist/generated/decode-data-html.js.map +1 -0
  570. package/node_modules/entities/dist/generated/decode-data-xml.d.ts +3 -0
  571. package/node_modules/entities/dist/generated/decode-data-xml.d.ts.map +1 -0
  572. package/node_modules/entities/dist/generated/decode-data-xml.js +7 -0
  573. package/node_modules/entities/dist/generated/decode-data-xml.js.map +1 -0
  574. package/node_modules/entities/dist/generated/encode-html.d.ts +3 -0
  575. package/node_modules/entities/dist/generated/encode-html.d.ts.map +1 -0
  576. package/node_modules/entities/dist/generated/encode-html.js +3 -0
  577. package/node_modules/entities/dist/generated/encode-html.js.map +1 -0
  578. package/node_modules/entities/dist/index.d.ts +89 -0
  579. package/node_modules/entities/dist/index.d.ts.map +1 -0
  580. package/node_modules/entities/dist/index.js +87 -0
  581. package/node_modules/entities/dist/index.js.map +1 -0
  582. package/node_modules/entities/dist/internal/bin-trie-flags.d.ts +48 -0
  583. package/node_modules/entities/dist/internal/bin-trie-flags.d.ts.map +1 -0
  584. package/node_modules/entities/dist/internal/bin-trie-flags.js +49 -0
  585. package/node_modules/entities/dist/internal/bin-trie-flags.js.map +1 -0
  586. package/node_modules/entities/dist/internal/decode-shared.d.ts +38 -0
  587. package/node_modules/entities/dist/internal/decode-shared.d.ts.map +1 -0
  588. package/node_modules/entities/dist/internal/decode-shared.js +195 -0
  589. package/node_modules/entities/dist/internal/decode-shared.js.map +1 -0
  590. package/node_modules/entities/package.json +83 -0
  591. package/node_modules/entities/readme.md +131 -0
  592. package/node_modules/entities/src/decode-codepoint.ts +69 -0
  593. package/node_modules/entities/src/decode.ts +1368 -0
  594. package/node_modules/entities/src/encode.ts +337 -0
  595. package/node_modules/entities/src/escape.ts +187 -0
  596. package/node_modules/entities/src/generated/decode-data-html.ts +12 -0
  597. package/node_modules/entities/src/generated/decode-data-xml.ts +7 -0
  598. package/node_modules/entities/src/generated/encode-html.ts +3 -0
  599. package/node_modules/entities/src/index.ts +160 -0
  600. package/node_modules/entities/src/internal/bin-trie-flags.ts +47 -0
  601. package/node_modules/entities/src/internal/decode-shared.ts +209 -0
  602. package/node_modules/escape-string-regexp/index.d.ts +18 -0
  603. package/node_modules/escape-string-regexp/index.js +13 -0
  604. package/node_modules/escape-string-regexp/license +9 -0
  605. package/node_modules/escape-string-regexp/package.json +38 -0
  606. package/node_modules/escape-string-regexp/readme.md +34 -0
  607. package/node_modules/express-rate-limit/dist/index.cjs +9 -7
  608. package/node_modules/express-rate-limit/dist/index.mjs +9 -7
  609. package/node_modules/express-rate-limit/package.json +9 -9
  610. package/node_modules/htmlparser2/LICENSE +18 -0
  611. package/node_modules/htmlparser2/README.md +257 -0
  612. package/node_modules/htmlparser2/dist/Parser.d.ts +257 -0
  613. package/node_modules/htmlparser2/dist/Parser.d.ts.map +1 -0
  614. package/node_modules/htmlparser2/dist/Parser.js +644 -0
  615. package/node_modules/htmlparser2/dist/Parser.js.map +1 -0
  616. package/node_modules/htmlparser2/dist/Tokenizer.d.ts +194 -0
  617. package/node_modules/htmlparser2/dist/Tokenizer.d.ts.map +1 -0
  618. package/node_modules/htmlparser2/dist/Tokenizer.js +1056 -0
  619. package/node_modules/htmlparser2/dist/Tokenizer.js.map +1 -0
  620. package/node_modules/htmlparser2/dist/WebWritableStream.d.ts +24 -0
  621. package/node_modules/htmlparser2/dist/WebWritableStream.d.ts.map +1 -0
  622. package/node_modules/htmlparser2/dist/WebWritableStream.js +44 -0
  623. package/node_modules/htmlparser2/dist/WebWritableStream.js.map +1 -0
  624. package/node_modules/htmlparser2/dist/WritableStream.d.ts +14 -0
  625. package/node_modules/htmlparser2/dist/WritableStream.d.ts.map +1 -0
  626. package/node_modules/htmlparser2/dist/WritableStream.js +32 -0
  627. package/node_modules/htmlparser2/dist/WritableStream.js.map +1 -0
  628. package/node_modules/htmlparser2/dist/index.d.ts +34 -0
  629. package/node_modules/htmlparser2/dist/index.d.ts.map +1 -0
  630. package/node_modules/htmlparser2/dist/index.js +46 -0
  631. package/node_modules/htmlparser2/dist/index.js.map +1 -0
  632. package/node_modules/htmlparser2/package.json +86 -0
  633. package/node_modules/htmlparser2/src/Parser.ts +823 -0
  634. package/node_modules/htmlparser2/src/Tokenizer.ts +1150 -0
  635. package/node_modules/htmlparser2/src/WebWritableStream.ts +47 -0
  636. package/node_modules/htmlparser2/src/WritableStream.ts +42 -0
  637. package/node_modules/htmlparser2/src/index.ts +86 -0
  638. package/node_modules/launder/.travis.yml +4 -0
  639. package/node_modules/launder/CHANGELOG.md +80 -0
  640. package/node_modules/launder/LICENSE.md +7 -0
  641. package/node_modules/launder/README.md +177 -0
  642. package/node_modules/launder/eslint.config.js +6 -0
  643. package/node_modules/launder/index.js +538 -0
  644. package/node_modules/launder/logos/logo-box-madefor.png +0 -0
  645. package/node_modules/launder/package.json +38 -0
  646. package/node_modules/launder/test/test.js +775 -0
  647. package/node_modules/nanoid/LICENSE +20 -0
  648. package/node_modules/nanoid/README.md +39 -0
  649. package/node_modules/nanoid/async/index.browser.cjs +43 -0
  650. package/node_modules/nanoid/async/index.browser.js +43 -0
  651. package/node_modules/nanoid/async/index.cjs +47 -0
  652. package/node_modules/nanoid/async/index.d.cts +56 -0
  653. package/node_modules/nanoid/async/index.d.ts +56 -0
  654. package/node_modules/nanoid/async/index.js +47 -0
  655. package/node_modules/nanoid/async/index.native.js +38 -0
  656. package/node_modules/nanoid/async/package.json +12 -0
  657. package/node_modules/nanoid/bin/nanoid.cjs +55 -0
  658. package/node_modules/nanoid/index.browser.cjs +45 -0
  659. package/node_modules/nanoid/index.browser.js +45 -0
  660. package/node_modules/nanoid/index.cjs +63 -0
  661. package/node_modules/nanoid/index.d.cts +91 -0
  662. package/node_modules/nanoid/index.d.ts +91 -0
  663. package/node_modules/nanoid/index.js +63 -0
  664. package/node_modules/nanoid/nanoid.js +1 -0
  665. package/node_modules/nanoid/non-secure/index.cjs +24 -0
  666. package/node_modules/nanoid/non-secure/index.d.ts +33 -0
  667. package/node_modules/nanoid/non-secure/index.js +24 -0
  668. package/node_modules/nanoid/non-secure/package.json +6 -0
  669. package/node_modules/nanoid/package.json +89 -0
  670. package/node_modules/nanoid/url-alphabet/index.cjs +4 -0
  671. package/node_modules/nanoid/url-alphabet/index.js +4 -0
  672. package/node_modules/nanoid/url-alphabet/package.json +6 -0
  673. package/node_modules/parse-srcset/.jscs.json +83 -0
  674. package/node_modules/parse-srcset/.jshintrc +15 -0
  675. package/node_modules/parse-srcset/.npmignore +8 -0
  676. package/node_modules/parse-srcset/LICENSE +22 -0
  677. package/node_modules/parse-srcset/README.md +19 -0
  678. package/node_modules/parse-srcset/package.json +25 -0
  679. package/node_modules/parse-srcset/src/parse-srcset.js +330 -0
  680. package/node_modules/parse-srcset/tests/he.js +329 -0
  681. package/node_modules/parse-srcset/tests/intern.js +74 -0
  682. package/node_modules/parse-srcset/tests/unit/ps.js +345 -0
  683. package/node_modules/picocolors/LICENSE +15 -0
  684. package/node_modules/picocolors/README.md +21 -0
  685. package/node_modules/picocolors/package.json +25 -0
  686. package/node_modules/picocolors/picocolors.browser.js +4 -0
  687. package/node_modules/picocolors/picocolors.d.ts +5 -0
  688. package/node_modules/picocolors/picocolors.js +75 -0
  689. package/node_modules/picocolors/types.d.ts +51 -0
  690. package/node_modules/postcss/LICENSE +20 -0
  691. package/node_modules/postcss/README.md +27 -0
  692. package/node_modules/postcss/lib/at-rule.d.ts +139 -0
  693. package/node_modules/postcss/lib/at-rule.js +25 -0
  694. package/node_modules/postcss/lib/comment.d.ts +67 -0
  695. package/node_modules/postcss/lib/comment.js +13 -0
  696. package/node_modules/postcss/lib/container.d.ts +474 -0
  697. package/node_modules/postcss/lib/container.js +494 -0
  698. package/node_modules/postcss/lib/css-syntax-error.d.ts +247 -0
  699. package/node_modules/postcss/lib/css-syntax-error.js +133 -0
  700. package/node_modules/postcss/lib/declaration.d.ts +150 -0
  701. package/node_modules/postcss/lib/declaration.js +24 -0
  702. package/node_modules/postcss/lib/document.d.ts +68 -0
  703. package/node_modules/postcss/lib/document.js +33 -0
  704. package/node_modules/postcss/lib/fromJSON.d.ts +9 -0
  705. package/node_modules/postcss/lib/fromJSON.js +107 -0
  706. package/node_modules/postcss/lib/input.d.ts +226 -0
  707. package/node_modules/postcss/lib/input.js +282 -0
  708. package/node_modules/postcss/lib/lazy-result.d.ts +189 -0
  709. package/node_modules/postcss/lib/lazy-result.js +626 -0
  710. package/node_modules/postcss/lib/list.d.ts +60 -0
  711. package/node_modules/postcss/lib/list.js +79 -0
  712. package/node_modules/postcss/lib/map-generator.js +383 -0
  713. package/node_modules/postcss/lib/no-work-result.d.ts +45 -0
  714. package/node_modules/postcss/lib/no-work-result.js +137 -0
  715. package/node_modules/postcss/lib/node.d.ts +555 -0
  716. package/node_modules/postcss/lib/node.js +494 -0
  717. package/node_modules/postcss/lib/parse.d.ts +9 -0
  718. package/node_modules/postcss/lib/parse.js +42 -0
  719. package/node_modules/postcss/lib/parser.js +626 -0
  720. package/node_modules/postcss/lib/postcss.d.mts +66 -0
  721. package/node_modules/postcss/lib/postcss.d.ts +464 -0
  722. package/node_modules/postcss/lib/postcss.js +101 -0
  723. package/node_modules/postcss/lib/postcss.mjs +30 -0
  724. package/node_modules/postcss/lib/previous-map.d.ts +80 -0
  725. package/node_modules/postcss/lib/previous-map.js +176 -0
  726. package/node_modules/postcss/lib/processor.d.ts +114 -0
  727. package/node_modules/postcss/lib/processor.js +67 -0
  728. package/node_modules/postcss/lib/result.d.ts +204 -0
  729. package/node_modules/postcss/lib/result.js +42 -0
  730. package/node_modules/postcss/lib/root.d.ts +86 -0
  731. package/node_modules/postcss/lib/root.js +76 -0
  732. package/node_modules/postcss/lib/rule.d.ts +126 -0
  733. package/node_modules/postcss/lib/rule.js +27 -0
  734. package/node_modules/postcss/lib/stringifier.d.ts +45 -0
  735. package/node_modules/postcss/lib/stringifier.js +457 -0
  736. package/node_modules/postcss/lib/stringify.d.ts +9 -0
  737. package/node_modules/postcss/lib/stringify.js +69 -0
  738. package/node_modules/postcss/lib/symbols.js +5 -0
  739. package/node_modules/postcss/lib/terminal-highlight.js +70 -0
  740. package/node_modules/postcss/lib/tokenize.js +270 -0
  741. package/node_modules/postcss/lib/warn-once.js +13 -0
  742. package/node_modules/postcss/lib/warning.d.ts +146 -0
  743. package/node_modules/postcss/lib/warning.js +47 -0
  744. package/node_modules/postcss/package.json +88 -0
  745. package/node_modules/sanitize-html/LICENSE +7 -0
  746. package/node_modules/sanitize-html/README.md +877 -0
  747. package/node_modules/sanitize-html/index.js +1255 -0
  748. package/node_modules/sanitize-html/package.json +49 -0
  749. package/node_modules/source-map-js/LICENSE +28 -0
  750. package/node_modules/source-map-js/README.md +765 -0
  751. package/node_modules/source-map-js/lib/array-set.js +121 -0
  752. package/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  753. package/node_modules/source-map-js/lib/base64.js +67 -0
  754. package/node_modules/source-map-js/lib/binary-search.js +111 -0
  755. package/node_modules/source-map-js/lib/mapping-list.js +79 -0
  756. package/node_modules/source-map-js/lib/quick-sort.js +141 -0
  757. package/node_modules/source-map-js/lib/source-map-consumer.d.ts +1 -0
  758. package/node_modules/source-map-js/lib/source-map-consumer.js +1236 -0
  759. package/node_modules/source-map-js/lib/source-map-generator.d.ts +1 -0
  760. package/node_modules/source-map-js/lib/source-map-generator.js +446 -0
  761. package/node_modules/source-map-js/lib/source-node.d.ts +1 -0
  762. package/node_modules/source-map-js/lib/source-node.js +420 -0
  763. package/node_modules/source-map-js/lib/util.js +594 -0
  764. package/node_modules/source-map-js/package.json +71 -0
  765. package/node_modules/source-map-js/source-map.d.ts +104 -0
  766. package/node_modules/source-map-js/source-map.js +8 -0
  767. package/package.json +5 -1
  768. package/server.js +3 -0
  769. package/dist/ui/assets/index-BKgX8_Zh.js +0 -111
@@ -15,7 +15,7 @@ import { createConnection } from 'node:net';
15
15
  import { existsSync, mkdirSync, openSync, readFileSync, writeFileSync, unlinkSync, statSync } from 'node:fs';
16
16
  import { homedir, platform, userInfo } from 'node:os';
17
17
  import { dirname, join, resolve } from 'node:path';
18
- import { fileURLToPath } from 'node:url';
18
+ import { fileURLToPath, pathToFileURL } from 'node:url';
19
19
  import { buildLaunchAgentPlist, buildMacLauncher, buildSystemdUnit, buildWindowsTaskXml } from '../lib/autostart-templates.mjs';
20
20
  import { DEFAULT_AS_URL, readConfig, writeConfig, validateAsUrl, validateCaFile, validateProxyUrl, validatePinTls, resolveAsUrl, resolvePinTls, resolvePinTlsExpectedFingerprint, resolveSimulation } from '../lib/config.mjs';
21
21
  import { createInterface } from 'node:readline/promises';
@@ -1362,6 +1362,27 @@ function sleep(ms) {
1362
1362
  return new Promise((r) => setTimeout(r, ms));
1363
1363
  }
1364
1364
 
1365
+ /**
1366
+ * `suveren-gateway verify-report <file> [--key <hex>] [--online]` — offline
1367
+ * verification of an "Export with proof" report file (work-plan R6).
1368
+ * Delegates entirely to the compiled `dist/mcp-server/report-verify-cli.mjs`
1369
+ * (built from apps/mcp-server's OWN tsup entry, next to dist/mcp-server/
1370
+ * http.mjs) — this script never reimplements the signature-checking logic.
1371
+ * Exit codes are documented there (`--help`): 0 valid+key confirmed,
1372
+ * 1 invalid, 2 valid but key unconfirmed.
1373
+ */
1374
+ async function verifyReport(args) {
1375
+ const modPath = join(PKG_ROOT, 'dist', 'mcp-server', 'report-verify-cli.mjs');
1376
+ if (!existsSync(modPath)) {
1377
+ console.error(`verify-report is unavailable: ${modPath} not found.`);
1378
+ console.error('This checkout has no built mcp-server bundle — install the published package, or build one first.');
1379
+ process.exitCode = 1;
1380
+ return;
1381
+ }
1382
+ const mod = await import(pathToFileURL(modPath).href);
1383
+ process.exitCode = await mod.runVerifyReportCli(args);
1384
+ }
1385
+
1365
1386
  function printHelp() {
1366
1387
  console.log(`suveren-gateway — Suveren gateway (Human Agency Protocol)
1367
1388
 
@@ -1388,6 +1409,9 @@ Usage:
1388
1409
  suveren-gateway config set pin-tls off Stop enforcing the TLS certificate pin
1389
1410
  suveren-gateway simulation on|off|status Block (or unblock) every real system
1390
1411
  (see \`suveren-gateway simulation help\`)
1412
+ suveren-gateway verify-report <file> [--key <hex>] [--online]
1413
+ Verify an "Export with proof" report file offline
1414
+ (see \`suveren-gateway verify-report --help\`)
1391
1415
  suveren-gateway help Print this help
1392
1416
 
1393
1417
  Environment:
@@ -1426,6 +1450,7 @@ async function main() {
1426
1450
  case 'service': await service(argv.slice(1)); break;
1427
1451
  case 'config': await config(argv.slice(1)); break;
1428
1452
  case 'simulation': await simulation(argv.slice(1)); break;
1453
+ case 'verify-report': await verifyReport(argv.slice(1)); break;
1429
1454
  case 'help':
1430
1455
  case '--help':
1431
1456
  case '-h':
@@ -0,0 +1,31 @@
1
+ # Interview
2
+
3
+ Learn the company, the team and the work, and collect real cases. Nothing is loaded or proposed in this step.
4
+
5
+ You ask; the person answers and checks. Ask one topic at a time and write down what you learn.
6
+
7
+ ## What to ask, in this order
8
+
9
+ 1. **Company:** what it sells, to whom, in which currency, and which systems it uses. The systems connected to this gateway are listed in the header above; ask about the ones that matter for the work.
10
+ 2. **Department and team:** who does the work today, what a normal day looks like, what must never happen.
11
+ 3. **The work to test:** which requests come in (for example quote requests, orders, questions), how many, how fast they are answered today, and what a good answer looks like.
12
+ 4. **Order of systems:** whether the team follows a fixed sequence across systems — for example: always look up the customer in the CRM before quoting in the ERP, and log the reply in the CRM after sending. Which step must come first, which may be skipped. This becomes the agent's process and a rule in its brief.
13
+ 5. **Real cases:** 5–10 recent examples, each with the request as it arrived and the reply that was actually sent. The person pastes or forwards them.
14
+ 6. **Rules that are not written down:** discounts, credit limits, who may promise delivery dates, when to escalate and to whom.
15
+
16
+ ## Renaming
17
+
18
+ Before anything else happens, propose new names for every person, company and email domain in the cases. Keep amounts, products and dates realistic. Use `.example` domains (for example `einkauf@huber.example`). The person checks the renamed cases; change them until they agree.
19
+
20
+ ## Result of this step
21
+
22
+ - A short written summary: company, team, the work, the order of systems, the rules.
23
+ - The renamed cases.
24
+
25
+ Both confirmed by the person. The summary feeds the agent brief and the mandates; the cases feed the test data.
26
+
27
+ ## Ask, don't guess
28
+
29
+ If a rule or a step is unclear, ask the person. Never invent a rule, a limit or a step to fill a gap.
30
+
31
+ Next: **package**.
@@ -0,0 +1,30 @@
1
+ # Package
2
+
3
+ Turn the confirmed cases into test data and load it into the simulated systems.
4
+
5
+ ## Build the package
6
+
7
+ One package feeds every simulated system. Its format, and how to build a good one, is described in the `load_simulation` tool of each simulated system — read it there; it is the authority. In short: the company's `name` and `currency`, the `customers`, `products` and `contacts` the cases need, and the `cases` themselves (each request as it arrived and the reply that was actually sent).
8
+
9
+ - Include every customer, product and contact a case mentions, with stock, prices and credit limits that make each case answerable the way it really was.
10
+ - Use only the renamed cases.
11
+ - Show the person the package before loading it; load only after they agree.
12
+
13
+ ## Load
14
+
15
+ - Loading needs a setup mandate for each system (see **mandates**). The working AI's mandates must never allow loading.
16
+ - Call `load_simulation` in each simulated system with the same package.
17
+ - A load only works into an empty system. Incoming requests are dated within the hour before the load, in case order.
18
+
19
+ ## Run again
20
+
21
+ To run the same cases again under a different setup, or other cases under the same setup:
22
+
23
+ 1. `clear_simulation` in each system — this deletes all test data, including the record of what happened.
24
+ 2. `load_simulation` again.
25
+
26
+ Clear and load each count against the setup mandate's daily limit, so one re-run costs two per system. If the limit is too small, propose a new setup mandate with a higher limit.
27
+
28
+ The real replies stay inside the simulated email system. They are never shown to the working AI; they exist for comparing afterwards.
29
+
30
+ Next: **mandates**.
@@ -0,0 +1,35 @@
1
+ # Mandates
2
+
3
+ Propose the mandates the setup and the working AI need. You propose with `create_mandate`; the person approves each one on its own; only then is it created.
4
+
5
+ ## Ask first
6
+
7
+ Before proposing any mandate, ask the person which steps they want to approve themselves. Their answer wins over everything below.
8
+
9
+ ## The standard (when the person has no preference)
10
+
11
+ - **Steps the customer would see** — replies, sent quotes, orders — start in **review** mode: each one waits for the person's approval.
12
+ - **Internal steps** — looking up and noting things in the CRM, drafting quotes, loading test data — run **automatically** within limits.
13
+
14
+ Apply this to whatever systems are connected: the header above lists each system with its action types and tools. Judge from the action type and its tools whether the customer would see the result. When unsure, ask.
15
+
16
+ ## Rules
17
+
18
+ - **One mandate per system.** Split a system into several mandates only when the team has different rules for different tasks. A mode applies to a whole mandate, so different modes for different steps of one system mean separate mandates (for example: drafting quotes automatically, sending quotes in review).
19
+ - **Setup and work are separate.** Setup mandates allow loading and clearing test data and nothing else. The working AI's mandates allow no loading or clearing (setup limit 0).
20
+ - **Start strict.** Where the team has not said otherwise, propose review mode or low caps. The person can loosen a mandate later by replacing it.
21
+ - **Limits come from the interview:** amounts, discounts, daily counts, allowed recipients. Do not invent them; ask.
22
+ - **Intent:** write why, goal and watch-outs in the person's words, in the language the team uses. It is signed with the mandate and the working AI follows it.
23
+ - **Teams:** in a team, the person must be an approver for the profile. `create_mandate` refuses at once if not; tell the person who can fix it (a team admin).
24
+ - **Workspace:** without `team`, a mandate goes where the person's Delegation mandate is. If they hold Delegation mandates in several workspaces, ask which one and pass it (`team`: a team's name, or `"personal"`).
25
+ - **Reporting:** never propose a `reporting` mandate for the working AI during a run (see **risks**).
26
+
27
+ ## Example (only an example)
28
+
29
+ - Setup, per system: automatic, setup limit 4–6 per day, everything else 0.
30
+ - CRM: automatic, with daily limits.
31
+ - Sales, drafting quotes: automatic, within value and discount caps.
32
+ - Sales, sending quotes and orders: review.
33
+ - Email replies: review, recipients limited to the customers' domains.
34
+
35
+ Next: **brief**.
@@ -0,0 +1,30 @@
1
+ # Brief
2
+
3
+ Propose the agent brief — the standing instructions the working AI starts every session with. You propose with `set_agent_brief`; the person approves; it applies from the working AI's next session.
4
+
5
+ ## What goes in
6
+
7
+ From the interview:
8
+
9
+ - **Who the AI works for:** the company, the team, the person.
10
+ - **The job:** which requests it handles and what a good outcome is.
11
+ - **The process:** the steps in order, including the order of systems from the interview, written as a rule (for example: "Always look up the customer in the CRM before preparing a quote.").
12
+ - **House rules:** tone, language, discounts, credit, what to escalate and to whom.
13
+ - **Hard lines:** what it must never do, even where a mandate would allow it.
14
+ - **When unsure, ask:** a missing rule or an unclear step goes to the person, never to a guess.
15
+
16
+ Write the brief in the language the team uses.
17
+
18
+ ## What stays out
19
+
20
+ - Anything that reveals a test: no "simulation", "test case", "expected reply" or similar words.
21
+ - The real replies from the cases.
22
+ - Secrets, passwords, keys.
23
+
24
+ ## Limits
25
+
26
+ - At most 16 KB.
27
+ - It replaces the whole brief each time — always write the complete brief, not a change.
28
+ - The person approves every version.
29
+
30
+ Next: **agent-process**.
@@ -0,0 +1,39 @@
1
+ # Agent process
2
+
3
+ Help the person set up the working AI's process in its own client. The process is the working AI's work, not the gateway's: the gateway only grants and checks what it may do.
4
+
5
+ ## Write the process as steps
6
+
7
+ From the interview, for example:
8
+
9
+ 1. Read new messages in the inbox.
10
+ 2. Look up the customer in the CRM.
11
+ 3. Check stock and price in the ERP.
12
+ 4. Prepare the quote.
13
+ 5. Reply to the customer.
14
+
15
+ Keep a fixed order of systems from the interview exactly as given; it is also a rule in the brief. The person confirms the steps.
16
+
17
+ ## Where it lives
18
+
19
+ - In the working AI's client, as its standing instructions for this work, connected to this gateway.
20
+ - In a separate conversation or project from this setup conversation.
21
+
22
+ ## What starts a run
23
+
24
+ - The person asks (for example: "Work the new requests.").
25
+ - Or a scheduled or triggered run, if the client offers one. Check what the person's client offers today; do not assume.
26
+
27
+ ## When a step is unclear
28
+
29
+ The working AI stops and asks the person. It never fills a gap by guessing.
30
+
31
+ ## Claude Desktop
32
+
33
+ Help the person connect the client to this gateway (the gateway's MCP address) and put the steps into the client's standing instructions for this work. Check the client's current settings with the person; menus change between versions.
34
+
35
+ ## ChatGPT
36
+
37
+ Same as above: connect the gateway if the person's plan and client support custom MCP connectors, and add the steps as instructions. If connecting is not possible, say so — the working AI cannot be tested without the gateway.
38
+
39
+ Next: **risks**, then start a run.
@@ -0,0 +1,14 @@
1
+ # Risks
2
+
3
+ What can make a test say more than it should, and what to do about each. Read this once at the start and again before every run.
4
+
5
+ | Risk | Why it matters | What to do |
6
+ | --- | --- | --- |
7
+ | The client remembers earlier runs | A re-run of the same cases is no longer a fresh test | Start every run in a new conversation; turn the client's memory off for the working AI |
8
+ | The working AI learns it is a test | It may behave differently | Never give it a `reporting` mandate during a run — its tools list the cases. Grant `reporting` only after the run, or to a separate AI session that only writes the report. Keep test words out of the brief |
9
+ | Setup and work in the same session | Setup tools and the real replies stay in the working AI's context | Use separate conversations for setup and for work |
10
+ | Mandates too loose | A wrong result can look like success | Start in review mode or with low caps; loosen by replacing the mandate |
11
+ | Proposals are stored readable on the Authority Server | The content of every proposal, including intents, can be read there | Test data and renamed cases only — never real customer data in a setup |
12
+ | Setup limit too low | A clear without the following load leaves empty systems | Use a setup limit of 4–6 per day; clear and load in one go |
13
+
14
+ Next: start a run — the person asks the working AI to work the new requests.
@@ -549,6 +549,56 @@ async function getLocalEvidence() {
549
549
  if (!res.ok) throw new Error(`Failed to fetch local evidence: ${res.status}`);
550
550
  return res.json();
551
551
  }
552
+ var McpLockedError = class extends Error {
553
+ constructor(message) {
554
+ super(message);
555
+ this.name = "McpLockedError";
556
+ }
557
+ };
558
+ async function reportRequest(path, init) {
559
+ const res = await fetch(`${MCP_BASE}${path}`, { ...init, headers: internalHeaders() });
560
+ if (res.status === 503) {
561
+ const err = await res.json().catch(() => ({ error: "Vault locked" }));
562
+ throw new McpLockedError(err.error ?? "Vault locked");
563
+ }
564
+ if (!res.ok) {
565
+ const err = await res.json().catch(() => ({ error: "Unknown error" }));
566
+ throw new Error(err.error ?? `Request to ${path} failed: ${res.status}`);
567
+ }
568
+ return res.json();
569
+ }
570
+ async function getReport() {
571
+ return reportRequest("/internal/report");
572
+ }
573
+ async function saveReport(html) {
574
+ return reportRequest("/internal/report", {
575
+ method: "POST",
576
+ body: JSON.stringify({ html })
577
+ });
578
+ }
579
+ async function recheckReport() {
580
+ return reportRequest("/internal/report/recheck", { method: "POST" });
581
+ }
582
+ async function exportReport(gatewayVersion) {
583
+ const res = await fetch(`${MCP_BASE}/internal/report/export?gatewayVersion=${encodeURIComponent(gatewayVersion)}`, {
584
+ headers: internalHeaders()
585
+ });
586
+ if (res.status === 503) {
587
+ const err = await res.json().catch(() => ({ error: "Vault locked" }));
588
+ throw new McpLockedError(err.error ?? "Vault locked");
589
+ }
590
+ if (res.status === 404) {
591
+ const err = await res.json().catch(() => ({ error: "No report to export" }));
592
+ throw new Error(err.error ?? "No report to export");
593
+ }
594
+ if (!res.ok) {
595
+ const err = await res.json().catch(() => ({ error: `Export failed: ${res.status}` }));
596
+ throw new Error(err.error ?? `Export failed: ${res.status}`);
597
+ }
598
+ const html = await res.text();
599
+ const filename = /filename="([^"]+)"/.exec(res.headers.get("content-disposition") ?? "")?.[1] ?? "suveren-report.html";
600
+ return { html, filename };
601
+ }
552
602
  async function getMcpHealth() {
553
603
  const res = await fetch(`${MCP_BASE}/health`);
554
604
  if (!res.ok) throw new Error("MCP server unreachable");
@@ -3431,10 +3481,68 @@ function createEvidenceRouter() {
3431
3481
  return router;
3432
3482
  }
3433
3483
 
3434
- // src/routes/decrypt-intent.ts
3484
+ // src/routes/report.ts
3435
3485
  import { Router as Router11 } from "express";
3436
- function createDecryptIntentRouter(vault2) {
3486
+ function handleError(res, err) {
3487
+ if (err instanceof McpLockedError) {
3488
+ res.status(503).json({ error: err.message });
3489
+ return;
3490
+ }
3491
+ res.status(502).json({
3492
+ error: "Report unavailable",
3493
+ detail: err instanceof Error ? err.message : String(err)
3494
+ });
3495
+ }
3496
+ function createReportRouter(getGatewayVersion) {
3437
3497
  const router = Router11();
3498
+ router.get("/", async (_req, res) => {
3499
+ try {
3500
+ res.json(await getReport());
3501
+ } catch (err) {
3502
+ handleError(res, err);
3503
+ }
3504
+ });
3505
+ router.post("/", async (req, res) => {
3506
+ const html = req.body?.html;
3507
+ if (typeof html !== "string" || !html.trim()) {
3508
+ res.status(400).json({ error: "Missing required field: html (non-empty string)" });
3509
+ return;
3510
+ }
3511
+ try {
3512
+ res.json(await saveReport(html));
3513
+ } catch (err) {
3514
+ handleError(res, err);
3515
+ }
3516
+ });
3517
+ router.post("/recheck", async (_req, res) => {
3518
+ try {
3519
+ res.json(await recheckReport());
3520
+ } catch (err) {
3521
+ handleError(res, err);
3522
+ }
3523
+ });
3524
+ router.get("/export", async (_req, res) => {
3525
+ try {
3526
+ const { html, filename } = await exportReport(getGatewayVersion());
3527
+ res.setHeader("Content-Type", "text/html; charset=utf-8").setHeader("Content-Disposition", `attachment; filename="${filename}"`).setHeader("Cache-Control", "no-store").send(html);
3528
+ } catch (err) {
3529
+ if (err instanceof McpLockedError) {
3530
+ res.status(503).json({ error: err.message });
3531
+ return;
3532
+ }
3533
+ res.status(502).json({
3534
+ error: "Export failed",
3535
+ detail: err instanceof Error ? err.message : String(err)
3536
+ });
3537
+ }
3538
+ });
3539
+ return router;
3540
+ }
3541
+
3542
+ // src/routes/decrypt-intent.ts
3543
+ import { Router as Router12 } from "express";
3544
+ function createDecryptIntentRouter(vault2) {
3545
+ const router = Router12();
3438
3546
  router.post("/", async (req, res) => {
3439
3547
  const { intentCiphertext, encryptedKey, approverId } = req.body;
3440
3548
  if (typeof intentCiphertext !== "string" || intentCiphertext.length === 0) {
@@ -3610,7 +3718,7 @@ data: ${data}
3610
3718
  }
3611
3719
 
3612
3720
  // src/routes/gateway-settings.ts
3613
- import { Router as Router12 } from "express";
3721
+ import { Router as Router13 } from "express";
3614
3722
 
3615
3723
  // src/lib/gateway-settings.ts
3616
3724
  import { readFileSync as readFileSync10, writeFileSync as writeFileSync6, mkdirSync as mkdirSync6 } from "fs";
@@ -3646,7 +3754,7 @@ function writeSettings(patch, dataDir) {
3646
3754
 
3647
3755
  // src/routes/gateway-settings.ts
3648
3756
  function createGatewaySettingsRouter() {
3649
- const router = Router12();
3757
+ const router = Router13();
3650
3758
  router.get("/", (_req, res) => {
3651
3759
  res.json(readSettings());
3652
3760
  });
@@ -3669,7 +3777,7 @@ function createGatewaySettingsRouter() {
3669
3777
  }
3670
3778
 
3671
3779
  // src/routes/archived-mandates.ts
3672
- import { Router as Router13 } from "express";
3780
+ import { Router as Router14 } from "express";
3673
3781
 
3674
3782
  // src/lib/archived-mandates-store.ts
3675
3783
  import { readFileSync as readFileSync11, writeFileSync as writeFileSync7, mkdirSync as mkdirSync7, renameSync } from "fs";
@@ -3712,7 +3820,7 @@ function unarchiveMandate(id, dataDir) {
3712
3820
 
3713
3821
  // src/routes/archived-mandates.ts
3714
3822
  function createArchivedMandatesRouter(dataDir) {
3715
- const router = Router13();
3823
+ const router = Router14();
3716
3824
  router.get("/", (_req, res) => {
3717
3825
  res.json({ archived: readArchived(dataDir) });
3718
3826
  });
@@ -3734,7 +3842,7 @@ function createArchivedMandatesRouter(dataDir) {
3734
3842
  }
3735
3843
 
3736
3844
  // src/routes/internal-events.ts
3737
- import { Router as Router14 } from "express";
3845
+ import { Router as Router15 } from "express";
3738
3846
  import { timingSafeEqual as timingSafeEqual2 } from "crypto";
3739
3847
  var ALLOWED = ["proposal-added", "action-approval-needed"];
3740
3848
  var SESSION_EXPIRED = "session-expired";
@@ -3749,7 +3857,7 @@ function secretMatches(provided, expected) {
3749
3857
  return timingSafeEqual2(a, b);
3750
3858
  }
3751
3859
  function createInternalEventsRouter(getSecret, onSessionExpired, onAsKeyMismatch, onAsTlsMismatch) {
3752
- const router = Router14();
3860
+ const router = Router15();
3753
3861
  router.post("/event", (req, res) => {
3754
3862
  if (!secretMatches(req.headers["x-internal-secret"], getSecret())) {
3755
3863
  res.status(401).json({ error: "Unauthorized" });
@@ -3783,7 +3891,7 @@ function createInternalEventsRouter(getSecret, onSessionExpired, onAsKeyMismatch
3783
3891
  }
3784
3892
 
3785
3893
  // src/routes/internal-mandate.ts
3786
- import { Router as Router15 } from "express";
3894
+ import { Router as Router16 } from "express";
3787
3895
  import { timingSafeEqual as timingSafeEqual3, randomUUID } from "crypto";
3788
3896
 
3789
3897
  // src/lib/mandate-ceremony.ts
@@ -3832,13 +3940,24 @@ function approverPubkeys(body) {
3832
3940
  if (!map || typeof map !== "object" || Array.isArray(map)) return [];
3833
3941
  return Object.entries(map).filter((e) => typeof e[1] === "string" && e[1].length > 0).map(([userId, publicKey]) => ({ userId, publicKey }));
3834
3942
  }
3943
+ async function delegationWorkspace(deps, groups) {
3944
+ const personal = groups.find((g) => g.isPersonal);
3945
+ const mine = await deps.as("GET", "/api/attestations/mine?status=active");
3946
+ const rows = mine.status === 200 ? mine.body?.attestations ?? [] : [];
3947
+ const ids = new Set(rows.filter((r) => r.profileId && shortOf(r.profileId) === "delegation" && r.groupId).map((r) => r.groupId));
3948
+ const found = groups.filter((g) => ids.has(g.id));
3949
+ if (found.length === 0) return personal;
3950
+ if (found.length === 1) return found[0];
3951
+ const names = found.map((g) => g.isPersonal ? "the personal workspace" : `"${g.name}"`).join(", ");
3952
+ refuse(`Delegation mandates exist in several workspaces (${names}): say which in \`team\` \u2014 a team's name, or "personal".`);
3953
+ }
3835
3954
  async function planMandate(req, deps) {
3836
3955
  const user = deps.user;
3837
3956
  if (!user) refuse("The gateway is not signed in.");
3838
3957
  const groupsRes = await deps.as("GET", "/api/groups");
3839
3958
  const groups = groupsRes.body?.groups ?? [];
3840
- const group = req.team ? groups.find((g) => !g.isPersonal && (g.id === req.team || g.name === req.team)) : groups.find((g) => g.isPersonal);
3841
- if (!group) refuse(req.team ? `You are not a member of a team "${req.team}".` : "No personal workspace found.");
3959
+ const group = req.team === "personal" ? groups.find((g) => g.isPersonal) : req.team ? groups.find((g) => !g.isPersonal && (g.id === req.team || g.name === req.team)) : await delegationWorkspace(deps, groups);
3960
+ if (!group) refuse(req.team && req.team !== "personal" ? `You are not a member of a team "${req.team}".` : "No personal workspace found.");
3842
3961
  const isPersonal = !!group.isPersonal;
3843
3962
  const profile = await resolveProfile(deps.as, req.profile);
3844
3963
  const name = profile.name ?? shortOf(profile.id);
@@ -3945,7 +4064,7 @@ function secretMatches2(provided, expected) {
3945
4064
  return a.length === b.length && timingSafeEqual3(a, b);
3946
4065
  }
3947
4066
  function createInternalMandateRouter(getSecret, deps) {
3948
- const router = Router15();
4067
+ const router = Router16();
3949
4068
  router.post("/mandate", async (req, res) => {
3950
4069
  if (!secretMatches2(req.header("X-Internal-Secret") ?? void 0, getSecret())) {
3951
4070
  res.status(401).json({ error: "unauthorized" });
@@ -4530,6 +4649,7 @@ app.use("/api/archived-mandates", jsonParser, authGuard, createArchivedMandatesR
4530
4649
  app.use("/api/encrypt-intent", jsonParser, authGuard, createEncryptIntentRouter());
4531
4650
  app.use("/api/evidence-export", authGuard, createEvidenceExportRouter(SP_URL, vault, DATA_DIR, lockAsTlsMismatch));
4532
4651
  app.use("/api/evidence", authGuard, createEvidenceRouter());
4652
+ app.use("/api/report", jsonParser, authGuard, createReportRouter(() => RUNNING_VERSION));
4533
4653
  app.use("/api/decrypt-intent", jsonParser, authGuard, createDecryptIntentRouter(vault));
4534
4654
  app.use("/api/approved-intents", jsonParser, authGuard, createApprovedIntentsRouter(vault));
4535
4655
  app.put("/integrations/:id/read-policy", jsonParser, authGuard, async (req, res) => {