@opengeni/sdk 0.44.0 → 0.44.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-SLJ33Y7V.js → chunk-KIHGPM7H.js} +2 -2
- package/dist/{chunk-74LY67W7.js → chunk-UZNQOMWX.js} +2 -2
- package/dist/chunk-UZNQOMWX.js.map +1 -0
- package/dist/{chunk-UD2DNDSS.js → chunk-V5F253OG.js} +2 -2
- package/dist/chunk-V5F253OG.js.map +1 -0
- package/dist/codex-realtime-controller.js +2 -2
- package/dist/core.js +2 -2
- package/dist/index.js +3 -3
- package/dist/realtime.js +2 -2
- package/dist/types.d.ts +2 -0
- package/package.json +1 -1
- package/src/errors.ts +1 -1
- package/src/types.ts +2 -0
- package/dist/chunk-74LY67W7.js.map +0 -1
- package/dist/chunk-UD2DNDSS.js.map +0 -1
- /package/dist/{chunk-SLJ33Y7V.js.map → chunk-KIHGPM7H.js.map} +0 -0
|
@@ -14,7 +14,7 @@ var OpenGeniApiError = class extends Error {
|
|
|
14
14
|
const gatewayFailure = status >= 502 && status <= 504;
|
|
15
15
|
const fromResponse = options.mutation !== void 0;
|
|
16
16
|
const message = decoded?.message ?? (fromResponse ? "Request failed." : body || "(empty body)");
|
|
17
|
-
const displayMessage = options.displayMessage ?? (gatewayFailure && fromResponse ? "OpenGeni is temporarily unavailable \u2014 retry." : `OpenGeni API ${status}: ${message}`);
|
|
17
|
+
const displayMessage = options.displayMessage ?? (gatewayFailure && fromResponse ? decoded?.message ?? "OpenGeni is temporarily unavailable \u2014 retry." : `OpenGeni API ${status}: ${message}`);
|
|
18
18
|
super(correlationId ? `${displayMessage} Reference: ${correlationId}.` : displayMessage);
|
|
19
19
|
this.name = "OpenGeniApiError";
|
|
20
20
|
this.status = status;
|
|
@@ -113,4 +113,4 @@ export {
|
|
|
113
113
|
isAbortError,
|
|
114
114
|
isRetryableStreamError
|
|
115
115
|
};
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
116
|
+
//# sourceMappingURL=chunk-V5F253OG.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 ? (decoded?.message ?? \"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":[]}
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
projectSessionRealtimeLifecycle,
|
|
6
6
|
sessionRealtimeOwnerStorageKey,
|
|
7
7
|
sessionRealtimeOwnerStorageNamespace
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-KIHGPM7H.js";
|
|
9
|
+
import "./chunk-V5F253OG.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-
|
|
6
|
+
} from "./chunk-UZNQOMWX.js";
|
|
7
7
|
import {
|
|
8
8
|
OpenGeniApiContractMismatchError,
|
|
9
9
|
OpenGeniApiError,
|
|
10
10
|
OpenGeniSessionListCursorError,
|
|
11
11
|
OpenGeniStreamError,
|
|
12
12
|
isRetryableStreamError
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-V5F253OG.js";
|
|
14
14
|
export {
|
|
15
15
|
OPENGENI_API_CONTRACT_HEADER,
|
|
16
16
|
OPENGENI_API_CONTRACT_REVISION,
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
resolveWorkspaceVoiceInputEnabled,
|
|
18
18
|
streamSessionEvents,
|
|
19
19
|
streamWorkspaceControlEvents
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-UZNQOMWX.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-
|
|
34
|
+
} from "./chunk-KIHGPM7H.js";
|
|
35
35
|
import {
|
|
36
36
|
OpenGeniApiContractMismatchError,
|
|
37
37
|
OpenGeniApiError,
|
|
38
38
|
OpenGeniSessionListCursorError,
|
|
39
39
|
OpenGeniStreamError,
|
|
40
40
|
isRetryableStreamError
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-V5F253OG.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-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
} from "./chunk-KIHGPM7H.js";
|
|
27
|
+
import "./chunk-V5F253OG.js";
|
|
28
28
|
import {
|
|
29
29
|
createGatewayRealtimeTransportStarter
|
|
30
30
|
} from "./chunk-DXDL7EEW.js";
|
package/dist/types.d.ts
CHANGED
|
@@ -606,6 +606,7 @@ export type SocialConnection = {
|
|
|
606
606
|
accountHandle: string;
|
|
607
607
|
accountName: string | null;
|
|
608
608
|
externalAccountId: string | null;
|
|
609
|
+
ownership: "workspace" | "personal";
|
|
609
610
|
status: SocialConnectionStatus;
|
|
610
611
|
scopes: string[];
|
|
611
612
|
credentialRef: string | null;
|
|
@@ -616,6 +617,7 @@ export type SocialConnection = {
|
|
|
616
617
|
};
|
|
617
618
|
export type SocialOAuthStartRequest = {
|
|
618
619
|
provider: "x" | "reddit";
|
|
620
|
+
ownership?: "workspace" | "personal" | undefined;
|
|
619
621
|
scopes?: string[] | undefined;
|
|
620
622
|
returnPath?: string | undefined;
|
|
621
623
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeni/sdk",
|
|
3
|
-
"version": "0.44.
|
|
3
|
+
"version": "0.44.3",
|
|
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/errors.ts
CHANGED
|
@@ -29,7 +29,7 @@ export class OpenGeniApiError extends Error {
|
|
|
29
29
|
const displayMessage =
|
|
30
30
|
options.displayMessage ??
|
|
31
31
|
(gatewayFailure && fromResponse
|
|
32
|
-
? "OpenGeni is temporarily unavailable — retry."
|
|
32
|
+
? (decoded?.message ?? "OpenGeni is temporarily unavailable — retry.")
|
|
33
33
|
: `OpenGeni API ${status}: ${message}`);
|
|
34
34
|
super(correlationId ? `${displayMessage} Reference: ${correlationId}.` : displayMessage);
|
|
35
35
|
this.name = "OpenGeniApiError";
|
package/src/types.ts
CHANGED
|
@@ -812,6 +812,7 @@ export type SocialConnection = {
|
|
|
812
812
|
accountHandle: string;
|
|
813
813
|
accountName: string | null;
|
|
814
814
|
externalAccountId: string | null;
|
|
815
|
+
ownership: "workspace" | "personal";
|
|
815
816
|
status: SocialConnectionStatus;
|
|
816
817
|
scopes: string[];
|
|
817
818
|
credentialRef: string | null;
|
|
@@ -823,6 +824,7 @@ export type SocialConnection = {
|
|
|
823
824
|
|
|
824
825
|
export type SocialOAuthStartRequest = {
|
|
825
826
|
provider: "x" | "reddit";
|
|
827
|
+
ownership?: "workspace" | "personal" | undefined;
|
|
826
828
|
scopes?: string[] | undefined;
|
|
827
829
|
returnPath?: string | undefined;
|
|
828
830
|
};
|