@letta-ai/letta-agent-sdk 0.8.2 → 0.8.3

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.
@@ -102,6 +102,9 @@ export type TurnTracker = {
102
102
  observedTurnEvidence: boolean;
103
103
  observedRequiresApprovalStop: boolean;
104
104
  pendingTerminal: RuntimeTurnResult | null;
105
+ pendingTerminalTimeout: ReturnType<typeof setTimeout> | null;
106
+ deferredMessages: ProtocolMessage[];
107
+ deferredTurnEvidence: boolean;
105
108
  abortRequested: boolean;
106
109
  timeout: ReturnType<typeof setTimeout> | null;
107
110
  };
@@ -1 +1 @@
1
- {"version":3,"file":"remote-session-protocol.d.ts","sourceRoot":"","sources":["../src/remote-session-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-session-protocol.d.ts","sourceRoot":"","sources":["../src/remote-session-protocol.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,7 @@ export declare class RemoteTurnCoordinator {
60
60
  private handleLoopStatusMessage;
61
61
  private handleTurnFinished;
62
62
  private handleTurnTerminalDelta;
63
+ private schedulePendingTerminal;
63
64
  private transformStreamDelta;
64
65
  private resultFromTurn;
65
66
  private enqueue;
@@ -1 +1 @@
1
- {"version":3,"file":"remote-turn-coordinator.d.ts","sourceRoot":"","sources":["../src/remote-turn-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,UAAU,EAIV,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAsBL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AAEtC,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACnD,CAAC;AAIF;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,oBAAoB,CAAK;gBAErB,MAAM,EAAE,2BAA2B;IAO/C,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;IA2BtE,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAU1C,kBAAkB,IAAI,IAAI;IAI1B,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IA4C5E,WAAW,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASzC;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAqBpC,KAAK,IAAI,IAAI;IAYb,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,QAAQ;IA0BhB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,uBAAuB;IAkD/B,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,uBAAuB;IAwC/B,OAAO,CAAC,oBAAoB;IA0K5B,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,UAAU;CAKnB"}
1
+ {"version":3,"file":"remote-turn-coordinator.d.ts","sourceRoot":"","sources":["../src/remote-turn-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,UAAU,EAIV,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAsBL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AAEtC,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACnD,CAAC;AAKF;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,oBAAoB,CAAK;gBAErB,MAAM,EAAE,2BAA2B;IAO/C,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;IA8BtE,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAW1C,kBAAkB,IAAI,IAAI;IAI1B,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAyF5E,WAAW,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASzC;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA0BpC,KAAK,IAAI,IAAI;IAgBb,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,QAAQ;IA0BhB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,uBAAuB;IAkD/B,OAAO,CAAC,kBAAkB;IAiD1B,OAAO,CAAC,uBAAuB;IA0C/B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,oBAAoB;IA0K5B,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,UAAU;CAKnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-agent-sdk",
3
- "version": "0.8.2",
3
+ "version": "0.8.3",
4
4
  "packageManager": "bun@1.3.0",
5
5
  "description": "SDK for programmatic control of Letta agents",
6
6
  "type": "module",
@@ -2,6 +2,8 @@
2
2
  export interface GitHubRepositoryRef {
3
3
  owner: string;
4
4
  repo: string;
5
+ /** Exact commit to check out after cloning. Omit to use the default branch tip. */
6
+ commit?: string;
5
7
  }
6
8
 
7
9
  export interface LettaCodeCloudSandboxOptions {
@@ -36,6 +38,7 @@ const MAX_TTL_MINUTES = 60;
36
38
  const MAX_GITHUB_REPOSITORIES = 10;
37
39
  const GITHUB_OWNER_PATTERN = /^[A-Za-z0-9-]+$/;
38
40
  const GITHUB_REPOSITORY_PATTERN = /^[A-Za-z0-9._-]+$/;
41
+ const GITHUB_COMMIT_PATTERN = /^[0-9a-fA-F]{40}$/;
39
42
 
40
43
  function validatePositiveInteger(value: number | undefined, name: string): void {
41
44
  if (value !== undefined && (!Number.isInteger(value) || value <= 0)) {
@@ -105,6 +108,15 @@ export function validateCloudSandboxOptions(
105
108
  `Invalid ${name}.githubRepositories[${index}].repo.`,
106
109
  );
107
110
  }
111
+ if (
112
+ repository.commit !== undefined &&
113
+ (typeof repository.commit !== "string" ||
114
+ !GITHUB_COMMIT_PATTERN.test(repository.commit))
115
+ ) {
116
+ throw new Error(
117
+ `Invalid ${name}.githubRepositories[${index}].commit. Expected a full Git commit SHA.`,
118
+ );
119
+ }
108
120
  }
109
121
  }
110
122
 
@@ -151,6 +151,9 @@ export type TurnTracker = {
151
151
  observedTurnEvidence: boolean;
152
152
  observedRequiresApprovalStop: boolean;
153
153
  pendingTerminal: RuntimeTurnResult | null;
154
+ pendingTerminalTimeout: ReturnType<typeof setTimeout> | null;
155
+ deferredMessages: ProtocolMessage[];
156
+ deferredTurnEvidence: boolean;
154
157
  abortRequested: boolean;
155
158
  timeout: ReturnType<typeof setTimeout> | null;
156
159
  };
@@ -43,6 +43,7 @@ type RemoteTurnCoordinatorConfig = {
43
43
  };
44
44
 
45
45
  const MAX_RECENTLY_SETTLED_RUN_IDS = 256;
46
+ const TRAILING_USAGE_GRACE_MS = 100;
46
47
 
47
48
  /**
48
49
  * Owns the portable session's turn correlation and stream queue.
@@ -102,6 +103,9 @@ export class RemoteTurnCoordinator {
102
103
  observedTurnEvidence: false,
103
104
  observedRequiresApprovalStop: false,
104
105
  pendingTerminal: null,
106
+ pendingTerminalTimeout: null,
107
+ deferredMessages: [],
108
+ deferredTurnEvidence: false,
105
109
  abortRequested: false,
106
110
  timeout: null,
107
111
  };
@@ -116,6 +120,7 @@ export class RemoteTurnCoordinator {
116
120
 
117
121
  removeTrackedTurn(turn: TurnTracker): void {
118
122
  if (turn.timeout) clearTimeout(turn.timeout);
123
+ if (turn.pendingTerminalTimeout) clearTimeout(turn.pendingTerminalTimeout);
119
124
  if (this.activeTurn === turn) {
120
125
  this.activeTurn = null;
121
126
  return;
@@ -147,6 +152,45 @@ export class RemoteTurnCoordinator {
147
152
  return;
148
153
  }
149
154
 
155
+ const deferredDelta = streamDeltaRecord(message);
156
+ const deferredMessageType = deferredDelta
157
+ ? streamDeltaMessageType(deferredDelta)
158
+ : undefined;
159
+ const trailingUsageTurn = this.activeTurn?.pendingTerminalTimeout
160
+ ? this.activeTurn
161
+ : null;
162
+ if (trailingUsageTurn) {
163
+ const statusRunIds = message.type === "update_loop_status"
164
+ ? loopStatusRunIds(message)
165
+ : [];
166
+ const belongsToTerminalTurn =
167
+ message.type === "update_loop_status" &&
168
+ statusRunIds.length > 0 &&
169
+ statusRunIds.every((runId) => trailingUsageTurn.runIds.has(runId));
170
+ if (belongsToTerminalTurn) {
171
+ this.handleLoopStatusMessage(message);
172
+ return;
173
+ }
174
+ if (message.type === "update_loop_status" && statusRunIds.length === 0) {
175
+ trailingUsageTurn.deferredMessages.push(message);
176
+ return;
177
+ }
178
+ const isTurnScoped =
179
+ (deferredDelta !== null && deferredMessageType !== "ping") ||
180
+ message.type === "update_loop_status" ||
181
+ turnFinishedRecord(message) !== null;
182
+ if (
183
+ (isTurnScoped && deferredMessageType !== "usage_statistics") ||
184
+ (deferredMessageType === "usage_statistics" && trailingUsageTurn.deferredTurnEvidence)
185
+ ) {
186
+ trailingUsageTurn.deferredMessages.push(message);
187
+ if (isTurnScoped && deferredMessageType !== "usage_statistics") {
188
+ trailingUsageTurn.deferredTurnEvidence = true;
189
+ }
190
+ return;
191
+ }
192
+ }
193
+
150
194
  if (message.type === "update_loop_status") {
151
195
  this.handleLoopStatusMessage(message);
152
196
  return;
@@ -160,7 +204,13 @@ export class RemoteTurnCoordinator {
160
204
 
161
205
  const delta = streamDeltaRecord(message);
162
206
  if (!delta) return;
163
- const active = this.activateNextTurnFromProtocol();
207
+ const messageType = streamDeltaMessageType(delta);
208
+ // Terminal metadata can trail the result it belongs to. It must never
209
+ // activate a queued turn or become evidence for that next turn.
210
+ const active =
211
+ messageType === "usage_statistics" || messageType === "stop_reason"
212
+ ? this.activeTurn
213
+ : this.activateNextTurnFromProtocol();
164
214
  if (active) {
165
215
  active.observedTurnEvidence = true;
166
216
  const runId = streamDeltaRunId(delta);
@@ -192,13 +242,18 @@ export class RemoteTurnCoordinator {
192
242
  */
193
243
  closeWithError(detail: string): void {
194
244
  if (this.closed) return;
245
+ let completedCanonicalTurn = false;
246
+ while (this.activeTurn?.pendingTerminal && this.activeTurn.pendingTerminalTimeout) {
247
+ this.completeActiveTurn(this.activeTurn.pendingTerminal);
248
+ completedCanonicalTurn = true;
249
+ }
195
250
  const active = this.activeTurn;
196
251
  if (active) {
197
252
  this.failTurn(active, detail, {
198
253
  errorCode: "stream_closed",
199
254
  recoverable: true,
200
255
  });
201
- } else {
256
+ } else if (!completedCanonicalTurn) {
202
257
  this.enqueue({
203
258
  type: "error",
204
259
  message: detail,
@@ -215,8 +270,12 @@ export class RemoteTurnCoordinator {
215
270
  if (this.closed) return;
216
271
  this.closed = true;
217
272
  if (this.activeTurn?.timeout) clearTimeout(this.activeTurn.timeout);
273
+ if (this.activeTurn?.pendingTerminalTimeout) {
274
+ clearTimeout(this.activeTurn.pendingTerminalTimeout);
275
+ }
218
276
  for (const turn of this.pendingTurns) {
219
277
  if (turn.timeout) clearTimeout(turn.timeout);
278
+ if (turn.pendingTerminalTimeout) clearTimeout(turn.pendingTerminalTimeout);
220
279
  }
221
280
  this.activeTurn = null;
222
281
  this.pendingTurns.length = 0;
@@ -276,9 +335,17 @@ export class RemoteTurnCoordinator {
276
335
  clearTimeout(active.timeout);
277
336
  active.timeout = null;
278
337
  }
338
+ if (active.pendingTerminalTimeout) {
339
+ clearTimeout(active.pendingTerminalTimeout);
340
+ active.pendingTerminalTimeout = null;
341
+ }
342
+ const deferredMessages = active.deferredMessages.splice(0);
279
343
  this.rememberSettledRunIds(active.runIds);
280
344
  this.enqueue(this.resultFromTurn(turn, active));
281
345
  this.activeTurn = null;
346
+ for (const message of deferredMessages) {
347
+ this.handleProtocolMessage(message, active.runtime);
348
+ }
282
349
  }
283
350
 
284
351
  private rememberSettledRunIds(runIds: Iterable<string>): void {
@@ -347,9 +414,10 @@ export class RemoteTurnCoordinator {
347
414
  stopReason: string;
348
415
  error?: string;
349
416
  }): void {
350
- const active = this.activeTurn;
351
- if (!active || !finished.runId) return;
417
+ if (!finished.runId) return;
352
418
  if (this.settledRunIds.has(finished.runId)) return;
419
+ const active = this.activeTurn ?? this.activateNextTurnFromProtocol();
420
+ if (!active) return;
353
421
  if (
354
422
  active.runIds.size > 0 &&
355
423
  !active.runIds.has(finished.runId)
@@ -380,6 +448,11 @@ export class RemoteTurnCoordinator {
380
448
  } satisfies RuntimeTurnResult;
381
449
  if (active.pendingTerminal) {
382
450
  active.pendingTerminal = terminal;
451
+ if (active.timeout) {
452
+ clearTimeout(active.timeout);
453
+ active.timeout = null;
454
+ }
455
+ this.schedulePendingTerminal(active);
383
456
  return;
384
457
  }
385
458
  this.completeActiveTurn(terminal);
@@ -409,7 +482,9 @@ export class RemoteTurnCoordinator {
409
482
  }
410
483
 
411
484
  if (messageType === "usage_statistics" && active.pendingTerminal) {
412
- this.completeActiveTurn(active.pendingTerminal);
485
+ if (active.pendingTerminalTimeout) {
486
+ this.completeActiveTurn(active.pendingTerminal);
487
+ }
413
488
  return;
414
489
  }
415
490
 
@@ -425,6 +500,15 @@ export class RemoteTurnCoordinator {
425
500
  }
426
501
  }
427
502
 
503
+ private schedulePendingTerminal(active: TurnTracker): void {
504
+ if (active.pendingTerminalTimeout) return;
505
+ active.pendingTerminalTimeout = setTimeout(() => {
506
+ if (this.activeTurn !== active || !active.pendingTerminal) return;
507
+ this.completeActiveTurn(active.pendingTerminal);
508
+ }, TRAILING_USAGE_GRACE_MS);
509
+ (active.pendingTerminalTimeout as { unref?: () => void }).unref?.();
510
+ }
511
+
428
512
  private transformStreamDelta(
429
513
  delta: Record<string, unknown>,
430
514
  ): SDKMessage | null {