@opengeni/sdk 3.1.0 → 3.3.2-canary.1

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 (58) hide show
  1. package/README.md +60 -8
  2. package/dist/accounts.d.ts +5 -1
  3. package/dist/accounts.js +13 -1
  4. package/dist/accounts.js.map +1 -1
  5. package/dist/artifacts.js +6 -6
  6. package/dist/browser.d.ts +2 -1
  7. package/dist/browser.js +6 -4
  8. package/dist/{chunk-C2H7HBNP.js → chunk-6NEPJ7NC.js} +2 -2
  9. package/dist/{chunk-TX3EIENU.js → chunk-BESZFWMU.js} +2 -2
  10. package/dist/{chunk-YTAWBDO2.js → chunk-E5BNEG2D.js} +2 -1
  11. package/dist/chunk-E5BNEG2D.js.map +1 -0
  12. package/dist/{chunk-7ZXBPJZP.js → chunk-GY6RQPCG.js} +282 -43
  13. package/dist/chunk-GY6RQPCG.js.map +1 -0
  14. package/dist/{chunk-C4DJPZRU.js → chunk-OO5LPTO7.js} +14 -1
  15. package/dist/chunk-OO5LPTO7.js.map +1 -0
  16. package/dist/{chunk-GW3EJ2GP.js → chunk-QTBAMHEF.js} +28 -3
  17. package/dist/{chunk-GW3EJ2GP.js.map → chunk-QTBAMHEF.js.map} +1 -1
  18. package/dist/{chunk-VUQZAB3O.js → chunk-TFCLHRZK.js} +2 -2
  19. package/dist/client.d.ts +47 -11
  20. package/dist/codex-realtime-controller.js +2 -2
  21. package/dist/company-profile.d.ts +13 -0
  22. package/dist/core.d.ts +2 -1
  23. package/dist/core.js +7 -5
  24. package/dist/document-authority.js +5 -5
  25. package/dist/editable-artifacts.js +1 -1
  26. package/dist/errors.d.ts +12 -0
  27. package/dist/index.d.ts +6 -3
  28. package/dist/index.js +219 -7
  29. package/dist/index.js.map +1 -1
  30. package/dist/interaction.d.ts +3 -0
  31. package/dist/interaction.js +4 -2
  32. package/dist/model-picker-order.d.ts +1 -0
  33. package/dist/model-picker-order.js +10 -0
  34. package/dist/model-picker-order.js.map +1 -0
  35. package/dist/realtime.d.ts +3 -1
  36. package/dist/realtime.js +2 -2
  37. package/dist/realtime.js.map +1 -1
  38. package/dist/session-titles.d.ts +28 -0
  39. package/dist/types.d.ts +90 -3
  40. package/package.json +6 -2
  41. package/src/accounts.ts +18 -0
  42. package/src/browser.ts +2 -0
  43. package/src/client.ts +407 -35
  44. package/src/company-profile.ts +13 -0
  45. package/src/core.ts +2 -0
  46. package/src/errors.ts +23 -0
  47. package/src/index.ts +29 -0
  48. package/src/interaction.ts +32 -0
  49. package/src/model-picker-order.ts +6 -0
  50. package/src/realtime.ts +1 -0
  51. package/src/session-titles.ts +84 -0
  52. package/src/types.ts +105 -2
  53. package/dist/chunk-7ZXBPJZP.js.map +0 -1
  54. package/dist/chunk-C4DJPZRU.js.map +0 -1
  55. package/dist/chunk-YTAWBDO2.js.map +0 -1
  56. /package/dist/{chunk-C2H7HBNP.js.map → chunk-6NEPJ7NC.js.map} +0 -0
  57. /package/dist/{chunk-TX3EIENU.js.map → chunk-BESZFWMU.js.map} +0 -0
  58. /package/dist/{chunk-VUQZAB3O.js.map → chunk-TFCLHRZK.js.map} +0 -0
@@ -0,0 +1 @@
1
+ export { compareModelPickerOrder, modelPickerBillingClassFor, type ModelPickerBillingCandidate, type ModelPickerBillingClass, } from "@opengeni/contracts/model-picker-order";
@@ -0,0 +1,10 @@
1
+ // src/model-picker-order.ts
2
+ import {
3
+ compareModelPickerOrder,
4
+ modelPickerBillingClassFor
5
+ } from "@opengeni/contracts/model-picker-order";
6
+ export {
7
+ compareModelPickerOrder,
8
+ modelPickerBillingClassFor
9
+ };
10
+ //# sourceMappingURL=model-picker-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/model-picker-order.ts"],"sourcesContent":["export {\n compareModelPickerOrder,\n modelPickerBillingClassFor,\n type ModelPickerBillingCandidate,\n type ModelPickerBillingClass,\n} from \"@opengeni/contracts/model-picker-order\";\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,OAGK;","names":[]}
@@ -9,7 +9,9 @@ import { createGatewayRealtimeTransportStarter, createXaiSubscriptionRealtimeTra
9
9
  import type { SessionRealtimeModel, WorkspaceRealtimeModelCatalogResponse } from "./types.js";
10
10
  /** Exact backend-facing methods required by the batteries-included realtime SDK. */
11
11
  export type SessionRealtimeClientLike = CodexRealtimeControllerClient & {
12
- getWorkspaceRealtimeModelCatalog(workspaceId: string): Promise<WorkspaceRealtimeModelCatalogResponse>;
12
+ getWorkspaceRealtimeModelCatalog(workspaceId: string, options?: {
13
+ signal?: AbortSignal | undefined;
14
+ }): Promise<WorkspaceRealtimeModelCatalogResponse>;
13
15
  };
14
16
  export type SessionRealtimeTransportKind = "codex" | "gateway" | "xai-subscription";
15
17
  /** Provider-neutral names for the existing, battle-tested controller projection. */
package/dist/realtime.js CHANGED
@@ -27,8 +27,8 @@ import {
27
27
  sessionRealtimeOwnerStorageKey,
28
28
  sessionRealtimeOwnerStorageNamespace,
29
29
  startCodexRealtimeWebrtc
30
- } from "./chunk-C2H7HBNP.js";
31
- import "./chunk-C4DJPZRU.js";
30
+ } from "./chunk-6NEPJ7NC.js";
31
+ import "./chunk-OO5LPTO7.js";
32
32
 
33
33
  // src/realtime.ts
34
34
  function sessionRealtimeTransportKind(model) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/realtime.ts"],"sourcesContent":["/**\n * Public, provider-neutral realtime browser SDK.\n *\n * Import this subpath lazily in browser applications. The base `@opengeni/sdk`\n * entry remains free of eager realtime transport initialization.\n */\nimport {\n createCodexRealtimeController,\n hasStoredSessionRealtimeOwnerProof,\n sessionRealtimeOwnerStorageKey,\n sessionRealtimeOwnerStorageNamespace,\n type CodexRealtimeController,\n type CodexRealtimeControllerClient,\n type CodexRealtimeControllerSnapshot,\n type CodexRealtimeControllerStatus,\n type CodexRealtimeDiagnostic,\n type CodexRealtimeDiagnosticKind,\n type CodexRealtimeMicrophoneState,\n type CodexRealtimeOwnerStorage,\n type CreateCodexRealtimeControllerOptions,\n type RealtimeControllerTransportStarter,\n} from \"./codex-realtime-controller\";\nimport {\n createGatewayRealtimeTransportStarter,\n createXaiSubscriptionRealtimeTransportStarter,\n} from \"./gateway-realtime-transport\";\nimport type { SessionRealtimeModel, WorkspaceRealtimeModelCatalogResponse } from \"./types\";\n\n/** Exact backend-facing methods required by the batteries-included realtime SDK. */\nexport type SessionRealtimeClientLike = CodexRealtimeControllerClient & {\n getWorkspaceRealtimeModelCatalog(\n workspaceId: string,\n ): Promise<WorkspaceRealtimeModelCatalogResponse>;\n};\n\nexport type SessionRealtimeTransportKind = \"codex\" | \"gateway\" | \"xai-subscription\";\n\n/** Provider-neutral names for the existing, battle-tested controller projection. */\nexport type SessionRealtimeController = CodexRealtimeController;\nexport type SessionRealtimeControllerSnapshot = CodexRealtimeControllerSnapshot;\nexport type SessionRealtimeControllerStatus = CodexRealtimeControllerStatus;\nexport type SessionRealtimeDiagnostic = CodexRealtimeDiagnostic;\nexport type SessionRealtimeDiagnosticKind = CodexRealtimeDiagnosticKind;\nexport type SessionRealtimeMicrophoneState = CodexRealtimeMicrophoneState;\nexport type SessionRealtimeOwnerStorage = CodexRealtimeOwnerStorage;\n\nexport type CreateSessionRealtimeControllerOptions = Omit<\n CreateCodexRealtimeControllerOptions,\n \"client\" | \"model\" | \"ownerStorageNamespace\" | \"startTransport\"\n> & {\n client: CodexRealtimeControllerClient;\n model: SessionRealtimeModel;\n};\n\n/** Select the existing transport without exposing provider mechanics to hosts. */\nexport function sessionRealtimeTransportKind(\n model: SessionRealtimeModel,\n): SessionRealtimeTransportKind {\n if (model === \"gpt-live-1-boulder-alpha\") return \"codex\";\n if (model === \"supergrok/grok-voice-think-fast-2.0\") return \"xai-subscription\";\n return \"gateway\";\n}\n\n/**\n * Compose the exact current controller with its existing Codex Live or AI\n * Gateway transport. Wire, ledger, delegation, recovery, and lifecycle\n * semantics remain owned by the existing implementations below this facade.\n */\nexport function createSessionRealtimeController(\n options: CreateSessionRealtimeControllerOptions,\n): SessionRealtimeController {\n const transport = sessionRealtimeTransportKind(options.model);\n return createCodexRealtimeController({\n ...options,\n ownerStorageNamespace: sessionRealtimeOwnerStorageNamespace(options.model),\n ...(transport === \"gateway\"\n ? { startTransport: createGatewayRealtimeTransportStarter() }\n : transport === \"xai-subscription\"\n ? { startTransport: createXaiSubscriptionRealtimeTransportStarter() }\n : {}),\n });\n}\n\nexport {\n createCodexRealtimeController,\n createGatewayRealtimeTransportStarter,\n createXaiSubscriptionRealtimeTransportStarter,\n hasStoredSessionRealtimeOwnerProof,\n sessionRealtimeOwnerStorageKey,\n sessionRealtimeOwnerStorageNamespace,\n};\nexport type {\n CodexRealtimeController,\n CodexRealtimeControllerClient,\n CodexRealtimeControllerSnapshot,\n CodexRealtimeControllerStatus,\n CodexRealtimeDiagnostic,\n CodexRealtimeDiagnosticKind,\n CodexRealtimeMicrophoneState,\n CodexRealtimeOwnerStorage,\n CreateCodexRealtimeControllerOptions,\n RealtimeControllerTransportStarter,\n};\n\nexport {\n CODEX_REALTIME_NEGOTIATION_TIMEOUT_MS,\n projectSessionRealtimeLifecycle,\n} from \"./codex-realtime-controller\";\nexport type { SessionRealtimeLifecycleProjection } from \"./codex-realtime-lifecycle\";\n\nexport {\n CodexRealtimeMicrophoneError,\n acquireCodexRealtimeMicrophone,\n codexRealtimeMicrophoneHealthy,\n startCodexRealtimeWebrtc,\n} from \"./codex-realtime\";\nexport type {\n AcquireCodexRealtimeMicrophoneOptions,\n CodexRealtimeAudibleOutputState,\n CodexRealtimeConnectionHealth,\n CodexRealtimeMicrophoneErrorCode,\n CodexRealtimeNegotiator,\n CodexRealtimeWebrtcSession,\n StartCodexRealtimeWebrtcOptions,\n} from \"./codex-realtime\";\n\nexport {\n CODEX_REALTIME_CONTEXT_APPEND_MAX_BYTES,\n CODEX_REALTIME_V3_MAX_EVENT_BYTES,\n CODEX_REALTIME_V3_MAX_IDENTIFIER_BYTES,\n CODEX_REALTIME_V3_MAX_TEXT_BYTES,\n CODEX_REALTIME_V3_PENDING_MAX_BYTES,\n CODEX_REALTIME_V3_PENDING_MAX_ENTRIES,\n CODEX_REALTIME_V3_SYNC_MAX_ENTRIES,\n contextAppendChunks,\n createCodexRealtimeV3Bridge,\n encodeCodexRealtimeV3DelegationContextAppend,\n encodeCodexRealtimeV3SessionContextAppend,\n parseCodexRealtimeV3Event,\n} from \"./codex-realtime-v3\";\nexport type {\n CodexRealtimeV3Bridge,\n CodexRealtimeV3BridgeFatal,\n CodexRealtimeV3BridgeOptions,\n CodexRealtimeV3BridgeSnapshot,\n CodexRealtimeV3ContextAppendChannel,\n CodexRealtimeV3DelegationContextAppend,\n CodexRealtimeV3Event,\n CodexRealtimeV3ParseFailure,\n CodexRealtimeV3ParseResult,\n CodexRealtimeV3SessionContextAppend,\n} from \"./codex-realtime-v3\";\n\nexport {\n CODEX_REALTIME_INITIAL_ITEMS_MAX_COUNT,\n CODEX_REALTIME_INITIAL_ITEMS_MAX_TOKENS,\n} from \"./codex-realtime-v3-wire\";\nexport type { CodexRealtimeInitialItem } from \"./codex-realtime-v3-wire\";\n\nexport type {\n ActivateCodexRealtimeConnectionRequest,\n BeginSessionRealtimeRequest,\n CodexRealtimeVoice,\n CodexRealtimeWebrtcRequest,\n CodexRealtimeWebrtcResponse,\n CodexRealtimeWebrtcVersion,\n EndSessionRealtimeRequest,\n GatewayRealtimeConnectRequest,\n GatewayRealtimeConnectResponse,\n GatewayRealtimeInitialItem,\n RenewSessionRealtimeRequest,\n SessionRealtimeEndReason,\n SessionRealtimeLedgerEntry,\n SessionRealtimeMode,\n SessionRealtimeModel,\n SessionRealtimeMutationResponse,\n SessionRealtimeState,\n SyncSessionRealtimeLedgerRequest,\n SyncSessionRealtimeLedgerResponse,\n WorkspaceRealtimeModelCatalogItem,\n WorkspaceRealtimeModelCatalogResponse,\n} from \"./types\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDO,SAAS,6BACd,OAC8B;AAC9B,MAAI,UAAU,2BAA4B,QAAO;AACjD,MAAI,UAAU,sCAAuC,QAAO;AAC5D,SAAO;AACT;AAOO,SAAS,gCACd,SAC2B;AAC3B,QAAM,YAAY,6BAA6B,QAAQ,KAAK;AAC5D,SAAO,8BAA8B;AAAA,IACnC,GAAG;AAAA,IACH,uBAAuB,qCAAqC,QAAQ,KAAK;AAAA,IACzE,GAAI,cAAc,YACd,EAAE,gBAAgB,sCAAsC,EAAE,IAC1D,cAAc,qBACZ,EAAE,gBAAgB,8CAA8C,EAAE,IAClE,CAAC;AAAA,EACT,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../src/realtime.ts"],"sourcesContent":["/**\n * Public, provider-neutral realtime browser SDK.\n *\n * Import this subpath lazily in browser applications. The base `@opengeni/sdk`\n * entry remains free of eager realtime transport initialization.\n */\nimport {\n createCodexRealtimeController,\n hasStoredSessionRealtimeOwnerProof,\n sessionRealtimeOwnerStorageKey,\n sessionRealtimeOwnerStorageNamespace,\n type CodexRealtimeController,\n type CodexRealtimeControllerClient,\n type CodexRealtimeControllerSnapshot,\n type CodexRealtimeControllerStatus,\n type CodexRealtimeDiagnostic,\n type CodexRealtimeDiagnosticKind,\n type CodexRealtimeMicrophoneState,\n type CodexRealtimeOwnerStorage,\n type CreateCodexRealtimeControllerOptions,\n type RealtimeControllerTransportStarter,\n} from \"./codex-realtime-controller\";\nimport {\n createGatewayRealtimeTransportStarter,\n createXaiSubscriptionRealtimeTransportStarter,\n} from \"./gateway-realtime-transport\";\nimport type { SessionRealtimeModel, WorkspaceRealtimeModelCatalogResponse } from \"./types\";\n\n/** Exact backend-facing methods required by the batteries-included realtime SDK. */\nexport type SessionRealtimeClientLike = CodexRealtimeControllerClient & {\n getWorkspaceRealtimeModelCatalog(\n workspaceId: string,\n options?: { signal?: AbortSignal | undefined },\n ): Promise<WorkspaceRealtimeModelCatalogResponse>;\n};\n\nexport type SessionRealtimeTransportKind = \"codex\" | \"gateway\" | \"xai-subscription\";\n\n/** Provider-neutral names for the existing, battle-tested controller projection. */\nexport type SessionRealtimeController = CodexRealtimeController;\nexport type SessionRealtimeControllerSnapshot = CodexRealtimeControllerSnapshot;\nexport type SessionRealtimeControllerStatus = CodexRealtimeControllerStatus;\nexport type SessionRealtimeDiagnostic = CodexRealtimeDiagnostic;\nexport type SessionRealtimeDiagnosticKind = CodexRealtimeDiagnosticKind;\nexport type SessionRealtimeMicrophoneState = CodexRealtimeMicrophoneState;\nexport type SessionRealtimeOwnerStorage = CodexRealtimeOwnerStorage;\n\nexport type CreateSessionRealtimeControllerOptions = Omit<\n CreateCodexRealtimeControllerOptions,\n \"client\" | \"model\" | \"ownerStorageNamespace\" | \"startTransport\"\n> & {\n client: CodexRealtimeControllerClient;\n model: SessionRealtimeModel;\n};\n\n/** Select the existing transport without exposing provider mechanics to hosts. */\nexport function sessionRealtimeTransportKind(\n model: SessionRealtimeModel,\n): SessionRealtimeTransportKind {\n if (model === \"gpt-live-1-boulder-alpha\") return \"codex\";\n if (model === \"supergrok/grok-voice-think-fast-2.0\") return \"xai-subscription\";\n return \"gateway\";\n}\n\n/**\n * Compose the exact current controller with its existing Codex Live or AI\n * Gateway transport. Wire, ledger, delegation, recovery, and lifecycle\n * semantics remain owned by the existing implementations below this facade.\n */\nexport function createSessionRealtimeController(\n options: CreateSessionRealtimeControllerOptions,\n): SessionRealtimeController {\n const transport = sessionRealtimeTransportKind(options.model);\n return createCodexRealtimeController({\n ...options,\n ownerStorageNamespace: sessionRealtimeOwnerStorageNamespace(options.model),\n ...(transport === \"gateway\"\n ? { startTransport: createGatewayRealtimeTransportStarter() }\n : transport === \"xai-subscription\"\n ? { startTransport: createXaiSubscriptionRealtimeTransportStarter() }\n : {}),\n });\n}\n\nexport {\n createCodexRealtimeController,\n createGatewayRealtimeTransportStarter,\n createXaiSubscriptionRealtimeTransportStarter,\n hasStoredSessionRealtimeOwnerProof,\n sessionRealtimeOwnerStorageKey,\n sessionRealtimeOwnerStorageNamespace,\n};\nexport type {\n CodexRealtimeController,\n CodexRealtimeControllerClient,\n CodexRealtimeControllerSnapshot,\n CodexRealtimeControllerStatus,\n CodexRealtimeDiagnostic,\n CodexRealtimeDiagnosticKind,\n CodexRealtimeMicrophoneState,\n CodexRealtimeOwnerStorage,\n CreateCodexRealtimeControllerOptions,\n RealtimeControllerTransportStarter,\n};\n\nexport {\n CODEX_REALTIME_NEGOTIATION_TIMEOUT_MS,\n projectSessionRealtimeLifecycle,\n} from \"./codex-realtime-controller\";\nexport type { SessionRealtimeLifecycleProjection } from \"./codex-realtime-lifecycle\";\n\nexport {\n CodexRealtimeMicrophoneError,\n acquireCodexRealtimeMicrophone,\n codexRealtimeMicrophoneHealthy,\n startCodexRealtimeWebrtc,\n} from \"./codex-realtime\";\nexport type {\n AcquireCodexRealtimeMicrophoneOptions,\n CodexRealtimeAudibleOutputState,\n CodexRealtimeConnectionHealth,\n CodexRealtimeMicrophoneErrorCode,\n CodexRealtimeNegotiator,\n CodexRealtimeWebrtcSession,\n StartCodexRealtimeWebrtcOptions,\n} from \"./codex-realtime\";\n\nexport {\n CODEX_REALTIME_CONTEXT_APPEND_MAX_BYTES,\n CODEX_REALTIME_V3_MAX_EVENT_BYTES,\n CODEX_REALTIME_V3_MAX_IDENTIFIER_BYTES,\n CODEX_REALTIME_V3_MAX_TEXT_BYTES,\n CODEX_REALTIME_V3_PENDING_MAX_BYTES,\n CODEX_REALTIME_V3_PENDING_MAX_ENTRIES,\n CODEX_REALTIME_V3_SYNC_MAX_ENTRIES,\n contextAppendChunks,\n createCodexRealtimeV3Bridge,\n encodeCodexRealtimeV3DelegationContextAppend,\n encodeCodexRealtimeV3SessionContextAppend,\n parseCodexRealtimeV3Event,\n} from \"./codex-realtime-v3\";\nexport type {\n CodexRealtimeV3Bridge,\n CodexRealtimeV3BridgeFatal,\n CodexRealtimeV3BridgeOptions,\n CodexRealtimeV3BridgeSnapshot,\n CodexRealtimeV3ContextAppendChannel,\n CodexRealtimeV3DelegationContextAppend,\n CodexRealtimeV3Event,\n CodexRealtimeV3ParseFailure,\n CodexRealtimeV3ParseResult,\n CodexRealtimeV3SessionContextAppend,\n} from \"./codex-realtime-v3\";\n\nexport {\n CODEX_REALTIME_INITIAL_ITEMS_MAX_COUNT,\n CODEX_REALTIME_INITIAL_ITEMS_MAX_TOKENS,\n} from \"./codex-realtime-v3-wire\";\nexport type { CodexRealtimeInitialItem } from \"./codex-realtime-v3-wire\";\n\nexport type {\n ActivateCodexRealtimeConnectionRequest,\n BeginSessionRealtimeRequest,\n CodexRealtimeVoice,\n CodexRealtimeWebrtcRequest,\n CodexRealtimeWebrtcResponse,\n CodexRealtimeWebrtcVersion,\n EndSessionRealtimeRequest,\n GatewayRealtimeConnectRequest,\n GatewayRealtimeConnectResponse,\n GatewayRealtimeInitialItem,\n RenewSessionRealtimeRequest,\n SessionRealtimeEndReason,\n SessionRealtimeLedgerEntry,\n SessionRealtimeMode,\n SessionRealtimeModel,\n SessionRealtimeMutationResponse,\n SessionRealtimeState,\n SyncSessionRealtimeLedgerRequest,\n SyncSessionRealtimeLedgerResponse,\n WorkspaceRealtimeModelCatalogItem,\n WorkspaceRealtimeModelCatalogResponse,\n} from \"./types\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDO,SAAS,6BACd,OAC8B;AAC9B,MAAI,UAAU,2BAA4B,QAAO;AACjD,MAAI,UAAU,sCAAuC,QAAO;AAC5D,SAAO;AACT;AAOO,SAAS,gCACd,SAC2B;AAC3B,QAAM,YAAY,6BAA6B,QAAQ,KAAK;AAC5D,SAAO,8BAA8B;AAAA,IACnC,GAAG;AAAA,IACH,uBAAuB,qCAAqC,QAAQ,KAAK;AAAA,IACzE,GAAI,cAAc,YACd,EAAE,gBAAgB,sCAAsC,EAAE,IAC1D,cAAc,qBACZ,EAAE,gBAAgB,8CAA8C,EAAE,IAClE,CAAC;AAAA,EACT,CAAC;AACH;","names":[]}
@@ -0,0 +1,28 @@
1
+ import { AUTOMATIC_SESSION_TITLE_FALLBACK } from "@opengeni/contracts/session-titles";
2
+ import type { Session } from "./types.js";
3
+ export { AUTOMATIC_SESSION_TITLE_FALLBACK };
4
+ export type SessionDisplayTitleInput = {
5
+ title?: Session["title"] | undefined;
6
+ titleSource?: Session["titleSource"] | undefined;
7
+ initialMessage?: Session["initialMessage"] | null | undefined;
8
+ metadata?: Readonly<Record<string, unknown>> | undefined;
9
+ };
10
+ export type SessionDisplayTitleOptions = {
11
+ /** Optional metadata fields to try before the opening-prompt preview. */
12
+ metadataKeys?: readonly string[] | undefined;
13
+ };
14
+ /**
15
+ * Whether the durable title still represents the automatic-title pending state.
16
+ * A user-authored title always wins, even when its literal value is the fallback.
17
+ */
18
+ export declare function sessionTitleIsPending(input: SessionDisplayTitleInput): boolean;
19
+ /**
20
+ * Derive the title a client should display for a session.
21
+ *
22
+ * A semantic agent title or human rename wins. While automatic naming is still
23
+ * pending, clients show a short, sensitive-safe preview of the opening prompt;
24
+ * the preview is never persisted as title metadata and is replaced naturally
25
+ * when `session.title_set` arrives. Obvious credential-, URL-, or identifier-
26
+ * shaped prompt prefixes retain the generic fallback.
27
+ */
28
+ export declare function deriveSessionDisplayTitle(input: SessionDisplayTitleInput, options?: SessionDisplayTitleOptions): string;
package/dist/types.d.ts CHANGED
@@ -220,6 +220,7 @@ export type SessionCapabilities = {
220
220
  codecs: ("h264-mp4" | "vp9-webm")[];
221
221
  reason: CapabilityUnavailableReason | null;
222
222
  };
223
+ /** @deprecated Use the managed ComputerSession interaction tools. */
223
224
  ComputerUse: {
224
225
  available: boolean;
225
226
  readOnly: boolean;
@@ -232,6 +233,7 @@ export type TerminalCapability = SessionCapabilities["Terminal"];
232
233
  export type GitCapability = SessionCapabilities["Git"];
233
234
  export type DesktopStreamCapability = SessionCapabilities["DesktopStream"];
234
235
  export type RecordingCapability = SessionCapabilities["Recording"];
236
+ /** @deprecated Use the managed ComputerSession interaction tools. */
235
237
  export type ComputerUseCapability = SessionCapabilities["ComputerUse"];
236
238
  export type StreamUrlRotatedPayload = {
237
239
  url: string;
@@ -461,6 +463,7 @@ export type McpPersonalConnectionDelegation = {
461
463
  export type McpPersonalConnectionSummary = Pick<McpPersonalConnectionDelegation, "serverId" | "providerDomain">;
462
464
  export type ConnectionMetadata = {
463
465
  id: string;
466
+ authorityId?: string | undefined;
464
467
  accountId: string;
465
468
  workspaceId: string;
466
469
  subjectId: string | null;
@@ -491,6 +494,7 @@ export type CreateConnectionRequest = {
491
494
  grantedScopes?: string[] | undefined;
492
495
  expiresAt?: string | null | undefined;
493
496
  metadata?: Record<string, unknown> | undefined;
497
+ operationId?: string | undefined;
494
498
  };
495
499
  export type PersonalGitHubConnectionMetadata = {
496
500
  credentialRole: "opengeni_github_personal";
@@ -838,6 +842,8 @@ export type UpdateConnectionRequest = {
838
842
  grantedScopes?: string[] | undefined;
839
843
  expiresAt?: string | null | undefined;
840
844
  metadata?: Record<string, unknown> | undefined;
845
+ expectedVersion?: number | undefined;
846
+ operationId?: string | undefined;
841
847
  };
842
848
  export type ConnectionResponse = {
843
849
  connection: ConnectionMetadata;
@@ -1084,6 +1090,7 @@ export type Session = {
1084
1090
  pausedDescendants: number;
1085
1091
  failedDescendants: number;
1086
1092
  unreadDescendants?: number | undefined;
1093
+ unreadFailedDescendants?: number | undefined;
1087
1094
  activelyWorkingDescendants?: number | undefined;
1088
1095
  /**
1089
1096
  * Earliest moment one of the counted `attentionDescendants` entered
@@ -2107,6 +2114,10 @@ export type ScheduledTaskAgentConfig = {
2107
2114
  model?: string | undefined;
2108
2115
  reasoningEffort?: ReasoningEffort | undefined;
2109
2116
  sandboxBackend?: SandboxBackend | undefined;
2117
+ machineTarget?: {
2118
+ targetSandboxId: string;
2119
+ workingDir?: string | undefined;
2120
+ } | undefined;
2110
2121
  goal?: GoalSpec | undefined;
2111
2122
  executionClass?: "incident_telemetry" | undefined;
2112
2123
  incidentTelemetryPreflight?: IncidentTelemetryPreflight | undefined;
@@ -2225,7 +2236,7 @@ export type CreateSessionRequest = {
2225
2236
  groupId: string;
2226
2237
  } | undefined;
2227
2238
  };
2228
- export declare const KNOWN_PERMISSIONS: readonly ["account:read", "account:admin", "members:manage", "workspace:create", "billing:read", "billing:manage", "workspace:read", "workspace:admin", "sessions:create", "sessions:read", "sessions:control", "stream:view", "stream:control", "stream:acknowledge", "files:upload", "files:read", "files:write", "terminal:attach", "documents:manage", "documents:search", "scheduled_tasks:manage", "scheduled_tasks:run", "github:manage", "github:use", "api_keys:manage", "connections:read", "connections:write", "environments:manage", "environments:use", "variable-sets:list", "variable-sets:read", "variable-sets:write", "variable-sets:manage", "variable-sets:attach", "variable-sets:use", "secrets:list", "secrets:read", "secrets:write", "mcp_servers:attach", "codemode:call", "goals:manage", "enrollments:read", "enrollments:manage", "rigs:use", "rigs:manage", "artifacts:read", "artifacts:publish"];
2239
+ export declare const KNOWN_PERMISSIONS: readonly ["account:read", "account:admin", "members:manage", "workspace:create", "billing:read", "billing:manage", "workspace:read", "workspace:admin", "sessions:create", "sessions:read", "sessions:control", "stream:view", "stream:control", "stream:acknowledge", "files:upload", "files:read", "files:write", "terminal:attach", "documents:manage", "documents:search", "scheduled_tasks:manage", "scheduled_tasks:run", "github:manage", "github:use", "api_keys:manage", "connections:read", "connections:write", "capabilities:manage", "environments:manage", "environments:use", "variable-sets:list", "variable-sets:read", "variable-sets:write", "variable-sets:manage", "variable-sets:attach", "variable-sets:use", "secrets:list", "secrets:read", "secrets:write", "mcp_servers:attach", "codemode:call", "goals:manage", "enrollments:read", "enrollments:manage", "rigs:use", "rigs:manage", "artifacts:read", "artifacts:publish"];
2229
2240
  export type KnownPermission = (typeof KNOWN_PERMISSIONS)[number];
2230
2241
  /**
2231
2242
  * Permissions the SDK knows about today, kept open so a newer OpenGeni server
@@ -2284,6 +2295,7 @@ export type ModelBillingAttributionV1 = {
2284
2295
  upstreamPayer: "deployment" | "workspace" | "connected_subscription";
2285
2296
  metering: "opengeni_credits" | "external";
2286
2297
  };
2298
+ export type ModelCostClassV1 = "free" | "credits" | "subscription" | "workspace";
2287
2299
  export type ModelPricingV1 = {
2288
2300
  inputMicrosPerMillionTokens: number;
2289
2301
  cachedInputMicrosPerMillionTokens?: number | undefined;
@@ -2312,7 +2324,7 @@ export type ClientModel = {
2312
2324
  provider: string;
2313
2325
  providerLabel: string;
2314
2326
  api: "responses" | "chat";
2315
- source?: "opengeni" | "codex" | "supergrok" | "workspace_gateway" | undefined;
2327
+ source?: "opengeni" | "codex" | "supergrok" | "workspace_gateway" | "openrouter" | undefined;
2316
2328
  contextWindowTokens?: number | undefined;
2317
2329
  schemaVersion?: 1 | undefined;
2318
2330
  aliases?: string[] | undefined;
@@ -2328,6 +2340,7 @@ export type ClientModel = {
2328
2340
  } | undefined;
2329
2341
  credentialSource?: ModelCredentialSourceV1 | undefined;
2330
2342
  billing?: ModelBillingAttributionV1 | undefined;
2343
+ cost?: ModelCostClassV1 | undefined;
2331
2344
  capabilities?: ModelCapabilitiesV1 | undefined;
2332
2345
  pricing?: ModelPricingScheduleV1 | undefined;
2333
2346
  definitionVersion?: string | undefined;
@@ -2353,6 +2366,32 @@ export type WorkspaceModelCatalogModel = ClientModel & {
2353
2366
  export type WorkspaceModelCatalogResponse = {
2354
2367
  models: WorkspaceModelCatalogModel[];
2355
2368
  };
2369
+ export type WorkspaceGatewayCustomModel = {
2370
+ id: string;
2371
+ upstreamModelId: string;
2372
+ label: string | null;
2373
+ version: number;
2374
+ createdAt: string;
2375
+ updatedAt: string;
2376
+ };
2377
+ export type WorkspaceGatewayCustomModelsResponse = {
2378
+ models: WorkspaceGatewayCustomModel[];
2379
+ };
2380
+ export type CreateWorkspaceGatewayCustomModelRequest = {
2381
+ operationId: string;
2382
+ upstreamModelId: string;
2383
+ label?: string | undefined;
2384
+ };
2385
+ export type DeleteWorkspaceGatewayCustomModelRequest = {
2386
+ expectedVersion: number;
2387
+ operationId: string;
2388
+ };
2389
+ export type WorkspaceOpenRouterCustomModel = WorkspaceGatewayCustomModel;
2390
+ export type WorkspaceOpenRouterCustomModelsResponse = {
2391
+ models: WorkspaceOpenRouterCustomModel[];
2392
+ };
2393
+ export type CreateWorkspaceOpenRouterCustomModelRequest = CreateWorkspaceGatewayCustomModelRequest;
2394
+ export type DeleteWorkspaceOpenRouterCustomModelRequest = DeleteWorkspaceGatewayCustomModelRequest;
2356
2395
  /**
2357
2396
  * The workspace's hard model/provider allowlist. `null` means unrestricted for
2358
2397
  * that dimension; an empty array is an explicit total block.
@@ -2387,6 +2426,17 @@ export type CodexConnectionStatus = {
2387
2426
  } | null;
2388
2427
  /** How many Codex accounts the workspace has connected. */
2389
2428
  accountCount?: number;
2429
+ source?: WorkspaceCodexSubscriptionSource;
2430
+ };
2431
+ export type WorkspaceCodexSubscriptionMode = "automatic" | "workspace" | "organization" | "disabled";
2432
+ export type WorkspaceCodexSubscriptionSource = {
2433
+ accountId: string;
2434
+ workspaceId: string;
2435
+ workspaceKind: "personal" | "shared";
2436
+ mode: WorkspaceCodexSubscriptionMode;
2437
+ effectiveSource: "workspace" | "organization" | "disabled";
2438
+ workspaceAvailable: boolean;
2439
+ organizationAvailable: boolean;
2390
2440
  };
2391
2441
  /**
2392
2442
  * One normalized Codex usage window (5h or weekly), camelCase end-to-end (the
@@ -2436,6 +2486,7 @@ export type CodexUsagePayload = {
2436
2486
  /** One connected Codex (ChatGPT) account in a workspace (multi-account P1). Metadata only. */
2437
2487
  export type CodexAccount = {
2438
2488
  id: string;
2489
+ source?: "workspace" | "organization";
2439
2490
  chatgptAccountId?: string | null;
2440
2491
  label?: string | null;
2441
2492
  email?: string | null;
@@ -2537,6 +2588,7 @@ export type CodexRotationSettings = {
2537
2588
  export type CodexAccountsResponse = {
2538
2589
  accounts: CodexAccount[];
2539
2590
  activeAccountId: string | null;
2591
+ source?: WorkspaceCodexSubscriptionSource;
2540
2592
  /** Added by Apps-aware servers; absent on older same-major deployments. */
2541
2593
  apps?: {
2542
2594
  available: boolean;
@@ -2547,6 +2599,7 @@ export type CodexAccountsResponse = {
2547
2599
  };
2548
2600
  settings: CodexRotationSettings;
2549
2601
  };
2602
+ export type OrganizationCodexAccountsResponse = Omit<CodexAccountsResponse, "apps" | "source">;
2550
2603
  export type CodexAppsUpdate = {
2551
2604
  credentialId: string | null;
2552
2605
  version: number;
@@ -2680,6 +2733,8 @@ export type ClientAuthConfig = {
2680
2733
  session: "cookie";
2681
2734
  /** Defaults to true when omitted by an older deployment. */
2682
2735
  emailVerificationRequired?: boolean;
2736
+ /** Configured managed sign-in providers; omitted by older deployments. */
2737
+ socialProviders?: ("google" | "github")[];
2683
2738
  };
2684
2739
  export declare const OPENGENI_API_CONTRACT_REVISION: "2026-08-organization-recovery-custody-v1";
2685
2740
  export declare const OPENGENI_API_CONTRACT_HEADER: "x-opengeni-api-contract";
@@ -2701,6 +2756,7 @@ export type ClientConfig = {
2701
2756
  models: ClientModel[];
2702
2757
  defaultReasoningEffort: ReasoningEffort;
2703
2758
  allowedReasoningEfforts: ReasoningEffort[];
2759
+ defaultSandboxBackend?: SandboxBackend | undefined;
2704
2760
  mcpServers: {
2705
2761
  id: string;
2706
2762
  name: string;
@@ -3350,6 +3406,18 @@ export type CreateWorkspaceRequest = {
3350
3406
  externalId?: string | undefined;
3351
3407
  agentInstructions?: string | null | undefined;
3352
3408
  };
3409
+ export type EnsureWorkspaceRequest = {
3410
+ accountId: string;
3411
+ externalSource: string;
3412
+ externalId: string;
3413
+ name: string;
3414
+ slug?: string | undefined;
3415
+ agentInstructions?: string | null | undefined;
3416
+ };
3417
+ export type EnsureWorkspaceResponse = {
3418
+ workspace: Workspace;
3419
+ created: boolean;
3420
+ };
3353
3421
  export type UpdateWorkspaceRequest = {
3354
3422
  name?: string | undefined;
3355
3423
  slug?: string | null | undefined;
@@ -3380,6 +3448,11 @@ export type CreateApiKeyResponse = {
3380
3448
  /** The full secret token — shown once at creation, never returned again. */
3381
3449
  token: string;
3382
3450
  };
3451
+ export type CreateOrganizationApiKeyRequest = {
3452
+ name: string;
3453
+ description?: string | undefined;
3454
+ expiresAt?: string | undefined;
3455
+ };
3383
3456
  export type ListApiKeysResponse = {
3384
3457
  apiKeys: ApiKey[];
3385
3458
  };
@@ -3393,8 +3466,18 @@ export type WorkspaceMember = {
3393
3466
  export type ListWorkspaceMembersResponse = {
3394
3467
  members: WorkspaceMember[];
3395
3468
  };
3469
+ export type WorkspaceMemberCandidate = {
3470
+ organizationMembershipId: string;
3471
+ subjectId: string;
3472
+ name: string | null;
3473
+ email: string | null;
3474
+ organizationRole: "owner" | "admin" | "member";
3475
+ };
3476
+ export type ListWorkspaceMemberCandidatesResponse = {
3477
+ members: WorkspaceMemberCandidate[];
3478
+ };
3396
3479
  export type AddWorkspaceMemberRequest = {
3397
- email: string;
3480
+ organizationMembershipId: string;
3398
3481
  role?: string | undefined;
3399
3482
  permissions: Permission[];
3400
3483
  };
@@ -3790,6 +3873,10 @@ export type ScheduledTaskAgentConfigInput = {
3790
3873
  model?: string | undefined;
3791
3874
  reasoningEffort?: ReasoningEffort | undefined;
3792
3875
  sandboxBackend?: SandboxBackend | undefined;
3876
+ machineTarget?: {
3877
+ targetSandboxId: string;
3878
+ workingDir?: string | undefined;
3879
+ } | undefined;
3793
3880
  goal?: GoalSpec | undefined;
3794
3881
  executionClass?: "incident_telemetry" | undefined;
3795
3882
  incidentTelemetryPreflight?: IncidentTelemetryPreflightInput | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/sdk",
3
- "version": "3.1.0",
3
+ "version": "3.3.2-canary.1",
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": {
@@ -89,6 +89,10 @@
89
89
  "./gateway-realtime-transport": {
90
90
  "types": "./dist/gateway-realtime-transport.d.ts",
91
91
  "import": "./dist/gateway-realtime-transport.js"
92
+ },
93
+ "./model-picker-order": {
94
+ "types": "./dist/model-picker-order.d.ts",
95
+ "import": "./dist/model-picker-order.js"
92
96
  }
93
97
  },
94
98
  "publishConfig": {
@@ -101,7 +105,7 @@
101
105
  "prepublishOnly": "bash ../../scripts/prepublish-guard"
102
106
  },
103
107
  "dependencies": {
104
- "@opengeni/contracts": "^2.7.0"
108
+ "@opengeni/contracts": "^2.9.2-canary.1"
105
109
  },
106
110
  "engines": {
107
111
  "node": ">=18"
package/src/accounts.ts CHANGED
@@ -15,6 +15,8 @@ import {
15
15
  ManagedAuthSessionSetErrorCode,
16
16
  ResolveManagedAuthDeepLinkRequest,
17
17
  SelectManagedAuthLoginSlotRequest,
18
+ StartManagedAuthSocialTransactionRequest,
19
+ StartManagedAuthSocialTransactionResponse,
18
20
  type BeginManagedAuthLoginTransactionRequest as BeginManagedAuthLoginTransactionRequestType,
19
21
  type BootstrapManagedAuthSessionSetRequest as BootstrapManagedAuthSessionSetRequestType,
20
22
  type CancelManagedAuthLoginTransactionRequest as CancelManagedAuthLoginTransactionRequestType,
@@ -28,6 +30,8 @@ import {
28
30
  type ManagedAuthSessionSetProjection as ManagedAuthSessionSetProjectionType,
29
31
  type ResolveManagedAuthDeepLinkRequest as ResolveManagedAuthDeepLinkRequestType,
30
32
  type SelectManagedAuthLoginSlotRequest as SelectManagedAuthLoginSlotRequestType,
33
+ type StartManagedAuthSocialTransactionRequest as StartManagedAuthSocialTransactionRequestType,
34
+ type StartManagedAuthSocialTransactionResponse as StartManagedAuthSocialTransactionResponseType,
31
35
  } from "@opengeni/contracts/managed-auth-session-sets";
32
36
  import type { z } from "zod";
33
37
 
@@ -53,6 +57,9 @@ export interface BrowserAccountsClientLike {
53
57
  completeEmailPasswordTransaction(
54
58
  request: CompleteManagedAuthEmailPasswordTransactionRequestType,
55
59
  ): Promise<CompleteManagedAuthLoginTransactionResponseType>;
60
+ startSocialTransaction?(
61
+ request: StartManagedAuthSocialTransactionRequestType,
62
+ ): Promise<StartManagedAuthSocialTransactionResponseType>;
56
63
  cancelLoginTransaction(
57
64
  request: CancelManagedAuthLoginTransactionRequestType,
58
65
  ): Promise<ManagedAuthSessionSetProjectionType>;
@@ -178,6 +185,17 @@ export class BrowserAccountsClient implements BrowserAccountsClientLike {
178
185
  return response;
179
186
  }
180
187
 
188
+ async startSocialTransaction(request: StartManagedAuthSocialTransactionRequestType) {
189
+ return StartManagedAuthSocialTransactionResponse.parse(
190
+ await this.#mutation(
191
+ "POST",
192
+ "/v1/auth/session-set/transactions/social",
193
+ StartManagedAuthSocialTransactionRequest,
194
+ request,
195
+ ),
196
+ );
197
+ }
198
+
181
199
  async cancelLoginTransaction(request: CancelManagedAuthLoginTransactionRequestType) {
182
200
  return this.#projectionResponse(
183
201
  "DELETE",
package/src/browser.ts CHANGED
@@ -13,9 +13,11 @@ export type {
13
13
  export {
14
14
  OpenGeniApiContractMismatchError,
15
15
  OpenGeniApiError,
16
+ OpenGeniSecureContextRequiredError,
16
17
  OpenGeniSessionListCursorError,
17
18
  OpenGeniStreamError,
18
19
  isRetryableStreamError,
19
20
  } from "./errors";
21
+ export type { OpenGeniSecureContextRequiredReason } from "./errors";
20
22
  export { resolveWorkspaceVoiceInputEnabled } from "./transcription";
21
23
  export { OPENGENI_API_CONTRACT_HEADER, OPENGENI_API_CONTRACT_REVISION } from "./types";