@robota-sdk/agent-transport-ws 3.0.0-beta.45 → 3.0.0-beta.47

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
@@ -63,6 +63,26 @@ All messages are JSON-encoded objects with a `type` field.
63
63
  | `pending` | `{ pending: string\|null }` | get-pending response |
64
64
  | `protocol_error` | `{ message: string }` | invalid client message |
65
65
 
66
+ ## ITransportAdapter
67
+
68
+ The WebSocket transport implements the `ITransportAdapter` interface from `@robota-sdk/agent-sdk`:
69
+
70
+ ```typescript
71
+ import { createWsTransport } from '@robota-sdk/agent-transport-ws';
72
+ import type { ITransportAdapter } from '@robota-sdk/agent-sdk';
73
+
74
+ const transport: ITransportAdapter = createWsTransport({
75
+ send: (msg) => ws.send(JSON.stringify(msg)),
76
+ });
77
+
78
+ transport.attach(interactiveSession);
79
+ await transport.start();
80
+
81
+ // Wire incoming messages
82
+ ws.on('message', (data) => transport.onMessage(String(data)));
83
+ ws.on('close', () => transport.stop());
84
+ ```
85
+
66
86
  ## Dependencies
67
87
 
68
88
  - `@robota-sdk/agent-sdk` — `InteractiveSession`
@@ -20,7 +20,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
- createWsHandler: () => createWsHandler
23
+ createWsHandler: () => createWsHandler,
24
+ createWsTransport: () => createWsTransport
24
25
  });
25
26
  module.exports = __toCommonJS(index_exports);
26
27
 
@@ -108,7 +109,32 @@ function createWsHandler(options) {
108
109
  };
109
110
  return { onMessage, cleanup };
110
111
  }
112
+
113
+ // src/ws-transport.ts
114
+ function createWsTransport(options) {
115
+ let session = null;
116
+ let cleanup = null;
117
+ return {
118
+ name: "ws",
119
+ onMessage: null,
120
+ attach(s) {
121
+ session = s;
122
+ },
123
+ async start() {
124
+ if (!session) throw new Error("No session attached. Call attach() first.");
125
+ const handler = createWsHandler({ session, send: options.send });
126
+ cleanup = handler.cleanup;
127
+ this.onMessage = handler.onMessage;
128
+ },
129
+ async stop() {
130
+ cleanup?.();
131
+ cleanup = null;
132
+ this.onMessage = null;
133
+ }
134
+ };
135
+ }
111
136
  // Annotate the CommonJS export names for ESM import in node:
112
137
  0 && (module.exports = {
113
- createWsHandler
138
+ createWsHandler,
139
+ createWsTransport
114
140
  });
@@ -1,4 +1,4 @@
1
- import { InteractiveSession, IToolState, IExecutionResult } from '@robota-sdk/agent-sdk';
1
+ import { InteractiveSession, IToolState, IExecutionResult, ITransportAdapter } from '@robota-sdk/agent-sdk';
2
2
 
3
3
  /**
4
4
  * WebSocket transport adapter — exposes InteractiveSession over WebSocket.
@@ -104,4 +104,19 @@ declare function createWsHandler(options: IWsHandlerOptions): {
104
104
  cleanup: () => void;
105
105
  };
106
106
 
107
- export { type IWsHandlerOptions, type TClientMessage, type TServerMessage, createWsHandler };
107
+ /**
108
+ * ITransportAdapter implementation for WebSocket transport.
109
+ *
110
+ * Wraps createWsHandler into the unified ITransportAdapter interface.
111
+ * After start(), the consumer must wire onMessage to their WebSocket.
112
+ */
113
+
114
+ interface IWsTransportOptions {
115
+ /** Send a JSON message to the connected WebSocket client. */
116
+ send: (message: TServerMessage) => void;
117
+ }
118
+ declare function createWsTransport(options: IWsTransportOptions): ITransportAdapter & {
119
+ onMessage: ((data: string) => void) | null;
120
+ };
121
+
122
+ export { type IWsHandlerOptions, type IWsTransportOptions, type TClientMessage, type TServerMessage, createWsHandler, createWsTransport };
@@ -1,4 +1,4 @@
1
- import { InteractiveSession, IToolState, IExecutionResult } from '@robota-sdk/agent-sdk';
1
+ import { InteractiveSession, IToolState, IExecutionResult, ITransportAdapter } from '@robota-sdk/agent-sdk';
2
2
 
3
3
  /**
4
4
  * WebSocket transport adapter — exposes InteractiveSession over WebSocket.
@@ -104,4 +104,19 @@ declare function createWsHandler(options: IWsHandlerOptions): {
104
104
  cleanup: () => void;
105
105
  };
106
106
 
107
- export { type IWsHandlerOptions, type TClientMessage, type TServerMessage, createWsHandler };
107
+ /**
108
+ * ITransportAdapter implementation for WebSocket transport.
109
+ *
110
+ * Wraps createWsHandler into the unified ITransportAdapter interface.
111
+ * After start(), the consumer must wire onMessage to their WebSocket.
112
+ */
113
+
114
+ interface IWsTransportOptions {
115
+ /** Send a JSON message to the connected WebSocket client. */
116
+ send: (message: TServerMessage) => void;
117
+ }
118
+ declare function createWsTransport(options: IWsTransportOptions): ITransportAdapter & {
119
+ onMessage: ((data: string) => void) | null;
120
+ };
121
+
122
+ export { type IWsHandlerOptions, type IWsTransportOptions, type TClientMessage, type TServerMessage, createWsHandler, createWsTransport };
@@ -82,6 +82,31 @@ function createWsHandler(options) {
82
82
  };
83
83
  return { onMessage, cleanup };
84
84
  }
85
+
86
+ // src/ws-transport.ts
87
+ function createWsTransport(options) {
88
+ let session = null;
89
+ let cleanup = null;
90
+ return {
91
+ name: "ws",
92
+ onMessage: null,
93
+ attach(s) {
94
+ session = s;
95
+ },
96
+ async start() {
97
+ if (!session) throw new Error("No session attached. Call attach() first.");
98
+ const handler = createWsHandler({ session, send: options.send });
99
+ cleanup = handler.cleanup;
100
+ this.onMessage = handler.onMessage;
101
+ },
102
+ async stop() {
103
+ cleanup?.();
104
+ cleanup = null;
105
+ this.onMessage = null;
106
+ }
107
+ };
108
+ }
85
109
  export {
86
- createWsHandler
110
+ createWsHandler,
111
+ createWsTransport
87
112
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robota-sdk/agent-transport-ws",
3
- "version": "3.0.0-beta.45",
3
+ "version": "3.0.0-beta.47",
4
4
  "description": "WebSocket transport adapter for exposing InteractiveSession over real-time connections",
5
5
  "type": "module",
6
6
  "main": "dist/node/index.js",
@@ -22,7 +22,7 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "@robota-sdk/agent-sdk": "3.0.0-beta.45"
25
+ "@robota-sdk/agent-sdk": "3.0.0-beta.47"
26
26
  },
27
27
  "devDependencies": {
28
28
  "rimraf": "^5.0.5",