@agent-compose/sdk 0.8.1 → 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.
Files changed (48) hide show
  1. package/dist/agent/__tests__/perf-sampler.test.d.ts +10 -0
  2. package/dist/agent/agent-context.d.ts +1 -1
  3. package/dist/agent/agent-loop.d.ts +5 -1
  4. package/dist/agent/desktop-open.d.ts +184 -0
  5. package/dist/agent/perf-sampler.d.ts +99 -0
  6. package/dist/agent/services-manifest.d.ts +88 -0
  7. package/dist/agent/services-restore.d.ts +58 -0
  8. package/dist/client.d.ts +189 -15
  9. package/dist/display.d.ts +17 -0
  10. package/dist/index.d.ts +14 -5
  11. package/dist/index.js +1625 -120
  12. package/dist/runtimes/_cli-agent.d.ts +372 -2
  13. package/dist/runtimes/claude-code.d.ts +12 -0
  14. package/dist/runtimes/codex.buildcommand.test.d.ts +9 -0
  15. package/dist/runtimes/codex.d.ts +8 -0
  16. package/dist/runtimes/openai-desktop.js +1555 -120
  17. package/dist/runtimes/session-env.test.d.ts +14 -0
  18. package/dist/sandbox/sizes.d.ts +120 -30
  19. package/dist/sandbox.d.ts +1 -1
  20. package/dist/types/api-conversations.d.ts +476 -1
  21. package/dist/types/api-factory.d.ts +164 -7
  22. package/dist/types/api-runs.d.ts +23 -1
  23. package/dist/types/protocol.d.ts +32 -1
  24. package/dist/types/runtime.d.ts +120 -0
  25. package/dist/types/workflow-metadata.d.ts +6 -5
  26. package/package.json +1 -1
  27. package/src/agent/agent-context.ts +128 -28
  28. package/src/agent/agent-loop.ts +10 -3
  29. package/src/agent/desktop-open.ts +418 -0
  30. package/src/agent/perf-sampler.ts +202 -0
  31. package/src/agent/services-manifest.ts +356 -0
  32. package/src/agent/services-restore.ts +195 -0
  33. package/src/client.ts +384 -32
  34. package/src/display.ts +44 -1
  35. package/src/index.ts +74 -7
  36. package/src/runtimes/_cli-agent.ts +1160 -67
  37. package/src/runtimes/claude-code.ts +187 -12
  38. package/src/runtimes/codex.ts +65 -2
  39. package/src/sandbox/providers/e2b.ts +8 -4
  40. package/src/sandbox/providers/local.ts +16 -4
  41. package/src/sandbox/sizes.ts +127 -44
  42. package/src/sandbox.ts +8 -0
  43. package/src/types/api-conversations.ts +461 -2
  44. package/src/types/api-factory.ts +165 -7
  45. package/src/types/api-runs.ts +25 -1
  46. package/src/types/protocol.ts +30 -1
  47. package/src/types/runtime.ts +122 -0
  48. package/src/types/workflow-metadata.ts +6 -5
package/dist/client.d.ts CHANGED
@@ -12,17 +12,17 @@
12
12
  */
13
13
  import type { RunEvent } from "./types/events.js";
14
14
  import type { ConversationStreamEvent } from "./types/conversation-stream.js";
15
- import type { InvokeWorkflowOptions, InvokeAndWaitOptions, InvokeResult, StreamRunLogsOptions, InlineWorkflowPayload, InvokeInlineOptions, InvokeInlineAndWaitOptions, RunStatus, ResumePauseOptions, ResumePauseResponse, AnswerSteerOptions, RequestAgentPauseOptions, RequestAgentPauseResponse, SendAgentMessageOptions, SendAgentMessageResponse, RunDetail, RunListEntry, ListRunsOptions, TimelineEvent, RunFundingResponse, EventRow, ReportEventInput, ListEventsOptions, ListEventsResult, RunArtifactRow, RunLogLine, ListRunLogsOptions, CancelRunResponse, ListSnapshotsOptions, SnapshotListResponse, SnapshotListEntry, RunSnapshotEntry } from "./types/api-runs.js";
16
- import type { TeamMember, Mention, CreateMentionsInput, ConversationsPage, SessionsPage, ConversationDetail, ConversationThread, CreateCloudSessionInput, CloudSessionCreated, SessionPreview, PreviewOpened, OpenPreviewInput, SessionForked, SessionChangeSet, SessionMergeReport, SessionDiscardReport, SendConversationMessageInput, SendConversationMessageResult, ChannelSessionRow, SessionChannelMessagePosted, ConversationPresenceSnapshot, StreamConversationOptions, AgentListRow } from "./types/api-conversations.js";
15
+ import type { InvokeWorkflowOptions, InvokeAndWaitOptions, InvokeResult, StreamRunLogsOptions, InlineWorkflowPayload, InvokeInlineOptions, InvokeInlineAndWaitOptions, RunStatus, ResumePauseOptions, ResumePauseResponse, AnswerSteerOptions, RequestAgentPauseOptions, RequestAgentPauseResponse, SendAgentMessageOptions, SendAgentMessageResponse, RunDetail, RunListEntry, ListRunsOptions, TimelineEvent, RunFundingResponse, RunStepUsageResponse, EventRow, ReportEventInput, ListEventsOptions, ListEventsResult, RunArtifactRow, RunLogLine, ListRunLogsOptions, CancelRunResponse, ListSnapshotsOptions, SnapshotListResponse, SnapshotListEntry, RunSnapshotEntry } from "./types/api-runs.js";
16
+ import type { TeamMember, Mention, CreateMentionsInput, ConversationsPage, SessionsPage, ConversationDetail, ConversationThread, CreateCloudSessionInput, CloudSessionCreated, SessionPreview, PreviewOpened, OpenPreviewInput, SessionForked, BackgroundWorkHeld, SessionChangeSet, SessionMergeGated, SessionMergeReport, SessionDiscardReport, SessionChangePreflight, SessionRebaseReport, SessionAutoRebaseState, ReviewSuggestionInput, ReviewNotesPublished, ReviewGitCredential, SendConversationMessageInput, SendConversationMessageResult, ChannelSessionRow, SessionChannelMessagePosted, SessionDirectMessageSent, BranchClaimGranted, BranchClaimsReleased, BranchClaimState, ConversationPresenceSnapshot, StreamConversationOptions, AgentListRow, SessionPerfHistoryPage } from "./types/api-conversations.js";
17
17
  import type { ConversationMemberRole, ConversationMember, ArtifactScope, SetScopeGrantsInput, SetTemplateScopeInput } from "./types/api-scopes.js";
18
18
  import type { Project, ProjectsPage, ProjectRole, ProjectMember, ProjectObjectsPage, ProjectAddPreview, AddProjectObjectInput, AddProjectObjectResult, RefreshProjectObjectResult } from "./types/api-projects.js";
19
- import type { RegisterResult, RegisterWorkflowInput, TemplateRow, TemplateDetail, ListTemplatesOptions, SearchFactoryFilesOptions, FactoryFileSearchResult, FactoryFileWriteResult, FactoryRow, CreateFactoryInput, UpdateFactoryInput, ScheduleRow, CreateScheduleInput, SecretOptions, SetSecretResult, SecretListEntry, CreateApiKeyInput, ApiKey, ApiKeyCreated, UsageResponse, DriveRepoLink, CreateDriveRepoLinkInput, DriveMountSession, CreateDriveMountSessionInput } from "./types/api-factory.js";
19
+ import type { RegisterResult, RegisterWorkflowInput, TemplateRow, TemplateDetail, ListTemplatesOptions, SearchFactoryFilesOptions, FactoryFileSearchResult, FactoryFileWriteResult, ListFactoryFilesOptions, FactoryFileListPage, FactoryRow, CreateFactoryInput, UpdateFactoryInput, FactoryPerfSummary, ScheduleRow, CreateScheduleInput, SecretOptions, SetSecretResult, SecretListEntry, SessionSecretEntry, SessionSecretInput, SessionSecretRequestCreated, SessionSecretRequestStatus, CreateApiKeyInput, ApiKeyCreated, ListApiKeysOptions, ApiKeyPage, UsageResponse, DriveRepoLink, CreateDriveRepoLinkInput, DriveMountSession, CreateDriveMountSessionInput } from "./types/api-factory.js";
20
20
  import type { ComplianceSession, RequestComplianceSessionInput, ListComplianceSessionsOptions, ComplianceSessionsPage, ListComplianceAccessesOptions, ComplianceAccessesPage } from "./types/api-compliance.js";
21
- export type { RunState, InvokeWorkflowOptions, InvokeAndWaitOptions, InvokeResult, FundingChoice, StreamRunLogsOptions, InlineWorkflowPayload, InvokeInlineOptions, InvokeInlineAndWaitOptions, RunStatus, ResumePauseActor, ResumePauseSuccess, ResumePausePending, ResumePauseResponse, ResumePauseOptions, RequestAgentPauseOptions, AnswerSteerOptions, RequestAgentPauseResponse, SendAgentMessageOptions, SendAgentMessageResponse, RunDetail, RunListEntry, ListRunsOptions, TimelineEvent, FundingLane, RunFundingStamp, RunFundingUsageRow, RunFundingResponse, EventSubjectType, EventRow, RunArtifactRow, ReportEventInput, ListEventsOptions, ListEventsResult, RunLogLine, ListRunLogsOptions, CancelRunResponse, ListSnapshotsOptions, SnapshotListEntry, SnapshotListResponse, RunSnapshotEntry, } from "./types/api-runs.js";
22
- export type { TeamMember, Mention, CreateMentionsInput, ConversationMessagePart, ConversationRow, ConversationMessageRow, ConversationsPage, SessionsPage, ConversationDetail, CreateCloudSessionInput, CloudSessionCreated, ConversationThread, SessionPreview, PreviewOpened, OpenPreviewInput, SessionForked, SessionFileChange, SessionChangeSet, SessionMergeReportDetail, SessionMergeReport, SessionDiscardReport, ConversationPageContext, SendConversationMessageInput, ConversationTurnState, SendConversationMessageResult, ConversationPresenceSnapshot, AgentListRow, StreamConversationOptions, ChannelSessionStatus, ChannelSessionRow, ChannelSessionsResponse, SessionChannelMessagePosted, } from "./types/api-conversations.js";
21
+ export type { RunState, InvokeWorkflowOptions, InvokeAndWaitOptions, InvokeResult, FundingChoice, StreamRunLogsOptions, InlineWorkflowPayload, InvokeInlineOptions, InvokeInlineAndWaitOptions, RunStatus, ResumePauseActor, ResumePauseSuccess, ResumePausePending, ResumePauseResponse, ResumePauseOptions, RequestAgentPauseOptions, AnswerSteerOptions, RequestAgentPauseResponse, SendAgentMessageOptions, SendAgentMessageResponse, RunDetail, RunListEntry, ListRunsOptions, TimelineEvent, FundingLane, RunFundingStamp, RunFundingUsageRow, RunFundingResponse, RunStepUsage, RunStepUsageResponse, EventSubjectType, EventRow, RunArtifactRow, ReportEventInput, ListEventsOptions, ListEventsResult, RunLogLine, ListRunLogsOptions, CancelRunResponse, ListSnapshotsOptions, SnapshotListEntry, SnapshotListResponse, RunSnapshotEntry, } from "./types/api-runs.js";
22
+ export type { TeamMember, Mention, CreateMentionsInput, ConversationMessagePart, ConversationRow, ConversationMessageRow, ConversationsPage, SessionsPage, ConversationDetail, CreateCloudSessionInput, CloudSessionCreated, ConversationThread, SessionPreview, PreviewOpened, OpenPreviewInput, SessionForked, BackgroundWorkHeld, SessionFileChange, SessionChangeSet, SessionChangeStats, SessionDiffReviewBound, ReviewSuggestion, ReviewSuggestionInput, ReviewNotesPublished, ReviewGitCredential, SessionReviewDocument, ReviewSuggestionDecision, ReviewSuggestionDecisions, SessionMergeReportDetail, SessionMergeReport, SessionMergeGated, SessionDiscardReport, SessionPreflightFileRow, SessionChangePreflight, SessionRebaseReport, SessionAutoRebaseState, ConversationPageContext, SendConversationMessageInput, ConversationTurnState, SendConversationMessageResult, UnnotifiedMention, ConversationPresenceSnapshot, AgentListRow, StreamConversationOptions, ChannelSessionStatus, ChannelSessionRow, ChannelSessionsResponse, SessionChannelMessagePosted, SessionDirectMessageSent, BranchClaimInfo, BranchClaimGranted, BranchClaimsReleased, BranchClaimState, SessionPerfBucket, SessionPerfHistoryPage, } from "./types/api-conversations.js";
23
23
  export type { ConversationMemberRole, ConversationMember, DocumentCapability, TemplateCapability, ScopeGrant, ArtifactScope, RunContext, SetScopeGrantsInput, SetTemplateScopeInput, } from "./types/api-scopes.js";
24
24
  export type { Project, ProjectsPage, ProjectRole, ProjectMember, ProjectObject, ProjectObjectsPage, ProjectSkippedFile, ProjectPreviewFile, ProjectAddPreview, AddProjectObjectInput, AddProjectObjectResult, RefreshProjectObjectResult, } from "./types/api-projects.js";
25
- export type { RegisterResult, RegisteredRuntime, RuntimeSourceInput, TemplateSourceRef, RegisterWorkflowInput, TemplateRow, TemplateDetail, ListTemplatesOptions, FactoryFileSearchRow, FactoryFolderSearchRow, SearchFactoryFilesOptions, FactoryFileSearchResult, FactoryFileWriteResult, PublicFileLinkState, FactoryRow, CreateFactoryInput, UpdateFactoryInput, ScheduleRow, CreateScheduleInput, SecretOptions, SetSecretResult, SecretListEntry, CreateApiKeyInput, ApiKey, ApiKeyCreated, UsageRollupRow, UsageResponse, DriveRepoLink, CreateDriveRepoLinkInput, DriveMountSession, CreateDriveMountSessionInput, } from "./types/api-factory.js";
25
+ export type { RegisterResult, RegisteredRuntime, RuntimeSourceInput, TemplateSourceRef, RegisterWorkflowInput, TemplateRow, TemplateDetail, ListTemplatesOptions, FactoryFileSearchRow, FactoryFolderSearchRow, SearchFactoryFilesOptions, FactoryFileSearchResult, FactoryFileWriteResult, FactoryFileListRow, ListFactoryFilesOptions, FactoryFileListPage, PublicFileLinkState, FactoryRow, CreateFactoryInput, UpdateFactoryInput, FactoryPerfSummary, ScheduleRow, CreateScheduleInput, SecretOptions, SetSecretResult, SecretListEntry, SessionSecretEntry, SessionSecretInput, SessionSecretRequestCreated, SessionSecretRequestStatus, CreateApiKeyInput, ApiKey, ApiKeyCreated, ListApiKeysOptions, ApiKeyPage, UsageRollupRow, UsageResponse, DriveRepoLink, CreateDriveRepoLinkInput, DriveMountSession, CreateDriveMountSessionInput, } from "./types/api-factory.js";
26
26
  export type { ComplianceScopeKind, ComplianceStatus, ComplianceSession, ComplianceAccess, RequestComplianceSessionInput, ListComplianceSessionsOptions, ComplianceSessionsPage, ListComplianceAccessesOptions, ComplianceAccessesPage, } from "./types/api-compliance.js";
27
27
  export interface AgentComposeClientOptions {
28
28
  /** Your team's API key — minted from the dashboard or `agentc keys create`.
@@ -194,6 +194,11 @@ export declare class AgentComposeClient {
194
194
  * the only usage the ledger records (non-platform lanes are attribution,
195
195
  * never metered). */
196
196
  getRunFunding(runId: string): Promise<RunFundingResponse>;
197
+ /** Attested platform tokens attributed to each of a run's steps, derived
198
+ * server-side from the spend ledger by step time window. Empty `steps` is
199
+ * an honest answer (legacy run, or funded outside the platform lane —
200
+ * that money is never metered). */
201
+ getRunStepUsage(runId: string): Promise<RunStepUsageResponse>;
197
202
  /** Report a durable event against a run. Events are late-binding facts
198
203
  * like quality.accepted, defect.regression, or intervention.override. */
199
204
  reportEvent(runId: string, input: ReportEventInput): Promise<EventRow>;
@@ -222,6 +227,7 @@ export declare class AgentComposeClient {
222
227
  factorySlug?: string;
223
228
  revision?: number;
224
229
  branch?: string;
230
+ at?: string;
225
231
  }): Promise<Uint8Array>;
226
232
  /** Read one file's current content (or a specific revision) as text
227
233
  * (UTF-8). For binary files use `getFactoryFileBytes` — decoding them to
@@ -230,6 +236,7 @@ export declare class AgentComposeClient {
230
236
  factorySlug?: string;
231
237
  revision?: number;
232
238
  branch?: string;
239
+ at?: string;
233
240
  }): Promise<string>;
234
241
  /** Create a local drive mount (or re-mint an existing one's token by
235
242
  * passing its `conversationId`). */
@@ -255,6 +262,19 @@ export declare class AgentComposeClient {
255
262
  listSessions(factoryId: string, opts?: {
256
263
  cursor?: string;
257
264
  }): Promise<SessionsPage>;
265
+ /** A session's sandbox perf HISTORY — 15-minute rollup buckets
266
+ * (CPU/mem/disk percentiles, load, saturation seconds), newest first.
267
+ * Member-gated like the session itself. Cursor-paginated. */
268
+ getSessionPerfHistory(conversationId: string, opts?: {
269
+ limit?: number;
270
+ cursor?: string;
271
+ }): Promise<SessionPerfHistoryPage>;
272
+ /** Team-level sandbox perf aggregates over a window (default trailing
273
+ * 24h, max 30 days). Aggregate-only — no per-session identifiers. */
274
+ getFactoryPerfSummary(factorySlug: string, opts?: {
275
+ from?: string;
276
+ to?: string;
277
+ }): Promise<FactoryPerfSummary>;
258
278
  /** One conversation with its latest page of messages. `limit` bounds the
259
279
  * page (newest N) — metadata-only consumers (e.g. resolving the
260
280
  * session's drive branch) pass 1 instead of pulling the full hydrate. */
@@ -300,6 +320,40 @@ export declare class AgentComposeClient {
300
320
  text: string;
301
321
  threadRootId?: string;
302
322
  }): Promise<SessionChannelMessagePosted>;
323
+ /** Message ANOTHER session's conversation AS the calling session
324
+ * (`agentc session message @alias`). Session toolbelt credential ONLY —
325
+ * the sender resolves from the key. `target` is an @alias (team-scoped)
326
+ * or a conversation uuid. Unlike a channel post this WAKES the target's
327
+ * turn machinery; the response's `turn` verdict says whether it started,
328
+ * queued behind a live turn, or was parked by the agent-to-agent
329
+ * exchange damper. Unknown alias → 404 with `candidates`. */
330
+ sendSessionMessage(input: {
331
+ target: string;
332
+ text: string;
333
+ }): Promise<SessionDirectMessageSent>;
334
+ /** Claim ANOTHER session's drive branch for the calling session
335
+ * (`agentc branch claim @alias`) — transfers the branch's one-writer
336
+ * authority: the target's own writes refuse honestly until release, and
337
+ * the response carries the mount token the CLI uses to FUSE-mount the
338
+ * branch in-guest. Session toolbelt credential only; same-owner sessions
339
+ * only (cross-user claims refuse with the gap stated); refuses while the
340
+ * target is mid-turn (409 `mid_turn`) or already claimed
341
+ * (409 `already_claimed`). */
342
+ claimSessionBranch(input: {
343
+ target: string;
344
+ reason?: string;
345
+ }): Promise<BranchClaimGranted>;
346
+ /** Release branch claims HELD by the calling session (`agentc branch
347
+ * release [@alias]`). `target` narrows to one claim; omitted releases
348
+ * them all. Idempotent — an empty `released` list means nothing was
349
+ * held. */
350
+ releaseSessionBranchClaims(input?: {
351
+ target?: string;
352
+ }): Promise<BranchClaimsReleased>;
353
+ /** One session's branch-claim state: the live claim ON its branch (null =
354
+ * writable there) and the claims it HOLDS (`agentc branch status`, the
355
+ * dashboard's Changes-panel badge). Any viewer with access. */
356
+ getSessionBranchClaimState(conversationId: string): Promise<BranchClaimState>;
303
357
  /** Open a dev preview on a cloud session: expose a port a dev server is
304
358
  * LISTENING on inside the session sandbox at a member-gated proxy URL, and
305
359
  * post an "Open preview" card to the transcript. Resumes a suspended VM
@@ -312,6 +366,17 @@ export declare class AgentComposeClient {
312
366
  /** Take a dev preview down (write-tier). Idempotent — `closed` is false when
313
367
  * no active row matched. */
314
368
  closePreview(conversationId: string, port: number): Promise<boolean>;
369
+ /** Hold (or extend — the stamp is monotone) a cloud session's
370
+ * background-work busy lease: while it is live, the between-turns
371
+ * park/suspend leaves the session's VM running so work the turn left
372
+ * behind keeps executing. The lease lapses on its own — re-hold to
373
+ * extend past `minutes` (server-capped). Write-tier. */
374
+ holdBackgroundWork(conversationId: string, input?: {
375
+ minutes?: number;
376
+ }): Promise<BackgroundWorkHeld>;
377
+ /** Release the session's background-work lease (the work finished).
378
+ * Idempotent — `released` is false when no lease was held. */
379
+ releaseBackgroundWork(conversationId: string): Promise<boolean>;
315
380
  /** Fork a cloud session from HEAD: snapshot the VM + branch the drive + seed
316
381
  * a new conversation from the transcript so far, booting from both. Returns
317
382
  * the child conversation id to switch to. Write-tier; "Branch from here." */
@@ -324,12 +389,57 @@ export declare class AgentComposeClient {
324
389
  * writes `main` directly. The list reflects the branch's last flush and
325
390
  * is advisory; a merge re-verifies against fresh state. 404 = not found
326
391
  * or not a member (uniform). */
327
- getSessionChanges(conversationId: string): Promise<SessionChangeSet>;
392
+ getSessionChanges(conversationId: string, opts?: {
393
+ after?: string;
394
+ limit?: number;
395
+ }): Promise<SessionChangeSet>;
396
+ /** One proposed file's RAW BYTES from a session's change set
397
+ * (`GET /conversations/:id/changes/content`) — the review surface's
398
+ * per-file read, also the in-sandbox `agentc review file` door.
399
+ * `side: "base"` serves the PRE-change side (graph plane; the legacy
400
+ * plane ignores it and always serves the proposed side). 404 = missing
401
+ * path or no access (uniform, no existence oracle). */
402
+ getSessionChangeContent(conversationId: string, path: string, opts?: {
403
+ side?: "base";
404
+ }): Promise<Uint8Array>;
405
+ /** Publish a diff review's WHOLE document — prose notes plus structured
406
+ * suggestions, FULL REPLACE on every call (`POST
407
+ * /conversations/:id/review-notes`; `agentc review publish`). Callable
408
+ * ONLY with the bound review session's own toolbelt credential — any
409
+ * other key (another session, a human cookie, a plain API key) refuses
410
+ * 403. `conversationId` is the REVIEWED session's conversation (in a
411
+ * review sandbox: `AGENT_COMPOSE_REVIEW_OF_CONVERSATION_ID`).
412
+ *
413
+ * Failures: 403 `session_credential_required` | `not_review_session` |
414
+ * `review_superseded` (a newer review replaced this one); 400
415
+ * `suggestion_path_not_in_change_set` (naming the offenders); 409
416
+ * `review_disabled`. */
417
+ publishReviewNotes(conversationId: string, input: {
418
+ notes: string;
419
+ suggestions?: ReviewSuggestionInput[];
420
+ }): Promise<ReviewNotesPublished>;
421
+ /** Mint ONE fresh short-lived credential for the review git remote
422
+ * (`POST /conversations/:id/review-git-credential`) — the server half
423
+ * of the review sandbox's git credential helper (`agentc review
424
+ * git-credential`), which calls this per git operation so the remote's
425
+ * credential can never expire mid-review. Callable only with a review
426
+ * session's own toolbelt credential; `conversationId` is the REVIEWED
427
+ * session's conversation (`AGENT_COMPOSE_REVIEW_OF_CONVERSATION_ID`).
428
+ *
429
+ * Failures: 403 `session_credential_required` | `not_review_session`;
430
+ * 409 `review_disabled` | `git_remote_unavailable` (legacy plane — read
431
+ * the proposal through `getSessionChanges` instead). */
432
+ getReviewGitCredential(conversationId: string): Promise<ReviewGitCredential>;
328
433
  /** Approve the session's proposed changes: 3-way merge its branch into
329
434
  * `main`, then continue the session on a fresh branch off post-merge
330
435
  * `main`. Write-tier + human caller. Pass `opts.branch` (the branch you
331
436
  * reviewed) to fail 409 `branch_changed` if it moved since.
332
437
  *
438
+ * On a merge-GATED session (merge-gate spec) a non-approver's call does
439
+ * NOT merge: it answers 202 `SessionMergeGated` — the ask froze into (or
440
+ * converged on) a kind='merge' approval routed to the session's
441
+ * approvers. Discriminate on `object`.
442
+ *
333
443
  * Failures: 403 `role_read_only` (read-only member) or a plain 403 for
334
444
  * session toolbelt keys (agents cannot self-approve); 409 `turn_active`
335
445
  * (a turn is running — retry when idle) | `branch_changed`; 400
@@ -338,7 +448,7 @@ export declare class AgentComposeClient {
338
448
  * named in the body) | `rebranch_failed` (merge landed; retry safe). */
339
449
  mergeSessionChanges(conversationId: string, opts?: {
340
450
  branch?: string;
341
- }): Promise<SessionMergeReport>;
451
+ }): Promise<SessionMergeReport | SessionMergeGated>;
342
452
  /** Reject the session's proposed changes: abandon its branch (retained
343
453
  * dormant, never deleted — an admin re-merge can recover a mistaken
344
454
  * discard) and continue the session on a fresh branch off `main`.
@@ -347,6 +457,39 @@ export declare class AgentComposeClient {
347
457
  discardSessionChanges(conversationId: string, opts?: {
348
458
  branch?: string;
349
459
  }): Promise<SessionDiscardReport>;
460
+ /** The conflict PREFLIGHT: which of the session's changed files would
461
+ * conflict with main if merged right now — the real merge's own per-file
462
+ * classification, report-only (no writes, no locks). Read-tier.
463
+ * Discriminate on `state`: `pending` means a cold compute is still
464
+ * running — poll again to collect it; `unavailable` = no cheap anchors
465
+ * (legacy plane / unbranched) — degrade honestly. */
466
+ getSessionChangePreflight(conversationId: string): Promise<SessionChangePreflight>;
467
+ /** Rebase the session's branch ON main — fold main's current state
468
+ * into the session's workspace (the reverse merge; main is never
469
+ * touched). Conflicting files KEEP the session's version: each is
470
+ * recorded as a conflict row and the session is told in-conversation to
471
+ * reconcile. Write-tier — a session's own toolbelt key may rebase its
472
+ * OWN branch (unlike merge/discard, which need a human). Pass
473
+ * `opts.branch` to fail 409 `branch_changed` if it rotated since review.
474
+ *
475
+ * Failures: 409 `plane_unsupported` (legacy drive plane) |
476
+ * `review_session_scratch` | `branch_moved` (the branch advanced
477
+ * mid-rebase — retry) | `turn_active` | `decision_in_progress` |
478
+ * `freshen_failed` / `merge_retry` (mount mid-handoff — retry); 400
479
+ * `no_branch`; 502 `rebase_failed` (nothing changed — retry-safe). */
480
+ rebaseSessionChanges(conversationId: string, opts?: {
481
+ branch?: string;
482
+ }): Promise<SessionRebaseReport>;
483
+ /** Arm/disarm the OPT-IN main-advance auto-rebase reflex for a session
484
+ * (default OFF): when armed and the drive's main moves, the platform
485
+ * preflights and — only on a provably clean fold (zero conflicts) —
486
+ * rebases the session's branch from main headlessly, posting a quiet
487
+ * receipt. Trade-off (why default OFF): the agent's view of files it
488
+ * did not touch can change mid-task. Human, write-tier act.
489
+ *
490
+ * Failures: 409 `review_session_scratch` | `plane_unsupported`; 403
491
+ * (needs a user-bound human caller with write access). */
492
+ setSessionAutoRebase(conversationId: string, enabled: boolean): Promise<SessionAutoRebaseState>;
350
493
  /** The conversation's member roster with roles. Solo conversations
351
494
  * return an empty roster; a dm returns the pair. */
352
495
  getConversationMembers(conversationId: string): Promise<ConversationMember[]>;
@@ -383,10 +526,14 @@ export declare class AgentComposeClient {
383
526
  * scoped, not surface-scoped: any member can cancel, whichever surface
384
527
  * started the turn. The canceled turn closes with a terminal error part
385
528
  * (it is never re-run); a message sent after it stays queued and is
386
- * answered next. `canceled: false` = nothing was in flight. Requires
529
+ * answered next. `canceled: false` = nothing was in flight. `owed`
530
+ * reports the queued-backlog kick: 'dispatched' = a turn answering the
531
+ * queue was started by this call; 'held' = a live release loop owns the
532
+ * backlog; 'none' = nothing queued (absent on older servers). Requires
387
533
  * the `invoke` scope. */
388
534
  cancelConversationTurn(conversationId: string): Promise<{
389
535
  canceled: boolean;
536
+ owed?: "dispatched" | "held" | "none";
390
537
  }>;
391
538
  /** Announce this client as ATTACHED to a conversation (ADR-0037 §6) —
392
539
  * beat every ~30s while a surface shows the transcript. Each beat fans
@@ -417,6 +564,12 @@ export declare class AgentComposeClient {
417
564
  /** Search a factory drive's live files — path substring OR full-text match
418
565
  * on extracted content. Cursor-paginated by path. */
419
566
  searchFactoryFiles(query: string, opts?: SearchFactoryFilesOptions): Promise<FactoryFileSearchResult>;
567
+ /** List a factory drive's files — a flat recursive listing, cursor-
568
+ * paginated by path. The live index by default; pass `at` (a retained
569
+ * 64-hex commit) to browse the MAIN drive as of that head — read-only
570
+ * time travel, with `branch` + `at` pinning a graph branch instead. A
571
+ * garbage-collected/unknown head throws 410 `at_unavailable`. */
572
+ listFactoryFiles(opts?: ListFactoryFilesOptions): Promise<FactoryFileListPage>;
420
573
  /** List the human members of your team — the people you (or an agent) can
421
574
  * @-flag with `createMentions`. Each row's `userId` is what
422
575
  * `mentionedUserIds` expects. */
@@ -575,12 +728,13 @@ export declare class AgentComposeClient {
575
728
  listRepoLinks(opts?: {
576
729
  factorySlug?: string;
577
730
  }): Promise<DriveRepoLink[]>;
578
- /** Link a drive directory to a GitHub repo + tracked branch (`manage`
579
- * scope). Requires the drive to be graph-authoritative — 409 names the
580
- * promotion prerequisite otherwise. */
731
+ /** Link a drive directory to a GitHub repo's tracked BRANCHES (`manage`
732
+ * scope) — one link row per branch, created in one action. Requires the
733
+ * drive to be graph-authoritative — 409 names the promotion
734
+ * prerequisite otherwise. */
581
735
  createRepoLink(input: CreateDriveRepoLinkInput, opts?: {
582
736
  factorySlug?: string;
583
- }): Promise<DriveRepoLink>;
737
+ }): Promise<DriveRepoLink[]>;
584
738
  /** Unlink (§6.3: the prefix's files and history stay on the drive). */
585
739
  deleteRepoLink(linkId: string, opts?: {
586
740
  factorySlug?: string;
@@ -591,6 +745,25 @@ export declare class AgentComposeClient {
591
745
  listFactorySecrets(opts?: SecretOptions): Promise<SecretListEntry[]>;
592
746
  /** Delete a factory-level secret. */
593
747
  deleteFactorySecret(key: string, opts?: SecretOptions): Promise<void>;
748
+ /** List a session's secrets (names + metadata only — values are never returned). */
749
+ listSessionSecrets(conversationId: string): Promise<SessionSecretEntry[]>;
750
+ /** Set session secrets (bulk-friendly): value entries and/or `source:
751
+ * "factory"` attachments-by-name. Returns the keys that were set. */
752
+ setSessionSecrets(conversationId: string, secrets: SessionSecretInput[]): Promise<string[]>;
753
+ /** Delete one session secret (owner or team admin). */
754
+ deleteSessionSecret(conversationId: string, key: string): Promise<void>;
755
+ /** Mint a VAULT LINK for this session — a short-lived, single-use page
756
+ * where a session writer types the named credentials straight into the
757
+ * session's secret store (they never transit the chat). Posts a card
758
+ * into the session conversation; callable with the session's own
759
+ * toolbelt credential (the in-sandbox agent's door) or by a session
760
+ * writer. */
761
+ requestSessionSecrets(conversationId: string, keys: string[], opts?: {
762
+ reason?: string;
763
+ }): Promise<SessionSecretRequestCreated>;
764
+ /** Poll a vault link's status (`pending` → `fulfilled`; `expired` when the
765
+ * clock ran out). The in-sandbox `agentc secrets request --wait` loop. */
766
+ getSessionSecretRequest(conversationId: string, requestId: string): Promise<SessionSecretRequestStatus>;
594
767
  /** Create a new API key on the caller's team. The plaintext `key` is
595
768
  * returned once — it cannot be retrieved later.
596
769
  *
@@ -598,8 +771,9 @@ export declare class AgentComposeClient {
598
771
  * Factory-scoped keys can only mint other keys bound to the same factory. */
599
772
  createApiKey(input: CreateApiKeyInput): Promise<ApiKeyCreated>;
600
773
  /** List API keys on the caller's team (metadata only — plaintext keys are
601
- * never returned). */
602
- listApiKeys(): Promise<ApiKey[]>;
774
+ * never returned). Bounded + keyset-paginated: pass `cursor` from the
775
+ * previous page's `nextCursor` to walk forward. */
776
+ listApiKeys(opts?: ListApiKeysOptions): Promise<ApiKeyPage>;
603
777
  /** Billable usage rollup for the caller's team over the [from, to) window. */
604
778
  getUsage(from: Date, to: Date): Promise<UsageResponse>;
605
779
  /** Cancel an in-progress run. Idempotent: cancelling an already-terminal
package/dist/display.d.ts CHANGED
@@ -100,6 +100,16 @@ export type DisplayMarker = {
100
100
  prompt: string;
101
101
  options?: DisplayAskOption[];
102
102
  freeText: boolean;
103
+ }
104
+ /** A desktop snapshot (`agentc display desktop`): the CLI captured the
105
+ * session VM's screen to `path` on the session's drive branch. The card
106
+ * renders the snapshot + an "Open desktop" door to the live surface. */
107
+ | {
108
+ kind: "desktop";
109
+ path: string;
110
+ factorySlug?: string;
111
+ capturedAt?: string;
112
+ note?: string;
103
113
  };
104
114
  /** Clamp raw plan entries to the marker/part bounds; invalid rows drop. */
105
115
  export declare function clampPlanEntries(raw: unknown): DisplayPlanEntry[];
@@ -150,6 +160,8 @@ export declare const ASK_OPTION_LABEL_MAX_CHARS = 200;
150
160
  /** Normalize + clamp ask options. Accepts `["a","b"]` (id = label) or
151
161
  * `[{ id, label }]`; invalid entries drop, duplicate ids drop. */
152
162
  export declare function clampAskOptions(raw: unknown): DisplayAskOption[];
163
+ /** Desktop-snapshot note bound — one caption line on the card. */
164
+ export declare const DESKTOP_NOTE_MAX_CHARS = 200;
153
165
  /** One-line JSON marker — exactly what `agentc display` prints. */
154
166
  export declare function serializeDisplayMarker(marker: DisplayMarker): string;
155
167
  /** Parse one line as a display marker; null when it isn't one (or fails
@@ -176,6 +188,11 @@ export type AgentcInvocation = {
176
188
  path: string;
177
189
  factorySlug?: string;
178
190
  }
191
+ /** `agentc display desktop` — the CLI captures the screen itself, so the
192
+ * call has no positional path; the marker in the result names the file. */
193
+ | {
194
+ verb: "display-desktop";
195
+ }
179
196
  /** Directive verb — detection only arms the tool_call promotion; the
180
197
  * result keeps its raw output so the directive marker reaches the cloud
181
198
  * executor. Same for table `source:"file"`, diff, and ask-with-approver. */
package/dist/index.d.ts CHANGED
@@ -14,7 +14,7 @@ export { defineRuntime } from "./types/runtime.js";
14
14
  export { defineWorkflow } from "./types/workflow.js";
15
15
  export { defineSandboxEnvironment } from "./types/sandbox-environment.js";
16
16
  export type { SandboxEnvironmentDefinition } from "./types/sandbox-environment.js";
17
- export type { AgentRuntime, McpServerConfig, ModelExecutionContract, ToolCallGateResult, RuntimeOptions, } from "./types/runtime.js";
17
+ export type { AgentRuntime, McpServerConfig, ModelExecutionContract, RunnerLivenessVerdict, ToolCallGateResult, RuntimeOptions, TurnExitNotify, } from "./types/runtime.js";
18
18
  export type { WorkflowRun, AgentBudget, WorkflowHooks, SnapshotConfig, BootSnapshot, ReuseSnapshot, IOSchema, OutputSchema, } from "./types/workflow.js";
19
19
  export type { ConnectorRequestRules } from "./types/workflow-metadata.js";
20
20
  export type { RunSnapshotEntry } from "./client.js";
@@ -24,10 +24,10 @@ export { RequestContext, ReservedKeyError, NonSerialisableValueError, AC_RESERVE
24
24
  export type { RequestContextReserved, RequestContextWire, } from "./request-context/index.js";
25
25
  export { Verdict, runProcessorChain, denyTools, humanApproval, requireScope, redactPattern, createGatePauseProcessor, createAskHumanProcessor, ASK_USER_QUESTION_TOOL, } from "./processors/index.js";
26
26
  export type { Processor, ProcessorContext, ProcessorVerdict, ToolCall, GatePausePolicy, GatePauseApproval, GatePauseConnection, } from "./processors/index.js";
27
- export type { AgentMessage, AgentMessageInit, AgentMessageText, AgentMessageThinking, AgentMessageToolUse, AgentMessageToolResult, AgentMessageDone, AgentMessageError, AgentMessageUsage, AgentStatus, } from "./types/protocol.js";
27
+ export type { AgentMessage, AgentMessageInit, AgentMessageText, AgentMessageThinking, AgentMessageToolUse, AgentMessageToolResult, AgentMessageDone, AgentMessageError, AgentMessageUsage, AgentMessageTaskNotification, AgentStatus, } from "./types/protocol.js";
28
28
  export type { SandboxProvider, DesktopSandboxProvider, SandboxPtyOpts, SandboxPtyHandle, } from "./types/sandbox.js";
29
29
  export { AgentComposeClient } from "./client.js";
30
- export type { RegisterResult, RegisterWorkflowInput, RuntimeSourceInput, TemplateSourceRef, InvokeWorkflowOptions, InvokeAndWaitOptions, InvokeResult, FundingChoice, InlineWorkflowPayload, InvokeInlineOptions, InvokeInlineAndWaitOptions, ListSnapshotsOptions, TemplateRow, ListTemplatesOptions, CreateFactoryInput, UpdateFactoryInput, SecretOptions, SetSecretResult, SecretListEntry, CreateApiKeyInput, StreamRunLogsOptions, TeamMember, Mention, CreateMentionsInput, EventSubjectType, EventRow, ReportEventInput, ListEventsOptions, ListEventsResult, RunLogLine, ListRunLogsOptions, RunListEntry, ListRunsOptions, RunDetail, FundingLane, RunFundingStamp, RunFundingUsageRow, RunFundingResponse, RegisteredRuntime, RunState, RunStatus, FactoryRow, SnapshotListEntry, SnapshotListResponse, ApiKey, ApiKeyCreated, UsageRollupRow, UsageResponse, CancelRunResponse, RequestAgentPauseOptions, RequestAgentPauseResponse, SendAgentMessageOptions, SendAgentMessageResponse, AnswerSteerOptions, ResumePauseOptions, ResumePauseResponse, ResumePauseSuccess, ResumePausePending, ResumePauseActor, ConversationMessagePart, ConversationRow, ConversationMessageRow, ConversationsPage, ConversationDetail, ConversationThread, ConversationPageContext, SendConversationMessageInput, SendConversationMessageResult, ConversationTurnState, ConversationPresenceSnapshot, StreamConversationOptions, AgentListRow, CreateCloudSessionInput, CloudSessionCreated, SessionPreview, PreviewOpened, OpenPreviewInput, SessionForked, SessionFileChange, SessionChangeSet, SessionMergeReportDetail, SessionMergeReport, SessionDiscardReport, DriveMountSession, CreateDriveMountSessionInput, ChannelSessionStatus, ChannelSessionRow, ChannelSessionsResponse, SessionChannelMessagePosted, FactoryFileSearchRow, FactoryFolderSearchRow, SearchFactoryFilesOptions, FactoryFileSearchResult, PublicFileLinkState, ConversationMemberRole, ConversationMember, DocumentCapability, TemplateCapability, ScopeGrant, ArtifactScope, RunContext, SetScopeGrantsInput, SetTemplateScopeInput, TemplateDetail, Project, ProjectsPage, ProjectRole, ProjectMember, ProjectObject, ProjectObjectsPage, ProjectSkippedFile, ProjectPreviewFile, ProjectAddPreview, AddProjectObjectInput, AddProjectObjectResult, RefreshProjectObjectResult, ComplianceScopeKind, ComplianceStatus, ComplianceSession, ComplianceAccess, RequestComplianceSessionInput, ListComplianceSessionsOptions, ComplianceSessionsPage, ListComplianceAccessesOptions, ComplianceAccessesPage, } from "./client.js";
30
+ export type { RegisterResult, RegisterWorkflowInput, RuntimeSourceInput, TemplateSourceRef, InvokeWorkflowOptions, InvokeAndWaitOptions, InvokeResult, FundingChoice, InlineWorkflowPayload, InvokeInlineOptions, InvokeInlineAndWaitOptions, ListSnapshotsOptions, TemplateRow, ListTemplatesOptions, CreateFactoryInput, UpdateFactoryInput, SecretOptions, SetSecretResult, SecretListEntry, SessionSecretEntry, SessionSecretInput, SessionSecretRequestCreated, SessionSecretRequestStatus, CreateApiKeyInput, StreamRunLogsOptions, TeamMember, Mention, CreateMentionsInput, EventSubjectType, EventRow, ReportEventInput, ListEventsOptions, ListEventsResult, RunLogLine, ListRunLogsOptions, RunListEntry, ListRunsOptions, RunDetail, FundingLane, RunFundingStamp, RunFundingUsageRow, RunFundingResponse, RunStepUsage, RunStepUsageResponse, RegisteredRuntime, RunState, RunStatus, FactoryRow, SnapshotListEntry, SnapshotListResponse, ApiKey, ApiKeyCreated, ListApiKeysOptions, ApiKeyPage, UsageRollupRow, UsageResponse, CancelRunResponse, RequestAgentPauseOptions, RequestAgentPauseResponse, SendAgentMessageOptions, SendAgentMessageResponse, AnswerSteerOptions, ResumePauseOptions, ResumePauseResponse, ResumePauseSuccess, ResumePausePending, ResumePauseActor, ConversationMessagePart, ConversationRow, ConversationMessageRow, ConversationsPage, ConversationDetail, ConversationThread, ConversationPageContext, SendConversationMessageInput, SendConversationMessageResult, UnnotifiedMention, ConversationTurnState, ConversationPresenceSnapshot, StreamConversationOptions, AgentListRow, CreateCloudSessionInput, CloudSessionCreated, SessionPreview, PreviewOpened, OpenPreviewInput, SessionForked, BackgroundWorkHeld, SessionFileChange, SessionChangeSet, SessionChangeStats, SessionDiffReviewBound, ReviewSuggestion, ReviewSuggestionInput, ReviewNotesPublished, ReviewGitCredential, SessionReviewDocument, ReviewSuggestionDecision, ReviewSuggestionDecisions, SessionMergeReportDetail, SessionMergeReport, SessionMergeGated, SessionDiscardReport, SessionPreflightFileRow, SessionChangePreflight, SessionRebaseReport, DriveMountSession, CreateDriveMountSessionInput, ChannelSessionStatus, ChannelSessionRow, ChannelSessionsResponse, SessionChannelMessagePosted, SessionDirectMessageSent, BranchClaimInfo, BranchClaimGranted, BranchClaimsReleased, BranchClaimState, SessionPerfBucket, SessionPerfHistoryPage, FactoryPerfSummary, FactoryFileSearchRow, FactoryFolderSearchRow, SearchFactoryFilesOptions, FactoryFileSearchResult, PublicFileLinkState, FactoryFileListRow, ListFactoryFilesOptions, FactoryFileListPage, ConversationMemberRole, ConversationMember, DocumentCapability, TemplateCapability, ScopeGrant, ArtifactScope, RunContext, SetScopeGrantsInput, SetTemplateScopeInput, TemplateDetail, Project, ProjectsPage, ProjectRole, ProjectMember, ProjectObject, ProjectObjectsPage, ProjectSkippedFile, ProjectPreviewFile, ProjectAddPreview, AddProjectObjectInput, AddProjectObjectResult, RefreshProjectObjectResult, ComplianceScopeKind, ComplianceStatus, ComplianceSession, ComplianceAccess, RequestComplianceSessionInput, ListComplianceSessionsOptions, ComplianceSessionsPage, ListComplianceAccessesOptions, ComplianceAccessesPage, } from "./client.js";
31
31
  export { parseSseStream } from "./sse.js";
32
32
  export { renderDirectiveMarker, parseDirectiveMarkers, DIRECTIVE_MARKER_PREFIX, DIRECTIVE_MARKER_SUFFIX, MAX_DIRECTIVES_PER_OUTPUT, REVISION_SELECTOR_RE, ASK_DIRECTIVE_PROMPT_MAX, ASK_DIRECTIVE_MAX_OPTIONS, ASK_DIRECTIVE_OPTION_ID_MAX, ASK_DIRECTIVE_OPTION_LABEL_MAX, ASK_APPROVER_MIN, ASK_APPROVER_MAX, } from "./directives.js";
33
33
  export type { CloudDirective } from "./directives.js";
@@ -51,6 +51,10 @@ export { createCodexRuntime, codexSpec } from "./runtimes/codex.js";
51
51
  export type { CodexRuntimeConfig, CodexReasoningEffort } from "./runtimes/codex.js";
52
52
  export { default as codexRuntime } from "./runtimes/codex.js";
53
53
  export type { CliReasoningEffort } from "./runtimes/_cli-agent.js";
54
+ export { shellQuote, uniquePromptPath, turnLivenessProbeCommand, parseTurnProbeOutput, livenessVerdictFromReading, runnerBusySentinelFragment, exitEventPushCommand, injectAppendAndAckCommand, INJECT_ACK_EXEC_TIMEOUT_MS, streamInputFeederFragment, sessionEnvSourceFragment, credEnvSourceFragment, residentFeederFragment, residentIdleCheckFragment, residentIdleWatchdogFragment, residentResultCountCommand, deferredExitEventPushCommand, RESIDENT_IDLE_TTL_S, RESIDENT_WATCHDOG_POLL_S, RESIDENT_RESULT_LINE_PREFIX, SESSION_ENV_FILE_RELPATH, LAUNCH_EXEC_TIMEOUT_MS, TURN_PROBE_TIMEOUT_MS, INSTALL_PROBE_TIMEOUT_MS, CLI_INSTALL_TIMEOUT_MS, RUNNER_HEARTBEAT_INTERVAL_SECONDS, RUNNER_HEARTBEAT_STALE_MS, } from "./runtimes/_cli-agent.js";
55
+ export type { TurnProbeReading, CliAgentSpec } from "./runtimes/_cli-agent.js";
56
+ export { perfSamplerFunctionFragment, standalonePerfProbeCommand, parsePerfToken, parsePerfProbeOutput, PERF_SAMPLE_EVERY_BEATS, PERF_PROBE_WINDOW_SECONDS, PERF_TOKEN_MAX_CHARS, } from "./agent/perf-sampler.js";
57
+ export type { GuestPerfSample } from "./agent/perf-sampler.js";
54
58
  export { createAmpRuntime } from "./runtimes/amp.js";
55
59
  export type { AmpRuntimeConfig } from "./runtimes/amp.js";
56
60
  export { default as ampRuntime } from "./runtimes/amp.js";
@@ -69,7 +73,7 @@ export { default as claudeCodeRuntime } from "./runtimes/claude-code.js";
69
73
  export { bashTool, codingTools, editTool, readTool, writeTool } from "./tools/index.js";
70
74
  export type { CodingTool } from "./tools/index.js";
71
75
  export type { RunEvent } from "./types/events.js";
72
- export { createSandbox, reconnectSandbox, killAllSandboxes, killSandboxById, getSandboxQuotas, listOwnedSandboxes, deleteSandboxSnapshot, snapshotResolves, makeSandboxProvider, makeDesktopSandboxProvider, parseSseExecStream, AGENT_COMPOSE_TAG, SANDBOX_VCPUS, DEFAULT_SANDBOX_SIZE, E2B_TEMPLATE_SIZES, isE2bSupportedSize, e2bMachineSpec, e2bBaseTemplate, e2bAgentEnvTemplate, isPlatformE2bTemplateAlias, E2B_DEVBOX_TEMPLATE, E2B_DEVBOX_SPEC, E2B_DEVBOX_RECIPE_VERSION, e2bDevboxTemplateRef } from "./sandbox.js";
76
+ export { createSandbox, reconnectSandbox, killAllSandboxes, killSandboxById, getSandboxQuotas, listOwnedSandboxes, deleteSandboxSnapshot, snapshotResolves, makeSandboxProvider, makeDesktopSandboxProvider, parseSseExecStream, AGENT_COMPOSE_TAG, SANDBOX_SIZES, SANDBOX_MACHINES, SANDBOX_VCPUS, DEFAULT_SANDBOX_SIZE, SESSION_DEFAULT_SANDBOX_SIZE, E2B_TEMPLATE_SIZES, E2B_MAX_VCPUS, E2B_MAX_MEMORY_MB, VERCEL_MEMORY_MB_PER_VCPU, isE2bSupportedSize, isVercelSupportedSize, sandboxSizeLabel, e2bMachineSpec, e2bBaseTemplate, e2bAgentEnvTemplate, isPlatformE2bTemplateAlias, E2B_DEVBOX_TEMPLATE, E2B_DEVBOX_SPEC, E2B_DEVBOX_RECIPE_VERSION, e2bDevboxTemplateRef } from "./sandbox.js";
73
77
  export { SandboxUnavailableError, SANDBOX_UNAVAILABLE_PREFIX } from "./sandbox-errors.js";
74
78
  export type { SandboxCreateOpts, SandboxNetworkPolicy, SandboxNetworkHeaderTransform, SandboxNetworkAllowRule, SandboxNetworkSubnetPolicy, SandboxProviderName, SandboxQuotaResult, OwnedSandboxResult, OwnedSandbox, SandboxSize, ParseSseExecStreamOptions, SandboxCommandRunOptions, SandboxCommandResult, } from "./sandbox.js";
75
79
  export type { SandboxResources, DriveMergePolicy } from "./types/workflow-metadata.js";
@@ -92,7 +96,12 @@ export { agent } from "./agent/run-agent.js";
92
96
  export type { AgentOpts } from "./agent/run-agent.js";
93
97
  export { AGENT_COMPOSE_MANUAL, buildAgentContextDoc, writeAgentContext, buildAddedSessionBrief } from "./agent/agent-context.js";
94
98
  export type { AgentConnectorInfo, AddedSessionBriefParams } from "./agent/agent-context.js";
99
+ export { AC_OPEN_PATH, AC_OPEN_STATE_DIR, AC_OPEN_SHIM_PATHS, AC_OPEN_SCRIPT, AC_OPEN_SHIM, installDesktopOpenCmd, BROWSER_BACKFILL_PIDFILE, BROWSER_BACKFILL_LOG, BROWSER_BACKFILL_FAILED, BROWSER_INSTALL_IN_PROGRESS_MSG, browserBackfillCmd, browserBackfillStatusCmd, CHROMIUM_DEFAULTS, CHROMIUM_DEFAULTS_PATH, installChromiumDefaultsCmd, } from "./agent/desktop-open.js";
100
+ export { SERVICES_MANIFEST_RELPATH, SERVICES_MAX, SERVICE_NAME_RE, parseServicesManifest, renderServicesManifest, } from "./agent/services-manifest.js";
101
+ export type { ServiceEntry, ServiceHealth, ServiceDataHooks, ServicesManifest, ParseServicesManifestResult, } from "./agent/services-manifest.js";
102
+ export { SERVICES_STATE_DIR, SERVICE_STATUS_PREFIX, SERVICE_HEALTH_TIMEOUT_S, servicesRestoreScript, servicesDumpScript, parseServicesRestoreOutput, formatServicesRestoreSummary, } from "./agent/services-restore.js";
103
+ export type { ServiceRestoreOutcome, ServiceRestoreStatus } from "./agent/services-restore.js";
95
104
  export { AgentMessageSchema, parseAgentResponse } from "./agent/protocol.js";
96
105
  export { importSourceModule, TMP_DIR, LATEST_VERSION } from "./utils/source-loader.js";
97
- export { DISPLAY_MARKER_KEY, DISPLAY_MARKER_VERSION, PLAN_MAX_ENTRIES, PLAN_ENTRY_MAX_CHARS, TABLE_MAX_COLUMNS, TABLE_MAX_ROWS, TABLE_CELL_MAX_CHARS, CHART_MAX_SERIES, CHART_MAX_POINTS_PER_SERIES, CHART_LABEL_MAX_CHARS, ASK_PROMPT_MAX_CHARS, ASK_MAX_OPTIONS, ASK_OPTION_ID_MAX_CHARS, ASK_OPTION_LABEL_MAX_CHARS, DRIVE_PATH_MAX_CHARS, isPlausibleDrivePath, serializeDisplayMarker, parseDisplayMarker, findDisplayMarker, clampPlanEntries, clampTableData, clampChartSeries, clampChartAxisLabel, clampAskOptions, detectAgentcInvocation, shellWords, createDisplayPromoter, } from "./display.js";
106
+ export { DISPLAY_MARKER_KEY, DISPLAY_MARKER_VERSION, PLAN_MAX_ENTRIES, PLAN_ENTRY_MAX_CHARS, TABLE_MAX_COLUMNS, TABLE_MAX_ROWS, TABLE_CELL_MAX_CHARS, CHART_MAX_SERIES, CHART_MAX_POINTS_PER_SERIES, CHART_LABEL_MAX_CHARS, ASK_PROMPT_MAX_CHARS, ASK_MAX_OPTIONS, ASK_OPTION_ID_MAX_CHARS, ASK_OPTION_LABEL_MAX_CHARS, DESKTOP_NOTE_MAX_CHARS, DRIVE_PATH_MAX_CHARS, isPlausibleDrivePath, serializeDisplayMarker, parseDisplayMarker, findDisplayMarker, clampPlanEntries, clampTableData, clampChartSeries, clampChartAxisLabel, clampAskOptions, detectAgentcInvocation, shellWords, createDisplayPromoter, } from "./display.js";
98
107
  export type { DisplayMarker, DisplayPlanEntry, DisplayPlanStatus, DisplayTableCell, DisplayTableColumn, DisplayTableData, DisplayChartKind, DisplayChartPoint, DisplayChartSeries, DisplayAskOption, AgentcInvocation, PromotedPart, DisplayPromoter, DisplayPromoterContext, } from "./display.js";