@suveren/gateway 0.8.7 → 0.10.0
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/README.md +33 -1
- package/bin/suveren-gateway.js +363 -9
- package/content/integrations/erp.json +184 -0
- package/content/integrations/index.json +2 -1
- package/dist/control-plane/index.mjs +835 -118
- package/dist/mcp-server/http.mjs +876 -193
- package/dist/ui/assets/{index-tzStUGuj.js → index-B1qNl7zo.js} +21 -21
- package/dist/ui/index.html +1 -1
- package/lib/as-pairing.mjs +77 -0
- package/lib/config.d.mts +37 -0
- package/lib/config.mjs +198 -0
- package/node_modules/@hap/core/dist/index.d.mts +33 -2
- package/node_modules/@hap/core/dist/index.d.ts +33 -2
- package/node_modules/@hap/core/dist/index.js +26 -2
- package/node_modules/@hap/core/dist/index.mjs +25 -2
- package/node_modules/@hap/core/package.json +1 -1
- package/node_modules/@hap/core/src/gatekeeper.ts +36 -2
- package/node_modules/@hap/core/src/types.ts +21 -1
- package/node_modules/@hono/node-server/README.md +21 -10
- package/node_modules/@hono/node-server/dist/early-hints.cjs +1 -1
- package/node_modules/@hono/node-server/dist/early-hints.mjs +1 -1
- package/node_modules/@hono/node-server/dist/index.cjs +41 -19
- package/node_modules/@hono/node-server/dist/index.mjs +42 -20
- package/node_modules/@hono/node-server/dist/serve-static.cjs +1 -0
- package/node_modules/@hono/node-server/dist/serve-static.d.cts +2 -1
- package/node_modules/@hono/node-server/dist/serve-static.d.mts +2 -1
- package/node_modules/@hono/node-server/dist/serve-static.mjs +1 -0
- package/node_modules/@hono/node-server/package.json +3 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.d.ts +43 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.js +26 -5
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.d.ts +11 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.js +96 -14
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.js +11 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/demoInMemoryOAuthProvider.d.ts +2 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/demoInMemoryOAuthProvider.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/providers/proxyProvider.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/providers/proxyProvider.js +6 -3
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/providers/proxyProvider.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.d.ts +3 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.js +12 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.d.ts +43 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.js +26 -5
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts +11 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js +96 -14
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.js +11 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/demoInMemoryOAuthProvider.d.ts +2 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/demoInMemoryOAuthProvider.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/providers/proxyProvider.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/providers/proxyProvider.js +6 -3
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/providers/proxyProvider.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.d.ts +3 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js +12 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/package.json +1 -1
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/crypto.d.ts +2 -2
- package/node_modules/@types/node/dgram.d.ts +1 -1
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/hono/dist/_virtual/_rolldown/runtime.js +13 -0
- package/node_modules/hono/dist/adapter/aws-lambda/conninfo.js +42 -23
- package/node_modules/hono/dist/adapter/aws-lambda/handler.js +318 -344
- package/node_modules/hono/dist/adapter/aws-lambda/index.js +2 -8
- package/node_modules/hono/dist/adapter/aws-lambda/types.js +1 -0
- package/node_modules/hono/dist/adapter/bun/conninfo.js +20 -25
- package/node_modules/hono/dist/adapter/bun/index.js +3 -13
- package/node_modules/hono/dist/adapter/bun/serve-static.js +27 -27
- package/node_modules/hono/dist/adapter/bun/server.js +11 -5
- package/node_modules/hono/dist/adapter/bun/ssg.js +25 -15
- package/node_modules/hono/dist/adapter/bun/websocket.js +61 -68
- package/node_modules/hono/dist/adapter/cloudflare-pages/conninfo.js +24 -9
- package/node_modules/hono/dist/adapter/cloudflare-pages/handler.js +59 -62
- package/node_modules/hono/dist/adapter/cloudflare-pages/index.js +2 -8
- package/node_modules/hono/dist/adapter/cloudflare-workers/conninfo.js +7 -9
- package/node_modules/hono/dist/adapter/cloudflare-workers/index.js +3 -8
- package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static-module.js +5 -6
- package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static.js +26 -20
- package/node_modules/hono/dist/adapter/cloudflare-workers/utils.js +21 -34
- package/node_modules/hono/dist/adapter/cloudflare-workers/websocket.js +31 -39
- package/node_modules/hono/dist/adapter/deno/conninfo.js +16 -13
- package/node_modules/hono/dist/adapter/deno/deno.d.js +1 -0
- package/node_modules/hono/dist/adapter/deno/index.js +3 -10
- package/node_modules/hono/dist/adapter/deno/serve-static.js +33 -38
- package/node_modules/hono/dist/adapter/deno/ssg.js +27 -16
- package/node_modules/hono/dist/adapter/deno/websocket.js +30 -30
- package/node_modules/hono/dist/adapter/lambda-edge/conninfo.js +7 -9
- package/node_modules/hono/dist/adapter/lambda-edge/handler.js +102 -101
- package/node_modules/hono/dist/adapter/lambda-edge/index.js +2 -6
- package/node_modules/hono/dist/adapter/netlify/conninfo.js +24 -9
- package/node_modules/hono/dist/adapter/netlify/handler.js +10 -8
- package/node_modules/hono/dist/adapter/netlify/index.js +3 -2
- package/node_modules/hono/dist/adapter/netlify/mod.js +2 -6
- package/node_modules/hono/dist/adapter/service-worker/handler.js +15 -19
- package/node_modules/hono/dist/adapter/service-worker/index.js +23 -7
- package/node_modules/hono/dist/adapter/service-worker/types.js +1 -0
- package/node_modules/hono/dist/adapter/vercel/conninfo.js +7 -10
- package/node_modules/hono/dist/adapter/vercel/handler.js +8 -6
- package/node_modules/hono/dist/adapter/vercel/index.js +2 -6
- package/node_modules/hono/dist/cjs/_virtual/_rolldown/runtime.js +33 -0
- package/node_modules/hono/dist/cjs/adapter/aws-lambda/conninfo.js +42 -44
- package/node_modules/hono/dist/cjs/adapter/aws-lambda/handler.js +326 -373
- package/node_modules/hono/dist/cjs/adapter/aws-lambda/index.js +7 -34
- package/node_modules/hono/dist/cjs/adapter/aws-lambda/types.js +0 -15
- package/node_modules/hono/dist/cjs/adapter/bun/conninfo.js +21 -47
- package/node_modules/hono/dist/cjs/adapter/bun/index.js +14 -45
- package/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +29 -50
- package/node_modules/hono/dist/cjs/adapter/bun/server.js +11 -26
- package/node_modules/hono/dist/cjs/adapter/bun/ssg.js +24 -35
- package/node_modules/hono/dist/cjs/adapter/bun/websocket.js +63 -91
- package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/conninfo.js +25 -31
- package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/handler.js +61 -85
- package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/index.js +7 -34
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/conninfo.js +8 -31
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/index.js +7 -33
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +7 -29
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static.js +27 -42
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/utils.js +21 -55
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/websocket.js +33 -62
- package/node_modules/hono/dist/cjs/adapter/deno/conninfo.js +16 -34
- package/node_modules/hono/dist/cjs/adapter/deno/index.js +10 -38
- package/node_modules/hono/dist/cjs/adapter/deno/serve-static.js +33 -59
- package/node_modules/hono/dist/cjs/adapter/deno/ssg.js +27 -37
- package/node_modules/hono/dist/cjs/adapter/deno/websocket.js +32 -53
- package/node_modules/hono/dist/cjs/adapter/lambda-edge/conninfo.js +8 -31
- package/node_modules/hono/dist/cjs/adapter/lambda-edge/handler.js +102 -130
- package/node_modules/hono/dist/cjs/adapter/lambda-edge/index.js +5 -30
- package/node_modules/hono/dist/cjs/adapter/netlify/conninfo.js +25 -31
- package/node_modules/hono/dist/cjs/adapter/netlify/handler.js +10 -29
- package/node_modules/hono/dist/cjs/adapter/netlify/index.js +5 -21
- package/node_modules/hono/dist/cjs/adapter/netlify/mod.js +5 -30
- package/node_modules/hono/dist/cjs/adapter/service-worker/handler.js +16 -41
- package/node_modules/hono/dist/cjs/adapter/service-worker/index.js +25 -30
- package/node_modules/hono/dist/cjs/adapter/service-worker/types.js +0 -15
- package/node_modules/hono/dist/cjs/adapter/vercel/conninfo.js +8 -32
- package/node_modules/hono/dist/cjs/adapter/vercel/handler.js +8 -27
- package/node_modules/hono/dist/cjs/adapter/vercel/index.js +5 -30
- package/node_modules/hono/dist/cjs/client/client.js +139 -212
- package/node_modules/hono/dist/cjs/client/fetch-result-please.js +62 -80
- package/node_modules/hono/dist/cjs/client/index.js +7 -32
- package/node_modules/hono/dist/cjs/client/types.js +0 -15
- package/node_modules/hono/dist/cjs/client/utils.js +54 -92
- package/node_modules/hono/dist/cjs/compose.js +49 -66
- package/node_modules/hono/dist/cjs/context.js +379 -450
- package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +47 -72
- package/node_modules/hono/dist/cjs/helper/accepts/index.js +3 -27
- package/node_modules/hono/dist/cjs/helper/adapter/index.js +33 -73
- package/node_modules/hono/dist/cjs/helper/conninfo/index.js +0 -15
- package/node_modules/hono/dist/cjs/helper/conninfo/types.js +0 -15
- package/node_modules/hono/dist/cjs/helper/cookie/index.js +75 -116
- package/node_modules/hono/dist/cjs/helper/css/common.js +165 -244
- package/node_modules/hono/dist/cjs/helper/css/index.js +136 -151
- package/node_modules/hono/dist/cjs/helper/dev/index.js +45 -71
- package/node_modules/hono/dist/cjs/helper/factory/index.js +30 -51
- package/node_modules/hono/dist/cjs/helper/html/index.js +32 -62
- package/node_modules/hono/dist/cjs/helper/proxy/index.js +113 -106
- package/node_modules/hono/dist/cjs/helper/route/index.js +123 -66
- package/node_modules/hono/dist/cjs/helper/ssg/index.js +19 -43
- package/node_modules/hono/dist/cjs/helper/ssg/middleware.js +56 -64
- package/node_modules/hono/dist/cjs/helper/ssg/plugins.js +55 -57
- package/node_modules/hono/dist/cjs/helper/ssg/ssg.js +196 -296
- package/node_modules/hono/dist/cjs/helper/ssg/utils.js +47 -90
- package/node_modules/hono/dist/cjs/helper/streaming/index.js +8 -35
- package/node_modules/hono/dist/cjs/helper/streaming/sse.js +53 -85
- package/node_modules/hono/dist/cjs/helper/streaming/stream.js +23 -53
- package/node_modules/hono/dist/cjs/helper/streaming/text.js +10 -32
- package/node_modules/hono/dist/cjs/helper/streaming/utils.js +13 -32
- package/node_modules/hono/dist/cjs/helper/testing/index.js +16 -31
- package/node_modules/hono/dist/cjs/helper/websocket/index.js +51 -76
- package/node_modules/hono/dist/cjs/hono-base.js +345 -403
- package/node_modules/hono/dist/cjs/hono.js +28 -42
- package/node_modules/hono/dist/cjs/http-exception.js +55 -56
- package/node_modules/hono/dist/cjs/index.js +22 -30
- package/node_modules/hono/dist/cjs/jsx/base.js +237 -366
- package/node_modules/hono/dist/cjs/jsx/children.js +16 -41
- package/node_modules/hono/dist/cjs/jsx/components.js +119 -192
- package/node_modules/hono/dist/cjs/jsx/constants.js +15 -42
- package/node_modules/hono/dist/cjs/jsx/context.js +144 -162
- package/node_modules/hono/dist/cjs/jsx/dom/client.js +49 -69
- package/node_modules/hono/dist/cjs/jsx/dom/components.js +23 -52
- package/node_modules/hono/dist/cjs/jsx/dom/context.js +39 -67
- package/node_modules/hono/dist/cjs/jsx/dom/css.js +143 -158
- package/node_modules/hono/dist/cjs/jsx/dom/hooks/index.js +55 -64
- package/node_modules/hono/dist/cjs/jsx/dom/index.js +114 -173
- package/node_modules/hono/dist/cjs/jsx/dom/intrinsic-element/components.js +282 -375
- package/node_modules/hono/dist/cjs/jsx/dom/jsx-dev-runtime.js +14 -49
- package/node_modules/hono/dist/cjs/jsx/dom/jsx-runtime.js +5 -32
- package/node_modules/hono/dist/cjs/jsx/dom/render.js +469 -623
- package/node_modules/hono/dist/cjs/jsx/dom/server.js +37 -64
- package/node_modules/hono/dist/cjs/jsx/dom/utils.js +7 -30
- package/node_modules/hono/dist/cjs/jsx/hooks/index.js +225 -318
- package/node_modules/hono/dist/cjs/jsx/index.js +86 -135
- package/node_modules/hono/dist/cjs/jsx/intrinsic-element/common.js +20 -43
- package/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +117 -168
- package/node_modules/hono/dist/cjs/jsx/intrinsic-elements.js +0 -15
- package/node_modules/hono/dist/cjs/jsx/jsx-dev-runtime.js +14 -39
- package/node_modules/hono/dist/cjs/jsx/jsx-runtime.js +34 -68
- package/node_modules/hono/dist/cjs/jsx/streaming.js +123 -166
- package/node_modules/hono/dist/cjs/jsx/types.js +0 -15
- package/node_modules/hono/dist/cjs/jsx/utils.js +91 -175
- package/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +98 -86
- package/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +92 -109
- package/node_modules/hono/dist/cjs/middleware/body-limit/index.js +66 -72
- package/node_modules/hono/dist/cjs/middleware/cache/index.js +153 -199
- package/node_modules/hono/dist/cjs/middleware/combine/index.js +135 -95
- package/node_modules/hono/dist/cjs/middleware/compress/index.js +73 -88
- package/node_modules/hono/dist/cjs/middleware/context-storage/index.js +49 -41
- package/node_modules/hono/dist/cjs/middleware/cors/index.js +107 -107
- package/node_modules/hono/dist/cjs/middleware/csrf/index.js +101 -72
- package/node_modules/hono/dist/cjs/middleware/etag/digest.js +58 -97
- package/node_modules/hono/dist/cjs/middleware/etag/index.js +71 -91
- package/node_modules/hono/dist/cjs/middleware/ip-restriction/index.js +161 -169
- package/node_modules/hono/dist/cjs/middleware/jsx-renderer/index.js +99 -77
- package/node_modules/hono/dist/cjs/middleware/jwk/index.js +3 -27
- package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +118 -135
- package/node_modules/hono/dist/cjs/middleware/jwt/index.js +9 -38
- package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +120 -141
- package/node_modules/hono/dist/cjs/middleware/language/index.js +7 -35
- package/node_modules/hono/dist/cjs/middleware/language/language.js +184 -182
- package/node_modules/hono/dist/cjs/middleware/logger/index.js +41 -62
- package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +82 -88
- package/node_modules/hono/dist/cjs/middleware/method-override/index.js +101 -102
- package/node_modules/hono/dist/cjs/middleware/powered-by/index.js +23 -30
- package/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +38 -42
- package/node_modules/hono/dist/cjs/middleware/request-id/index.js +3 -27
- package/node_modules/hono/dist/cjs/middleware/request-id/request-id.js +34 -42
- package/node_modules/hono/dist/cjs/middleware/secure-headers/index.js +4 -29
- package/node_modules/hono/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -15
- package/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +142 -174
- package/node_modules/hono/dist/cjs/middleware/serve-static/index.js +56 -93
- package/node_modules/hono/dist/cjs/middleware/serve-static/path.js +15 -38
- package/node_modules/hono/dist/cjs/middleware/timeout/index.js +40 -45
- package/node_modules/hono/dist/cjs/middleware/timing/index.js +7 -35
- package/node_modules/hono/dist/cjs/middleware/timing/timing.js +177 -118
- package/node_modules/hono/dist/cjs/middleware/trailing-slash/index.js +85 -58
- package/node_modules/hono/dist/cjs/preset/quick.js +18 -37
- package/node_modules/hono/dist/cjs/preset/tiny.js +15 -33
- package/node_modules/hono/dist/cjs/request/constants.js +5 -27
- package/node_modules/hono/dist/cjs/request.js +334 -346
- package/node_modules/hono/dist/cjs/router/linear-router/index.js +3 -27
- package/node_modules/hono/dist/cjs/router/linear-router/router.js +95 -143
- package/node_modules/hono/dist/cjs/router/pattern-router/index.js +3 -27
- package/node_modules/hono/dist/cjs/router/pattern-router/router.js +41 -63
- package/node_modules/hono/dist/cjs/router/reg-exp-router/index.js +7 -34
- package/node_modules/hono/dist/cjs/router/reg-exp-router/matcher.js +18 -45
- package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +91 -135
- package/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +92 -161
- package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +98 -147
- package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +73 -89
- package/node_modules/hono/dist/cjs/router/smart-router/index.js +3 -27
- package/node_modules/hono/dist/cjs/router/smart-router/router.js +49 -79
- package/node_modules/hono/dist/cjs/router/trie-router/index.js +3 -27
- package/node_modules/hono/dist/cjs/router/trie-router/node.js +134 -186
- package/node_modules/hono/dist/cjs/router/trie-router/router.js +15 -39
- package/node_modules/hono/dist/cjs/router/utils.js +5 -27
- package/node_modules/hono/dist/cjs/router.js +37 -37
- package/node_modules/hono/dist/cjs/types.js +5 -28
- package/node_modules/hono/dist/cjs/utils/accept.js +177 -225
- package/node_modules/hono/dist/cjs/utils/basic-auth.js +16 -40
- package/node_modules/hono/dist/cjs/utils/body.js +84 -110
- package/node_modules/hono/dist/cjs/utils/buffer.js +43 -91
- package/node_modules/hono/dist/cjs/utils/color.js +35 -44
- package/node_modules/hono/dist/cjs/utils/compress.js +11 -26
- package/node_modules/hono/dist/cjs/utils/concurrent.js +29 -59
- package/node_modules/hono/dist/cjs/utils/constants.js +7 -26
- package/node_modules/hono/dist/cjs/utils/cookie.js +107 -177
- package/node_modules/hono/dist/cjs/utils/crypto.js +30 -61
- package/node_modules/hono/dist/cjs/utils/encode.js +31 -48
- package/node_modules/hono/dist/cjs/utils/filepath.js +23 -54
- package/node_modules/hono/dist/cjs/utils/handler.js +11 -33
- package/node_modules/hono/dist/cjs/utils/headers.js +0 -15
- package/node_modules/hono/dist/cjs/utils/html.js +96 -137
- package/node_modules/hono/dist/cjs/utils/http-status.js +0 -15
- package/node_modules/hono/dist/cjs/utils/ipaddr.js +213 -286
- package/node_modules/hono/dist/cjs/utils/jwt/index.js +14 -27
- package/node_modules/hono/dist/cjs/utils/jwt/jwa.js +25 -42
- package/node_modules/hono/dist/cjs/utils/jwt/jws.js +119 -199
- package/node_modules/hono/dist/cjs/utils/jwt/jwt.js +122 -206
- package/node_modules/hono/dist/cjs/utils/jwt/types.js +122 -159
- package/node_modules/hono/dist/cjs/utils/jwt/utf8.js +9 -28
- package/node_modules/hono/dist/cjs/utils/mime.js +75 -101
- package/node_modules/hono/dist/cjs/utils/stream.js +88 -111
- package/node_modules/hono/dist/cjs/utils/types.js +0 -15
- package/node_modules/hono/dist/cjs/utils/url.js +185 -234
- package/node_modules/hono/dist/cjs/validator/index.js +3 -27
- package/node_modules/hono/dist/cjs/validator/utils.js +0 -15
- package/node_modules/hono/dist/cjs/validator/validator.js +60 -103
- package/node_modules/hono/dist/client/client.js +138 -197
- package/node_modules/hono/dist/client/fetch-result-please.js +59 -56
- package/node_modules/hono/dist/client/index.js +3 -7
- package/node_modules/hono/dist/client/types.js +1 -0
- package/node_modules/hono/dist/client/utils.js +51 -68
- package/node_modules/hono/dist/compose.js +49 -45
- package/node_modules/hono/dist/context.js +376 -426
- package/node_modules/hono/dist/helper/accepts/accepts.js +47 -51
- package/node_modules/hono/dist/helper/accepts/index.js +1 -4
- package/node_modules/hono/dist/helper/adapter/index.js +33 -52
- package/node_modules/hono/dist/helper/conninfo/index.js +1 -0
- package/node_modules/hono/dist/helper/conninfo/types.js +1 -0
- package/node_modules/hono/dist/helper/cookie/index.js +74 -94
- package/node_modules/hono/dist/helper/css/common.js +167 -225
- package/node_modules/hono/dist/helper/css/index.js +132 -137
- package/node_modules/hono/dist/helper/dev/index.js +44 -49
- package/node_modules/hono/dist/helper/factory/index.js +27 -27
- package/node_modules/hono/dist/helper/html/index.js +30 -39
- package/node_modules/hono/dist/helper/proxy/index.js +116 -88
- package/node_modules/hono/dist/helper/route/index.js +121 -43
- package/node_modules/hono/dist/helper/ssg/index.js +3 -18
- package/node_modules/hono/dist/helper/ssg/middleware.js +53 -40
- package/node_modules/hono/dist/helper/ssg/plugins.js +55 -36
- package/node_modules/hono/dist/helper/ssg/ssg.js +198 -283
- package/node_modules/hono/dist/helper/ssg/utils.js +53 -75
- package/node_modules/hono/dist/helper/streaming/index.js +2 -8
- package/node_modules/hono/dist/helper/streaming/sse.js +50 -61
- package/node_modules/hono/dist/helper/streaming/stream.js +22 -31
- package/node_modules/hono/dist/helper/streaming/text.js +9 -10
- package/node_modules/hono/dist/helper/streaming/utils.js +9 -12
- package/node_modules/hono/dist/helper/testing/index.js +16 -10
- package/node_modules/hono/dist/helper/websocket/index.js +49 -53
- package/node_modules/hono/dist/hono-base.js +342 -379
- package/node_modules/hono/dist/hono.js +27 -20
- package/node_modules/hono/dist/http-exception.js +53 -33
- package/node_modules/hono/dist/index.js +19 -6
- package/node_modules/hono/dist/jsx/base.js +231 -340
- package/node_modules/hono/dist/jsx/children.js +16 -20
- package/node_modules/hono/dist/jsx/components.js +118 -170
- package/node_modules/hono/dist/jsx/constants.js +9 -15
- package/node_modules/hono/dist/jsx/context.js +153 -150
- package/node_modules/hono/dist/jsx/dom/client.js +45 -48
- package/node_modules/hono/dist/jsx/dom/components.js +21 -29
- package/node_modules/hono/dist/jsx/dom/context.js +37 -44
- package/node_modules/hono/dist/jsx/dom/css.js +142 -147
- package/node_modules/hono/dist/jsx/dom/hooks/index.js +52 -40
- package/node_modules/hono/dist/jsx/dom/index.js +71 -134
- package/node_modules/hono/dist/jsx/dom/intrinsic-element/components.js +275 -359
- package/node_modules/hono/dist/jsx/dom/jsx-dev-runtime.js +14 -18
- package/node_modules/hono/dist/jsx/dom/jsx-runtime.js +2 -8
- package/node_modules/hono/dist/jsx/dom/render.js +492 -631
- package/node_modules/hono/dist/jsx/dom/server.js +32 -32
- package/node_modules/hono/dist/jsx/dom/utils.js +6 -8
- package/node_modules/hono/dist/jsx/hooks/index.js +236 -308
- package/node_modules/hono/dist/jsx/index.js +45 -98
- package/node_modules/hono/dist/jsx/intrinsic-element/common.js +20 -22
- package/node_modules/hono/dist/jsx/intrinsic-element/components.js +113 -154
- package/node_modules/hono/dist/jsx/intrinsic-elements.js +1 -0
- package/node_modules/hono/dist/jsx/jsx-dev-runtime.js +12 -16
- package/node_modules/hono/dist/jsx/jsx-runtime.js +29 -42
- package/node_modules/hono/dist/jsx/streaming.js +120 -142
- package/node_modules/hono/dist/jsx/types.js +1 -0
- package/node_modules/hono/dist/jsx/utils.js +105 -168
- package/node_modules/hono/dist/middleware/basic-auth/index.js +96 -63
- package/node_modules/hono/dist/middleware/bearer-auth/index.js +93 -89
- package/node_modules/hono/dist/middleware/body-limit/index.js +66 -51
- package/node_modules/hono/dist/middleware/cache/index.js +165 -190
- package/node_modules/hono/dist/middleware/combine/index.js +134 -73
- package/node_modules/hono/dist/middleware/compress/index.js +75 -69
- package/node_modules/hono/dist/middleware/context-storage/index.js +49 -19
- package/node_modules/hono/dist/middleware/cors/index.js +107 -86
- package/node_modules/hono/dist/middleware/csrf/index.js +103 -53
- package/node_modules/hono/dist/middleware/etag/digest.js +59 -77
- package/node_modules/hono/dist/middleware/etag/index.js +71 -70
- package/node_modules/hono/dist/middleware/ip-restriction/index.js +163 -158
- package/node_modules/hono/dist/middleware/jsx-renderer/index.js +97 -54
- package/node_modules/hono/dist/middleware/jwk/index.js +1 -4
- package/node_modules/hono/dist/middleware/jwk/jwk.js +116 -112
- package/node_modules/hono/dist/middleware/jwt/index.js +2 -10
- package/node_modules/hono/dist/middleware/jwt/jwt.js +114 -114
- package/node_modules/hono/dist/middleware/language/index.js +2 -15
- package/node_modules/hono/dist/middleware/language/language.js +180 -157
- package/node_modules/hono/dist/middleware/logger/index.js +43 -37
- package/node_modules/hono/dist/middleware/method-not-allowed/index.js +81 -66
- package/node_modules/hono/dist/middleware/method-override/index.js +101 -81
- package/node_modules/hono/dist/middleware/powered-by/index.js +23 -9
- package/node_modules/hono/dist/middleware/pretty-json/index.js +39 -22
- package/node_modules/hono/dist/middleware/request-id/index.js +1 -4
- package/node_modules/hono/dist/middleware/request-id/request-id.js +33 -20
- package/node_modules/hono/dist/middleware/secure-headers/index.js +1 -5
- package/node_modules/hono/dist/middleware/secure-headers/permissions-policy.js +1 -0
- package/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +144 -155
- package/node_modules/hono/dist/middleware/serve-static/index.js +56 -72
- package/node_modules/hono/dist/middleware/serve-static/path.js +15 -17
- package/node_modules/hono/dist/middleware/timeout/index.js +40 -23
- package/node_modules/hono/dist/middleware/timing/index.js +2 -9
- package/node_modules/hono/dist/middleware/timing/timing.js +177 -97
- package/node_modules/hono/dist/middleware/trailing-slash/index.js +85 -37
- package/node_modules/hono/dist/preset/quick.js +17 -15
- package/node_modules/hono/dist/preset/tiny.js +14 -11
- package/node_modules/hono/dist/request/constants.js +4 -5
- package/node_modules/hono/dist/request.js +328 -319
- package/node_modules/hono/dist/router/linear-router/index.js +1 -4
- package/node_modules/hono/dist/router/linear-router/router.js +93 -120
- package/node_modules/hono/dist/router/pattern-router/index.js +1 -4
- package/node_modules/hono/dist/router/pattern-router/router.js +39 -40
- package/node_modules/hono/dist/router/reg-exp-router/index.js +1 -7
- package/node_modules/hono/dist/router/reg-exp-router/matcher.js +17 -23
- package/node_modules/hono/dist/router/reg-exp-router/node.js +87 -110
- package/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +89 -137
- package/node_modules/hono/dist/router/reg-exp-router/router.js +92 -129
- package/node_modules/hono/dist/router/reg-exp-router/trie.js +69 -64
- package/node_modules/hono/dist/router/smart-router/index.js +1 -4
- package/node_modules/hono/dist/router/smart-router/router.js +46 -55
- package/node_modules/hono/dist/router/trie-router/index.js +1 -4
- package/node_modules/hono/dist/router/trie-router/node.js +131 -162
- package/node_modules/hono/dist/router/trie-router/router.js +11 -14
- package/node_modules/hono/dist/router/utils.js +4 -5
- package/node_modules/hono/dist/router.js +35 -14
- package/node_modules/hono/dist/types/adapter/aws-lambda/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/aws-lambda/handler.d.ts +150 -104
- package/node_modules/hono/dist/types/adapter/aws-lambda/index.d.ts +4 -8
- package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +152 -122
- package/node_modules/hono/dist/types/adapter/bun/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/bun/index.d.ts +6 -10
- package/node_modules/hono/dist/types/adapter/bun/serve-static.d.ts +7 -2
- package/node_modules/hono/dist/types/adapter/bun/server.d.ts +4 -5
- package/node_modules/hono/dist/types/adapter/bun/ssg.d.ts +5 -1
- package/node_modules/hono/dist/types/adapter/bun/websocket.d.ts +31 -16
- package/node_modules/hono/dist/types/adapter/cloudflare-pages/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/cloudflare-pages/handler.d.ts +29 -17
- package/node_modules/hono/dist/types/adapter/cloudflare-pages/index.d.ts +3 -7
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/conninfo.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/index.d.ts +4 -7
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +5 -2
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static.d.ts +10 -5
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/utils.d.ts +10 -2
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/websocket.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/deno/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/deno/deno.d.ts +1 -0
- package/node_modules/hono/dist/types/adapter/deno/index.d.ts +5 -8
- package/node_modules/hono/dist/types/adapter/deno/serve-static.d.ts +7 -2
- package/node_modules/hono/dist/types/adapter/deno/ssg.d.ts +5 -1
- package/node_modules/hono/dist/types/adapter/deno/websocket.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/lambda-edge/conninfo.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/lambda-edge/handler.d.ts +83 -57
- package/node_modules/hono/dist/types/adapter/lambda-edge/index.d.ts +3 -7
- package/node_modules/hono/dist/types/adapter/netlify/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/netlify/handler.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/netlify/index.d.ts +3 -5
- package/node_modules/hono/dist/types/adapter/netlify/mod.d.ts +3 -2
- package/node_modules/hono/dist/types/adapter/service-worker/handler.d.ts +9 -7
- package/node_modules/hono/dist/types/adapter/service-worker/index.d.ts +7 -9
- package/node_modules/hono/dist/types/adapter/service-worker/types.d.ts +12 -7
- package/node_modules/hono/dist/types/adapter/vercel/conninfo.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/vercel/handler.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/vercel/index.d.ts +3 -6
- package/node_modules/hono/dist/types/client/client.d.ts +5 -3
- package/node_modules/hono/dist/types/client/fetch-result-please.d.ts +21 -19
- package/node_modules/hono/dist/types/client/index.d.ts +5 -7
- package/node_modules/hono/dist/types/client/types.d.ts +134 -159
- package/node_modules/hono/dist/types/client/utils.d.ts +6 -4
- package/node_modules/hono/dist/types/compose.d.ts +4 -2
- package/node_modules/hono/dist/types/context.d.ts +335 -335
- package/node_modules/hono/dist/types/helper/accepts/accepts.d.ts +11 -9
- package/node_modules/hono/dist/types/helper/accepts/index.d.ts +2 -5
- package/node_modules/hono/dist/types/helper/adapter/index.d.ts +4 -6
- package/node_modules/hono/dist/types/helper/conninfo/index.d.ts +2 -5
- package/node_modules/hono/dist/types/helper/conninfo/types.d.ts +25 -23
- package/node_modules/hono/dist/types/helper/cookie/index.d.ts +10 -12
- package/node_modules/hono/dist/types/helper/css/common.d.ts +11 -9
- package/node_modules/hono/dist/types/helper/css/index.d.ts +26 -28
- package/node_modules/hono/dist/types/helper/dev/index.d.ts +10 -12
- package/node_modules/hono/dist/types/helper/factory/index.d.ts +26 -73
- package/node_modules/hono/dist/types/helper/html/index.d.ts +4 -7
- package/node_modules/hono/dist/types/helper/proxy/index.d.ts +19 -21
- package/node_modules/hono/dist/types/helper/route/index.d.ts +4 -2
- package/node_modules/hono/dist/types/helper/ssg/index.d.ts +4 -7
- package/node_modules/hono/dist/types/helper/ssg/middleware.d.ts +8 -6
- package/node_modules/hono/dist/types/helper/ssg/plugins.d.ts +3 -1
- package/node_modules/hono/dist/types/helper/ssg/ssg.d.ts +38 -36
- package/node_modules/hono/dist/types/helper/ssg/utils.d.ts +5 -3
- package/node_modules/hono/dist/types/helper/streaming/index.d.ts +4 -8
- package/node_modules/hono/dist/types/helper/streaming/sse.d.ts +10 -8
- package/node_modules/hono/dist/types/helper/streaming/stream.d.ts +4 -2
- package/node_modules/hono/dist/types/helper/streaming/text.d.ts +4 -2
- package/node_modules/hono/dist/types/helper/streaming/utils.d.ts +2 -0
- package/node_modules/hono/dist/types/helper/testing/index.d.ts +7 -9
- package/node_modules/hono/dist/types/helper/websocket/index.d.ts +30 -33
- package/node_modules/hono/dist/types/hono-base.d.ts +208 -210
- package/node_modules/hono/dist/types/hono.d.ts +11 -10
- package/node_modules/hono/dist/types/http-exception.d.ts +20 -22
- package/node_modules/hono/dist/types/index.d.ts +6 -37
- package/node_modules/hono/dist/types/jsx/base.d.ts +36 -34
- package/node_modules/hono/dist/types/jsx/children.d.ts +8 -6
- package/node_modules/hono/dist/types/jsx/components.d.ts +8 -5
- package/node_modules/hono/dist/types/jsx/constants.d.ts +2 -0
- package/node_modules/hono/dist/types/jsx/context.d.ts +9 -6
- package/node_modules/hono/dist/types/jsx/dom/client.d.ts +9 -10
- package/node_modules/hono/dist/types/jsx/dom/components.d.ts +9 -6
- package/node_modules/hono/dist/types/jsx/dom/context.d.ts +3 -1
- package/node_modules/hono/dist/types/jsx/dom/css.d.ts +27 -30
- package/node_modules/hono/dist/types/jsx/dom/hooks/index.d.ts +11 -12
- package/node_modules/hono/dist/types/jsx/dom/index.d.ts +79 -83
- package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +9 -5
- package/node_modules/hono/dist/types/jsx/dom/jsx-dev-runtime.d.ts +4 -6
- package/node_modules/hono/dist/types/jsx/dom/jsx-runtime.d.ts +3 -7
- package/node_modules/hono/dist/types/jsx/dom/render.d.ts +32 -50
- package/node_modules/hono/dist/types/jsx/dom/server.d.ts +87 -85
- package/node_modules/hono/dist/types/jsx/dom/utils.d.ts +2 -0
- package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +16 -16
- package/node_modules/hono/dist/types/jsx/index.d.ts +71 -73
- package/node_modules/hono/dist/types/jsx/intrinsic-element/common.d.ts +3 -1
- package/node_modules/hono/dist/types/jsx/intrinsic-element/components.d.ts +7 -4
- package/node_modules/hono/dist/types/jsx/intrinsic-elements.d.ts +708 -708
- package/node_modules/hono/dist/types/jsx/jsx-dev-runtime.d.ts +4 -7
- package/node_modules/hono/dist/types/jsx/jsx-runtime.d.ts +7 -10
- package/node_modules/hono/dist/types/jsx/streaming.d.ts +9 -10
- package/node_modules/hono/dist/types/jsx/types.d.ts +12 -13
- package/node_modules/hono/dist/types/jsx/utils.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/basic-auth/index.d.ts +17 -19
- package/node_modules/hono/dist/types/middleware/bearer-auth/index.d.ts +46 -48
- package/node_modules/hono/dist/types/middleware/body-limit/index.d.ts +6 -8
- package/node_modules/hono/dist/types/middleware/cache/index.d.ts +13 -15
- package/node_modules/hono/dist/types/middleware/combine/index.d.ts +4 -6
- package/node_modules/hono/dist/types/middleware/compress/index.d.ts +9 -10
- package/node_modules/hono/dist/types/middleware/context-storage/index.d.ts +4 -6
- package/node_modules/hono/dist/types/middleware/cors/index.d.ts +10 -12
- package/node_modules/hono/dist/types/middleware/csrf/index.d.ts +6 -8
- package/node_modules/hono/dist/types/middleware/etag/digest.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/etag/index.d.ts +6 -8
- package/node_modules/hono/dist/types/middleware/ip-restriction/index.d.ts +11 -12
- package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +11 -11
- package/node_modules/hono/dist/types/middleware/jwk/index.d.ts +2 -1
- package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +20 -23
- package/node_modules/hono/dist/types/middleware/jwt/index.d.ts +7 -6
- package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +28 -30
- package/node_modules/hono/dist/types/middleware/language/index.d.ts +6 -5
- package/node_modules/hono/dist/types/middleware/language/language.d.ts +42 -44
- package/node_modules/hono/dist/types/middleware/logger/index.d.ts +3 -5
- package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +7 -9
- package/node_modules/hono/dist/types/middleware/method-override/index.d.ts +14 -16
- package/node_modules/hono/dist/types/middleware/powered-by/index.d.ts +8 -10
- package/node_modules/hono/dist/types/middleware/pretty-json/index.d.ts +18 -20
- package/node_modules/hono/dist/types/middleware/request-id/index.d.ts +6 -5
- package/node_modules/hono/dist/types/middleware/request-id/request-id.d.ts +9 -11
- package/node_modules/hono/dist/types/middleware/secure-headers/index.d.ts +6 -6
- package/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/secure-headers/secure-headers.d.ts +55 -57
- package/node_modules/hono/dist/types/middleware/serve-static/index.d.ts +24 -24
- package/node_modules/hono/dist/types/middleware/serve-static/path.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/timeout/index.d.ts +5 -7
- package/node_modules/hono/dist/types/middleware/timing/index.d.ts +6 -5
- package/node_modules/hono/dist/types/middleware/timing/timing.d.ts +17 -20
- package/node_modules/hono/dist/types/middleware/trailing-slash/index.d.ts +35 -37
- package/node_modules/hono/dist/types/preset/quick.d.ts +6 -9
- package/node_modules/hono/dist/types/preset/tiny.d.ts +6 -9
- package/node_modules/hono/dist/types/request/constants.d.ts +2 -0
- package/node_modules/hono/dist/types/request.d.ts +288 -286
- package/node_modules/hono/dist/types/router/linear-router/index.d.ts +2 -5
- package/node_modules/hono/dist/types/router/linear-router/router.d.ts +7 -5
- package/node_modules/hono/dist/types/router/pattern-router/index.d.ts +2 -5
- package/node_modules/hono/dist/types/router/pattern-router/router.d.ts +7 -5
- package/node_modules/hono/dist/types/router/reg-exp-router/index.d.ts +3 -6
- package/node_modules/hono/dist/types/router/reg-exp-router/matcher.d.ts +3 -1
- package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +6 -4
- package/node_modules/hono/dist/types/router/reg-exp-router/prepared-router.d.ts +11 -10
- package/node_modules/hono/dist/types/router/reg-exp-router/router.d.ts +10 -9
- package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +7 -5
- package/node_modules/hono/dist/types/router/smart-router/index.d.ts +2 -5
- package/node_modules/hono/dist/types/router/smart-router/router.d.ts +11 -9
- package/node_modules/hono/dist/types/router/trie-router/index.d.ts +2 -5
- package/node_modules/hono/dist/types/router/trie-router/node.d.ts +6 -4
- package/node_modules/hono/dist/types/router/trie-router/router.d.ts +7 -5
- package/node_modules/hono/dist/types/router/utils.d.ts +2 -0
- package/node_modules/hono/dist/types/router.d.ts +23 -22
- package/node_modules/hono/dist/types/types.d.ts +146 -505
- package/node_modules/hono/dist/types/utils/accept.d.ts +5 -3
- package/node_modules/hono/dist/types/utils/basic-auth.d.ts +4 -2
- package/node_modules/hono/dist/types/utils/body.d.ts +46 -50
- package/node_modules/hono/dist/types/utils/buffer.d.ts +7 -5
- package/node_modules/hono/dist/types/utils/color.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/compress.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/concurrent.d.ts +6 -4
- package/node_modules/hono/dist/types/utils/constants.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/cookie.d.ts +20 -18
- package/node_modules/hono/dist/types/utils/crypto.d.ts +5 -7
- package/node_modules/hono/dist/types/utils/encode.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/filepath.d.ts +5 -3
- package/node_modules/hono/dist/types/utils/handler.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/headers.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/html.d.ts +11 -9
- package/node_modules/hono/dist/types/utils/http-status.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/ipaddr.d.ts +4 -6
- package/node_modules/hono/dist/types/utils/jwt/index.d.ts +18 -12
- package/node_modules/hono/dist/types/utils/jwt/jwa.d.ts +15 -13
- package/node_modules/hono/dist/types/utils/jwt/jws.d.ts +4 -7
- package/node_modules/hono/dist/types/utils/jwt/jwt.d.ts +26 -29
- package/node_modules/hono/dist/types/utils/jwt/types.d.ts +48 -45
- package/node_modules/hono/dist/types/utils/jwt/utf8.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/mime.d.ts +60 -57
- package/node_modules/hono/dist/types/utils/stream.d.ts +27 -25
- package/node_modules/hono/dist/types/utils/types.d.ts +14 -26
- package/node_modules/hono/dist/types/utils/url.d.ts +2 -0
- package/node_modules/hono/dist/types/validator/index.d.ts +3 -7
- package/node_modules/hono/dist/types/validator/utils.d.ts +6 -8
- package/node_modules/hono/dist/types/validator/validator.d.ts +11 -9
- package/node_modules/hono/dist/types.js +4 -6
- package/node_modules/hono/dist/utils/accept.js +185 -212
- package/node_modules/hono/dist/utils/basic-auth.js +18 -21
- package/node_modules/hono/dist/utils/body.js +87 -92
- package/node_modules/hono/dist/utils/buffer.js +44 -71
- package/node_modules/hono/dist/utils/color.js +33 -21
- package/node_modules/hono/dist/utils/compress.js +11 -5
- package/node_modules/hono/dist/utils/concurrent.js +29 -38
- package/node_modules/hono/dist/utils/constants.js +7 -5
- package/node_modules/hono/dist/utils/cookie.js +114 -163
- package/node_modules/hono/dist/utils/crypto.js +30 -40
- package/node_modules/hono/dist/utils/encode.js +30 -26
- package/node_modules/hono/dist/utils/filepath.js +23 -33
- package/node_modules/hono/dist/utils/handler.js +10 -11
- package/node_modules/hono/dist/utils/headers.js +1 -0
- package/node_modules/hono/dist/utils/html.js +97 -117
- package/node_modules/hono/dist/utils/http-status.js +1 -0
- package/node_modules/hono/dist/utils/ipaddr.js +227 -279
- package/node_modules/hono/dist/utils/jwt/index.js +12 -4
- package/node_modules/hono/dist/utils/jwt/jwa.js +24 -20
- package/node_modules/hono/dist/utils/jwt/jws.js +115 -174
- package/node_modules/hono/dist/utils/jwt/jwt.js +120 -198
- package/node_modules/hono/dist/utils/jwt/types.js +79 -95
- package/node_modules/hono/dist/utils/jwt/utf8.js +9 -7
- package/node_modules/hono/dist/utils/mime.js +74 -79
- package/node_modules/hono/dist/utils/stream.js +86 -88
- package/node_modules/hono/dist/utils/types.js +1 -0
- package/node_modules/hono/dist/utils/url.js +187 -215
- package/node_modules/hono/dist/validator/index.js +1 -4
- package/node_modules/hono/dist/validator/utils.js +1 -0
- package/node_modules/hono/dist/validator/validator.js +61 -83
- package/node_modules/hono/package.json +27 -27
- package/node_modules/undici/LICENSE +21 -0
- package/node_modules/undici/README.md +741 -0
- package/node_modules/undici/docs/docs/api/Agent.md +84 -0
- package/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
- package/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
- package/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
- package/node_modules/undici/docs/docs/api/Client.md +288 -0
- package/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
- package/node_modules/undici/docs/docs/api/Connector.md +115 -0
- package/node_modules/undici/docs/docs/api/ContentType.md +57 -0
- package/node_modules/undici/docs/docs/api/Cookies.md +128 -0
- package/node_modules/undici/docs/docs/api/Debug.md +62 -0
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +317 -0
- package/node_modules/undici/docs/docs/api/Dispatcher.md +1393 -0
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
- package/node_modules/undici/docs/docs/api/Errors.md +49 -0
- package/node_modules/undici/docs/docs/api/EventSource.md +45 -0
- package/node_modules/undici/docs/docs/api/Fetch.md +60 -0
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
- package/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
- package/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
- package/node_modules/undici/docs/docs/api/MockClient.md +81 -0
- package/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
- package/node_modules/undici/docs/docs/api/MockPool.md +555 -0
- package/node_modules/undici/docs/docs/api/Pool.md +84 -0
- package/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
- package/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
- package/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +275 -0
- package/node_modules/undici/docs/docs/api/Util.md +25 -0
- package/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
- package/node_modules/undici/docs/docs/best-practices/crawling.md +58 -0
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
- package/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
- package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +224 -0
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
- package/node_modules/undici/index-fetch.js +65 -0
- package/node_modules/undici/index.d.ts +3 -0
- package/node_modules/undici/index.js +234 -0
- package/node_modules/undici/lib/api/abort-signal.js +59 -0
- package/node_modules/undici/lib/api/api-connect.js +110 -0
- package/node_modules/undici/lib/api/api-pipeline.js +252 -0
- package/node_modules/undici/lib/api/api-request.js +214 -0
- package/node_modules/undici/lib/api/api-stream.js +209 -0
- package/node_modules/undici/lib/api/api-upgrade.js +111 -0
- package/node_modules/undici/lib/api/index.js +7 -0
- package/node_modules/undici/lib/api/readable.js +580 -0
- package/node_modules/undici/lib/cache/memory-cache-store.js +279 -0
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +467 -0
- package/node_modules/undici/lib/core/connect.js +153 -0
- package/node_modules/undici/lib/core/constants.js +143 -0
- package/node_modules/undici/lib/core/diagnostics.js +227 -0
- package/node_modules/undici/lib/core/errors.js +477 -0
- package/node_modules/undici/lib/core/request.js +485 -0
- package/node_modules/undici/lib/core/socks5-client.js +422 -0
- package/node_modules/undici/lib/core/socks5-utils.js +212 -0
- package/node_modules/undici/lib/core/symbols.js +75 -0
- package/node_modules/undici/lib/core/tree.js +160 -0
- package/node_modules/undici/lib/core/util.js +992 -0
- package/node_modules/undici/lib/dispatcher/agent.js +158 -0
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +221 -0
- package/node_modules/undici/lib/dispatcher/client-h1.js +1746 -0
- package/node_modules/undici/lib/dispatcher/client-h2.js +1060 -0
- package/node_modules/undici/lib/dispatcher/client.js +668 -0
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +184 -0
- package/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
- package/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
- package/node_modules/undici/lib/dispatcher/h2c-client.js +51 -0
- package/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
- package/node_modules/undici/lib/dispatcher/pool.js +118 -0
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +319 -0
- package/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +137 -0
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +260 -0
- package/node_modules/undici/lib/encoding/index.js +33 -0
- package/node_modules/undici/lib/global.js +59 -0
- package/node_modules/undici/lib/handler/cache-handler.js +776 -0
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +124 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +67 -0
- package/node_modules/undici/lib/handler/deduplication-handler.js +460 -0
- package/node_modules/undici/lib/handler/redirect-handler.js +238 -0
- package/node_modules/undici/lib/handler/retry-handler.js +504 -0
- package/node_modules/undici/lib/handler/unwrap-handler.js +106 -0
- package/node_modules/undici/lib/handler/wrap-handler.js +105 -0
- package/node_modules/undici/lib/interceptor/cache.js +621 -0
- package/node_modules/undici/lib/interceptor/decompress.js +551 -0
- package/node_modules/undici/lib/interceptor/deduplicate.js +117 -0
- package/node_modules/undici/lib/interceptor/dns.js +571 -0
- package/node_modules/undici/lib/interceptor/dump.js +99 -0
- package/node_modules/undici/lib/interceptor/redirect.js +21 -0
- package/node_modules/undici/lib/interceptor/response-error.js +95 -0
- package/node_modules/undici/lib/interceptor/retry.js +19 -0
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/llhttp/constants.d.ts +195 -0
- package/node_modules/undici/lib/llhttp/constants.js +531 -0
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
- package/node_modules/undici/lib/llhttp/utils.d.ts +2 -0
- package/node_modules/undici/lib/llhttp/utils.js +12 -0
- package/node_modules/undici/lib/mock/mock-agent.js +232 -0
- package/node_modules/undici/lib/mock/mock-call-history.js +248 -0
- package/node_modules/undici/lib/mock/mock-client.js +68 -0
- package/node_modules/undici/lib/mock/mock-errors.js +29 -0
- package/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
- package/node_modules/undici/lib/mock/mock-pool.js +68 -0
- package/node_modules/undici/lib/mock/mock-symbols.js +32 -0
- package/node_modules/undici/lib/mock/mock-utils.js +486 -0
- package/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
- package/node_modules/undici/lib/mock/snapshot-agent.js +353 -0
- package/node_modules/undici/lib/mock/snapshot-recorder.js +588 -0
- package/node_modules/undici/lib/mock/snapshot-utils.js +158 -0
- package/node_modules/undici/lib/util/cache.js +676 -0
- package/node_modules/undici/lib/util/date.js +670 -0
- package/node_modules/undici/lib/util/promise.js +28 -0
- package/node_modules/undici/lib/util/runtime-features.js +124 -0
- package/node_modules/undici/lib/util/stats.js +32 -0
- package/node_modules/undici/lib/util/timers.js +425 -0
- package/node_modules/undici/lib/web/cache/cache.js +864 -0
- package/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
- package/node_modules/undici/lib/web/cache/util.js +45 -0
- package/node_modules/undici/lib/web/cookies/constants.js +12 -0
- package/node_modules/undici/lib/web/cookies/index.js +199 -0
- package/node_modules/undici/lib/web/cookies/parse.js +314 -0
- package/node_modules/undici/lib/web/cookies/util.js +352 -0
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +494 -0
- package/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
- package/node_modules/undici/lib/web/eventsource/util.js +29 -0
- package/node_modules/undici/lib/web/fetch/LICENSE +21 -0
- package/node_modules/undici/lib/web/fetch/body.js +509 -0
- package/node_modules/undici/lib/web/fetch/constants.js +131 -0
- package/node_modules/undici/lib/web/fetch/data-url.js +596 -0
- package/node_modules/undici/lib/web/fetch/formdata-parser.js +586 -0
- package/node_modules/undici/lib/web/fetch/formdata.js +259 -0
- package/node_modules/undici/lib/web/fetch/global.js +40 -0
- package/node_modules/undici/lib/web/fetch/headers.js +719 -0
- package/node_modules/undici/lib/web/fetch/index.js +2413 -0
- package/node_modules/undici/lib/web/fetch/request.js +1115 -0
- package/node_modules/undici/lib/web/fetch/response.js +641 -0
- package/node_modules/undici/lib/web/fetch/util.js +1522 -0
- package/node_modules/undici/lib/web/infra/index.js +229 -0
- package/node_modules/undici/lib/web/subresource-integrity/Readme.md +9 -0
- package/node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js +307 -0
- package/node_modules/undici/lib/web/webidl/index.js +1006 -0
- package/node_modules/undici/lib/web/websocket/connection.js +339 -0
- package/node_modules/undici/lib/web/websocket/constants.js +126 -0
- package/node_modules/undici/lib/web/websocket/events.js +331 -0
- package/node_modules/undici/lib/web/websocket/frame.js +133 -0
- package/node_modules/undici/lib/web/websocket/permessage-deflate.js +105 -0
- package/node_modules/undici/lib/web/websocket/receiver.js +507 -0
- package/node_modules/undici/lib/web/websocket/sender.js +109 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +104 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +496 -0
- package/node_modules/undici/lib/web/websocket/util.js +347 -0
- package/node_modules/undici/lib/web/websocket/websocket.js +758 -0
- package/node_modules/undici/package.json +152 -0
- package/node_modules/undici/scripts/strip-comments.js +10 -0
- package/node_modules/undici/types/README.md +6 -0
- package/node_modules/undici/types/agent.d.ts +32 -0
- package/node_modules/undici/types/api.d.ts +43 -0
- package/node_modules/undici/types/balanced-pool.d.ts +30 -0
- package/node_modules/undici/types/cache-interceptor.d.ts +179 -0
- package/node_modules/undici/types/cache.d.ts +36 -0
- package/node_modules/undici/types/client-stats.d.ts +15 -0
- package/node_modules/undici/types/client.d.ts +139 -0
- package/node_modules/undici/types/connector.d.ts +36 -0
- package/node_modules/undici/types/content-type.d.ts +21 -0
- package/node_modules/undici/types/cookies.d.ts +30 -0
- package/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
- package/node_modules/undici/types/dispatcher.d.ts +275 -0
- package/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
- package/node_modules/undici/types/errors.d.ts +177 -0
- package/node_modules/undici/types/eventsource.d.ts +66 -0
- package/node_modules/undici/types/fetch.d.ts +231 -0
- package/node_modules/undici/types/formdata.d.ts +114 -0
- package/node_modules/undici/types/global-dispatcher.d.ts +9 -0
- package/node_modules/undici/types/global-origin.d.ts +7 -0
- package/node_modules/undici/types/h2c-client.d.ts +73 -0
- package/node_modules/undici/types/handlers.d.ts +14 -0
- package/node_modules/undici/types/header.d.ts +160 -0
- package/node_modules/undici/types/index.d.ts +91 -0
- package/node_modules/undici/types/interceptors.d.ts +82 -0
- package/node_modules/undici/types/mock-agent.d.ts +68 -0
- package/node_modules/undici/types/mock-call-history.d.ts +111 -0
- package/node_modules/undici/types/mock-client.d.ts +27 -0
- package/node_modules/undici/types/mock-errors.d.ts +12 -0
- package/node_modules/undici/types/mock-interceptor.d.ts +94 -0
- package/node_modules/undici/types/mock-pool.d.ts +27 -0
- package/node_modules/undici/types/patch.d.ts +29 -0
- package/node_modules/undici/types/pool-stats.d.ts +19 -0
- package/node_modules/undici/types/pool.d.ts +41 -0
- package/node_modules/undici/types/proxy-agent.d.ts +29 -0
- package/node_modules/undici/types/readable.d.ts +68 -0
- package/node_modules/undici/types/retry-agent.d.ts +8 -0
- package/node_modules/undici/types/retry-handler.d.ts +125 -0
- package/node_modules/undici/types/round-robin-pool.d.ts +41 -0
- package/node_modules/undici/types/snapshot-agent.d.ts +109 -0
- package/node_modules/undici/types/socks5-proxy-agent.d.ts +25 -0
- package/node_modules/undici/types/util.d.ts +18 -0
- package/node_modules/undici/types/utility.d.ts +7 -0
- package/node_modules/undici/types/webidl.d.ts +347 -0
- package/node_modules/undici/types/websocket.d.ts +188 -0
- package/package.json +5 -3
- package/profiles/README.md +20 -0
- package/profiles/index.json +2 -1
- package/profiles/sales/0.1.profile.json +252 -0
- package/server.js +99 -0
package/README.md
CHANGED
|
@@ -106,7 +106,7 @@ Open `http://localhost:7400`. The MCP server is at `http://localhost:7430`.
|
|
|
106
106
|
|
|
107
107
|
### Option B — npm
|
|
108
108
|
|
|
109
|
-
Requires [Node.js 20+](https://nodejs.org/).
|
|
109
|
+
Requires [Node.js 20.18.1+](https://nodejs.org/).
|
|
110
110
|
|
|
111
111
|
```bash
|
|
112
112
|
npm install -g @suveren/gateway
|
|
@@ -153,6 +153,38 @@ See [`docs/development.md`](docs/development.md) for environment variables, test
|
|
|
153
153
|
|
|
154
154
|
---
|
|
155
155
|
|
|
156
|
+
## Pinning the Authority Server's TLS certificate
|
|
157
|
+
|
|
158
|
+
Opt-in, for self-hosted Authority Servers with a stable signing key — not needed against the hosted `suveren.ai`, and off by default.
|
|
159
|
+
|
|
160
|
+
The gateway already verifies the Authority Server can *sign* under the right key before it ever sends an API key or session cookie. What that alone does not cover: something sitting on the network path between the gateway and the Authority Server, presenting its own TLS certificate, that a locally-trusted CA (e.g. a custom `--ca-file`) would otherwise accept. TLS certificate pinning closes that gap by pinning the Authority Server's certificate public key (SPKI, SHA-256) — every connection after that must present the same key, or the gateway refuses it and locks.
|
|
161
|
+
|
|
162
|
+
**Pinning only protects from the moment the fingerprint has actually been checked over a second channel** — a phone call, a video call, a separate trusted connection. That is why enabling it requires `--expect-fingerprint`: not an optional confirmation step, but the check itself. Recommended: enable it once, right after pairing, from a network you already trust.
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Get the Authority Server's own fingerprint independently — ask the operator,
|
|
166
|
+
# or run this yourself on a trusted network:
|
|
167
|
+
openssl s_client -connect your-as-host:443 </dev/null 2>/dev/null \
|
|
168
|
+
| openssl x509 -pubkey -noout \
|
|
169
|
+
| openssl pkey -pubin -outform der \
|
|
170
|
+
| openssl dgst -sha256
|
|
171
|
+
|
|
172
|
+
# Compare it against what you were told out-of-band, THEN enable:
|
|
173
|
+
suveren-gateway config set pin-tls on --expect-fingerprint <the-sha256-you-just-confirmed>
|
|
174
|
+
suveren-gateway restart
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
A few things worth knowing before turning it on:
|
|
178
|
+
|
|
179
|
+
- **Certificate renewal with the SAME key keeps the pin working** — nothing to do. Renew with the same key where your tooling supports it (e.g. `certbot renew --reuse-key`).
|
|
180
|
+
- **A renewal under a NEW key locks the gateway** (`as-tls-mismatch`) until an operator re-pairs — this is deliberate fail-closed behavior, not a bug. Re-pairing means clearing `<dataDir>/as-pairing.json` and signing in again.
|
|
181
|
+
- Pinned connections trust Node's own bundled root certificates plus `--ca-file` / `NODE_EXTRA_CA_CERTS` — **not** your operating system's trust store.
|
|
182
|
+
- `suveren-gateway config set pin-tls off` disables enforcement at any time; the stored fingerprint stays on file, so turning it back on later with the SAME `--expect-fingerprint` value succeeds immediately (it is still required every time — stating it again is cheap, and the command refuses outright if it doesn't match what's on file).
|
|
183
|
+
|
|
184
|
+
See `suveren-gateway config help` for the full command reference.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
156
188
|
## Technical Documentation
|
|
157
189
|
|
|
158
190
|
| Document | Contents |
|
package/bin/suveren-gateway.js
CHANGED
|
@@ -17,6 +17,8 @@ import { homedir, platform, userInfo } from 'node:os';
|
|
|
17
17
|
import { dirname, join, resolve } from 'node:path';
|
|
18
18
|
import { fileURLToPath } from 'node:url';
|
|
19
19
|
import { buildLaunchAgentPlist, buildMacLauncher, buildSystemdUnit, buildWindowsTaskXml } from '../lib/autostart-templates.mjs';
|
|
20
|
+
import { DEFAULT_AS_URL, readConfig, writeConfig, validateAsUrl, validateCaFile, validatePinTls, resolveAsUrl, resolvePinTls, resolvePinTlsExpectedFingerprint } from '../lib/config.mjs';
|
|
21
|
+
import { readPairing as readAsPairing, recordTlsPin, formatFingerprint, normalizeFingerprint } from '../lib/as-pairing.mjs';
|
|
20
22
|
|
|
21
23
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
22
24
|
const PKG_ROOT = resolve(__dirname, '..');
|
|
@@ -53,9 +55,161 @@ try {
|
|
|
53
55
|
|
|
54
56
|
// ─── Implementations ────────────────────────────────────────────────────
|
|
55
57
|
|
|
58
|
+
/** Value following a `--flag` in an argv array, or undefined if absent. */
|
|
59
|
+
function flagValue(args, name) {
|
|
60
|
+
const i = args.indexOf(name);
|
|
61
|
+
if (i === -1 || i === args.length - 1) return undefined;
|
|
62
|
+
return args[i + 1];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The TLS SPKI fingerprint currently on file for `asUrl`, if any — either a
|
|
67
|
+
* real, verified pin (as-pairing.json, captured at a past sign-in) or a
|
|
68
|
+
* staged-but-not-yet-verified one (config.json's `pinTlsExpectedFingerprint`
|
|
69
|
+
* — set by a PRIOR `--expect-fingerprint` run before any pairing existed).
|
|
70
|
+
* The pairing value always wins when both are present.
|
|
71
|
+
*/
|
|
72
|
+
function currentTlsFingerprintHex(dataDir, asUrl) {
|
|
73
|
+
const pairing = readAsPairing(dataDir);
|
|
74
|
+
if (pairing && pairing.asUrl === asUrl && pairing.tlsSpkiPinHex) return pairing.tlsSpkiPinHex;
|
|
75
|
+
return resolvePinTlsExpectedFingerprint(dataDir);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function printFingerprintHowTo(asUrl) {
|
|
79
|
+
let host = asUrl;
|
|
80
|
+
try { host = new URL(asUrl).host; } catch { /* keep the raw string */ }
|
|
81
|
+
console.error(`Obtain the Authority Server's OWN fingerprint independently — e.g. ask the operator over`);
|
|
82
|
+
console.error(`the phone, or run this yourself on a network you already trust:`);
|
|
83
|
+
console.error(``);
|
|
84
|
+
console.error(` openssl s_client -connect ${host} </dev/null 2>/dev/null \\`);
|
|
85
|
+
console.error(` | openssl x509 -pubkey -noout \\`);
|
|
86
|
+
console.error(` | openssl pkey -pubin -outform der \\`);
|
|
87
|
+
console.error(` | openssl dgst -sha256`);
|
|
88
|
+
console.error(``);
|
|
89
|
+
console.error(`Compare it against the value shown above (if any) BEFORE re-running this with --expect-fingerprint.`);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Mandatory out-of-band check for enabling pin-tls (opt-in TLS certificate
|
|
94
|
+
* pinning) — shared by `start --pin-tls` and `config set pin-tls on`.
|
|
95
|
+
* Without this, turning pin-tls on would either silently trust whatever
|
|
96
|
+
* certificate the Authority Server happens to present at the next sign-in
|
|
97
|
+
* (defeating the whole point of pinning) or require a SEPARATE manual
|
|
98
|
+
* verification step a script could skip. `--expect-fingerprint` makes the
|
|
99
|
+
* operator state, on the command line, the value they already checked
|
|
100
|
+
* out-of-band — refusing outright when it's missing or doesn't match
|
|
101
|
+
* whatever is already on file.
|
|
102
|
+
*
|
|
103
|
+
* Returns the normalized (lowercase, no separators) hex fingerprint to
|
|
104
|
+
* commit, or exits the process (code 1) having already printed why.
|
|
105
|
+
*/
|
|
106
|
+
function requireConfirmedFingerprint(args, asUrl) {
|
|
107
|
+
const flag = flagValue(args, '--expect-fingerprint');
|
|
108
|
+
const existingHex = currentTlsFingerprintHex(DATA_DIR, asUrl);
|
|
109
|
+
|
|
110
|
+
if (!flag) {
|
|
111
|
+
console.error(`--expect-fingerprint is required to enable pin-tls — this is the Authority Server's TLS`);
|
|
112
|
+
console.error(`certificate public-key fingerprint (SHA-256 of the leaf SPKI), checked over a second`);
|
|
113
|
+
console.error(`channel BEFORE trusting it, not just whatever this gateway happens to see on the wire.`);
|
|
114
|
+
console.error(``);
|
|
115
|
+
if (existingHex) {
|
|
116
|
+
console.error(`Currently on file for ${asUrl}:`);
|
|
117
|
+
console.error(` ${formatFingerprint(existingHex)}`);
|
|
118
|
+
console.error(``);
|
|
119
|
+
}
|
|
120
|
+
printFingerprintHowTo(asUrl);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const norm = normalizeFingerprint(flag);
|
|
125
|
+
if (!norm.ok) {
|
|
126
|
+
console.error(`Invalid --expect-fingerprint: ${norm.error}`);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (existingHex && existingHex !== norm.hex) {
|
|
131
|
+
console.error(`--expect-fingerprint does not match the fingerprint already on file for ${asUrl}:`);
|
|
132
|
+
console.error(` on file: ${formatFingerprint(existingHex)}`);
|
|
133
|
+
console.error(` provided: ${formatFingerprint(norm.hex)}`);
|
|
134
|
+
console.error(``);
|
|
135
|
+
console.error(`If the Authority Server's certificate changed INTENTIONALLY (a new key, not just a`);
|
|
136
|
+
console.error(`renewal), clear the pairing (${join(DATA_DIR, 'as-pairing.json')}) and sign in again to`);
|
|
137
|
+
console.error(`re-pin it, then re-run this command with the new fingerprint.`);
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return norm.hex;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Commit a confirmed fingerprint: into the existing pairing record
|
|
146
|
+
* (as-pairing.json) when one exists for this URL, so it is enforced from
|
|
147
|
+
* the very next connection on — or, when no pairing exists yet (nothing to
|
|
148
|
+
* attach a TLS pin to), staged in config.json's `pinTlsExpectedFingerprint`
|
|
149
|
+
* for the control plane to enforce at the NEXT sign-in's challenge (see
|
|
150
|
+
* checkAsKeyBeforeLogin in apps/control-plane/src/routes/auth.ts), which
|
|
151
|
+
* moves it into as-pairing.json and clears the staging field once it
|
|
152
|
+
* verifies.
|
|
153
|
+
*/
|
|
154
|
+
function commitConfirmedFingerprint(dataDir, asUrl, hex) {
|
|
155
|
+
if (recordTlsPin(dataDir, asUrl, hex)) return 'pinned';
|
|
156
|
+
writeConfig(dataDir, { pinTlsExpectedFingerprint: hex });
|
|
157
|
+
return 'staged';
|
|
158
|
+
}
|
|
159
|
+
|
|
56
160
|
async function start(args) {
|
|
57
161
|
const detach = args.includes('--detach') || args.includes('-d');
|
|
58
162
|
|
|
163
|
+
// --as-url / --ca-file: VALIDATE now (fail fast on bad input regardless of
|
|
164
|
+
// whether a start would even be possible), but do not SAVE yet — see below,
|
|
165
|
+
// after the already-running / port-in-use checks. Saving here unconditionally
|
|
166
|
+
// meant `start --as-url X` against an already-running gateway silently
|
|
167
|
+
// overwrote the saved config for an instance that never actually started
|
|
168
|
+
// with it, which is confusing to unwind (the saved value looks right, but
|
|
169
|
+
// nothing running reflects it).
|
|
170
|
+
const asUrlFlag = flagValue(args, '--as-url');
|
|
171
|
+
let asUrlToSave = null;
|
|
172
|
+
if (asUrlFlag) {
|
|
173
|
+
const v = validateAsUrl(asUrlFlag);
|
|
174
|
+
if (!v.ok) {
|
|
175
|
+
console.error(`Invalid --as-url: ${v.error}`);
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
asUrlToSave = v.url;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const caFileFlag = flagValue(args, '--ca-file');
|
|
182
|
+
let caFileToSave = null;
|
|
183
|
+
if (caFileFlag) {
|
|
184
|
+
const v = validateCaFile(caFileFlag);
|
|
185
|
+
if (!v.ok) {
|
|
186
|
+
console.error(`Invalid --ca-file: ${v.error}`);
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
caFileToSave = v.path;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// --pin-tls: a boolean flag (turns TLS certificate pinning ON — there is
|
|
193
|
+
// no `start --pin-tls off`; use `config set pin-tls off` for that).
|
|
194
|
+
// Validated against the EFFECTIVE as-url for this very start (the flag
|
|
195
|
+
// above, if given, wins over whatever is saved) — enabling it for an
|
|
196
|
+
// http:// Authority Server has nothing to pin. Also requires
|
|
197
|
+
// --expect-fingerprint (the mandatory out-of-band check — see
|
|
198
|
+
// requireConfirmedFingerprint) before it can be turned on at all.
|
|
199
|
+
const pinTlsFlag = args.includes('--pin-tls');
|
|
200
|
+
let pinTlsToSave = null;
|
|
201
|
+
let confirmedFingerprintHex = null;
|
|
202
|
+
if (pinTlsFlag) {
|
|
203
|
+
const effectiveAsUrl = asUrlToSave ?? resolveAsUrl(DATA_DIR);
|
|
204
|
+
const v = validatePinTls(effectiveAsUrl);
|
|
205
|
+
if (!v.ok) {
|
|
206
|
+
console.error(`Invalid --pin-tls: ${v.error}`);
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
confirmedFingerprintHex = requireConfirmedFingerprint(args, effectiveAsUrl);
|
|
210
|
+
pinTlsToSave = true;
|
|
211
|
+
}
|
|
212
|
+
|
|
59
213
|
if (await isAlreadyRunning()) {
|
|
60
214
|
console.error(`suveren-gateway is already running (pid ${readPid()}). Use \`suveren-gateway stop\` first or \`suveren-gateway restart\`.`);
|
|
61
215
|
process.exit(1);
|
|
@@ -90,6 +244,32 @@ async function start(args) {
|
|
|
90
244
|
|
|
91
245
|
ensureDataDir();
|
|
92
246
|
|
|
247
|
+
// NOW save — a start we know is actually going to happen. Also override
|
|
248
|
+
// process.env for the child we're about to spawn: that's what makes
|
|
249
|
+
// "flag > env" actually true (without it, a pre-existing SUVEREN_AS_URL in
|
|
250
|
+
// the caller's shell would still win inside the child, since the resolver
|
|
251
|
+
// there reads env before saved config).
|
|
252
|
+
if (asUrlToSave) {
|
|
253
|
+
writeConfig(DATA_DIR, { asUrl: asUrlToSave });
|
|
254
|
+
process.env.SUVEREN_AS_URL = asUrlToSave;
|
|
255
|
+
console.log(`Authority Server: ${asUrlToSave} (saved — future \`start\` calls keep this without the flag)`);
|
|
256
|
+
}
|
|
257
|
+
if (caFileToSave) {
|
|
258
|
+
writeConfig(DATA_DIR, { caFile: caFileToSave });
|
|
259
|
+
console.log(`CA file: ${caFileToSave} (saved — applied to every process this gateway starts)`);
|
|
260
|
+
}
|
|
261
|
+
if (pinTlsToSave) {
|
|
262
|
+
const effectiveAsUrl = asUrlToSave ?? resolveAsUrl(DATA_DIR);
|
|
263
|
+
const committed = commitConfirmedFingerprint(DATA_DIR, effectiveAsUrl, confirmedFingerprintHex);
|
|
264
|
+
writeConfig(DATA_DIR, { pinTls: true });
|
|
265
|
+
console.log(`TLS pinning: ON (fingerprint ${formatFingerprint(confirmedFingerprintHex)} confirmed)`);
|
|
266
|
+
console.log(
|
|
267
|
+
committed === 'pinned'
|
|
268
|
+
? ` Enforced from your next connection on.`
|
|
269
|
+
: ` Staged — the first sign-in's challenge must match it (refused otherwise); it then becomes the permanent pin.`,
|
|
270
|
+
);
|
|
271
|
+
}
|
|
272
|
+
|
|
93
273
|
if (detach) {
|
|
94
274
|
const out = openSync(LOG_FILE, 'a');
|
|
95
275
|
const child = spawn(process.execPath, [SERVER_ENTRY], {
|
|
@@ -192,7 +372,22 @@ async function stop() {
|
|
|
192
372
|
}
|
|
193
373
|
if (isPidAlive(pid)) {
|
|
194
374
|
console.error(`Process ${pid} did not exit after SIGTERM — sending SIGKILL.`);
|
|
195
|
-
|
|
375
|
+
// The WHOLE GROUP (negative pid), not just this one process: `pid`
|
|
376
|
+
// here is always a `--detach`-spawned process, which Node makes the
|
|
377
|
+
// leader of a new process group (`detached: true`). SIGKILL cannot be
|
|
378
|
+
// caught or relayed — sending it to just the top pid (which, with a
|
|
379
|
+
// saved --ca-file, is the re-exec parent from server.js) killed it
|
|
380
|
+
// instantly with no chance to forward the signal, orphaning the
|
|
381
|
+
// re-exec'd child and everything IT spawned (control-plane, MCP
|
|
382
|
+
// server, every integration). `-pid` reaches all of them in one shot.
|
|
383
|
+
try {
|
|
384
|
+
process.kill(-pid, 'SIGKILL');
|
|
385
|
+
} catch {
|
|
386
|
+
// ESRCH (group already gone) or an environment where group-kill
|
|
387
|
+
// isn't permitted — fall back to the single pid so this can't throw
|
|
388
|
+
// its way out of stop() entirely.
|
|
389
|
+
process.kill(pid, 'SIGKILL');
|
|
390
|
+
}
|
|
196
391
|
}
|
|
197
392
|
}
|
|
198
393
|
safeUnlink(PID_FILE);
|
|
@@ -295,6 +490,150 @@ async function logs(args) {
|
|
|
295
490
|
}
|
|
296
491
|
}
|
|
297
492
|
|
|
493
|
+
// ─── config: read/save saved settings (as-url, ca-file) ─────────────────
|
|
494
|
+
|
|
495
|
+
function printConfigHelp() {
|
|
496
|
+
console.log(`suveren-gateway config — read or save gateway settings
|
|
497
|
+
|
|
498
|
+
Usage:
|
|
499
|
+
suveren-gateway config get [as-url|ca-file|pin-tls] Print the resolved value(s)
|
|
500
|
+
suveren-gateway config set as-url <url> Save the Authority Server URL
|
|
501
|
+
suveren-gateway config set ca-file <path> Save a CA bundle for internal TLS
|
|
502
|
+
suveren-gateway config set pin-tls on --expect-fingerprint <sha256-hex>
|
|
503
|
+
Pin the Authority Server's TLS certificate
|
|
504
|
+
suveren-gateway config set pin-tls off Stop enforcing the TLS certificate pin
|
|
505
|
+
|
|
506
|
+
Saved in ${join(DATA_DIR, 'config.json')}.
|
|
507
|
+
Precedence at start: --as-url flag > env SUVEREN_AS_URL > saved as-url >
|
|
508
|
+
default (${DEFAULT_AS_URL}).
|
|
509
|
+
|
|
510
|
+
pin-tls (default off, self-hosted Authority Servers with a stable signing
|
|
511
|
+
key) requires https:// and pins the Authority Server's TLS certificate
|
|
512
|
+
public key; every connection after it's established must present that same
|
|
513
|
+
key, or the gateway refuses it and locks (reason: as-tls-mismatch) until an
|
|
514
|
+
operator resolves it. It protects against a party on the network between
|
|
515
|
+
this gateway and the Authority Server presenting its OWN certificate — but
|
|
516
|
+
ONLY from the moment the fingerprint has actually been checked over a
|
|
517
|
+
second channel (phone, a separate trusted connection), which is why
|
|
518
|
+
--expect-fingerprint is mandatory: it is not optional confirmation, it IS
|
|
519
|
+
the check. Recommended: enable it once, right after pairing, from a network
|
|
520
|
+
you already trust.
|
|
521
|
+
|
|
522
|
+
--expect-fingerprint <sha256-hex> The Authority Server's own TLS leaf
|
|
523
|
+
certificate public-key fingerprint (SHA-256 of the SPKI — colons/spacing
|
|
524
|
+
accepted, case-insensitive), confirmed over a second channel BEFORE
|
|
525
|
+
running this command. Without it, this command refuses and prints how to
|
|
526
|
+
obtain the fingerprint yourself.
|
|
527
|
+
- If a pin is already on file and it DIFFERS, this refuses outright —
|
|
528
|
+
clear the pairing first if the certificate changed intentionally (a
|
|
529
|
+
NEW key; a renewal with the SAME key never needs this).
|
|
530
|
+
- If none is on file yet, the value is trusted immediately if a
|
|
531
|
+
signing-key pairing already exists, or staged for the very next
|
|
532
|
+
sign-in's challenge to match (refused otherwise) if it doesn't.
|
|
533
|
+
|
|
534
|
+
Renewing the certificate under the SAME key (e.g. \`certbot renew
|
|
535
|
+
--reuse-key\`) keeps the pin working with no action needed; a renewal under
|
|
536
|
+
a NEW key locks the gateway until an operator re-pairs (clears
|
|
537
|
+
<dataDir>/as-pairing.json and signs in again).
|
|
538
|
+
|
|
539
|
+
Changes take effect on the next \`suveren-gateway start\` / \`restart\` — a
|
|
540
|
+
running gateway keeps using what it already resolved at its own startup.
|
|
541
|
+
`);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
async function config(args) {
|
|
545
|
+
const sub = args[0];
|
|
546
|
+
|
|
547
|
+
if (sub === 'get') {
|
|
548
|
+
const key = args[1];
|
|
549
|
+
const saved = readConfig(DATA_DIR);
|
|
550
|
+
if (!key) {
|
|
551
|
+
console.log(`as-url: ${resolveAsUrl(DATA_DIR)}`);
|
|
552
|
+
console.log(`ca-file: ${saved.caFile ?? '(not set)'}`);
|
|
553
|
+
console.log(`pin-tls: ${resolvePinTls(DATA_DIR) ? 'on' : 'off'}`);
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
if (key === 'as-url') { console.log(resolveAsUrl(DATA_DIR)); return; }
|
|
557
|
+
if (key === 'ca-file') { console.log(saved.caFile ?? ''); return; }
|
|
558
|
+
if (key === 'pin-tls') { console.log(resolvePinTls(DATA_DIR) ? 'on' : 'off'); return; }
|
|
559
|
+
console.error(`Unknown config key: ${key}\n`);
|
|
560
|
+
printConfigHelp();
|
|
561
|
+
process.exit(2);
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
if (sub === 'set') {
|
|
565
|
+
const key = args[1];
|
|
566
|
+
const value = args[2];
|
|
567
|
+
if (key === 'as-url') {
|
|
568
|
+
if (!value) {
|
|
569
|
+
console.error('Usage: suveren-gateway config set as-url <url>');
|
|
570
|
+
process.exit(2);
|
|
571
|
+
}
|
|
572
|
+
const v = validateAsUrl(value);
|
|
573
|
+
if (!v.ok) {
|
|
574
|
+
console.error(`Invalid as-url: ${v.error}`);
|
|
575
|
+
process.exit(1);
|
|
576
|
+
}
|
|
577
|
+
writeConfig(DATA_DIR, { asUrl: v.url });
|
|
578
|
+
console.log(`Saved as-url: ${v.url}`);
|
|
579
|
+
console.log('Restart to pick it up: suveren-gateway restart');
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
582
|
+
if (key === 'ca-file') {
|
|
583
|
+
if (!value) {
|
|
584
|
+
console.error('Usage: suveren-gateway config set ca-file <path>');
|
|
585
|
+
process.exit(2);
|
|
586
|
+
}
|
|
587
|
+
const v = validateCaFile(value);
|
|
588
|
+
if (!v.ok) {
|
|
589
|
+
console.error(`Invalid ca-file: ${v.error}`);
|
|
590
|
+
process.exit(1);
|
|
591
|
+
}
|
|
592
|
+
writeConfig(DATA_DIR, { caFile: v.path });
|
|
593
|
+
console.log(`Saved ca-file: ${v.path}`);
|
|
594
|
+
console.log('Restart to pick it up: suveren-gateway restart');
|
|
595
|
+
return;
|
|
596
|
+
}
|
|
597
|
+
if (key === 'pin-tls') {
|
|
598
|
+
if (value !== 'on' && value !== 'off') {
|
|
599
|
+
console.error('Usage: suveren-gateway config set pin-tls on|off [--expect-fingerprint <sha256-hex>]');
|
|
600
|
+
process.exit(2);
|
|
601
|
+
}
|
|
602
|
+
if (value === 'off') {
|
|
603
|
+
writeConfig(DATA_DIR, { pinTls: false });
|
|
604
|
+
console.log('Saved pin-tls: off');
|
|
605
|
+
console.log('Restart to pick it up: suveren-gateway restart');
|
|
606
|
+
return;
|
|
607
|
+
}
|
|
608
|
+
// value === 'on': requires the out-of-band fingerprint check (see
|
|
609
|
+
// requireConfirmedFingerprint) — never trusts whatever the AS
|
|
610
|
+
// happens to present at the next sign-in without one.
|
|
611
|
+
const effectiveAsUrl = resolveAsUrl(DATA_DIR);
|
|
612
|
+
const v = validatePinTls(effectiveAsUrl);
|
|
613
|
+
if (!v.ok) {
|
|
614
|
+
console.error(`Invalid pin-tls: ${v.error}`);
|
|
615
|
+
process.exit(1);
|
|
616
|
+
}
|
|
617
|
+
const hex = requireConfirmedFingerprint(args, effectiveAsUrl);
|
|
618
|
+
const committed = commitConfirmedFingerprint(DATA_DIR, effectiveAsUrl, hex);
|
|
619
|
+
writeConfig(DATA_DIR, { pinTls: true });
|
|
620
|
+
console.log(`Saved pin-tls: on (fingerprint ${formatFingerprint(hex)} confirmed)`);
|
|
621
|
+
console.log(
|
|
622
|
+
committed === 'pinned'
|
|
623
|
+
? 'Restart to pick it up: suveren-gateway restart'
|
|
624
|
+
: 'Restart and sign in again — the first challenge must match this fingerprint: suveren-gateway restart',
|
|
625
|
+
);
|
|
626
|
+
return;
|
|
627
|
+
}
|
|
628
|
+
console.error(`Unknown config key: ${key}\n`);
|
|
629
|
+
printConfigHelp();
|
|
630
|
+
process.exit(2);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
printConfigHelp();
|
|
634
|
+
if (sub !== undefined && sub !== 'help' && sub !== '--help' && sub !== '-h') process.exit(2);
|
|
635
|
+
}
|
|
636
|
+
|
|
298
637
|
// ─── service: install autostart-on-login (survives reboot) ──────────────
|
|
299
638
|
//
|
|
300
639
|
// Keeps the gateway PROCESS always running (starts on login, restarts on
|
|
@@ -796,19 +1135,33 @@ function printHelp() {
|
|
|
796
1135
|
console.log(`suveren-gateway — Suveren gateway (Human Agency Protocol)
|
|
797
1136
|
|
|
798
1137
|
Usage:
|
|
799
|
-
suveren-gateway start [--detach]
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
suveren-gateway
|
|
804
|
-
suveren-gateway
|
|
805
|
-
|
|
806
|
-
suveren-gateway
|
|
1138
|
+
suveren-gateway start [--detach] Run the gateway (foreground by default)
|
|
1139
|
+
[--as-url <url>] Authority Server URL (saved for next time)
|
|
1140
|
+
[--ca-file <path>] Internal CA bundle (saved for next time)
|
|
1141
|
+
[--pin-tls --expect-fingerprint <hex>] Pin the AS TLS certificate (saved; https:// only — see below)
|
|
1142
|
+
suveren-gateway stop Stop a detached gateway
|
|
1143
|
+
suveren-gateway restart Stop, then start --detach
|
|
1144
|
+
suveren-gateway status Show running state + health
|
|
1145
|
+
suveren-gateway logs [--tail] Print or tail ~/.suveren/gateway.log
|
|
1146
|
+
suveren-gateway service <cmd> Run as a login service that survives reboot
|
|
1147
|
+
(install | uninstall | status)
|
|
1148
|
+
suveren-gateway config get [as-url|ca-file|pin-tls] Print the resolved value(s)
|
|
1149
|
+
suveren-gateway config set as-url <url> Save the Authority Server URL
|
|
1150
|
+
suveren-gateway config set ca-file <path> Save a CA bundle for internal TLS
|
|
1151
|
+
suveren-gateway config set pin-tls on --expect-fingerprint <hex>
|
|
1152
|
+
Pin the Authority Server's TLS certificate
|
|
1153
|
+
(see \`suveren-gateway config help\` for the fingerprint check)
|
|
1154
|
+
suveren-gateway config set pin-tls off Stop enforcing the TLS certificate pin
|
|
1155
|
+
suveren-gateway help Print this help
|
|
807
1156
|
|
|
808
1157
|
Environment:
|
|
809
1158
|
SUVEREN_CP_PORT UI + API port (default 3400)
|
|
810
1159
|
SUVEREN_MCP_PORT MCP server port (default 3430)
|
|
811
1160
|
SUVEREN_DATA_DIR Data directory (default ~/.suveren)
|
|
1161
|
+
SUVEREN_AS_URL Authority Server URL — overrides the saved as-url
|
|
1162
|
+
|
|
1163
|
+
Authority Server resolution order: --as-url flag > SUVEREN_AS_URL env >
|
|
1164
|
+
saved as-url (\`config set as-url\`) > default (${DEFAULT_AS_URL}).
|
|
812
1165
|
`);
|
|
813
1166
|
}
|
|
814
1167
|
|
|
@@ -827,6 +1180,7 @@ async function main() {
|
|
|
827
1180
|
case 'restart': await restart(); break;
|
|
828
1181
|
case 'logs': await logs(argv.slice(1)); break;
|
|
829
1182
|
case 'service': await service(argv.slice(1)); break;
|
|
1183
|
+
case 'config': await config(argv.slice(1)); break;
|
|
830
1184
|
case 'help':
|
|
831
1185
|
case '--help':
|
|
832
1186
|
case '-h':
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "erp",
|
|
3
|
+
"name": "ERP",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"description": "Quote-to-order — items, customers, quotes, orders",
|
|
6
|
+
"icon": "briefcase",
|
|
7
|
+
"profile": "sales",
|
|
8
|
+
"npmPackage": "@humanagencyp/erp-mcp",
|
|
9
|
+
"mcp": {
|
|
10
|
+
"command": "erp-mcp",
|
|
11
|
+
"args": []
|
|
12
|
+
},
|
|
13
|
+
"credentials": {
|
|
14
|
+
"fields": [
|
|
15
|
+
{
|
|
16
|
+
"key": "databaseUrl",
|
|
17
|
+
"label": "Database URL (optional)",
|
|
18
|
+
"type": "text",
|
|
19
|
+
"placeholder": "Leave empty for local SQLite",
|
|
20
|
+
"optional": true
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"envMapping": {
|
|
24
|
+
"DATABASE_URL": "databaseUrl"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"personalDefault": true,
|
|
28
|
+
"oauth": null,
|
|
29
|
+
"toolGating": {
|
|
30
|
+
"default": {
|
|
31
|
+
"executionMapping": {},
|
|
32
|
+
"staticExecution": {}
|
|
33
|
+
},
|
|
34
|
+
"overrides": {
|
|
35
|
+
"list_items": {
|
|
36
|
+
"category": "read",
|
|
37
|
+
"boundField": "read_access",
|
|
38
|
+
"requiredValue": "unlimited"
|
|
39
|
+
},
|
|
40
|
+
"get_item": {
|
|
41
|
+
"category": "read",
|
|
42
|
+
"boundField": "read_access",
|
|
43
|
+
"requiredValue": "unlimited"
|
|
44
|
+
},
|
|
45
|
+
"find_customers": {
|
|
46
|
+
"category": "read",
|
|
47
|
+
"boundField": "read_access",
|
|
48
|
+
"requiredValue": "unlimited"
|
|
49
|
+
},
|
|
50
|
+
"get_customer": {
|
|
51
|
+
"category": "read",
|
|
52
|
+
"boundField": "read_access",
|
|
53
|
+
"requiredValue": "unlimited"
|
|
54
|
+
},
|
|
55
|
+
"list_quotes": {
|
|
56
|
+
"category": "read",
|
|
57
|
+
"boundField": "read_access",
|
|
58
|
+
"requiredValue": "unlimited"
|
|
59
|
+
},
|
|
60
|
+
"get_quote": {
|
|
61
|
+
"category": "read",
|
|
62
|
+
"boundField": "read_access",
|
|
63
|
+
"requiredValue": "unlimited"
|
|
64
|
+
},
|
|
65
|
+
"list_orders": {
|
|
66
|
+
"category": "read",
|
|
67
|
+
"boundField": "read_access",
|
|
68
|
+
"requiredValue": "unlimited"
|
|
69
|
+
},
|
|
70
|
+
"get_order": {
|
|
71
|
+
"category": "read",
|
|
72
|
+
"boundField": "read_access",
|
|
73
|
+
"requiredValue": "unlimited"
|
|
74
|
+
},
|
|
75
|
+
"create_quote": {
|
|
76
|
+
"executionMapping": {
|
|
77
|
+
"value": "value",
|
|
78
|
+
"discount_pct": "discount_pct",
|
|
79
|
+
"currency": "currency"
|
|
80
|
+
},
|
|
81
|
+
"staticExecution": {
|
|
82
|
+
"action_type": "quote"
|
|
83
|
+
},
|
|
84
|
+
"actionLabel": "Quote drafted"
|
|
85
|
+
},
|
|
86
|
+
"update_quote": {
|
|
87
|
+
"executionMapping": {
|
|
88
|
+
"value": "value",
|
|
89
|
+
"discount_pct": "discount_pct",
|
|
90
|
+
"currency": "currency"
|
|
91
|
+
},
|
|
92
|
+
"staticExecution": {
|
|
93
|
+
"action_type": "quote"
|
|
94
|
+
},
|
|
95
|
+
"actionLabel": "Quote updated"
|
|
96
|
+
},
|
|
97
|
+
"send_quote": {
|
|
98
|
+
"executionMapping": {
|
|
99
|
+
"value": "value",
|
|
100
|
+
"discount_pct": "discount_pct",
|
|
101
|
+
"currency": "currency"
|
|
102
|
+
},
|
|
103
|
+
"staticExecution": {
|
|
104
|
+
"action_type": "send"
|
|
105
|
+
},
|
|
106
|
+
"actionLabel": "Quote sent"
|
|
107
|
+
},
|
|
108
|
+
"convert_quote_to_order": {
|
|
109
|
+
"executionMapping": {
|
|
110
|
+
"value": "value",
|
|
111
|
+
"discount_pct": "discount_pct",
|
|
112
|
+
"currency": "currency"
|
|
113
|
+
},
|
|
114
|
+
"staticExecution": {
|
|
115
|
+
"action_type": "order"
|
|
116
|
+
},
|
|
117
|
+
"actionLabel": "Quote converted to order"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"templates": [
|
|
122
|
+
{
|
|
123
|
+
"name": "Draft quotes",
|
|
124
|
+
"description": "Look up items and customers, create and edit draft quotes. Nothing is sent to a customer or converted to an order.",
|
|
125
|
+
"risk": "low",
|
|
126
|
+
"mode": "automatic",
|
|
127
|
+
"bounds": {
|
|
128
|
+
"read_access": "unlimited",
|
|
129
|
+
"value_max": "5000",
|
|
130
|
+
"discount_max": "15",
|
|
131
|
+
"order_value_daily_max": "0",
|
|
132
|
+
"quote_daily_max": "20",
|
|
133
|
+
"send_daily_max": "0",
|
|
134
|
+
"order_daily_max": "0"
|
|
135
|
+
},
|
|
136
|
+
"context": {
|
|
137
|
+
"currency": "EUR"
|
|
138
|
+
},
|
|
139
|
+
"intent": "Allow the agent to browse items and customers and prepare draft quotes for my review. It cannot send a quote to a customer or convert one into an order.",
|
|
140
|
+
"ttl": 2592000,
|
|
141
|
+
"tags": [
|
|
142
|
+
"drafts only",
|
|
143
|
+
"no sends",
|
|
144
|
+
"no orders"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "Send and confirm with review above limit",
|
|
149
|
+
"description": "Draft, send, and convert quotes into orders. Every send and every order requires your approval.",
|
|
150
|
+
"risk": "high",
|
|
151
|
+
"mode": "review",
|
|
152
|
+
"bounds": {
|
|
153
|
+
"read_access": "unlimited",
|
|
154
|
+
"value_max": "20000",
|
|
155
|
+
"discount_max": "20",
|
|
156
|
+
"order_value_daily_max": "50000",
|
|
157
|
+
"quote_daily_max": "50",
|
|
158
|
+
"send_daily_max": "20",
|
|
159
|
+
"order_daily_max": "10"
|
|
160
|
+
},
|
|
161
|
+
"context": {
|
|
162
|
+
"currency": "EUR"
|
|
163
|
+
},
|
|
164
|
+
"intent": "Allow the agent to draft, send, and convert quotes into orders. Every quote sent to a customer and every order requires my review before it happens.",
|
|
165
|
+
"ttl": 2592000,
|
|
166
|
+
"tags": [
|
|
167
|
+
"20k EUR/document",
|
|
168
|
+
"review mode",
|
|
169
|
+
"10 orders/day"
|
|
170
|
+
]
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"setupHint": "No configuration needed — works out of the box.",
|
|
174
|
+
"setupGuide": [
|
|
175
|
+
{
|
|
176
|
+
"title": "Ready to use",
|
|
177
|
+
"description": "The ERP connector stores data locally on your machine, seeded with a small demo catalog and customer list. No external account or API key needed."
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"title": "Optional: use a shared database",
|
|
181
|
+
"description": "For team use, provide a PostgreSQL connection string in the Database URL field. Otherwise, leave it empty to use local SQLite storage."
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
}
|