agents 0.0.80 → 0.0.82

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/mcp/index.js CHANGED
@@ -1,15 +1,9 @@
1
1
  import {
2
2
  Agent
3
- } from "../chunk-YFPCCSZO.js";
4
- import "../chunk-D6UOOELW.js";
5
- import "../chunk-RN4SNE73.js";
6
- import "../chunk-25YDMV4H.js";
7
- import {
8
- __privateAdd,
9
- __privateGet,
10
- __privateMethod,
11
- __privateSet
12
- } from "../chunk-HMLY7DHA.js";
3
+ } from "../chunk-RIYR6FR6.js";
4
+ import "../chunk-BZXOAZUX.js";
5
+ import "../chunk-QSGN3REV.js";
6
+ import "../chunk-Y67CHZBI.js";
13
7
 
14
8
  // src/mcp/index.ts
15
9
  import { DurableObject } from "cloudflare:workers";
@@ -38,24 +32,22 @@ function handleCORS(request, corsOptions) {
38
32
  }
39
33
  return null;
40
34
  }
41
- var _getWebSocket, _started;
42
35
  var McpSSETransport = class {
43
36
  constructor(getWebSocket) {
44
- __privateAdd(this, _getWebSocket);
45
- __privateAdd(this, _started, false);
46
- __privateSet(this, _getWebSocket, getWebSocket);
37
+ this._started = false;
38
+ this._getWebSocket = getWebSocket;
47
39
  }
48
40
  async start() {
49
- if (__privateGet(this, _started)) {
41
+ if (this._started) {
50
42
  throw new Error("Transport already started");
51
43
  }
52
- __privateSet(this, _started, true);
44
+ this._started = true;
53
45
  }
54
46
  async send(message) {
55
- if (!__privateGet(this, _started)) {
47
+ if (!this._started) {
56
48
  throw new Error("Transport not started");
57
49
  }
58
- const websocket = __privateGet(this, _getWebSocket).call(this);
50
+ const websocket = this._getWebSocket();
59
51
  if (!websocket) {
60
52
  throw new Error("WebSocket not connected");
61
53
  }
@@ -70,52 +62,40 @@ var McpSSETransport = class {
70
62
  this.onclose?.();
71
63
  }
72
64
  };
73
- _getWebSocket = new WeakMap();
74
- _started = new WeakMap();
75
- var _getWebSocketForGetRequest, _getWebSocketForMessageID, _notifyResponseIdSent, _started2;
76
65
  var McpStreamableHttpTransport = class {
77
66
  constructor(getWebSocketForMessageID, notifyResponseIdSent) {
78
- // TODO: If there is an open connection to send server-initiated messages
79
- // back, we should use that connection
80
- __privateAdd(this, _getWebSocketForGetRequest);
81
- // Get the appropriate websocket connection for a given message id
82
- __privateAdd(this, _getWebSocketForMessageID);
83
- // Notify the server that a response has been sent for a given message id
84
- // so that it may clean up it's mapping of message ids to connections
85
- // once they are no longer needed
86
- __privateAdd(this, _notifyResponseIdSent);
87
- __privateAdd(this, _started2, false);
88
- __privateSet(this, _getWebSocketForMessageID, getWebSocketForMessageID);
89
- __privateSet(this, _notifyResponseIdSent, notifyResponseIdSent);
90
- __privateSet(this, _getWebSocketForGetRequest, () => null);
67
+ this._started = false;
68
+ this._getWebSocketForMessageID = getWebSocketForMessageID;
69
+ this._notifyResponseIdSent = notifyResponseIdSent;
70
+ this._getWebSocketForGetRequest = () => null;
91
71
  }
92
72
  async start() {
93
- if (__privateGet(this, _started2)) {
73
+ if (this._started) {
94
74
  throw new Error("Transport already started");
95
75
  }
96
- __privateSet(this, _started2, true);
76
+ this._started = true;
97
77
  }
98
78
  async send(message) {
99
- if (!__privateGet(this, _started2)) {
79
+ if (!this._started) {
100
80
  throw new Error("Transport not started");
101
81
  }
102
82
  let websocket = null;
103
83
  if (isJSONRPCResponse(message) || isJSONRPCError(message)) {
104
- websocket = __privateGet(this, _getWebSocketForMessageID).call(this, message.id.toString());
84
+ websocket = this._getWebSocketForMessageID(message.id.toString());
105
85
  if (!websocket) {
106
86
  throw new Error(
107
87
  `Could not find WebSocket for message id: ${message.id}`
108
88
  );
109
89
  }
110
90
  } else if (isJSONRPCRequest(message)) {
111
- websocket = __privateGet(this, _getWebSocketForGetRequest).call(this);
91
+ websocket = this._getWebSocketForGetRequest();
112
92
  } else if (isJSONRPCNotification(message)) {
113
93
  websocket = null;
114
94
  }
115
95
  try {
116
96
  websocket?.send(JSON.stringify(message));
117
97
  if (isJSONRPCResponse(message)) {
118
- __privateGet(this, _notifyResponseIdSent).call(this, message.id.toString());
98
+ this._notifyResponseIdSent(message.id.toString());
119
99
  }
120
100
  } catch (error) {
121
101
  this.onerror?.(error);
@@ -126,28 +106,16 @@ var McpStreamableHttpTransport = class {
126
106
  this.onclose?.();
127
107
  }
128
108
  };
129
- _getWebSocketForGetRequest = new WeakMap();
130
- _getWebSocketForMessageID = new WeakMap();
131
- _notifyResponseIdSent = new WeakMap();
132
- _started2 = new WeakMap();
133
- var _status, _transport, _transportType, _requestIdToConnectionId, _agent, _McpAgent_instances, initialize_fn;
134
- var _McpAgent = class _McpAgent extends DurableObject {
109
+ var McpAgent = class _McpAgent extends DurableObject {
135
110
  constructor(ctx, env) {
136
111
  var _a;
137
112
  super(ctx, env);
138
- __privateAdd(this, _McpAgent_instances);
139
- __privateAdd(this, _status, "zero");
140
- __privateAdd(this, _transport);
141
- __privateAdd(this, _transportType, "unset");
142
- __privateAdd(this, _requestIdToConnectionId, /* @__PURE__ */ new Map());
143
- /**
144
- * Since McpAgent's _aren't_ yet real "Agents", let's only expose a couple of the methods
145
- * to the outer class: initialState/state/setState/onStateUpdate/sql
146
- */
147
- __privateAdd(this, _agent);
113
+ this._status = "zero";
114
+ this._transportType = "unset";
115
+ this._requestIdToConnectionId = /* @__PURE__ */ new Map();
148
116
  this.initRun = false;
149
117
  const self = this;
150
- __privateSet(this, _agent, new (_a = class extends Agent {
118
+ this._agent = new (_a = class extends Agent {
151
119
  onStateUpdate(state, source) {
152
120
  return self.onStateUpdate(state, source);
153
121
  }
@@ -156,26 +124,26 @@ var _McpAgent = class _McpAgent extends DurableObject {
156
124
  }
157
125
  }, _a.options = {
158
126
  hibernate: true
159
- }, _a)(ctx, env));
127
+ }, _a)(ctx, env);
160
128
  }
161
129
  get mcp() {
162
- return __privateGet(this, _agent).mcp;
130
+ return this._agent.mcp;
163
131
  }
164
132
  get state() {
165
- return __privateGet(this, _agent).state;
133
+ return this._agent.state;
166
134
  }
167
135
  sql(strings, ...values) {
168
- return __privateGet(this, _agent).sql(strings, ...values);
136
+ return this._agent.sql(strings, ...values);
169
137
  }
170
138
  setState(state) {
171
- return __privateGet(this, _agent).setState(state);
139
+ return this._agent.setState(state);
172
140
  }
173
141
  onStateUpdate(state, source) {
174
142
  }
175
143
  async onStart() {
176
144
  var _a;
177
145
  const self = this;
178
- __privateSet(this, _agent, new (_a = class extends Agent {
146
+ this._agent = new (_a = class extends Agent {
179
147
  constructor() {
180
148
  super(...arguments);
181
149
  this.initialState = self.initialState;
@@ -188,22 +156,22 @@ var _McpAgent = class _McpAgent extends DurableObject {
188
156
  }
189
157
  }, _a.options = {
190
158
  hibernate: true
191
- }, _a)(this.ctx, this.env));
159
+ }, _a)(this.ctx, this.env);
192
160
  this.props = await this.ctx.storage.get("props");
193
- __privateSet(this, _transportType, await this.ctx.storage.get(
161
+ this._transportType = await this.ctx.storage.get(
194
162
  "transportType"
195
- ));
163
+ );
196
164
  await this._init(this.props);
197
165
  const server = await this.server;
198
- if (__privateGet(this, _transportType) === "sse") {
199
- __privateSet(this, _transport, new McpSSETransport(() => this.getWebSocket()));
200
- await server.connect(__privateGet(this, _transport));
201
- } else if (__privateGet(this, _transportType) === "streamable-http") {
202
- __privateSet(this, _transport, new McpStreamableHttpTransport(
166
+ if (this._transportType === "sse") {
167
+ this._transport = new McpSSETransport(() => this.getWebSocket());
168
+ await server.connect(this._transport);
169
+ } else if (this._transportType === "streamable-http") {
170
+ this._transport = new McpStreamableHttpTransport(
203
171
  (id) => this.getWebSocketForResponseID(id),
204
- (id) => __privateGet(this, _requestIdToConnectionId).delete(id)
205
- ));
206
- await server.connect(__privateGet(this, _transport));
172
+ (id) => this._requestIdToConnectionId.delete(id)
173
+ );
174
+ await server.connect(this._transport);
207
175
  }
208
176
  }
209
177
  async _init(props) {
@@ -223,10 +191,17 @@ var _McpAgent = class _McpAgent extends DurableObject {
223
191
  async isInitialized() {
224
192
  return await this.ctx.storage.get("initialized") === true;
225
193
  }
194
+ async _initialize() {
195
+ await this.ctx.blockConcurrencyWhile(async () => {
196
+ this._status = "starting";
197
+ await this.onStart();
198
+ this._status = "started";
199
+ });
200
+ }
226
201
  // Allow the worker to fetch a websocket connection to the agent
227
202
  async fetch(request) {
228
- if (__privateGet(this, _status) !== "started") {
229
- await __privateMethod(this, _McpAgent_instances, initialize_fn).call(this);
203
+ if (this._status !== "started") {
204
+ await this._initialize();
230
205
  }
231
206
  if (request.headers.get("Upgrade") !== "websocket") {
232
207
  return new Response("Expected WebSocket Upgrade request", {
@@ -243,24 +218,24 @@ var _McpAgent = class _McpAgent extends DurableObject {
243
218
  return new Response("Websocket already connected", { status: 400 });
244
219
  }
245
220
  await this.ctx.storage.put("transportType", "sse");
246
- __privateSet(this, _transportType, "sse");
247
- if (!__privateGet(this, _transport)) {
248
- __privateSet(this, _transport, new McpSSETransport(() => this.getWebSocket()));
249
- await server.connect(__privateGet(this, _transport));
221
+ this._transportType = "sse";
222
+ if (!this._transport) {
223
+ this._transport = new McpSSETransport(() => this.getWebSocket());
224
+ await server.connect(this._transport);
250
225
  }
251
- return __privateGet(this, _agent).fetch(request);
226
+ return this._agent.fetch(request);
252
227
  }
253
228
  case "/streamable-http": {
254
- if (!__privateGet(this, _transport)) {
255
- __privateSet(this, _transport, new McpStreamableHttpTransport(
229
+ if (!this._transport) {
230
+ this._transport = new McpStreamableHttpTransport(
256
231
  (id) => this.getWebSocketForResponseID(id),
257
- (id) => __privateGet(this, _requestIdToConnectionId).delete(id)
258
- ));
259
- await server.connect(__privateGet(this, _transport));
232
+ (id) => this._requestIdToConnectionId.delete(id)
233
+ );
234
+ await server.connect(this._transport);
260
235
  }
261
236
  await this.ctx.storage.put("transportType", "streamable-http");
262
- __privateSet(this, _transportType, "streamable-http");
263
- return __privateGet(this, _agent).fetch(request);
237
+ this._transportType = "streamable-http";
238
+ return this._agent.fetch(request);
264
239
  }
265
240
  default:
266
241
  return new Response(
@@ -279,19 +254,19 @@ var _McpAgent = class _McpAgent extends DurableObject {
279
254
  return websockets[0];
280
255
  }
281
256
  getWebSocketForResponseID(id) {
282
- const connectionId = __privateGet(this, _requestIdToConnectionId).get(id);
257
+ const connectionId = this._requestIdToConnectionId.get(id);
283
258
  if (connectionId === void 0) {
284
259
  return null;
285
260
  }
286
- return __privateGet(this, _agent).getConnection(connectionId) ?? null;
261
+ return this._agent.getConnection(connectionId) ?? null;
287
262
  }
288
263
  // All messages received here. This is currently never called
289
264
  async onMessage(connection, event) {
290
- if (__privateGet(this, _transportType) !== "streamable-http") {
265
+ if (this._transportType !== "streamable-http") {
291
266
  const err = new Error(
292
267
  "Internal Server Error: Expected streamable-http protocol"
293
268
  );
294
- __privateGet(this, _transport)?.onerror?.(err);
269
+ this._transport?.onerror?.(err);
295
270
  return;
296
271
  }
297
272
  let message;
@@ -299,21 +274,21 @@ var _McpAgent = class _McpAgent extends DurableObject {
299
274
  const data = typeof event === "string" ? event : new TextDecoder().decode(event);
300
275
  message = JSONRPCMessageSchema.parse(JSON.parse(data));
301
276
  } catch (error) {
302
- __privateGet(this, _transport)?.onerror?.(error);
277
+ this._transport?.onerror?.(error);
303
278
  return;
304
279
  }
305
280
  if (isJSONRPCRequest(message)) {
306
- __privateGet(this, _requestIdToConnectionId).set(message.id.toString(), connection.id);
281
+ this._requestIdToConnectionId.set(message.id.toString(), connection.id);
307
282
  }
308
- __privateGet(this, _transport)?.onmessage?.(message);
283
+ this._transport?.onmessage?.(message);
309
284
  }
310
285
  // All messages received over SSE after the initial connection has been established
311
286
  // will be passed here
312
287
  async onSSEMcpMessage(sessionId, request) {
313
- if (__privateGet(this, _status) !== "started") {
314
- await __privateMethod(this, _McpAgent_instances, initialize_fn).call(this);
288
+ if (this._status !== "started") {
289
+ await this._initialize();
315
290
  }
316
- if (__privateGet(this, _transportType) !== "sse") {
291
+ if (this._transportType !== "sse") {
317
292
  return new Error("Internal Server Error: Expected SSE protocol");
318
293
  }
319
294
  try {
@@ -322,36 +297,36 @@ var _McpAgent = class _McpAgent extends DurableObject {
322
297
  try {
323
298
  parsedMessage = JSONRPCMessageSchema.parse(message);
324
299
  } catch (error) {
325
- __privateGet(this, _transport)?.onerror?.(error);
300
+ this._transport?.onerror?.(error);
326
301
  throw error;
327
302
  }
328
- __privateGet(this, _transport)?.onmessage?.(parsedMessage);
303
+ this._transport?.onmessage?.(parsedMessage);
329
304
  return null;
330
305
  } catch (error) {
331
306
  console.error("Error forwarding message to SSE:", error);
332
- __privateGet(this, _transport)?.onerror?.(error);
307
+ this._transport?.onerror?.(error);
333
308
  return error;
334
309
  }
335
310
  }
336
311
  // Delegate all websocket events to the underlying agent
337
312
  async webSocketMessage(ws, event) {
338
- if (__privateGet(this, _status) !== "started") {
339
- await __privateMethod(this, _McpAgent_instances, initialize_fn).call(this);
313
+ if (this._status !== "started") {
314
+ await this._initialize();
340
315
  }
341
- return await __privateGet(this, _agent).webSocketMessage(ws, event);
316
+ return await this._agent.webSocketMessage(ws, event);
342
317
  }
343
318
  // WebSocket event handlers for hibernation support
344
319
  async webSocketError(ws, error) {
345
- if (__privateGet(this, _status) !== "started") {
346
- await __privateMethod(this, _McpAgent_instances, initialize_fn).call(this);
320
+ if (this._status !== "started") {
321
+ await this._initialize();
347
322
  }
348
- return await __privateGet(this, _agent).webSocketError(ws, error);
323
+ return await this._agent.webSocketError(ws, error);
349
324
  }
350
325
  async webSocketClose(ws, code, reason, wasClean) {
351
- if (__privateGet(this, _status) !== "started") {
352
- await __privateMethod(this, _McpAgent_instances, initialize_fn).call(this);
326
+ if (this._status !== "started") {
327
+ await this._initialize();
353
328
  }
354
- return await __privateGet(this, _agent).webSocketClose(ws, code, reason, wasClean);
329
+ return await this._agent.webSocketClose(ws, code, reason, wasClean);
355
330
  }
356
331
  static mount(path, {
357
332
  binding = "MCP_OBJECT",
@@ -798,20 +773,6 @@ data: ${JSON.stringify(result.data)}
798
773
  };
799
774
  }
800
775
  };
801
- _status = new WeakMap();
802
- _transport = new WeakMap();
803
- _transportType = new WeakMap();
804
- _requestIdToConnectionId = new WeakMap();
805
- _agent = new WeakMap();
806
- _McpAgent_instances = new WeakSet();
807
- initialize_fn = async function() {
808
- await this.ctx.blockConcurrencyWhile(async () => {
809
- __privateSet(this, _status, "starting");
810
- await this.onStart();
811
- __privateSet(this, _status, "started");
812
- });
813
- };
814
- var McpAgent = _McpAgent;
815
776
  export {
816
777
  McpAgent
817
778
  };