@agent-compose/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.
Files changed (40) 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 +164 -8
  9. package/dist/display.d.ts +17 -0
  10. package/dist/index.d.ts +13 -4
  11. package/dist/index.js +1374 -51
  12. package/dist/runtimes/_cli-agent.d.ts +347 -2
  13. package/dist/runtimes/claude-code.d.ts +12 -0
  14. package/dist/runtimes/codex.d.ts +8 -0
  15. package/dist/runtimes/openai-desktop.js +1312 -51
  16. package/dist/runtimes/session-env.test.d.ts +14 -0
  17. package/dist/types/api-conversations.d.ts +309 -1
  18. package/dist/types/api-factory.d.ts +115 -10
  19. package/dist/types/api-runs.d.ts +21 -0
  20. package/dist/types/protocol.d.ts +32 -1
  21. package/dist/types/runtime.d.ts +120 -0
  22. package/package.json +1 -1
  23. package/src/agent/agent-context.ts +100 -11
  24. package/src/agent/agent-loop.ts +10 -3
  25. package/src/agent/desktop-open.ts +418 -0
  26. package/src/agent/perf-sampler.ts +202 -0
  27. package/src/agent/services-manifest.ts +356 -0
  28. package/src/agent/services-restore.ts +195 -0
  29. package/src/client.ts +328 -12
  30. package/src/display.ts +44 -1
  31. package/src/index.ts +63 -1
  32. package/src/runtimes/_cli-agent.ts +891 -35
  33. package/src/runtimes/claude-code.ts +187 -12
  34. package/src/runtimes/codex.ts +58 -1
  35. package/src/sandbox/providers/local.ts +16 -4
  36. package/src/types/api-conversations.ts +307 -3
  37. package/src/types/api-factory.ts +118 -10
  38. package/src/types/api-runs.ts +23 -0
  39. package/src/types/protocol.ts +30 -1
  40. package/src/types/runtime.ts +122 -0
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, BackgroundWorkHeld, SessionChangeSet, SessionMergeGated, 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, ApiKeyCreated, ListApiKeysOptions, ApiKeyPage, 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, BackgroundWorkHeld, SessionFileChange, SessionChangeSet, SessionChangeStats, SessionDiffReviewBound, ReviewSuggestion, ReviewSuggestionDecision, ReviewSuggestionDecisions, SessionMergeReportDetail, SessionMergeReport, SessionMergeGated, SessionDiscardReport, ConversationPageContext, SendConversationMessageInput, ConversationTurnState, SendConversationMessageResult, UnnotifiedMention, 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, ListApiKeysOptions, ApiKeyPage, 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
@@ -335,7 +389,47 @@ export declare class AgentComposeClient {
335
389
  * writes `main` directly. The list reflects the branch's last flush and
336
390
  * is advisory; a merge re-verifies against fresh state. 404 = not found
337
391
  * or not a member (uniform). */
338
- 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>;
339
433
  /** Approve the session's proposed changes: 3-way merge its branch into
340
434
  * `main`, then continue the session on a fresh branch off post-merge
341
435
  * `main`. Write-tier + human caller. Pass `opts.branch` (the branch you
@@ -363,6 +457,39 @@ export declare class AgentComposeClient {
363
457
  discardSessionChanges(conversationId: string, opts?: {
364
458
  branch?: string;
365
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>;
366
493
  /** The conversation's member roster with roles. Solo conversations
367
494
  * return an empty roster; a dm returns the pair. */
368
495
  getConversationMembers(conversationId: string): Promise<ConversationMember[]>;
@@ -399,10 +526,14 @@ export declare class AgentComposeClient {
399
526
  * scoped, not surface-scoped: any member can cancel, whichever surface
400
527
  * started the turn. The canceled turn closes with a terminal error part
401
528
  * (it is never re-run); a message sent after it stays queued and is
402
- * 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
403
533
  * the `invoke` scope. */
404
534
  cancelConversationTurn(conversationId: string): Promise<{
405
535
  canceled: boolean;
536
+ owed?: "dispatched" | "held" | "none";
406
537
  }>;
407
538
  /** Announce this client as ATTACHED to a conversation (ADR-0037 §6) —
408
539
  * beat every ~30s while a surface shows the transcript. Each beat fans
@@ -433,6 +564,12 @@ export declare class AgentComposeClient {
433
564
  /** Search a factory drive's live files — path substring OR full-text match
434
565
  * on extracted content. Cursor-paginated by path. */
435
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>;
436
573
  /** List the human members of your team — the people you (or an agent) can
437
574
  * @-flag with `createMentions`. Each row's `userId` is what
438
575
  * `mentionedUserIds` expects. */
@@ -608,6 +745,25 @@ export declare class AgentComposeClient {
608
745
  listFactorySecrets(opts?: SecretOptions): Promise<SecretListEntry[]>;
609
746
  /** Delete a factory-level secret. */
610
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>;
611
767
  /** Create a new API key on the caller's team. The plaintext `key` is
612
768
  * returned once — it cannot be retrieved later.
613
769
  *
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, 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, ReviewSuggestionDecision, ReviewSuggestionDecisions, SessionMergeReportDetail, SessionMergeReport, SessionMergeGated, 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";
@@ -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";