@amigo-ai/platform-sdk 0.24.0 → 0.26.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.
- package/api.md +6 -3
- package/dist/core/errors.js +155 -9
- package/dist/core/errors.js.map +1 -1
- package/dist/core/reconnecting-websocket.js +371 -0
- package/dist/core/reconnecting-websocket.js.map +1 -0
- package/dist/index.cjs +711 -13
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +711 -13
- package/dist/index.mjs.map +4 -4
- package/dist/resources/events.js +139 -3
- package/dist/resources/events.js.map +1 -1
- package/dist/resources/integrations.js +25 -0
- package/dist/resources/integrations.js.map +1 -1
- package/dist/resources/observers.js +238 -0
- package/dist/resources/observers.js.map +1 -0
- package/dist/types/core/errors.d.ts +93 -1
- package/dist/types/core/errors.d.ts.map +1 -1
- package/dist/types/core/reconnecting-websocket.d.ts +156 -0
- package/dist/types/core/reconnecting-websocket.d.ts.map +1 -0
- package/dist/types/generated/api.d.ts +686 -113
- package/dist/types/generated/api.d.ts.map +1 -1
- package/dist/types/index.d.cts +42 -2
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.ts +42 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/resources/events.d.ts +33 -0
- package/dist/types/resources/events.d.ts.map +1 -1
- package/dist/types/resources/functions.d.ts.map +1 -1
- package/dist/types/resources/integrations.d.ts +33 -0
- package/dist/types/resources/integrations.d.ts.map +1 -1
- package/dist/types/resources/metrics.d.ts.map +1 -1
- package/dist/types/resources/observers.d.ts +148 -0
- package/dist/types/resources/observers.d.ts.map +1 -0
- package/dist/types/resources/operators.d.ts.map +1 -1
- package/dist/types/resources/settings.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reconnecting WebSocket primitive shared by the SDK's WS-based realtime
|
|
3
|
+
* helpers (text-stream, session-connect, observer).
|
|
4
|
+
*
|
|
5
|
+
* The platform exposes three workspace-scoped WebSocket surfaces with similar
|
|
6
|
+
* lifecycle requirements:
|
|
7
|
+
*
|
|
8
|
+
* * Resume on transient drops with exponential backoff + full jitter
|
|
9
|
+
* * Treat 4001 (client error) and 4403 (auth) close codes as terminal
|
|
10
|
+
* * Treat 4029 (rate limit / cap) as terminal-but-retryable on a slow timer
|
|
11
|
+
* * Watchdog the connection: if no message arrives within an idle window,
|
|
12
|
+
* the upstream is dead even if the TCP socket has not closed; force a
|
|
13
|
+
* reconnect
|
|
14
|
+
* * Surface every typed message through ``onMessage`` and every state
|
|
15
|
+
* transition through ``onStateChange``
|
|
16
|
+
*
|
|
17
|
+
* Before this primitive existed, every consumer (developer-console
|
|
18
|
+
* useStreamSession, useCallObserver, agent-engineering scripts) re-implemented
|
|
19
|
+
* the loop with subtle bugs (different idle thresholds, missing retry budget,
|
|
20
|
+
* no terminal-code handling). This module is the single canonical
|
|
21
|
+
* implementation; resource helpers compose it with their own message parsers
|
|
22
|
+
* and protocol details.
|
|
23
|
+
*
|
|
24
|
+
* @see ReconnectingWebSocket
|
|
25
|
+
* @see EventsResource for the analogous SSE-based helper
|
|
26
|
+
*/
|
|
27
|
+
/** Lifecycle states reported via {@link ReconnectingWebSocketOptions.onStateChange}. */
|
|
28
|
+
export type ReconnectingWebSocketState = 'connecting' | 'open' | 'closing' | 'closed' | 'reconnecting' | 'terminal';
|
|
29
|
+
/** Reasons surfaced to {@link ReconnectingWebSocketOptions.onError} on a terminal close. */
|
|
30
|
+
export type ReconnectingWebSocketErrorReason = 'auth' | 'rate_limited' | 'client_error' | 'server_error' | 'reconnect_budget_exhausted' | 'aborted' | 'idle_watchdog' | 'open_failed' | 'unknown';
|
|
31
|
+
/** Structured terminal error surfaced to consumers. */
|
|
32
|
+
export declare class ReconnectingWebSocketError extends Error {
|
|
33
|
+
readonly reason: ReconnectingWebSocketErrorReason;
|
|
34
|
+
readonly closeCode: number | undefined;
|
|
35
|
+
readonly closeReason: string | undefined;
|
|
36
|
+
readonly attempts: number;
|
|
37
|
+
constructor(message: string, reason: ReconnectingWebSocketErrorReason, closeCode: number | undefined, closeReason: string | undefined, attempts: number);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Constructor for the underlying WebSocket. Defaults to the global
|
|
41
|
+
* ``WebSocket`` (browsers, Bun, Deno, Node 22+ via global) if available.
|
|
42
|
+
*
|
|
43
|
+
* Pass an explicit factory in environments without a global (older Node) or
|
|
44
|
+
* for tests that swap in a mock.
|
|
45
|
+
*/
|
|
46
|
+
export type WebSocketFactory = (url: string, protocols?: string | string[]) => WebSocket;
|
|
47
|
+
/** Options for {@link ReconnectingWebSocket}. */
|
|
48
|
+
export interface ReconnectingWebSocketOptions {
|
|
49
|
+
/** Target ws:// or wss:// URL. */
|
|
50
|
+
url: string;
|
|
51
|
+
/**
|
|
52
|
+
* Optional WebSocket subprotocols. The platform's auth scheme passes the
|
|
53
|
+
* bearer token here (``['auth', token]``) so it never appears in the URL.
|
|
54
|
+
*/
|
|
55
|
+
protocols?: string | string[];
|
|
56
|
+
/**
|
|
57
|
+
* Initial backoff delay (ms). Doubles with full jitter on each successive
|
|
58
|
+
* failure up to ``maxDelayMs``. Default ``1_000``.
|
|
59
|
+
*/
|
|
60
|
+
initialDelayMs?: number;
|
|
61
|
+
/** Cap on the reconnect backoff delay (ms). Default ``30_000``. */
|
|
62
|
+
maxDelayMs?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Maximum number of reconnect attempts before giving up. Default ``10``.
|
|
65
|
+
* Set to ``Infinity`` to retry forever (rely on AbortSignal for shutdown).
|
|
66
|
+
*/
|
|
67
|
+
maxReconnects?: number;
|
|
68
|
+
/**
|
|
69
|
+
* Idle watchdog (ms). If no message arrives within this window the
|
|
70
|
+
* connection is considered dead and is force-closed; the reconnect loop
|
|
71
|
+
* then handles the rebuild. Default ``45_000`` (matches the longest
|
|
72
|
+
* platform endpoint heartbeat). Set to ``0`` to disable.
|
|
73
|
+
*/
|
|
74
|
+
idleTimeoutMs?: number;
|
|
75
|
+
/**
|
|
76
|
+
* Cancellation signal. Aborting the signal closes the underlying socket
|
|
77
|
+
* and stops the reconnect loop. The ``done`` promise resolves once the
|
|
78
|
+
* teardown completes.
|
|
79
|
+
*/
|
|
80
|
+
signal?: AbortSignal;
|
|
81
|
+
/**
|
|
82
|
+
* Optional WebSocket factory. Defaults to ``globalThis.WebSocket`` if
|
|
83
|
+
* available; throws at first connect attempt otherwise.
|
|
84
|
+
*/
|
|
85
|
+
webSocketFactory?: WebSocketFactory;
|
|
86
|
+
/**
|
|
87
|
+
* Invoked when the underlying socket transitions states. Mostly useful
|
|
88
|
+
* for surfacing reconnects to the UI (e.g., "Reconnecting…" banner).
|
|
89
|
+
*/
|
|
90
|
+
onStateChange?: (state: ReconnectingWebSocketState) => void;
|
|
91
|
+
/**
|
|
92
|
+
* Invoked once per inbound frame. ``MessageEvent.data`` is delivered raw
|
|
93
|
+
* — consumers parse JSON / binary themselves.
|
|
94
|
+
*/
|
|
95
|
+
onMessage: (event: MessageEvent) => void;
|
|
96
|
+
/**
|
|
97
|
+
* Invoked just before each reconnect attempt with the 1-based attempt
|
|
98
|
+
* number, the planned delay (ms), and the close code that triggered the
|
|
99
|
+
* reconnect.
|
|
100
|
+
*/
|
|
101
|
+
onReconnect?: (info: {
|
|
102
|
+
attempt: number;
|
|
103
|
+
delayMs: number;
|
|
104
|
+
closeCode: number | undefined;
|
|
105
|
+
}) => void;
|
|
106
|
+
/**
|
|
107
|
+
* Invoked exactly once per ``ReconnectingWebSocket`` instance on a
|
|
108
|
+
* terminal failure (consumer-aborted, reconnect budget exhausted, or a
|
|
109
|
+
* close code in the terminal set: 4001 / 4003 / 4403 / 4100 / 1008).
|
|
110
|
+
*/
|
|
111
|
+
onError?: (error: ReconnectingWebSocketError) => void;
|
|
112
|
+
}
|
|
113
|
+
/** Handle returned by {@link createReconnectingWebSocket}. */
|
|
114
|
+
export interface ReconnectingWebSocketHandle {
|
|
115
|
+
/**
|
|
116
|
+
* Resolves when the loop has fully stopped (post-abort cleanup complete).
|
|
117
|
+
* Never rejects; consume errors via ``onError``.
|
|
118
|
+
*/
|
|
119
|
+
done: Promise<void>;
|
|
120
|
+
/**
|
|
121
|
+
* Send a frame on the currently open socket. Throws if no socket is
|
|
122
|
+
* currently open. Use ``onStateChange`` to gate sends, or buffer in
|
|
123
|
+
* caller code.
|
|
124
|
+
*/
|
|
125
|
+
send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
|
|
126
|
+
/**
|
|
127
|
+
* Close the connection and stop reconnecting. Equivalent to aborting the
|
|
128
|
+
* caller-supplied signal. Idempotent.
|
|
129
|
+
*/
|
|
130
|
+
close(code?: number, reason?: string): void;
|
|
131
|
+
/** Latest known lifecycle state. */
|
|
132
|
+
readonly state: ReconnectingWebSocketState;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Build a managed reconnecting WebSocket.
|
|
136
|
+
*
|
|
137
|
+
* The returned handle is the only public surface; the underlying
|
|
138
|
+
* ``WebSocket`` is held privately so consumers cannot bypass the lifecycle
|
|
139
|
+
* machinery (which would defeat the watchdog and reconnect loop).
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* const handle = createReconnectingWebSocket({
|
|
144
|
+
* url: client.conversations.sessionConnectUrl({ serviceId, entityId }),
|
|
145
|
+
* protocols: sessionConnectAuthProtocols(apiKey),
|
|
146
|
+
* onMessage: (e) => console.log('frame', e.data),
|
|
147
|
+
* onStateChange: (s) => console.log('state', s),
|
|
148
|
+
* onError: (err) => console.error('terminal:', err.reason, err.closeCode),
|
|
149
|
+
* });
|
|
150
|
+
*
|
|
151
|
+
* handle.send(JSON.stringify({ type: 'user_text', text: 'hi' }));
|
|
152
|
+
* await handle.done; // resolves after handle.close() or terminal error
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export declare function createReconnectingWebSocket(options: ReconnectingWebSocketOptions): ReconnectingWebSocketHandle;
|
|
156
|
+
//# sourceMappingURL=reconnecting-websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconnecting-websocket.d.ts","sourceRoot":"","sources":["../../../src/core/reconnecting-websocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,wFAAwF;AACxF,MAAM,MAAM,0BAA0B,GAClC,YAAY,GACZ,MAAM,GACN,SAAS,GACT,QAAQ,GACR,cAAc,GACd,UAAU,CAAA;AAEd,4FAA4F;AAC5F,MAAM,MAAM,gCAAgC,GACxC,MAAM,GACN,cAAc,GACd,cAAc,GACd,cAAc,GACd,4BAA4B,GAC5B,SAAS,GACT,eAAe,GACf,aAAa,GACb,SAAS,CAAA;AAEb,uDAAuD;AACvD,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,MAAM,EAAE,gCAAgC,CAAA;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;gBAGvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,gCAAgC,EACxC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,QAAQ,EAAE,MAAM;CASnB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,SAAS,CAAA;AAExF,iDAAiD;AACjD,MAAM,WAAW,4BAA4B;IAC3C,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAA;IAEX;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAE7B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IAEnC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAA;IAE3D;;;OAGG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IAExC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAA;IAEjG;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAA;CACtD;AAED,8DAA8D;AAC9D,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAEnB;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,GAAG,eAAe,GAAG,IAAI,CAAA;IAEnE;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAE3C,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAA;CAC3C;AA8BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,GACpC,2BAA2B,CAiF7B"}
|