@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
@@ -174,30 +174,19 @@ export class Connector {
174
174
  if (connector == null && this.oauth == null) {
175
175
  return true;
176
176
  }
177
- const token = await room.secrets.getOfflineOAuthToken({
178
- connector,
179
- oauth: this.oauth,
180
- delegatedTo: agentName,
181
- });
182
- return token != null;
177
+ void room;
178
+ void agentName;
179
+ throw new Error("OAuth MCP connections require proxy-backed user secrets");
183
180
  }
184
181
  async authenticate(client, agent, redirectUri) {
185
182
  const connector = this.buildConnectorRef();
186
183
  if (connector == null && this.oauth == null) {
187
184
  return null;
188
185
  }
189
- const localParticipant = client.localParticipant;
190
- if (localParticipant == null) {
191
- throw new Error("Connector.authenticate requires a local participant");
192
- }
193
- const agentName = agent.getAttribute("name");
194
- return await client.secrets.requestOAuthToken({
195
- fromParticipantId: localParticipant.id,
196
- connector,
197
- oauth: this.oauth,
198
- redirectUri,
199
- delegateTo: agentName == null ? null : String(agentName),
200
- });
186
+ void client;
187
+ void agent;
188
+ void redirectUri;
189
+ throw new Error("OAuth MCP connections require proxy-backed user secrets");
201
190
  }
202
191
  }
203
192
  function headersFromEndpointSpec(headers) {
@@ -252,7 +241,25 @@ function roomServiceMcpServerUrl({ service, port, endpoint, }) {
252
241
  const fragment = baseUrl.hash;
253
242
  return `${baseUrl.protocol}//${userInfo}${bracketIpv6Host(baseUrl.hostname)}:${portValue}${joinedPath}${query}${fragment}`;
254
243
  }
255
- export function mcpConnectorsFromRoomServices({ services, agentName, }) {
244
+ function proxyMcpServerUrl({ serverUrl, useProxySecret, proxyConfig, }) {
245
+ const secretId = useProxySecret?.trim();
246
+ if (serverUrl == null || secretId == null || secretId.length === 0 || proxyConfig == null) {
247
+ return serverUrl;
248
+ }
249
+ const apiUrl = proxyConfig.apiUrl.trim().replace(/\/+$/, "");
250
+ if (apiUrl.length === 0 || proxyConfig.apiKey.trim().length === 0) {
251
+ throw new Error("meshagent_proxy_config requires apiUrl and apiKey");
252
+ }
253
+ const url = new URL(`${apiUrl}/proxy-request`);
254
+ url.searchParams.set("url", serverUrl);
255
+ url.searchParams.set("secret-id", secretId);
256
+ const user = proxyConfig.user?.trim();
257
+ if (user != null && user.length > 0) {
258
+ url.searchParams.set("user", user);
259
+ }
260
+ return url.toString();
261
+ }
262
+ export function mcpConnectorsFromRoomServices({ services, agentName, meshagentProxyConfig, }) {
256
263
  const connectors = [];
257
264
  for (const service of services) {
258
265
  const filter = service.metadata.annotations?.["meshagent.agent.filter"];
@@ -269,12 +276,24 @@ export function mcpConnectorsFromRoomServices({ services, agentName, }) {
269
276
  name: mcp.label,
270
277
  server: new MCPServer({
271
278
  serverLabel: mcp.label,
272
- serverUrl: roomServiceMcpServerUrl({ service, port, endpoint }),
273
- headers: headersFromEndpointSpec(mcp.headers),
279
+ serverUrl: proxyMcpServerUrl({
280
+ serverUrl: roomServiceMcpServerUrl({ service, port, endpoint }),
281
+ useProxySecret: mcp.use_proxy_secret,
282
+ proxyConfig: meshagentProxyConfig,
283
+ }),
284
+ headers: mcp.use_proxy_secret != null && meshagentProxyConfig != null
285
+ ? [
286
+ ...(headersFromEndpointSpec(mcp.headers) ?? []),
287
+ new MCPHeader({
288
+ name: "Authorization",
289
+ value: `Bearer ${meshagentProxyConfig.apiKey}`,
290
+ }),
291
+ ]
292
+ : headersFromEndpointSpec(mcp.headers),
274
293
  requireApproval: mcp.require_approval,
275
294
  openaiConnectorId: mcp.openai_connector_id,
276
295
  }),
277
- oauth: mcp.oauth,
296
+ oauth: mcp.use_proxy_secret != null ? undefined : mcp.oauth,
278
297
  }));
279
298
  }
280
299
  }
@@ -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';
@@ -40,7 +40,7 @@ __exportStar(require("./runtime.js"), exports);
40
40
  __exportStar(require("./schema.js"), exports);
41
41
  __exportStar(require("./storage-client.js"), exports);
42
42
  __exportStar(require("./services-client.js"), exports);
43
- __exportStar(require("./secrets-client.js"), exports);
43
+ __exportStar(require("./sqlite-client.js"), exports);
44
44
  __exportStar(require("./stream-controller.js"), exports);
45
45
  __exportStar(require("./sync-client.js"), exports);
46
46
  __exportStar(require("./api_keys.js"), exports);