zugzbot 1.0.6 → 1.0.8

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 (63) hide show
  1. package/.opencode/commands/web.md +17 -0
  2. package/.opencode/plugins/sdd-bridge.ts +83 -1
  3. package/.utils/docs_opencode/acp.md +165 -0
  4. package/.utils/docs_opencode/acp.pdf +0 -0
  5. package/.utils/docs_opencode/agents.md +803 -0
  6. package/.utils/docs_opencode/agents.pdf +0 -0
  7. package/.utils/docs_opencode/commands.md +354 -0
  8. package/.utils/docs_opencode/commands.pdf +0 -0
  9. package/.utils/docs_opencode/custom-tools.md +209 -0
  10. package/.utils/docs_opencode/custom-tools.pdf +0 -0
  11. package/.utils/docs_opencode/ecosystem.md +81 -0
  12. package/.utils/docs_opencode/ecosystem.pdf +0 -0
  13. package/.utils/docs_opencode/formatters.md +142 -0
  14. package/.utils/docs_opencode/formatters.pdf +0 -0
  15. package/.utils/docs_opencode/keybinds.md +205 -0
  16. package/.utils/docs_opencode/keybinds.pdf +0 -0
  17. package/.utils/docs_opencode/lsp.md +202 -0
  18. package/.utils/docs_opencode/lsp.pdf +0 -0
  19. package/.utils/docs_opencode/mcp-servers.md +565 -0
  20. package/.utils/docs_opencode/mcp-servers.pdf +0 -0
  21. package/.utils/docs_opencode/models.md +234 -0
  22. package/.utils/docs_opencode/models.pdf +0 -0
  23. package/.utils/docs_opencode/permissions.md +248 -0
  24. package/.utils/docs_opencode/permissions.pdf +0 -0
  25. package/.utils/docs_opencode/plugins.md +409 -0
  26. package/.utils/docs_opencode/plugins.pdf +0 -0
  27. package/.utils/docs_opencode/rules.md +189 -0
  28. package/.utils/docs_opencode/rules.pdf +0 -0
  29. package/.utils/docs_opencode/sdk.md +522 -0
  30. package/.utils/docs_opencode/sdk.pdf +0 -0
  31. package/.utils/docs_opencode/server.md +324 -0
  32. package/.utils/docs_opencode/server.pdf +0 -0
  33. package/.utils/docs_opencode/skills.md +235 -0
  34. package/.utils/docs_opencode/skills.pdf +0 -0
  35. package/.utils/docs_opencode/themes.md +378 -0
  36. package/.utils/docs_opencode/themes.pdf +0 -0
  37. package/.utils/docs_opencode/tools.md +364 -0
  38. package/.utils/docs_opencode/tools.pdf +0 -0
  39. package/.utils/export_opencode_session.py +242 -0
  40. package/.utils/toggle_model.py +441 -0
  41. package/.utils/zugzweb/client/README.md +73 -0
  42. package/.utils/zugzweb/client/eslint.config.js +22 -0
  43. package/.utils/zugzweb/client/index.html +13 -0
  44. package/.utils/zugzweb/client/package-lock.json +3707 -0
  45. package/.utils/zugzweb/client/package.json +36 -0
  46. package/.utils/zugzweb/client/public/favicon.svg +1 -0
  47. package/.utils/zugzweb/client/public/icons.svg +24 -0
  48. package/.utils/zugzweb/client/src/App.tsx +1357 -0
  49. package/.utils/zugzweb/client/src/assets/hero.png +0 -0
  50. package/.utils/zugzweb/client/src/assets/react.svg +1 -0
  51. package/.utils/zugzweb/client/src/assets/vite.svg +1 -0
  52. package/.utils/zugzweb/client/src/index.css +185 -0
  53. package/.utils/zugzweb/client/src/main.tsx +10 -0
  54. package/.utils/zugzweb/client/tsconfig.app.json +25 -0
  55. package/.utils/zugzweb/client/tsconfig.json +7 -0
  56. package/.utils/zugzweb/client/tsconfig.node.json +24 -0
  57. package/.utils/zugzweb/client/vite.config.ts +11 -0
  58. package/.utils/zugzweb/daemon.js +297 -0
  59. package/README.md +40 -1
  60. package/bin/init.js +25 -6
  61. package/models.json +8 -0
  62. package/opencode.json +5 -7
  63. package/package.json +3 -1
@@ -0,0 +1,522 @@
1
+ # SDK
2
+
3
+ Cliente JS con seguridad de tipos para el servidor opencode.
4
+
5
+ El SDK opencode JS/TS proporciona un cliente con seguridad de tipos para interactuar con el servidor. Úselo para crear integraciones y controlar opencode mediante programación.
6
+
7
+ [Más información](https://opencode.ai/docs/server) sobre cómo funciona el servidor. Para ver ejemplos, consulte los [proyectos](https://opencode.ai/docs/ecosystem#projects) creados por la comunidad.
8
+
9
+ ---
10
+
11
+ ## [Instalar](#instalar)
12
+
13
+ Instale el SDK desde npm:
14
+
15
+ **File**: Ventana de terminal
16
+
17
+ ```bash
18
+ npm install @opencode-ai/sdk
19
+ ```
20
+
21
+ ---
22
+
23
+ ## [Crear cliente](#crear-cliente)
24
+
25
+ Cree una instancia de opencode:
26
+
27
+ **File**:
28
+
29
+ ```javascript
30
+ import { createOpencode } from "@opencode-ai/sdk"
31
+
32
+ const { client } = await createOpencode()
33
+ ```
34
+
35
+ Esto inicia tanto un servidor como un cliente.
36
+
37
+ #### [Opciones](#opciones)
38
+ ``````````````````````````````
39
+
40
+ | Opción Tipo Descripción Predeterminado |
41
+ | --- |
42
+ | hostname string Nombre de host del servidor 127.0.0.1 |
43
+ | port number Puerto del servidor 4096 |
44
+ | signal AbortSignal Señal de aborto para cancelación undefined |
45
+ | timeout number Tiempo de espera en ms para inicio del servidor 5000 |
46
+ | config Config Objeto de configuración {} |
47
+
48
+
49
+ ---
50
+
51
+ ## [Configuración](#configuración)
52
+
53
+ Puede pasar un objeto de configuración para personalizar el comportamiento. La instancia aún recoge su `opencode.json`, pero puede anular o agregar configuración en línea:
54
+
55
+ **File**:
56
+
57
+ ```javascript
58
+ import { createOpencode } from "@opencode-ai/sdk"
59
+
60
+ const opencode = await createOpencode({
61
+ hostname: "127.0.0.1",
62
+ port: 4096,
63
+ config: {
64
+ model: "anthropic/claude-3-5-sonnet-20241022",
65
+ },
66
+ })
67
+
68
+ console.log(`Server running at ${opencode.server.url}`)
69
+
70
+ opencode.server.close()
71
+ ```
72
+
73
+ ## [Solo cliente](#solo-cliente)
74
+
75
+ Si ya tiene una instancia en ejecución de opencode, puede crear una instancia de cliente para conectarse a ella:
76
+
77
+ **File**:
78
+
79
+ ```javascript
80
+ import { createOpencodeClient } from "@opencode-ai/sdk"
81
+
82
+ const client = createOpencodeClient({
83
+ baseUrl: "http://localhost:4096",
84
+ })
85
+ ```
86
+
87
+ #### [Opciones](#opciones-1)
88
+ ``````````````````````````````````
89
+
90
+ | Opción Tipo Descripción Predeterminado |
91
+ | --- |
92
+ | baseUrl string URL del servidor http://localhost:4096 |
93
+ | fetch function Implementación de recuperación personalizada globalThis.fetch |
94
+ | parseAs string Método de análisis de respuesta auto |
95
+ | responseStyle string Estilo de devolución: data o fields fields |
96
+ | throwOnError boolean Lanzar errores en lugar de devolver false |
97
+
98
+
99
+ ---
100
+
101
+ ## [Tipos](#tipos)
102
+
103
+ El SDK incluye definiciones TypeScript para todos los tipos API. Importarlos directamente:
104
+
105
+ **File**:
106
+
107
+ ```typescript
108
+ import type { Session, Message, Part } from "@opencode-ai/sdk"
109
+ ```
110
+
111
+ Todos los tipos se generan a partir de la especificación OpenAPI del servidor y están disponibles en el [archivo de tipos](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts).
112
+
113
+ ---
114
+
115
+ ## [Errores](#errores)
116
+
117
+ El SDK puede generar errores que puedes detectar y manejar:
118
+
119
+ **File**:
120
+
121
+ ```typescript
122
+ try {
123
+ await client.session.get({ path: { id: "invalid-id" } })
124
+ } catch (error) {
125
+ console.error("Failed to get session:", (error as Error).message)
126
+ }
127
+ ```
128
+
129
+ ---
130
+
131
+ ## [Salida Estructurada](#salida-estructurada)
132
+
133
+ Puede solicitar una salida JSON estructurada del modelo especificando un `format` con un esquema JSON. El modelo utilizará una herramienta `StructuredOutput` para devolver un JSON validado que coincida con su esquema.
134
+
135
+ ### [Uso Básico](#uso-básico)
136
+
137
+ **File**:
138
+
139
+ ```typescript
140
+ const result = await client.session.prompt({
141
+ path: { id: sessionId },
142
+ body: {
143
+ parts: [{ type: "text", text: "Research Anthropic and provide company info" }],
144
+ format: {
145
+ type: "json_schema",
146
+ schema: {
147
+ type: "object",
148
+ properties: {
149
+ company: { type: "string", description: "Company name" },
150
+ founded: { type: "number", description: "Year founded" },
151
+ products: {
152
+ type: "array",
153
+ items: { type: "string" },
154
+ description: "Main products",
155
+ },
156
+ },
157
+ required: ["company", "founded"],
158
+ },
159
+ },
160
+ },
161
+ })
162
+
163
+ // Access the structured output
164
+ console.log(result.data.info.structured_output)
165
+ // { company: "Anthropic", founded: 2021, products: ["Claude", "Claude API"] }
166
+ ```
167
+
168
+ ### [Tipos de Formato de Salida](#tipos-de-formato-de-salida)
169
+ ````
170
+
171
+ | Tipo Descripción |
172
+ | --- |
173
+ | text Predeterminado. Respuesta de texto estándar (sin salida estructurada) |
174
+ | json_schema Devuelve JSON validado que coincide con el esquema proporcionado |
175
+
176
+
177
+ ### [Formato de Esquema JSON](#formato-de-esquema-json)
178
+
179
+ Cuando use `type: 'json_schema'`, proporcione:
180
+ ````````````
181
+
182
+ | Campo Tipo Descripción |
183
+ | --- |
184
+ | type 'json_schema' Requerido. Especifica el modo de esquema JSON |
185
+ | schema object Requerido. Objeto JSON Schema que define la estructura de salida |
186
+ | retryCount number Opcional. Número de reintentos de validación (predeterminado: 2) |
187
+
188
+
189
+ ### [Manejo de Errores](#manejo-de-errores)
190
+
191
+ Si el modelo no logra producir una salida estructurada válida después de todos los reintentos, la respuesta incluirá un `StructuredOutputError`:
192
+
193
+ **File**:
194
+
195
+ ```typescript
196
+ if (result.data.info.error?.name === "StructuredOutputError") {
197
+ console.error("Failed to produce structured output:", result.data.info.error.message)
198
+ console.error("Attempts:", result.data.info.error.retries)
199
+ }
200
+ ```
201
+
202
+ ### [Mejores Prácticas](#mejores-prácticas)
203
+
204
+ 1. **Proporcione descripciones claras** en las propiedades de su esquema para ayudar al modelo a entender qué datos extraer
205
+ 1. **Use `required`** para especificar qué campos deben estar presentes
206
+ 1. **Mantenga los esquemas enfocados** - los esquemas anidados complejos pueden ser más difíciles de completar correctamente para el modelo
207
+ 1. **Establezca un `retryCount` apropiado** - aumente para esquemas complejos, disminuya para simples
208
+
209
+ ---
210
+
211
+ ## [API](#api)
212
+
213
+ El SDK expone todas las API del servidor a través de un cliente con seguridad de tipos.
214
+
215
+ ---
216
+
217
+ ### [Global](#global)
218
+ ````
219
+
220
+ | Método Descripción Respuesta |
221
+ | --- |
222
+ | global.health() Verificar el estado y la versión del servidor { healthy: true, version: string } |
223
+
224
+
225
+ ---
226
+
227
+ #### [Ejemplos](#ejemplos)
228
+
229
+ **File**:
230
+
231
+ ```javascript
232
+ const health = await client.global.health()
233
+ console.log(health.data.version)
234
+ ```
235
+
236
+ ---
237
+
238
+ ### [Aplicación](#aplicación)
239
+ ````````[Agent[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)
240
+
241
+ | Método Descripción Respuesta |
242
+ | --- |
243
+ | app.log() Escribe una entrada de registro boolean |
244
+ | app.agents() Listar todos los agentes disponibles |
245
+
246
+
247
+ ---
248
+
249
+ #### [Ejemplos](#ejemplos-1)
250
+
251
+ **File**:
252
+
253
+ ```javascript
254
+ // Write a log entry
255
+ await client.app.log({
256
+ body: {
257
+ service: "my-app",
258
+ level: "info",
259
+ message: "Operation completed",
260
+ },
261
+ })
262
+
263
+ // List available agents
264
+ const agents = await client.app.agents()
265
+ ```
266
+
267
+ ---
268
+
269
+ ### [Proyecto](#proyecto)
270
+ ````[Project[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Project](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)
271
+
272
+ | Método Descripción Respuesta |
273
+ | --- |
274
+ | project.list() Listar todos los proyectos |
275
+ | project.current() Obtener proyecto actual |
276
+
277
+
278
+ ---
279
+
280
+ #### [Ejemplos](#ejemplos-2)
281
+
282
+ **File**:
283
+
284
+ ```javascript
285
+ // List all projects
286
+ const projects = await client.project.list()
287
+
288
+ // Get current project
289
+ const currentProject = await client.project.current()
290
+ ```
291
+
292
+ ---
293
+
294
+ ### [Ruta](#ruta)
295
+ ````[Path](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)
296
+
297
+ | Método Descripción Respuesta |
298
+ | --- |
299
+ | path.get() Obtener ruta actual |
300
+
301
+
302
+ ---
303
+
304
+ #### [Ejemplos](#ejemplos-3)
305
+
306
+ **File**:
307
+
308
+ ```javascript
309
+ // Get current path information
310
+ const pathInfo = await client.path.get()
311
+ ```
312
+
313
+ ---
314
+
315
+ ### [Configuración](#configuración-1)
316
+ ````[Config](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)``````[Provider[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)``
317
+
318
+ | Método Descripción Respuesta |
319
+ | --- |
320
+ | config.get() Obtener información de configuración |
321
+ | config.providers() Lista de proveedores y modelos predeterminados { providers: , default: { [key: string]: string } } |
322
+
323
+
324
+ ---
325
+
326
+ #### [Ejemplos](#ejemplos-4)
327
+
328
+ **File**:
329
+
330
+ ```javascript
331
+ const config = await client.config.get()
332
+
333
+ const { providers, default: defaults } = await client.config.providers()
334
+ ```
335
+
336
+ ---
337
+
338
+ ### [Sesiones](#sesiones)
339
+ ````[Session[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Session](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Session[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Session](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````````[Session](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)``````````````[Session](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Session](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)``````````[Message](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Part[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````````[Message](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Part[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````````[AssistantMessage](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)``[salida estructurada](#salida-estructurada)``````[AssistantMessage](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Part[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)``````[AssistantMessage](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Session](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````[Session](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````
340
+
341
+ | Método Descripción Notas |
342
+ | --- |
343
+ | session.list() Listar sesiones Devuelve |
344
+ | session.get({ path }) Obtener sesión Devuelve |
345
+ | session.children({ path }) Listar sesiones secundarias Devuelve |
346
+ | session.create({ body }) Crear sesión Devuelve |
347
+ | session.delete({ path }) Eliminar sesión Devuelve boolean |
348
+ | session.update({ path, body }) Actualizar propiedades de sesión Devuelve |
349
+ | session.init({ path, body }) Analizar aplicación y crear AGENTS.md Devuelve boolean |
350
+ | session.abort({ path }) Cancelar una sesión en ejecución Devuelve boolean |
351
+ | session.share({ path }) Compartir sesión Devuelve |
352
+ | session.unshare({ path }) Dejar de compartir sesión Devuelve |
353
+ | session.summarize({ path, body }) Resumir sesión Devuelve boolean |
354
+ | session.messages({ path }) Listar mensajes en una sesión Devuelve { info: , parts: }[] |
355
+ | session.message({ path }) Obtener detalles del mensaje Devuelve { info: , parts: } |
356
+ | session.prompt({ path, body }) Enviar mensaje rápido body.noReply: true devuelve UserMessage (solo contexto). El valor predeterminado devuelve con respuesta de IA. Admite body.outputFormat para |
357
+ | session.command({ path, body }) Enviar comando a la sesión Devuelve { info: , parts: } |
358
+ | session.shell({ path, body }) Ejecute un comando de shell Devuelve |
359
+ | session.revert({ path, body }) Revertir un mensaje Devuelve |
360
+ | session.unrevert({ path }) Restaurar mensajes revertidos Devuelve |
361
+ | postSessionByIdPermissionsByPermissionId({ path, body }) Responder a una solicitud de permiso Devuelve boolean |
362
+
363
+
364
+ ---
365
+
366
+ #### [Ejemplos](#ejemplos-5)
367
+
368
+ **File**:
369
+
370
+ ```javascript
371
+ // Create and manage sessions
372
+ const session = await client.session.create({
373
+ body: { title: "My session" },
374
+ })
375
+
376
+ const sessions = await client.session.list()
377
+
378
+ // Send a prompt message
379
+ const result = await client.session.prompt({
380
+ path: { id: session.id },
381
+ body: {
382
+ model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
383
+ parts: [{ type: "text", text: "Hello!" }],
384
+ },
385
+ })
386
+
387
+ // Inject context without triggering AI response (useful for plugins)
388
+ await client.session.prompt({
389
+ path: { id: session.id },
390
+ body: {
391
+ noReply: true,
392
+ parts: [{ type: "text", text: "You are a helpful assistant." }],
393
+ },
394
+ })
395
+ ```
396
+
397
+ ---
398
+
399
+ ### [Archivos](#archivos)
400
+ ````````````````````[Symbol[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)````````[File[]](https://github.com/anomalyco/opencode/blob/dev/packages/sdk/js/src/gen/types.gen.ts)
401
+
402
+ | Método Descripción Respuesta |
403
+ | --- |
404
+ | find.text({ query }) Buscar texto en archivos Matriz de objetos coincidentes con path , lines , line_number , absolute_offset , submatches |
405
+ | find.files({ query }) Buscar archivos y directorios por nombre string[] (rutas) |
406
+ | find.symbols({ query }) Buscar símbolos del espacio de trabajo |
407
+ | file.read({ query }) Leer un archivo { type: "raw" \| "patch", content: string } |
408
+ | file.status({ query? }) Obtener el estado de los archivos rastreados |
409
+
410
+
411
+ `find.files` admite algunos campos de consulta opcionales:
412
+
413
+ - `type`: `"file"` o `"directory"`
414
+ - `directory`: anula la raíz del proyecto para la búsqueda.
415
+ - `limit`: resultados máximos (1–200)
416
+
417
+ ---
418
+
419
+ #### [Ejemplos](#ejemplos-6)
420
+
421
+ **File**:
422
+
423
+ ```javascript
424
+ // Search and read files
425
+ const textResults = await client.find.text({
426
+ query: { pattern: "function.*opencode" },
427
+ })
428
+
429
+ const files = await client.find.files({
430
+ query: { query: "*.ts", type: "file" },
431
+ })
432
+
433
+ const directories = await client.find.files({
434
+ query: { query: "packages", type: "directory", limit: 20 },
435
+ })
436
+
437
+ const content = await client.file.read({
438
+ query: { path: "src/index.ts" },
439
+ })
440
+ ```
441
+
442
+ ---
443
+
444
+ ### [TUI](#tui)
445
+ ````````````````````````````````````
446
+
447
+ | Método Descripción Respuesta |
448
+ | --- |
449
+ | tui.appendPrompt({ body }) Agregar texto al mensaje boolean |
450
+ | tui.openHelp() Abra el cuadro de diálogo de ayuda boolean |
451
+ | tui.openSessions() Abrir el selector de sesiones boolean |
452
+ | tui.openThemes() Abra el selector de temas boolean |
453
+ | tui.openModels() Abrir el selector de modelo boolean |
454
+ | tui.submitPrompt() Enviar el mensaje actual boolean |
455
+ | tui.clearPrompt() Borrar el mensaje boolean |
456
+ | tui.executeCommand({ body }) Ejecutar un comando boolean |
457
+ | tui.showToast({ body }) Mostrar notificación del brindis boolean |
458
+
459
+
460
+ ---
461
+
462
+ #### [Ejemplos](#ejemplos-7)
463
+
464
+ **File**:
465
+
466
+ ```javascript
467
+ // Control TUI interface
468
+ await client.tui.appendPrompt({
469
+ body: { text: "Add this to prompt" },
470
+ })
471
+
472
+ await client.tui.showToast({
473
+ body: { message: "Task completed", variant: "success" },
474
+ })
475
+ ```
476
+
477
+ ---
478
+
479
+ ### [Autenticación](#autenticación)
480
+ ````
481
+
482
+ | Método Descripción Respuesta |
483
+ | --- |
484
+ | auth.set({ ... }) Establecer credenciales de autenticación boolean |
485
+
486
+
487
+ ---
488
+
489
+ #### [Ejemplos](#ejemplos-8)
490
+
491
+ **File**:
492
+
493
+ ```javascript
494
+ await client.auth.set({
495
+ path: { id: "anthropic" },
496
+ body: { type: "api", key: "your-api-key" },
497
+ })
498
+ ```
499
+
500
+ ---
501
+
502
+ ### [Eventos](#eventos)
503
+ ``
504
+
505
+ | Método Descripción Respuesta |
506
+ | --- |
507
+ | event.subscribe() Transmisión de eventos enviados por el servidor Transmisión de eventos enviados por el servidor |
508
+
509
+
510
+ ---
511
+
512
+ #### [Ejemplos](#ejemplos-9)
513
+
514
+ **File**:
515
+
516
+ ```javascript
517
+ // Listen to real-time events
518
+ const events = await client.event.subscribe()
519
+ for await (const event of events.stream) {
520
+ console.log("Event:", event.type, event.properties)
521
+ }
522
+ ```
Binary file