@realtimex/sdk 2.0.31 → 2.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -19,10 +19,41 @@ const workspaces = await client.request("listWorkspaces");
19
19
  `REALTIMEX_BASE_URL`. Desktop and `dev:all` runtimes propagate the resolved
20
20
  dynamic `/cli` endpoint; the SDK does not guess a localhost port.
21
21
 
22
+ ## Webhook endpoint management
23
+
24
+ Webhook endpoints can be managed through the generated authenticated client.
25
+ These control-plane operations require an authenticated, user-bound session
26
+ credential.
27
+
28
+ ```js
29
+ const { createRealtimeXClient } = require("@realtimex/sdk");
30
+
31
+ const client = createRealtimeXClient({
32
+ baseUrl: process.env.REALTIMEX_BASE_URL,
33
+ token: process.env.REALTIMEX_AUTH_TOKEN,
34
+ });
35
+
36
+ const created = await client.createWebhookEndpoint({
37
+ name: "Build tasks",
38
+ workspaceId: 7,
39
+ secret: process.env.REALTIMEX_WEBHOOK_SECRET,
40
+ dispatchMode: "trigger_agent",
41
+ });
42
+
43
+ await client.listWebhookDeliveries({
44
+ endpointId: created.endpoint.id,
45
+ limit: 25,
46
+ });
47
+ ```
48
+
49
+ The `secret` field is write-only. Endpoint responses report
50
+ `secretConfigured`; they never contain the plaintext secret, ciphertext, or a
51
+ secret-storage reference. Deletion additionally requires
52
+ `{ confirmDestructive: true }`.
53
+
22
54
  ## Public webhook task delivery
23
55
 
24
56
  Use a separate webhook client to trigger an existing public webhook endpoint.
25
- Webhook endpoint creation and editing remain in RealtimeX settings.
26
57
 
27
58
  ```js
28
59
  const { createRealtimeXWebhookClient } = require("@realtimex/sdk");
package/index.d.ts CHANGED
@@ -151,6 +151,29 @@ export interface CreateChannelOptions extends RealtimeXRequestOptions {
151
151
  body?: CreateChannelBody;
152
152
  }
153
153
 
154
+ export type CreateLocalAppParams = Record<string, never>;
155
+ export type CreateLocalAppQuery = Record<string, never>;
156
+ export type CreateLocalAppHeaders = Record<string, never>;
157
+ export type CreateLocalAppBody = {
158
+ displayName: string;
159
+ description?: string;
160
+ sourceType: "source" | "npx" | "uvx";
161
+ sourcePath?: string;
162
+ packageInput?: string;
163
+ homeUrl?: string;
164
+ env?: {
165
+ [key: string]: string;
166
+ };
167
+ tags?: Array<string>;
168
+ };
169
+ export type CreateLocalAppResponse = Record<string, unknown>;
170
+ export interface CreateLocalAppOptions extends RealtimeXRequestOptions {
171
+ params?: CreateLocalAppParams;
172
+ query?: CreateLocalAppQuery;
173
+ headers?: CreateLocalAppHeaders & Record<string, string>;
174
+ body?: CreateLocalAppBody;
175
+ }
176
+
154
177
  export type CreateThreadParams = {
155
178
  workspaceSlug: string;
156
179
  };
@@ -169,6 +192,41 @@ export interface CreateThreadOptions extends RealtimeXRequestOptions {
169
192
  body?: CreateThreadBody;
170
193
  }
171
194
 
195
+ export type CreateWebhookEndpointParams = Record<string, never>;
196
+ export type CreateWebhookEndpointQuery = Record<string, never>;
197
+ export type CreateWebhookEndpointHeaders = Record<string, never>;
198
+ export type CreateWebhookEndpointBody = {
199
+ name: string;
200
+ workspaceId: number;
201
+ preset?: string;
202
+ enabled?: boolean;
203
+ secret: string;
204
+ signatureHeader?: string;
205
+ signaturePrefix?: string;
206
+ timestampHeader?: string;
207
+ deliveryIdHeader?: string;
208
+ eventTypeHeader?: string;
209
+ sourceHeader?: string;
210
+ allowedSourcePaths?: Array<string>;
211
+ replayWindowSeconds?: number;
212
+ payloadSizeLimitBytes?: number;
213
+ dispatchMode?: "record_only" | "send_to_thread" | "trigger_agent" | "trigger_flow";
214
+ triggerFlowId?: string;
215
+ agentTask?: Record<string, unknown>;
216
+ persistPayloadMode?: "none" | "attachment";
217
+ payloadStorageWorkspaceId?: number;
218
+ payloadStorageSubpath?: string;
219
+ dispatchInstruction?: string;
220
+ includePayloadPreview?: boolean;
221
+ };
222
+ export type CreateWebhookEndpointResponse = Record<string, unknown>;
223
+ export interface CreateWebhookEndpointOptions extends RealtimeXRequestOptions {
224
+ params?: CreateWebhookEndpointParams;
225
+ query?: CreateWebhookEndpointQuery;
226
+ headers?: CreateWebhookEndpointHeaders & Record<string, string>;
227
+ body?: CreateWebhookEndpointBody;
228
+ }
229
+
172
230
  export type CreateWorkspaceParams = Record<string, never>;
173
231
  export type CreateWorkspaceQuery = Record<string, never>;
174
232
  export type CreateWorkspaceHeaders = {
@@ -238,6 +296,22 @@ export interface DeleteChannelOptions extends RealtimeXRequestOptions {
238
296
  body?: DeleteChannelBody;
239
297
  }
240
298
 
299
+ export type DeleteLocalAppParams = {
300
+ appId: string;
301
+ };
302
+ export type DeleteLocalAppQuery = Record<string, never>;
303
+ export type DeleteLocalAppHeaders = Record<string, never>;
304
+ export type DeleteLocalAppBody = {
305
+ confirmDestructive: true;
306
+ };
307
+ export type DeleteLocalAppResponse = Record<string, unknown>;
308
+ export interface DeleteLocalAppOptions extends RealtimeXRequestOptions {
309
+ params?: DeleteLocalAppParams;
310
+ query?: DeleteLocalAppQuery;
311
+ headers?: DeleteLocalAppHeaders & Record<string, string>;
312
+ body?: DeleteLocalAppBody;
313
+ }
314
+
241
315
  export type DeleteThreadParams = {
242
316
  workspaceSlug: string;
243
317
  threadSlug: string;
@@ -255,6 +329,22 @@ export interface DeleteThreadOptions extends RealtimeXRequestOptions {
255
329
  body?: DeleteThreadBody;
256
330
  }
257
331
 
332
+ export type DeleteWebhookEndpointParams = {
333
+ endpointId: string;
334
+ };
335
+ export type DeleteWebhookEndpointQuery = Record<string, never>;
336
+ export type DeleteWebhookEndpointHeaders = Record<string, never>;
337
+ export type DeleteWebhookEndpointBody = {
338
+ confirmDestructive: true;
339
+ };
340
+ export type DeleteWebhookEndpointResponse = Record<string, unknown>;
341
+ export interface DeleteWebhookEndpointOptions extends RealtimeXRequestOptions {
342
+ params?: DeleteWebhookEndpointParams;
343
+ query?: DeleteWebhookEndpointQuery;
344
+ headers?: DeleteWebhookEndpointHeaders & Record<string, string>;
345
+ body?: DeleteWebhookEndpointBody;
346
+ }
347
+
258
348
  export type DeleteWorkspaceParams = {
259
349
  workspaceSlug: string;
260
350
  };
@@ -355,6 +445,50 @@ export interface GetArtifactOptions extends RealtimeXRequestOptions {
355
445
  body?: GetArtifactBody;
356
446
  }
357
447
 
448
+ export type GetLocalAppParams = {
449
+ appId: string;
450
+ };
451
+ export type GetLocalAppQuery = Record<string, never>;
452
+ export type GetLocalAppHeaders = Record<string, never>;
453
+ export type GetLocalAppBody = unknown;
454
+ export type GetLocalAppResponse = Record<string, unknown>;
455
+ export interface GetLocalAppOptions extends RealtimeXRequestOptions {
456
+ params?: GetLocalAppParams;
457
+ query?: GetLocalAppQuery;
458
+ headers?: GetLocalAppHeaders & Record<string, string>;
459
+ body?: GetLocalAppBody;
460
+ }
461
+
462
+ export type GetLocalAppLogsParams = {
463
+ appId: string;
464
+ };
465
+ export type GetLocalAppLogsQuery = {
466
+ limit?: number;
467
+ };
468
+ export type GetLocalAppLogsHeaders = Record<string, never>;
469
+ export type GetLocalAppLogsBody = unknown;
470
+ export type GetLocalAppLogsResponse = Record<string, unknown>;
471
+ export interface GetLocalAppLogsOptions extends RealtimeXRequestOptions {
472
+ params?: GetLocalAppLogsParams;
473
+ query?: GetLocalAppLogsQuery;
474
+ headers?: GetLocalAppLogsHeaders & Record<string, string>;
475
+ body?: GetLocalAppLogsBody;
476
+ }
477
+
478
+ export type GetLocalAppStatusParams = {
479
+ appId: string;
480
+ };
481
+ export type GetLocalAppStatusQuery = Record<string, never>;
482
+ export type GetLocalAppStatusHeaders = Record<string, never>;
483
+ export type GetLocalAppStatusBody = unknown;
484
+ export type GetLocalAppStatusResponse = Record<string, unknown>;
485
+ export interface GetLocalAppStatusOptions extends RealtimeXRequestOptions {
486
+ params?: GetLocalAppStatusParams;
487
+ query?: GetLocalAppStatusQuery;
488
+ headers?: GetLocalAppStatusHeaders & Record<string, string>;
489
+ body?: GetLocalAppStatusBody;
490
+ }
491
+
358
492
  export type GetPluginParams = {
359
493
  pluginId: string;
360
494
  };
@@ -407,6 +541,20 @@ export interface GetThreadOptions extends RealtimeXRequestOptions {
407
541
  body?: GetThreadBody;
408
542
  }
409
543
 
544
+ export type GetWebhookEndpointParams = {
545
+ endpointId: string;
546
+ };
547
+ export type GetWebhookEndpointQuery = Record<string, never>;
548
+ export type GetWebhookEndpointHeaders = Record<string, never>;
549
+ export type GetWebhookEndpointBody = unknown;
550
+ export type GetWebhookEndpointResponse = Record<string, unknown>;
551
+ export interface GetWebhookEndpointOptions extends RealtimeXRequestOptions {
552
+ params?: GetWebhookEndpointParams;
553
+ query?: GetWebhookEndpointQuery;
554
+ headers?: GetWebhookEndpointHeaders & Record<string, string>;
555
+ body?: GetWebhookEndpointBody;
556
+ }
557
+
410
558
  export type GetWorkspaceParams = {
411
559
  workspaceSlug: string;
412
560
  };
@@ -547,6 +695,18 @@ export interface ListLlmProvidersOptions extends RealtimeXRequestOptions {
547
695
  body?: ListLlmProvidersBody;
548
696
  }
549
697
 
698
+ export type ListLocalAppsParams = Record<string, never>;
699
+ export type ListLocalAppsQuery = Record<string, never>;
700
+ export type ListLocalAppsHeaders = Record<string, never>;
701
+ export type ListLocalAppsBody = unknown;
702
+ export type ListLocalAppsResponse = Record<string, unknown>;
703
+ export interface ListLocalAppsOptions extends RealtimeXRequestOptions {
704
+ params?: ListLocalAppsParams;
705
+ query?: ListLocalAppsQuery;
706
+ headers?: ListLocalAppsHeaders & Record<string, string>;
707
+ body?: ListLocalAppsBody;
708
+ }
709
+
550
710
  export type ListPluginsParams = Record<string, never>;
551
711
  export type ListPluginsQuery = Record<string, never>;
552
712
  export type ListPluginsHeaders = {
@@ -610,6 +770,34 @@ export interface ListThreadsOptions extends RealtimeXRequestOptions {
610
770
  body?: ListThreadsBody;
611
771
  }
612
772
 
773
+ export type ListWebhookDeliveriesParams = Record<string, never>;
774
+ export type ListWebhookDeliveriesQuery = {
775
+ endpointId?: string;
776
+ limit?: number;
777
+ offset?: number;
778
+ };
779
+ export type ListWebhookDeliveriesHeaders = Record<string, never>;
780
+ export type ListWebhookDeliveriesBody = unknown;
781
+ export type ListWebhookDeliveriesResponse = Record<string, unknown>;
782
+ export interface ListWebhookDeliveriesOptions extends RealtimeXRequestOptions {
783
+ params?: ListWebhookDeliveriesParams;
784
+ query?: ListWebhookDeliveriesQuery;
785
+ headers?: ListWebhookDeliveriesHeaders & Record<string, string>;
786
+ body?: ListWebhookDeliveriesBody;
787
+ }
788
+
789
+ export type ListWebhookEndpointsParams = Record<string, never>;
790
+ export type ListWebhookEndpointsQuery = Record<string, never>;
791
+ export type ListWebhookEndpointsHeaders = Record<string, never>;
792
+ export type ListWebhookEndpointsBody = unknown;
793
+ export type ListWebhookEndpointsResponse = Record<string, unknown>;
794
+ export interface ListWebhookEndpointsOptions extends RealtimeXRequestOptions {
795
+ params?: ListWebhookEndpointsParams;
796
+ query?: ListWebhookEndpointsQuery;
797
+ headers?: ListWebhookEndpointsHeaders & Record<string, string>;
798
+ body?: ListWebhookEndpointsBody;
799
+ }
800
+
613
801
  export type ListWorkspaceAgentSkillsParams = {
614
802
  workspaceSlug: string;
615
803
  };
@@ -857,6 +1045,20 @@ export interface RespondTerminalIdlePromptOptions extends RealtimeXRequestOption
857
1045
  body?: RespondTerminalIdlePromptBody;
858
1046
  }
859
1047
 
1048
+ export type RestartLocalAppParams = {
1049
+ appId: string;
1050
+ };
1051
+ export type RestartLocalAppQuery = Record<string, never>;
1052
+ export type RestartLocalAppHeaders = Record<string, never>;
1053
+ export type RestartLocalAppBody = unknown;
1054
+ export type RestartLocalAppResponse = Record<string, unknown>;
1055
+ export interface RestartLocalAppOptions extends RealtimeXRequestOptions {
1056
+ params?: RestartLocalAppParams;
1057
+ query?: RestartLocalAppQuery;
1058
+ headers?: RestartLocalAppHeaders & Record<string, string>;
1059
+ body?: RestartLocalAppBody;
1060
+ }
1061
+
860
1062
  export type ResumeArtifactParams = {
861
1063
  artifactId: string;
862
1064
  };
@@ -1177,6 +1379,22 @@ export interface SetHeartbeatTimezoneOptions extends RealtimeXRequestOptions {
1177
1379
  body?: SetHeartbeatTimezoneBody;
1178
1380
  }
1179
1381
 
1382
+ export type SetLocalAppEnabledParams = {
1383
+ appId: string;
1384
+ };
1385
+ export type SetLocalAppEnabledQuery = Record<string, never>;
1386
+ export type SetLocalAppEnabledHeaders = Record<string, never>;
1387
+ export type SetLocalAppEnabledBody = {
1388
+ enabled: boolean;
1389
+ };
1390
+ export type SetLocalAppEnabledResponse = Record<string, unknown>;
1391
+ export interface SetLocalAppEnabledOptions extends RealtimeXRequestOptions {
1392
+ params?: SetLocalAppEnabledParams;
1393
+ query?: SetLocalAppEnabledQuery;
1394
+ headers?: SetLocalAppEnabledHeaders & Record<string, string>;
1395
+ body?: SetLocalAppEnabledBody;
1396
+ }
1397
+
1180
1398
  export type SetupHeartbeatTasksParams = Record<string, never>;
1181
1399
  export type SetupHeartbeatTasksQuery = {
1182
1400
  workspaceSlug?: string;
@@ -1314,6 +1532,20 @@ export interface StartChannelOptions extends RealtimeXRequestOptions {
1314
1532
  body?: StartChannelBody;
1315
1533
  }
1316
1534
 
1535
+ export type StartLocalAppParams = {
1536
+ appId: string;
1537
+ };
1538
+ export type StartLocalAppQuery = Record<string, never>;
1539
+ export type StartLocalAppHeaders = Record<string, never>;
1540
+ export type StartLocalAppBody = unknown;
1541
+ export type StartLocalAppResponse = Record<string, unknown>;
1542
+ export interface StartLocalAppOptions extends RealtimeXRequestOptions {
1543
+ params?: StartLocalAppParams;
1544
+ query?: StartLocalAppQuery;
1545
+ headers?: StartLocalAppHeaders & Record<string, string>;
1546
+ body?: StartLocalAppBody;
1547
+ }
1548
+
1317
1549
  export type StopBrowserSessionParams = {
1318
1550
  sessionName: string;
1319
1551
  };
@@ -1348,6 +1580,22 @@ export interface StopChannelOptions extends RealtimeXRequestOptions {
1348
1580
  body?: StopChannelBody;
1349
1581
  }
1350
1582
 
1583
+ export type StopLocalAppParams = {
1584
+ appId: string;
1585
+ };
1586
+ export type StopLocalAppQuery = Record<string, never>;
1587
+ export type StopLocalAppHeaders = Record<string, never>;
1588
+ export type StopLocalAppBody = {
1589
+ force?: boolean;
1590
+ };
1591
+ export type StopLocalAppResponse = Record<string, unknown>;
1592
+ export interface StopLocalAppOptions extends RealtimeXRequestOptions {
1593
+ params?: StopLocalAppParams;
1594
+ query?: StopLocalAppQuery;
1595
+ headers?: StopLocalAppHeaders & Record<string, string>;
1596
+ body?: StopLocalAppBody;
1597
+ }
1598
+
1351
1599
  export type StopThreadTerminalSessionParams = Record<string, never>;
1352
1600
  export type StopThreadTerminalSessionQuery = Record<string, never>;
1353
1601
  export type StopThreadTerminalSessionHeaders = {
@@ -1378,6 +1626,22 @@ export interface TerminateTerminalSessionOptions extends RealtimeXRequestOptions
1378
1626
  body?: TerminateTerminalSessionBody;
1379
1627
  }
1380
1628
 
1629
+ export type TestWebhookEndpointParams = {
1630
+ endpointId: string;
1631
+ };
1632
+ export type TestWebhookEndpointQuery = Record<string, never>;
1633
+ export type TestWebhookEndpointHeaders = Record<string, never>;
1634
+ export type TestWebhookEndpointBody = {
1635
+ payload?: Record<string, unknown>;
1636
+ };
1637
+ export type TestWebhookEndpointResponse = Record<string, unknown>;
1638
+ export interface TestWebhookEndpointOptions extends RealtimeXRequestOptions {
1639
+ params?: TestWebhookEndpointParams;
1640
+ query?: TestWebhookEndpointQuery;
1641
+ headers?: TestWebhookEndpointHeaders & Record<string, string>;
1642
+ body?: TestWebhookEndpointBody;
1643
+ }
1644
+
1381
1645
  export type TriggerWorkspaceHeartbeatParams = {
1382
1646
  workspaceSlug: string;
1383
1647
  };
@@ -1438,6 +1702,64 @@ export interface UpdateChannelOptions extends RealtimeXRequestOptions {
1438
1702
  body?: UpdateChannelBody;
1439
1703
  }
1440
1704
 
1705
+ export type UpdateLocalAppParams = {
1706
+ appId: string;
1707
+ };
1708
+ export type UpdateLocalAppQuery = Record<string, never>;
1709
+ export type UpdateLocalAppHeaders = Record<string, never>;
1710
+ export type UpdateLocalAppBody = {
1711
+ displayName?: string;
1712
+ description?: string;
1713
+ homeUrl?: string;
1714
+ env?: {
1715
+ [key: string]: string;
1716
+ };
1717
+ };
1718
+ export type UpdateLocalAppResponse = Record<string, unknown>;
1719
+ export interface UpdateLocalAppOptions extends RealtimeXRequestOptions {
1720
+ params?: UpdateLocalAppParams;
1721
+ query?: UpdateLocalAppQuery;
1722
+ headers?: UpdateLocalAppHeaders & Record<string, string>;
1723
+ body?: UpdateLocalAppBody;
1724
+ }
1725
+
1726
+ export type UpdateWebhookEndpointParams = {
1727
+ endpointId: string;
1728
+ };
1729
+ export type UpdateWebhookEndpointQuery = Record<string, never>;
1730
+ export type UpdateWebhookEndpointHeaders = Record<string, never>;
1731
+ export type UpdateWebhookEndpointBody = {
1732
+ name?: string;
1733
+ workspaceId?: number;
1734
+ preset?: string;
1735
+ enabled?: boolean;
1736
+ secret?: string;
1737
+ signatureHeader?: string;
1738
+ signaturePrefix?: string;
1739
+ timestampHeader?: string;
1740
+ deliveryIdHeader?: string;
1741
+ eventTypeHeader?: string;
1742
+ sourceHeader?: string;
1743
+ allowedSourcePaths?: Array<string>;
1744
+ replayWindowSeconds?: number;
1745
+ payloadSizeLimitBytes?: number;
1746
+ dispatchMode?: "record_only" | "send_to_thread" | "trigger_agent" | "trigger_flow";
1747
+ triggerFlowId?: string;
1748
+ agentTask?: Record<string, unknown>;
1749
+ persistPayloadMode?: "none" | "attachment";
1750
+ payloadStorageWorkspaceId?: number;
1751
+ payloadStorageSubpath?: string;
1752
+ dispatchInstruction?: string;
1753
+ includePayloadPreview?: boolean;
1754
+ };
1755
+ export type UpdateWebhookEndpointResponse = Record<string, unknown>;
1756
+ export interface UpdateWebhookEndpointOptions extends RealtimeXRequestOptions {
1757
+ params?: UpdateWebhookEndpointParams;
1758
+ query?: UpdateWebhookEndpointQuery;
1759
+ headers?: UpdateWebhookEndpointHeaders & Record<string, string>;
1760
+ body?: UpdateWebhookEndpointBody;
1761
+ }
1762
+
1441
1763
  export type WorkspaceShellLayoutParams = Record<string, never>;
1442
1764
  export type WorkspaceShellLayoutQuery = Record<string, never>;
1443
1765
  export type WorkspaceShellLayoutHeaders = Record<string, never>;
@@ -1560,9 +1882,14 @@ export declare class RealtimeXClient {
1560
1882
  /** Create a chat channel in one exact workspace. Defaults to Telegram when plugin_type, channelType, and type are omitted. Use flat botToken and thread_id fields instead of nested config/settings. */
1561
1883
  createChannel(options?: CreateChannelOptions): Promise<CreateChannelResponse>;
1562
1884
  createChannel(workspaceSlug: string, body: CreateChannelBody, options?: Omit<CreateChannelOptions, 'params' | 'body'>): Promise<CreateChannelResponse>;
1885
+ createLocalApp(options?: CreateLocalAppOptions): Promise<CreateLocalAppResponse>;
1886
+ createLocalApp(body: CreateLocalAppBody, options?: Omit<CreateLocalAppOptions, 'body'>): Promise<CreateLocalAppResponse>;
1563
1887
  /** Create a thread in one workspace. The name is optional but recommended. */
1564
1888
  createThread(options?: CreateThreadOptions): Promise<CreateThreadResponse>;
1565
1889
  createThread(workspaceSlug: string, body: CreateThreadBody, options?: Omit<CreateThreadOptions, 'params' | 'body'>): Promise<CreateThreadResponse>;
1890
+ /** Create a webhook endpoint in an accessible workspace. secret is a write-only input. */
1891
+ createWebhookEndpoint(options?: CreateWebhookEndpointOptions): Promise<CreateWebhookEndpointResponse>;
1892
+ createWebhookEndpoint(body: CreateWebhookEndpointBody, options?: Omit<CreateWebhookEndpointOptions, 'body'>): Promise<CreateWebhookEndpointResponse>;
1566
1893
  /** Create a workspace. Requires a human-readable workspace name. */
1567
1894
  createWorkspace(options?: CreateWorkspaceOptions): Promise<CreateWorkspaceResponse>;
1568
1895
  createWorkspace(body: CreateWorkspaceBody, options?: Omit<CreateWorkspaceOptions, 'body'>): Promise<CreateWorkspaceResponse>;
@@ -1575,9 +1902,14 @@ export declare class RealtimeXClient {
1575
1902
  /** Delete one chat channel by exact channel id. */
1576
1903
  deleteChannel(options?: DeleteChannelOptions): Promise<DeleteChannelResponse>;
1577
1904
  deleteChannel(channelId: string, options?: Omit<DeleteChannelOptions, 'params'>): Promise<DeleteChannelResponse>;
1905
+ deleteLocalApp(options?: DeleteLocalAppOptions): Promise<DeleteLocalAppResponse>;
1906
+ deleteLocalApp(appId: string, body: DeleteLocalAppBody, options?: Omit<DeleteLocalAppOptions, 'params' | 'body'>): Promise<DeleteLocalAppResponse>;
1578
1907
  /** Delete one thread by exact workspace slug and exact thread slug. */
1579
1908
  deleteThread(options?: DeleteThreadOptions): Promise<DeleteThreadResponse>;
1580
1909
  deleteThread(params: DeleteThreadParams, options?: Omit<DeleteThreadOptions, 'params'>): Promise<DeleteThreadResponse>;
1910
+ /** Permanently delete a visible webhook endpoint. confirmDestructive must be true. */
1911
+ deleteWebhookEndpoint(options?: DeleteWebhookEndpointOptions): Promise<DeleteWebhookEndpointResponse>;
1912
+ deleteWebhookEndpoint(endpointId: string, body: DeleteWebhookEndpointBody, options?: Omit<DeleteWebhookEndpointOptions, 'params' | 'body'>): Promise<DeleteWebhookEndpointResponse>;
1581
1913
  /** Delete one workspace by exact workspace slug. */
1582
1914
  deleteWorkspace(options?: DeleteWorkspaceOptions): Promise<DeleteWorkspaceResponse>;
1583
1915
  deleteWorkspace(workspaceSlug: string, options?: Omit<DeleteWorkspaceOptions, 'params'>): Promise<DeleteWorkspaceResponse>;
@@ -1596,6 +1928,13 @@ export declare class RealtimeXClient {
1596
1928
  /** Get one public artifact by artifact id. */
1597
1929
  getArtifact(options?: GetArtifactOptions): Promise<GetArtifactResponse>;
1598
1930
  getArtifact(artifactId: string, options?: Omit<GetArtifactOptions, 'params'>): Promise<GetArtifactResponse>;
1931
+ getLocalApp(options?: GetLocalAppOptions): Promise<GetLocalAppResponse>;
1932
+ getLocalApp(appId: string, options?: Omit<GetLocalAppOptions, 'params'>): Promise<GetLocalAppResponse>;
1933
+ /** Read bounded recent desktop logs. Each entry is capped at 4 KiB and secret-bearing configuration is omitted. */
1934
+ getLocalAppLogs(options?: GetLocalAppLogsOptions): Promise<GetLocalAppLogsResponse>;
1935
+ getLocalAppLogs(appId: string, options?: Omit<GetLocalAppLogsOptions, 'params'>): Promise<GetLocalAppLogsResponse>;
1936
+ getLocalAppStatus(options?: GetLocalAppStatusOptions): Promise<GetLocalAppStatusResponse>;
1937
+ getLocalAppStatus(appId: string, options?: Omit<GetLocalAppStatusOptions, 'params'>): Promise<GetLocalAppStatusResponse>;
1599
1938
  /** Get one installed plugin with its config schema (keys, labels, types, defaults) and current non-secret configuration values. Secret (password-type) values are never returned; secretConfigState reports whether each one is set. Use a plugin id, name, or displayName from list-plugins. */
1600
1939
  getPlugin(options?: GetPluginOptions): Promise<GetPluginResponse>;
1601
1940
  getPlugin(pluginId: string, options?: Omit<GetPluginOptions, 'params'>): Promise<GetPluginResponse>;
@@ -1605,6 +1944,9 @@ export declare class RealtimeXClient {
1605
1944
  /** Get one thread by exact workspace slug and exact thread slug. */
1606
1945
  getThread(options?: GetThreadOptions): Promise<GetThreadResponse>;
1607
1946
  getThread(params: GetThreadParams, options?: Omit<GetThreadOptions, 'params'>): Promise<GetThreadResponse>;
1947
+ /** Get one visible webhook endpoint by endpoint id. The response reports secretConfigured but never returns the secret. */
1948
+ getWebhookEndpoint(options?: GetWebhookEndpointOptions): Promise<GetWebhookEndpointResponse>;
1949
+ getWebhookEndpoint(endpointId: string, options?: Omit<GetWebhookEndpointOptions, 'params'>): Promise<GetWebhookEndpointResponse>;
1608
1950
  /** Get one workspace by exact workspace slug. */
1609
1951
  getWorkspace(options?: GetWorkspaceOptions): Promise<GetWorkspaceResponse>;
1610
1952
  getWorkspace(workspaceSlug: string, options?: Omit<GetWorkspaceOptions, 'params'>): Promise<GetWorkspaceResponse>;
@@ -1628,6 +1970,7 @@ export declare class RealtimeXClient {
1628
1970
  listLlmModels(provider: string, options?: Omit<ListLlmModelsOptions, 'params'>): Promise<ListLlmModelsResponse>;
1629
1971
  /** List supported LLM providers. Use provider ids from this response when configuring workspace or thread LLM settings. */
1630
1972
  listLlmProviders(options?: ListLlmProvidersOptions): Promise<ListLlmProvidersResponse>;
1973
+ listLocalApps(options?: ListLocalAppsOptions): Promise<ListLocalAppsResponse>;
1631
1974
  /** List installed plugins with enabled state and runtime load status. Use returned ids with enable-plugin, disable-plugin, and reload-plugin. */
1632
1975
  listPlugins(options?: ListPluginsOptions): Promise<ListPluginsResponse>;
1633
1976
  /** List terminal CLI agents that can be used with open-terminal-session. This is the same compact agent catalog returned by prepare.agents. */
@@ -1638,6 +1981,11 @@ export declare class RealtimeXClient {
1638
1981
  /** List threads for one exact workspace slug. */
1639
1982
  listThreads(options?: ListThreadsOptions): Promise<ListThreadsResponse>;
1640
1983
  listThreads(workspaceSlug: string, options?: Omit<ListThreadsOptions, 'params'>): Promise<ListThreadsResponse>;
1984
+ /** List bounded delivery metadata for visible webhook endpoints. Raw headers, bodies, signatures, and payload fields are omitted. */
1985
+ listWebhookDeliveries(options?: ListWebhookDeliveriesOptions): Promise<ListWebhookDeliveriesResponse>;
1986
+ listWebhookDeliveries(query?: ListWebhookDeliveriesQuery, options?: Omit<ListWebhookDeliveriesOptions, 'query'>): Promise<ListWebhookDeliveriesResponse>;
1987
+ /** List webhook endpoints visible to the authenticated user. Secrets are never returned. */
1988
+ listWebhookEndpoints(options?: ListWebhookEndpointsOptions): Promise<ListWebhookEndpointsResponse>;
1641
1989
  /** List published agent skills with enabled/disabled state for one exact workspace slug. */
1642
1990
  listWorkspaceAgentSkills(options?: ListWorkspaceAgentSkillsOptions): Promise<ListWorkspaceAgentSkillsResponse>;
1643
1991
  listWorkspaceAgentSkills(workspaceSlug: string, options?: Omit<ListWorkspaceAgentSkillsOptions, 'params'>): Promise<ListWorkspaceAgentSkillsResponse>;
@@ -1673,6 +2021,8 @@ export declare class RealtimeXClient {
1673
2021
  /** Send one constrained response action to an exact idle terminal session only when its PTY event sequence is unchanged. */
1674
2022
  respondTerminalIdlePrompt(options?: RespondTerminalIdlePromptOptions): Promise<RespondTerminalIdlePromptResponse>;
1675
2023
  respondTerminalIdlePrompt(sessionId: string, body: RespondTerminalIdlePromptBody, options?: Omit<RespondTerminalIdlePromptOptions, 'params' | 'body'>): Promise<RespondTerminalIdlePromptResponse>;
2024
+ restartLocalApp(options?: RestartLocalAppOptions): Promise<RestartLocalAppResponse>;
2025
+ restartLocalApp(appId: string, body: RestartLocalAppBody, options?: Omit<RestartLocalAppOptions, 'params' | 'body'>): Promise<RestartLocalAppResponse>;
1676
2026
  /** Resume one paused artifact by artifact id. */
1677
2027
  resumeArtifact(options?: ResumeArtifactOptions): Promise<ResumeArtifactResponse>;
1678
2028
  resumeArtifact(artifactId: string, options?: Omit<ResumeArtifactOptions, 'params'>): Promise<ResumeArtifactResponse>;
@@ -1721,6 +2071,8 @@ export declare class RealtimeXClient {
1721
2071
  /** Set workspace or global ambient-agent heartbeat timezone, for example Asia/Saigon or UTC. */
1722
2072
  setHeartbeatTimezone(options?: SetHeartbeatTimezoneOptions): Promise<SetHeartbeatTimezoneResponse>;
1723
2073
  setHeartbeatTimezone(body: SetHeartbeatTimezoneBody, options?: Omit<SetHeartbeatTimezoneOptions, 'body'>): Promise<SetHeartbeatTimezoneResponse>;
2074
+ setLocalAppEnabled(options?: SetLocalAppEnabledOptions): Promise<SetLocalAppEnabledResponse>;
2075
+ setLocalAppEnabled(appId: string, body: SetLocalAppEnabledBody, options?: Omit<SetLocalAppEnabledOptions, 'params' | 'body'>): Promise<SetLocalAppEnabledResponse>;
1724
2076
  /** Set up HEARTBEAT.md task instructions for a workspace or global ambient agent. Returns the target path, template, file path, and concise editing instructions. */
1725
2077
  setupHeartbeatTasks(options?: SetupHeartbeatTasksOptions): Promise<SetupHeartbeatTasksResponse>;
1726
2078
  setupHeartbeatTasks(query?: SetupHeartbeatTasksQuery, options?: Omit<SetupHeartbeatTasksOptions, 'query'>): Promise<SetupHeartbeatTasksResponse>;
@@ -1739,17 +2091,24 @@ export declare class RealtimeXClient {
1739
2091
  /** Start one chat channel by exact channel id. */
1740
2092
  startChannel(options?: StartChannelOptions): Promise<StartChannelResponse>;
1741
2093
  startChannel(channelId: string, options?: Omit<StartChannelOptions, 'params'>): Promise<StartChannelResponse>;
2094
+ startLocalApp(options?: StartLocalAppOptions): Promise<StartLocalAppResponse>;
2095
+ startLocalApp(appId: string, body: StartLocalAppBody, options?: Omit<StartLocalAppOptions, 'params' | 'body'>): Promise<StartLocalAppResponse>;
1742
2096
  /** Gracefully stop an existing named RealTimeX Browser session. */
1743
2097
  stopBrowserSession(options?: StopBrowserSessionOptions): Promise<StopBrowserSessionResponse>;
1744
2098
  stopBrowserSession(sessionName: string, body: StopBrowserSessionBody, options?: Omit<StopBrowserSessionOptions, 'params' | 'body'>): Promise<StopBrowserSessionResponse>;
1745
2099
  /** Stop one chat channel by exact channel id. */
1746
2100
  stopChannel(options?: StopChannelOptions): Promise<StopChannelResponse>;
1747
2101
  stopChannel(channelId: string, options?: Omit<StopChannelOptions, 'params'>): Promise<StopChannelResponse>;
2102
+ stopLocalApp(options?: StopLocalAppOptions): Promise<StopLocalAppResponse>;
2103
+ stopLocalApp(appId: string, body: StopLocalAppBody, options?: Omit<StopLocalAppOptions, 'params' | 'body'>): Promise<StopLocalAppResponse>;
1748
2104
  /** Interrupt the selected or current chat-linked terminal session for one exact thread without closing the underlying terminal session. This uses the same stop dispatcher as channel /stop commands. */
1749
2105
  stopThreadTerminalSession(options?: StopThreadTerminalSessionOptions): Promise<StopThreadTerminalSessionResponse>;
1750
2106
  /** Terminate a terminal runtime session by detaching any controller and closing the underlying PTY session. */
1751
2107
  terminateTerminalSession(options?: TerminateTerminalSessionOptions): Promise<TerminateTerminalSessionResponse>;
1752
2108
  terminateTerminalSession(sessionId: string, options?: Omit<TerminateTerminalSessionOptions, 'params'>): Promise<TerminateTerminalSessionResponse>;
2109
+ /** Submit an optional JSON payload as a signed test delivery through a visible webhook endpoint. */
2110
+ testWebhookEndpoint(options?: TestWebhookEndpointOptions): Promise<TestWebhookEndpointResponse>;
2111
+ testWebhookEndpoint(endpointId: string, body: TestWebhookEndpointBody, options?: Omit<TestWebhookEndpointOptions, 'params' | 'body'>): Promise<TestWebhookEndpointResponse>;
1753
2112
  /** Trigger the default HEARTBEAT.md task for a workspace immediately. Falls back to the legacy heartbeat executor when no tasks are defined. */
1754
2113
  triggerWorkspaceHeartbeat(options?: TriggerWorkspaceHeartbeatOptions): Promise<TriggerWorkspaceHeartbeatResponse>;
1755
2114
  triggerWorkspaceHeartbeat(workspaceSlug: string, body: TriggerWorkspaceHeartbeatBody, options?: Omit<TriggerWorkspaceHeartbeatOptions, 'params' | 'body'>): Promise<TriggerWorkspaceHeartbeatResponse>;
@@ -1759,6 +2118,11 @@ export declare class RealtimeXClient {
1759
2118
  /** Update one chat channel by exact channel id. Only channel writable fields are changed. */
1760
2119
  updateChannel(options?: UpdateChannelOptions): Promise<UpdateChannelResponse>;
1761
2120
  updateChannel(channelId: string, body: UpdateChannelBody, options?: Omit<UpdateChannelOptions, 'params' | 'body'>): Promise<UpdateChannelResponse>;
2121
+ updateLocalApp(options?: UpdateLocalAppOptions): Promise<UpdateLocalAppResponse>;
2122
+ updateLocalApp(appId: string, body: UpdateLocalAppBody, options?: Omit<UpdateLocalAppOptions, 'params' | 'body'>): Promise<UpdateLocalAppResponse>;
2123
+ /** Update a visible webhook endpoint. Passing secret rotates it; the value is never returned. */
2124
+ updateWebhookEndpoint(options?: UpdateWebhookEndpointOptions): Promise<UpdateWebhookEndpointResponse>;
2125
+ updateWebhookEndpoint(endpointId: string, body: UpdateWebhookEndpointBody, options?: Omit<UpdateWebhookEndpointOptions, 'params' | 'body'>): Promise<UpdateWebhookEndpointResponse>;
1762
2126
  /** Verify workspace navigation, title-bar containment, Files dock behavior, and action contrast at desktop and compact viewports. */
1763
2127
  workspaceShellLayout(options?: WorkspaceShellLayoutOptions): Promise<WorkspaceShellLayoutResponse>;
1764
2128
  workspaceShellLayout(body: WorkspaceShellLayoutBody, options?: Omit<WorkspaceShellLayoutOptions, 'body'>): Promise<WorkspaceShellLayoutResponse>;
package/index.js CHANGED
@@ -70,6 +70,14 @@ const operations = {
70
70
  ],
71
71
  "hasBody": true
72
72
  },
73
+ "createLocalApp": {
74
+ "method": "POST",
75
+ "path": "/create-local-app",
76
+ "pathParams": [],
77
+ "queryParams": [],
78
+ "headerParams": [],
79
+ "hasBody": true
80
+ },
73
81
  "createThread": {
74
82
  "method": "POST",
75
83
  "path": "/create-thread/{workspaceSlug}",
@@ -82,6 +90,14 @@ const operations = {
82
90
  ],
83
91
  "hasBody": true
84
92
  },
93
+ "createWebhookEndpoint": {
94
+ "method": "POST",
95
+ "path": "/create-webhook-endpoint",
96
+ "pathParams": [],
97
+ "queryParams": [],
98
+ "headerParams": [],
99
+ "hasBody": true
100
+ },
85
101
  "createWorkspace": {
86
102
  "method": "POST",
87
103
  "path": "/create-workspace",
@@ -129,6 +145,16 @@ const operations = {
129
145
  ],
130
146
  "hasBody": false
131
147
  },
148
+ "deleteLocalApp": {
149
+ "method": "DELETE",
150
+ "path": "/delete-local-app/{appId}",
151
+ "pathParams": [
152
+ "appId"
153
+ ],
154
+ "queryParams": [],
155
+ "headerParams": [],
156
+ "hasBody": true
157
+ },
132
158
  "deleteThread": {
133
159
  "method": "DELETE",
134
160
  "path": "/delete-thread/{workspaceSlug}/{threadSlug}",
@@ -142,6 +168,16 @@ const operations = {
142
168
  ],
143
169
  "hasBody": false
144
170
  },
171
+ "deleteWebhookEndpoint": {
172
+ "method": "DELETE",
173
+ "path": "/delete-webhook-endpoint/{endpointId}",
174
+ "pathParams": [
175
+ "endpointId"
176
+ ],
177
+ "queryParams": [],
178
+ "headerParams": [],
179
+ "hasBody": true
180
+ },
145
181
  "deleteWorkspace": {
146
182
  "method": "DELETE",
147
183
  "path": "/delete-workspace/{workspaceSlug}",
@@ -218,6 +254,38 @@ const operations = {
218
254
  ],
219
255
  "hasBody": false
220
256
  },
257
+ "getLocalApp": {
258
+ "method": "GET",
259
+ "path": "/get-local-app/{appId}",
260
+ "pathParams": [
261
+ "appId"
262
+ ],
263
+ "queryParams": [],
264
+ "headerParams": [],
265
+ "hasBody": false
266
+ },
267
+ "getLocalAppLogs": {
268
+ "method": "GET",
269
+ "path": "/get-local-app-logs/{appId}",
270
+ "pathParams": [
271
+ "appId"
272
+ ],
273
+ "queryParams": [
274
+ "limit"
275
+ ],
276
+ "headerParams": [],
277
+ "hasBody": false
278
+ },
279
+ "getLocalAppStatus": {
280
+ "method": "GET",
281
+ "path": "/get-local-app-status/{appId}",
282
+ "pathParams": [
283
+ "appId"
284
+ ],
285
+ "queryParams": [],
286
+ "headerParams": [],
287
+ "hasBody": false
288
+ },
221
289
  "getPlugin": {
222
290
  "method": "GET",
223
291
  "path": "/get-plugin/{pluginId}",
@@ -258,6 +326,16 @@ const operations = {
258
326
  ],
259
327
  "hasBody": false
260
328
  },
329
+ "getWebhookEndpoint": {
330
+ "method": "GET",
331
+ "path": "/get-webhook-endpoint/{endpointId}",
332
+ "pathParams": [
333
+ "endpointId"
334
+ ],
335
+ "queryParams": [],
336
+ "headerParams": [],
337
+ "hasBody": false
338
+ },
261
339
  "getWorkspace": {
262
340
  "method": "GET",
263
341
  "path": "/get-workspace/{workspaceSlug}",
@@ -352,6 +430,14 @@ const operations = {
352
430
  ],
353
431
  "hasBody": false
354
432
  },
433
+ "listLocalApps": {
434
+ "method": "GET",
435
+ "path": "/list-local-apps",
436
+ "pathParams": [],
437
+ "queryParams": [],
438
+ "headerParams": [],
439
+ "hasBody": false
440
+ },
355
441
  "listPlugins": {
356
442
  "method": "GET",
357
443
  "path": "/list-plugins",
@@ -399,6 +485,26 @@ const operations = {
399
485
  ],
400
486
  "hasBody": false
401
487
  },
488
+ "listWebhookDeliveries": {
489
+ "method": "GET",
490
+ "path": "/list-webhook-deliveries",
491
+ "pathParams": [],
492
+ "queryParams": [
493
+ "endpointId",
494
+ "limit",
495
+ "offset"
496
+ ],
497
+ "headerParams": [],
498
+ "hasBody": false
499
+ },
500
+ "listWebhookEndpoints": {
501
+ "method": "GET",
502
+ "path": "/list-webhook-endpoints",
503
+ "pathParams": [],
504
+ "queryParams": [],
505
+ "headerParams": [],
506
+ "hasBody": false
507
+ },
402
508
  "listWorkspaceAgentSkills": {
403
509
  "method": "GET",
404
510
  "path": "/list-workspace-agent-skills/{workspaceSlug}",
@@ -541,6 +647,16 @@ const operations = {
541
647
  ],
542
648
  "hasBody": true
543
649
  },
650
+ "restartLocalApp": {
651
+ "method": "POST",
652
+ "path": "/restart-local-app/{appId}",
653
+ "pathParams": [
654
+ "appId"
655
+ ],
656
+ "queryParams": [],
657
+ "headerParams": [],
658
+ "hasBody": true
659
+ },
544
660
  "resumeArtifact": {
545
661
  "method": "POST",
546
662
  "path": "/resume-artifact/{artifactId}",
@@ -712,6 +828,16 @@ const operations = {
712
828
  ],
713
829
  "hasBody": true
714
830
  },
831
+ "setLocalAppEnabled": {
832
+ "method": "POST",
833
+ "path": "/set-local-app-enabled/{appId}",
834
+ "pathParams": [
835
+ "appId"
836
+ ],
837
+ "queryParams": [],
838
+ "headerParams": [],
839
+ "hasBody": true
840
+ },
715
841
  "setupHeartbeatTasks": {
716
842
  "method": "GET",
717
843
  "path": "/setup-heartbeat-tasks",
@@ -783,6 +909,16 @@ const operations = {
783
909
  ],
784
910
  "hasBody": false
785
911
  },
912
+ "startLocalApp": {
913
+ "method": "POST",
914
+ "path": "/start-local-app/{appId}",
915
+ "pathParams": [
916
+ "appId"
917
+ ],
918
+ "queryParams": [],
919
+ "headerParams": [],
920
+ "hasBody": true
921
+ },
786
922
  "stopBrowserSession": {
787
923
  "method": "POST",
788
924
  "path": "/stop-browser-session/{sessionName}",
@@ -807,6 +943,16 @@ const operations = {
807
943
  ],
808
944
  "hasBody": false
809
945
  },
946
+ "stopLocalApp": {
947
+ "method": "POST",
948
+ "path": "/stop-local-app/{appId}",
949
+ "pathParams": [
950
+ "appId"
951
+ ],
952
+ "queryParams": [],
953
+ "headerParams": [],
954
+ "hasBody": true
955
+ },
810
956
  "stopThreadTerminalSession": {
811
957
  "method": "POST",
812
958
  "path": "/stop-thread-terminal-session",
@@ -829,6 +975,16 @@ const operations = {
829
975
  ],
830
976
  "hasBody": false
831
977
  },
978
+ "testWebhookEndpoint": {
979
+ "method": "POST",
980
+ "path": "/test-webhook-endpoint/{endpointId}",
981
+ "pathParams": [
982
+ "endpointId"
983
+ ],
984
+ "queryParams": [],
985
+ "headerParams": [],
986
+ "hasBody": true
987
+ },
832
988
  "triggerWorkspaceHeartbeat": {
833
989
  "method": "POST",
834
990
  "path": "/trigger-workspace-heartbeat/{workspaceSlug}",
@@ -865,6 +1021,26 @@ const operations = {
865
1021
  ],
866
1022
  "hasBody": true
867
1023
  },
1024
+ "updateLocalApp": {
1025
+ "method": "POST",
1026
+ "path": "/update-local-app/{appId}",
1027
+ "pathParams": [
1028
+ "appId"
1029
+ ],
1030
+ "queryParams": [],
1031
+ "headerParams": [],
1032
+ "hasBody": true
1033
+ },
1034
+ "updateWebhookEndpoint": {
1035
+ "method": "POST",
1036
+ "path": "/update-webhook-endpoint/{endpointId}",
1037
+ "pathParams": [
1038
+ "endpointId"
1039
+ ],
1040
+ "queryParams": [],
1041
+ "headerParams": [],
1042
+ "hasBody": true
1043
+ },
868
1044
  "workspaceShellLayout": {
869
1045
  "method": "POST",
870
1046
  "path": "/workspace-shell-layout",
@@ -1340,6 +1516,13 @@ class RealtimeXClient {
1340
1516
  );
1341
1517
  }
1342
1518
 
1519
+ createLocalApp(...args) {
1520
+ return this.request(
1521
+ "createLocalApp",
1522
+ normalizeOperationOptions(operations["createLocalApp"], args)
1523
+ );
1524
+ }
1525
+
1343
1526
  createThread(...args) {
1344
1527
  return this.request(
1345
1528
  "createThread",
@@ -1347,6 +1530,13 @@ class RealtimeXClient {
1347
1530
  );
1348
1531
  }
1349
1532
 
1533
+ createWebhookEndpoint(...args) {
1534
+ return this.request(
1535
+ "createWebhookEndpoint",
1536
+ normalizeOperationOptions(operations["createWebhookEndpoint"], args)
1537
+ );
1538
+ }
1539
+
1350
1540
  createWorkspace(...args) {
1351
1541
  return this.request(
1352
1542
  "createWorkspace",
@@ -1375,6 +1565,13 @@ class RealtimeXClient {
1375
1565
  );
1376
1566
  }
1377
1567
 
1568
+ deleteLocalApp(...args) {
1569
+ return this.request(
1570
+ "deleteLocalApp",
1571
+ normalizeOperationOptions(operations["deleteLocalApp"], args)
1572
+ );
1573
+ }
1574
+
1378
1575
  deleteThread(...args) {
1379
1576
  return this.request(
1380
1577
  "deleteThread",
@@ -1382,6 +1579,13 @@ class RealtimeXClient {
1382
1579
  );
1383
1580
  }
1384
1581
 
1582
+ deleteWebhookEndpoint(...args) {
1583
+ return this.request(
1584
+ "deleteWebhookEndpoint",
1585
+ normalizeOperationOptions(operations["deleteWebhookEndpoint"], args)
1586
+ );
1587
+ }
1588
+
1385
1589
  deleteWorkspace(...args) {
1386
1590
  return this.request(
1387
1591
  "deleteWorkspace",
@@ -1424,6 +1628,27 @@ class RealtimeXClient {
1424
1628
  );
1425
1629
  }
1426
1630
 
1631
+ getLocalApp(...args) {
1632
+ return this.request(
1633
+ "getLocalApp",
1634
+ normalizeOperationOptions(operations["getLocalApp"], args)
1635
+ );
1636
+ }
1637
+
1638
+ getLocalAppLogs(...args) {
1639
+ return this.request(
1640
+ "getLocalAppLogs",
1641
+ normalizeOperationOptions(operations["getLocalAppLogs"], args)
1642
+ );
1643
+ }
1644
+
1645
+ getLocalAppStatus(...args) {
1646
+ return this.request(
1647
+ "getLocalAppStatus",
1648
+ normalizeOperationOptions(operations["getLocalAppStatus"], args)
1649
+ );
1650
+ }
1651
+
1427
1652
  getPlugin(...args) {
1428
1653
  return this.request(
1429
1654
  "getPlugin",
@@ -1445,6 +1670,13 @@ class RealtimeXClient {
1445
1670
  );
1446
1671
  }
1447
1672
 
1673
+ getWebhookEndpoint(...args) {
1674
+ return this.request(
1675
+ "getWebhookEndpoint",
1676
+ normalizeOperationOptions(operations["getWebhookEndpoint"], args)
1677
+ );
1678
+ }
1679
+
1448
1680
  getWorkspace(...args) {
1449
1681
  return this.request(
1450
1682
  "getWorkspace",
@@ -1508,6 +1740,13 @@ class RealtimeXClient {
1508
1740
  );
1509
1741
  }
1510
1742
 
1743
+ listLocalApps(...args) {
1744
+ return this.request(
1745
+ "listLocalApps",
1746
+ normalizeOperationOptions(operations["listLocalApps"], args)
1747
+ );
1748
+ }
1749
+
1511
1750
  listPlugins(...args) {
1512
1751
  return this.request(
1513
1752
  "listPlugins",
@@ -1536,6 +1775,20 @@ class RealtimeXClient {
1536
1775
  );
1537
1776
  }
1538
1777
 
1778
+ listWebhookDeliveries(...args) {
1779
+ return this.request(
1780
+ "listWebhookDeliveries",
1781
+ normalizeOperationOptions(operations["listWebhookDeliveries"], args)
1782
+ );
1783
+ }
1784
+
1785
+ listWebhookEndpoints(...args) {
1786
+ return this.request(
1787
+ "listWebhookEndpoints",
1788
+ normalizeOperationOptions(operations["listWebhookEndpoints"], args)
1789
+ );
1790
+ }
1791
+
1539
1792
  listWorkspaceAgentSkills(...args) {
1540
1793
  return this.request(
1541
1794
  "listWorkspaceAgentSkills",
@@ -1620,6 +1873,13 @@ class RealtimeXClient {
1620
1873
  );
1621
1874
  }
1622
1875
 
1876
+ restartLocalApp(...args) {
1877
+ return this.request(
1878
+ "restartLocalApp",
1879
+ normalizeOperationOptions(operations["restartLocalApp"], args)
1880
+ );
1881
+ }
1882
+
1623
1883
  resumeArtifact(...args) {
1624
1884
  return this.request(
1625
1885
  "resumeArtifact",
@@ -1732,6 +1992,13 @@ class RealtimeXClient {
1732
1992
  );
1733
1993
  }
1734
1994
 
1995
+ setLocalAppEnabled(...args) {
1996
+ return this.request(
1997
+ "setLocalAppEnabled",
1998
+ normalizeOperationOptions(operations["setLocalAppEnabled"], args)
1999
+ );
2000
+ }
2001
+
1735
2002
  setupHeartbeatTasks(...args) {
1736
2003
  return this.request(
1737
2004
  "setupHeartbeatTasks",
@@ -1774,6 +2041,13 @@ class RealtimeXClient {
1774
2041
  );
1775
2042
  }
1776
2043
 
2044
+ startLocalApp(...args) {
2045
+ return this.request(
2046
+ "startLocalApp",
2047
+ normalizeOperationOptions(operations["startLocalApp"], args)
2048
+ );
2049
+ }
2050
+
1777
2051
  stopBrowserSession(...args) {
1778
2052
  return this.request(
1779
2053
  "stopBrowserSession",
@@ -1788,6 +2062,13 @@ class RealtimeXClient {
1788
2062
  );
1789
2063
  }
1790
2064
 
2065
+ stopLocalApp(...args) {
2066
+ return this.request(
2067
+ "stopLocalApp",
2068
+ normalizeOperationOptions(operations["stopLocalApp"], args)
2069
+ );
2070
+ }
2071
+
1791
2072
  stopThreadTerminalSession(...args) {
1792
2073
  return this.request(
1793
2074
  "stopThreadTerminalSession",
@@ -1802,6 +2083,13 @@ class RealtimeXClient {
1802
2083
  );
1803
2084
  }
1804
2085
 
2086
+ testWebhookEndpoint(...args) {
2087
+ return this.request(
2088
+ "testWebhookEndpoint",
2089
+ normalizeOperationOptions(operations["testWebhookEndpoint"], args)
2090
+ );
2091
+ }
2092
+
1805
2093
  triggerWorkspaceHeartbeat(...args) {
1806
2094
  return this.request(
1807
2095
  "triggerWorkspaceHeartbeat",
@@ -1823,6 +2111,20 @@ class RealtimeXClient {
1823
2111
  );
1824
2112
  }
1825
2113
 
2114
+ updateLocalApp(...args) {
2115
+ return this.request(
2116
+ "updateLocalApp",
2117
+ normalizeOperationOptions(operations["updateLocalApp"], args)
2118
+ );
2119
+ }
2120
+
2121
+ updateWebhookEndpoint(...args) {
2122
+ return this.request(
2123
+ "updateWebhookEndpoint",
2124
+ normalizeOperationOptions(operations["updateWebhookEndpoint"], args)
2125
+ );
2126
+ }
2127
+
1826
2128
  workspaceShellLayout(...args) {
1827
2129
  return this.request(
1828
2130
  "workspaceShellLayout",
@@ -1848,5 +2150,5 @@ module.exports = {
1848
2150
  createRealtimeXClient,
1849
2151
  createRealtimeXWebhookClient,
1850
2152
  operations,
1851
- version: "2.0.31",
2153
+ version: "2.0.33",
1852
2154
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realtimex/sdk",
3
- "version": "2.0.31",
3
+ "version": "2.0.33",
4
4
  "description": "RealtimeX runtime SDK package and moderator agent skill assets.",
5
5
  "private": false,
6
6
  "main": "./index.js",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: realtimex-moderator-sdk
3
- description: "Use the RealTimeX API through the generated CLI for workspace, thread, terminal-agent sessions, channel (Telegram, Zalo, Discord), skills, plugins and send messages, setup personality, heartbeat tasks operations, publish and manage artifacts, run tour guide to setup working dir."
3
+ description: "Use the RealTimeX API through the generated CLI for workspace, thread, terminal-agent sessions, channel (Telegram, Zalo, Discord), skills, plugins, webhook endpoint management and delivery inspection, send messages, setup personality, heartbeat tasks operations, publish and manage artifacts, run tour guide to setup working dir."
4
4
  author: ""
5
5
  license: "Apache-2.0"
6
6
  argument-hint: "<command> [args] | install cli"
@@ -20,15 +20,15 @@ This skill drives the `realtimex-pp-cli` binary. Verify the CLI is installed and
20
20
 
21
21
  1. Install or reinstall the pinned version via npm:
22
22
  ```bash
23
- npm install -g @realtimex/pp-cli@2.0.31
23
+ npm install -g @realtimex/pp-cli@2.0.33
24
24
  ```
25
25
  2. Verify the exact version:
26
26
  ```bash
27
27
  realtimex-pp-cli --version
28
28
  ```
29
- The output must be `realtimex-pp-cli 2.0.31`.
29
+ The output must be `realtimex-pp-cli 2.0.33`.
30
30
 
31
- If `--version` reports "command not found" after install, the npm global bin directory is not on `$PATH`. If it reports any version other than `2.0.31`, reinstall with the pinned npm command above. Do not proceed with skill commands until exact-version verification succeeds.
31
+ If `--version` reports "command not found" after install, the npm global bin directory is not on `$PATH`. If it reports any version other than `2.0.33`, reinstall with the pinned npm command above. Do not proceed with skill commands until exact-version verification succeeds.
32
32
 
33
33
  * Always run first:
34
34
 
@@ -62,10 +62,18 @@ If `--version` reports "command not found" after install, the npm global bin dir
62
62
 
63
63
  - `realtimex-pp-cli create-channel <workspaceSlug>` — Create a chat channel in one exact workspace. Defaults to Telegram when plugin_type, channelType, and type are omitted.
64
64
 
65
+ **create-local-app** — Manage create local app
66
+
67
+ - `realtimex-pp-cli create-local-app` — Create local app
68
+
65
69
  **create-thread** — Manage create thread
66
70
 
67
71
  - `realtimex-pp-cli create-thread <workspaceSlug>` — Create a thread in one workspace. The name is optional but recommended.
68
72
 
73
+ **create-webhook-endpoint** — Manage create webhook endpoint
74
+
75
+ - `realtimex-pp-cli create-webhook-endpoint` — Create a webhook endpoint in an accessible workspace. secret is a write-only input.
76
+
69
77
  **create-workspace** — Manage create workspace
70
78
 
71
79
  - `realtimex-pp-cli create-workspace` — Create a workspace. Requires a human-readable workspace name.
@@ -82,10 +90,18 @@ If `--version` reports "command not found" after install, the npm global bin dir
82
90
 
83
91
  - `realtimex-pp-cli delete-channel <channelId>` — Delete one chat channel by exact channel id.
84
92
 
93
+ **delete-local-app** — Manage delete local app
94
+
95
+ - `realtimex-pp-cli delete-local-app <appId>` — Delete local app
96
+
85
97
  **delete-thread** — Manage delete thread
86
98
 
87
99
  - `realtimex-pp-cli delete-thread <workspaceSlug> <threadSlug>` — Delete one thread by exact workspace slug and exact thread slug.
88
100
 
101
+ **delete-webhook-endpoint** — Manage delete webhook endpoint
102
+
103
+ - `realtimex-pp-cli delete-webhook-endpoint <endpointId>` — Permanently delete a visible webhook endpoint. confirmDestructive must be true.
104
+
89
105
  **delete-workspace** — Manage delete workspace
90
106
 
91
107
  - `realtimex-pp-cli delete-workspace <workspaceSlug>` — Delete one workspace by exact workspace slug.
@@ -110,6 +126,18 @@ If `--version` reports "command not found" after install, the npm global bin dir
110
126
 
111
127
  - `realtimex-pp-cli get-artifact <artifactId>` — Get one public artifact by artifact id.
112
128
 
129
+ **get-local-app** — Manage get local app
130
+
131
+ - `realtimex-pp-cli get-local-app <appId>` — Get local app
132
+
133
+ **get-local-app-logs** — Manage get local app logs
134
+
135
+ - `realtimex-pp-cli get-local-app-logs <appId>` — Read bounded recent desktop logs. Each entry is capped at 4 KiB and secret-bearing configuration is omitted.
136
+
137
+ **get-local-app-status** — Manage get local app status
138
+
139
+ - `realtimex-pp-cli get-local-app-status <appId>` — Get local app status
140
+
113
141
  **get-plugin** — Manage get plugin
114
142
 
115
143
  - `realtimex-pp-cli get-plugin <pluginId>` — Get one installed plugin with its config schema (keys, labels, types, defaults)
@@ -122,6 +150,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
122
150
 
123
151
  - `realtimex-pp-cli get-thread <workspaceSlug> <threadSlug>` — Get one thread by exact workspace slug and exact thread slug.
124
152
 
153
+ **get-webhook-endpoint** — Manage get webhook endpoint
154
+
155
+ - `realtimex-pp-cli get-webhook-endpoint <endpointId>` — Get one visible webhook endpoint by endpoint id. The response reports secretConfigured but never returns the secret.
156
+
125
157
  **get-workspace** — Manage get workspace
126
158
 
127
159
  - `realtimex-pp-cli get-workspace <workspaceSlug>` — Get one workspace by exact workspace slug.
@@ -158,6 +190,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
158
190
 
159
191
  - `realtimex-pp-cli list-llm-providers` — List supported LLM providers. Use provider ids from this response when configuring workspace or thread LLM settings.
160
192
 
193
+ **list-local-apps** — Manage list local apps
194
+
195
+ - `realtimex-pp-cli list-local-apps` — List local apps
196
+
161
197
  **list-plugins** — Manage list plugins
162
198
 
163
199
  - `realtimex-pp-cli list-plugins` — List installed plugins with enabled state and runtime load status.
@@ -174,6 +210,14 @@ If `--version` reports "command not found" after install, the npm global bin dir
174
210
 
175
211
  - `realtimex-pp-cli list-threads <workspaceSlug>` — List threads for one exact workspace slug.
176
212
 
213
+ **list-webhook-deliveries** — Manage list webhook deliveries
214
+
215
+ - `realtimex-pp-cli list-webhook-deliveries` — List bounded delivery metadata for visible webhook endpoints.
216
+
217
+ **list-webhook-endpoints** — Manage list webhook endpoints
218
+
219
+ - `realtimex-pp-cli list-webhook-endpoints` — List webhook endpoints visible to the authenticated user. Secrets are never returned.
220
+
177
221
  **list-workspace-agent-skills** — Manage list workspace agent skills
178
222
 
179
223
  - `realtimex-pp-cli list-workspace-agent-skills <workspaceSlug>` — List published agent skills with enabled/disabled state for one exact workspace slug.
@@ -222,6 +266,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
222
266
 
223
267
  - `realtimex-pp-cli respond-terminal-idle-prompt <sessionId>` — Send one constrained response action to an exact idle terminal session only when its PTY event sequence is unchanged.
224
268
 
269
+ **restart-local-app** — Manage restart local app
270
+
271
+ - `realtimex-pp-cli restart-local-app <appId>` — Restart local app
272
+
225
273
  **resume-artifact** — Manage resume artifact
226
274
 
227
275
  - `realtimex-pp-cli resume-artifact <artifactId>` — Resume one paused artifact by artifact id.
@@ -282,6 +330,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
282
330
 
283
331
  - `realtimex-pp-cli set-heartbeat-timezone` — Set workspace or global ambient-agent heartbeat timezone, for example Asia/Saigon or UTC.
284
332
 
333
+ **set-local-app-enabled** — Manage set local app enabled
334
+
335
+ - `realtimex-pp-cli set-local-app-enabled <appId>` — Set local app enabled
336
+
285
337
  **set-workspace-default-agent** — Manage set workspace default agent
286
338
 
287
339
  - `realtimex-pp-cli set-workspace-default-agent <workspaceSlug>` — Set the default CLI agent for a workspace.
@@ -306,6 +358,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
306
358
 
307
359
  - `realtimex-pp-cli start-channel <channelId>` — Start one chat channel by exact channel id.
308
360
 
361
+ **start-local-app** — Manage start local app
362
+
363
+ - `realtimex-pp-cli start-local-app <appId>` — Start local app
364
+
309
365
  **stop-browser-session** — Manage stop browser session
310
366
 
311
367
  - `realtimex-pp-cli stop-browser-session <sessionName>` — Gracefully stop an existing named RealTimeX Browser session.
@@ -314,6 +370,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
314
370
 
315
371
  - `realtimex-pp-cli stop-channel <channelId>` — Stop one chat channel by exact channel id.
316
372
 
373
+ **stop-local-app** — Manage stop local app
374
+
375
+ - `realtimex-pp-cli stop-local-app <appId>` — Stop local app
376
+
317
377
  **stop-thread-terminal-session** — Manage stop thread terminal session
318
378
 
319
379
  - `realtimex-pp-cli stop-thread-terminal-session` — Interrupt the selected or current chat-linked terminal session for one exact thread without closing the underlying
@@ -322,6 +382,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
322
382
 
323
383
  - `realtimex-pp-cli terminate-terminal-session <sessionId>` — Terminate a terminal runtime session by detaching any controller and closing the underlying PTY session.
324
384
 
385
+ **test-webhook-endpoint** — Manage test webhook endpoint
386
+
387
+ - `realtimex-pp-cli test-webhook-endpoint <endpointId>` — Submit an optional JSON payload as a signed test delivery through a visible webhook endpoint.
388
+
325
389
  **trigger-workspace-heartbeat** — Manage trigger workspace heartbeat
326
390
 
327
391
  - `realtimex-pp-cli trigger-workspace-heartbeat <workspaceSlug>` — Trigger the default HEARTBEAT.md task for a workspace immediately.
@@ -334,6 +398,14 @@ If `--version` reports "command not found" after install, the npm global bin dir
334
398
 
335
399
  - `realtimex-pp-cli update-channel <channelId>` — Update one chat channel by exact channel id. Only channel writable fields are changed.
336
400
 
401
+ **update-local-app** — Manage update local app
402
+
403
+ - `realtimex-pp-cli update-local-app <appId>` — Update local app
404
+
405
+ **update-webhook-endpoint** — Manage update webhook endpoint
406
+
407
+ - `realtimex-pp-cli update-webhook-endpoint <endpointId>` — Update a visible webhook endpoint. Passing secret rotates it; the value is never returned.
408
+
337
409
  **workspace-shell-layout** — Manage workspace shell layout
338
410
 
339
411
  - `realtimex-pp-cli workspace-shell-layout` — Verify workspace navigation, title-bar containment, Files dock behavior
@@ -464,9 +536,9 @@ Verify: `claude mcp list`
464
536
  ```bash
465
537
  realtimex-pp-cli --version
466
538
  ```
467
- If the command is missing or the output is not exactly `realtimex-pp-cli 2.0.31`, reinstall the pinned version:
539
+ If the command is missing or the output is not exactly `realtimex-pp-cli 2.0.33`, reinstall the pinned version:
468
540
  ```bash
469
- npm install -g @realtimex/pp-cli@2.0.31
541
+ npm install -g @realtimex/pp-cli@2.0.33
470
542
  ```
471
543
  Then run `realtimex-pp-cli --version` again and proceed only after exact-version verification succeeds.
472
544
  2. Match the user query to the best command from the Unique Capabilities and Command Reference above.
@@ -529,6 +601,13 @@ For `send-channel-file`:
529
601
  * In desktop/local runtime, the CLI should send the absolute local `filePath` to the server. The server validates the path against allowed storage/temp roots before sending through the channel. Base64 upload is fallback transport, not the preferred path.
530
602
  * The server validates the delivery context, active channel session, plugin state, runtime binding when supplied, and file size/type handling before delivery.
531
603
 
604
+ For webhook endpoint management:
605
+
606
+ * These operations require an authenticated, user-bound session credential.
607
+ * Treat `secret` as write-only input for creation or rotation. Never expect, request, print, or persist a plaintext secret from endpoint responses.
608
+ * Use `list-webhook-deliveries` for bounded metadata inspection. Raw request headers, signatures, bodies, and normalized payload fields are intentionally unavailable.
609
+ * Pass `confirmDestructive=true` only after the user has explicitly requested permanent endpoint deletion.
610
+
532
611
  For workspace default-agent setup:
533
612
 
534
613
  * Use `prepare.agents` only.