@opengeni/sdk 0.3.1 → 0.4.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.
- package/dist/index.d.ts +628 -5
- package/dist/index.js +261 -3
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/client.ts +185 -0
- package/src/desktop.ts +152 -0
- package/src/index.ts +98 -0
- package/src/terminal.ts +91 -0
- package/src/types.ts +359 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,128 @@
|
|
|
1
1
|
type SessionStatus = "queued" | "running" | "idle" | "requires_action" | "failed" | "cancelled";
|
|
2
|
-
type SandboxBackend = "docker" | "modal" | "local" | "none";
|
|
2
|
+
type SandboxBackend = "docker" | "modal" | "local" | "none" | "daytona" | "runloop" | "e2b" | "blaxel" | "cloudflare" | "vercel";
|
|
3
|
+
type SandboxOs = "linux" | "macos" | "windows";
|
|
4
|
+
type SandboxCapabilityName = "FileSystem" | "Terminal" | "Git" | "DesktopStream" | "Recording";
|
|
5
|
+
type CapabilityUnavailableReason = "backend_unsupported" | "os_unsupported" | "not_provisioned" | "disabled_by_policy" | "lease_cold" | "tier_headless";
|
|
6
|
+
type SessionCapabilities = {
|
|
7
|
+
sessionId: string;
|
|
8
|
+
backend: SandboxBackend;
|
|
9
|
+
os: SandboxOs;
|
|
10
|
+
liveness: "cold" | "warming" | "warm" | "draining";
|
|
11
|
+
leaseEpoch: number;
|
|
12
|
+
viewerHeartbeatIntervalMs: number;
|
|
13
|
+
FileSystem: {
|
|
14
|
+
available: boolean;
|
|
15
|
+
readOnly: boolean;
|
|
16
|
+
root: string;
|
|
17
|
+
pathSep: "/" | "\\";
|
|
18
|
+
treeMode: "lazy" | "snapshot";
|
|
19
|
+
reason: CapabilityUnavailableReason | null;
|
|
20
|
+
};
|
|
21
|
+
Terminal: {
|
|
22
|
+
transport: "sse-events" | "pty-ws" | null;
|
|
23
|
+
ptyCapable: boolean;
|
|
24
|
+
shell: string;
|
|
25
|
+
url: string | null;
|
|
26
|
+
token: string | null;
|
|
27
|
+
reason: CapabilityUnavailableReason | null;
|
|
28
|
+
};
|
|
29
|
+
Git: {
|
|
30
|
+
available: boolean;
|
|
31
|
+
repos: string[];
|
|
32
|
+
reason: CapabilityUnavailableReason | null;
|
|
33
|
+
};
|
|
34
|
+
DesktopStream: {
|
|
35
|
+
transport: "vnc-ws" | "rdp-ws" | "webrtc" | null;
|
|
36
|
+
client: "novnc" | "web-rdp" | null;
|
|
37
|
+
mode: "read-only" | "interactive";
|
|
38
|
+
url: string | null;
|
|
39
|
+
token: string | null;
|
|
40
|
+
expiresAt: string | null;
|
|
41
|
+
resolution: [number, number];
|
|
42
|
+
unredacted: boolean;
|
|
43
|
+
requiresAcknowledgment: boolean;
|
|
44
|
+
acknowledged: boolean;
|
|
45
|
+
shared: boolean;
|
|
46
|
+
sharedSessionIds: string[];
|
|
47
|
+
reason: CapabilityUnavailableReason | null;
|
|
48
|
+
};
|
|
49
|
+
Recording: {
|
|
50
|
+
available: boolean;
|
|
51
|
+
modes: ("manual" | "on-turn" | "on-verify")[];
|
|
52
|
+
codecs: ("h264-mp4" | "vp9-webm")[];
|
|
53
|
+
reason: CapabilityUnavailableReason | null;
|
|
54
|
+
};
|
|
55
|
+
ComputerUse: {
|
|
56
|
+
available: boolean;
|
|
57
|
+
readOnly: boolean;
|
|
58
|
+
reason: CapabilityUnavailableReason | null;
|
|
59
|
+
};
|
|
60
|
+
negotiatedAt: string;
|
|
61
|
+
};
|
|
62
|
+
type FileSystemCapability = SessionCapabilities["FileSystem"];
|
|
63
|
+
type TerminalCapability = SessionCapabilities["Terminal"];
|
|
64
|
+
type GitCapability = SessionCapabilities["Git"];
|
|
65
|
+
type DesktopStreamCapability = SessionCapabilities["DesktopStream"];
|
|
66
|
+
type RecordingCapability = SessionCapabilities["Recording"];
|
|
67
|
+
type ComputerUseCapability = SessionCapabilities["ComputerUse"];
|
|
68
|
+
type StreamUrlRotatedPayload = {
|
|
69
|
+
url: string;
|
|
70
|
+
token: string | null;
|
|
71
|
+
expiresAt: string | null;
|
|
72
|
+
leaseEpoch: number;
|
|
73
|
+
transport: "vnc-ws";
|
|
74
|
+
viewerId: string | null;
|
|
75
|
+
};
|
|
76
|
+
type StreamOpenedPayload = {
|
|
77
|
+
viewerId: string;
|
|
78
|
+
shared: boolean;
|
|
79
|
+
viewerCount: number;
|
|
80
|
+
};
|
|
81
|
+
type StreamClosedPayload = {
|
|
82
|
+
viewerId: string;
|
|
83
|
+
reason: "client-disconnect" | "reaped" | "revoked" | "box-rollover";
|
|
84
|
+
viewerCount: number;
|
|
85
|
+
};
|
|
86
|
+
type StreamRevokedPayload = {
|
|
87
|
+
viewerId: string | null;
|
|
88
|
+
reason: "grant-revoked" | "session-failed" | "admin";
|
|
89
|
+
};
|
|
90
|
+
type AttachViewerRequest = {
|
|
91
|
+
viewerId?: string | undefined;
|
|
92
|
+
desktop?: boolean | undefined;
|
|
93
|
+
};
|
|
94
|
+
type ViewerHolder = {
|
|
95
|
+
viewerId: string;
|
|
96
|
+
sandboxGroupId: string;
|
|
97
|
+
liveness: "cold" | "warming" | "warm" | "draining";
|
|
98
|
+
leaseEpoch: number;
|
|
99
|
+
viewerHeartbeatIntervalMs: number;
|
|
100
|
+
dataPlaneUrl: string | null;
|
|
101
|
+
};
|
|
102
|
+
type AttachViewerResponse = ViewerHolder & {
|
|
103
|
+
streamToken: string | null;
|
|
104
|
+
streamExpiresAt: string | null;
|
|
105
|
+
resolution: [number, number] | null;
|
|
106
|
+
transport: "vnc-ws" | null;
|
|
107
|
+
client: "novnc" | null;
|
|
108
|
+
terminalUrl: string | null;
|
|
109
|
+
terminalToken: string | null;
|
|
110
|
+
terminalTransport: "pty-ws" | null;
|
|
111
|
+
};
|
|
112
|
+
type AcknowledgeStreamRequest = {
|
|
113
|
+
acknowledgeUnredacted?: boolean | undefined;
|
|
114
|
+
acknowledgeShared?: boolean | undefined;
|
|
115
|
+
};
|
|
116
|
+
type AcknowledgeStreamResponse = {
|
|
117
|
+
acknowledged: boolean;
|
|
118
|
+
acknowledgedShared: boolean;
|
|
119
|
+
};
|
|
120
|
+
type ViewerHeartbeatRequest = {
|
|
121
|
+
leaseEpoch: number;
|
|
122
|
+
};
|
|
123
|
+
type ViewerHeartbeatResponse = {
|
|
124
|
+
alive: boolean;
|
|
125
|
+
};
|
|
3
126
|
type ReasoningEffort = "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
4
127
|
type RepositoryResourceRef = {
|
|
5
128
|
kind: "repository";
|
|
@@ -68,7 +191,7 @@ type SessionTurn = {
|
|
|
68
191
|
createdAt: string;
|
|
69
192
|
updatedAt: string;
|
|
70
193
|
};
|
|
71
|
-
declare const SESSION_EVENT_TYPES: readonly ["session.created", "session.status.changed", "session.requiresAction", "session.context.compacted", "session.context.cleared", "user.message", "user.interrupt", "user.approvalDecision", "turn.queued", "turn.updated", "turn.started", "turn.completed", "turn.failed", "turn.cancelled", "turn.preempted", "agent.message.delta", "agent.message.completed", "agent.reasoning.delta", "agent.toolCall.created", "agent.toolCall.output", "agent.updated", "sandbox.operation.started", "sandbox.operation.completed", "sandbox.operation.failed", "sandbox.command.output.delta", "artifact.created", "goal.set", "goal.updated", "goal.completed", "goal.paused", "goal.resumed", "goal.continuation"];
|
|
194
|
+
declare const SESSION_EVENT_TYPES: readonly ["session.created", "session.status.changed", "session.requiresAction", "session.context.compacted", "session.context.cleared", "user.message", "user.interrupt", "user.approvalDecision", "turn.queued", "turn.updated", "turn.started", "turn.completed", "turn.failed", "turn.cancelled", "turn.preempted", "agent.message.delta", "agent.message.completed", "agent.reasoning.delta", "agent.toolCall.created", "agent.toolCall.output", "agent.updated", "sandbox.operation.started", "sandbox.operation.completed", "sandbox.operation.failed", "sandbox.command.output.delta", "artifact.created", "goal.set", "goal.updated", "goal.completed", "goal.paused", "goal.resumed", "goal.continuation", "stream.url.rotated", "stream.opened", "stream.closed", "stream.revoked", "recording.started", "recording.available", "recording.failed", "fs.changed", "git.changed", "terminal.pty.started", "terminal.pty.output.delta", "terminal.pty.exited"];
|
|
72
195
|
type KnownSessionEventType = (typeof SESSION_EVENT_TYPES)[number];
|
|
73
196
|
/**
|
|
74
197
|
* Event types the SDK knows about today, kept open so a newer OpenGeni server
|
|
@@ -106,6 +229,319 @@ type AgentToolCallOutputPayload = {
|
|
|
106
229
|
type SessionStatusChangedPayload = {
|
|
107
230
|
status: SessionStatus;
|
|
108
231
|
};
|
|
232
|
+
type RecordingMode = "manual" | "on-turn" | "on-verify";
|
|
233
|
+
type RecordingCodec = "h264-mp4" | "vp9-webm";
|
|
234
|
+
type RecordingContentType = "video/mp4" | "video/webm";
|
|
235
|
+
type RecordingFailedReason = "ffmpeg-error" | "box-death" | "box-rollover" | "upload-failed" | "max-bytes-exceeded" | "display-unavailable";
|
|
236
|
+
type RecordingStartedPayload = {
|
|
237
|
+
recordingId: string;
|
|
238
|
+
turnId: string | null;
|
|
239
|
+
mode: RecordingMode;
|
|
240
|
+
codec: RecordingCodec;
|
|
241
|
+
dimensions: [number, number];
|
|
242
|
+
framerate: number;
|
|
243
|
+
startedAt: string;
|
|
244
|
+
reason?: string | null | undefined;
|
|
245
|
+
};
|
|
246
|
+
type RecordingAvailablePayload = {
|
|
247
|
+
recordingId: string;
|
|
248
|
+
turnId: string | null;
|
|
249
|
+
codec: RecordingCodec;
|
|
250
|
+
contentType: RecordingContentType;
|
|
251
|
+
storageKey: string;
|
|
252
|
+
durationSeconds: number | null;
|
|
253
|
+
sizeBytes: number;
|
|
254
|
+
dimensions: [number, number];
|
|
255
|
+
};
|
|
256
|
+
type RecordingFailedPayload = {
|
|
257
|
+
recordingId: string;
|
|
258
|
+
turnId: string | null;
|
|
259
|
+
reason: RecordingFailedReason;
|
|
260
|
+
detail?: string | null | undefined;
|
|
261
|
+
};
|
|
262
|
+
type SandboxCommandOutputDeltaPayload = {
|
|
263
|
+
stream: "stdout" | "stderr";
|
|
264
|
+
chunk: string;
|
|
265
|
+
commandId?: string | undefined;
|
|
266
|
+
seq?: number | undefined;
|
|
267
|
+
};
|
|
268
|
+
type FsChangeKind = "created" | "modified" | "deleted" | "renamed";
|
|
269
|
+
type FsChangedPayload = {
|
|
270
|
+
changes: {
|
|
271
|
+
path: string;
|
|
272
|
+
kind: FsChangeKind;
|
|
273
|
+
isDir: boolean;
|
|
274
|
+
sizeBytes: number | null;
|
|
275
|
+
oldPath?: string | undefined;
|
|
276
|
+
}[];
|
|
277
|
+
source: "write" | "watch" | "agent";
|
|
278
|
+
revision: number;
|
|
279
|
+
leaseEpoch: number;
|
|
280
|
+
};
|
|
281
|
+
type GitChangedPayload = {
|
|
282
|
+
head: string | null;
|
|
283
|
+
dirty: boolean;
|
|
284
|
+
ahead: number;
|
|
285
|
+
behind: number;
|
|
286
|
+
changedFileCount: number;
|
|
287
|
+
reason: "commit" | "checkout" | "stage" | "worktree" | "fetch" | "unknown";
|
|
288
|
+
revision: number;
|
|
289
|
+
leaseEpoch: number;
|
|
290
|
+
};
|
|
291
|
+
type TerminalPtyStartedPayload = {
|
|
292
|
+
ptyId: string;
|
|
293
|
+
cols: number;
|
|
294
|
+
rows: number;
|
|
295
|
+
shell: string;
|
|
296
|
+
cwd: string;
|
|
297
|
+
};
|
|
298
|
+
type TerminalPtyOutputDeltaPayload = {
|
|
299
|
+
ptyId: string;
|
|
300
|
+
stream: "stdout" | "stderr";
|
|
301
|
+
chunk: string;
|
|
302
|
+
seq: number;
|
|
303
|
+
};
|
|
304
|
+
type TerminalPtyExitedPayload = {
|
|
305
|
+
ptyId: string;
|
|
306
|
+
exitCode: number | null;
|
|
307
|
+
reason: "exit" | "killed" | "owner_gone" | "timeout";
|
|
308
|
+
};
|
|
309
|
+
type FsNodeType = "file" | "dir" | "symlink" | "other";
|
|
310
|
+
type FsTreeNode = {
|
|
311
|
+
name: string;
|
|
312
|
+
path: string;
|
|
313
|
+
type: FsNodeType;
|
|
314
|
+
sizeBytes: number | null;
|
|
315
|
+
mtimeMs: number | null;
|
|
316
|
+
mode: number | null;
|
|
317
|
+
children?: FsTreeNode[] | undefined;
|
|
318
|
+
truncated: boolean;
|
|
319
|
+
};
|
|
320
|
+
type FsEncoding = "utf8" | "base64";
|
|
321
|
+
type FsListRequest = {
|
|
322
|
+
path?: string;
|
|
323
|
+
depth?: number;
|
|
324
|
+
maxEntries?: number;
|
|
325
|
+
includeHidden?: boolean;
|
|
326
|
+
};
|
|
327
|
+
type FsListResponse = {
|
|
328
|
+
root: FsTreeNode;
|
|
329
|
+
revision: number;
|
|
330
|
+
truncated: boolean;
|
|
331
|
+
};
|
|
332
|
+
type FsReadRequest = {
|
|
333
|
+
path: string;
|
|
334
|
+
encoding?: FsEncoding;
|
|
335
|
+
maxBytes?: number;
|
|
336
|
+
};
|
|
337
|
+
type FsReadResponse = {
|
|
338
|
+
path: string;
|
|
339
|
+
encoding: FsEncoding;
|
|
340
|
+
content: string;
|
|
341
|
+
sizeBytes: number;
|
|
342
|
+
truncated: boolean;
|
|
343
|
+
isBinary: boolean;
|
|
344
|
+
revision: number;
|
|
345
|
+
};
|
|
346
|
+
type FsWriteRequest = {
|
|
347
|
+
path: string;
|
|
348
|
+
encoding?: FsEncoding;
|
|
349
|
+
content: string;
|
|
350
|
+
overwrite?: boolean;
|
|
351
|
+
createParents?: boolean;
|
|
352
|
+
};
|
|
353
|
+
type FsWriteResponse = {
|
|
354
|
+
path: string;
|
|
355
|
+
sizeBytes: number;
|
|
356
|
+
revision: number;
|
|
357
|
+
};
|
|
358
|
+
type FsDeleteRequest = {
|
|
359
|
+
path: string;
|
|
360
|
+
recursive?: boolean;
|
|
361
|
+
};
|
|
362
|
+
type FsDeleteResponse = {
|
|
363
|
+
revision: number;
|
|
364
|
+
};
|
|
365
|
+
type FsMoveRequest = {
|
|
366
|
+
path: string;
|
|
367
|
+
newPath: string;
|
|
368
|
+
overwrite?: boolean;
|
|
369
|
+
createParents?: boolean;
|
|
370
|
+
};
|
|
371
|
+
type FsMoveResponse = {
|
|
372
|
+
path: string;
|
|
373
|
+
newPath: string;
|
|
374
|
+
revision: number;
|
|
375
|
+
};
|
|
376
|
+
type FsMkdirRequest = {
|
|
377
|
+
path: string;
|
|
378
|
+
recursive?: boolean;
|
|
379
|
+
};
|
|
380
|
+
type FsMkdirResponse = {
|
|
381
|
+
path: string;
|
|
382
|
+
revision: number;
|
|
383
|
+
};
|
|
384
|
+
type GitFileStatusCode = "added" | "modified" | "deleted" | "renamed" | "copied" | "untracked" | "ignored" | "conflicted" | "typechange";
|
|
385
|
+
type GitFileStatus = {
|
|
386
|
+
path: string;
|
|
387
|
+
oldPath: string | null;
|
|
388
|
+
index: GitFileStatusCode | null;
|
|
389
|
+
worktree: GitFileStatusCode | null;
|
|
390
|
+
isConflicted: boolean;
|
|
391
|
+
};
|
|
392
|
+
type GitStatusRequest = {
|
|
393
|
+
path?: string;
|
|
394
|
+
};
|
|
395
|
+
type GitStatusResponse = {
|
|
396
|
+
isRepo: boolean;
|
|
397
|
+
head: string | null;
|
|
398
|
+
detached: boolean;
|
|
399
|
+
upstream: string | null;
|
|
400
|
+
ahead: number;
|
|
401
|
+
behind: number;
|
|
402
|
+
files: GitFileStatus[];
|
|
403
|
+
revision: number;
|
|
404
|
+
};
|
|
405
|
+
type GitDiffLineType = "context" | "add" | "del" | "meta";
|
|
406
|
+
type GitDiffLine = {
|
|
407
|
+
type: GitDiffLineType;
|
|
408
|
+
oldNo: number | null;
|
|
409
|
+
newNo: number | null;
|
|
410
|
+
text: string;
|
|
411
|
+
};
|
|
412
|
+
type GitDiffHunk = {
|
|
413
|
+
oldStart: number;
|
|
414
|
+
oldLines: number;
|
|
415
|
+
newStart: number;
|
|
416
|
+
newLines: number;
|
|
417
|
+
header: string;
|
|
418
|
+
lines: GitDiffLine[];
|
|
419
|
+
};
|
|
420
|
+
type GitFileDiff = {
|
|
421
|
+
path: string;
|
|
422
|
+
oldPath: string | null;
|
|
423
|
+
status: GitFileStatusCode;
|
|
424
|
+
isBinary: boolean;
|
|
425
|
+
isImage: boolean;
|
|
426
|
+
additions: number;
|
|
427
|
+
deletions: number;
|
|
428
|
+
hunks: GitDiffHunk[];
|
|
429
|
+
truncated: boolean;
|
|
430
|
+
};
|
|
431
|
+
type GitDiffRequest = {
|
|
432
|
+
path?: string;
|
|
433
|
+
staged?: boolean;
|
|
434
|
+
fromRef?: string;
|
|
435
|
+
toRef?: string;
|
|
436
|
+
pathspec?: string[];
|
|
437
|
+
contextLines?: number;
|
|
438
|
+
maxBytesPerFile?: number;
|
|
439
|
+
};
|
|
440
|
+
type GitDiffResponse = {
|
|
441
|
+
files: GitFileDiff[];
|
|
442
|
+
revision: number;
|
|
443
|
+
};
|
|
444
|
+
type GitLogRequest = {
|
|
445
|
+
path?: string;
|
|
446
|
+
ref?: string;
|
|
447
|
+
maxCount?: number;
|
|
448
|
+
skip?: number;
|
|
449
|
+
pathspec?: string[];
|
|
450
|
+
};
|
|
451
|
+
type GitCommit = {
|
|
452
|
+
sha: string;
|
|
453
|
+
shortSha: string;
|
|
454
|
+
parents: string[];
|
|
455
|
+
author: {
|
|
456
|
+
name: string;
|
|
457
|
+
email: string;
|
|
458
|
+
timestamp: number;
|
|
459
|
+
};
|
|
460
|
+
committer: {
|
|
461
|
+
name: string;
|
|
462
|
+
email: string;
|
|
463
|
+
timestamp: number;
|
|
464
|
+
};
|
|
465
|
+
subject: string;
|
|
466
|
+
body: string;
|
|
467
|
+
refs: string[];
|
|
468
|
+
};
|
|
469
|
+
type GitLogResponse = {
|
|
470
|
+
commits: GitCommit[];
|
|
471
|
+
hasMore: boolean;
|
|
472
|
+
};
|
|
473
|
+
type GitShowRequest = {
|
|
474
|
+
path?: string;
|
|
475
|
+
ref: string;
|
|
476
|
+
filePath?: string;
|
|
477
|
+
encoding?: FsEncoding;
|
|
478
|
+
maxBytesPerFile?: number;
|
|
479
|
+
};
|
|
480
|
+
type GitShowResponse = {
|
|
481
|
+
commit: GitCommit | null;
|
|
482
|
+
files: GitFileDiff[];
|
|
483
|
+
blob: {
|
|
484
|
+
content: string;
|
|
485
|
+
encoding: FsEncoding;
|
|
486
|
+
sizeBytes: number;
|
|
487
|
+
truncated: boolean;
|
|
488
|
+
} | null;
|
|
489
|
+
revision: number;
|
|
490
|
+
};
|
|
491
|
+
type TerminalExecRequest = {
|
|
492
|
+
command: string;
|
|
493
|
+
cwd?: string;
|
|
494
|
+
timeoutMs?: number;
|
|
495
|
+
emitStream?: boolean;
|
|
496
|
+
};
|
|
497
|
+
type TerminalExecResponse = {
|
|
498
|
+
stdout: string;
|
|
499
|
+
stderr: string;
|
|
500
|
+
exitCode: number | null;
|
|
501
|
+
running: boolean;
|
|
502
|
+
wallTimeSeconds: number;
|
|
503
|
+
};
|
|
504
|
+
type PtyOpenRequest = {
|
|
505
|
+
cols?: number;
|
|
506
|
+
rows?: number;
|
|
507
|
+
cwd?: string;
|
|
508
|
+
shell?: string;
|
|
509
|
+
};
|
|
510
|
+
type PtyOpenResponse = {
|
|
511
|
+
ptyId: string;
|
|
512
|
+
streamVia: "sse-events";
|
|
513
|
+
supportsInput: boolean;
|
|
514
|
+
};
|
|
515
|
+
type PtyWriteRequest = {
|
|
516
|
+
ptyId: string;
|
|
517
|
+
data: string;
|
|
518
|
+
};
|
|
519
|
+
type PtyResizeRequest = {
|
|
520
|
+
ptyId: string;
|
|
521
|
+
cols: number;
|
|
522
|
+
rows: number;
|
|
523
|
+
};
|
|
524
|
+
type PtyCloseRequest = {
|
|
525
|
+
ptyId: string;
|
|
526
|
+
};
|
|
527
|
+
type SessionStructuredCapabilities = {
|
|
528
|
+
FileSystem: {
|
|
529
|
+
available: boolean;
|
|
530
|
+
readOnly: boolean;
|
|
531
|
+
root: string;
|
|
532
|
+
};
|
|
533
|
+
Terminal: {
|
|
534
|
+
events: boolean;
|
|
535
|
+
exec: boolean;
|
|
536
|
+
pty: {
|
|
537
|
+
available: boolean;
|
|
538
|
+
};
|
|
539
|
+
};
|
|
540
|
+
Git: {
|
|
541
|
+
available: boolean;
|
|
542
|
+
repos: string[];
|
|
543
|
+
};
|
|
544
|
+
};
|
|
109
545
|
type ScheduledTaskStatus = "active" | "paused";
|
|
110
546
|
type ScheduledTaskRunMode = "new_session_per_run" | "reusable_session";
|
|
111
547
|
type ScheduledTaskOverlapPolicy = "allow_concurrent" | "skip" | "buffer_one";
|
|
@@ -167,7 +603,7 @@ type CreateSessionRequest = {
|
|
|
167
603
|
idempotencyKey?: string | undefined;
|
|
168
604
|
firstPartyMcpPermissions?: string[] | undefined;
|
|
169
605
|
};
|
|
170
|
-
declare const KNOWN_PERMISSIONS: readonly ["account:read", "account:admin", "members:manage", "workspace:create", "billing:read", "billing:manage", "workspace:read", "workspace:admin", "sessions:create", "sessions:read", "sessions:control", "files:upload", "files:read", "documents:manage", "documents:search", "scheduled_tasks:manage", "scheduled_tasks:run", "github:manage", "github:use", "api_keys:manage", "environments:manage", "environments:use", "goals:manage"];
|
|
606
|
+
declare const KNOWN_PERMISSIONS: readonly ["account:read", "account:admin", "members:manage", "workspace:create", "billing:read", "billing:manage", "workspace:read", "workspace:admin", "sessions:create", "sessions:read", "sessions:control", "stream:view", "stream:control", "stream:acknowledge", "files:upload", "files:read", "files:write", "terminal:attach", "documents:manage", "documents:search", "scheduled_tasks:manage", "scheduled_tasks:run", "github:manage", "github:use", "api_keys:manage", "environments:manage", "environments:use", "goals:manage"];
|
|
171
607
|
type KnownPermission = (typeof KNOWN_PERMISSIONS)[number];
|
|
172
608
|
/**
|
|
173
609
|
* Permissions the SDK knows about today, kept open so a newer OpenGeni server
|
|
@@ -232,6 +668,11 @@ type ClientConfig = {
|
|
|
232
668
|
};
|
|
233
669
|
productAccessMode: ProductAccessMode;
|
|
234
670
|
auth: ClientAuthConfig;
|
|
671
|
+
structuredServices: {
|
|
672
|
+
fileSystem: boolean;
|
|
673
|
+
git: boolean;
|
|
674
|
+
terminalEvents: boolean;
|
|
675
|
+
};
|
|
235
676
|
};
|
|
236
677
|
type AccountRole = "owner" | "admin" | "member";
|
|
237
678
|
type AccountGrant = {
|
|
@@ -807,7 +1248,7 @@ type BillingBalance = {
|
|
|
807
1248
|
currency: "usd";
|
|
808
1249
|
updatedAt: string;
|
|
809
1250
|
};
|
|
810
|
-
declare const KNOWN_USAGE_EVENT_TYPES: readonly ["agent_run.created", "agent_run.completed", "model.tokens", "model.cost", "file.uploaded", "file.deleted", "document.indexed", "scheduled_task.fired", "api_key.request"];
|
|
1251
|
+
declare const KNOWN_USAGE_EVENT_TYPES: readonly ["agent_run.created", "agent_run.completed", "model.tokens", "model.cost", "file.uploaded", "file.deleted", "document.indexed", "scheduled_task.fired", "api_key.request", "sandbox.warm_seconds", "sandbox.warm_cost"];
|
|
811
1252
|
type KnownUsageEventType = (typeof KNOWN_USAGE_EVENT_TYPES)[number];
|
|
812
1253
|
type UsageEventType = KnownUsageEventType | (string & {});
|
|
813
1254
|
type UsageEvent = {
|
|
@@ -1062,6 +1503,63 @@ declare class OpenGeniClient {
|
|
|
1062
1503
|
* it is a no-op (`status:"noop"`) with an explanatory message.
|
|
1063
1504
|
*/
|
|
1064
1505
|
compactSessionContext(workspaceId: string, sessionId: string): Promise<CompactSessionContextResult>;
|
|
1506
|
+
/** FileSystem: list a directory tree (feeds the Pierre file tree). */
|
|
1507
|
+
fsList(workspaceId: string, sessionId: string, request?: FsListRequest): Promise<FsListResponse>;
|
|
1508
|
+
/** FileSystem: read a file (text or base64; binary-safe, size-capped). */
|
|
1509
|
+
fsRead(workspaceId: string, sessionId: string, request: FsReadRequest): Promise<FsReadResponse>;
|
|
1510
|
+
/** FileSystem: write a file (last-writer-wins; emits fs.changed). */
|
|
1511
|
+
fsWrite(workspaceId: string, sessionId: string, request: FsWriteRequest): Promise<FsWriteResponse>;
|
|
1512
|
+
/** FileSystem: delete a path (emits fs.changed). */
|
|
1513
|
+
fsDelete(workspaceId: string, sessionId: string, request: FsDeleteRequest): Promise<FsDeleteResponse>;
|
|
1514
|
+
/** FileSystem: move/rename a path (emits fs.changed; 409 if destination exists and overwrite is false). */
|
|
1515
|
+
fsMove(workspaceId: string, sessionId: string, request: FsMoveRequest): Promise<FsMoveResponse>;
|
|
1516
|
+
/** FileSystem: create a directory (emits fs.changed; recursive defaults to true). */
|
|
1517
|
+
fsMkdir(workspaceId: string, sessionId: string, request: FsMkdirRequest): Promise<FsMkdirResponse>;
|
|
1518
|
+
/** Git: working-tree/index status (the Pierre file-status feed). */
|
|
1519
|
+
gitStatus(workspaceId: string, sessionId: string, request?: GitStatusRequest): Promise<GitStatusResponse>;
|
|
1520
|
+
/** Git: structured diff hunks (the Pierre diff feed). */
|
|
1521
|
+
gitDiff(workspaceId: string, sessionId: string, request?: GitDiffRequest): Promise<GitDiffResponse>;
|
|
1522
|
+
/** Git: commit log. */
|
|
1523
|
+
gitLog(workspaceId: string, sessionId: string, request?: GitLogRequest): Promise<GitLogResponse>;
|
|
1524
|
+
/** Git: show a commit (diff vs first parent) or fetch a raw blob at a ref. */
|
|
1525
|
+
gitShow(workspaceId: string, sessionId: string, request: GitShowRequest): Promise<GitShowResponse>;
|
|
1526
|
+
/** Terminal: run a bounded command, returning buffered stdout/stderr inline. */
|
|
1527
|
+
terminalExec(workspaceId: string, sessionId: string, request: TerminalExecRequest): Promise<TerminalExecResponse>;
|
|
1528
|
+
/** Terminal: open an interactive PTY. Output streams on the event SSE as
|
|
1529
|
+
* terminal.pty.output.delta; drive it with terminalPtyWrite. */
|
|
1530
|
+
terminalPtyOpen(workspaceId: string, sessionId: string, request?: PtyOpenRequest): Promise<PtyOpenResponse>;
|
|
1531
|
+
/** Terminal: send stdin to an open PTY (output rides A1). */
|
|
1532
|
+
terminalPtyWrite(workspaceId: string, sessionId: string, request: PtyWriteRequest): Promise<void>;
|
|
1533
|
+
/** Terminal: resize an open PTY. */
|
|
1534
|
+
terminalPtyResize(workspaceId: string, sessionId: string, request: PtyResizeRequest): Promise<void>;
|
|
1535
|
+
/** Terminal: close an open PTY (idempotent). */
|
|
1536
|
+
terminalPtyClose(workspaceId: string, sessionId: string, request: PtyCloseRequest): Promise<void>;
|
|
1537
|
+
/** Read the negotiated capability doc for a session WITHOUT acquiring a viewer
|
|
1538
|
+
* holder (no warm, no spawn). Drives capability-gated rendering: which
|
|
1539
|
+
* surfaces mount, the per-surface unavailability reasons, and the lease
|
|
1540
|
+
* liveness the client polls on while `cold`/`warming`. The desktop URL/token
|
|
1541
|
+
* are minted in-process only when the box is warm AND the principal has
|
|
1542
|
+
* acknowledged the un-redacted plane. */
|
|
1543
|
+
getStreamCapabilities(workspaceId: string, sessionId: string): Promise<SessionCapabilities>;
|
|
1544
|
+
/** Record the calling principal's acknowledgment of the un-redacted desktop
|
|
1545
|
+
* pixel plane (and, when the box is shared, the shared-exposure disclosure).
|
|
1546
|
+
* The desktop viewer-attach path returns 409 until this is recorded. */
|
|
1547
|
+
acknowledgeStream(workspaceId: string, sessionId: string, request?: AcknowledgeStreamRequest): Promise<AcknowledgeStreamResponse>;
|
|
1548
|
+
/** Attach a viewer holder (refcounted liveness — keeps the box warm while
|
|
1549
|
+
* watched/used), spinning the box up in-process when cold, and mint the scoped
|
|
1550
|
+
* direct-to-provider URLs for the requested plane(s). `request.desktop:true`
|
|
1551
|
+
* opts into the un-redacted pixel plane and mints the noVNC URL — that plane
|
|
1552
|
+
* alone throws `OpenGeniApiError(409)` when the un-redacted/shared
|
|
1553
|
+
* acknowledgment is missing (the consent gate). A terminal-only attach
|
|
1554
|
+
* (`desktop` omitted/false) warms the box + mints the pty-ws terminal cell with
|
|
1555
|
+
* NO consent gate. An omitted `viewerId` mints a fresh one. */
|
|
1556
|
+
attachViewer(workspaceId: string, sessionId: string, request?: AttachViewerRequest): Promise<AttachViewerResponse>;
|
|
1557
|
+
/** Heartbeat a viewer holder (Channel-A app-level liveness). A closed laptop
|
|
1558
|
+
* stops sending these → the reaper drops the holder within ~90s. Echoes
|
|
1559
|
+
* `leaseEpoch` so a superseded epoch is rejected (`alive:false` → re-attach). */
|
|
1560
|
+
heartbeatViewer(workspaceId: string, sessionId: string, viewerId: string, request: ViewerHeartbeatRequest): Promise<ViewerHeartbeatResponse>;
|
|
1561
|
+
/** Detach a viewer (delete this holder; idempotent delete-my-row). */
|
|
1562
|
+
detachViewer(workspaceId: string, sessionId: string, viewerId: string): Promise<void>;
|
|
1065
1563
|
/**
|
|
1066
1564
|
* The deployment's public client bootstrap config: the host-exposed models
|
|
1067
1565
|
* (provider-grouped in `models`, flat in `allowedModels` for back-compat),
|
|
@@ -1141,6 +1639,11 @@ declare class OpenGeniClient {
|
|
|
1141
1639
|
listDocuments(workspaceId: string, baseId: string): Promise<Document[]>;
|
|
1142
1640
|
/** Retry indexing for a failed document. */
|
|
1143
1641
|
reindexDocument(workspaceId: string, baseId: string, documentId: string): Promise<Document>;
|
|
1642
|
+
/**
|
|
1643
|
+
* Delete a document from a base. Removes the document row and its indexed
|
|
1644
|
+
* chunks while leaving the uploaded file asset available for other uses.
|
|
1645
|
+
*/
|
|
1646
|
+
deleteDocument(workspaceId: string, baseId: string, documentId: string): Promise<void>;
|
|
1144
1647
|
searchDocuments(workspaceId: string, baseId: string, request: {
|
|
1145
1648
|
query: string;
|
|
1146
1649
|
limit?: number;
|
|
@@ -1296,4 +1799,124 @@ type SseMessage = {
|
|
|
1296
1799
|
};
|
|
1297
1800
|
declare function parseSseStream(stream: ReadableStream<Uint8Array>): AsyncGenerator<SseMessage, void, void>;
|
|
1298
1801
|
|
|
1299
|
-
|
|
1802
|
+
/**
|
|
1803
|
+
* Translate the negotiated desktop capability into the WebSocket URL the noVNC
|
|
1804
|
+
* RFB client connects to. The scoped provider token is ALREADY embedded in the
|
|
1805
|
+
* minted `url` (Modal tunnel host, Blaxel `bl_preview_token`, Daytona signed
|
|
1806
|
+
* preview) by `session.resolveExposedPort(6080)` — we do NOT append `cap.token`
|
|
1807
|
+
* as a query param (that double-auth was an adversarial-review bug: the box runs
|
|
1808
|
+
* `-nopw` in v1, so the RFB password is meaningless and the real auth is the
|
|
1809
|
+
* tunnel token in the host). We only normalize the scheme to `ws`/`wss` and, when
|
|
1810
|
+
* the minted URL points at a `vnc.html` viewer page, rewrite it to the
|
|
1811
|
+
* websockify socket path noVNC actually dials.
|
|
1812
|
+
*/
|
|
1813
|
+
declare function desktopSocketUrl(cap: Pick<DesktopStreamCapability, "url">): string;
|
|
1814
|
+
/**
|
|
1815
|
+
* The minimal RFB surface the React component drives. Lets tests (and 3rd
|
|
1816
|
+
* parties swapping noVNC for a WebRTC client in v3) provide a fake without the
|
|
1817
|
+
* DOM. Matches `@novnc/novnc`'s RFB constructor + lifecycle.
|
|
1818
|
+
*/
|
|
1819
|
+
interface DesktopRfbLike {
|
|
1820
|
+
viewOnly: boolean;
|
|
1821
|
+
scaleViewport: boolean;
|
|
1822
|
+
/**
|
|
1823
|
+
* 1:1 viewport clipping. We always drive this FALSE: with clipping on, noVNC
|
|
1824
|
+
* paints the framebuffer pixel-for-pixel and scrolls/crops to the container
|
|
1825
|
+
* (the "zoomed in" look). FALSE lets `scaleViewport` shrink the 1280x800 frame
|
|
1826
|
+
* to fit the panel (aspect-preserved). Declared so the hook can pin it instead
|
|
1827
|
+
* of relying on noVNC's default — `scaleViewport=true` forces clip off
|
|
1828
|
+
* internally, but a stale/partial state on reconnect could leave it on.
|
|
1829
|
+
*/
|
|
1830
|
+
clipViewport: boolean;
|
|
1831
|
+
addEventListener(type: "connect" | "disconnect" | "securityfailure", cb: (e?: unknown) => void): void;
|
|
1832
|
+
removeEventListener?: (type: "connect" | "disconnect" | "securityfailure", cb: (e?: unknown) => void) => void;
|
|
1833
|
+
disconnect(): void;
|
|
1834
|
+
}
|
|
1835
|
+
type DesktopRfbFactory = (target: HTMLElement, url: string, opts: {
|
|
1836
|
+
credentials?: {
|
|
1837
|
+
password?: string | undefined;
|
|
1838
|
+
} | undefined;
|
|
1839
|
+
}) => DesktopRfbLike;
|
|
1840
|
+
type DesktopConnectionState = "idle" | "negotiating" | "connecting" | "connected" | "rotating" | "reconnecting" | "error" | "ended";
|
|
1841
|
+
type DesktopStreamEvent = {
|
|
1842
|
+
type: "negotiated";
|
|
1843
|
+
} | {
|
|
1844
|
+
type: "connected";
|
|
1845
|
+
} | {
|
|
1846
|
+
type: "disconnected";
|
|
1847
|
+
} | {
|
|
1848
|
+
type: "rotate";
|
|
1849
|
+
} | {
|
|
1850
|
+
type: "fail";
|
|
1851
|
+
} | {
|
|
1852
|
+
type: "abort";
|
|
1853
|
+
};
|
|
1854
|
+
/**
|
|
1855
|
+
* Pure reducer for the desktop connection lifecycle. The component owns the RFB
|
|
1856
|
+
* object + DOM; this owns the transitions so they are unit-testable. Mirrors the
|
|
1857
|
+
* Channel-A stream reducer discipline.
|
|
1858
|
+
*/
|
|
1859
|
+
declare function nextDesktopState(current: DesktopConnectionState, ev: DesktopStreamEvent): DesktopConnectionState;
|
|
1860
|
+
type DesktopStreamCapabilityLike = {
|
|
1861
|
+
url: string | null;
|
|
1862
|
+
token: string | null;
|
|
1863
|
+
expiresAt: string | null;
|
|
1864
|
+
};
|
|
1865
|
+
/**
|
|
1866
|
+
* Apply a `stream.url.rotated` event onto a desktop capability, fencing on
|
|
1867
|
+
* leaseEpoch (split-brain). A rotation minted under an epoch the client has
|
|
1868
|
+
* already advanced PAST is from a superseded owner and is dropped (returns
|
|
1869
|
+
* null); otherwise the fresh url/token/expiresAt are folded in.
|
|
1870
|
+
*/
|
|
1871
|
+
declare function applyUrlRotation<T extends DesktopStreamCapabilityLike>(cap: T, payload: StreamUrlRotatedPayload, knownEpoch: number): T | null;
|
|
1872
|
+
|
|
1873
|
+
/**
|
|
1874
|
+
* Translate the negotiated `pty-ws` Terminal capability into the WebSocket URL
|
|
1875
|
+
* the ttyd client dials. The scoped provider token is ALREADY embedded in the
|
|
1876
|
+
* minted `url` (the Modal tunnel host) by `session.resolveExposedPort(7681)` —
|
|
1877
|
+
* we do NOT append `cap.token` (identical posture to the desktop: the gate is the
|
|
1878
|
+
* unguessable short-TTL tunnel URL + the server-recorded scoped stream token; ttyd
|
|
1879
|
+
* runs `--writable` with no `-c` credential in v1). We only normalize the scheme
|
|
1880
|
+
* to `ws`/`wss`; a bare host is already the ttyd websocket endpoint.
|
|
1881
|
+
*/
|
|
1882
|
+
declare function terminalSocketUrl(cap: Pick<TerminalCapability, "url">): string;
|
|
1883
|
+
/** ttyd subprotocol — REQUIRED on the WebSocket handshake or ttyd refuses it. */
|
|
1884
|
+
declare const TTYD_SUBPROTOCOL = "tty";
|
|
1885
|
+
/** Client→server command bytes (the first char of each outbound text frame). */
|
|
1886
|
+
declare const TtydClientCommand: {
|
|
1887
|
+
/** stdin: "0" + raw input bytes. */
|
|
1888
|
+
readonly INPUT: "0";
|
|
1889
|
+
/** window resize: "1" + JSON.stringify({ columns, rows }). */
|
|
1890
|
+
readonly RESIZE: "1";
|
|
1891
|
+
/** flow-control pause (back-pressure): "2". */
|
|
1892
|
+
readonly PAUSE: "2";
|
|
1893
|
+
/** flow-control resume: "3". */
|
|
1894
|
+
readonly RESUME: "3";
|
|
1895
|
+
};
|
|
1896
|
+
/** Server→client command bytes (the first char of each inbound frame). */
|
|
1897
|
+
declare const TtydServerCommand: {
|
|
1898
|
+
/** stdout/stderr: "0" + raw output bytes (write the rest into xterm). */
|
|
1899
|
+
readonly OUTPUT: "0";
|
|
1900
|
+
/** set the window title: "1" + title string. */
|
|
1901
|
+
readonly SET_WINDOW_TITLE: "1";
|
|
1902
|
+
/** ttyd client preferences JSON: "2" + json (ignored by us). */
|
|
1903
|
+
readonly SET_PREFERENCES: "2";
|
|
1904
|
+
};
|
|
1905
|
+
/**
|
|
1906
|
+
* The ttyd handshake's first frame: an auth message. ttyd expects
|
|
1907
|
+
* `JSON.stringify({ AuthToken })` as the FIRST text frame on the socket. We send
|
|
1908
|
+
* an empty token — our gate is the tunnel URL + scoped stream token, NOT a ttyd
|
|
1909
|
+
* `-c` basic-auth credential (which the box does not set in v1). Optional ttyd
|
|
1910
|
+
* `columns`/`rows` can ride this frame to seed the PTY size before the first
|
|
1911
|
+
* resize. Pure (string-building only) so it stays unit-testable in the SDK.
|
|
1912
|
+
*/
|
|
1913
|
+
declare function ttydAuthFrame(opts?: {
|
|
1914
|
+
columns?: number;
|
|
1915
|
+
rows?: number;
|
|
1916
|
+
}): string;
|
|
1917
|
+
/** Build a client→server INPUT (stdin) frame: "0" + data. */
|
|
1918
|
+
declare function ttydInputFrame(data: string): string;
|
|
1919
|
+
/** Build a client→server RESIZE frame: "1" + JSON.stringify({ columns, rows }). */
|
|
1920
|
+
declare function ttydResizeFrame(columns: number, rows: number): string;
|
|
1921
|
+
|
|
1922
|
+
export { type AccessContext, type AccessGrant, type AccountGrant, type AccountRole, type AcknowledgeStreamRequest, type AcknowledgeStreamResponse, type AddWorkspaceMemberRequest, type AgentMessageCompletedPayload, type AgentTextDeltaPayload, type AgentToolCallCreatedPayload, type AgentToolCallOutputPayload, type ApiKey, type AttachViewerRequest, type AttachViewerResponse, type BillingBalance, type BillingEntitlementsResponse, type BillingMode, type BillingSummary, type BillingUsageResponse, type CapabilityCatalogItem, type CapabilityCatalogResponse, type CapabilityInstallation, type CapabilityInstallationStatus, type CapabilityKind, type CapabilityPack, type CapabilityPackConnector, type CapabilityPackConnectorAuthModel, type CapabilityPackEnvironmentSpec, type CapabilityPackKnowledge, type CapabilityPackScheduledTaskTemplate, type CapabilityPackSkill, type CapabilityPackSkillFile, type CapabilityRuntime, type CapabilitySource, type CapabilityUnavailableReason, type ClientAuthConfig, type ClientConfig, type ClientModel, type ClientSessionEventInput, type CompactSessionContextResult, type CompleteFileUploadResponse, type ComputerUseCapability, type CreateApiKeyRequest, type CreateApiKeyResponse, type CreateCapabilityCatalogItemRequest, type CreateCheckoutRequest, type CreateCheckoutResponse, type CreateDocumentBaseRequest, type CreateFileUploadRequest, type CreateFileUploadResponse, type CreateGitHubAppManifestRequest, type CreateGitHubAppManifestResponse, type CreateScheduledTaskRequest, type CreateSessionRequest, type CreateWorkspaceEnvironmentRequest, type CreateWorkspaceRequest, type DesktopConnectionState, type DesktopRfbFactory, type DesktopRfbLike, type DesktopStreamCapability, type DesktopStreamEvent, type DiscoverMcpCapabilitiesResponse, type Document, type DocumentBase, type DocumentSearchRequest, type DocumentSearchResponse, type DocumentSearchResult, type DocumentStatus, type EnableCapabilityRequest, type EnablePackRequest, type EntitlementValue, type Entitlements, type EntitlementsMode, type FetchLike, type FileAsset, type FileDownloadUrlResponse, type FileResourceRef, type FileStatus, type FileSystemCapability, type FileUploadData, type FsChangeKind, type FsChangedPayload, type FsDeleteRequest, type FsDeleteResponse, type FsEncoding, type FsListRequest, type FsListResponse, type FsMkdirRequest, type FsMkdirResponse, type FsMoveRequest, type FsMoveResponse, type FsNodeType, type FsReadRequest, type FsReadResponse, type FsTreeNode, type FsWriteRequest, type FsWriteResponse, type GetPackResponse, type GitCapability, type GitChangedPayload, type GitCommit, type GitDiffHunk, type GitDiffLine, type GitDiffLineType, type GitDiffRequest, type GitDiffResponse, type GitFileDiff, type GitFileStatus, type GitFileStatusCode, type GitHubAppInfo, type GitHubRepositoriesResponse, type GitHubRepository, type GitLogRequest, type GitLogResponse, type GitShowRequest, type GitShowResponse, type GitStatusRequest, type GitStatusResponse, type GoalSpec, KNOWN_PERMISSIONS, KNOWN_USAGE_EVENT_TYPES, type KnownPermission, type KnownSessionEventType, type KnownUsageEventType, type ListApiKeysResponse, type ListPacksResponse, type ListWorkspaceMembersResponse, OpenGeniApiError, OpenGeniClient, type OpenGeniClientOptions, OpenGeniStreamError, type PackInstallation, type PackInstallationStatus, type Permission, type ProductAccessMode, type ProxySessionEventStreamOptions, type PtyCloseRequest, type PtyOpenRequest, type PtyOpenResponse, type PtyResizeRequest, type PtyWriteRequest, type ReasoningEffort, type RecordingAvailablePayload, type RecordingCapability, type RecordingCodec, type RecordingContentType, type RecordingFailedPayload, type RecordingFailedReason, type RecordingMode, type RecordingStartedPayload, type RegisterCapabilityPackRequest, type RepositoryResourceRef, type ResourceRef, SESSION_EVENT_TYPES, type SandboxBackend, type SandboxCapabilityName, type SandboxCommandOutputDeltaPayload, type SandboxOs, type ScheduledTask, type ScheduledTaskAgentConfig, type ScheduledTaskAgentConfigInput, type ScheduledTaskDayOfWeek, type ScheduledTaskOverlapPolicy, type ScheduledTaskRun, type ScheduledTaskRunMode, type ScheduledTaskRunStatus, type ScheduledTaskScheduleSpec, type ScheduledTaskStatus, type ScheduledTaskTriggerType, type SendMessageInput, type Session, type SessionCapabilities, type SessionEvent, type SessionEventStreamTransport, type SessionEventType, type SessionGoal, type SessionGoalCreatedBy, type SessionGoalStatus, type SessionStatus, type SessionStatusChangedPayload, type SessionStructuredCapabilities, type SessionTurn, type SessionTurnSource, type SessionTurnStatus, type SseMessage, type SseReStreamOptions, type SteerMessageResult, type StreamClosedPayload, type StreamConnectionState, type StreamOpenedPayload, type StreamRevokedPayload, type StreamSessionEventsOptions, type StreamUrlRotatedPayload, TTYD_SUBPROTOCOL, type TerminalCapability, type TerminalExecRequest, type TerminalExecResponse, type TerminalPtyExitedPayload, type TerminalPtyOutputDeltaPayload, type TerminalPtyStartedPayload, type ToolRef, TtydClientCommand, TtydServerCommand, type UpdateScheduledTaskRequest, type UpdateSessionGoalRequest, type UpdateSessionTurnRequest, type UpdateWorkspaceEnvironmentRequest, type UpdateWorkspaceMemberRequest, type UpdateWorkspaceRequest, type UploadFileInput, type UsageEvent, type UsageEventType, type UserApprovalDecisionEventInput, type UserInterruptEventInput, type UserMessageEventInput, type ViewerHeartbeatRequest, type ViewerHeartbeatResponse, type ViewerHolder, type Workspace, type WorkspaceEnvironment, type WorkspaceEnvironmentVariableMetadata, type WorkspaceMember, type WorkspaceRegisteredPack, applyUrlRotation, desktopSocketUrl, formatSseEvent, isRetryableStreamError, nextDesktopState, parseSseStream, proxySessionEventStream, resumeSequenceFromRequest, sessionEventsToSseResponse, sessionEventsToSseStream, streamSessionEvents, terminalSocketUrl, ttydAuthFrame, ttydInputFrame, ttydResizeFrame };
|