@meshagent/meshagent 0.44.12 → 0.45.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/browser/index.d.ts +1 -1
  3. package/dist/browser/index.js +1 -1
  4. package/dist/browser/meshagent-client.d.ts +390 -372
  5. package/dist/browser/meshagent-client.js +841 -1040
  6. package/dist/browser/oauth-scopes.d.ts +1 -1
  7. package/dist/browser/oauth-scopes.js +64 -14
  8. package/dist/browser/participant-token.d.ts +68 -20
  9. package/dist/browser/participant-token.js +232 -61
  10. package/dist/browser/room-client.d.ts +4 -8
  11. package/dist/browser/room-client.js +4 -10
  12. package/dist/browser/services-client.d.ts +11 -0
  13. package/dist/browser/services-client.js +17 -0
  14. package/dist/browser/sqlite-client.d.ts +326 -0
  15. package/dist/browser/sqlite-client.js +630 -0
  16. package/dist/browser/toolkit-config.d.ts +7 -1
  17. package/dist/browser/toolkit-config.js +41 -22
  18. package/dist/esm/index.d.ts +1 -1
  19. package/dist/esm/index.js +1 -1
  20. package/dist/esm/meshagent-client.d.ts +390 -372
  21. package/dist/esm/meshagent-client.js +841 -1038
  22. package/dist/esm/oauth-scopes.d.ts +1 -1
  23. package/dist/esm/oauth-scopes.js +64 -14
  24. package/dist/esm/participant-token.d.ts +68 -20
  25. package/dist/esm/participant-token.js +228 -59
  26. package/dist/esm/room-client.d.ts +4 -8
  27. package/dist/esm/room-client.js +4 -10
  28. package/dist/esm/services-client.d.ts +11 -0
  29. package/dist/esm/services-client.js +17 -0
  30. package/dist/esm/sqlite-client.d.ts +326 -0
  31. package/dist/esm/sqlite-client.js +625 -0
  32. package/dist/esm/toolkit-config.d.ts +7 -1
  33. package/dist/esm/toolkit-config.js +41 -22
  34. package/dist/node/index.d.ts +1 -1
  35. package/dist/node/index.js +1 -1
  36. package/dist/node/meshagent-client.d.ts +390 -372
  37. package/dist/node/meshagent-client.js +841 -1040
  38. package/dist/node/oauth-scopes.d.ts +1 -1
  39. package/dist/node/oauth-scopes.js +64 -14
  40. package/dist/node/participant-token.d.ts +68 -20
  41. package/dist/node/participant-token.js +232 -61
  42. package/dist/node/room-client.d.ts +4 -8
  43. package/dist/node/room-client.js +4 -10
  44. package/dist/node/services-client.d.ts +11 -0
  45. package/dist/node/services-client.js +17 -0
  46. package/dist/node/sqlite-client.d.ts +326 -0
  47. package/dist/node/sqlite-client.js +630 -0
  48. package/dist/node/toolkit-config.d.ts +7 -1
  49. package/dist/node/toolkit-config.js +41 -22
  50. package/package.json +1 -1
  51. package/dist/browser/secrets-client.d.ts +0 -112
  52. package/dist/browser/secrets-client.js +0 -300
  53. package/dist/esm/secrets-client.d.ts +0 -112
  54. package/dist/esm/secrets-client.js +0 -296
  55. package/dist/node/secrets-client.d.ts +0 -112
  56. package/dist/node/secrets-client.js +0 -300
@@ -180,30 +180,19 @@ class Connector {
180
180
  if (connector == null && this.oauth == null) {
181
181
  return true;
182
182
  }
183
- const token = await room.secrets.getOfflineOAuthToken({
184
- connector,
185
- oauth: this.oauth,
186
- delegatedTo: agentName,
187
- });
188
- return token != null;
183
+ void room;
184
+ void agentName;
185
+ throw new Error("OAuth MCP connections require proxy-backed user secrets");
189
186
  }
190
187
  async authenticate(client, agent, redirectUri) {
191
188
  const connector = this.buildConnectorRef();
192
189
  if (connector == null && this.oauth == null) {
193
190
  return null;
194
191
  }
195
- const localParticipant = client.localParticipant;
196
- if (localParticipant == null) {
197
- throw new Error("Connector.authenticate requires a local participant");
198
- }
199
- const agentName = agent.getAttribute("name");
200
- return await client.secrets.requestOAuthToken({
201
- fromParticipantId: localParticipant.id,
202
- connector,
203
- oauth: this.oauth,
204
- redirectUri,
205
- delegateTo: agentName == null ? null : String(agentName),
206
- });
192
+ void client;
193
+ void agent;
194
+ void redirectUri;
195
+ throw new Error("OAuth MCP connections require proxy-backed user secrets");
207
196
  }
208
197
  }
209
198
  exports.Connector = Connector;
@@ -259,7 +248,25 @@ function roomServiceMcpServerUrl({ service, port, endpoint, }) {
259
248
  const fragment = baseUrl.hash;
260
249
  return `${baseUrl.protocol}//${userInfo}${bracketIpv6Host(baseUrl.hostname)}:${portValue}${joinedPath}${query}${fragment}`;
261
250
  }
262
- function mcpConnectorsFromRoomServices({ services, agentName, }) {
251
+ function proxyMcpServerUrl({ serverUrl, useProxySecret, proxyConfig, }) {
252
+ const secretId = useProxySecret?.trim();
253
+ if (serverUrl == null || secretId == null || secretId.length === 0 || proxyConfig == null) {
254
+ return serverUrl;
255
+ }
256
+ const apiUrl = proxyConfig.apiUrl.trim().replace(/\/+$/, "");
257
+ if (apiUrl.length === 0 || proxyConfig.apiKey.trim().length === 0) {
258
+ throw new Error("meshagent_proxy_config requires apiUrl and apiKey");
259
+ }
260
+ const url = new URL(`${apiUrl}/proxy-request`);
261
+ url.searchParams.set("url", serverUrl);
262
+ url.searchParams.set("secret-id", secretId);
263
+ const user = proxyConfig.user?.trim();
264
+ if (user != null && user.length > 0) {
265
+ url.searchParams.set("user", user);
266
+ }
267
+ return url.toString();
268
+ }
269
+ function mcpConnectorsFromRoomServices({ services, agentName, meshagentProxyConfig, }) {
263
270
  const connectors = [];
264
271
  for (const service of services) {
265
272
  const filter = service.metadata.annotations?.["meshagent.agent.filter"];
@@ -276,12 +283,24 @@ function mcpConnectorsFromRoomServices({ services, agentName, }) {
276
283
  name: mcp.label,
277
284
  server: new MCPServer({
278
285
  serverLabel: mcp.label,
279
- serverUrl: roomServiceMcpServerUrl({ service, port, endpoint }),
280
- headers: headersFromEndpointSpec(mcp.headers),
286
+ serverUrl: proxyMcpServerUrl({
287
+ serverUrl: roomServiceMcpServerUrl({ service, port, endpoint }),
288
+ useProxySecret: mcp.use_proxy_secret,
289
+ proxyConfig: meshagentProxyConfig,
290
+ }),
291
+ headers: mcp.use_proxy_secret != null && meshagentProxyConfig != null
292
+ ? [
293
+ ...(headersFromEndpointSpec(mcp.headers) ?? []),
294
+ new MCPHeader({
295
+ name: "Authorization",
296
+ value: `Bearer ${meshagentProxyConfig.apiKey}`,
297
+ }),
298
+ ]
299
+ : headersFromEndpointSpec(mcp.headers),
281
300
  requireApproval: mcp.require_approval,
282
301
  openaiConnectorId: mcp.openai_connector_id,
283
302
  }),
284
- oauth: mcp.oauth,
303
+ oauth: mcp.use_proxy_secret != null ? undefined : mcp.oauth,
285
304
  }));
286
305
  }
287
306
  }
@@ -24,7 +24,7 @@ export * from './runtime.js';
24
24
  export * from './schema.js';
25
25
  export * from './storage-client.js';
26
26
  export * from './services-client.js';
27
- export * from './secrets-client.js';
27
+ export * from './sqlite-client.js';
28
28
  export * from './stream-controller.js';
29
29
  export * from './sync-client.js';
30
30
  export * from './api_keys.js';
package/dist/esm/index.js CHANGED
@@ -24,7 +24,7 @@ export * from './runtime.js';
24
24
  export * from './schema.js';
25
25
  export * from './storage-client.js';
26
26
  export * from './services-client.js';
27
- export * from './secrets-client.js';
27
+ export * from './sqlite-client.js';
28
28
  export * from './stream-controller.js';
29
29
  export * from './sync-client.js';
30
30
  export * from './api_keys.js';