@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.
- package/dist/client-entry.js +77 -6
- package/dist/client-entry.js.map +5 -5
- package/dist/cloud-sandbox.d.ts +2 -0
- package/dist/cloud-sandbox.d.ts.map +1 -1
- package/dist/index.js +77 -6
- package/dist/index.js.map +5 -5
- package/dist/remote-session-protocol.d.ts +3 -0
- package/dist/remote-session-protocol.d.ts.map +1 -1
- package/dist/remote-turn-coordinator.d.ts +1 -0
- package/dist/remote-turn-coordinator.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/cloud-sandbox.ts +12 -0
- package/src/remote-session-protocol.ts +3 -0
- package/src/remote-turn-coordinator.ts +89 -5
|
@@ -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;
|
|
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
package/src/cloud-sandbox.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|