modality-kit 0.9.4 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -147,28 +147,35 @@ class ModalityLogger {
147
147
  case "debug":
148
148
  console.debug(payload);
149
149
  break;
150
- case "info":
151
- console.info(payload.message);
152
- console.dir(payload.data, {
150
+ case "info": {
151
+ const { message, ...restPayload } = payload;
152
+ console.info(message);
153
+ console.dir(restPayload, {
153
154
  depth: null,
154
155
  colors: true,
155
156
  maxArrayLength: null
156
157
  });
157
158
  break;
158
- case "warn":
159
+ }
160
+ case "warn": {
161
+ const { message, ...restPayload } = payload;
159
162
  console.warn(payload);
160
- console.log(`
161
- `);
163
+ console.dir(restPayload, {
164
+ depth: null,
165
+ colors: true,
166
+ maxArrayLength: null
167
+ });
162
168
  break;
163
- case "error":
169
+ }
170
+ case "error": {
164
171
  const error = payload.error;
165
172
  if (error instanceof Error || error.stack) {
166
173
  delete payload.error;
167
174
  const { message, stack, ...restError } = error;
168
175
  if (stack) {
169
176
  if (Object.keys(restError).length) {
170
- console.error(restError, `
171
- `, stack);
177
+ console.error(restError);
178
+ console.log(stack);
172
179
  } else {
173
180
  console.error(stack);
174
181
  }
@@ -182,6 +189,7 @@ class ModalityLogger {
182
189
  console.error(payload);
183
190
  }
184
191
  break;
192
+ }
185
193
  case "success":
186
194
  console.log(payload);
187
195
  break;
@@ -5651,6 +5659,8 @@ var logger3 = getLoggerInstance("WebSocket-Client");
5651
5659
 
5652
5660
  class WebSocketClient {
5653
5661
  ws = null;
5662
+ wsStream = null;
5663
+ streamWriter = null;
5654
5664
  url;
5655
5665
  config = {
5656
5666
  initialReconnectDelay: 1000,
@@ -5734,24 +5744,60 @@ class WebSocketClient {
5734
5744
  const url = new URL(this.url);
5735
5745
  return url.searchParams.get("clientId") ?? (this.connectionId ? String(this.connectionId) : "");
5736
5746
  }
5737
- send(data) {
5738
- if (this.ws && this.ws.readyState === WebSocket.OPEN) {
5747
+ async initializeWebSocketStream() {
5748
+ if (typeof WebSocketStream === "undefined") {
5749
+ logger3.warn("WebSocketStream not supported in this environment");
5750
+ return false;
5751
+ }
5752
+ try {
5753
+ this.wsStream = new WebSocketStream(this.url);
5754
+ const { writable } = await this.wsStream.opened;
5755
+ this.streamWriter = writable.getWriter();
5756
+ logger3.info("WebSocketStream initialized successfully");
5757
+ return true;
5758
+ } catch (error) {
5759
+ logger3.error("Failed to initialize WebSocketStream:", error);
5760
+ this.wsStream = null;
5761
+ this.streamWriter = null;
5762
+ return false;
5763
+ }
5764
+ }
5765
+ async send(data, useStream = false) {
5766
+ const message = JSON.stringify({
5767
+ ...data,
5768
+ jsonrpc: "2.0",
5769
+ timestamp: new Date().toISOString()
5770
+ });
5771
+ if (useStream) {
5772
+ if (!this.streamWriter) {
5773
+ const streamInitialized = await this.initializeWebSocketStream();
5774
+ if (!streamInitialized) {
5775
+ logger3.warn("WebSocketStream not available, cannot send with streaming");
5776
+ return false;
5777
+ }
5778
+ }
5739
5779
  try {
5740
- const message = JSON.stringify({
5741
- ...data,
5742
- jsonrpc: "2.0",
5743
- timestamp: new Date().toISOString()
5744
- });
5745
- this.ws.send(message);
5746
- logger3.info("Message sent:", message);
5780
+ await this.streamWriter.write(message);
5781
+ logger3.info("Message sent via WebSocketStream:", message);
5747
5782
  return true;
5748
5783
  } catch (error) {
5749
- logger3.error("Error sending message:", error);
5784
+ logger3.error("Error sending via WebSocketStream:", error);
5750
5785
  return false;
5751
5786
  }
5752
5787
  } else {
5753
- logger3.warn("WebSocket is not connected during send operation.");
5754
- return false;
5788
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
5789
+ try {
5790
+ this.ws.send(message);
5791
+ logger3.info("Message sent:", message);
5792
+ return true;
5793
+ } catch (error) {
5794
+ logger3.error("Error sending message:", error);
5795
+ return false;
5796
+ }
5797
+ } else {
5798
+ logger3.warn("WebSocket is not connected during send operation.");
5799
+ return false;
5800
+ }
5755
5801
  }
5756
5802
  }
5757
5803
  isConnected() {
@@ -60,7 +60,6 @@ interface SymbolBase {
60
60
  id?: string;
61
61
  uri?: string;
62
62
  detail?: string;
63
- content?: string;
64
63
  containerName?: string;
65
64
  }
66
65
  export interface Symbol extends SymbolBase {
@@ -1,4 +1,17 @@
1
1
  import type { JSONRPCValidationResult } from "./schemas/jsonrpc";
2
+ declare global {
3
+ interface WebSocketStream {
4
+ readonly opened: Promise<{
5
+ readable: ReadableStream;
6
+ writable: WritableStream;
7
+ }>;
8
+ readonly closed: Promise<void>;
9
+ close(code?: number, reason?: string): void;
10
+ }
11
+ const WebSocketStream: {
12
+ new (url: string): WebSocketStream;
13
+ };
14
+ }
2
15
  interface WebSocketConfig {
3
16
  maxReconnectAttempts: number;
4
17
  initialReconnectDelay: number;
@@ -18,6 +31,8 @@ interface WebSocketInfo {
18
31
  }
19
32
  export declare class WebSocketClient {
20
33
  private ws;
34
+ private wsStream;
35
+ private streamWriter;
21
36
  private url;
22
37
  private config;
23
38
  private connectionId;
@@ -35,7 +50,8 @@ export declare class WebSocketClient {
35
50
  private onOpen;
36
51
  private onClose;
37
52
  private getClientId;
38
- send(data: any): boolean;
53
+ private initializeWebSocketStream;
54
+ send(data: any, useStream?: boolean): Promise<boolean>;
39
55
  isConnected(): boolean;
40
56
  getInfo(): WebSocketInfo;
41
57
  /**
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.9.4",
2
+ "version": "0.10.0",
3
3
  "name": "modality-kit",
4
4
  "repository": {
5
5
  "type": "git",