@adonis-agora/authkit-server 1.0.0-rc.1 → 1.0.0-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/README.md +4 -5
  3. package/build/commands/agora_doctor.d.ts +22 -0
  4. package/build/commands/agora_doctor.js +109 -0
  5. package/build/commands/clients_create.d.ts +4 -0
  6. package/build/commands/clients_create.js +97 -0
  7. package/build/commands/commands.json +78 -0
  8. package/build/commands/doctor.js +8 -74
  9. package/build/host/views/account/apps.edge +1 -5
  10. package/build/host/views/account/extension.edge +77 -0
  11. package/build/host/views/account/mfa.edge +2 -0
  12. package/build/host/views/account/partials/extension_actions.edge +14 -0
  13. package/build/host/views/account/partials/extension_block.edge +197 -0
  14. package/build/host/views/account/partials/extension_value.edge +8 -0
  15. package/build/host/views/account/partials/nav.edge +14 -0
  16. package/build/host/views/account/security.edge +1 -5
  17. package/build/host/views/account/tokens.edge +2 -2
  18. package/build/host/views/agents/consent.edge +11 -2
  19. package/build/host/views/agents/done.edge +1 -1
  20. package/build/host/views/partials/styles.edge +1 -1
  21. package/build/index.d.ts +12 -12
  22. package/build/index.js +7 -9
  23. package/build/providers/authkit_server_provider.js +28 -8
  24. package/build/src/account/extension.d.ts +10 -0
  25. package/build/src/account/extension.js +9 -0
  26. package/build/src/account/http.d.ts +77 -0
  27. package/build/src/account/http.js +381 -0
  28. package/build/src/account/mount.d.ts +40 -0
  29. package/build/src/account/mount.js +171 -0
  30. package/build/src/account/registry.d.ts +41 -0
  31. package/build/src/account/registry.js +81 -0
  32. package/build/src/account/remote.d.ts +72 -0
  33. package/build/src/account/remote.js +406 -0
  34. package/build/src/account/runtime.d.ts +289 -0
  35. package/build/src/account/runtime.js +641 -0
  36. package/build/src/accounts/account_store.d.ts +6 -0
  37. package/build/src/accounts/lucid_store/organizations.js +6 -0
  38. package/build/src/agents/config.d.ts +9 -13
  39. package/build/src/agents/config.js +17 -11
  40. package/build/src/agents/delegation_service.js +3 -3
  41. package/build/src/agents/delegation_store.d.ts +3 -2
  42. package/build/src/agents/delegation_store.js +6 -5
  43. package/build/src/agents/extension.d.ts +261 -0
  44. package/build/src/agents/extension.js +40 -0
  45. package/build/src/agents/middleware.js +1 -1
  46. package/build/src/agents/protocol.d.ts +4 -4
  47. package/build/src/agents/registry_store.d.ts +3 -2
  48. package/build/src/agents/registry_store.js +1 -1
  49. package/build/src/agents/runtime.d.ts +26 -7
  50. package/build/src/agents/runtime.js +110 -75
  51. package/build/src/audit/audit_sink.d.ts +1 -1
  52. package/build/src/audit/audit_sink.js +10 -1
  53. package/build/src/console_switcher.d.ts +132 -0
  54. package/build/src/console_switcher.js +206 -0
  55. package/build/src/define_config.d.ts +34 -12
  56. package/build/src/define_config.js +15 -7
  57. package/build/src/dev_tools/contract.d.ts +72 -0
  58. package/build/src/dev_tools/contract.js +10 -0
  59. package/build/src/dev_tools/gate.d.ts +17 -0
  60. package/build/src/dev_tools/gate.js +69 -0
  61. package/build/src/dev_tools/register.d.ts +11 -0
  62. package/build/src/dev_tools/register.js +25 -0
  63. package/build/src/dev_tools/tools.d.ts +24 -0
  64. package/build/src/dev_tools/tools.js +384 -0
  65. package/build/src/doctor/agora_checks.d.ts +15 -0
  66. package/build/src/doctor/agora_checks.js +150 -0
  67. package/build/src/doctor/agora_doctor.d.ts +115 -0
  68. package/build/src/doctor/agora_doctor.js +692 -0
  69. package/build/src/doctor/doctor_input.d.ts +27 -0
  70. package/build/src/doctor/doctor_input.js +86 -0
  71. package/build/src/doctor/index.d.ts +5 -0
  72. package/build/src/doctor/index.js +4 -0
  73. package/build/src/host/access_token_verifier.js +7 -0
  74. package/build/src/host/account_api/account_api_controller.js +8 -6
  75. package/build/src/host/account_session_sign_in.d.ts +12 -0
  76. package/build/src/host/account_session_sign_in.js +19 -0
  77. package/build/src/host/admin_api/admin_users_service.d.ts +5 -2
  78. package/build/src/host/admin_api/api_clients_controller.d.ts +37 -0
  79. package/build/src/host/admin_api/api_clients_controller.js +31 -1
  80. package/build/src/host/admin_api/dto.d.ts +3 -1
  81. package/build/src/host/admin_api/dto.js +2 -0
  82. package/build/src/host/admin_authorize.d.ts +8 -0
  83. package/build/src/host/admin_authorize.js +25 -0
  84. package/build/src/host/admin_clients_service.d.ts +20 -0
  85. package/build/src/host/admin_clients_service.js +55 -0
  86. package/build/src/host/admin_console/admin_console_entry.d.ts +14 -0
  87. package/build/src/host/admin_console/admin_console_entry.js +80 -0
  88. package/build/src/host/admin_console/admin_shell_controller.js +8 -0
  89. package/build/src/host/admin_console/console_clients_controller.d.ts +41 -0
  90. package/build/src/host/admin_console/console_clients_controller.js +34 -1
  91. package/build/src/host/admin_console/console_personal_agents_controller.d.ts +1 -6
  92. package/build/src/host/admin_console/console_personal_agents_controller.js +50 -30
  93. package/build/src/host/admin_console/console_switcher_controller.d.ts +11 -0
  94. package/build/src/host/admin_console/console_switcher_controller.js +23 -0
  95. package/build/src/host/admin_sessions_service.js +8 -5
  96. package/build/src/host/admin_validators.d.ts +29 -0
  97. package/build/src/host/admin_validators.js +30 -0
  98. package/build/src/host/auth_host_config.d.ts +9 -2
  99. package/build/src/host/controllers/account_apps_controller.js +15 -11
  100. package/build/src/host/csrf.d.ts +3 -3
  101. package/build/src/host/csrf.js +3 -13
  102. package/build/src/host/default_mailer.d.ts +11 -6
  103. package/build/src/host/default_mailer.js +16 -12
  104. package/build/src/host/i18n.d.ts +41 -14
  105. package/build/src/host/i18n.js +55 -13
  106. package/build/src/host/rate_limit.d.ts +8 -0
  107. package/build/src/host/rate_limit.js +9 -0
  108. package/build/src/host/register_auth_host.d.ts +14 -0
  109. package/build/src/host/register_auth_host.js +167 -106
  110. package/build/src/host/renderers/edge_renderer.js +5 -0
  111. package/build/src/host/renderers/inertia_renderer.js +7 -1
  112. package/build/src/host/screen_props.d.ts +39 -8
  113. package/build/src/host/ui-dist/assets/index-Dq3dJVBv.js +67 -0
  114. package/build/src/host/ui-dist/assets/{index-DTSmD4RU.css → index-WNIyCEPA.css} +1 -1
  115. package/build/src/host/ui-dist/index.html +2 -2
  116. package/build/src/provider/build_provider.js +37 -6
  117. package/build/src/provider/oidc_service.d.ts +1 -1
  118. package/build/src/provider/oidc_service.js +1 -1
  119. package/build/src/schema/ensure.d.ts +14 -0
  120. package/build/src/schema/ensure.js +43 -150
  121. package/build/src/service_tenants/client_metadata.d.ts +39 -0
  122. package/build/src/service_tenants/client_metadata.js +80 -0
  123. package/build/src/service_tenants/config.d.ts +44 -0
  124. package/build/src/service_tenants/config.js +44 -0
  125. package/build/src/service_tenants/provider_hooks.d.ts +52 -0
  126. package/build/src/service_tenants/provider_hooks.js +124 -0
  127. package/build/src/service_tenants/tenant_verifier.d.ts +73 -0
  128. package/build/src/service_tenants/tenant_verifier.js +104 -0
  129. package/build/src/tenancy/tenant_labels.d.ts +30 -0
  130. package/build/src/tenancy/tenant_labels.js +64 -0
  131. package/build/types.d.ts +3 -1
  132. package/package.json +9 -6
  133. package/build/src/agents/poppy/client_registry.d.ts +0 -50
  134. package/build/src/agents/poppy/client_registry.js +0 -260
  135. package/build/src/agents/poppy/config.d.ts +0 -396
  136. package/build/src/agents/poppy/config.js +0 -228
  137. package/build/src/agents/poppy/dpop.d.ts +0 -61
  138. package/build/src/agents/poppy/dpop.js +0 -158
  139. package/build/src/agents/poppy/email_code_sign_in.d.ts +0 -27
  140. package/build/src/agents/poppy/email_code_sign_in.js +0 -140
  141. package/build/src/agents/poppy/errors.d.ts +0 -25
  142. package/build/src/agents/poppy/errors.js +0 -25
  143. package/build/src/agents/poppy/replay.d.ts +0 -25
  144. package/build/src/agents/poppy/replay.js +0 -106
  145. package/build/src/agents/poppy/resource.d.ts +0 -100
  146. package/build/src/agents/poppy/resource.js +0 -129
  147. package/build/src/agents/poppy/safe_fetch.d.ts +0 -48
  148. package/build/src/agents/poppy/safe_fetch.js +0 -262
  149. package/build/src/agents/poppy/service.d.ts +0 -293
  150. package/build/src/agents/poppy/service.js +0 -1458
  151. package/build/src/agents/poppy/session_jwt.d.ts +0 -30
  152. package/build/src/agents/poppy/session_jwt.js +0 -133
  153. package/build/src/agents/poppy/store.d.ts +0 -106
  154. package/build/src/agents/poppy/store.js +0 -261
  155. package/build/src/agents/poppy/web_session.d.ts +0 -39
  156. package/build/src/agents/poppy/web_session.js +0 -122
  157. package/build/src/host/controllers/poppy_consent_controller.d.ts +0 -19
  158. package/build/src/host/controllers/poppy_consent_controller.js +0 -199
  159. package/build/src/host/controllers/poppy_controller.d.ts +0 -33
  160. package/build/src/host/controllers/poppy_controller.js +0 -219
  161. package/build/src/host/poppy_session_key.d.ts +0 -9
  162. package/build/src/host/poppy_session_key.js +0 -9
  163. package/build/src/host/ui-dist/assets/index-D0EIeyKK.js +0 -67
@@ -1,293 +0,0 @@
1
- import type { HttpContext } from '@adonisjs/core/http';
2
- import type { DelegationStore } from '../delegation_store.js';
3
- import type { PoppyClient, PoppyClientRegistry } from './client_registry.js';
4
- import type { PoppyLimiter, PoppyPrincipalBase, PoppyReplayStore, ResolvedPoppyConfig } from './config.js';
5
- import { type DpopNonceSource } from './dpop.js';
6
- import type { PoppyStore, RequestRow } from './store.js';
7
- export declare const DEVICE_CODE_GRANT = "urn:ietf:params:oauth:grant-type:device_code";
8
- export declare const MEDIATED_SIGN_IN_GRANT = "https://personalagentprotocol.org/grant/mediated-sign-in";
9
- export declare const MEDIATED_SIGN_IN_EXTENSION = "mediated-sign-in";
10
- export declare const CLIENT_ASSERTION_TYPE = "urn:ietf:params:oauth:client-assertion-type:jwt-bearer";
11
- export declare const POPPY_PROTOCOL_VERSION = "0.3";
12
- /** URLs públicas do authorization server Poppy. */
13
- export interface PoppyUrls {
14
- origin: string;
15
- issuer: string;
16
- /** RFC 8414 §3.1: `/.well-known/oauth-authorization-server{issuer path}`. */
17
- metadata: string;
18
- token: string;
19
- revocation: string;
20
- authorization: string;
21
- deviceAuthorization: string;
22
- /** Tela do device flow (`verification_uri`). */
23
- device: string;
24
- browserSession: string;
25
- discovery: string;
26
- }
27
- /** Deriva as URLs da ORIGEM do issuer configurado — nunca do Host da request. */
28
- export declare function poppyUrls(oidcIssuer: string, prefix: string): PoppyUrls;
29
- /** Resposta do token endpoint (§4.7, RFC 6749 §5.1). */
30
- export interface PoppyTokenResponse {
31
- access_token: string;
32
- token_type: 'DPoP' | 'Bearer';
33
- expires_in: number;
34
- scope: string;
35
- refresh_token?: string;
36
- }
37
- /** Ponte com o oidc-provider para os tokens Bearer de MCP (§7). */
38
- export interface PoppyMcpBridge {
39
- /** `url` é um servidor MCP deste app (de `apis` ou do registro de resources)? */
40
- isMcpResource(url: string): boolean;
41
- /**
42
- * Emite o Bearer de um sign-in como access token do oidc-provider,
43
- * para que a integração MCP existente (`AccessToken.find`) o aceite. `null` =
44
- * sem ponte (o token fica só no store do Poppy).
45
- */
46
- mint?(input: {
47
- grantId: string;
48
- accountId: string;
49
- clientId: string;
50
- scope: string;
51
- resource: string;
52
- expiresIn: number;
53
- grantExpiresAt: Date;
54
- }): Promise<string | null>;
55
- /** Revoga o grant (e os tokens) no oidc-provider. */
56
- revoke?(grantId: string): Promise<void>;
57
- }
58
- export interface PoppyServiceDeps {
59
- cfg: ResolvedPoppyConfig;
60
- urls: PoppyUrls;
61
- store: PoppyStore;
62
- grants: DelegationStore;
63
- registry: PoppyClientRegistry;
64
- replay: PoppyReplayStore;
65
- limiter: PoppyLimiter | null;
66
- nonces: DpopNonceSource;
67
- /** A conta ainda pode agir? (existe e não está desabilitada). Default: sempre. */
68
- isAccountActive?: (accountId: string) => Promise<boolean>;
69
- mcp?: PoppyMcpBridge;
70
- now?: () => Date;
71
- }
72
- /** Entrada de uma request para {@link PoppyService.verifyAccess}. */
73
- export interface PoppyRequestInput {
74
- method: string;
75
- url: string;
76
- headers: Record<string, string | string[] | undefined>;
77
- }
78
- export interface PoppyVerifyOptions {
79
- /** Scopes exigidos (todos). Sem access token: challenge 401; sem o scope: `insufficient_scope`. */
80
- scopes?: string[];
81
- /** Exige acesso à conta (um access token). */
82
- signedIn?: boolean;
83
- /**
84
- * `resource` exigido por este endpoint. Default: derivado da URL contra
85
- * `apis`/`agent.protocols` do config (entradas com `resource`) e os MCP.
86
- */
87
- resource?: string | null;
88
- }
89
- export type PoppyAuthError = 'invalid_session' | 'invalid_token' | 'insufficient_scope' | 'invalid_dpop_proof' | 'use_dpop_nonce';
90
- export type PoppyVerifyResult = {
91
- ok: true;
92
- principal: PoppyPrincipalBase;
93
- /** Grant (refresh token) do access token — `null` deslogado. */
94
- grantId: string | null;
95
- } | {
96
- ok: false;
97
- status: 400 | 401 | 403 | 429;
98
- /** `null`: challenge sem código (§7, falta o access token) ou limite de taxa (§5.6). */
99
- error: PoppyAuthError | null;
100
- description: string;
101
- scope?: string;
102
- /** `null` nos erros que vão no corpo (`invalid_session`) e no 429. */
103
- wwwAuthenticate: string | null;
104
- /** Headers extras (`DPoP-Nonce`, `Retry-After`). */
105
- headers: Record<string, string>;
106
- };
107
- /** Pedido Direct aguardando o usuário na tela de consentimento. */
108
- export interface PoppyConsentRequest {
109
- id: string;
110
- clientId: string;
111
- agentName: string;
112
- agentOrigin: string;
113
- logoUri: string | null;
114
- scopes: {
115
- id: string;
116
- description: string;
117
- }[];
118
- userCode?: string;
119
- }
120
- export type PoppyAuthorizeOutcome = {
121
- kind: 'consent';
122
- request: PoppyConsentRequest;
123
- } | {
124
- kind: 'redirect';
125
- url: string;
126
- } | {
127
- kind: 'error';
128
- description: string;
129
- };
130
- export interface PoppyGrantSummary {
131
- id: string;
132
- clientId: string;
133
- scopes: {
134
- id: string;
135
- description: string;
136
- }[];
137
- createdAt: Date;
138
- updatedAt: Date;
139
- expiresAt: Date;
140
- }
141
- /** O que a entrada de um navegador autorizou (§6, passo 3). */
142
- export interface PoppyBrowserJoin {
143
- sessionId: string;
144
- clientId: string;
145
- userId: string;
146
- /** Conta autorizada no passo 2; `null` = entrada sem access token. */
147
- accountId: string | null;
148
- grantId: string | null;
149
- scopes: string[];
150
- }
151
- /** Estado atual de um navegador que entrou numa Session (§6, "The cookie"). */
152
- export interface PoppySessionState {
153
- active: boolean;
154
- sessionId: string;
155
- clientId: string;
156
- userId: string;
157
- accountId: string | null;
158
- signedIn: boolean;
159
- scopes: string[];
160
- }
161
- /** Aceita o código como o usuário digitar: minúsculas, sem hífen, com espaços. */
162
- export declare function normalizePoppyUserCode(input: unknown): string | null;
163
- /** Slot global onde o `@adonis-agora/agent` registra o endpoint de conversas Poppy. */
164
- export declare const POPPY_ENDPOINTS_SLOT: unique symbol;
165
- /**
166
- * `agent.protocols` vindo do slot `Symbol.for('@adonis-agora/poppy:endpoints')`
167
- * (`{ conversations: 'https://…' }`), usado quando o config não declara
168
- * `agent.protocols` — o mesmo padrão do slot de resources do MCP.
169
- */
170
- export declare function registeredConversationProtocols(): {
171
- type: string;
172
- endpoint: string;
173
- access?: 'session' | 'signed_in';
174
- }[];
175
- /**
176
- * @experimental Poppy (Personal Agent Protocol) Draft 0.3 — pode mudar de forma incompatível enquanto a spec for draft.
177
- */
178
- export declare class PoppyService {
179
- #private;
180
- readonly cfg: ResolvedPoppyConfig;
181
- readonly urls: PoppyUrls;
182
- readonly registry: PoppyClientRegistry;
183
- constructor(deps: PoppyServiceDeps);
184
- /** Um nonce DPoP novo (header `DPoP-Nonce`), quando o app exige nonces. */
185
- nonce(): string | null;
186
- /** Domínios da empresa (o principal + aliases). */
187
- get domains(): string[];
188
- /** Descrição de um scope para o usuário. */
189
- describe(ids: string[]): {
190
- id: string;
191
- description: string;
192
- }[];
193
- /** `www.{domínio}` não é a empresa (§3.1): a descoberta redireciona para o domínio (§3). */
194
- discoveryRedirect(requestHost: string): string | null;
195
- /** `/.well-known/poppy.json` (§3) para o domínio pedido; `null` = domínio que não é nosso. */
196
- discoveryDocument(requestHost: string): Record<string, unknown> | null;
197
- /** `/.well-known/oauth-protected-resource` do domínio (§3.2, RFC 9728): aponta o issuer. */
198
- protectedResourceMetadata(requestHost: string): Record<string, unknown> | null;
199
- /** RFC 8414 com `protected_resources` (§3.2). */
200
- authorizationServerMetadata(): Record<string, unknown>;
201
- /**
202
- * `private_key_jwt` (§4.1, RFC 7523): `client_assertion` assinada por uma chave do `jwks_uri`,
203
- * `iss` = `sub` = `client_id`, `aud` = o issuer como UMA string, curta, com `iat` e `jti` únicos.
204
- */
205
- authenticateClient(form: Record<string, unknown>): Promise<PoppyClient>;
206
- /** `POST token_endpoint` (§4.2–§4.4, §4.7, extensão Mediated Sign-In). */
207
- token(form: Record<string, unknown>, dpopHeader: string | string[] | undefined, ctx?: HttpContext): Promise<PoppyTokenResponse>;
208
- /** `POST device_authorization_endpoint` (§4.6). */
209
- deviceAuthorization(form: Record<string, unknown>): Promise<Record<string, unknown>>;
210
- /** `POST revocation_endpoint` (§4.6, RFC 7009). */
211
- revoke(form: Record<string, unknown>): Promise<void>;
212
- /**
213
- * Revoga um refresh token (grant): os access tokens dele morrem junto (RFC 7009 §2.1), as
214
- * Sessions continuam deslogadas (§5.5) e os Bearer de MCP no oidc-provider também caem.
215
- */
216
- revokeGrant(grantId: string): Promise<void>;
217
- /**
218
- * `GET authorization_endpoint` com o usuário já logado neste app. Erros no
219
- * `client_id`/`redirect_uri` não redirecionam (RFC 6749 §4.1.2.1); os demais
220
- * voltam ao agente com `error`, `state` e `iss`.
221
- */
222
- startAuthorization(params: Record<string, unknown>, accountId: string): Promise<PoppyAuthorizeOutcome>;
223
- /**
224
- * `POST` da tela de consentimento Direct. Devolve para onde mandar o
225
- * navegador (`code`/`error`, `state`, `iss`), ou `null` quando o pedido não
226
- * vale mais (expirou, decidido em outra aba, de outra conta).
227
- */
228
- decideAuthorization(input: {
229
- requestId: string;
230
- accountId: string;
231
- allow: boolean;
232
- scopes: string[];
233
- }): Promise<{
234
- url: string;
235
- approved: string[] | null;
236
- clientId: string;
237
- } | null>;
238
- pendingDevice(userCodeInput: unknown): Promise<PoppyConsentRequest | null>;
239
- /** Aprova (scopes marcados) ou nega um device code. `null` = não está mais pendente. */
240
- decideDevice(input: {
241
- userCode: string;
242
- accountId: string;
243
- allow: boolean;
244
- scopes: string[];
245
- }): Promise<{
246
- approved: string[] | null;
247
- clientId: string;
248
- } | null>;
249
- /**
250
- * Verifica uma request às APIs/conversas do app: o header `Poppy-Session` (§5.3) e, se houver, o
251
- * access token (`Authorization: Bearer|DPoP`, com a prova DPoP). Um `sid` novo começa uma Session
252
- * deslogada; a request é logada só quando traz access token. Nunca lê token da URL (§5.6).
253
- */
254
- verifyAccess(input: PoppyRequestInput, options?: PoppyVerifyOptions): Promise<PoppyVerifyResult>;
255
- /** Passo 1: gera o código de uso único e o valor do cookie que o prende a este navegador. */
256
- startBrowserJoin(): Promise<{
257
- code: string;
258
- cookie: string;
259
- maxAge: number;
260
- }>;
261
- /**
262
- * Passo 2: o agente autoriza o código, com o header da Session e, se logado, o access token.
263
- * `{ ok: true }` = 204; um código inválido lança `invalid_request`.
264
- */
265
- authorizeBrowserJoin(input: PoppyRequestInput, code: unknown): Promise<Extract<PoppyVerifyResult, {
266
- ok: false;
267
- }> | {
268
- ok: true;
269
- }>;
270
- /**
271
- * Passo 3: o navegador submete o código. O primeiro envio o consome, qualquer que seja o
272
- * resultado; `null` = sem cookie para a Session (página de erro).
273
- */
274
- completeBrowserJoin(code: unknown, cookie: unknown): Promise<PoppyBrowserJoin | null>;
275
- /** O cookie age pela conta e pelos scopes do passo 2, enquanto o refresh token viver (§6). */
276
- browserState(marker: {
277
- sessionId: string;
278
- accountId?: string | null;
279
- grantId?: string | null;
280
- scopes?: string[];
281
- }): Promise<PoppySessionState | null>;
282
- listGrants(accountId: string): Promise<PoppyGrantSummary[]>;
283
- /** Desconectar o agente pela conta (§5.5): revoga um refresh token DA CONTA. */
284
- revokeAccountGrant(accountId: string, grantId: string): Promise<boolean>;
285
- /** Revoga todos os refresh tokens da conta (sair de tudo, conta suspensa…). */
286
- revokeAllAccountGrants(accountId: string): Promise<number>;
287
- /**
288
- * Bloqueio pelo console admin: revoga todos os refresh tokens do agente (todas as contas) e
289
- * encerra as Sessions dele — param na próxima request. Devolve quantos estavam vivos.
290
- */
291
- disconnectClient(clientId: string): Promise<number>;
292
- }
293
- export type { RequestRow };