@letta-ai/letta-agent-sdk 0.8.80 → 0.8.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.
@@ -52,6 +52,13 @@ export declare class CloudEnvironmentSession extends RemoteClientSessionCore {
52
52
  protected initializeRuntimeController(): Promise<RuntimeSessionInit>;
53
53
  private openCloudTransport;
54
54
  private createCloudTransportClient;
55
+ /**
56
+ * Mint one single-use upgrade ticket per status channel, so clients that
57
+ * cannot send WebSocket headers never put the API key in a URL.
58
+ * Returns null only for deprecated query auth against a server that predates
59
+ * ticket issuance, which then falls back to `?token=`.
60
+ */
61
+ private issueStatusWebSocketTickets;
55
62
  private connectCloudTransport;
56
63
  private installTransportHandlers;
57
64
  private cleanupTransportHandlers;
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-session.d.ts","sourceRoot":"","sources":["../src/cloud-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud-session.d.ts","sourceRoot":"","sources":["../src/cloud-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,wBAAwB,CAAC;AAQhD,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAyB5B,OAAO,EACL,uBAAuB,EAGvB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAEV,kBAAkB,EAClB,6BAA6B,EAC7B,2BAA2B,EAI5B,MAAM,YAAY,CAAC;AAKpB,OAAO,EAIL,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAiE5B,KAAK,uBAAuB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAIF;;;;;GAKG;AACH,qBAAa,+BAAgC,SAAQ,KAAK;IAItD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM;IAJjC,QAAQ,CAAC,IAAI,EAAG,yBAAyB,CAAU;gBAGxC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM;CAOlC;AAED,KAAK,gBAAgB,GAAG,OAAO,CAC7B,kBAAkB,EAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAC/C,CAAC;AAiCF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,IAAI,CA0CrF;AAoGD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,kBAAkB,EAChC,qBAAqB,CAAC,EAAE,gBAAgB,GACvC,OAAO,CAAC,MAAM,CAAC,CAgCjB;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,6BAA6B,GACrC,IAAI,CAKN;AAED,qBAAa,uBAAwB,SAAQ,uBAAuB;IAkBhE,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IArB7C,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACjD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,yBAAyB,CAA6B;IAC9D,OAAO,CAAC,2BAA2B,CAA6B;IAChE,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,mBAAmB,CAA+C;IAC1E,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,qBAAqB,CAAqB;IAClD,OAAO,CAAC,sCAAsC,CAAqB;IACnE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA2B;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;gBAG1B,YAAY,EAAE,2BAA2B,EAC1D,IAAI,EAAE,gBAAgB,EACL,SAAS,GAAE,KAAuC;IACnE,2FAA2F;IAC1E,yBAAyB,CAAC,GAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,aAAA;cAkB5D,2BAA2B,IAAI,OAAO,CAAC,kBAAkB,CAAC;YA+CrE,kBAAkB;IAyDhC,OAAO,CAAC,0BAA0B;IAiClC;;;;;OAKG;YACW,2BAA2B;YA+B3B,qBAAqB;IAsDnC,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,wBAAwB;cAOP,oBAAoB,CAC3C,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,kBAAkB,CAAC;YAMhB,yBAAyB;cAepB,yBAAyB,IAAI,IAAI;cAIjC,6BAA6B,IAAI,IAAI;YAI1C,iBAAiB;cAwCN,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;cAUxC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAMtC,2BAA2B;YAO3B,8BAA8B;YAK9B,oCAAoC;cAa/B,WAAW,IAAI,IAAI;cAYb,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxD,OAAO,CAAC,cAAc;YAOR,cAAc;YA0Dd,yBAAyB;YA6CzB,0BAA0B;YAgC1B,qBAAqB;IAenC,OAAO,CAAC,mBAAmB;YAkBb,sBAAsB;YActB,kBAAkB;YAUlB,oBAAoB;YAUpB,2BAA2B;YAc3B,yBAAyB;YASzB,8BAA8B;YAsC9B,oBAAoB;YA2DpB,qBAAqB;YAcrB,yBAAyB;YA4CzB,uBAAuB;YA4BvB,+BAA+B;IA4B7C,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,yBAAyB;YAMnB,qBAAqB;IAuBnC,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,sBAAsB;CAG/B"}
@@ -5,9 +5,12 @@ type CloudStatusTransportOptions = {
5
5
  url: string;
6
6
  WebSocket: LettaCodeSocketConstructor;
7
7
  headers?: Record<string, string>;
8
+ /** Extra per-channel query params, such as single-use upgrade tickets. */
9
+ channelQuery?: Partial<Record<SocketChannel, Record<string, string>>>;
8
10
  pingIntervalMs: number;
9
11
  runtime: RuntimeScope;
10
12
  };
13
+ type SocketChannel = "control" | "stream";
11
14
  type Listener = (event: unknown) => void;
12
15
  /**
13
16
  * Cloud's status relay still exposes separate control and stream sockets.
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-status-transport.d.ts","sourceRoot":"","sources":["../src/cloud-status-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EAEpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,YAAY,CAAC;AASpB,KAAK,2BAA2B,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,0BAA0B,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAGF,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AA4CzC;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,mBAAmB;IAclD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAbpC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAE3C,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,YAAY,CAAS;gBAEA,OAAO,EAAE,2BAA2B;IAiBjE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOxB,KAAK,IAAI,IAAI;IAQb,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IASxD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAI3D,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,IAAI;CAKb;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,2BAA2B,GACnC,0BAA0B,CAM5B"}
1
+ {"version":3,"file":"cloud-status-transport.d.ts","sourceRoot":"","sources":["../src/cloud-status-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EAEpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,YAAY,CAAC;AASpB,KAAK,2BAA2B,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,0BAA0B,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,KAAK,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC1C,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAmDzC;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,mBAAmB;IAclD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAbpC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAE3C,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,YAAY,CAAS;gBAEA,OAAO,EAAE,2BAA2B;IAiBjE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOxB,KAAK,IAAI,IAAI;IAQb,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IASxD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAI3D,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,IAAI;CAKb;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,2BAA2B,GACnC,0BAA0B,CAM5B"}
package/dist/index.js CHANGED
@@ -15738,9 +15738,12 @@ function messageEventData(event) {
15738
15738
  }
15739
15739
  return null;
15740
15740
  }
15741
- function channelUrl(url, channel) {
15741
+ function channelUrl(url, channel, query = {}) {
15742
15742
  const parsed = new URL(url);
15743
15743
  parsed.searchParams.set("channel", channel);
15744
+ for (const [key, value] of Object.entries(query)) {
15745
+ parsed.searchParams.set(key, value);
15746
+ }
15744
15747
  return parsed.toString();
15745
15748
  }
15746
15749
 
@@ -15760,8 +15763,8 @@ class CloudStatusTransport {
15760
15763
  constructor(options) {
15761
15764
  this.options = options;
15762
15765
  const socketOptions = options.headers ? { headers: options.headers } : undefined;
15763
- this.controlSocket = new options.WebSocket(channelUrl(options.url, "control"), socketOptions);
15764
- this.streamSocket = new options.WebSocket(channelUrl(options.url, "stream"), socketOptions);
15766
+ this.controlSocket = new options.WebSocket(channelUrl(options.url, "control", options.channelQuery?.control), socketOptions);
15767
+ this.streamSocket = new options.WebSocket(channelUrl(options.url, "stream", options.channelQuery?.stream), socketOptions);
15765
15768
  this.bindSocket("control", this.controlSocket);
15766
15769
  this.bindSocket("stream", this.streamSocket);
15767
15770
  this.startPing();
@@ -16092,8 +16095,8 @@ function validateCloudClientOptions(options) {
16092
16095
  throw new Error("Letta Cloud clients cannot specify both registerComputer and sandbox options.");
16093
16096
  }
16094
16097
  }
16095
- if (options.webSocketAuth !== undefined && options.webSocketAuth !== "header" && options.webSocketAuth !== "query") {
16096
- throw new Error("Invalid webSocketAuth. Valid values: header, query.");
16098
+ if (options.webSocketAuth !== undefined && options.webSocketAuth !== "header" && options.webSocketAuth !== "ticket" && options.webSocketAuth !== "query") {
16099
+ throw new Error("Invalid webSocketAuth. Valid values: header, ticket, query.");
16097
16100
  }
16098
16101
  }
16099
16102
  function environmentToRemoteTarget(environment) {
@@ -16280,33 +16283,63 @@ class CloudEnvironmentSession extends RemoteClientSessionCore {
16280
16283
  throw error;
16281
16284
  }
16282
16285
  }
16283
- createCloudTransportClient(runtime, connectionId) {
16286
+ createCloudTransportClient(runtime, connectionId, channelTickets) {
16284
16287
  const apiKey = getCloudApiKey(this.cloudOptions);
16288
+ const authMode = this.cloudOptions.webSocketAuth ?? "header";
16285
16289
  const url = buildCloudStatusWebSocketUrl({
16286
16290
  apiBaseUrl: this.cloudOptions.apiBaseUrl,
16287
16291
  connectionId,
16288
16292
  agentId: runtime.agent_id,
16289
16293
  conversationId: runtime.conversation_id,
16290
16294
  apiKey,
16291
- authMode: this.cloudOptions.webSocketAuth ?? "header"
16295
+ authMode: authMode === "query" && !channelTickets ? "query" : "header"
16292
16296
  });
16293
16297
  return applyUniqueRequestIds(createAppServerClient({
16294
16298
  url,
16295
16299
  WebSocket: createCloudStatusTransportConstructor({
16296
16300
  url,
16297
16301
  WebSocket: getWebSocketConstructor(this.cloudOptions.WebSocket),
16298
- ...(this.cloudOptions.webSocketAuth ?? "header") === "header" ? { headers: cloudWebSocketHeaders(this.cloudOptions) } : {},
16302
+ ...authMode === "header" ? { headers: cloudWebSocketHeaders(this.cloudOptions) } : {},
16303
+ ...channelTickets ? { channelQuery: channelTickets } : {},
16299
16304
  pingIntervalMs: this.cloudOptions.pingIntervalMs ?? DEFAULT_PING_INTERVAL_MS,
16300
16305
  runtime
16301
16306
  }),
16302
16307
  requestTimeoutMs: this.cloudOptions.requestTimeoutMs ?? DEFAULT_TURN_TIMEOUT_MS
16303
16308
  }));
16304
16309
  }
16310
+ async issueStatusWebSocketTickets(connectionId) {
16311
+ const authMode = this.cloudOptions.webSocketAuth ?? "header";
16312
+ if (authMode !== "ticket" && authMode !== "query")
16313
+ return null;
16314
+ const path2 = `/v1/environments/${encodeURIComponent(connectionId)}/status/ws-ticket`;
16315
+ const issue = async () => {
16316
+ const body = await this.apiClient.post(path2, { body: {} });
16317
+ const ticket = body?.ticket;
16318
+ if (typeof ticket !== "string" || !ticket) {
16319
+ throw new Error("Cloud status WebSocket ticket response did not include a ticket.");
16320
+ }
16321
+ return ticket;
16322
+ };
16323
+ try {
16324
+ const [control, stream] = await Promise.all([issue(), issue()]);
16325
+ return { control: { ticket: control }, stream: { ticket: stream } };
16326
+ } catch (error) {
16327
+ if (authMode === "query" && isNotFound2(error)) {
16328
+ console.warn(JSON.stringify({
16329
+ event: "cloud_status_websocket_query_auth_fallback",
16330
+ connection_id: connectionId
16331
+ }));
16332
+ return null;
16333
+ }
16334
+ throw error;
16335
+ }
16336
+ }
16305
16337
  async connectCloudTransport(runtime, initialConnectionId) {
16306
16338
  let connectionId = initialConnectionId;
16307
16339
  let lastError;
16308
16340
  for (let attempt = 0;attempt < INITIAL_CLOUD_TRANSPORT_ATTEMPTS; attempt++) {
16309
- const client = this.createCloudTransportClient(runtime, connectionId);
16341
+ const channelTickets = await this.issueStatusWebSocketTickets(connectionId);
16342
+ const client = this.createCloudTransportClient(runtime, connectionId, channelTickets);
16310
16343
  this.installTransportHandlers(client);
16311
16344
  try {
16312
16345
  await client.connect();
@@ -35535,7 +35568,7 @@ class StreamableHTTPClientTransport {
35535
35568
  }
35536
35569
  var DEFAULT_CLIENT_INFO = {
35537
35570
  name: "letta-code",
35538
- version: "0.34.50"
35571
+ version: "0.34.52"
35539
35572
  };
35540
35573
  async function connectMcpServer(config2, options = {}) {
35541
35574
  let client = new Client(options.clientInfo ?? DEFAULT_CLIENT_INFO);
@@ -36563,4 +36596,4 @@ export {
36563
36596
  CloudManagedSandboxExpiredError
36564
36597
  };
36565
36598
 
36566
- //# debugId=FF481D2B70CB9B5D64756E2164756E21
36599
+ //# debugId=BB6433083B4BC9C464756E2164756E21