@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.
- package/bin/suveren-gateway.js +26 -1
- package/content/guides/1-interview.md +31 -0
- package/content/guides/2-package.md +30 -0
- package/content/guides/3-mandates.md +35 -0
- package/content/guides/4-brief.md +30 -0
- package/content/guides/5-agent-process.md +39 -0
- package/content/guides/6-risks.md +14 -0
- package/dist/control-plane/index.mjs +132 -12
- package/dist/mcp-server/chunk-JUFH4SKS.mjs +639 -0
- package/dist/mcp-server/http.mjs +1733 -205
- package/dist/mcp-server/report-verify-cli.mjs +171 -0
- package/dist/ui/assets/index-78vuGrVE.js +111 -0
- package/dist/ui/assets/{index-y1OFeYnS.css → index-Dfh38n-b.css} +1 -1
- package/dist/ui/index.html +2 -2
- package/node_modules/dayjs/.editorconfig +7 -0
- package/node_modules/dayjs/CHANGELOG.md +1022 -0
- package/node_modules/dayjs/LICENSE +21 -0
- package/node_modules/dayjs/README.md +186 -0
- package/node_modules/dayjs/dayjs.min.js +1 -0
- package/node_modules/dayjs/esm/constant.js +25 -0
- package/node_modules/dayjs/esm/index.d.ts +429 -0
- package/node_modules/dayjs/esm/index.js +541 -0
- package/node_modules/dayjs/esm/locale/af.js +39 -0
- package/node_modules/dayjs/esm/locale/am.js +40 -0
- package/node_modules/dayjs/esm/locale/ar-dz.js +41 -0
- package/node_modules/dayjs/esm/locale/ar-iq.js +42 -0
- package/node_modules/dayjs/esm/locale/ar-kw.js +41 -0
- package/node_modules/dayjs/esm/locale/ar-ly.js +27 -0
- package/node_modules/dayjs/esm/locale/ar-ma.js +42 -0
- package/node_modules/dayjs/esm/locale/ar-sa.js +41 -0
- package/node_modules/dayjs/esm/locale/ar-tn.js +42 -0
- package/node_modules/dayjs/esm/locale/ar.js +81 -0
- package/node_modules/dayjs/esm/locale/az.js +39 -0
- package/node_modules/dayjs/esm/locale/be.js +102 -0
- package/node_modules/dayjs/esm/locale/bg.js +55 -0
- package/node_modules/dayjs/esm/locale/bi.js +39 -0
- package/node_modules/dayjs/esm/locale/bm.js +39 -0
- package/node_modules/dayjs/esm/locale/bn-bd.js +81 -0
- package/node_modules/dayjs/esm/locale/bn.js +72 -0
- package/node_modules/dayjs/esm/locale/bo.js +38 -0
- package/node_modules/dayjs/esm/locale/br.js +93 -0
- package/node_modules/dayjs/esm/locale/bs.js +24 -0
- package/node_modules/dayjs/esm/locale/ca.js +44 -0
- package/node_modules/dayjs/esm/locale/cs.js +120 -0
- package/node_modules/dayjs/esm/locale/cv.js +24 -0
- package/node_modules/dayjs/esm/locale/cy.js +39 -0
- package/node_modules/dayjs/esm/locale/da.js +40 -0
- package/node_modules/dayjs/esm/locale/de-at.js +63 -0
- package/node_modules/dayjs/esm/locale/de-ch.js +63 -0
- package/node_modules/dayjs/esm/locale/de.js +64 -0
- package/node_modules/dayjs/esm/locale/dv.js +39 -0
- package/node_modules/dayjs/esm/locale/el.js +39 -0
- package/node_modules/dayjs/esm/locale/en-au.js +41 -0
- package/node_modules/dayjs/esm/locale/en-ca.js +38 -0
- package/node_modules/dayjs/esm/locale/en-gb.js +42 -0
- package/node_modules/dayjs/esm/locale/en-ie.js +39 -0
- package/node_modules/dayjs/esm/locale/en-il.js +38 -0
- package/node_modules/dayjs/esm/locale/en-in.js +42 -0
- package/node_modules/dayjs/esm/locale/en-nz.js +41 -0
- package/node_modules/dayjs/esm/locale/en-sg.js +39 -0
- package/node_modules/dayjs/esm/locale/en-tt.js +42 -0
- package/node_modules/dayjs/esm/locale/en.js +12 -0
- package/node_modules/dayjs/esm/locale/eo.js +39 -0
- package/node_modules/dayjs/esm/locale/es-do.js +39 -0
- package/node_modules/dayjs/esm/locale/es-mx.js +38 -0
- package/node_modules/dayjs/esm/locale/es-pr.js +39 -0
- package/node_modules/dayjs/esm/locale/es-us.js +38 -0
- package/node_modules/dayjs/esm/locale/es.js +39 -0
- package/node_modules/dayjs/esm/locale/et.js +65 -0
- package/node_modules/dayjs/esm/locale/eu.js +43 -0
- package/node_modules/dayjs/esm/locale/fa.js +39 -0
- package/node_modules/dayjs/esm/locale/fi.js +88 -0
- package/node_modules/dayjs/esm/locale/fo.js +39 -0
- package/node_modules/dayjs/esm/locale/fr-ca.js +38 -0
- package/node_modules/dayjs/esm/locale/fr-ch.js +39 -0
- package/node_modules/dayjs/esm/locale/fr.js +41 -0
- package/node_modules/dayjs/esm/locale/fy.js +39 -0
- package/node_modules/dayjs/esm/locale/ga.js +39 -0
- package/node_modules/dayjs/esm/locale/gd.js +39 -0
- package/node_modules/dayjs/esm/locale/gl.js +39 -0
- package/node_modules/dayjs/esm/locale/gom-latn.js +25 -0
- package/node_modules/dayjs/esm/locale/gu.js +38 -0
- package/node_modules/dayjs/esm/locale/he.js +78 -0
- package/node_modules/dayjs/esm/locale/hi.js +38 -0
- package/node_modules/dayjs/esm/locale/hr.js +53 -0
- package/node_modules/dayjs/esm/locale/ht.js +38 -0
- package/node_modules/dayjs/esm/locale/hu.js +61 -0
- package/node_modules/dayjs/esm/locale/hy-am.js +39 -0
- package/node_modules/dayjs/esm/locale/id.js +39 -0
- package/node_modules/dayjs/esm/locale/index.d.ts +11 -0
- package/node_modules/dayjs/esm/locale/is.js +68 -0
- package/node_modules/dayjs/esm/locale/it-ch.js +39 -0
- package/node_modules/dayjs/esm/locale/it.js +39 -0
- package/node_modules/dayjs/esm/locale/ja.js +45 -0
- package/node_modules/dayjs/esm/locale/jv.js +39 -0
- package/node_modules/dayjs/esm/locale/ka.js +39 -0
- package/node_modules/dayjs/esm/locale/kk.js +39 -0
- package/node_modules/dayjs/esm/locale/km.js +42 -0
- package/node_modules/dayjs/esm/locale/kn.js +38 -0
- package/node_modules/dayjs/esm/locale/ko.js +45 -0
- package/node_modules/dayjs/esm/locale/ku.js +77 -0
- package/node_modules/dayjs/esm/locale/ky.js +39 -0
- package/node_modules/dayjs/esm/locale/lb.js +24 -0
- package/node_modules/dayjs/esm/locale/lo.js +38 -0
- package/node_modules/dayjs/esm/locale/lt.js +70 -0
- package/node_modules/dayjs/esm/locale/lv.js +39 -0
- package/node_modules/dayjs/esm/locale/me.js +24 -0
- package/node_modules/dayjs/esm/locale/mi.js +39 -0
- package/node_modules/dayjs/esm/locale/mk.js +39 -0
- package/node_modules/dayjs/esm/locale/ml.js +38 -0
- package/node_modules/dayjs/esm/locale/mn.js +38 -0
- package/node_modules/dayjs/esm/locale/mr.js +23 -0
- package/node_modules/dayjs/esm/locale/ms-my.js +39 -0
- package/node_modules/dayjs/esm/locale/ms.js +39 -0
- package/node_modules/dayjs/esm/locale/mt.js +39 -0
- package/node_modules/dayjs/esm/locale/my.js +39 -0
- package/node_modules/dayjs/esm/locale/nb.js +40 -0
- package/node_modules/dayjs/esm/locale/ne.js +40 -0
- package/node_modules/dayjs/esm/locale/nl-be.js +39 -0
- package/node_modules/dayjs/esm/locale/nl.js +40 -0
- package/node_modules/dayjs/esm/locale/nn.js +39 -0
- package/node_modules/dayjs/esm/locale/oc-lnc.js +39 -0
- package/node_modules/dayjs/esm/locale/pa-in.js +38 -0
- package/node_modules/dayjs/esm/locale/pl.js +87 -0
- package/node_modules/dayjs/esm/locale/pt-br.js +38 -0
- package/node_modules/dayjs/esm/locale/pt.js +40 -0
- package/node_modules/dayjs/esm/locale/rn.js +39 -0
- package/node_modules/dayjs/esm/locale/ro.js +39 -0
- package/node_modules/dayjs/esm/locale/ru.js +99 -0
- package/node_modules/dayjs/esm/locale/rw.js +35 -0
- package/node_modules/dayjs/esm/locale/sd.js +39 -0
- package/node_modules/dayjs/esm/locale/se.js +39 -0
- package/node_modules/dayjs/esm/locale/si.js +38 -0
- package/node_modules/dayjs/esm/locale/sk.js +121 -0
- package/node_modules/dayjs/esm/locale/sl.js +141 -0
- package/node_modules/dayjs/esm/locale/sq.js +39 -0
- package/node_modules/dayjs/esm/locale/sr-cyrl.js +74 -0
- package/node_modules/dayjs/esm/locale/sr.js +74 -0
- package/node_modules/dayjs/esm/locale/ss.js +39 -0
- package/node_modules/dayjs/esm/locale/sv-fi.js +46 -0
- package/node_modules/dayjs/esm/locale/sv.js +44 -0
- package/node_modules/dayjs/esm/locale/sw.js +39 -0
- package/node_modules/dayjs/esm/locale/ta.js +38 -0
- package/node_modules/dayjs/esm/locale/te.js +38 -0
- package/node_modules/dayjs/esm/locale/tet.js +39 -0
- package/node_modules/dayjs/esm/locale/tg.js +39 -0
- package/node_modules/dayjs/esm/locale/th.js +38 -0
- package/node_modules/dayjs/esm/locale/tk.js +39 -0
- package/node_modules/dayjs/esm/locale/tl-ph.js +39 -0
- package/node_modules/dayjs/esm/locale/tlh.js +24 -0
- package/node_modules/dayjs/esm/locale/tr.js +39 -0
- package/node_modules/dayjs/esm/locale/types.d.ts +33 -0
- package/node_modules/dayjs/esm/locale/tzl.js +24 -0
- package/node_modules/dayjs/esm/locale/tzm-latn.js +39 -0
- package/node_modules/dayjs/esm/locale/tzm.js +39 -0
- package/node_modules/dayjs/esm/locale/ug-cn.js +39 -0
- package/node_modules/dayjs/esm/locale/uk.js +77 -0
- package/node_modules/dayjs/esm/locale/ur.js +39 -0
- package/node_modules/dayjs/esm/locale/uz-latn.js +39 -0
- package/node_modules/dayjs/esm/locale/uz.js +39 -0
- package/node_modules/dayjs/esm/locale/vi.js +43 -0
- package/node_modules/dayjs/esm/locale/x-pseudo.js +39 -0
- package/node_modules/dayjs/esm/locale/yo.js +39 -0
- package/node_modules/dayjs/esm/locale/zh-cn.js +67 -0
- package/node_modules/dayjs/esm/locale/zh-hk.js +65 -0
- package/node_modules/dayjs/esm/locale/zh-tw.js +65 -0
- package/node_modules/dayjs/esm/locale/zh.js +67 -0
- package/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts +4 -0
- package/node_modules/dayjs/esm/plugin/advancedFormat/index.js +66 -0
- package/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/arraySupport/index.js +33 -0
- package/node_modules/dayjs/esm/plugin/badMutable/index.d.ts +4 -0
- package/node_modules/dayjs/esm/plugin/badMutable/index.js +61 -0
- package/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts +11 -0
- package/node_modules/dayjs/esm/plugin/bigIntSupport/index.js +32 -0
- package/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts +4 -0
- package/node_modules/dayjs/esm/plugin/buddhistEra/index.js +21 -0
- package/node_modules/dayjs/esm/plugin/calendar/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/calendar/index.js +32 -0
- package/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts +8 -0
- package/node_modules/dayjs/esm/plugin/customParseFormat/index.js +333 -0
- package/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts +11 -0
- package/node_modules/dayjs/esm/plugin/dayOfYear/index.js +9 -0
- package/node_modules/dayjs/esm/plugin/devHelper/index.d.ts +4 -0
- package/node_modules/dayjs/esm/plugin/devHelper/index.js +50 -0
- package/node_modules/dayjs/esm/plugin/duration/index.d.ts +88 -0
- package/node_modules/dayjs/esm/plugin/duration/index.js +357 -0
- package/node_modules/dayjs/esm/plugin/isBetween/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/isBetween/index.js +10 -0
- package/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/isLeapYear/index.js +7 -0
- package/node_modules/dayjs/esm/plugin/isMoment/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/isMoment/index.js +5 -0
- package/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js +5 -0
- package/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js +5 -0
- package/node_modules/dayjs/esm/plugin/isToday/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/isToday/index.js +9 -0
- package/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/isTomorrow/index.js +9 -0
- package/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/isYesterday/index.js +9 -0
- package/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts +27 -0
- package/node_modules/dayjs/esm/plugin/isoWeek/index.js +57 -0
- package/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js +15 -0
- package/node_modules/dayjs/esm/plugin/localeData/index.d.ts +44 -0
- package/node_modules/dayjs/esm/plugin/localeData/index.js +114 -0
- package/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts +4 -0
- package/node_modules/dayjs/esm/plugin/localizedFormat/index.js +20 -0
- package/node_modules/dayjs/esm/plugin/localizedFormat/utils.js +20 -0
- package/node_modules/dayjs/esm/plugin/minMax/index.d.ts +22 -0
- package/node_modules/dayjs/esm/plugin/minMax/index.js +39 -0
- package/node_modules/dayjs/esm/plugin/negativeYear/index.d.ts +4 -0
- package/node_modules/dayjs/esm/plugin/negativeYear/index.js +36 -0
- package/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts +48 -0
- package/node_modules/dayjs/esm/plugin/objectSupport/index.js +97 -0
- package/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts +44 -0
- package/node_modules/dayjs/esm/plugin/pluralGetSet/index.js +7 -0
- package/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts +4 -0
- package/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js +40 -0
- package/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts +26 -0
- package/node_modules/dayjs/esm/plugin/quarterOfYear/index.js +41 -0
- package/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts +24 -0
- package/node_modules/dayjs/esm/plugin/relativeTime/index.js +130 -0
- package/node_modules/dayjs/esm/plugin/timezone/index.d.ts +20 -0
- package/node_modules/dayjs/esm/plugin/timezone/index.js +205 -0
- package/node_modules/dayjs/esm/plugin/toArray/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/toArray/index.js +7 -0
- package/node_modules/dayjs/esm/plugin/toObject/index.d.ts +20 -0
- package/node_modules/dayjs/esm/plugin/toObject/index.js +15 -0
- package/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts +8 -0
- package/node_modules/dayjs/esm/plugin/updateLocale/index.js +18 -0
- package/node_modules/dayjs/esm/plugin/utc/index.d.ts +19 -0
- package/node_modules/dayjs/esm/plugin/utc/index.js +188 -0
- package/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts +12 -0
- package/node_modules/dayjs/esm/plugin/weekOfYear/index.js +44 -0
- package/node_modules/dayjs/esm/plugin/weekYear/index.d.ts +10 -0
- package/node_modules/dayjs/esm/plugin/weekYear/index.js +19 -0
- package/node_modules/dayjs/esm/plugin/weekday/index.d.ts +12 -0
- package/node_modules/dayjs/esm/plugin/weekday/index.js +15 -0
- package/node_modules/dayjs/esm/utils.js +58 -0
- package/node_modules/dayjs/index.d.ts +429 -0
- package/node_modules/dayjs/locale/af.js +1 -0
- package/node_modules/dayjs/locale/am.js +1 -0
- package/node_modules/dayjs/locale/ar-dz.js +1 -0
- package/node_modules/dayjs/locale/ar-iq.js +1 -0
- package/node_modules/dayjs/locale/ar-kw.js +1 -0
- package/node_modules/dayjs/locale/ar-ly.js +1 -0
- package/node_modules/dayjs/locale/ar-ma.js +1 -0
- package/node_modules/dayjs/locale/ar-sa.js +1 -0
- package/node_modules/dayjs/locale/ar-tn.js +1 -0
- package/node_modules/dayjs/locale/ar.js +1 -0
- package/node_modules/dayjs/locale/az.js +1 -0
- package/node_modules/dayjs/locale/be.js +1 -0
- package/node_modules/dayjs/locale/bg.js +1 -0
- package/node_modules/dayjs/locale/bi.js +1 -0
- package/node_modules/dayjs/locale/bm.js +1 -0
- package/node_modules/dayjs/locale/bn-bd.js +1 -0
- package/node_modules/dayjs/locale/bn.js +1 -0
- package/node_modules/dayjs/locale/bo.js +1 -0
- package/node_modules/dayjs/locale/br.js +1 -0
- package/node_modules/dayjs/locale/bs.js +1 -0
- package/node_modules/dayjs/locale/ca.js +1 -0
- package/node_modules/dayjs/locale/cs.js +1 -0
- package/node_modules/dayjs/locale/cv.js +1 -0
- package/node_modules/dayjs/locale/cy.js +1 -0
- package/node_modules/dayjs/locale/da.js +1 -0
- package/node_modules/dayjs/locale/de-at.js +1 -0
- package/node_modules/dayjs/locale/de-ch.js +1 -0
- package/node_modules/dayjs/locale/de.js +1 -0
- package/node_modules/dayjs/locale/dv.js +1 -0
- package/node_modules/dayjs/locale/el.js +1 -0
- package/node_modules/dayjs/locale/en-au.js +1 -0
- package/node_modules/dayjs/locale/en-ca.js +1 -0
- package/node_modules/dayjs/locale/en-gb.js +1 -0
- package/node_modules/dayjs/locale/en-ie.js +1 -0
- package/node_modules/dayjs/locale/en-il.js +1 -0
- package/node_modules/dayjs/locale/en-in.js +1 -0
- package/node_modules/dayjs/locale/en-nz.js +1 -0
- package/node_modules/dayjs/locale/en-sg.js +1 -0
- package/node_modules/dayjs/locale/en-tt.js +1 -0
- package/node_modules/dayjs/locale/en.js +1 -0
- package/node_modules/dayjs/locale/eo.js +1 -0
- package/node_modules/dayjs/locale/es-do.js +1 -0
- package/node_modules/dayjs/locale/es-mx.js +1 -0
- package/node_modules/dayjs/locale/es-pr.js +1 -0
- package/node_modules/dayjs/locale/es-us.js +1 -0
- package/node_modules/dayjs/locale/es.js +1 -0
- package/node_modules/dayjs/locale/et.js +1 -0
- package/node_modules/dayjs/locale/eu.js +1 -0
- package/node_modules/dayjs/locale/fa.js +1 -0
- package/node_modules/dayjs/locale/fi.js +1 -0
- package/node_modules/dayjs/locale/fo.js +1 -0
- package/node_modules/dayjs/locale/fr-ca.js +1 -0
- package/node_modules/dayjs/locale/fr-ch.js +1 -0
- package/node_modules/dayjs/locale/fr.js +1 -0
- package/node_modules/dayjs/locale/fy.js +1 -0
- package/node_modules/dayjs/locale/ga.js +1 -0
- package/node_modules/dayjs/locale/gd.js +1 -0
- package/node_modules/dayjs/locale/gl.js +1 -0
- package/node_modules/dayjs/locale/gom-latn.js +1 -0
- package/node_modules/dayjs/locale/gu.js +1 -0
- package/node_modules/dayjs/locale/he.js +1 -0
- package/node_modules/dayjs/locale/hi.js +1 -0
- package/node_modules/dayjs/locale/hr.js +1 -0
- package/node_modules/dayjs/locale/ht.js +1 -0
- package/node_modules/dayjs/locale/hu.js +1 -0
- package/node_modules/dayjs/locale/hy-am.js +1 -0
- package/node_modules/dayjs/locale/id.js +1 -0
- package/node_modules/dayjs/locale/index.d.ts +11 -0
- package/node_modules/dayjs/locale/is.js +1 -0
- package/node_modules/dayjs/locale/it-ch.js +1 -0
- package/node_modules/dayjs/locale/it.js +1 -0
- package/node_modules/dayjs/locale/ja.js +1 -0
- package/node_modules/dayjs/locale/jv.js +1 -0
- package/node_modules/dayjs/locale/ka.js +1 -0
- package/node_modules/dayjs/locale/kk.js +1 -0
- package/node_modules/dayjs/locale/km.js +1 -0
- package/node_modules/dayjs/locale/kn.js +1 -0
- package/node_modules/dayjs/locale/ko.js +1 -0
- package/node_modules/dayjs/locale/ku.js +1 -0
- package/node_modules/dayjs/locale/ky.js +1 -0
- package/node_modules/dayjs/locale/lb.js +1 -0
- package/node_modules/dayjs/locale/lo.js +1 -0
- package/node_modules/dayjs/locale/lt.js +1 -0
- package/node_modules/dayjs/locale/lv.js +1 -0
- package/node_modules/dayjs/locale/me.js +1 -0
- package/node_modules/dayjs/locale/mi.js +1 -0
- package/node_modules/dayjs/locale/mk.js +1 -0
- package/node_modules/dayjs/locale/ml.js +1 -0
- package/node_modules/dayjs/locale/mn.js +1 -0
- package/node_modules/dayjs/locale/mr.js +1 -0
- package/node_modules/dayjs/locale/ms-my.js +1 -0
- package/node_modules/dayjs/locale/ms.js +1 -0
- package/node_modules/dayjs/locale/mt.js +1 -0
- package/node_modules/dayjs/locale/my.js +1 -0
- package/node_modules/dayjs/locale/nb.js +1 -0
- package/node_modules/dayjs/locale/ne.js +1 -0
- package/node_modules/dayjs/locale/nl-be.js +1 -0
- package/node_modules/dayjs/locale/nl.js +1 -0
- package/node_modules/dayjs/locale/nn.js +1 -0
- package/node_modules/dayjs/locale/oc-lnc.js +1 -0
- package/node_modules/dayjs/locale/pa-in.js +1 -0
- package/node_modules/dayjs/locale/pl.js +1 -0
- package/node_modules/dayjs/locale/pt-br.js +1 -0
- package/node_modules/dayjs/locale/pt.js +1 -0
- package/node_modules/dayjs/locale/rn.js +1 -0
- package/node_modules/dayjs/locale/ro.js +1 -0
- package/node_modules/dayjs/locale/ru.js +1 -0
- package/node_modules/dayjs/locale/rw.js +1 -0
- package/node_modules/dayjs/locale/sd.js +1 -0
- package/node_modules/dayjs/locale/se.js +1 -0
- package/node_modules/dayjs/locale/si.js +1 -0
- package/node_modules/dayjs/locale/sk.js +1 -0
- package/node_modules/dayjs/locale/sl.js +1 -0
- package/node_modules/dayjs/locale/sq.js +1 -0
- package/node_modules/dayjs/locale/sr-cyrl.js +1 -0
- package/node_modules/dayjs/locale/sr.js +1 -0
- package/node_modules/dayjs/locale/ss.js +1 -0
- package/node_modules/dayjs/locale/sv-fi.js +1 -0
- package/node_modules/dayjs/locale/sv.js +1 -0
- package/node_modules/dayjs/locale/sw.js +1 -0
- package/node_modules/dayjs/locale/ta.js +1 -0
- package/node_modules/dayjs/locale/te.js +1 -0
- package/node_modules/dayjs/locale/tet.js +1 -0
- package/node_modules/dayjs/locale/tg.js +1 -0
- package/node_modules/dayjs/locale/th.js +1 -0
- package/node_modules/dayjs/locale/tk.js +1 -0
- package/node_modules/dayjs/locale/tl-ph.js +1 -0
- package/node_modules/dayjs/locale/tlh.js +1 -0
- package/node_modules/dayjs/locale/tr.js +1 -0
- package/node_modules/dayjs/locale/types.d.ts +33 -0
- package/node_modules/dayjs/locale/tzl.js +1 -0
- package/node_modules/dayjs/locale/tzm-latn.js +1 -0
- package/node_modules/dayjs/locale/tzm.js +1 -0
- package/node_modules/dayjs/locale/ug-cn.js +1 -0
- package/node_modules/dayjs/locale/uk.js +1 -0
- package/node_modules/dayjs/locale/ur.js +1 -0
- package/node_modules/dayjs/locale/uz-latn.js +1 -0
- package/node_modules/dayjs/locale/uz.js +1 -0
- package/node_modules/dayjs/locale/vi.js +1 -0
- package/node_modules/dayjs/locale/x-pseudo.js +1 -0
- package/node_modules/dayjs/locale/yo.js +1 -0
- package/node_modules/dayjs/locale/zh-cn.js +1 -0
- package/node_modules/dayjs/locale/zh-hk.js +1 -0
- package/node_modules/dayjs/locale/zh-tw.js +1 -0
- package/node_modules/dayjs/locale/zh.js +1 -0
- package/node_modules/dayjs/locale.json +1 -0
- package/node_modules/dayjs/package.json +86 -0
- package/node_modules/dayjs/plugin/advancedFormat.d.ts +4 -0
- package/node_modules/dayjs/plugin/advancedFormat.js +1 -0
- package/node_modules/dayjs/plugin/arraySupport.d.ts +10 -0
- package/node_modules/dayjs/plugin/arraySupport.js +1 -0
- package/node_modules/dayjs/plugin/badMutable.d.ts +4 -0
- package/node_modules/dayjs/plugin/badMutable.js +1 -0
- package/node_modules/dayjs/plugin/bigIntSupport.d.ts +11 -0
- package/node_modules/dayjs/plugin/bigIntSupport.js +1 -0
- package/node_modules/dayjs/plugin/buddhistEra.d.ts +4 -0
- package/node_modules/dayjs/plugin/buddhistEra.js +1 -0
- package/node_modules/dayjs/plugin/calendar.d.ts +10 -0
- package/node_modules/dayjs/plugin/calendar.js +1 -0
- package/node_modules/dayjs/plugin/customParseFormat.d.ts +8 -0
- package/node_modules/dayjs/plugin/customParseFormat.js +1 -0
- package/node_modules/dayjs/plugin/dayOfYear.d.ts +11 -0
- package/node_modules/dayjs/plugin/dayOfYear.js +1 -0
- package/node_modules/dayjs/plugin/devHelper.d.ts +4 -0
- package/node_modules/dayjs/plugin/devHelper.js +1 -0
- package/node_modules/dayjs/plugin/duration.d.ts +88 -0
- package/node_modules/dayjs/plugin/duration.js +1 -0
- package/node_modules/dayjs/plugin/isBetween.d.ts +10 -0
- package/node_modules/dayjs/plugin/isBetween.js +1 -0
- package/node_modules/dayjs/plugin/isLeapYear.d.ts +10 -0
- package/node_modules/dayjs/plugin/isLeapYear.js +1 -0
- package/node_modules/dayjs/plugin/isMoment.d.ts +10 -0
- package/node_modules/dayjs/plugin/isMoment.js +1 -0
- package/node_modules/dayjs/plugin/isSameOrAfter.d.ts +10 -0
- package/node_modules/dayjs/plugin/isSameOrAfter.js +1 -0
- package/node_modules/dayjs/plugin/isSameOrBefore.d.ts +10 -0
- package/node_modules/dayjs/plugin/isSameOrBefore.js +1 -0
- package/node_modules/dayjs/plugin/isToday.d.ts +10 -0
- package/node_modules/dayjs/plugin/isToday.js +1 -0
- package/node_modules/dayjs/plugin/isTomorrow.d.ts +10 -0
- package/node_modules/dayjs/plugin/isTomorrow.js +1 -0
- package/node_modules/dayjs/plugin/isYesterday.d.ts +10 -0
- package/node_modules/dayjs/plugin/isYesterday.js +1 -0
- package/node_modules/dayjs/plugin/isoWeek.d.ts +27 -0
- package/node_modules/dayjs/plugin/isoWeek.js +1 -0
- package/node_modules/dayjs/plugin/isoWeeksInYear.d.ts +10 -0
- package/node_modules/dayjs/plugin/isoWeeksInYear.js +1 -0
- package/node_modules/dayjs/plugin/localeData.d.ts +44 -0
- package/node_modules/dayjs/plugin/localeData.js +1 -0
- package/node_modules/dayjs/plugin/localizedFormat.d.ts +4 -0
- package/node_modules/dayjs/plugin/localizedFormat.js +1 -0
- package/node_modules/dayjs/plugin/minMax.d.ts +22 -0
- package/node_modules/dayjs/plugin/minMax.js +1 -0
- package/node_modules/dayjs/plugin/negativeYear.d.ts +4 -0
- package/node_modules/dayjs/plugin/negativeYear.js +1 -0
- package/node_modules/dayjs/plugin/objectSupport.d.ts +48 -0
- package/node_modules/dayjs/plugin/objectSupport.js +1 -0
- package/node_modules/dayjs/plugin/pluralGetSet.d.ts +44 -0
- package/node_modules/dayjs/plugin/pluralGetSet.js +1 -0
- package/node_modules/dayjs/plugin/preParsePostFormat.d.ts +4 -0
- package/node_modules/dayjs/plugin/preParsePostFormat.js +1 -0
- package/node_modules/dayjs/plugin/quarterOfYear.d.ts +26 -0
- package/node_modules/dayjs/plugin/quarterOfYear.js +1 -0
- package/node_modules/dayjs/plugin/relativeTime.d.ts +24 -0
- package/node_modules/dayjs/plugin/relativeTime.js +1 -0
- package/node_modules/dayjs/plugin/timezone.d.ts +20 -0
- package/node_modules/dayjs/plugin/timezone.js +1 -0
- package/node_modules/dayjs/plugin/toArray.d.ts +10 -0
- package/node_modules/dayjs/plugin/toArray.js +1 -0
- package/node_modules/dayjs/plugin/toObject.d.ts +20 -0
- package/node_modules/dayjs/plugin/toObject.js +1 -0
- package/node_modules/dayjs/plugin/updateLocale.d.ts +8 -0
- package/node_modules/dayjs/plugin/updateLocale.js +1 -0
- package/node_modules/dayjs/plugin/utc.d.ts +19 -0
- package/node_modules/dayjs/plugin/utc.js +1 -0
- package/node_modules/dayjs/plugin/weekOfYear.d.ts +12 -0
- package/node_modules/dayjs/plugin/weekOfYear.js +1 -0
- package/node_modules/dayjs/plugin/weekYear.d.ts +10 -0
- package/node_modules/dayjs/plugin/weekYear.js +1 -0
- package/node_modules/dayjs/plugin/weekday.d.ts +12 -0
- package/node_modules/dayjs/plugin/weekday.js +1 -0
- package/node_modules/deepmerge/.editorconfig +7 -0
- package/node_modules/deepmerge/.eslintcache +1 -0
- package/node_modules/deepmerge/changelog.md +167 -0
- package/node_modules/deepmerge/dist/cjs.js +133 -0
- package/node_modules/deepmerge/dist/umd.js +139 -0
- package/node_modules/deepmerge/index.d.ts +20 -0
- package/node_modules/deepmerge/index.js +106 -0
- package/node_modules/deepmerge/license.txt +21 -0
- package/node_modules/deepmerge/package.json +42 -0
- package/node_modules/deepmerge/readme.md +264 -0
- package/node_modules/deepmerge/rollup.config.js +22 -0
- package/node_modules/dom-serializer/LICENSE +7 -0
- package/node_modules/dom-serializer/README.md +115 -0
- package/node_modules/dom-serializer/dist/foreign-names.d.ts +11 -0
- package/node_modules/dom-serializer/dist/foreign-names.d.ts.map +1 -0
- package/node_modules/dom-serializer/dist/foreign-names.js +15 -0
- package/node_modules/dom-serializer/dist/foreign-names.js.map +1 -0
- package/node_modules/dom-serializer/dist/index.d.ts +72 -0
- package/node_modules/dom-serializer/dist/index.d.ts.map +1 -0
- package/node_modules/dom-serializer/dist/index.js +173 -0
- package/node_modules/dom-serializer/dist/index.js.map +1 -0
- package/node_modules/dom-serializer/package.json +69 -0
- package/node_modules/dom-serializer/src/foreign-names.ts +19 -0
- package/node_modules/dom-serializer/src/index.ts +315 -0
- package/node_modules/domelementtype/LICENSE +11 -0
- package/node_modules/domelementtype/dist/index.d.ts +48 -0
- package/node_modules/domelementtype/dist/index.d.ts.map +1 -0
- package/node_modules/domelementtype/dist/index.js +60 -0
- package/node_modules/domelementtype/package.json +59 -0
- package/node_modules/domelementtype/readme.md +1 -0
- package/node_modules/domhandler/LICENSE +11 -0
- package/node_modules/domhandler/dist/index.d.ts +79 -0
- package/node_modules/domhandler/dist/index.d.ts.map +1 -0
- package/node_modules/domhandler/dist/index.js +155 -0
- package/node_modules/domhandler/dist/node.d.ts +264 -0
- package/node_modules/domhandler/dist/node.d.ts.map +1 -0
- package/node_modules/domhandler/dist/node.js +359 -0
- package/node_modules/domhandler/package.json +65 -0
- package/node_modules/domhandler/readme.md +86 -0
- package/node_modules/domutils/LICENSE +11 -0
- package/node_modules/domutils/dist/feeds.d.ts +71 -0
- package/node_modules/domutils/dist/feeds.d.ts.map +1 -0
- package/node_modules/domutils/dist/feeds.js +180 -0
- package/node_modules/domutils/dist/feeds.js.map +1 -0
- package/node_modules/domutils/dist/helpers.d.ts +59 -0
- package/node_modules/domutils/dist/helpers.d.ts.map +1 -0
- package/node_modules/domutils/dist/helpers.js +136 -0
- package/node_modules/domutils/dist/helpers.js.map +1 -0
- package/node_modules/domutils/dist/index.d.ts +8 -0
- package/node_modules/domutils/dist/index.d.ts.map +1 -0
- package/node_modules/domutils/dist/index.js +8 -0
- package/node_modules/domutils/dist/index.js.map +1 -0
- package/node_modules/domutils/dist/legacy.d.ts +79 -0
- package/node_modules/domutils/dist/legacy.d.ts.map +1 -0
- package/node_modules/domutils/dist/legacy.js +152 -0
- package/node_modules/domutils/dist/legacy.js.map +1 -0
- package/node_modules/domutils/dist/manipulation.d.ts +49 -0
- package/node_modules/domutils/dist/manipulation.d.ts.map +1 -0
- package/node_modules/domutils/dist/manipulation.js +138 -0
- package/node_modules/domutils/dist/manipulation.js.map +1 -0
- package/node_modules/domutils/dist/querying.d.ts +54 -0
- package/node_modules/domutils/dist/querying.d.ts.map +1 -0
- package/node_modules/domutils/dist/querying.js +129 -0
- package/node_modules/domutils/dist/querying.js.map +1 -0
- package/node_modules/domutils/dist/stringify.d.ts +46 -0
- package/node_modules/domutils/dist/stringify.d.ts.map +1 -0
- package/node_modules/domutils/dist/stringify.js +81 -0
- package/node_modules/domutils/dist/stringify.js.map +1 -0
- package/node_modules/domutils/dist/traversal.d.ts +74 -0
- package/node_modules/domutils/dist/traversal.d.ts.map +1 -0
- package/node_modules/domutils/dist/traversal.js +105 -0
- package/node_modules/domutils/dist/traversal.js.map +1 -0
- package/node_modules/domutils/package.json +69 -0
- package/node_modules/domutils/readme.md +25 -0
- package/node_modules/domutils/src/__snapshots__/feeds.spec.ts.snap +103 -0
- package/node_modules/domutils/src/feeds.ts +301 -0
- package/node_modules/domutils/src/helpers.ts +154 -0
- package/node_modules/domutils/src/index.ts +7 -0
- package/node_modules/domutils/src/legacy.ts +224 -0
- package/node_modules/domutils/src/manipulation.ts +156 -0
- package/node_modules/domutils/src/querying.ts +172 -0
- package/node_modules/domutils/src/stringify.ts +90 -0
- package/node_modules/domutils/src/traversal.ts +132 -0
- package/node_modules/entities/LICENSE +11 -0
- package/node_modules/entities/dist/decode-codepoint.d.ts +28 -0
- package/node_modules/entities/dist/decode-codepoint.d.ts.map +1 -0
- package/node_modules/entities/dist/decode-codepoint.js +61 -0
- package/node_modules/entities/dist/decode-codepoint.js.map +1 -0
- package/node_modules/entities/dist/decode.d.ts +227 -0
- package/node_modules/entities/dist/decode.d.ts.map +1 -0
- package/node_modules/entities/dist/decode.js +1132 -0
- package/node_modules/entities/dist/decode.js.map +1 -0
- package/node_modules/entities/dist/encode.d.ts +26 -0
- package/node_modules/entities/dist/encode.d.ts.map +1 -0
- package/node_modules/entities/dist/encode.js +295 -0
- package/node_modules/entities/dist/encode.js.map +1 -0
- package/node_modules/entities/dist/escape.d.ts +60 -0
- package/node_modules/entities/dist/escape.d.ts.map +1 -0
- package/node_modules/entities/dist/escape.js +172 -0
- package/node_modules/entities/dist/escape.js.map +1 -0
- package/node_modules/entities/dist/generated/decode-data-html.d.ts +3 -0
- package/node_modules/entities/dist/generated/decode-data-html.d.ts.map +1 -0
- package/node_modules/entities/dist/generated/decode-data-html.js +5 -0
- package/node_modules/entities/dist/generated/decode-data-html.js.map +1 -0
- package/node_modules/entities/dist/generated/decode-data-xml.d.ts +3 -0
- package/node_modules/entities/dist/generated/decode-data-xml.d.ts.map +1 -0
- package/node_modules/entities/dist/generated/decode-data-xml.js +7 -0
- package/node_modules/entities/dist/generated/decode-data-xml.js.map +1 -0
- package/node_modules/entities/dist/generated/encode-html.d.ts +3 -0
- package/node_modules/entities/dist/generated/encode-html.d.ts.map +1 -0
- package/node_modules/entities/dist/generated/encode-html.js +3 -0
- package/node_modules/entities/dist/generated/encode-html.js.map +1 -0
- package/node_modules/entities/dist/index.d.ts +89 -0
- package/node_modules/entities/dist/index.d.ts.map +1 -0
- package/node_modules/entities/dist/index.js +87 -0
- package/node_modules/entities/dist/index.js.map +1 -0
- package/node_modules/entities/dist/internal/bin-trie-flags.d.ts +48 -0
- package/node_modules/entities/dist/internal/bin-trie-flags.d.ts.map +1 -0
- package/node_modules/entities/dist/internal/bin-trie-flags.js +49 -0
- package/node_modules/entities/dist/internal/bin-trie-flags.js.map +1 -0
- package/node_modules/entities/dist/internal/decode-shared.d.ts +38 -0
- package/node_modules/entities/dist/internal/decode-shared.d.ts.map +1 -0
- package/node_modules/entities/dist/internal/decode-shared.js +195 -0
- package/node_modules/entities/dist/internal/decode-shared.js.map +1 -0
- package/node_modules/entities/package.json +83 -0
- package/node_modules/entities/readme.md +131 -0
- package/node_modules/entities/src/decode-codepoint.ts +69 -0
- package/node_modules/entities/src/decode.ts +1368 -0
- package/node_modules/entities/src/encode.ts +337 -0
- package/node_modules/entities/src/escape.ts +187 -0
- package/node_modules/entities/src/generated/decode-data-html.ts +12 -0
- package/node_modules/entities/src/generated/decode-data-xml.ts +7 -0
- package/node_modules/entities/src/generated/encode-html.ts +3 -0
- package/node_modules/entities/src/index.ts +160 -0
- package/node_modules/entities/src/internal/bin-trie-flags.ts +47 -0
- package/node_modules/entities/src/internal/decode-shared.ts +209 -0
- package/node_modules/escape-string-regexp/index.d.ts +18 -0
- package/node_modules/escape-string-regexp/index.js +13 -0
- package/node_modules/escape-string-regexp/license +9 -0
- package/node_modules/escape-string-regexp/package.json +38 -0
- package/node_modules/escape-string-regexp/readme.md +34 -0
- package/node_modules/express-rate-limit/dist/index.cjs +9 -7
- package/node_modules/express-rate-limit/dist/index.mjs +9 -7
- package/node_modules/express-rate-limit/package.json +9 -9
- package/node_modules/htmlparser2/LICENSE +18 -0
- package/node_modules/htmlparser2/README.md +257 -0
- package/node_modules/htmlparser2/dist/Parser.d.ts +257 -0
- package/node_modules/htmlparser2/dist/Parser.d.ts.map +1 -0
- package/node_modules/htmlparser2/dist/Parser.js +644 -0
- package/node_modules/htmlparser2/dist/Parser.js.map +1 -0
- package/node_modules/htmlparser2/dist/Tokenizer.d.ts +194 -0
- package/node_modules/htmlparser2/dist/Tokenizer.d.ts.map +1 -0
- package/node_modules/htmlparser2/dist/Tokenizer.js +1056 -0
- package/node_modules/htmlparser2/dist/Tokenizer.js.map +1 -0
- package/node_modules/htmlparser2/dist/WebWritableStream.d.ts +24 -0
- package/node_modules/htmlparser2/dist/WebWritableStream.d.ts.map +1 -0
- package/node_modules/htmlparser2/dist/WebWritableStream.js +44 -0
- package/node_modules/htmlparser2/dist/WebWritableStream.js.map +1 -0
- package/node_modules/htmlparser2/dist/WritableStream.d.ts +14 -0
- package/node_modules/htmlparser2/dist/WritableStream.d.ts.map +1 -0
- package/node_modules/htmlparser2/dist/WritableStream.js +32 -0
- package/node_modules/htmlparser2/dist/WritableStream.js.map +1 -0
- package/node_modules/htmlparser2/dist/index.d.ts +34 -0
- package/node_modules/htmlparser2/dist/index.d.ts.map +1 -0
- package/node_modules/htmlparser2/dist/index.js +46 -0
- package/node_modules/htmlparser2/dist/index.js.map +1 -0
- package/node_modules/htmlparser2/package.json +86 -0
- package/node_modules/htmlparser2/src/Parser.ts +823 -0
- package/node_modules/htmlparser2/src/Tokenizer.ts +1150 -0
- package/node_modules/htmlparser2/src/WebWritableStream.ts +47 -0
- package/node_modules/htmlparser2/src/WritableStream.ts +42 -0
- package/node_modules/htmlparser2/src/index.ts +86 -0
- package/node_modules/launder/.travis.yml +4 -0
- package/node_modules/launder/CHANGELOG.md +80 -0
- package/node_modules/launder/LICENSE.md +7 -0
- package/node_modules/launder/README.md +177 -0
- package/node_modules/launder/eslint.config.js +6 -0
- package/node_modules/launder/index.js +538 -0
- package/node_modules/launder/logos/logo-box-madefor.png +0 -0
- package/node_modules/launder/package.json +38 -0
- package/node_modules/launder/test/test.js +775 -0
- package/node_modules/nanoid/LICENSE +20 -0
- package/node_modules/nanoid/README.md +39 -0
- package/node_modules/nanoid/async/index.browser.cjs +43 -0
- package/node_modules/nanoid/async/index.browser.js +43 -0
- package/node_modules/nanoid/async/index.cjs +47 -0
- package/node_modules/nanoid/async/index.d.cts +56 -0
- package/node_modules/nanoid/async/index.d.ts +56 -0
- package/node_modules/nanoid/async/index.js +47 -0
- package/node_modules/nanoid/async/index.native.js +38 -0
- package/node_modules/nanoid/async/package.json +12 -0
- package/node_modules/nanoid/bin/nanoid.cjs +55 -0
- package/node_modules/nanoid/index.browser.cjs +45 -0
- package/node_modules/nanoid/index.browser.js +45 -0
- package/node_modules/nanoid/index.cjs +63 -0
- package/node_modules/nanoid/index.d.cts +91 -0
- package/node_modules/nanoid/index.d.ts +91 -0
- package/node_modules/nanoid/index.js +63 -0
- package/node_modules/nanoid/nanoid.js +1 -0
- package/node_modules/nanoid/non-secure/index.cjs +24 -0
- package/node_modules/nanoid/non-secure/index.d.ts +33 -0
- package/node_modules/nanoid/non-secure/index.js +24 -0
- package/node_modules/nanoid/non-secure/package.json +6 -0
- package/node_modules/nanoid/package.json +89 -0
- package/node_modules/nanoid/url-alphabet/index.cjs +4 -0
- package/node_modules/nanoid/url-alphabet/index.js +4 -0
- package/node_modules/nanoid/url-alphabet/package.json +6 -0
- package/node_modules/parse-srcset/.jscs.json +83 -0
- package/node_modules/parse-srcset/.jshintrc +15 -0
- package/node_modules/parse-srcset/.npmignore +8 -0
- package/node_modules/parse-srcset/LICENSE +22 -0
- package/node_modules/parse-srcset/README.md +19 -0
- package/node_modules/parse-srcset/package.json +25 -0
- package/node_modules/parse-srcset/src/parse-srcset.js +330 -0
- package/node_modules/parse-srcset/tests/he.js +329 -0
- package/node_modules/parse-srcset/tests/intern.js +74 -0
- package/node_modules/parse-srcset/tests/unit/ps.js +345 -0
- package/node_modules/picocolors/LICENSE +15 -0
- package/node_modules/picocolors/README.md +21 -0
- package/node_modules/picocolors/package.json +25 -0
- package/node_modules/picocolors/picocolors.browser.js +4 -0
- package/node_modules/picocolors/picocolors.d.ts +5 -0
- package/node_modules/picocolors/picocolors.js +75 -0
- package/node_modules/picocolors/types.d.ts +51 -0
- package/node_modules/postcss/LICENSE +20 -0
- package/node_modules/postcss/README.md +27 -0
- package/node_modules/postcss/lib/at-rule.d.ts +139 -0
- package/node_modules/postcss/lib/at-rule.js +25 -0
- package/node_modules/postcss/lib/comment.d.ts +67 -0
- package/node_modules/postcss/lib/comment.js +13 -0
- package/node_modules/postcss/lib/container.d.ts +474 -0
- package/node_modules/postcss/lib/container.js +494 -0
- package/node_modules/postcss/lib/css-syntax-error.d.ts +247 -0
- package/node_modules/postcss/lib/css-syntax-error.js +133 -0
- package/node_modules/postcss/lib/declaration.d.ts +150 -0
- package/node_modules/postcss/lib/declaration.js +24 -0
- package/node_modules/postcss/lib/document.d.ts +68 -0
- package/node_modules/postcss/lib/document.js +33 -0
- package/node_modules/postcss/lib/fromJSON.d.ts +9 -0
- package/node_modules/postcss/lib/fromJSON.js +107 -0
- package/node_modules/postcss/lib/input.d.ts +226 -0
- package/node_modules/postcss/lib/input.js +282 -0
- package/node_modules/postcss/lib/lazy-result.d.ts +189 -0
- package/node_modules/postcss/lib/lazy-result.js +626 -0
- package/node_modules/postcss/lib/list.d.ts +60 -0
- package/node_modules/postcss/lib/list.js +79 -0
- package/node_modules/postcss/lib/map-generator.js +383 -0
- package/node_modules/postcss/lib/no-work-result.d.ts +45 -0
- package/node_modules/postcss/lib/no-work-result.js +137 -0
- package/node_modules/postcss/lib/node.d.ts +555 -0
- package/node_modules/postcss/lib/node.js +494 -0
- package/node_modules/postcss/lib/parse.d.ts +9 -0
- package/node_modules/postcss/lib/parse.js +42 -0
- package/node_modules/postcss/lib/parser.js +626 -0
- package/node_modules/postcss/lib/postcss.d.mts +66 -0
- package/node_modules/postcss/lib/postcss.d.ts +464 -0
- package/node_modules/postcss/lib/postcss.js +101 -0
- package/node_modules/postcss/lib/postcss.mjs +30 -0
- package/node_modules/postcss/lib/previous-map.d.ts +80 -0
- package/node_modules/postcss/lib/previous-map.js +176 -0
- package/node_modules/postcss/lib/processor.d.ts +114 -0
- package/node_modules/postcss/lib/processor.js +67 -0
- package/node_modules/postcss/lib/result.d.ts +204 -0
- package/node_modules/postcss/lib/result.js +42 -0
- package/node_modules/postcss/lib/root.d.ts +86 -0
- package/node_modules/postcss/lib/root.js +76 -0
- package/node_modules/postcss/lib/rule.d.ts +126 -0
- package/node_modules/postcss/lib/rule.js +27 -0
- package/node_modules/postcss/lib/stringifier.d.ts +45 -0
- package/node_modules/postcss/lib/stringifier.js +457 -0
- package/node_modules/postcss/lib/stringify.d.ts +9 -0
- package/node_modules/postcss/lib/stringify.js +69 -0
- package/node_modules/postcss/lib/symbols.js +5 -0
- package/node_modules/postcss/lib/terminal-highlight.js +70 -0
- package/node_modules/postcss/lib/tokenize.js +270 -0
- package/node_modules/postcss/lib/warn-once.js +13 -0
- package/node_modules/postcss/lib/warning.d.ts +146 -0
- package/node_modules/postcss/lib/warning.js +47 -0
- package/node_modules/postcss/package.json +88 -0
- package/node_modules/sanitize-html/LICENSE +7 -0
- package/node_modules/sanitize-html/README.md +877 -0
- package/node_modules/sanitize-html/index.js +1255 -0
- package/node_modules/sanitize-html/package.json +49 -0
- package/node_modules/source-map-js/LICENSE +28 -0
- package/node_modules/source-map-js/README.md +765 -0
- package/node_modules/source-map-js/lib/array-set.js +121 -0
- package/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/node_modules/source-map-js/lib/base64.js +67 -0
- package/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/node_modules/source-map-js/lib/quick-sort.js +141 -0
- package/node_modules/source-map-js/lib/source-map-consumer.d.ts +1 -0
- package/node_modules/source-map-js/lib/source-map-consumer.js +1236 -0
- package/node_modules/source-map-js/lib/source-map-generator.d.ts +1 -0
- package/node_modules/source-map-js/lib/source-map-generator.js +446 -0
- package/node_modules/source-map-js/lib/source-node.d.ts +1 -0
- package/node_modules/source-map-js/lib/source-node.js +420 -0
- package/node_modules/source-map-js/lib/util.js +594 -0
- package/node_modules/source-map-js/package.json +71 -0
- package/node_modules/source-map-js/source-map.d.ts +104 -0
- package/node_modules/source-map-js/source-map.js +8 -0
- package/package.json +5 -1
- package/server.js +3 -0
- package/dist/ui/assets/index-BKgX8_Zh.js +0 -111
package/bin/suveren-gateway.js
CHANGED
|
@@ -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/
|
|
3484
|
+
// src/routes/report.ts
|
|
3435
3485
|
import { Router as Router11 } from "express";
|
|
3436
|
-
function
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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)) :
|
|
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 =
|
|
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) => {
|