@tidblink/server 0.3.0-rc.0 → 0.4.0-rc.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.
Files changed (124) hide show
  1. package/README.md +557 -368
  2. package/dist/audio.d.ts +9 -0
  3. package/dist/audio.d.ts.map +1 -1
  4. package/dist/audio.js +6 -1
  5. package/dist/audio.js.map +1 -1
  6. package/dist/backend-connection.d.ts +89 -0
  7. package/dist/backend-connection.d.ts.map +1 -0
  8. package/dist/backend-connection.js +300 -0
  9. package/dist/backend-connection.js.map +1 -0
  10. package/dist/backend-pool.d.ts +93 -0
  11. package/dist/backend-pool.d.ts.map +1 -0
  12. package/dist/backend-pool.js +419 -0
  13. package/dist/backend-pool.js.map +1 -0
  14. package/dist/client-tool-executor.d.ts +31 -0
  15. package/dist/client-tool-executor.d.ts.map +1 -0
  16. package/dist/client-tool-executor.js +190 -0
  17. package/dist/client-tool-executor.js.map +1 -0
  18. package/dist/client-tools.d.ts +0 -25
  19. package/dist/client-tools.d.ts.map +1 -1
  20. package/dist/client-tools.js +1 -67
  21. package/dist/client-tools.js.map +1 -1
  22. package/dist/connector-callback.d.ts +92 -0
  23. package/dist/connector-callback.d.ts.map +1 -0
  24. package/dist/connector-callback.js +155 -0
  25. package/dist/connector-callback.js.map +1 -0
  26. package/dist/connectors.d.ts +66 -0
  27. package/dist/connectors.d.ts.map +1 -0
  28. package/dist/connectors.js +71 -0
  29. package/dist/connectors.js.map +1 -0
  30. package/dist/control.js +1 -1
  31. package/dist/control.js.map +1 -1
  32. package/dist/errors.d.ts +34 -11
  33. package/dist/errors.d.ts.map +1 -1
  34. package/dist/errors.js +36 -8
  35. package/dist/errors.js.map +1 -1
  36. package/dist/events.d.ts +158 -0
  37. package/dist/events.d.ts.map +1 -0
  38. package/dist/events.js +110 -0
  39. package/dist/events.js.map +1 -0
  40. package/dist/files.js +9 -9
  41. package/dist/files.js.map +1 -1
  42. package/dist/history.d.ts +38 -1
  43. package/dist/history.d.ts.map +1 -1
  44. package/dist/history.js +1 -1
  45. package/dist/history.js.map +1 -1
  46. package/dist/http.d.ts +28 -4
  47. package/dist/http.d.ts.map +1 -1
  48. package/dist/http.js +44 -24
  49. package/dist/http.js.map +1 -1
  50. package/dist/index.d.ts +26 -13
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +10 -4
  53. package/dist/index.js.map +1 -1
  54. package/dist/organization.d.ts +45 -28
  55. package/dist/organization.d.ts.map +1 -1
  56. package/dist/organization.js +67 -73
  57. package/dist/organization.js.map +1 -1
  58. package/dist/realtime.d.ts +0 -1
  59. package/dist/realtime.d.ts.map +1 -1
  60. package/dist/realtime.js +0 -1
  61. package/dist/realtime.js.map +1 -1
  62. package/dist/session-connection.d.ts +144 -0
  63. package/dist/session-connection.d.ts.map +1 -0
  64. package/dist/session-connection.js +334 -0
  65. package/dist/session-connection.js.map +1 -0
  66. package/dist/session-send.d.ts +49 -0
  67. package/dist/session-send.d.ts.map +1 -0
  68. package/dist/session-send.js +179 -0
  69. package/dist/session-send.js.map +1 -0
  70. package/dist/session.d.ts +37 -8
  71. package/dist/session.d.ts.map +1 -1
  72. package/dist/session.js +56 -29
  73. package/dist/session.js.map +1 -1
  74. package/dist/skills.d.ts +103 -0
  75. package/dist/skills.d.ts.map +1 -0
  76. package/dist/skills.js +98 -0
  77. package/dist/skills.js.map +1 -0
  78. package/dist/sse.d.ts +5 -2
  79. package/dist/sse.d.ts.map +1 -1
  80. package/dist/sse.js +7 -2
  81. package/dist/sse.js.map +1 -1
  82. package/dist/template-switch.d.ts +51 -0
  83. package/dist/template-switch.d.ts.map +1 -0
  84. package/dist/template-switch.js +81 -0
  85. package/dist/template-switch.js.map +1 -0
  86. package/dist/templates.d.ts +129 -0
  87. package/dist/templates.d.ts.map +1 -0
  88. package/dist/templates.js +92 -0
  89. package/dist/templates.js.map +1 -0
  90. package/dist/turn.d.ts +4 -0
  91. package/dist/turn.d.ts.map +1 -1
  92. package/dist/turn.js +17 -13
  93. package/dist/turn.js.map +1 -1
  94. package/dist/usage.d.ts +13 -197
  95. package/dist/usage.d.ts.map +1 -1
  96. package/dist/usage.js +5 -3
  97. package/dist/usage.js.map +1 -1
  98. package/dist/user.d.ts +10 -51
  99. package/dist/user.d.ts.map +1 -1
  100. package/dist/user.js +18 -105
  101. package/dist/user.js.map +1 -1
  102. package/examples/control-turn.mjs +9 -4
  103. package/examples/create-session.mjs +37 -24
  104. package/examples/http-connector.mjs +127 -0
  105. package/examples/lamp-backend.mjs +175 -0
  106. package/examples/prepare-realtime-connection.mjs +18 -7
  107. package/examples/read-usage.mjs +7 -25
  108. package/examples/send-message.mjs +9 -4
  109. package/examples/submit-audio.mjs +9 -4
  110. package/examples/upload-file.mjs +9 -4
  111. package/package.json +7 -13
  112. package/dist/progress.d.ts +0 -34
  113. package/dist/progress.d.ts.map +0 -1
  114. package/dist/progress.js +0 -154
  115. package/dist/progress.js.map +0 -1
  116. package/dist/schedulers.d.ts +0 -129
  117. package/dist/schedulers.d.ts.map +0 -1
  118. package/dist/schedulers.js +0 -91
  119. package/dist/schedulers.js.map +0 -1
  120. package/examples/answer-client-tool.mjs +0 -69
  121. package/examples/observe-message.mjs +0 -44
  122. package/examples/organization-session.mjs +0 -66
  123. package/examples/provision-user.mjs +0 -83
  124. package/examples/schedule-task.mjs +0 -67
package/dist/audio.d.ts CHANGED
@@ -2,6 +2,7 @@ import { HttpClient } from "./http.js";
2
2
  import { OutcomeUnknownError } from "./errors.js";
3
3
  import type { BillingTag, ClarificationItem } from "./session.js";
4
4
  import type { OperationRecord, TurnFailure } from "./history.js";
5
+ import { type ClientToolCallPayload } from "./events.js";
5
6
  import type { RequestOptions } from "./organization.js";
6
7
  export interface AudioTurnInput extends RequestOptions {
7
8
  bytes: Uint8Array;
@@ -39,6 +40,14 @@ export type AudioTurnEvent = AudioEnvelope<"turn_started", {
39
40
  messageId: string;
40
41
  text: string;
41
42
  clarificationItem?: ClarificationItem;
43
+ }>
44
+ /**
45
+ * Client Tool calls the audio Turn published. Answer them the way the
46
+ * Session's Client Tools are answered; this event authorizes nothing by
47
+ * itself.
48
+ */
49
+ | AudioEnvelope<"client_tool_calls", {
50
+ calls: ClientToolCallPayload[];
42
51
  }> | AudioEnvelope<"turn_error", TurnFailure> | AudioEnvelope<"turn_finished", {
43
52
  status: "succeeded" | "failed" | "interrupted";
44
53
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAC;AACzD,OAAO,EACL,mBAAmB,EAKpB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC;AAED,KAAK,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,IAAI;IACjD,KAAK,EAAE,IAAI,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,cAAc,GACtB,aAAa,CACX,cAAc,EACd;IAAE,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CACpD,GACD,aAAa,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3C,aAAa,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAClD,aAAa,CACX,gBAAgB,EAChB;IACE,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;CACpC,CACF,GACD,aAAa,CACX,mBAAmB,EACnB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAC3E,GACD,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,GACxC,aAAa,CACX,eAAe,EACf;IAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAA;CAAE,CACnD,CAAC;AACN,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,CACA;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,aAAa,EAAE,iBAAiB,CAAA;CAAE,CAC9D,CAAC;AAEF,qFAAqF;AACrF,qBAAa,qBAAsB,SAAQ,mBAAmB;gBAE1D,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,OAAO;CAYlB;AAgDD,wBAAuB,WAAW,CAChC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,cAAc,GACpB,cAAc,CAAC,cAAc,CAAC,CAyGhC;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,eAAe,CAAC,CAuC1B"}
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"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"}
package/dist/audio.js CHANGED
@@ -2,6 +2,7 @@ import { HttpClient, requireKnownKeys } from "./http.js";
2
2
  import { OutcomeUnknownError, TiDBLinkApiError, TurnFailedError, TurnInterruptedError, TiDBLinkError, } from "./errors.js";
3
3
  import { decodeSse } from "./sse.js";
4
4
  import { validClarification } from "./turn.js";
5
+ import { isClientToolCallsPayload, } from "./events.js";
5
6
  /** Audio owns its response: losing or closing it may request remote interruption. */
6
7
  export class AudioTurnStoppedError extends OutcomeUnknownError {
7
8
  constructor(sessionId, turnId, requestId, cause) {
@@ -48,7 +49,7 @@ export async function* streamAudio(http, sessionId, input) {
48
49
  let sequence = -1;
49
50
  let response;
50
51
  try {
51
- ({ response, requestId } = await http.rawResponse(`/api/v1/user/sessions/${encodeURIComponent(sessionId)}/turns/audio`, {
52
+ ({ response, requestId } = await http.rawResponse(`/sessions/${encodeURIComponent(sessionId)}/turns/audio`, {
52
53
  method: "POST",
53
54
  body: upload.body,
54
55
  headers: {
@@ -86,6 +87,7 @@ export async function* streamAudio(http, sessionId, input) {
86
87
  "assistant_draft",
87
88
  "operation_step",
88
89
  "assistant_message",
90
+ "client_tool_calls",
89
91
  "turn_error",
90
92
  "turn_finished",
91
93
  ].includes(event.event))
@@ -102,6 +104,9 @@ export async function* streamAudio(http, sessionId, input) {
102
104
  (event.payload.clarificationItem !== undefined &&
103
105
  !validClarification(event.payload.clarificationItem))))
104
106
  throw new TiDBLinkError("Audio response returned an invalid final Message");
107
+ if (event.event === "client_tool_calls" &&
108
+ !isClientToolCallsPayload(event.payload))
109
+ throw new TiDBLinkError("Audio response returned invalid Client Tool calls");
105
110
  if (event.event === "turn_finished" &&
106
111
  !["succeeded", "failed", "interrupted"].includes(event.payload.status))
107
112
  throw new TiDBLinkError("Audio response returned an invalid terminal status");
package/dist/audio.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"audio.js","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { BackendConnectionClosedError } from "./errors.js";
2
+ /**
3
+ * One Backend Connection (ADR 0109): a WebSocket from this Application Server
4
+ * process to the core, carrying one JSON-RPC 2.0 message per text frame.
5
+ * The published definition is the core's `docs/backend-connection-v1.schema.json`.
6
+ */
7
+ export declare const BACKEND_CONNECTION_PATH = "/api/v1/org/backend/ws";
8
+ export declare const BACKEND_CONNECTION_SUBPROTOCOL = "tidb-link.backend.v1";
9
+ /** The part of the WHATWG WebSocket the SDK uses. */
10
+ export interface BackendWebSocket {
11
+ readonly protocol: string;
12
+ send(data: string): void;
13
+ close(code?: number, reason?: string): void;
14
+ addEventListener(type: "open", listener: () => void): void;
15
+ addEventListener(type: "message", listener: (event: {
16
+ data: unknown;
17
+ }) => void): void;
18
+ addEventListener(type: "close", listener: (event: {
19
+ code: number;
20
+ reason: string;
21
+ }) => void): void;
22
+ addEventListener(type: "error", listener: (event: unknown) => void): void;
23
+ }
24
+ /**
25
+ * A WebSocket constructor that accepts upgrade headers, like Node.js's
26
+ * global `WebSocket` (undici). The SDK sends the Organization API Key in the
27
+ * `Authorization` header, never in the URL.
28
+ */
29
+ export type WebSocketConstructor = new (url: string, init: any) => BackendWebSocket;
30
+ /** Connection parameters the core announces in `hello`. */
31
+ export interface BackendConnectionHello {
32
+ connectionId: string;
33
+ /** Most Session Attachments this connection may hold. */
34
+ maxSessions: number;
35
+ /** How long a published Client Tool call waits for its claim. */
36
+ claimWindowMs: number;
37
+ /** Interval of the core's WebSocket pings. */
38
+ heartbeatMs: number;
39
+ /** Largest frame the core accepts. */
40
+ maxFrameBytes: number;
41
+ }
42
+ export type BackendNotificationHandler = (method: string, params: Record<string, unknown>) => void;
43
+ export interface OpenBackendTransportInput {
44
+ /** `ws:` or `wss:` URL of the Backend Connection route. */
45
+ url: string;
46
+ apiKey: string;
47
+ WebSocket?: WebSocketConstructor | undefined;
48
+ /** Receives every core notification after `hello`, in arrival order. */
49
+ onNotification: BackendNotificationHandler;
50
+ /** Give up when `hello` has not arrived by then. Default 15 seconds. */
51
+ openTimeoutMs?: number;
52
+ }
53
+ /** Close code the SDK uses when the core stopped answering liveness probes. */
54
+ export declare const CLIENT_HEARTBEAT_CLOSE = 4000;
55
+ /** Derive the Backend Connection URL from the SDK's HTTP(S) base URL. */
56
+ export declare const backendConnectionUrl: (baseUrl: string) => string;
57
+ /**
58
+ * One open Backend Connection: JSON-RPC request and response pairing,
59
+ * notifications, liveness and close. It never reconnects; the connection
60
+ * pool replaces a closed transport.
61
+ *
62
+ * Liveness: the core pings at the WebSocket layer, which the WHATWG
63
+ * WebSocket answers but does not expose. So when nothing has arrived for one
64
+ * heartbeat interval, the transport sends a `ping` request; any answer, even
65
+ * "method not found", proves the connection alive. With no frame for a
66
+ * further interval it closes the connection.
67
+ */
68
+ export declare class BackendTransport {
69
+ #private;
70
+ readonly hello: BackendConnectionHello;
71
+ /** Resolves once with why the connection ended, local closes included. */
72
+ readonly closed: Promise<BackendConnectionClosedError>;
73
+ private constructor();
74
+ /** Open a connection and wait for the core's `hello`. */
75
+ static open(input: OpenBackendTransportInput): Promise<BackendTransport>;
76
+ /** Whether requests can still be sent. */
77
+ get open(): boolean;
78
+ /** Requests sent and not yet answered. */
79
+ get pendingRequests(): number;
80
+ /**
81
+ * Send a request and wait for its answer. A JSON-RPC error rejects with a
82
+ * BackendRequestError; a connection that ends first rejects with its
83
+ * BackendConnectionClosedError, and the request's outcome is then unknown.
84
+ */
85
+ request<T = unknown>(method: string, params: Record<string, unknown>): Promise<T>;
86
+ /** Close the connection. Pending requests reject at once. */
87
+ close(code?: number, reason?: string): void;
88
+ }
89
+ //# sourceMappingURL=backend-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-connection.d.ts","sourceRoot":"","sources":["../src/backend-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,300 @@
1
+ import { BackendConnectionClosedError, BackendRequestError, TiDBLinkError, } from "./errors.js";
2
+ /**
3
+ * One Backend Connection (ADR 0109): a WebSocket from this Application Server
4
+ * process to the core, carrying one JSON-RPC 2.0 message per text frame.
5
+ * The published definition is the core's `docs/backend-connection-v1.schema.json`.
6
+ */
7
+ export const BACKEND_CONNECTION_PATH = "/api/v1/org/backend/ws";
8
+ export const BACKEND_CONNECTION_SUBPROTOCOL = "tidb-link.backend.v1";
9
+ /** Close code the SDK uses when the core stopped answering liveness probes. */
10
+ export const CLIENT_HEARTBEAT_CLOSE = 4000;
11
+ const DEFAULT_OPEN_TIMEOUT_MS = 15_000;
12
+ /** Bounds the liveness interval whatever `hello.heartbeatMs` says. */
13
+ const MIN_PROBE_INTERVAL_MS = 1_000;
14
+ const MAX_PROBE_INTERVAL_MS = 60_000;
15
+ const encoder = new TextEncoder();
16
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
17
+ const isPositiveInteger = (value) => Number.isSafeInteger(value) && value > 0;
18
+ const parseHello = (params) => {
19
+ if (!isObject(params))
20
+ return undefined;
21
+ const { connectionId, maxSessions, claimWindowMs, heartbeatMs, maxFrameBytes } = params;
22
+ if (typeof connectionId !== "string" ||
23
+ !connectionId ||
24
+ !isPositiveInteger(maxSessions) ||
25
+ !isPositiveInteger(claimWindowMs) ||
26
+ !isPositiveInteger(heartbeatMs) ||
27
+ !isPositiveInteger(maxFrameBytes))
28
+ return undefined;
29
+ return { connectionId, maxSessions, claimWindowMs, heartbeatMs, maxFrameBytes };
30
+ };
31
+ /** Derive the Backend Connection URL from the SDK's HTTP(S) base URL. */
32
+ export const backendConnectionUrl = (baseUrl) => {
33
+ const url = new URL(baseUrl);
34
+ url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
35
+ return `${url.toString().replace(/\/$/, "")}${BACKEND_CONNECTION_PATH}`;
36
+ };
37
+ /**
38
+ * One open Backend Connection: JSON-RPC request and response pairing,
39
+ * notifications, liveness and close. It never reconnects; the connection
40
+ * pool replaces a closed transport.
41
+ *
42
+ * Liveness: the core pings at the WebSocket layer, which the WHATWG
43
+ * WebSocket answers but does not expose. So when nothing has arrived for one
44
+ * heartbeat interval, the transport sends a `ping` request; any answer, even
45
+ * "method not found", proves the connection alive. With no frame for a
46
+ * further interval it closes the connection.
47
+ */
48
+ export class BackendTransport {
49
+ hello;
50
+ /** Resolves once with why the connection ended, local closes included. */
51
+ closed;
52
+ #socket;
53
+ #pending = new Map();
54
+ #onNotification;
55
+ #nextId = 1;
56
+ #lastFrameAt = performance.now();
57
+ #probing = false;
58
+ #timer;
59
+ #error;
60
+ #settleClosed;
61
+ constructor(socket, hello, onNotification) {
62
+ this.#socket = socket;
63
+ this.hello = hello;
64
+ this.#onNotification = onNotification;
65
+ this.closed = new Promise((resolve) => {
66
+ this.#settleClosed = resolve;
67
+ });
68
+ const interval = Math.min(MAX_PROBE_INTERVAL_MS, Math.max(MIN_PROBE_INTERVAL_MS, hello.heartbeatMs));
69
+ this.#timer = setInterval(() => this.#checkLiveness(interval), interval);
70
+ this.#timer.unref?.();
71
+ }
72
+ /** Open a connection and wait for the core's `hello`. */
73
+ static open(input) {
74
+ const WebSocketClass = input.WebSocket ??
75
+ globalThis.WebSocket;
76
+ if (typeof WebSocketClass !== "function")
77
+ throw new TypeError("Backend Connections need a WebSocket constructor; pass the WebSocket option");
78
+ const timeoutMs = input.openTimeoutMs ?? DEFAULT_OPEN_TIMEOUT_MS;
79
+ return new Promise((resolve, reject) => {
80
+ let transport;
81
+ let settled = false;
82
+ const fail = (error) => {
83
+ if (settled)
84
+ return;
85
+ settled = true;
86
+ clearTimeout(timer);
87
+ reject(error);
88
+ };
89
+ let socket;
90
+ try {
91
+ socket = new WebSocketClass(input.url, {
92
+ protocols: [BACKEND_CONNECTION_SUBPROTOCOL],
93
+ headers: { authorization: `Bearer ${input.apiKey}` },
94
+ });
95
+ }
96
+ catch (cause) {
97
+ reject(new BackendConnectionClosedError({
98
+ code: 1006,
99
+ message: "Could not open a Backend Connection",
100
+ cause,
101
+ }));
102
+ return;
103
+ }
104
+ const timer = setTimeout(() => {
105
+ fail(new BackendConnectionClosedError({
106
+ code: 1006,
107
+ message: `Backend Connection sent no hello within ${timeoutMs} ms`,
108
+ }));
109
+ closeQuietly(socket, 1000);
110
+ }, timeoutMs);
111
+ socket.addEventListener("message", ({ data }) => {
112
+ if (transport)
113
+ return transport.#receive(data);
114
+ const message = typeof data === "string" ? safeParse(data) : undefined;
115
+ const hello = message?.method === "hello" && !("id" in message)
116
+ ? parseHello(message.params)
117
+ : undefined;
118
+ if (!hello) {
119
+ fail(new BackendConnectionClosedError({
120
+ code: 1002,
121
+ message: "Backend Connection did not start with a valid hello",
122
+ }));
123
+ closeQuietly(socket, 1002);
124
+ return;
125
+ }
126
+ if (settled)
127
+ return;
128
+ settled = true;
129
+ clearTimeout(timer);
130
+ transport = new BackendTransport(socket, hello, input.onNotification);
131
+ resolve(transport);
132
+ });
133
+ socket.addEventListener("close", ({ code, reason }) => {
134
+ const error = new BackendConnectionClosedError({ code, reason });
135
+ if (transport)
136
+ transport.#end(error);
137
+ else
138
+ fail(error);
139
+ });
140
+ // Once open, an error is followed by close, which carries the code. A
141
+ // refused upgrade may report only the error (Node.js 22).
142
+ socket.addEventListener("error", (event) => {
143
+ if (transport)
144
+ return;
145
+ fail(new BackendConnectionClosedError({
146
+ code: 1006,
147
+ message: "Could not open a Backend Connection",
148
+ cause: event.error ?? event,
149
+ }));
150
+ closeQuietly(socket, 1000);
151
+ });
152
+ });
153
+ }
154
+ /** Whether requests can still be sent. */
155
+ get open() {
156
+ return this.#error === undefined;
157
+ }
158
+ /** Requests sent and not yet answered. */
159
+ get pendingRequests() {
160
+ return this.#pending.size;
161
+ }
162
+ /**
163
+ * Send a request and wait for its answer. A JSON-RPC error rejects with a
164
+ * BackendRequestError; a connection that ends first rejects with its
165
+ * BackendConnectionClosedError, and the request's outcome is then unknown.
166
+ */
167
+ request(method, params) {
168
+ if (this.#error)
169
+ return Promise.reject(this.#error);
170
+ const id = this.#nextId++;
171
+ const text = JSON.stringify({ jsonrpc: "2.0", id, method, params });
172
+ if (encoder.encode(text).byteLength > this.hello.maxFrameBytes)
173
+ return Promise.reject(new TiDBLinkError(`${method} exceeds the Backend Connection frame limit of ${this.hello.maxFrameBytes} bytes`));
174
+ return new Promise((resolve, reject) => {
175
+ this.#pending.set(id, {
176
+ resolve: resolve,
177
+ reject,
178
+ });
179
+ try {
180
+ this.#socket.send(text);
181
+ }
182
+ catch (cause) {
183
+ this.#pending.delete(id);
184
+ reject(new BackendConnectionClosedError({
185
+ code: 1006,
186
+ message: "Could not send on the Backend Connection",
187
+ cause,
188
+ }));
189
+ }
190
+ });
191
+ }
192
+ /** Close the connection. Pending requests reject at once. */
193
+ close(code = 1000, reason = "") {
194
+ if (this.#error)
195
+ return;
196
+ this.#end(new BackendConnectionClosedError({
197
+ code,
198
+ reason,
199
+ message: reason || "Backend Connection closed by this process",
200
+ }));
201
+ closeQuietly(this.#socket, code, reason);
202
+ }
203
+ #receive(data) {
204
+ if (this.#error)
205
+ return;
206
+ this.#lastFrameAt = performance.now();
207
+ this.#probing = false;
208
+ const message = typeof data === "string" ? safeParse(data) : undefined;
209
+ if (!message || message.jsonrpc !== "2.0") {
210
+ this.close(1002, "invalid frame");
211
+ return;
212
+ }
213
+ if (typeof message.method === "string") {
214
+ if ("id" in message) {
215
+ // The core sends no requests in this protocol revision.
216
+ this.#send({
217
+ jsonrpc: "2.0",
218
+ id: message.id,
219
+ error: { code: -32601, message: "Method not found" },
220
+ });
221
+ return;
222
+ }
223
+ this.#onNotification(message.method, isObject(message.params) ? message.params : {});
224
+ return;
225
+ }
226
+ if (typeof message.id !== "number")
227
+ return;
228
+ const pending = this.#pending.get(message.id);
229
+ if (!pending)
230
+ return;
231
+ this.#pending.delete(message.id);
232
+ if (isObject(message.error)) {
233
+ const { code, message: text, data } = message.error;
234
+ const reason = isObject(data) && typeof data.reason === "string" ? data.reason : undefined;
235
+ pending.reject(new BackendRequestError({
236
+ code: typeof code === "number" ? code : -32603,
237
+ message: typeof text === "string" && text ? text : "Backend Connection request failed",
238
+ ...(reason === undefined ? {} : { reason }),
239
+ ...(isObject(data) && "details" in data ? { details: data.details } : {}),
240
+ }));
241
+ }
242
+ else
243
+ pending.resolve(message.result);
244
+ }
245
+ #checkLiveness(interval) {
246
+ if (this.#error)
247
+ return;
248
+ if (performance.now() - this.#lastFrameAt < interval)
249
+ return;
250
+ if (this.#probing) {
251
+ this.#end(new BackendConnectionClosedError({
252
+ code: CLIENT_HEARTBEAT_CLOSE,
253
+ message: `Backend Connection was silent for ${2 * interval} ms`,
254
+ }));
255
+ closeQuietly(this.#socket, CLIENT_HEARTBEAT_CLOSE, "heartbeat timeout");
256
+ return;
257
+ }
258
+ this.#probing = true;
259
+ // Any answer, including "method not found" from a core without `ping`, counts.
260
+ this.request("ping", {}).catch(() => undefined);
261
+ }
262
+ #send(message) {
263
+ try {
264
+ this.#socket.send(JSON.stringify(message));
265
+ }
266
+ catch {
267
+ // The close event follows.
268
+ }
269
+ }
270
+ #end(error) {
271
+ if (this.#error)
272
+ return;
273
+ this.#error = error;
274
+ clearInterval(this.#timer);
275
+ this.#onNotification = () => undefined;
276
+ for (const pending of this.#pending.values())
277
+ pending.reject(error);
278
+ this.#pending.clear();
279
+ this.#settleClosed(error);
280
+ }
281
+ }
282
+ function safeParse(text) {
283
+ try {
284
+ const value = JSON.parse(text);
285
+ return isObject(value) ? value : undefined;
286
+ }
287
+ catch {
288
+ return undefined;
289
+ }
290
+ }
291
+ function closeQuietly(socket, code, reason = "") {
292
+ try {
293
+ // A client may only send 1000 or an application code in 3000-4999.
294
+ socket.close(code === 1000 || (code >= 3000 && code <= 4999) ? code : 1000, reason);
295
+ }
296
+ catch {
297
+ // Already closing.
298
+ }
299
+ }
300
+ //# sourceMappingURL=backend-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-connection.js","sourceRoot":"","sources":["../src/backend-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { type WebSocketConstructor } from "./backend-connection.js";
2
+ /** The answer of a `session.attach` that took effect. */
3
+ export interface AttachResult {
4
+ /** The Session's attachment generation. */
5
+ generation: number;
6
+ /** Position of the Session's latest event when the attachment took effect. */
7
+ cursor: string;
8
+ }
9
+ /** Why the pool stopped serving an attachment. It does not retry it. */
10
+ export type AttachmentEnd =
11
+ /** An executing attachment on another connection took the Session. */
12
+ {
13
+ reason: "superseded";
14
+ }
15
+ /** The Session was deleted. */
16
+ | {
17
+ reason: "session_deleted";
18
+ }
19
+ /** `OrganizationClient.close()` closed every Backend Connection. */
20
+ | {
21
+ reason: "closed";
22
+ }
23
+ /** Re-attaching failed for good, for example after a revoked Key. */
24
+ | {
25
+ reason: "error";
26
+ error: unknown;
27
+ };
28
+ /** Requests over one Backend Connection. */
29
+ export interface BackendLink {
30
+ readonly open: boolean;
31
+ request<T = unknown>(method: string, params: Record<string, unknown>): Promise<T>;
32
+ }
33
+ /**
34
+ * The pool's view of one Session Attachment. The pool calls it; a Session
35
+ * connection implements it.
36
+ */
37
+ export interface PoolAttachment {
38
+ readonly sessionId: string;
39
+ /** Parameters of the next `session.attach`, recomputed for every (re)attach. */
40
+ attachParams(): Record<string, unknown>;
41
+ /** A (re)attach took effect on `link`, which now delivers the Session. */
42
+ attached(result: AttachResult, link: BackendLink): void;
43
+ /** A notification for this Session from the connection that holds it. */
44
+ notify(method: string, params: Record<string, unknown>, link: BackendLink): void;
45
+ /** The pool gave the attachment up; called at most once, never after `detach()`. */
46
+ ended(end: AttachmentEnd): void;
47
+ }
48
+ export interface BackendConnectionPoolOptions {
49
+ baseUrl: string;
50
+ apiKey: string;
51
+ WebSocket?: WebSocketConstructor | undefined;
52
+ /** Close a connection that has held nothing for this long. Default 5 seconds. */
53
+ idleCloseMs?: number;
54
+ /** See `OpenBackendTransportInput.openTimeoutMs`. */
55
+ openTimeoutMs?: number;
56
+ }
57
+ /**
58
+ * The Backend Connections of one OrganizationClient. Connections open on
59
+ * demand and hold up to the `maxSessions` the core announces; further
60
+ * attachments open another connection, which the load balancer may place on
61
+ * another replica. A lost connection's attachments re-attach elsewhere with
62
+ * their latest parameters; `connection.drain` moves them before the core
63
+ * closes the connection. Connections that hold nothing close after a short
64
+ * idle period.
65
+ */
66
+ export declare class BackendConnectionPool {
67
+ #private;
68
+ constructor(options: BackendConnectionPoolOptions);
69
+ /** Open Backend Connections, for diagnostics and tests. */
70
+ get connections(): number;
71
+ /**
72
+ * Attach a Session and keep it attached until `detach()` or until the pool
73
+ * gives it up through `ended()`. Rejects when the first attach fails; one
74
+ * attachment per Session is allowed at a time.
75
+ */
76
+ attach(attachment: PoolAttachment): Promise<AttachResult>;
77
+ /** Release an attachment. Best effort: a lost connection releases it anyway. */
78
+ detach(attachment: PoolAttachment): Promise<void>;
79
+ /**
80
+ * Send a request that any connection of the Organization may carry, such as
81
+ * `tool.result`, retrying on another connection after transient failures
82
+ * until `retryUntil` (epoch milliseconds). Only idempotent requests belong here.
83
+ */
84
+ request<T = unknown>(method: string, params: Record<string, unknown>, options?: {
85
+ retryUntil?: number;
86
+ }): Promise<T>;
87
+ /**
88
+ * End every attachment with reason `closed`, release them and close the
89
+ * connections. Later attaches are refused.
90
+ */
91
+ close(): Promise<void>;
92
+ }
93
+ //# sourceMappingURL=backend-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-pool.d.ts","sourceRoot":"","sources":["../src/backend-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AAQjC,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wEAAwE;AACxE,MAAM,MAAM,aAAa;AACvB,sEAAsE;AACpE;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE;AAC1B,+BAA+B;GAC7B;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE;AAC/B,oEAAoE;GAClE;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE;AACtB,qEAAqE;GACnE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAExC,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACnF;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACxD,yEAAyE;IACzE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACjF,oFAAoF;IACpF,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC7C,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA4CD;;;;;;;;GAQG;AACH,qBAAa,qBAAqB;;gBAiBpB,OAAO,EAAE,4BAA4B;IAQjD,2DAA2D;IAC3D,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACG,MAAM,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IAgB/D,gFAAgF;IAC1E,MAAM,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvD;;;;OAIG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GACpC,OAAO,CAAC,CAAC,CAAC;IAwBb;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAyQ7B"}