@antasphere/chassis-server 1.0.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/LICENSE +82 -0
- package/dist/accounts/deletion.d.ts +163 -0
- package/dist/accounts/deletion.d.ts.map +1 -0
- package/dist/accounts/deletion.js +360 -0
- package/dist/accounts/deletion.js.map +1 -0
- package/dist/accounts/erasure-log.d.ts +66 -0
- package/dist/accounts/erasure-log.d.ts.map +1 -0
- package/dist/accounts/erasure-log.js +117 -0
- package/dist/accounts/erasure-log.js.map +1 -0
- package/dist/accounts/index.d.ts +6 -0
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/accounts/index.js +6 -0
- package/dist/accounts/index.js.map +1 -0
- package/dist/accounts/mint-refusal.d.ts +47 -0
- package/dist/accounts/mint-refusal.d.ts.map +1 -0
- package/dist/accounts/mint-refusal.js +59 -0
- package/dist/accounts/mint-refusal.js.map +1 -0
- package/dist/accounts/signup-duplicate.d.ts +14 -0
- package/dist/accounts/signup-duplicate.d.ts.map +1 -0
- package/dist/accounts/signup-duplicate.js +25 -0
- package/dist/accounts/signup-duplicate.js.map +1 -0
- package/dist/accounts/superadmin.d.ts +27 -0
- package/dist/accounts/superadmin.d.ts.map +1 -0
- package/dist/accounts/superadmin.js +46 -0
- package/dist/accounts/superadmin.js.map +1 -0
- package/dist/api/apikeys.d.ts +14 -0
- package/dist/api/apikeys.d.ts.map +1 -0
- package/dist/api/apikeys.js +124 -0
- package/dist/api/apikeys.js.map +1 -0
- package/dist/api/audit.d.ts +4 -0
- package/dist/api/audit.d.ts.map +1 -0
- package/dist/api/audit.js +75 -0
- package/dist/api/audit.js.map +1 -0
- package/dist/api/break-glass.d.ts +48 -0
- package/dist/api/break-glass.d.ts.map +1 -0
- package/dist/api/break-glass.js +217 -0
- package/dist/api/break-glass.js.map +1 -0
- package/dist/api/cli-auth.d.ts +84 -0
- package/dist/api/cli-auth.d.ts.map +1 -0
- package/dist/api/cli-auth.js +177 -0
- package/dist/api/cli-auth.js.map +1 -0
- package/dist/api/create-api.d.ts +123 -0
- package/dist/api/create-api.d.ts.map +1 -0
- package/dist/api/create-api.js +1165 -0
- package/dist/api/create-api.js.map +1 -0
- package/dist/api/demo-passes.d.ts +45 -0
- package/dist/api/demo-passes.d.ts.map +1 -0
- package/dist/api/demo-passes.js +143 -0
- package/dist/api/demo-passes.js.map +1 -0
- package/dist/api/errors.d.ts +5 -0
- package/dist/api/errors.d.ts.map +1 -0
- package/dist/api/errors.js +5 -0
- package/dist/api/errors.js.map +1 -0
- package/dist/api/export.d.ts +63 -0
- package/dist/api/export.d.ts.map +1 -0
- package/dist/api/export.js +393 -0
- package/dist/api/export.js.map +1 -0
- package/dist/api/files.d.ts +40 -0
- package/dist/api/files.d.ts.map +1 -0
- package/dist/api/files.js +150 -0
- package/dist/api/files.js.map +1 -0
- package/dist/api/index.d.ts +17 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +17 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/invitations.d.ts +50 -0
- package/dist/api/invitations.d.ts.map +1 -0
- package/dist/api/invitations.js +313 -0
- package/dist/api/invitations.js.map +1 -0
- package/dist/api/members.d.ts +25 -0
- package/dist/api/members.d.ts.map +1 -0
- package/dist/api/members.js +522 -0
- package/dist/api/members.js.map +1 -0
- package/dist/api/onboarding.d.ts +26 -0
- package/dist/api/onboarding.d.ts.map +1 -0
- package/dist/api/onboarding.js +23 -0
- package/dist/api/onboarding.js.map +1 -0
- package/dist/api/openapi-doc.d.ts +21 -0
- package/dist/api/openapi-doc.d.ts.map +1 -0
- package/dist/api/openapi-doc.js +25 -0
- package/dist/api/openapi-doc.js.map +1 -0
- package/dist/api/projects.d.ts +24 -0
- package/dist/api/projects.d.ts.map +1 -0
- package/dist/api/projects.js +624 -0
- package/dist/api/projects.js.map +1 -0
- package/dist/api/scope-routes.d.ts +12 -0
- package/dist/api/scope-routes.d.ts.map +1 -0
- package/dist/api/scope-routes.js +2 -0
- package/dist/api/scope-routes.js.map +1 -0
- package/dist/api/sso-connect.d.ts +70 -0
- package/dist/api/sso-connect.d.ts.map +1 -0
- package/dist/api/sso-connect.js +164 -0
- package/dist/api/sso-connect.js.map +1 -0
- package/dist/api/sso-logout.d.ts +41 -0
- package/dist/api/sso-logout.d.ts.map +1 -0
- package/dist/api/sso-logout.js +34 -0
- package/dist/api/sso-logout.js.map +1 -0
- package/dist/api/teams.d.ts +43 -0
- package/dist/api/teams.d.ts.map +1 -0
- package/dist/api/teams.js +447 -0
- package/dist/api/teams.js.map +1 -0
- package/dist/api/workspaces.d.ts +114 -0
- package/dist/api/workspaces.d.ts.map +1 -0
- package/dist/api/workspaces.js +462 -0
- package/dist/api/workspaces.js.map +1 -0
- package/dist/apikeys/index.d.ts +3 -0
- package/dist/apikeys/index.d.ts.map +1 -0
- package/dist/apikeys/index.js +3 -0
- package/dist/apikeys/index.js.map +1 -0
- package/dist/apikeys/peppers.d.ts +53 -0
- package/dist/apikeys/peppers.d.ts.map +1 -0
- package/dist/apikeys/peppers.js +97 -0
- package/dist/apikeys/peppers.js.map +1 -0
- package/dist/apikeys/service.d.ts +56 -0
- package/dist/apikeys/service.d.ts.map +1 -0
- package/dist/apikeys/service.js +196 -0
- package/dist/apikeys/service.js.map +1 -0
- package/dist/app.d.ts +65 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +142 -0
- package/dist/app.js.map +1 -0
- package/dist/audit/filters.d.ts +38 -0
- package/dist/audit/filters.d.ts.map +1 -0
- package/dist/audit/filters.js +97 -0
- package/dist/audit/filters.js.map +1 -0
- package/dist/audit/index.d.ts +3 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +3 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/service.d.ts +65 -0
- package/dist/audit/service.d.ts.map +1 -0
- package/dist/audit/service.js +103 -0
- package/dist/audit/service.js.map +1 -0
- package/dist/boot.d.ts +8 -0
- package/dist/boot.d.ts.map +1 -0
- package/dist/boot.js +822 -0
- package/dist/boot.js.map +1 -0
- package/dist/constant-time.d.ts +3 -0
- package/dist/constant-time.d.ts.map +1 -0
- package/dist/constant-time.js +10 -0
- package/dist/constant-time.js.map +1 -0
- package/dist/email/driver.d.ts +16 -0
- package/dist/email/driver.d.ts.map +1 -0
- package/dist/email/driver.js +136 -0
- package/dist/email/driver.js.map +1 -0
- package/dist/email/index.d.ts +4 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +4 -0
- package/dist/email/index.js.map +1 -0
- package/dist/email/shell.d.ts +72 -0
- package/dist/email/shell.d.ts.map +1 -0
- package/dist/email/shell.js +146 -0
- package/dist/email/shell.js.map +1 -0
- package/dist/email/templates.d.ts +83 -0
- package/dist/email/templates.d.ts.map +1 -0
- package/dist/email/templates.js +96 -0
- package/dist/email/templates.js.map +1 -0
- package/dist/entitlements/check.d.ts +140 -0
- package/dist/entitlements/check.d.ts.map +1 -0
- package/dist/entitlements/check.js +276 -0
- package/dist/entitlements/check.js.map +1 -0
- package/dist/entitlements/clock-skew.d.ts +27 -0
- package/dist/entitlements/clock-skew.d.ts.map +1 -0
- package/dist/entitlements/clock-skew.js +58 -0
- package/dist/entitlements/clock-skew.js.map +1 -0
- package/dist/entitlements/gate.d.ts +113 -0
- package/dist/entitlements/gate.d.ts.map +1 -0
- package/dist/entitlements/gate.js +430 -0
- package/dist/entitlements/gate.js.map +1 -0
- package/dist/entitlements/hub-machine-token.d.ts +83 -0
- package/dist/entitlements/hub-machine-token.d.ts.map +1 -0
- package/dist/entitlements/hub-machine-token.js +175 -0
- package/dist/entitlements/hub-machine-token.js.map +1 -0
- package/dist/entitlements/hub-subject.d.ts +32 -0
- package/dist/entitlements/hub-subject.d.ts.map +1 -0
- package/dist/entitlements/hub-subject.js +68 -0
- package/dist/entitlements/hub-subject.js.map +1 -0
- package/dist/entitlements/index.d.ts +9 -0
- package/dist/entitlements/index.d.ts.map +1 -0
- package/dist/entitlements/index.js +9 -0
- package/dist/entitlements/index.js.map +1 -0
- package/dist/entitlements/poster.d.ts +81 -0
- package/dist/entitlements/poster.d.ts.map +1 -0
- package/dist/entitlements/poster.js +169 -0
- package/dist/entitlements/poster.js.map +1 -0
- package/dist/entitlements/profiles.d.ts +121 -0
- package/dist/entitlements/profiles.d.ts.map +1 -0
- package/dist/entitlements/profiles.js +212 -0
- package/dist/entitlements/profiles.js.map +1 -0
- package/dist/entitlements/slot.d.ts +33 -0
- package/dist/entitlements/slot.d.ts.map +1 -0
- package/dist/entitlements/slot.js +75 -0
- package/dist/entitlements/slot.js.map +1 -0
- package/dist/env.d.ts +293 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +383 -0
- package/dist/env.js.map +1 -0
- package/dist/files/http.d.ts +23 -0
- package/dist/files/http.d.ts.map +1 -0
- package/dist/files/http.js +66 -0
- package/dist/files/http.js.map +1 -0
- package/dist/files/index.d.ts +5 -0
- package/dist/files/index.d.ts.map +1 -0
- package/dist/files/index.js +5 -0
- package/dist/files/index.js.map +1 -0
- package/dist/files/serve.d.ts +43 -0
- package/dist/files/serve.d.ts.map +1 -0
- package/dist/files/serve.js +71 -0
- package/dist/files/serve.js.map +1 -0
- package/dist/files/service.d.ts +69 -0
- package/dist/files/service.d.ts.map +1 -0
- package/dist/files/service.js +188 -0
- package/dist/files/service.js.map +1 -0
- package/dist/files/spool.d.ts +21 -0
- package/dist/files/spool.d.ts.map +1 -0
- package/dist/files/spool.js +47 -0
- package/dist/files/spool.js.map +1 -0
- package/dist/identity/better-auth.d.ts +3927 -0
- package/dist/identity/better-auth.d.ts.map +1 -0
- package/dist/identity/better-auth.js +896 -0
- package/dist/identity/better-auth.js.map +1 -0
- package/dist/identity/demo-pass-plugin.d.ts +29 -0
- package/dist/identity/demo-pass-plugin.d.ts.map +1 -0
- package/dist/identity/demo-pass-plugin.js +88 -0
- package/dist/identity/demo-pass-plugin.js.map +1 -0
- package/dist/identity/demo-pass-rules.d.ts +84 -0
- package/dist/identity/demo-pass-rules.d.ts.map +1 -0
- package/dist/identity/demo-pass-rules.js +223 -0
- package/dist/identity/demo-pass-rules.js.map +1 -0
- package/dist/identity/demo-pass.d.ts +159 -0
- package/dist/identity/demo-pass.d.ts.map +1 -0
- package/dist/identity/demo-pass.js +319 -0
- package/dist/identity/demo-pass.js.map +1 -0
- package/dist/identity/hub-grant.d.ts +182 -0
- package/dist/identity/hub-grant.d.ts.map +1 -0
- package/dist/identity/hub-grant.js +594 -0
- package/dist/identity/hub-grant.js.map +1 -0
- package/dist/identity/hub-jwt.d.ts +22 -0
- package/dist/identity/hub-jwt.d.ts.map +1 -0
- package/dist/identity/hub-jwt.js +77 -0
- package/dist/identity/hub-jwt.js.map +1 -0
- package/dist/identity/hub-live-gate.d.ts +17 -0
- package/dist/identity/hub-live-gate.d.ts.map +1 -0
- package/dist/identity/hub-live-gate.js +146 -0
- package/dist/identity/hub-live-gate.js.map +1 -0
- package/dist/identity/hub-logout.d.ts +88 -0
- package/dist/identity/hub-logout.d.ts.map +1 -0
- package/dist/identity/hub-logout.js +158 -0
- package/dist/identity/hub-logout.js.map +1 -0
- package/dist/identity/hub-projection.d.ts +103 -0
- package/dist/identity/hub-projection.d.ts.map +1 -0
- package/dist/identity/hub-projection.js +130 -0
- package/dist/identity/hub-projection.js.map +1 -0
- package/dist/identity/hub-reconcile.d.ts +151 -0
- package/dist/identity/hub-reconcile.d.ts.map +1 -0
- package/dist/identity/hub-reconcile.js +400 -0
- package/dist/identity/hub-reconcile.js.map +1 -0
- package/dist/identity/hub-sso.d.ts +363 -0
- package/dist/identity/hub-sso.d.ts.map +1 -0
- package/dist/identity/hub-sso.js +536 -0
- package/dist/identity/hub-sso.js.map +1 -0
- package/dist/identity/hub-user-client.d.ts +222 -0
- package/dist/identity/hub-user-client.d.ts.map +1 -0
- package/dist/identity/hub-user-client.js +406 -0
- package/dist/identity/hub-user-client.js.map +1 -0
- package/dist/identity/index.d.ts +13 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +13 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/oauth-jwt.d.ts +32 -0
- package/dist/identity/oauth-jwt.d.ts.map +1 -0
- package/dist/identity/oauth-jwt.js +122 -0
- package/dist/identity/oauth-jwt.js.map +1 -0
- package/dist/identity/resolve-membership.d.ts +28 -0
- package/dist/identity/resolve-membership.d.ts.map +1 -0
- package/dist/identity/resolve-membership.js +69 -0
- package/dist/identity/resolve-membership.js.map +1 -0
- package/dist/identity/signing-key.d.ts +49 -0
- package/dist/identity/signing-key.d.ts.map +1 -0
- package/dist/identity/signing-key.js +144 -0
- package/dist/identity/signing-key.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/invitations/index.d.ts +2 -0
- package/dist/invitations/index.d.ts.map +1 -0
- package/dist/invitations/index.js +2 -0
- package/dist/invitations/index.js.map +1 -0
- package/dist/invitations/service.d.ts +36 -0
- package/dist/invitations/service.d.ts.map +1 -0
- package/dist/invitations/service.js +122 -0
- package/dist/invitations/service.js.map +1 -0
- package/dist/jobs/index.d.ts +3 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +3 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/pgboss.d.ts +119 -0
- package/dist/jobs/pgboss.d.ts.map +1 -0
- package/dist/jobs/pgboss.js +521 -0
- package/dist/jobs/pgboss.js.map +1 -0
- package/dist/jobs/timers.d.ts +127 -0
- package/dist/jobs/timers.d.ts.map +1 -0
- package/dist/jobs/timers.js +228 -0
- package/dist/jobs/timers.js.map +1 -0
- package/dist/logger.d.ts +17 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +64 -0
- package/dist/logger.js.map +1 -0
- package/dist/mcp/errors.d.ts +37 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +77 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/http.d.ts +35 -0
- package/dist/mcp/http.d.ts.map +1 -0
- package/dist/mcp/http.js +80 -0
- package/dist/mcp/http.js.map +1 -0
- package/dist/mcp/index.d.ts +8 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/inputs.d.ts +19 -0
- package/dist/mcp/inputs.d.ts.map +1 -0
- package/dist/mcp/inputs.js +28 -0
- package/dist/mcp/inputs.js.map +1 -0
- package/dist/mcp/projects.d.ts +31 -0
- package/dist/mcp/projects.d.ts.map +1 -0
- package/dist/mcp/projects.js +315 -0
- package/dist/mcp/projects.js.map +1 -0
- package/dist/mcp/server.d.ts +52 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +93 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/teams.d.ts +7 -0
- package/dist/mcp/teams.d.ts.map +1 -0
- package/dist/mcp/teams.js +62 -0
- package/dist/mcp/teams.js.map +1 -0
- package/dist/mcp/tool-kit.d.ts +67 -0
- package/dist/mcp/tool-kit.d.ts.map +1 -0
- package/dist/mcp/tool-kit.js +74 -0
- package/dist/mcp/tool-kit.js.map +1 -0
- package/dist/members/removal.d.ts +95 -0
- package/dist/members/removal.d.ts.map +1 -0
- package/dist/members/removal.js +143 -0
- package/dist/members/removal.js.map +1 -0
- package/dist/middleware/auth-body.d.ts +25 -0
- package/dist/middleware/auth-body.d.ts.map +1 -0
- package/dist/middleware/auth-body.js +55 -0
- package/dist/middleware/auth-body.js.map +1 -0
- package/dist/middleware/auth-context.d.ts +170 -0
- package/dist/middleware/auth-context.d.ts.map +1 -0
- package/dist/middleware/auth-context.js +251 -0
- package/dist/middleware/auth-context.js.map +1 -0
- package/dist/middleware/body-cap.d.ts +17 -0
- package/dist/middleware/body-cap.d.ts.map +1 -0
- package/dist/middleware/body-cap.js +31 -0
- package/dist/middleware/body-cap.js.map +1 -0
- package/dist/middleware/body-refusal.d.ts +20 -0
- package/dist/middleware/body-refusal.d.ts.map +1 -0
- package/dist/middleware/body-refusal.js +5 -0
- package/dist/middleware/body-refusal.js.map +1 -0
- package/dist/middleware/cross-site.d.ts +61 -0
- package/dist/middleware/cross-site.d.ts.map +1 -0
- package/dist/middleware/cross-site.js +59 -0
- package/dist/middleware/cross-site.js.map +1 -0
- package/dist/middleware/hub-managed.d.ts +45 -0
- package/dist/middleware/hub-managed.d.ts.map +1 -0
- package/dist/middleware/hub-managed.js +56 -0
- package/dist/middleware/hub-managed.js.map +1 -0
- package/dist/middleware/idempotency.d.ts +14 -0
- package/dist/middleware/idempotency.d.ts.map +1 -0
- package/dist/middleware/idempotency.js +222 -0
- package/dist/middleware/idempotency.js.map +1 -0
- package/dist/middleware/index.d.ts +12 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +12 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/json-depth.d.ts +32 -0
- package/dist/middleware/json-depth.d.ts.map +1 -0
- package/dist/middleware/json-depth.js +80 -0
- package/dist/middleware/json-depth.js.map +1 -0
- package/dist/middleware/no-store.d.ts +21 -0
- package/dist/middleware/no-store.d.ts.map +1 -0
- package/dist/middleware/no-store.js +32 -0
- package/dist/middleware/no-store.js.map +1 -0
- package/dist/middleware/oauth-public.d.ts +16 -0
- package/dist/middleware/oauth-public.d.ts.map +1 -0
- package/dist/middleware/oauth-public.js +50 -0
- package/dist/middleware/oauth-public.js.map +1 -0
- package/dist/middleware/rate-limit.d.ts +182 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -0
- package/dist/middleware/rate-limit.js +277 -0
- package/dist/middleware/rate-limit.js.map +1 -0
- package/dist/middleware/request-id.d.ts +10 -0
- package/dist/middleware/request-id.d.ts.map +1 -0
- package/dist/middleware/request-id.js +42 -0
- package/dist/middleware/request-id.js.map +1 -0
- package/dist/middleware/scopes.d.ts +33 -0
- package/dist/middleware/scopes.d.ts.map +1 -0
- package/dist/middleware/scopes.js +139 -0
- package/dist/middleware/scopes.js.map +1 -0
- package/dist/middleware/security-headers.d.ts +53 -0
- package/dist/middleware/security-headers.d.ts.map +1 -0
- package/dist/middleware/security-headers.js +96 -0
- package/dist/middleware/security-headers.js.map +1 -0
- package/dist/observability/index.d.ts +3 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +3 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/metrics.d.ts +17 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +82 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/otel.d.ts +20 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +54 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/pagination.d.ts +57 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +90 -0
- package/dist/pagination.js.map +1 -0
- package/dist/platform/edition.d.ts +57 -0
- package/dist/platform/edition.d.ts.map +1 -0
- package/dist/platform/edition.js +90 -0
- package/dist/platform/edition.js.map +1 -0
- package/dist/platform/entitlements.d.ts +26 -0
- package/dist/platform/entitlements.d.ts.map +1 -0
- package/dist/platform/entitlements.js +28 -0
- package/dist/platform/entitlements.js.map +1 -0
- package/dist/platform/events.d.ts +87 -0
- package/dist/platform/events.d.ts.map +1 -0
- package/dist/platform/events.js +32 -0
- package/dist/platform/events.js.map +1 -0
- package/dist/platform/index.d.ts +8 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +8 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/local-identity.d.ts +39 -0
- package/dist/platform/local-identity.d.ts.map +1 -0
- package/dist/platform/local-identity.js +87 -0
- package/dist/platform/local-identity.js.map +1 -0
- package/dist/platform/registry.d.ts +23 -0
- package/dist/platform/registry.d.ts.map +1 -0
- package/dist/platform/registry.js +5 -0
- package/dist/platform/registry.js.map +1 -0
- package/dist/platform/usage.d.ts +11 -0
- package/dist/platform/usage.d.ts.map +1 -0
- package/dist/platform/usage.js +12 -0
- package/dist/platform/usage.js.map +1 -0
- package/dist/platform/workspaces.d.ts +25 -0
- package/dist/platform/workspaces.d.ts.map +1 -0
- package/dist/platform/workspaces.js +44 -0
- package/dist/platform/workspaces.js.map +1 -0
- package/dist/projects/access.d.ts +40 -0
- package/dist/projects/access.d.ts.map +1 -0
- package/dist/projects/access.js +133 -0
- package/dist/projects/access.js.map +1 -0
- package/dist/projects/index.d.ts +2 -0
- package/dist/projects/index.d.ts.map +1 -0
- package/dist/projects/index.js +2 -0
- package/dist/projects/index.js.map +1 -0
- package/dist/route-label.d.ts +23 -0
- package/dist/route-label.d.ts.map +1 -0
- package/dist/route-label.js +29 -0
- package/dist/route-label.js.map +1 -0
- package/dist/routes/health.d.ts +30 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +54 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/index.d.ts +3 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +3 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/wellknown.d.ts +11 -0
- package/dist/routes/wellknown.d.ts.map +1 -0
- package/dist/routes/wellknown.js +45 -0
- package/dist/routes/wellknown.js.map +1 -0
- package/dist/secret.d.ts +30 -0
- package/dist/secret.d.ts.map +1 -0
- package/dist/secret.js +97 -0
- package/dist/secret.js.map +1 -0
- package/dist/setup-transport.d.ts +23 -0
- package/dist/setup-transport.d.ts.map +1 -0
- package/dist/setup-transport.js +52 -0
- package/dist/setup-transport.js.map +1 -0
- package/dist/state.d.ts +21 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +4 -0
- package/dist/state.js.map +1 -0
- package/dist/storage/driver.d.ts +38 -0
- package/dist/storage/driver.d.ts.map +1 -0
- package/dist/storage/driver.js +14 -0
- package/dist/storage/driver.js.map +1 -0
- package/dist/storage/factory.d.ts +4 -0
- package/dist/storage/factory.d.ts.map +1 -0
- package/dist/storage/factory.js +20 -0
- package/dist/storage/factory.js.map +1 -0
- package/dist/storage/index.d.ts +4 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +4 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/local.d.ts +21 -0
- package/dist/storage/local.d.ts.map +1 -0
- package/dist/storage/local.js +88 -0
- package/dist/storage/local.js.map +1 -0
- package/dist/storage/s3.d.ts +29 -0
- package/dist/storage/s3.d.ts.map +1 -0
- package/dist/storage/s3.js +82 -0
- package/dist/storage/s3.js.map +1 -0
- package/dist/testing/fake-hub.d.ts +425 -0
- package/dist/testing/fake-hub.d.ts.map +1 -0
- package/dist/testing/fake-hub.js +1074 -0
- package/dist/testing/fake-hub.js.map +1 -0
- package/dist/testing/helpers.d.ts +124 -0
- package/dist/testing/helpers.d.ts.map +1 -0
- package/dist/testing/helpers.js +174 -0
- package/dist/testing/helpers.js.map +1 -0
- package/dist/testing/index.d.ts +12 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +12 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/setup-origins.d.ts +21 -0
- package/dist/testing/setup-origins.d.ts.map +1 -0
- package/dist/testing/setup-origins.js +57 -0
- package/dist/testing/setup-origins.js.map +1 -0
- package/dist/testing/sso-helpers.d.ts +43 -0
- package/dist/testing/sso-helpers.d.ts.map +1 -0
- package/dist/testing/sso-helpers.js +159 -0
- package/dist/testing/sso-helpers.js.map +1 -0
- package/dist/tool-definition.d.ts +382 -0
- package/dist/tool-definition.d.ts.map +1 -0
- package/dist/tool-definition.js +46 -0
- package/dist/tool-definition.js.map +1 -0
- package/dist/util/index.d.ts +8 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +8 -0
- package/dist/util/index.js.map +1 -0
- package/package.json +161 -0
- package/src/accounts/deletion.ts +389 -0
- package/src/accounts/erasure-log.ts +140 -0
- package/src/accounts/index.ts +5 -0
- package/src/accounts/mint-refusal.ts +67 -0
- package/src/accounts/signup-duplicate.ts +21 -0
- package/src/accounts/superadmin.ts +46 -0
- package/src/api/apikeys.ts +147 -0
- package/src/api/audit.ts +83 -0
- package/src/api/break-glass.ts +294 -0
- package/src/api/cli-auth.ts +308 -0
- package/src/api/create-api.ts +1403 -0
- package/src/api/demo-passes.ts +207 -0
- package/src/api/errors.ts +13 -0
- package/src/api/export.ts +482 -0
- package/src/api/files.ts +200 -0
- package/src/api/index.ts +29 -0
- package/src/api/invitations.ts +396 -0
- package/src/api/members.ts +617 -0
- package/src/api/onboarding.ts +50 -0
- package/src/api/openapi-doc.ts +34 -0
- package/src/api/projects.ts +788 -0
- package/src/api/scope-routes.ts +12 -0
- package/src/api/sso-connect.ts +246 -0
- package/src/api/sso-logout.ts +76 -0
- package/src/api/teams.ts +575 -0
- package/src/api/workspaces.ts +649 -0
- package/src/apikeys/index.ts +2 -0
- package/src/apikeys/peppers.ts +118 -0
- package/src/apikeys/service.ts +223 -0
- package/src/app.ts +228 -0
- package/src/audit/filters.ts +101 -0
- package/src/audit/index.ts +9 -0
- package/src/audit/service.ts +154 -0
- package/src/boot.ts +953 -0
- package/src/constant-time.ts +9 -0
- package/src/email/driver.ts +139 -0
- package/src/email/index.ts +26 -0
- package/src/email/shell.ts +201 -0
- package/src/email/templates.ts +184 -0
- package/src/entitlements/check.ts +435 -0
- package/src/entitlements/clock-skew.ts +58 -0
- package/src/entitlements/gate.ts +636 -0
- package/src/entitlements/hub-machine-token.ts +205 -0
- package/src/entitlements/hub-subject.ts +77 -0
- package/src/entitlements/index.ts +37 -0
- package/src/entitlements/poster.ts +265 -0
- package/src/entitlements/profiles.ts +303 -0
- package/src/entitlements/slot.ts +105 -0
- package/src/env.ts +456 -0
- package/src/files/http.ts +77 -0
- package/src/files/index.ts +4 -0
- package/src/files/serve.ts +115 -0
- package/src/files/service.ts +209 -0
- package/src/files/spool.ts +58 -0
- package/src/identity/better-auth.ts +1103 -0
- package/src/identity/demo-pass-plugin.ts +121 -0
- package/src/identity/demo-pass-rules.ts +229 -0
- package/src/identity/demo-pass.ts +390 -0
- package/src/identity/hub-grant.ts +704 -0
- package/src/identity/hub-jwt.ts +78 -0
- package/src/identity/hub-live-gate.ts +167 -0
- package/src/identity/hub-logout.ts +174 -0
- package/src/identity/hub-projection.ts +251 -0
- package/src/identity/hub-reconcile.ts +572 -0
- package/src/identity/hub-sso.ts +696 -0
- package/src/identity/hub-user-client.ts +554 -0
- package/src/identity/index.ts +56 -0
- package/src/identity/oauth-jwt.ts +128 -0
- package/src/identity/resolve-membership.ts +104 -0
- package/src/identity/signing-key.ts +164 -0
- package/src/index.ts +65 -0
- package/src/invitations/index.ts +1 -0
- package/src/invitations/service.ts +171 -0
- package/src/jobs/index.ts +25 -0
- package/src/jobs/pgboss.ts +594 -0
- package/src/jobs/timers.ts +287 -0
- package/src/logger.ts +67 -0
- package/src/mcp/errors.ts +111 -0
- package/src/mcp/http.ts +129 -0
- package/src/mcp/index.ts +28 -0
- package/src/mcp/inputs.ts +33 -0
- package/src/mcp/projects.ts +480 -0
- package/src/mcp/server.ts +174 -0
- package/src/mcp/teams.ts +97 -0
- package/src/mcp/tool-kit.ts +148 -0
- package/src/members/removal.ts +216 -0
- package/src/middleware/auth-body.ts +58 -0
- package/src/middleware/auth-context.ts +384 -0
- package/src/middleware/body-cap.ts +33 -0
- package/src/middleware/body-refusal.ts +23 -0
- package/src/middleware/cross-site.ts +122 -0
- package/src/middleware/hub-managed.ts +61 -0
- package/src/middleware/idempotency.ts +264 -0
- package/src/middleware/index.ts +33 -0
- package/src/middleware/json-depth.ts +74 -0
- package/src/middleware/no-store.ts +30 -0
- package/src/middleware/oauth-public.ts +54 -0
- package/src/middleware/rate-limit.ts +432 -0
- package/src/middleware/request-id.ts +54 -0
- package/src/middleware/scopes.ts +150 -0
- package/src/middleware/security-headers.ts +129 -0
- package/src/observability/index.ts +2 -0
- package/src/observability/metrics.ts +102 -0
- package/src/observability/otel.ts +79 -0
- package/src/pagination.ts +118 -0
- package/src/platform/edition.ts +140 -0
- package/src/platform/entitlements.ts +47 -0
- package/src/platform/events.ts +71 -0
- package/src/platform/index.ts +7 -0
- package/src/platform/local-identity.ts +90 -0
- package/src/platform/registry.ts +28 -0
- package/src/platform/usage.ts +13 -0
- package/src/platform/workspaces.ts +41 -0
- package/src/projects/access.ts +160 -0
- package/src/projects/index.ts +7 -0
- package/src/route-label.ts +29 -0
- package/src/routes/health.ts +79 -0
- package/src/routes/index.ts +2 -0
- package/src/routes/wellknown.ts +67 -0
- package/src/secret.ts +115 -0
- package/src/setup-transport.ts +46 -0
- package/src/state.ts +23 -0
- package/src/storage/driver.ts +48 -0
- package/src/storage/factory.ts +34 -0
- package/src/storage/index.ts +3 -0
- package/src/storage/local.ts +93 -0
- package/src/storage/s3.ts +109 -0
- package/src/testing/fake-hub.ts +1316 -0
- package/src/testing/helpers.ts +254 -0
- package/src/testing/index.ts +11 -0
- package/src/testing/setup-origins.ts +58 -0
- package/src/testing/sso-helpers.ts +178 -0
- package/src/tool-definition.ts +463 -0
- package/src/util/index.ts +17 -0
- package/test/fixtures/onboarding-backfill.sql +13 -0
- package/test/fixtures/operator-user-id-backfill.sql +18 -0
- package/test/host/dr-lib.sh +253 -0
- package/test/host/drizzle/0000_chassis_baseline.sql +438 -0
- package/test/host/drizzle/0001_last_owner_guard.sql +42 -0
- package/test/host/drizzle/meta/0000_snapshot.json +3566 -0
- package/test/host/drizzle/meta/_journal.json +20 -0
- package/test/host/drizzle.config.ts +17 -0
- package/test/host/identity.ts +41 -0
- package/test/host/minimal-host.ts +35 -0
- package/test/host/minimal-tool.ts +123 -0
- package/test/integration/account-oracle-uniformity.test.ts +284 -0
- package/test/integration/account-recovery.test.ts +236 -0
- package/test/integration/account.test.ts +120 -0
- package/test/integration/api-quota.test.ts +208 -0
- package/test/integration/apikey-expiry.test.ts +178 -0
- package/test/integration/apikey-pepper-rotation.test.ts +190 -0
- package/test/integration/boot-posture.test.ts +169 -0
- package/test/integration/break-glass.test.ts +484 -0
- package/test/integration/cloud-lifecycle.test.ts +233 -0
- package/test/integration/credential-boundaries.test.ts +195 -0
- package/test/integration/default-workspace.test.ts +414 -0
- package/test/integration/demo-pass-rules.test.ts +332 -0
- package/test/integration/demo-pass.test.ts +1222 -0
- package/test/integration/dr-verify-real-dump.test.ts +154 -0
- package/test/integration/edition.test.ts +868 -0
- package/test/integration/email-change.test.ts +394 -0
- package/test/integration/empty-tool.test.ts +267 -0
- package/test/integration/entitlements-null-hook.test.ts +187 -0
- package/test/integration/entitlements.test.ts +693 -0
- package/test/integration/export-entries.test.ts +321 -0
- package/test/integration/files.test.ts +320 -0
- package/test/integration/first-boot-claim.test.ts +131 -0
- package/test/integration/gdpr.test.ts +532 -0
- package/test/integration/helpers.ts +29 -0
- package/test/integration/hub-grant.test.ts +505 -0
- package/test/integration/hub-live-gate.test.ts +612 -0
- package/test/integration/hub-managed-membership.test.ts +559 -0
- package/test/integration/hub-org-selector.test.ts +281 -0
- package/test/integration/hub-reconcile.test.ts +646 -0
- package/test/integration/hub-sso.test.ts +704 -0
- package/test/integration/hub-teams.test.ts +771 -0
- package/test/integration/idempotency.test.ts +261 -0
- package/test/integration/invite-verification.test.ts +210 -0
- package/test/integration/last-owner-race.test.ts +263 -0
- package/test/integration/m9-fixes.test.ts +290 -0
- package/test/integration/mcp-projects.test.ts +463 -0
- package/test/integration/member-removal-race.test.ts +466 -0
- package/test/integration/member-removal.test.ts +794 -0
- package/test/integration/oauth-mcp.test.ts +477 -0
- package/test/integration/oauth-workspace.test.ts +371 -0
- package/test/integration/observability.test.ts +183 -0
- package/test/integration/onboarding.test.ts +268 -0
- package/test/integration/orphan-purge.test.ts +451 -0
- package/test/integration/pagination.test.ts +344 -0
- package/test/integration/platform-core.test.ts +305 -0
- package/test/integration/platform.test.ts +246 -0
- package/test/integration/pool-survives-restart.test.ts +80 -0
- package/test/integration/projects-cloud.test.ts +193 -0
- package/test/integration/projects.test.ts +1310 -0
- package/test/integration/security-fixes.test.ts +190 -0
- package/test/integration/setup-transport.test.ts +118 -0
- package/test/integration/signin-wall.test.ts +103 -0
- package/test/integration/signing-key-rotation.test.ts +349 -0
- package/test/integration/sso-helpers.ts +15 -0
- package/test/integration/sso-logout.test.ts +283 -0
- package/test/integration/teams-cloud.test.ts +194 -0
- package/test/integration/teams.test.ts +551 -0
- package/test/integration/timers.test.ts +377 -0
- package/test/integration/two-factor.test.ts +301 -0
- package/test/integration/usage-window.test.ts +161 -0
- package/test/integration/workspace-create-cloud.test.ts +523 -0
- package/test/integration/workspace-create.test.ts +510 -0
- package/test/integration/workspace-scoping.test.ts +530 -0
- package/test/integration/zz-adv-replay-owner.test.ts +205 -0
- package/test/unit/apikey-peppers.test.ts +110 -0
- package/test/unit/apikey-prefix.test.ts +34 -0
- package/test/unit/audit-filters.test.ts +135 -0
- package/test/unit/auth-origins.test.ts +92 -0
- package/test/unit/body-cap.test.ts +84 -0
- package/test/unit/clock-skew.test.ts +68 -0
- package/test/unit/cross-site.test.ts +166 -0
- package/test/unit/declared-credits.test.ts +13 -0
- package/test/unit/demo-pass-rules.test.ts +192 -0
- package/test/unit/email-driver.test.ts +127 -0
- package/test/unit/end-pool.test.ts +181 -0
- package/test/unit/entitlement-check.test.ts +492 -0
- package/test/unit/entitlement-gate.test.ts +1333 -0
- package/test/unit/entitlement-profiles.test.ts +289 -0
- package/test/unit/erasure-log.test.ts +72 -0
- package/test/unit/error-mapping.test.ts +89 -0
- package/test/unit/export-entries.test.ts +85 -0
- package/test/unit/export-sanitize.test.ts +27 -0
- package/test/unit/files-head-route.test.ts +155 -0
- package/test/unit/files-http.test.ts +97 -0
- package/test/unit/head-rewrite.test.ts +72 -0
- package/test/unit/hub-create-org.test.ts +181 -0
- package/test/unit/hub-jwt.test.ts +93 -0
- package/test/unit/hub-sso-params.test.ts +39 -0
- package/test/unit/hub-subject.test.ts +83 -0
- package/test/unit/idempotency-crypto.test.ts +45 -0
- package/test/unit/json-depth.test.ts +88 -0
- package/test/unit/logger-redaction.test.ts +66 -0
- package/test/unit/mcp-errors.test.ts +110 -0
- package/test/unit/mcp-inputs.test.ts +106 -0
- package/test/unit/mcp-project-hints.test.ts +26 -0
- package/test/unit/no-store.test.ts +49 -0
- package/test/unit/no-tool-migration-filename.test.ts +70 -0
- package/test/unit/observability.test.ts +64 -0
- package/test/unit/openapi-doc.test.ts +93 -0
- package/test/unit/rate-limit-consume-on.test.ts +76 -0
- package/test/unit/rate-limit.test.ts +39 -0
- package/test/unit/readyz-storage.test.ts +157 -0
- package/test/unit/request-quota.test.ts +146 -0
- package/test/unit/scopes.test.ts +66 -0
- package/test/unit/security-headers.test.ts +131 -0
- package/test/unit/serve-content-type.test.ts +74 -0
- package/test/unit/setup-transport.test.ts +29 -0
- package/test/unit/storage-local.test.ts +53 -0
- package/test/unit/superadmin.test.ts +32 -0
- package/test/unit/timers.test.ts +287 -0
- package/test/unit/tool-definition-guards.test.ts +166 -0
- package/test/unit/tool-entitlements-guard.test.ts +168 -0
- package/test/unit/usage-poster.test.ts +542 -0
- package/test/unit/usage-window.test.ts +48 -0
- package/test/unit/workspace-create-audit.test.ts +48 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A minimal in-process Antasphere-hub stand-in for tests, faithful to the
|
|
3
|
+
* USER-SCOPED federation contract (internal/federation.md; verified against the
|
|
4
|
+
* hub's Stage A `api/orgs.ts` + the pinned oauth-provider plugin):
|
|
5
|
+
*
|
|
6
|
+
* - OIDC discovery + JWKS + token endpoint. The token endpoint honors
|
|
7
|
+
* `grant_type=authorization_code` (one-shot codes via `mintCode`) AND
|
|
8
|
+
* `grant_type=refresh_token` with ROTATION + RFC 9700 REUSE DETECTION:
|
|
9
|
+
* every refresh rotates the token; presenting a rotated-out token
|
|
10
|
+
* answers 400 `invalid_grant` and tears down the whole (sub, client)
|
|
11
|
+
* family — the single most important fixture of the grant suite.
|
|
12
|
+
* - RFC 8707 `resource` controls JWT minting on BOTH grants: with it the
|
|
13
|
+
* access token is an RS256 JWT audienced `[<resource>, <userinfo>]`;
|
|
14
|
+
* without it the token is OPAQUE (and dies at the fake's /api/v1 exactly
|
|
15
|
+
* like at the real hub's).
|
|
16
|
+
* - `GET /api/v1/orgs` is CALLER-SCOPED: the presented bearer must be a
|
|
17
|
+
* live JWT this fake minted whose `aud` includes the HUB's own resource
|
|
18
|
+
* (`<issuer>/mcp`) — pinning the tokenResource seam: a tool-audienced
|
|
19
|
+
* token is refused 401. The answer is the token's SUBJECT's org list
|
|
20
|
+
* (`setUserOrg`/`removeUserOrg`; a `mintCode` fixture seeds its own org).
|
|
21
|
+
* There is NO target-user parameter anywhere.
|
|
22
|
+
* - `POST /api/v1/auth/oauth2/introspect` (RFC 7662, client-credentialed)
|
|
23
|
+
* answers `active` for a refresh token exactly like the pinned plugin:
|
|
24
|
+
* unknown / rotated-out / torn-down → `active:false`, and — the property
|
|
25
|
+
* the grant service's probe relies on — introspection is READ-ONLY: it
|
|
26
|
+
* never rotates and never tears a family down.
|
|
27
|
+
* - `GET /api/v1/teams` (PRDCT-2813): the org's whole team list for any
|
|
28
|
+
* member of the org `X-Workspace-Id` names (`setOrgTeams`, else the
|
|
29
|
+
* union of the members' own teams), paged; `teamsMode` adds `http404`
|
|
30
|
+
* (an older hub without the route), `teamsRequests` logs each read.
|
|
31
|
+
* - failure injection per surface: `orgsMode`/`tokenMode` ∈ ok | http500 |
|
|
32
|
+
* network (+ token-only: invalid_grant | invalid_client | hang |
|
|
33
|
+
* commit_then_hang — the latter ROTATES, then never answers: the
|
|
34
|
+
* slow-but-alive hub of PRDCT-1370), `introspectMode`, plus delays.
|
|
35
|
+
* - The billing rail's machine surface (`/api/v1/usage/*`, a
|
|
36
|
+
* client_credentials token with `usage:write` only): the event ingest
|
|
37
|
+
* (per-element judgement, dedupe by id), the plan read (`upgradeUrl`
|
|
38
|
+
* included since phase 2) and, since phase 2 (PRDCT-2663/2664), the
|
|
39
|
+
* credit check `POST /usage/check` over a price book (`setPrice`) and
|
|
40
|
+
* per-organization balances (`setBalance`, `grant`, `balanceOf`, a
|
|
41
|
+
* known organization holding the 5,000-credit sign-up grant like the
|
|
42
|
+
* real hub). Ingest DEBITS: an accepted event is priced by the same rule
|
|
43
|
+
* as the check, its `credits` returned on its result, the balance moved
|
|
44
|
+
* and a `debit` appended to `ledger` with the event id as its source.
|
|
45
|
+
* The check answers the hub's three reasons in the hub's order
|
|
46
|
+
* (`account_suspended`, then `unpriceable` for a price past
|
|
47
|
+
* `Number.MAX_SAFE_INTEGER`, `credits` clamped to it, then
|
|
48
|
+
* `insufficient_credits`), and every answer of the three usage routes
|
|
49
|
+
* goes through the chassis's own schema before it is sent (PRDCT-2677):
|
|
50
|
+
* a fake answer the chassis could not parse throws in the test that
|
|
51
|
+
* produced it.
|
|
52
|
+
*
|
|
53
|
+
* Access tokens still carry the TRANSITIONAL advisory org claims the real
|
|
54
|
+
* hub emits through the compat window ({role, workspace_id, …}) — the tool
|
|
55
|
+
* must ignore them, and the suites prove nothing reads them.
|
|
56
|
+
*/
|
|
57
|
+
export interface HubTokenOverrides {
|
|
58
|
+
/** Replace the access token's aud entirely (wrong-resource tests). */
|
|
59
|
+
accessAud?: string | string[] | undefined;
|
|
60
|
+
/** Replace iss on both tokens (wrong-issuer tests). */
|
|
61
|
+
iss?: string | undefined;
|
|
62
|
+
/** Seconds from now for exp; negative = already expired. */
|
|
63
|
+
expiresInSeconds?: number | undefined;
|
|
64
|
+
/** Return a non-JWT access token even when `resource` was sent. */
|
|
65
|
+
forceOpaque?: boolean | undefined;
|
|
66
|
+
/** Give the id_token a different sub (cross-pin tests). */
|
|
67
|
+
idTokenSub?: string | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Put a `sid` claim on the id_token — what the real hub mints once its
|
|
70
|
+
* tool client carries `enableEndSession` (RP-initiated logout). Absent by
|
|
71
|
+
* default: the pre-flip token shape, which the tool's logout must degrade
|
|
72
|
+
* on (sid-less hints hard-fail at the end-session endpoint).
|
|
73
|
+
*/
|
|
74
|
+
idTokenSid?: string | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* The scope string this user's grant carries, whatever the sign-in
|
|
77
|
+
* requested — e.g. `LEGACY_GRANT_SCOPE` for a person who signed in before
|
|
78
|
+
* the tool asked for `orgs:create`.
|
|
79
|
+
*/
|
|
80
|
+
scope?: string | undefined;
|
|
81
|
+
}
|
|
82
|
+
/** What the tool requested before PRDCT-2443 — and what the hub's H3 connect grant carries. */
|
|
83
|
+
export declare const LEGACY_GRANT_SCOPE = "openid profile email offline_access account:read";
|
|
84
|
+
/** The hub's DEDICATED scope for POST /api/v1/orgs. `account:write` does NOT open it. */
|
|
85
|
+
export declare const ORG_CREATE_SCOPE = "orgs:create";
|
|
86
|
+
export interface HubUserFixture {
|
|
87
|
+
sub: string;
|
|
88
|
+
email: string;
|
|
89
|
+
emailVerified?: boolean | undefined;
|
|
90
|
+
name?: string | undefined;
|
|
91
|
+
/** The user's (first) hub org — seeded into the org registry at mintCode. */
|
|
92
|
+
workspaceId: string;
|
|
93
|
+
role: string;
|
|
94
|
+
/** Org display name; set null to simulate a hub without names. */
|
|
95
|
+
workspaceName?: string | null | undefined;
|
|
96
|
+
overrides?: HubTokenOverrides | undefined;
|
|
97
|
+
}
|
|
98
|
+
/** One entry of a user's org registry (what GET /orgs serves). */
|
|
99
|
+
export interface HubOrgEntry {
|
|
100
|
+
name: string | null;
|
|
101
|
+
role: string;
|
|
102
|
+
status?: 'active' | 'suspended' | undefined;
|
|
103
|
+
isDefault?: boolean | undefined;
|
|
104
|
+
/** The caller's own teams in this org (served as the entry's `teams`; none when absent). */
|
|
105
|
+
teams?: Array<{
|
|
106
|
+
id: string;
|
|
107
|
+
slug: string;
|
|
108
|
+
name: string;
|
|
109
|
+
}> | undefined;
|
|
110
|
+
}
|
|
111
|
+
/** One row of the fake's price book (the hub's `tool_prices`, reduced to what the price rule reads). */
|
|
112
|
+
export interface FakePriceRow {
|
|
113
|
+
creditsPerUnit: number;
|
|
114
|
+
unit: string;
|
|
115
|
+
/** How many units one `creditsPerUnit` buys; 1 when absent. */
|
|
116
|
+
per?: number | undefined;
|
|
117
|
+
/** The quantity each account uses free every month before the price applies; 0 when absent. */
|
|
118
|
+
freeQuantityPerMonth?: number | undefined;
|
|
119
|
+
}
|
|
120
|
+
export declare class FakeHub {
|
|
121
|
+
private readonly server;
|
|
122
|
+
readonly issuer: string;
|
|
123
|
+
private keys;
|
|
124
|
+
private readonly configuredClientId;
|
|
125
|
+
private readonly configuredClientSecret;
|
|
126
|
+
private readonly configuredToolSlug;
|
|
127
|
+
readonly codes: Map<string, HubUserFixture>;
|
|
128
|
+
/** code → the scope string the grant will carry (see mintCode). */
|
|
129
|
+
private readonly codeScopes;
|
|
130
|
+
/** Body of the most recent token request — pins the `resource` passthrough. */
|
|
131
|
+
lastTokenRequest: URLSearchParams | null;
|
|
132
|
+
/** sub → orgId → entry: the caller-scoped truth GET /orgs serves. */
|
|
133
|
+
private readonly userOrgs;
|
|
134
|
+
/**
|
|
135
|
+
* orgId → the organization's WHOLE team list (what GET /teams serves,
|
|
136
|
+
* PRDCT-2813). An org with no entry here serves the union of the teams its
|
|
137
|
+
* members' `GET /orgs` entries carry (the real hub's list always holds
|
|
138
|
+
* every team a member sits in), so a suite that seats teams through
|
|
139
|
+
* `setUserOrg` alone never sees them swept by the team-list read.
|
|
140
|
+
*/
|
|
141
|
+
private readonly orgTeamRegistry;
|
|
142
|
+
/** sub → the orgs that do NOT open the tool to them (GET /orgs' top-level `denied`). */
|
|
143
|
+
private readonly userDenied;
|
|
144
|
+
/** Every JWT access token this fake minted (bearer lookup for /api/v1). */
|
|
145
|
+
private readonly accessTokens;
|
|
146
|
+
/** Live + rotated-out refresh tokens (rotation families). */
|
|
147
|
+
private readonly refreshTokens;
|
|
148
|
+
/** Families torn down by reuse detection (or `revokeGrants`). */
|
|
149
|
+
private readonly deadFamilies;
|
|
150
|
+
/** GET /api/v1/orgs behavior. */
|
|
151
|
+
orgsMode: 'ok' | 'http500' | 'network';
|
|
152
|
+
/** GET /api/v1/teams behavior (`http404` = an older hub without the route). */
|
|
153
|
+
teamsMode: 'ok' | 'http500' | 'network' | 'http404';
|
|
154
|
+
/** Hold every /orgs answer this long (single-flight/race tests). */
|
|
155
|
+
orgsDelayMs: number;
|
|
156
|
+
/** Hold every GET /api/v1/teams answer this long (the stale-delete race). */
|
|
157
|
+
teamsDelayMs: number;
|
|
158
|
+
/**
|
|
159
|
+
* The real hub's answer when the cursor's team was deleted between two page
|
|
160
|
+
* reads: an unknown keyset cursor answers an EMPTY page with no cursor. When
|
|
161
|
+
* true, every GET /api/v1/teams carrying a `cursor` answers exactly that;
|
|
162
|
+
* the first page is unaffected.
|
|
163
|
+
*/
|
|
164
|
+
teamsCursorLost: boolean;
|
|
165
|
+
/**
|
|
166
|
+
* POST /api/v1/orgs behavior (the as-the-user org creation, PRDCT-2443).
|
|
167
|
+
* `limit` = the hub's per-user cap (403 org_limit_reached, the real hub's
|
|
168
|
+
* answer); `forbidden` = a hub that does not open creation to this grant;
|
|
169
|
+
* `commit_then_500` creates the org and THEN answers 500 — the ambiguity
|
|
170
|
+
* the tool must never resolve by re-posting.
|
|
171
|
+
*/
|
|
172
|
+
orgCreateMode: 'ok' | 'limit' | 'forbidden' | 'http500' | 'network' | 'commit_then_500';
|
|
173
|
+
/** Every POST /api/v1/orgs: the presented Authorization header + parsed body. */
|
|
174
|
+
readonly orgCreateRequests: Array<{
|
|
175
|
+
auth: string | null;
|
|
176
|
+
body: unknown;
|
|
177
|
+
}>;
|
|
178
|
+
/**
|
|
179
|
+
* Token endpoint behavior (both grants). `hang` never answers (the request
|
|
180
|
+
* is parked, nothing consumed); `commit_then_hang` consumes the presented
|
|
181
|
+
* refresh token — rotation committed hub-side — and THEN never answers.
|
|
182
|
+
*/
|
|
183
|
+
tokenMode: 'ok' | 'http500' | 'network' | 'invalid_grant' | 'invalid_client' | 'hang' | 'commit_then_hang';
|
|
184
|
+
/** Hold every token answer this long (refresh-race tests). */
|
|
185
|
+
tokenDelayMs: number;
|
|
186
|
+
/** How long a `hang` / `commit_then_hang` request is parked before the fake gives up on it. */
|
|
187
|
+
tokenHangMs: number;
|
|
188
|
+
/** Introspection endpoint behavior. */
|
|
189
|
+
introspectMode: 'ok' | 'http500' | 'network' | 'invalid_client' | 'malformed';
|
|
190
|
+
/** Hold every introspection answer this long (lock-hold tests). */
|
|
191
|
+
introspectDelayMs: number;
|
|
192
|
+
/** Lifetime of newly minted access tokens (seconds). */
|
|
193
|
+
accessTokenTtlSeconds: number;
|
|
194
|
+
/** Every GET /api/v1/teams request: the presented Authorization header and the org it named. */
|
|
195
|
+
readonly teamsRequests: Array<{
|
|
196
|
+
auth: string | null;
|
|
197
|
+
orgId: string | null;
|
|
198
|
+
}>;
|
|
199
|
+
/** Every /api/v1/orgs request: the presented Authorization header. */
|
|
200
|
+
readonly orgsRequests: Array<{
|
|
201
|
+
auth: string | null;
|
|
202
|
+
}>;
|
|
203
|
+
/** Every refresh-grant presentation (single-flight/rotation pins). */
|
|
204
|
+
readonly refreshRequests: Array<{
|
|
205
|
+
refreshToken: string;
|
|
206
|
+
resource: string | null;
|
|
207
|
+
clientId: string | null;
|
|
208
|
+
}>;
|
|
209
|
+
/** Every introspection call (the grant service's probe pins). */
|
|
210
|
+
readonly introspectRequests: Array<{
|
|
211
|
+
token: string;
|
|
212
|
+
hint: string | null;
|
|
213
|
+
clientId: string | null;
|
|
214
|
+
}>;
|
|
215
|
+
/**
|
|
216
|
+
* `grant_type=client_credentials` on a registry tool client, scope
|
|
217
|
+
* `usage:write`: the token carries a client and no subject, and the fake
|
|
218
|
+
* refuses it on every route but `/api/v1/usage/*` — exactly the hub's
|
|
219
|
+
* stance. Client auth is basic or post; the secret is checked when the
|
|
220
|
+
* fake was started with one.
|
|
221
|
+
*/
|
|
222
|
+
private readonly machineTokens;
|
|
223
|
+
/** How many machine tokens were minted (single-flight and refresh pins). */
|
|
224
|
+
machineTokenMints: number;
|
|
225
|
+
/** Lifetime of a machine token (seconds; the real hub mints 900). */
|
|
226
|
+
machineTokenTtlSeconds: number;
|
|
227
|
+
/** `POST /api/v1/usage/events` behavior; `http401_once` refuses the first post with 401 (a dead token), then answers. */
|
|
228
|
+
usageMode: 'ok' | 'http404' | 'http500' | 'network' | 'http400' | 'http401_once';
|
|
229
|
+
/** Every usage post: the presented Authorization header + the parsed body. */
|
|
230
|
+
readonly usageRequests: Array<{
|
|
231
|
+
auth: string | null;
|
|
232
|
+
body: unknown;
|
|
233
|
+
}>;
|
|
234
|
+
/** id → the event as ingested (the dedupe table). */
|
|
235
|
+
readonly usageEvents: Map<string, Record<string, unknown>>;
|
|
236
|
+
/** `GET /api/v1/usage/entitlements` behavior. */
|
|
237
|
+
entitlementsMode: 'ok' | 'http404' | 'http500' | 'network';
|
|
238
|
+
/** Every entitlements read: the accountRef asked and the Authorization header. */
|
|
239
|
+
readonly entitlementsRequests: Array<{
|
|
240
|
+
accountRef: string | null;
|
|
241
|
+
auth: string | null;
|
|
242
|
+
}>;
|
|
243
|
+
/** accountRef → the profile the hub answers; an account not set here is `free` with no overrides. */
|
|
244
|
+
private readonly entitlementProfiles;
|
|
245
|
+
/** `POST /api/v1/usage/check` behavior; `hang` parks the request (`tokenHangMs`). */
|
|
246
|
+
checkMode: 'ok' | 'http404' | 'http500' | 'network' | 'hang';
|
|
247
|
+
/** Hold every check answer this long. */
|
|
248
|
+
checkDelayMs: number;
|
|
249
|
+
/** Every credit check: the presented Authorization header + the parsed body. */
|
|
250
|
+
readonly checkRequests: Array<{
|
|
251
|
+
auth: string | null;
|
|
252
|
+
body: unknown;
|
|
253
|
+
}>;
|
|
254
|
+
/** actionKey → its price row (the hub's price book for this tool). */
|
|
255
|
+
private readonly prices;
|
|
256
|
+
/** accountRef → credits; a known organization with no entry holds the sign-up grant. */
|
|
257
|
+
private readonly balances;
|
|
258
|
+
/** Every balance movement, in order: the sign-up grant, manual grants, ingest debits. */
|
|
259
|
+
readonly ledger: Array<{
|
|
260
|
+
accountRef: string;
|
|
261
|
+
kind: 'signup' | 'manual' | 'debit';
|
|
262
|
+
amount: number;
|
|
263
|
+
sourceRef: string;
|
|
264
|
+
}>;
|
|
265
|
+
private constructor();
|
|
266
|
+
/**
|
|
267
|
+
* `clientId` is the TOOL's OAuth client id at the hub (its `HUB_CLIENT_ID`):
|
|
268
|
+
* the client the fake mints a connect grant for, stamps as `azp`, and keys a
|
|
269
|
+
* grant family on when the request names none. The fake spells no tool's id:
|
|
270
|
+
* a suite that reaches one of those paths passes it, one that only needs an
|
|
271
|
+
* issuer may omit it.
|
|
272
|
+
*/
|
|
273
|
+
static start(options?: {
|
|
274
|
+
clientId?: string | undefined;
|
|
275
|
+
clientSecret?: string | undefined;
|
|
276
|
+
/**
|
|
277
|
+
* The tool's REGISTRY slug at the hub (`TOOL_REGISTRY[].slug`, the
|
|
278
|
+
* name the hub records on every usage row and judges a body's
|
|
279
|
+
* `toolSlug` against). Defaults to the client id without its `tool-`
|
|
280
|
+
* prefix (`tool-things-cloud` → `things-cloud`), which is what
|
|
281
|
+
* the production recipe and the drill harness name it — and NOT the
|
|
282
|
+
* tool's identity slug, so a body that stamps its own name is refused
|
|
283
|
+
* here exactly as the real hub refuses it (PRDCT-2629).
|
|
284
|
+
*/
|
|
285
|
+
toolSlug?: string | undefined;
|
|
286
|
+
}): Promise<FakeHub>;
|
|
287
|
+
/** The tool's client id, for the paths that need one the request did not carry. */
|
|
288
|
+
private get clientId();
|
|
289
|
+
stop(): Promise<void>;
|
|
290
|
+
/** Rotate the signing key: new tokens sign with the new key; old key drops out of the JWKS. */
|
|
291
|
+
rotateKey(): Promise<void>;
|
|
292
|
+
/** The hub's own API resource identifier — the aud /api/v1 requires. */
|
|
293
|
+
get apiResource(): string;
|
|
294
|
+
/** The tool's registry slug: what every usage row carries, from the token, never from the body. */
|
|
295
|
+
get toolSlug(): string;
|
|
296
|
+
setUserOrg(sub: string, orgId: string, entry: HubOrgEntry): void;
|
|
297
|
+
removeUserOrg(sub: string, orgId: string): void;
|
|
298
|
+
clearUserOrgs(sub: string): void;
|
|
299
|
+
/** The organization's whole team list, as GET /teams serves it. */
|
|
300
|
+
setOrgTeams(orgId: string, teams: Array<{
|
|
301
|
+
id: string;
|
|
302
|
+
slug: string;
|
|
303
|
+
name: string;
|
|
304
|
+
}>): void;
|
|
305
|
+
/** Back to the default: the union of the members' own teams. */
|
|
306
|
+
clearOrgTeams(orgId: string): void;
|
|
307
|
+
/** The orgs GET /orgs names in `denied` for this sub (default none). */
|
|
308
|
+
setUserDenied(sub: string, denied: Array<{
|
|
309
|
+
id: string;
|
|
310
|
+
name: string;
|
|
311
|
+
}>): void;
|
|
312
|
+
/**
|
|
313
|
+
* The hub-side "revoke this tool's access" action: tears down the user's
|
|
314
|
+
* refresh families AND forgets their live access tokens (emulating expiry
|
|
315
|
+
* — real JWTs die at their 15-minute exp; tests shouldn't wait).
|
|
316
|
+
*/
|
|
317
|
+
revokeGrants(sub: string): void;
|
|
318
|
+
/** Number of refresh-grant presentations seen so far (single-flight pins). */
|
|
319
|
+
/** Whether reuse detection (or `revokeGrants`) tore this (sub, client) family down. */
|
|
320
|
+
isFamilyDead(sub: string, clientId?: string): boolean;
|
|
321
|
+
refreshCount(): number;
|
|
322
|
+
/** Register a one-shot authorization code for the given user fixture. */
|
|
323
|
+
/**
|
|
324
|
+
* `requestedScope` is the `scope` parameter of the tool's authorize URL
|
|
325
|
+
* (sso-helpers reads it off the real sign-in leg): like the real hub, the
|
|
326
|
+
* grant carries WHAT WAS REQUESTED and nothing else. A caller that skips
|
|
327
|
+
* it gets the legacy grant — the fake never hands out `orgs:create`
|
|
328
|
+
* unasked, so a tool that stops requesting it turns the create suites red.
|
|
329
|
+
*/
|
|
330
|
+
mintCode(fixture: HubUserFixture, requestedScope?: string | null): string;
|
|
331
|
+
/** Sign an access token directly (no HTTP dance); recorded as a live bearer. */
|
|
332
|
+
signAccessToken(fixture: HubUserFixture, resource: string): Promise<string>;
|
|
333
|
+
/**
|
|
334
|
+
* Sign an H3 exchange token — what the real hub's `POST /sso/tool-token`
|
|
335
|
+
* mints for the tool's `/sso/cli-connect` (the P5 pinned contract): a
|
|
336
|
+
* 120 s RS256 JWT, `aud` = the TOOL's resource URL (single string, no
|
|
337
|
+
* userinfo entry — this is not an OIDC access token), the transitional
|
|
338
|
+
* org-claims payload (the tool must IGNORE it — suites prove nothing
|
|
339
|
+
* reads it), `purpose: 'sso-connect'`, and a unique `jti`. Like the real
|
|
340
|
+
* H3 response, a `hubRefreshToken` rides along: a RAW one-time
|
|
341
|
+
* offline-grant refresh token in the ordinary (sub, client) rotation
|
|
342
|
+
* family — redeemable at this fake's token endpoint under the TOOL
|
|
343
|
+
* CLIENT's credentials, rotation + reuse detection included. And like
|
|
344
|
+
* the real hub (whose H3 mint proves a live membership of the target
|
|
345
|
+
* org), the fixture's org is seeded into the sub's registry so a
|
|
346
|
+
* subsequent as-the-user `GET /orgs` asserts it. `opts` bends the
|
|
347
|
+
* connect-specific claims for negative tests; `fixture.overrides` still
|
|
348
|
+
* bends iss/exp/aud like everywhere else.
|
|
349
|
+
*/
|
|
350
|
+
signConnectToken(fixture: HubUserFixture, resource: string, opts?: {
|
|
351
|
+
/** Explicit jti (replay tests share one); default = fresh unique. */
|
|
352
|
+
jti?: string | undefined;
|
|
353
|
+
/** true = omit the jti claim entirely. */
|
|
354
|
+
omitJti?: boolean | undefined;
|
|
355
|
+
/** Replacement purpose; null = omit the claim. Default 'sso-connect'. */
|
|
356
|
+
purpose?: string | null | undefined;
|
|
357
|
+
}): Promise<{
|
|
358
|
+
token: string;
|
|
359
|
+
jti: string;
|
|
360
|
+
hubRefreshToken: string;
|
|
361
|
+
}>;
|
|
362
|
+
private handle;
|
|
363
|
+
/** Set what `GET /usage/entitlements` answers for one account (the tier's defaults plus overrides). */
|
|
364
|
+
setEntitlements(accountRef: string, profile: {
|
|
365
|
+
plan: 'free' | 'pro';
|
|
366
|
+
limits?: Record<string, number | boolean>;
|
|
367
|
+
features?: string[];
|
|
368
|
+
}): void;
|
|
369
|
+
/** Set the price row of an action: `creditsPerUnit` credits per `per` units, after a monthly free allowance. */
|
|
370
|
+
setPrice(actionKey: string, row: FakePriceRow): void;
|
|
371
|
+
clearPrices(): void;
|
|
372
|
+
/** Set an organization's balance outright (no ledger entry). */
|
|
373
|
+
setBalance(accountRef: string, credits: number): void;
|
|
374
|
+
/** Add (or, negative, take) credits by hand: a `manual` ledger entry. */
|
|
375
|
+
grant(accountRef: string, delta: number): void;
|
|
376
|
+
/**
|
|
377
|
+
* An organization's balance. One the fake knows (an org registry entry)
|
|
378
|
+
* with no balance set holds the sign-up grant, 5,000 credits, recorded as
|
|
379
|
+
* a `signup` ledger entry the first time it is read — like the real hub,
|
|
380
|
+
* which grants it at the organization's creation. Unknown: 0.
|
|
381
|
+
*/
|
|
382
|
+
balanceOf(accountRef: string): number;
|
|
383
|
+
private knownOrgs;
|
|
384
|
+
/**
|
|
385
|
+
* The price of a quantity of an action for an account, by the hub's rule:
|
|
386
|
+
* `ceil(max(0, quantity − freeLeft) / per) × creditsPerUnit`, where
|
|
387
|
+
* `freeLeft` is the monthly allowance minus the quantities already
|
|
388
|
+
* ingested for that account and action. The fake has NO month rollover:
|
|
389
|
+
* every event it ever ingested counts against the allowance.
|
|
390
|
+
*/
|
|
391
|
+
private priceOf;
|
|
392
|
+
/**
|
|
393
|
+
* Forget every machine token: the next post answers 401 until re-minted.
|
|
394
|
+
* Models a REGISTRY REMOVAL or a rotated client secret, not a restart —
|
|
395
|
+
* the real hub persists its signing keys and never refuses a live JWT on
|
|
396
|
+
* restart (proven on the pair, lane C of the billing rail wave).
|
|
397
|
+
*/
|
|
398
|
+
revokeMachineTokens(): void;
|
|
399
|
+
/** The machine-token check of `/api/v1/usage/*`: a live client_credentials token with `usage:write`. */
|
|
400
|
+
private machineBearer;
|
|
401
|
+
private handleUsageEvents;
|
|
402
|
+
private handleUsageEntitlements;
|
|
403
|
+
private handleUsageCheck;
|
|
404
|
+
private handleOrgs;
|
|
405
|
+
private handleTeams;
|
|
406
|
+
private handleOrgCreate;
|
|
407
|
+
/** The org ids the hub holds for a subject (what a test asserts creation against). */
|
|
408
|
+
orgIdsOf(sub: string): string[];
|
|
409
|
+
private handleToken;
|
|
410
|
+
/**
|
|
411
|
+
* The registry client's machine grant (the billing rail, §6): client auth
|
|
412
|
+
* (basic, or client_id + client_secret in the body) on THIS tool's client,
|
|
413
|
+
* scope `usage:write` only. Answers a bearer with no subject.
|
|
414
|
+
*/
|
|
415
|
+
private handleClientCredentials;
|
|
416
|
+
private handleRefreshGrant;
|
|
417
|
+
/** Never answer; give up with a 504 long after any client timeout (nothing observes it). */
|
|
418
|
+
private park;
|
|
419
|
+
private handleIntrospect;
|
|
420
|
+
private mintRefreshToken;
|
|
421
|
+
private signingKey;
|
|
422
|
+
private accessToken;
|
|
423
|
+
private idToken;
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=fake-hub.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-hub.d.ts","sourceRoot":"","sources":["../../src/testing/fake-hub.ts"],"names":[],"mappings":"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"}
|