@opengeni/sdk 0.41.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenGeniApiError
3
- } from "./chunk-OINSI33U.js";
3
+ } from "./chunk-UD2DNDSS.js";
4
4
 
5
5
  // src/codex-realtime-v3-wire.ts
6
6
  var CODEX_REALTIME_INITIAL_ITEMS_MAX_COUNT = 128;
@@ -2015,4 +2015,4 @@ export {
2015
2015
  hasStoredSessionRealtimeOwnerProof,
2016
2016
  createCodexRealtimeController
2017
2017
  };
2018
- //# sourceMappingURL=chunk-XBBPYTI5.js.map
2018
+ //# sourceMappingURL=chunk-SLJ33Y7V.js.map
@@ -7,6 +7,7 @@ var OpenGeniApiError = class extends Error {
7
7
  /** True only when an uncontrolled transport failed after a mutation may have been accepted. */
8
8
  outcomeUnknown;
9
9
  body;
10
+ details;
10
11
  constructor(status, body, options = {}) {
11
12
  const decoded = decodeApiErrorBody(body);
12
13
  const correlationId = decoded?.requestId ?? boundedCorrelationId(options.correlationId);
@@ -22,6 +23,7 @@ var OpenGeniApiError = class extends Error {
22
23
  this.correlationId = correlationId;
23
24
  this.outcomeUnknown = options.outcomeUnknown ?? (gatewayFailure && !!options.mutation && !decoded);
24
25
  this.body = !fromResponse || decoded ? body : "";
26
+ this.details = decoded?.details;
25
27
  }
26
28
  };
27
29
  function decodeApiErrorBody(body) {
@@ -35,17 +37,34 @@ function decodeApiErrorBody(body) {
35
37
  const message = boundedApiField(nested.message);
36
38
  const requestId = boundedCorrelationId(nested.requestId);
37
39
  const retryable = typeof nested.retryable === "boolean" ? nested.retryable : void 0;
38
- if (!code && !message && !requestId && retryable === void 0) return null;
40
+ const details = boundedApiDetails(nested.details);
41
+ if (!code && !message && !requestId && retryable === void 0 && !details) return null;
39
42
  return {
40
43
  code,
41
44
  message,
42
45
  requestId,
43
- retryable
46
+ retryable,
47
+ details
44
48
  };
45
49
  } catch {
46
50
  return null;
47
51
  }
48
52
  }
53
+ function boundedApiDetails(value) {
54
+ if (!value || typeof value !== "object" || Array.isArray(value)) return;
55
+ const entries = Object.entries(value).slice(0, 16);
56
+ const details = {};
57
+ for (const [key, entry] of entries) {
58
+ if (!/^[a-zA-Z][\w.-]{0,63}$/.test(key)) continue;
59
+ if (typeof entry === "string") {
60
+ const bounded = boundedApiField(entry);
61
+ if (bounded !== void 0) details[key] = bounded;
62
+ } else if (typeof entry === "number" || typeof entry === "boolean" || entry === null) {
63
+ details[key] = entry;
64
+ }
65
+ }
66
+ return Object.keys(details).length > 0 ? details : void 0;
67
+ }
49
68
  function boundedApiField(value) {
50
69
  if (typeof value !== "string") return;
51
70
  const bytes = new TextEncoder().encode(value);
@@ -94,4 +113,4 @@ export {
94
113
  isAbortError,
95
114
  isRetryableStreamError
96
115
  };
97
- //# sourceMappingURL=chunk-OINSI33U.js.map
116
+ //# sourceMappingURL=chunk-UD2DNDSS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts"],"sourcesContent":["/** Error for a non-2xx OpenGeni API response. */\nexport class OpenGeniApiError extends Error {\n readonly status: number;\n readonly code: string | undefined;\n readonly retryable: boolean;\n readonly correlationId: string | undefined;\n /** True only when an uncontrolled transport failed after a mutation may have been accepted. */\n readonly outcomeUnknown: boolean;\n readonly body: string;\n readonly details: Record<string, unknown> | undefined;\n\n constructor(\n status: number,\n body: string,\n options: {\n code?: string | undefined;\n retryable?: boolean | undefined;\n correlationId?: string | undefined;\n outcomeUnknown?: boolean | undefined;\n displayMessage?: string | undefined;\n mutation?: boolean | undefined;\n } = {},\n ) {\n const decoded = decodeApiErrorBody(body);\n const correlationId = decoded?.requestId ?? boundedCorrelationId(options.correlationId);\n const gatewayFailure = status >= 502 && status <= 504;\n const fromResponse = options.mutation !== undefined;\n const message = decoded?.message ?? (fromResponse ? \"Request failed.\" : body || \"(empty body)\");\n const displayMessage =\n options.displayMessage ??\n (gatewayFailure && fromResponse\n ? \"OpenGeni is temporarily unavailable — retry.\"\n : `OpenGeni API ${status}: ${message}`);\n super(correlationId ? `${displayMessage} Reference: ${correlationId}.` : displayMessage);\n this.name = \"OpenGeniApiError\";\n this.status = status;\n this.code =\n options.code ??\n decoded?.code ??\n (gatewayFailure && fromResponse ? \"upstream_unavailable\" : undefined);\n this.retryable = options.retryable ?? decoded?.retryable ?? retryableApiStatus(status);\n this.correlationId = correlationId;\n this.outcomeUnknown =\n options.outcomeUnknown ?? (gatewayFailure && !!options.mutation && !decoded);\n this.body = !fromResponse || decoded ? body : \"\";\n this.details = decoded?.details;\n }\n}\n\nfunction decodeApiErrorBody(body: string): {\n code: string | undefined;\n message: string | undefined;\n requestId: string | undefined;\n retryable: boolean | undefined;\n details: Record<string, unknown> | undefined;\n} | null {\n if (!body) return null;\n try {\n const decoded: unknown = JSON.parse(body);\n if (!decoded || typeof decoded !== \"object\" || Array.isArray(decoded)) return null;\n const record = decoded as Record<string, unknown>;\n const nested =\n record.error && typeof record.error === \"object\" && !Array.isArray(record.error)\n ? (record.error as Record<string, unknown>)\n : record;\n const code = boundedApiField(nested.code);\n const message = boundedApiField(nested.message);\n const requestId = boundedCorrelationId(nested.requestId);\n const retryable = typeof nested.retryable === \"boolean\" ? nested.retryable : undefined;\n const details = boundedApiDetails(nested.details);\n if (!code && !message && !requestId && retryable === undefined && !details) return null;\n return {\n code,\n message,\n requestId,\n retryable,\n details,\n };\n } catch {\n return null;\n }\n}\n\nfunction boundedApiDetails(value: unknown): Record<string, unknown> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return;\n const entries = Object.entries(value as Record<string, unknown>).slice(0, 16);\n const details: Record<string, unknown> = {};\n for (const [key, entry] of entries) {\n if (!/^[a-zA-Z][\\w.-]{0,63}$/.test(key)) continue;\n if (typeof entry === \"string\") {\n const bounded = boundedApiField(entry);\n if (bounded !== undefined) details[key] = bounded;\n } else if (typeof entry === \"number\" || typeof entry === \"boolean\" || entry === null) {\n details[key] = entry;\n }\n }\n return Object.keys(details).length > 0 ? details : undefined;\n}\n\nfunction boundedApiField(value: unknown): string | undefined {\n if (typeof value !== \"string\") return;\n const bytes = new TextEncoder().encode(value);\n return bytes.byteLength <= 512 ? value : new TextDecoder().decode(bytes.slice(0, 512));\n}\n\nfunction retryableApiStatus(status: number): boolean {\n return status === 408 || status === 409 || status === 425 || status === 429 || status >= 500;\n}\n\nfunction boundedCorrelationId(value: unknown): string | undefined {\n if (typeof value !== \"string\" || value.length > 128 || !/^[\\w.:-]+$/.test(value)) {\n return;\n }\n return value;\n}\n\n/** A short-lived session-list snapshot cursor can no longer be continued. */\nexport class OpenGeniSessionListCursorError extends OpenGeniApiError {}\n\n/** The browser bundle and API disagree about their state-changing wire contract. */\nexport class OpenGeniApiContractMismatchError extends Error {\n readonly expected: string;\n readonly actual: string;\n\n constructor(expected: string, actual: string) {\n super(`OpenGeni API contract mismatch: client expects ${expected}, API serves ${actual}`);\n this.name = \"OpenGeniApiContractMismatchError\";\n this.expected = expected;\n this.actual = actual;\n }\n}\n\n/** Error for an unrecoverable event-stream condition (not a transient drop). */\nexport class OpenGeniStreamError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"OpenGeniStreamError\";\n }\n}\n\nexport function isAbortError(error: unknown): boolean {\n return (\n (error instanceof DOMException && error.name === \"AbortError\") ||\n (error instanceof Error && error.name === \"AbortError\")\n );\n}\n\n/**\n * Transient conditions worth a reconnect: network-level failures (`fetch`\n * rejects with `TypeError`) and HTTP statuses that signal a temporary server\n * or contention condition. Auth/validation failures (401/403/404/...) are\n * permanent and surface to the caller instead.\n */\nexport function isRetryableStreamError(error: unknown): boolean {\n if (error instanceof OpenGeniApiError) return error.retryable;\n return error instanceof TypeError;\n}\n"],"mappings":"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","names":[]}
package/dist/client.d.ts CHANGED
@@ -2,7 +2,7 @@ import { type SessionEventStreamTransport, type StreamSessionEventsOptions } fro
2
2
  import { type WorkspaceControlStreamTransport } from "./workspace-control-stream";
3
3
  import type { AccessContext, ActivateCodexRealtimeConnectionRequest, AddWorkspaceMemberRequest, ApiKey, BillingEntitlementsResponse, CodexAccount, CodexAccountsResponse, CodexRotationSettings, CodexOverviewResponse, CodexAllocatorUpdate, CodexConnectionStatus, CodexRealtimeWebrtcRequest, CodexRealtimeWebrtcResponse, GatewayRealtimeConnectRequest, GatewayRealtimeConnectResponse, CodexConnectPoll, CodexConnectStart, CodexUsage, CodexUsageMap, BillingSummary, BillingUsageResponse, InsightsRange, WorkspaceInsightsResponse, BeginSessionRealtimeRequest, CapabilityCatalogItem, CapabilityCatalogResponse, CapabilityInstallation, AddDocumentRequest, CreateKnowledgeDropRequest, MoveDocumentRequest, ClientConfig, WorkspaceModelCatalogResponse, WorkspaceRealtimeModelCatalogResponse, ClientSessionEventInput, CompactSessionContextResult, ConnectionMetadata, CreateApiKeyRequest, CreateApiKeyResponse, CreateCapabilityCatalogItemRequest, CreateCheckoutRequest, CreateCheckoutResponse, OpenGeniSlackBotInstallRequest, OpenGeniSlackBotInstallStart, SlackReactionChannelListResponse, CreateConnectionRequest, CreateDocumentBaseRequest, CreateFileUploadRequest, CreateFileUploadResponse, CreateGitHubAppManifestRequest, CreateGitHubAppManifestResponse, CreateKnowledgeMemoryRequest, CreateScheduledTaskRequest, CreateSessionRequest, CreateSessionResponse, CreateVariableSetRequest, CreateRigRequest, CreateWorkspaceRequest, DeviceEnrollmentApproveResponse, DeviceEnrollmentDenyResponse, DeviceEnrollmentLookupResponse, MintEnrollTokenResponse, EndSessionRealtimeRequest, DiscoverMcpCapabilitiesResponse, Document, DocumentBase, DocumentSearchRequest, DocumentSearchResponse, EnableCapabilityRequest, EnablePackRequest, FileAsset, FileDownloadUrlResponse, GetPackResponse, GitHubAppInfo, GitHubRepositoriesResponse, GoogleDriveDisconnectRequest, GoogleDriveLifecycleActionRequest, KnowledgeMemory, KnowledgeMemorySearchRequest, ListPacksResponse, MachinesResponse, MetricSample, SwapActiveSandboxRequest, SwapActiveSandboxResponse, PackInstallation, LatencyMode, ReasoningEffort, RetainedArtifactContent, RetainedArtifactContentOptions, RetainedArtifactMetadata, RegisterCapabilityPackRequest, ResourceRef, ScheduledTask, ScheduledTaskRun, Session, SessionListResponse, UpdateSessionPinRequest, SessionEvent, SessionEventCompactResult, SessionEventCompactResultOptions, SessionEventListOptions, SessionEventPage, SessionGoal, SessionHumanInputRequest, SessionLineageResponse, SessionRealtimeMutationResponse, SyncSessionRealtimeLedgerRequest, SyncSessionRealtimeLedgerResponse, RenewSessionRealtimeRequest, SessionMcpCredentialUpdateInput, UpdateSessionMcpApprovalPolicyRequest, UpdateSessionMcpApprovalPolicyResponse, SessionQueueSnapshot, SessionQueueMutationResponse, ComposerDraft, DeleteSessionQueueItemRequest, EditSessionQueueItemRequest, MoveSessionQueueItemRequest, NewSessionDraft, SaveComposerDraftRequest, SaveNewSessionDraftRequest, SteerSessionQueueItemRequest, SessionControlResponse, WorkspaceInferenceControlResponse, WorkspaceControlEvent, SessionTurn, SubmitHumanInputResponseRequest, SessionCapabilities, AttachViewerRequest, AttachViewerResponse, AcknowledgeStreamRequest, AcknowledgeStreamResponse, ViewerHeartbeatRequest, ViewerHeartbeatResponse, FsListRequest, FsListResponse, FsReadRequest, FsReadResponse, FsWriteRequest, FsWriteResponse, FsDeleteRequest, FsDeleteResponse, FsMoveRequest, FsMoveResponse, FsMkdirRequest, FsMkdirResponse, GitStatusRequest, GitStatusResponse, GitDiffRequest, GitDiffResponse, GitLogRequest, GitLogResponse, GitShowRequest, GitShowResponse, GetWorkspaceCaptureResponse, GetWorkspaceCaptureFileResponse, TerminalExecRequest, TerminalExecResponse, PtyOpenRequest, PtyOpenResponse, PtyWriteRequest, PtyResizeRequest, PtyCloseRequest, ToolRef, TranscribeAudioResponse, UpdateConnectionRequest, UpdateKnowledgeMemoryRequest, UpdateScheduledTaskRequest, UpdateSessionGoalRequest, UpdateSessionRequest, UpdateSessionToolPolicyRequest, UpdateVariableSetRequest, UpdateRigRequest, UpdateWorkspaceMemberRequest, UpdateWorkspaceRequest, UpdateWorkspaceSettingsRequest, SetWorkspaceDefaultRigRequest, UploadFileInput, VariableSet, VariableSetVariableMetadata, Rig, RigVersion, RigChange, ProposeRigChangeRequest, WorkspaceMember, WorkspaceMemorySearchRequest, WorkspaceMemorySearchResponse, WorkspaceRegisteredPack, Workspace, OAuthStartRequest, OAuthStartResponse, SocialConnection, SocialOAuthStartRequest } from "./types";
4
4
  import type { ActivateWorkspaceInstructionPolicyRequest, CreateWorkspaceInstructionPolicyDraftRequest, CreateWorkspaceInstructionPolicyOnboardingProposalRequest, ImportLegacyWorkspaceInstructionPolicyDraftRequest, RollbackWorkspaceInstructionPolicyRequest, WorkspaceInstructionPolicyActivationResponse, WorkspaceInstructionPolicyDiffRequest, WorkspaceInstructionPolicyDiffResponse, WorkspaceInstructionPolicyListOptions, WorkspaceInstructionPolicyListResponse, WorkspaceInstructionPolicyOnboardingProposal, WorkspaceInstructionPolicyOnboardingProposalListOptions, WorkspaceInstructionPolicyOnboardingProposalListResponse, WorkspaceInstructionPolicyRevision } from "./workspace-instruction-policies";
5
- import type { WorkspaceStateGetOptions, WorkspaceStateResponse } from "./workspace-state";
5
+ import type { WorkspaceStateExportResponse, WorkspaceStateGetOptions, WorkspaceStateResponse } from "./workspace-state";
6
6
  import type { ActivatePreferenceRegistryRevisionRequest, ChangePreferenceRegistryScopeRequest, CorrectPreferenceRegistryRequest, CreatePreferenceRegistryProposalRequest, DeactivatePreferenceRegistryRequest, PreferenceRegistryDetailResponse, PreferenceRegistryFullContent, PreferenceRegistryListOptions, PreferenceRegistryListResponse, PreferenceRegistryMutationResponse, PreferenceRegistryRecord, PreferenceRegistrySnapshot, RejectPreferenceRegistryProposalRequest, SupersedePreferenceRegistryRequest } from "./preference-registry";
7
7
  export type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
8
8
  export type WorkspaceControlEventPage = {
@@ -61,7 +61,7 @@ export declare class OpenGeniClient {
61
61
  private readonly options;
62
62
  private readonly fetchImpl;
63
63
  constructor(options: OpenGeniClientOptions);
64
- /** Upload one ephemeral browser recording. This method never retries. */
64
+ /** Make one finalization attempt for a recording; callers may retry retained audio. */
65
65
  transcribeAudio(workspaceId: string, input: TranscribeAudioInput): Promise<TranscribeAudioResponse>;
66
66
  createSession(workspaceId: string, request: CreateSessionRequest): Promise<CreateSessionResponse>;
67
67
  getNewSessionDraft(workspaceId: string): Promise<NewSessionDraft>;
@@ -391,6 +391,8 @@ export declare class OpenGeniClient {
391
391
  getWorkspace(workspaceId: string): Promise<Workspace>;
392
392
  /** Read-time, secret-safe inventory of policy heads and visible workspace knowledge. */
393
393
  getWorkspaceState(workspaceId: string, options?: WorkspaceStateGetOptions): Promise<WorkspaceStateResponse>;
394
+ /** Download the canonical, explicitly sanitized Workspace State export. */
395
+ exportWorkspaceState(workspaceId: string, options?: WorkspaceStateGetOptions): Promise<WorkspaceStateExportResponse>;
394
396
  updateWorkspace(workspaceId: string, request: UpdateWorkspaceRequest): Promise<Workspace>;
395
397
  /** Inspect immutable instruction-policy history, active heads, and activation audit evidence. */
396
398
  listWorkspaceInstructionPolicies(workspaceId: string, options?: WorkspaceInstructionPolicyListOptions): Promise<WorkspaceInstructionPolicyListResponse>;
@@ -5,8 +5,8 @@ import {
5
5
  projectSessionRealtimeLifecycle,
6
6
  sessionRealtimeOwnerStorageKey,
7
7
  sessionRealtimeOwnerStorageNamespace
8
- } from "./chunk-XBBPYTI5.js";
9
- import "./chunk-OINSI33U.js";
8
+ } from "./chunk-SLJ33Y7V.js";
9
+ import "./chunk-UD2DNDSS.js";
10
10
  export {
11
11
  CODEX_REALTIME_NEGOTIATION_TIMEOUT_MS,
12
12
  createCodexRealtimeController,
package/dist/core.js CHANGED
@@ -3,14 +3,14 @@ import {
3
3
  OPENGENI_API_CONTRACT_REVISION,
4
4
  OpenGeniClient,
5
5
  resolveWorkspaceVoiceInputEnabled
6
- } from "./chunk-DKNW4WMJ.js";
6
+ } from "./chunk-74LY67W7.js";
7
7
  import {
8
8
  OpenGeniApiContractMismatchError,
9
9
  OpenGeniApiError,
10
10
  OpenGeniSessionListCursorError,
11
11
  OpenGeniStreamError,
12
12
  isRetryableStreamError
13
- } from "./chunk-OINSI33U.js";
13
+ } from "./chunk-UD2DNDSS.js";
14
14
  export {
15
15
  OPENGENI_API_CONTRACT_HEADER,
16
16
  OPENGENI_API_CONTRACT_REVISION,
package/dist/errors.d.ts CHANGED
@@ -7,6 +7,7 @@ export declare class OpenGeniApiError extends Error {
7
7
  /** True only when an uncontrolled transport failed after a mutation may have been accepted. */
8
8
  readonly outcomeUnknown: boolean;
9
9
  readonly body: string;
10
+ readonly details: Record<string, unknown> | undefined;
10
11
  constructor(status: number, body: string, options?: {
11
12
  code?: string | undefined;
12
13
  retryable?: boolean | undefined;
package/dist/index.d.ts CHANGED
@@ -26,10 +26,10 @@ export type { WorkspaceControlStreamTransport } from "./workspace-control-stream
26
26
  export type { CreateWorkspaceArtifactRequest, PublishWorkspaceArtifactVersionRequest, RollbackWorkspaceArtifactRequest, WorkspaceArtifact, WorkspaceArtifactContentResponse, WorkspaceArtifactDetailResponse, WorkspaceArtifactEvent, WorkspaceArtifactListOptions, WorkspaceArtifactListResponse, WorkspaceArtifactMutationResponse, WorkspaceArtifactVersion, } from "./workspace-artifacts";
27
27
  export { normalizeWorkspaceInstructionPolicyRoleKey, WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS, } from "./workspace-instruction-policies";
28
28
  export type { ActivateWorkspaceInstructionPolicyRequest, CreateWorkspaceInstructionPolicyDraftRequest, CreateWorkspaceInstructionPolicyOnboardingProposalRequest, ImportLegacyWorkspaceInstructionPolicyDraftRequest, RollbackWorkspaceInstructionPolicyRequest, WorkspaceInstructionPolicyActivationEvent, WorkspaceInstructionPolicyActivationResponse, WorkspaceInstructionPolicyActivationType, WorkspaceInstructionPolicyConflictResponse, WorkspaceInstructionPolicyDiffRequest, WorkspaceInstructionPolicyDiffResponse, WorkspaceInstructionPolicyDraftProvenanceSource, WorkspaceInstructionPolicyHead, WorkspaceInstructionPolicyKind, WorkspaceInstructionPolicyListOptions, WorkspaceInstructionPolicyListResponse, WorkspaceInstructionPolicyOnboardingProposal, WorkspaceInstructionPolicyOnboardingProposalConflictResponse, WorkspaceInstructionPolicyOnboardingProposalContentErrorResponse, WorkspaceInstructionPolicyOnboardingProposalListOptions, WorkspaceInstructionPolicyOnboardingProposalListResponse, WorkspaceInstructionPolicyOnboardingProposalSource, WorkspaceInstructionPolicyOnboardingProposalStaleResponse, WorkspaceInstructionPolicyOperationReuseResponse, WorkspaceInstructionPolicyProvenanceSource, WorkspaceInstructionPolicyRevision, WorkspaceInstructionPolicyRevisionIdentity, WorkspaceInstructionPolicyScope, WorkspaceInstructionPolicyTarget, } from "./workspace-instruction-policies";
29
- export type { WorkspaceStateDocumentStatusCounts, WorkspaceStateAttemptGovernance, WorkspaceStateGapCode, WorkspaceStateGetOptions, WorkspaceStateGovernanceDriftStatus, WorkspaceStateMemoryKindCounts, WorkspaceStateMemoryStatusCounts, WorkspaceStateResponse, WorkspaceStateSourceKindCounts, } from "./workspace-state";
29
+ export type { WorkspaceStateDocumentStatusCounts, WorkspaceStateDocumentAuthorityKindCounts, WorkspaceStateAttemptGovernance, WorkspaceStateExportOmission, WorkspaceStateExportResponse, WorkspaceStateGapCode, WorkspaceStateGetOptions, WorkspaceStateGovernanceDriftStatus, WorkspaceStateMemoryKindCounts, WorkspaceStateMemoryStatusCounts, WorkspaceStateResponse, WorkspaceStateSourceKindCounts, } from "./workspace-state";
30
30
  export { normalizePreferenceRegistryStableKey } from "./preference-registry";
31
31
  export type { ActivatePreferenceRegistryRevisionRequest, ChangePreferenceRegistryScopeRequest, CorrectPreferenceRegistryRequest, CreatePreferenceRegistryProposalRequest, DeactivatePreferenceRegistryRequest, PreferenceRegistryConflictStrategy, PreferenceRegistryDescriptor, PreferenceRegistryDescriptorProvenance, PreferenceRegistryDetailResponse, PreferenceRegistryEvent, PreferenceRegistryFullContent, PreferenceRegistryListOptions, PreferenceRegistryListResponse, PreferenceRegistryMutationResponse, PreferenceRegistryPrecedence, PreferenceRegistryProvenanceSource, PreferenceRegistryRecord, PreferenceRegistryRevisionSummary, PreferenceRegistryScope, PreferenceRegistryScopeTarget, PreferenceRegistrySnapshot, PreferenceRegistryStatus, PreferenceRegistryTrust, RejectPreferenceRegistryProposalRequest, SupersedePreferenceRegistryRequest, } from "./preference-registry";
32
32
  export { DEFAULT_WORKSPACE_TRANSCRIPTION_POLICY, authorizeTranscriptionAdapter, createTranscriptionSessionRequest, resolveWorkspaceVoiceInputEnabled, resolveWorkspaceTranscriptionPolicy, } from "./transcription";
33
33
  export type { TranscriptionAdapter, TranscriptionAdapterDescriptor, TranscriptionAdapterStartContext, TranscriptionAuthorization, TranscriptionCredentialMode, TranscriptionDiagnostic, TranscriptionErrorCode, TranscriptionEvent, TranscriptionEventListener, TranscriptionLifecycleStatus, TranscriptionPolicyBlockReason, TranscriptionResultMetadata, TranscriptionSession, TranscriptionSessionRequest, TranscriptionSpeaker, TranscriptionTargetSelection, TranscriptionTimeSpan, TranscriptionWord, WorkspaceTranscriptionPolicy, WorkspaceTranscriptionTarget, } from "./transcription";
34
34
  export { DEFAULT_FILE_RESOURCE_MOUNT_ROOT, KNOWN_PERMISSIONS, KNOWN_USAGE_EVENT_TYPES, OPENGENI_API_CONTRACT_HEADER, OPENGENI_API_CONTRACT_REVISION, OPENGENI_CORRELATION_HEADER, RETAINED_OUTPUT_DEFAULT_PAGE_BYTES, RETAINED_OUTPUT_MAX_PAGE_BYTES, SESSION_EVENT_TYPES, } from "./types";
35
- export type { AccessContext, ActivateCodexRealtimeConnectionRequest, AccessGrant, AccountGrant, AccountRole, AddWorkspaceMemberRequest, BeginSessionRealtimeRequest, AgentMessageCompletedPayload, AgentTextDeltaPayload, AgentToolCallCreatedPayload, AgentToolCallOutputPayload, ApiKey, BillingBalance, BillingEntitlementsResponse, BillingMode, BillingSummary, BillingUsageResponse, InsightsRange, InsightsBillingPath, InsightsModelUsageRow, InsightsSeriesPoint, InsightsDepthBucket, InsightsModelFacet, InsightsSpendDriver, InsightsWarmGroupRow, InsightsLiveWarmLease, InsightsFloorSession, InsightsScheduleRow, WorkspaceInsightsSnapshot, WorkspaceInsightsResponse, CapabilityCatalogItem, CapabilityCatalogResponse, CapabilityInstallation, CapabilityInstallationStatus, CapabilityKind, CapabilityPack, CapabilityPackConnector, CapabilityPackConnectorAuthModel, CapabilityPackVariableSetSpec, CapabilityPackKnowledge, CapabilityPackScheduledTaskTemplate, CapabilityPackSkill, CapabilityPackSkillFile, CapabilityRuntime, CapabilitySource, CapabilityUnavailableReason, ClientConfig, ClientVoiceInputConfig, ClientModel, CodexRealtimeVoice, CodexRealtimeWebrtcRequest, CodexRealtimeWebrtcResponse, CodexRealtimeWebrtcVersion, GatewayRealtimeConnectRequest, GatewayRealtimeConnectResponse, GatewayRealtimeInitialItem, EndSessionRealtimeRequest, ModelAvailabilityV1, ModelBillingAttributionV1, ModelCapabilitiesV1, ModelCapabilityStateV1, ModelCapabilitySupportV1, ModelCredentialReadinessV1, ModelCredentialSourceV1, ModelPricingScheduleV1, ModelPricingV1, RenewSessionRealtimeRequest, SessionRealtimeEndReason, SessionRealtimeMode, SessionRealtimeModel, SessionRealtimeMutationResponse, SessionRealtimeState, WorkspaceModelCatalogModel, WorkspaceModelCatalogResponse, WorkspaceRealtimeModelCatalogItem, WorkspaceRealtimeModelCatalogResponse, CodexAccount, CodexAccountOverview, CodexAccountsResponse, CodexAllocatorUpdate, CodexAccountSwitchedPayload, CodexConnectionStatus, CodexConnectStart, CodexConnectPoll, CodexFleetConfidence, CodexFleetCacheState, CodexFleetDecisionEventPayload, CodexFleetDecisionScore, CodexFleetShadowComparison, CodexOverviewResponse, CodexResetCredit, CodexResetRedemptionRecovery, CodexRotationSettings, CodexUsage, CodexUsageMap, CodexUsagePayload, CodexUsageWindow, CompactSessionContextResult, ClientSessionEventInput, CompleteFileUploadResponse, ConnectionKind, ConnectionMetadata, ConnectionOwnership, ConnectionResponse, ConnectionStatus, AddDocumentRequest, CreateApiKeyRequest, CreateApiKeyResponse, CreateCapabilityCatalogItemRequest, OpenGeniSlackBotInstallRequest, OpenGeniSlackBotInstallStart, SlackReactionChannel, SlackReactionChannelListResponse, CreateConnectionRequest, CreateCheckoutRequest, CreateCheckoutResponse, CreateDocumentBaseRequest, CreateFileUploadRequest, CreateFileUploadResponse, CreateGitHubAppManifestRequest, CreateGitHubAppManifestResponse, CreateKnowledgeDropRequest, CreateKnowledgeMemoryRequest, CreateScheduledTaskRequest, CreateSessionRequest, CreateVariableSetRequest, CreateWorkspaceEnvironmentRequest, CreateWorkspaceRequest, DiscoverMcpCapabilitiesResponse, Document, DocumentAuthorityKind, DocumentBase, DocumentCuration, DocumentCurationStatus, DocumentSearchMode, DocumentSearchRequest, DocumentSearchResponse, DocumentSearchResult, DocumentStatus, DocumentVisibility, MoveDocumentRequest, EnableCapabilityRequest, EnablePackRequest, Entitlements, EntitlementValue, EntitlementsMode, FileAsset, HumanInputAnswer, HumanInputOption, HumanInputQuestion, HumanInputQuestionKind, HumanInputResponse, FileDownloadUrlResponse, FileResourceRef, FileStatus, FileUploadData, FirstPartyMcpToolName, GetPackResponse, GitHubAppInfo, GitHubAppSetupMode, GitHubBindingStatus, GitHubInstallationBinding, GitHubInstallationLifecycle, GitHubRepositoriesResponse, GoogleDriveBrowseItem, GoogleDriveBrowseResponse, GoogleDriveConnectionLifecycle, GoogleDriveConnectionLifecycleState, GoogleDriveConnectionMetadata, GoogleDriveDisconnectRequest, GoogleDriveLifecycleActionRequest, GoogleDriveOAuthStartRequest, GoogleDriveOAuthStartResponse, GoogleDriveReadPolicy, GoogleDriveSelectedSource, GoogleDriveSyncCadence, GoogleDriveTargetScope, GitHubRepository, GitHubRepositoryScope, GoalSpec, IntegrationClientMetadata, KnownPermission, KnownSessionEventType, KnownUsageEventType, KnowledgeMemory, KnowledgeMemoryKind, KnowledgeMemorySearchRequest, KnowledgeMemoryStatus, KnowledgeSourceKind, KnowledgeSourceRef, GitCredentialProvider, GitCredentialBindingId, GitRepositoryAccess, ListApiKeysResponse, ListConnectionsResponse, ListPacksResponse, ListWorkspaceMembersResponse, McpServerConnectionRef, McpPersonalConnectionDelegation, McpPersonalConnectionSummary, OAuthStartRequest, OAuthStartResponse, PackInstallation, PackInstallationStatus, Permission, ProductAccessMode, LatencyMode, ReasoningEffort, RetainedArtifactContent, RetainedArtifactContentOptions, RetainedArtifactMetadata, RetainedArtifactReference, RetainedArtifactUnavailable, RetainedOutputKind, RetainedOutputUnavailableReason, RecordingAvailablePayload, RecordingCodec, RecordingContentType, RecordingFailedPayload, RecordingFailedReason, RecordingMode, RecordingStartedPayload, RegisterCapabilityPackRequest, RepositoryResourceRef, ResourceRef, SaveGoogleDriveSourceRequest, SandboxBackend, SandboxCapabilityName, SandboxOs, ScheduledTask, ScheduledTaskAgentConfig, ScheduledTaskAgentConfigInput, ScheduledTaskDayOfWeek, ScheduledTaskOverlapPolicy, ScheduledTaskRun, ScheduledTaskRunMode, ScheduledTaskRunStatus, ScheduledTaskScheduleSpec, ScheduledTaskStatus, ScheduledTaskTriggerType, Session, SessionCapabilities, SessionListResponse, SessionLineageResponse, SessionEffectiveToolPolicy, SessionQueueMutationResponse, SessionQueueSnapshot, SessionControlResponse, ComposerDraft, DeleteSessionQueueItemRequest, EditSessionQueueItemRequest, EffectiveControlBlocker, EffectiveControlResumeOption, EffectiveSessionControl, MoveSessionQueueItemRequest, NewSessionDraft, NewSessionDraftOptions, SaveComposerDraftRequest, SaveNewSessionDraftRequest, SessionCommandReceipt, SteerSessionQueueItemRequest, WorkspaceInferenceControlResponse, SessionPendingInputPreview, SessionSystemUpdate, SessionSystemUpdateKind, SessionSystemUpdateState, SessionSummary, LineageNode, SessionMcpCredentialUpdateInput, SessionMcpApprovalPolicy, SessionMcpServerInput, SessionMcpServerMetadata, SessionToolPolicy, FileSystemCapability, TerminalCapability, GitCapability, DesktopStreamCapability, RecordingCapability, ComputerUseCapability, ClientAuthConfig, StreamUrlRotatedPayload, StreamOpenedPayload, StreamClosedPayload, StreamRevokedPayload, AttachViewerRequest, AttachViewerResponse, ViewerHolder, AcknowledgeStreamRequest, AcknowledgeStreamResponse, ViewerHeartbeatRequest, ViewerHeartbeatResponse, SessionEvent, SessionEventCompactResult, SessionEventCompactResultOptions, SessionEventListOptions, SessionEventLatestClass, SessionEventPage, SessionEventPayloadMode, SessionEventReadDirection, SessionEventReadMode, SessionEventResultMode, SessionEventSemanticClass, SessionEventType, SessionGoal, SessionGoalCreatedBy, SessionGoalStatus, SessionHumanInputRequest, SessionStatus, SessionStatusChangedPayload, SessionStructuredCapabilities, SessionTurn, ServiceTurnInitiator, ServiceTurnInitiatorContext, TurnInitiatorContext, SessionTurnSource, SessionTurnStatus, SubmitHumanInputResponseRequest, TurnInitiator, ToolAuthNeededPayload, UpdateConnectionRequest, SandboxCommandOutputDeltaPayload, FsChangeKind, FsChangedPayload, GitChangedPayload, TerminalPtyStartedPayload, TerminalPtyOutputDeltaPayload, TerminalPtyExitedPayload, FsNodeType, FsTreeNode, FsEncoding, FsListRequest, FsListResponse, FsReadRequest, FsReadResponse, FsWriteRequest, FsWriteResponse, FsDeleteRequest, FsDeleteResponse, FsMoveRequest, FsMoveResponse, FsMkdirRequest, FsMkdirResponse, GitFileStatusCode, GitFileStatus, GitStatusRequest, GitStatusResponse, GitDiffLineType, GitDiffLine, GitDiffHunk, GitFileDiff, GitDiffRequest, GitDiffResponse, GitLogRequest, GitCommit, GitLogResponse, GitShowRequest, GitShowResponse, SetWorkspaceEnvironmentVariableRequest, WorkspaceCaptureFile, WorkspaceCaptureRepo, WorkspaceCaptureDegradedReason, WorkspaceCaptureStats, WorkspaceCaptureManifest, WorkspaceRevisionCapturedPayload, WorkspaceRevisionDegradedPayload, WorkspaceCaptureSignedUrl, GetWorkspaceCaptureResponse, GetWorkspaceCaptureFileResponse, TerminalExecRequest, TerminalExecResponse, PtyOpenRequest, PtyOpenResponse, PtyWriteRequest, PtyResizeRequest, PtyCloseRequest, ToolRef, UpdateKnowledgeMemoryRequest, UpdateScheduledTaskRequest, UpdateSessionGoalRequest, UpdateSessionMcpApprovalPolicyRequest, UpdateSessionMcpApprovalPolicyResponse, UpdateSessionPinRequest, UpdateSessionRequest, UpdateSessionToolPolicyRequest, UpdateVariableSetRequest, UpdateWorkspaceEnvironmentRequest, UpdateWorkspaceMemberRequest, UpdateWorkspaceRequest, UpdateWorkspaceSettingsRequest, WorkspaceSlackReactionSummonSettings, TranscribeAudioResponse, UploadFileInput, UsageEvent, UsageEventType, UserApprovalDecisionEventInput, UserHumanInputResponseEventInput, UserMessageEventInput, Workspace, WorkspaceControlEvent, VariableSet, VariableSetVariableMetadata, Rig, RigVersion, RigCheck, RigChange, RigChangeKind, RigChangeStatus, RigCheckResult, RigChangeVerification, CreateRigRequest, UpdateRigRequest, RigSetupAppendPayload, RigDefinitionEditPayload, ProposeRigChangeRequest, WorkspaceEnvironment, WorkspaceEnvironmentVariableMetadata, WorkspaceMember, WorkspaceMemorySearchMode, WorkspaceMemorySearchRequest, WorkspaceMemorySearchResult, WorkspaceMemorySearchResponse, WorkspaceSettings, WorkspaceVoiceInputSettings, WorkspaceRegisteredPack, MetricSample, MachineState, MachineKind, MachineView, MachinesResponse, MachineMetricsSeriesResponse, SwapActiveSandboxRequest, SwapActiveSandboxResponse, EnrollmentOs, DeviceEnrollmentLookupRequest, DeviceEnrollmentLookupResponse, DeviceEnrollmentLookupMachine, DeviceEnrollmentApproveRequest, DeviceEnrollmentApproveResponse, DeviceEnrollmentDenyRequest, DeviceEnrollmentDenyResponse, MintEnrollTokenRequest, MintEnrollTokenResponse, EnrollmentCredentials, EnrollTokenExchangeRequest, EnrollTokenExchangeResponse, } from "./types";
35
+ export type { AccessContext, ActivateCodexRealtimeConnectionRequest, AccessGrant, AccountGrant, AccountRole, AddWorkspaceMemberRequest, BeginSessionRealtimeRequest, AgentMessageCompletedPayload, AgentTextDeltaPayload, AgentToolCallCreatedPayload, AgentToolCallOutputPayload, ApiKey, BillingBalance, BillingEntitlementsResponse, BillingMode, BillingSummary, BillingUsageResponse, InsightsRange, InsightsBillingPath, InsightsModelUsageRow, InsightsSeriesPoint, InsightsDepthBucket, InsightsModelFacet, InsightsSpendDriver, InsightsWarmGroupRow, InsightsLiveWarmLease, InsightsFloorSession, InsightsScheduleRow, WorkspaceInsightsSnapshot, WorkspaceInsightsResponse, CapabilityCatalogItem, CapabilityCatalogResponse, CapabilityInstallation, CapabilityInstallationStatus, CapabilityKind, CapabilityPack, CapabilityPackConnector, CapabilityPackConnectorAuthModel, CapabilityPackVariableSetSpec, CapabilityPackKnowledge, CapabilityPackScheduledTaskTemplate, CapabilityPackSkill, CapabilityPackSkillFile, CapabilityRuntime, CapabilitySource, CapabilityUnavailableReason, ClientConfig, ClientVoiceInputConfig, ClientModel, CodexRealtimeVoice, CodexRealtimeWebrtcRequest, CodexRealtimeWebrtcResponse, CodexRealtimeWebrtcVersion, GatewayRealtimeConnectRequest, GatewayRealtimeConnectResponse, GatewayRealtimeInitialItem, EndSessionRealtimeRequest, ModelAvailabilityV1, ModelBillingAttributionV1, ModelCapabilitiesV1, ModelCapabilityStateV1, ModelCapabilitySupportV1, ModelCredentialReadinessV1, ModelCredentialSourceV1, ModelPricingScheduleV1, ModelPricingV1, RenewSessionRealtimeRequest, SessionRealtimeEndReason, SessionRealtimeMode, SessionRealtimeModel, SessionRealtimeMutationResponse, SessionRealtimeState, WorkspaceModelCatalogModel, WorkspaceModelCatalogResponse, WorkspaceRealtimeModelCatalogItem, WorkspaceRealtimeModelCatalogResponse, CodexAccount, CodexAccountOverview, CodexAccountsResponse, CodexAllocatorUpdate, CodexAccountSwitchedPayload, CodexConnectionStatus, CodexConnectStart, CodexConnectPoll, CodexFleetConfidence, CodexFleetCacheState, CodexFleetDecisionEventPayload, CodexFleetDecisionScore, CodexFleetShadowComparison, CodexOverviewResponse, CodexResetCredit, CodexResetRedemptionRecovery, CodexRotationSettings, CodexUsage, CodexUsageMap, CodexUsagePayload, CodexUsageWindow, CompactSessionContextResult, ClientSessionEventInput, CompleteFileUploadResponse, ConnectionKind, ConnectionMetadata, ConnectionOwnership, ConnectionResponse, ConnectionStatus, ConnectorDocumentDestination, ConnectorDocumentDestinationAuthority, ConnectorDocumentDestinationSelection, SocialConnection, SocialConnectionStatus, SocialOAuthStartRequest, AddDocumentRequest, CreateApiKeyRequest, CreateApiKeyResponse, CreateCapabilityCatalogItemRequest, OpenGeniSlackBotInstallRequest, OpenGeniSlackBotInstallStart, SlackReactionChannel, SlackReactionChannelListResponse, CreateConnectionRequest, CreateCheckoutRequest, CreateCheckoutResponse, CreateDocumentBaseRequest, CreateFileUploadRequest, CreateFileUploadResponse, CreateGitHubAppManifestRequest, CreateGitHubAppManifestResponse, CreateKnowledgeDropRequest, CreateKnowledgeMemoryRequest, CreateScheduledTaskRequest, CreateSessionRequest, CreateVariableSetRequest, CreateWorkspaceEnvironmentRequest, CreateWorkspaceRequest, DiscoverMcpCapabilitiesResponse, Document, DocumentAuthorityKind, DocumentBase, DocumentCuration, DocumentCurationStatus, DocumentSearchMode, DocumentSearchRequest, DocumentSearchResponse, DocumentSearchResult, DocumentStatus, DocumentVisibility, MoveDocumentRequest, EnableCapabilityRequest, EnablePackRequest, Entitlements, EntitlementValue, EntitlementsMode, FileAsset, HumanInputAnswer, HumanInputOption, HumanInputQuestion, HumanInputQuestionKind, HumanInputResponse, FileDownloadUrlResponse, FileResourceRef, FileStatus, FileUploadData, FirstPartyMcpToolName, GetPackResponse, GitHubAppInfo, GitHubAppSetupMode, GitHubBindingStatus, GitHubInstallationBinding, GitHubInstallationLifecycle, GitHubRepositoriesResponse, GoogleDriveBrowseItem, GoogleDriveBrowseResponse, GoogleDriveConnectionLifecycle, GoogleDriveConnectionLifecycleState, GoogleDriveConnectionMetadata, GoogleDriveDisconnectRequest, GoogleDriveLifecycleActionRequest, GoogleDriveOAuthStartRequest, GoogleDriveOAuthStartResponse, GoogleDriveReadPolicy, GoogleDriveSelectedSource, GoogleDriveSyncCadence, GoogleDriveTargetScope, GitHubRepository, GitHubRepositoryScope, GoalSpec, IntegrationClientMetadata, KnownPermission, KnownSessionEventType, KnownUsageEventType, KnowledgeMemory, KnowledgeMemoryKind, KnowledgeMemorySearchRequest, KnowledgeMemoryStatus, KnowledgeSourceKind, KnowledgeSourceRef, GitCredentialProvider, GitCredentialBindingId, GitRepositoryAccess, ListApiKeysResponse, ListConnectionsResponse, ListPacksResponse, ListWorkspaceMembersResponse, McpServerConnectionRef, McpPersonalConnectionDelegation, McpPersonalConnectionSummary, OAuthStartRequest, OAuthStartResponse, PackInstallation, PackInstallationStatus, Permission, ProductAccessMode, LatencyMode, ReasoningEffort, RetainedArtifactContent, RetainedArtifactContentOptions, RetainedArtifactMetadata, RetainedArtifactReference, RetainedArtifactUnavailable, RetainedOutputKind, RetainedOutputUnavailableReason, RecordingAvailablePayload, RecordingCodec, RecordingContentType, RecordingFailedPayload, RecordingFailedReason, RecordingMode, RecordingStartedPayload, RegisterCapabilityPackRequest, RepositoryResourceRef, ResourceRef, SaveGoogleDriveSourceRequest, SandboxBackend, SandboxCapabilityName, SandboxOs, ScheduledTask, ScheduledTaskAgentConfig, ScheduledTaskAgentConfigInput, ScheduledTaskDayOfWeek, ScheduledTaskOverlapPolicy, ScheduledTaskRun, ScheduledTaskRunMode, ScheduledTaskRunStatus, ScheduledTaskScheduleSpec, ScheduledTaskStatus, ScheduledTaskTriggerType, Session, SessionCapabilities, SessionListResponse, SessionLineageResponse, SessionEffectiveToolPolicy, SessionQueueMutationResponse, SessionQueueSnapshot, SessionControlResponse, ComposerDraft, DeleteSessionQueueItemRequest, EditSessionQueueItemRequest, EffectiveControlBlocker, EffectiveControlResumeOption, EffectiveSessionControl, MoveSessionQueueItemRequest, NewSessionDraft, NewSessionDraftOptions, SaveComposerDraftRequest, SaveNewSessionDraftRequest, SessionCommandReceipt, SteerSessionQueueItemRequest, WorkspaceInferenceControlResponse, SessionPendingInputPreview, SessionSystemUpdate, SessionSystemUpdateKind, SessionSystemUpdateState, SessionSummary, LineageNode, SessionMcpCredentialUpdateInput, SessionMcpApprovalPolicy, SessionMcpServerInput, SessionMcpServerMetadata, SessionToolPolicy, FileSystemCapability, TerminalCapability, GitCapability, DesktopStreamCapability, RecordingCapability, ComputerUseCapability, ClientAuthConfig, StreamUrlRotatedPayload, StreamOpenedPayload, StreamClosedPayload, StreamRevokedPayload, AttachViewerRequest, AttachViewerResponse, ViewerHolder, AcknowledgeStreamRequest, AcknowledgeStreamResponse, ViewerHeartbeatRequest, ViewerHeartbeatResponse, SessionEvent, SessionEventCompactResult, SessionEventCompactResultOptions, SessionEventListOptions, SessionEventLatestClass, SessionEventPage, SessionEventPayloadMode, SessionEventReadDirection, SessionEventReadMode, SessionEventResultMode, SessionEventSemanticClass, SessionEventType, SessionGoal, SessionGoalCreatedBy, SessionGoalStatus, SessionHumanInputRequest, SessionStatus, SessionStatusChangedPayload, SessionStructuredCapabilities, SessionTurn, ServiceTurnInitiator, ServiceTurnInitiatorContext, TurnInitiatorContext, SessionTurnSource, SessionTurnStatus, SubmitHumanInputResponseRequest, TurnInitiator, ToolAuthNeededPayload, UpdateConnectionRequest, SandboxCommandOutputDeltaPayload, FsChangeKind, FsChangedPayload, GitChangedPayload, TerminalPtyStartedPayload, TerminalPtyOutputDeltaPayload, TerminalPtyExitedPayload, FsNodeType, FsTreeNode, FsEncoding, FsListRequest, FsListResponse, FsReadRequest, FsReadResponse, FsWriteRequest, FsWriteResponse, FsDeleteRequest, FsDeleteResponse, FsMoveRequest, FsMoveResponse, FsMkdirRequest, FsMkdirResponse, GitFileStatusCode, GitFileStatus, GitStatusRequest, GitStatusResponse, GitDiffLineType, GitDiffLine, GitDiffHunk, GitFileDiff, GitDiffRequest, GitDiffResponse, GitLogRequest, GitCommit, GitLogResponse, GitShowRequest, GitShowResponse, SetWorkspaceEnvironmentVariableRequest, WorkspaceCaptureFile, WorkspaceCaptureRepo, WorkspaceCaptureDegradedReason, WorkspaceCaptureStats, WorkspaceCaptureManifest, WorkspaceRevisionCapturedPayload, WorkspaceRevisionDegradedPayload, WorkspaceCaptureSignedUrl, GetWorkspaceCaptureResponse, GetWorkspaceCaptureFileResponse, TerminalExecRequest, TerminalExecResponse, PtyOpenRequest, PtyOpenResponse, PtyWriteRequest, PtyResizeRequest, PtyCloseRequest, ToolRef, UpdateKnowledgeMemoryRequest, UpdateScheduledTaskRequest, UpdateSessionGoalRequest, UpdateSessionMcpApprovalPolicyRequest, UpdateSessionMcpApprovalPolicyResponse, UpdateSessionPinRequest, UpdateSessionRequest, UpdateSessionToolPolicyRequest, UpdateVariableSetRequest, UpdateWorkspaceEnvironmentRequest, UpdateWorkspaceMemberRequest, UpdateWorkspaceRequest, UpdateWorkspaceSettingsRequest, WorkspaceSlackReactionSummonSettings, TranscribeAudioResponse, UploadFileInput, UsageEvent, UsageEventType, UserApprovalDecisionEventInput, UserHumanInputResponseEventInput, UserMessageEventInput, Workspace, WorkspaceControlEvent, VariableSet, VariableSetVariableMetadata, Rig, RigVersion, RigCheck, RigChange, RigChangeKind, RigChangeStatus, RigCheckResult, RigChangeVerification, CreateRigRequest, UpdateRigRequest, RigSetupAppendPayload, RigDefinitionEditPayload, ProposeRigChangeRequest, WorkspaceEnvironment, WorkspaceEnvironmentVariableMetadata, WorkspaceMember, WorkspaceMemorySearchMode, WorkspaceMemorySearchRequest, WorkspaceMemorySearchResult, WorkspaceMemorySearchResponse, WorkspaceSettings, WorkspaceVoiceInputSettings, WorkspaceRegisteredPack, MetricSample, MachineState, MachineKind, MachineView, MachinesResponse, MachineMetricsSeriesResponse, SwapActiveSandboxRequest, SwapActiveSandboxResponse, EnrollmentOs, DeviceEnrollmentLookupRequest, DeviceEnrollmentLookupResponse, DeviceEnrollmentLookupMachine, DeviceEnrollmentApproveRequest, DeviceEnrollmentApproveResponse, DeviceEnrollmentDenyRequest, DeviceEnrollmentDenyResponse, MintEnrollTokenRequest, MintEnrollTokenResponse, EnrollmentCredentials, EnrollTokenExchangeRequest, EnrollTokenExchangeResponse, } from "./types";
package/dist/index.js CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  resolveWorkspaceVoiceInputEnabled,
18
18
  streamSessionEvents,
19
19
  streamWorkspaceControlEvents
20
- } from "./chunk-DKNW4WMJ.js";
20
+ } from "./chunk-74LY67W7.js";
21
21
  import {
22
22
  CODEX_REALTIME_CONTEXT_APPEND_MAX_BYTES,
23
23
  CodexRealtimeMicrophoneError,
@@ -31,14 +31,14 @@ import {
31
31
  parseCodexRealtimeV3Event,
32
32
  projectSessionRealtimeLifecycle,
33
33
  startCodexRealtimeWebrtc
34
- } from "./chunk-XBBPYTI5.js";
34
+ } from "./chunk-SLJ33Y7V.js";
35
35
  import {
36
36
  OpenGeniApiContractMismatchError,
37
37
  OpenGeniApiError,
38
38
  OpenGeniSessionListCursorError,
39
39
  OpenGeniStreamError,
40
40
  isRetryableStreamError
41
- } from "./chunk-OINSI33U.js";
41
+ } from "./chunk-UD2DNDSS.js";
42
42
  import {
43
43
  createGatewayRealtimeTransportStarter
44
44
  } from "./chunk-DXDL7EEW.js";
package/dist/realtime.js CHANGED
@@ -23,8 +23,8 @@ import {
23
23
  sessionRealtimeOwnerStorageKey,
24
24
  sessionRealtimeOwnerStorageNamespace,
25
25
  startCodexRealtimeWebrtc
26
- } from "./chunk-XBBPYTI5.js";
27
- import "./chunk-OINSI33U.js";
26
+ } from "./chunk-SLJ33Y7V.js";
27
+ import "./chunk-UD2DNDSS.js";
28
28
  import {
29
29
  createGatewayRealtimeTransportStarter
30
30
  } from "./chunk-DXDL7EEW.js";
package/dist/types.d.ts CHANGED
@@ -470,6 +470,16 @@ export type OpenGeniSlackBotInstallStart = {
470
470
  expiresAt: string;
471
471
  };
472
472
  export type GoogleDriveTargetScope = "user" | "workspace" | "organization";
473
+ export type ConnectorDocumentDestinationAuthority = "organization" | "workspace" | "personal";
474
+ export type ConnectorDocumentDestinationSelection = {
475
+ authorityKind: ConnectorDocumentDestinationAuthority;
476
+ collectionId: string | null;
477
+ };
478
+ export type ConnectorDocumentDestination = ConnectorDocumentDestinationSelection & {
479
+ authorityAccountId: string;
480
+ authorityWorkspaceId: string | null;
481
+ authoritySubjectId: string | null;
482
+ };
473
483
  export type GoogleDriveSyncCadence = "manual" | "hourly" | "daily";
474
484
  export type GoogleDriveReadPolicy = "allow" | "ask" | "block";
475
485
  export type GoogleDriveConnectionLifecycleState = "active" | "paused" | "token_revoked" | "app_removed" | "disconnected" | "reconnect_required" | "reconsent_required";
@@ -487,7 +497,9 @@ export type GoogleDriveSelectedSource = {
487
497
  name: string;
488
498
  mimeType: string;
489
499
  driveId: string | null;
490
- targetScope: GoogleDriveTargetScope;
500
+ destination?: ConnectorDocumentDestination | undefined;
501
+ /** @deprecated Missing destinations resolve to the current workspace boundary. */
502
+ targetScope?: GoogleDriveTargetScope | undefined;
491
503
  syncCadence: GoogleDriveSyncCadence;
492
504
  readPolicy: GoogleDriveReadPolicy;
493
505
  selectedAt: string;
@@ -501,6 +513,7 @@ export type GoogleDriveConnectionMetadata = {
501
513
  verifiedAt: string;
502
514
  accessMode: "metadata_readonly" | "readonly";
503
515
  lifecycle?: GoogleDriveConnectionLifecycle | undefined;
516
+ documentDestination?: ConnectorDocumentDestination | undefined;
504
517
  selectedSources?: GoogleDriveSelectedSource[] | undefined;
505
518
  /** @deprecated Read selectedSources; retained while existing connections migrate. */
506
519
  selectedSource?: GoogleDriveSelectedSource | null | undefined;
@@ -541,7 +554,9 @@ export type GoogleDriveBrowseResponse = {
541
554
  };
542
555
  export type SaveGoogleDriveSourceRequest = {
543
556
  sources: Array<Pick<GoogleDriveBrowseItem, "id" | "name" | "mimeType" | "driveId">>;
544
- targetScope: GoogleDriveTargetScope;
557
+ destination?: ConnectorDocumentDestinationSelection | undefined;
558
+ /** @deprecated Legacy requests resolve to workspace authority. */
559
+ targetScope?: GoogleDriveTargetScope | undefined;
545
560
  syncCadence: GoogleDriveSyncCadence;
546
561
  readPolicy: GoogleDriveReadPolicy;
547
562
  };
@@ -653,6 +668,8 @@ export type Session = {
653
668
  sandboxGroupId: string;
654
669
  activeSandboxId: string | null;
655
670
  activeEpoch: number;
671
+ /** Explicit connected-machine project root; null uses the agent launch root. */
672
+ workingDir: string | null;
656
673
  variableSetId: string | null;
657
674
  /** @deprecated use variableSetId */
658
675
  environmentId: string | null;
@@ -1619,6 +1636,8 @@ export type ModelPricingScheduleV1 = {
1619
1636
  export type ClientModel = {
1620
1637
  id: string;
1621
1638
  label: string;
1639
+ /** Optional curated compact label for dense UI (e.g. mobile composer). */
1640
+ shortLabel?: string | undefined;
1622
1641
  /** Provider id (e.g. `openai`, `azure`, or a registry provider id). */
1623
1642
  provider: string;
1624
1643
  providerLabel: string;
@@ -15,6 +15,11 @@ export type WorkspaceStateSourceKindCounts = {
15
15
  web: number;
16
16
  other: number;
17
17
  };
18
+ export type WorkspaceStateDocumentAuthorityKindCounts = {
19
+ organization: number;
20
+ workspace: number;
21
+ personal: number;
22
+ };
18
23
  export type WorkspaceStateMemoryStatusCounts = {
19
24
  proposed: number;
20
25
  approved: number;
@@ -142,6 +147,17 @@ export type WorkspaceStateResponse = {
142
147
  status: "not_implemented";
143
148
  };
144
149
  };
150
+ preferences: {
151
+ authority: "preference_registry_preferences";
152
+ activeDescriptorCount: number;
153
+ activeDescriptorHash: string;
154
+ scopeCounts: {
155
+ organization: number;
156
+ workspace: number;
157
+ user: number;
158
+ };
159
+ truncated: boolean;
160
+ };
145
161
  knowledge: {
146
162
  availability: "unavailable";
147
163
  reason: "missing_permission";
@@ -161,6 +177,7 @@ export type WorkspaceStateResponse = {
161
177
  inspectedVisibleDocumentCount: number;
162
178
  documentStatusCounts: WorkspaceStateDocumentStatusCounts;
163
179
  sourceKindCounts: WorkspaceStateSourceKindCounts;
180
+ authorityKindCounts: WorkspaceStateDocumentAuthorityKindCounts;
164
181
  topics: Array<{
165
182
  name: string;
166
183
  documentCount: number;
@@ -186,3 +203,12 @@ export type WorkspaceStateResponse = {
186
203
  }>;
187
204
  };
188
205
  };
206
+ export type WorkspaceStateExportOmission = "hidden_platform_prompts" | "policy_bodies" | "preference_content" | "document_content_and_private_metadata" | "memory_content_and_provenance" | "secret_values_and_credentials" | "session_messages_and_tool_outputs";
207
+ export type WorkspaceStateExportResponse = {
208
+ kind: "opengeni.workspace_state.sanitized_export";
209
+ schemaVersion: 1;
210
+ generatedAt: string;
211
+ stateSha256: string;
212
+ omissions: WorkspaceStateExportOmission[];
213
+ state: WorkspaceStateResponse;
214
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/sdk",
3
- "version": "0.41.0",
3
+ "version": "0.44.0",
4
4
  "description": "Framework-agnostic TypeScript SDK for the OpenGeni API: typed client, session lifecycle, SSE event streaming with reconnect + replay-by-sequence, and proxy re-streaming helpers.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
package/src/client.ts CHANGED
@@ -235,7 +235,11 @@ import type {
235
235
  WorkspaceInstructionPolicyOnboardingProposalListResponse,
236
236
  WorkspaceInstructionPolicyRevision,
237
237
  } from "./workspace-instruction-policies";
238
- import type { WorkspaceStateGetOptions, WorkspaceStateResponse } from "./workspace-state";
238
+ import type {
239
+ WorkspaceStateExportResponse,
240
+ WorkspaceStateGetOptions,
241
+ WorkspaceStateResponse,
242
+ } from "./workspace-state";
239
243
  import type {
240
244
  ActivatePreferenceRegistryRevisionRequest,
241
245
  ChangePreferenceRegistryScopeRequest,
@@ -343,7 +347,7 @@ export class OpenGeniClient {
343
347
 
344
348
  // --- Session lifecycle ---------------------------------------------------
345
349
 
346
- /** Upload one ephemeral browser recording. This method never retries. */
350
+ /** Make one finalization attempt for a recording; callers may retry retained audio. */
347
351
  async transcribeAudio(
348
352
  workspaceId: string,
349
353
  input: TranscribeAudioInput,
@@ -1911,6 +1915,20 @@ export class OpenGeniClient {
1911
1915
  );
1912
1916
  }
1913
1917
 
1918
+ /** Download the canonical, explicitly sanitized Workspace State export. */
1919
+ async exportWorkspaceState(
1920
+ workspaceId: string,
1921
+ options: WorkspaceStateGetOptions = {},
1922
+ ): Promise<WorkspaceStateExportResponse> {
1923
+ const params = new URLSearchParams();
1924
+ if (options.attemptId) params.set("attemptId", options.attemptId);
1925
+ const query = params.size > 0 ? `?${params.toString()}` : "";
1926
+ return await this.requestJson<WorkspaceStateExportResponse>(
1927
+ "GET",
1928
+ `/v1/workspaces/${workspaceId}/workspace-state/export${query}`,
1929
+ );
1930
+ }
1931
+
1914
1932
  async updateWorkspace(workspaceId: string, request: UpdateWorkspaceRequest): Promise<Workspace> {
1915
1933
  return await this.requestJson<Workspace>("PATCH", `/v1/workspaces/${workspaceId}`, request);
1916
1934
  }
package/src/errors.ts CHANGED
@@ -7,6 +7,7 @@ export class OpenGeniApiError extends Error {
7
7
  /** True only when an uncontrolled transport failed after a mutation may have been accepted. */
8
8
  readonly outcomeUnknown: boolean;
9
9
  readonly body: string;
10
+ readonly details: Record<string, unknown> | undefined;
10
11
 
11
12
  constructor(
12
13
  status: number,
@@ -42,6 +43,7 @@ export class OpenGeniApiError extends Error {
42
43
  this.outcomeUnknown =
43
44
  options.outcomeUnknown ?? (gatewayFailure && !!options.mutation && !decoded);
44
45
  this.body = !fromResponse || decoded ? body : "";
46
+ this.details = decoded?.details;
45
47
  }
46
48
  }
47
49
 
@@ -50,6 +52,7 @@ function decodeApiErrorBody(body: string): {
50
52
  message: string | undefined;
51
53
  requestId: string | undefined;
52
54
  retryable: boolean | undefined;
55
+ details: Record<string, unknown> | undefined;
53
56
  } | null {
54
57
  if (!body) return null;
55
58
  try {
@@ -64,18 +67,36 @@ function decodeApiErrorBody(body: string): {
64
67
  const message = boundedApiField(nested.message);
65
68
  const requestId = boundedCorrelationId(nested.requestId);
66
69
  const retryable = typeof nested.retryable === "boolean" ? nested.retryable : undefined;
67
- if (!code && !message && !requestId && retryable === undefined) return null;
70
+ const details = boundedApiDetails(nested.details);
71
+ if (!code && !message && !requestId && retryable === undefined && !details) return null;
68
72
  return {
69
73
  code,
70
74
  message,
71
75
  requestId,
72
76
  retryable,
77
+ details,
73
78
  };
74
79
  } catch {
75
80
  return null;
76
81
  }
77
82
  }
78
83
 
84
+ function boundedApiDetails(value: unknown): Record<string, unknown> | undefined {
85
+ if (!value || typeof value !== "object" || Array.isArray(value)) return;
86
+ const entries = Object.entries(value as Record<string, unknown>).slice(0, 16);
87
+ const details: Record<string, unknown> = {};
88
+ for (const [key, entry] of entries) {
89
+ if (!/^[a-zA-Z][\w.-]{0,63}$/.test(key)) continue;
90
+ if (typeof entry === "string") {
91
+ const bounded = boundedApiField(entry);
92
+ if (bounded !== undefined) details[key] = bounded;
93
+ } else if (typeof entry === "number" || typeof entry === "boolean" || entry === null) {
94
+ details[key] = entry;
95
+ }
96
+ }
97
+ return Object.keys(details).length > 0 ? details : undefined;
98
+ }
99
+
79
100
  function boundedApiField(value: unknown): string | undefined {
80
101
  if (typeof value !== "string") return;
81
102
  const bytes = new TextEncoder().encode(value);
package/src/index.ts CHANGED
@@ -156,7 +156,10 @@ export type {
156
156
  } from "./workspace-instruction-policies";
157
157
  export type {
158
158
  WorkspaceStateDocumentStatusCounts,
159
+ WorkspaceStateDocumentAuthorityKindCounts,
159
160
  WorkspaceStateAttemptGovernance,
161
+ WorkspaceStateExportOmission,
162
+ WorkspaceStateExportResponse,
160
163
  WorkspaceStateGapCode,
161
164
  WorkspaceStateGetOptions,
162
165
  WorkspaceStateGovernanceDriftStatus,
@@ -339,6 +342,12 @@ export type {
339
342
  ConnectionOwnership,
340
343
  ConnectionResponse,
341
344
  ConnectionStatus,
345
+ ConnectorDocumentDestination,
346
+ ConnectorDocumentDestinationAuthority,
347
+ ConnectorDocumentDestinationSelection,
348
+ SocialConnection,
349
+ SocialConnectionStatus,
350
+ SocialOAuthStartRequest,
342
351
  AddDocumentRequest,
343
352
  CreateApiKeyRequest,
344
353
  CreateApiKeyResponse,
package/src/types.ts CHANGED
@@ -642,6 +642,16 @@ export type OpenGeniSlackBotInstallStart = {
642
642
  };
643
643
 
644
644
  export type GoogleDriveTargetScope = "user" | "workspace" | "organization";
645
+ export type ConnectorDocumentDestinationAuthority = "organization" | "workspace" | "personal";
646
+ export type ConnectorDocumentDestinationSelection = {
647
+ authorityKind: ConnectorDocumentDestinationAuthority;
648
+ collectionId: string | null;
649
+ };
650
+ export type ConnectorDocumentDestination = ConnectorDocumentDestinationSelection & {
651
+ authorityAccountId: string;
652
+ authorityWorkspaceId: string | null;
653
+ authoritySubjectId: string | null;
654
+ };
645
655
  export type GoogleDriveSyncCadence = "manual" | "hourly" | "daily";
646
656
  export type GoogleDriveReadPolicy = "allow" | "ask" | "block";
647
657
  export type GoogleDriveConnectionLifecycleState =
@@ -666,7 +676,9 @@ export type GoogleDriveSelectedSource = {
666
676
  name: string;
667
677
  mimeType: string;
668
678
  driveId: string | null;
669
- targetScope: GoogleDriveTargetScope;
679
+ destination?: ConnectorDocumentDestination | undefined;
680
+ /** @deprecated Missing destinations resolve to the current workspace boundary. */
681
+ targetScope?: GoogleDriveTargetScope | undefined;
670
682
  syncCadence: GoogleDriveSyncCadence;
671
683
  readPolicy: GoogleDriveReadPolicy;
672
684
  selectedAt: string;
@@ -681,6 +693,7 @@ export type GoogleDriveConnectionMetadata = {
681
693
  verifiedAt: string;
682
694
  accessMode: "metadata_readonly" | "readonly";
683
695
  lifecycle?: GoogleDriveConnectionLifecycle | undefined;
696
+ documentDestination?: ConnectorDocumentDestination | undefined;
684
697
  selectedSources?: GoogleDriveSelectedSource[] | undefined;
685
698
  /** @deprecated Read selectedSources; retained while existing connections migrate. */
686
699
  selectedSource?: GoogleDriveSelectedSource | null | undefined;
@@ -728,7 +741,9 @@ export type GoogleDriveBrowseResponse = {
728
741
 
729
742
  export type SaveGoogleDriveSourceRequest = {
730
743
  sources: Array<Pick<GoogleDriveBrowseItem, "id" | "name" | "mimeType" | "driveId">>;
731
- targetScope: GoogleDriveTargetScope;
744
+ destination?: ConnectorDocumentDestinationSelection | undefined;
745
+ /** @deprecated Legacy requests resolve to workspace authority. */
746
+ targetScope?: GoogleDriveTargetScope | undefined;
732
747
  syncCadence: GoogleDriveSyncCadence;
733
748
  readPolicy: GoogleDriveReadPolicy;
734
749
  };
@@ -866,6 +881,8 @@ export type Session = {
866
881
  sandboxGroupId: string;
867
882
  activeSandboxId: string | null;
868
883
  activeEpoch: number;
884
+ /** Explicit connected-machine project root; null uses the agent launch root. */
885
+ workingDir: string | null;
869
886
  variableSetId: string | null;
870
887
  /** @deprecated use variableSetId */
871
888
  environmentId: string | null;
@@ -2188,6 +2205,8 @@ export type ModelPricingScheduleV1 = {
2188
2205
  export type ClientModel = {
2189
2206
  id: string;
2190
2207
  label: string;
2208
+ /** Optional curated compact label for dense UI (e.g. mobile composer). */
2209
+ shortLabel?: string | undefined;
2191
2210
  /** Provider id (e.g. `openai`, `azure`, or a registry provider id). */
2192
2211
  provider: string;
2193
2212
  providerLabel: string;