@cortexkit/subc-client 0.3.0 → 0.3.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.
@@ -0,0 +1,45 @@
1
+ export declare class SocketClosedError extends Error {
2
+ }
3
+ export declare class SocketTimeoutError extends Error {
4
+ }
5
+ export declare class SocketWriteNotQueuedError extends Error {
6
+ readonly cause?: Error | undefined;
7
+ constructor(message: string, cause?: Error | undefined);
8
+ }
9
+ export declare class SocketWriteQueuedError extends Error {
10
+ readonly cause?: Error | undefined;
11
+ constructor(message: string, cause?: Error | undefined);
12
+ }
13
+ export interface SocketWriteResult {
14
+ /** True once bytes were handed to Node's net.Socket.write. This is not a delivery guarantee. */
15
+ queued: boolean;
16
+ /** Resolves when Node reports the write complete; rejects with a classified write error. */
17
+ completed: Promise<void>;
18
+ }
19
+ export declare class SubcSocket {
20
+ private readonly sock;
21
+ private chunks;
22
+ private buffered;
23
+ private waiter;
24
+ private closedErr;
25
+ /** Bytes currently buffered but not yet consumed by a reader. A timeout
26
+ * arbitration uses this to tell "a reply already arrived, keep draining" from
27
+ * "nothing is here, settle the timeout". */
28
+ bufferedBytes(): number;
29
+ private constructor();
30
+ /**
31
+ * The OS-assigned local TCP port of this connection, or null if not yet
32
+ * connected/closed. Used to correlate a client-side timeout with a specific
33
+ * socket in a packet capture when diagnosing reply-delivery issues.
34
+ */
35
+ localPort(): number | null;
36
+ static connect(host: string, port: number, deadlineMs: number): Promise<SubcSocket>;
37
+ /** Read exactly `n` bytes, rejecting if `deadlineMs` (epoch ms) passes first. */
38
+ readExact(n: number, deadlineMs: number): Promise<Uint8Array>;
39
+ write(bytes: Uint8Array, deadlineMs: number): Promise<void>;
40
+ writeTracked(bytes: Uint8Array, deadlineMs: number): SocketWriteResult;
41
+ close(): void;
42
+ private tryServe;
43
+ private take;
44
+ }
45
+ //# sourceMappingURL=socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"AAQA,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAC/C,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAEhD,qBAAa,yBAA0B,SAAQ,KAAK;IAGhD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK;gBADtB,OAAO,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,KAAK,YAAA;CAIzB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAG7C,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK;gBADtB,OAAO,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,KAAK,YAAA;CAIzB;AAED,MAAM,WAAW,iBAAiB;IAChC,gGAAgG;IAChG,MAAM,EAAE,OAAO,CAAC;IAChB,4FAA4F;IAC5F,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AASD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAsB;IAEvC;;gDAE4C;IAC5C,aAAa,IAAI,MAAM;IAIvB,OAAO;IAgBP;;;;OAIG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBnF,iFAAiF;IACjF,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyBvD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjE,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,iBAAiB;IA4EtE,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,IAAI;CAmBb"}
package/dist/socket.js ADDED
@@ -0,0 +1,208 @@
1
+ // A pull-based buffered wrapper over a node TCP socket. Node sockets are
2
+ // event-driven; the handshake and frame loop want "give me exactly N bytes, but
3
+ // don't exceed this absolute deadline". readExact provides that, draining an
4
+ // internal buffer and parking a single waiter until enough bytes arrive, the
5
+ // deadline passes, or the socket ends.
6
+ import net from "node:net";
7
+ export class SocketClosedError extends Error {
8
+ }
9
+ export class SocketTimeoutError extends Error {
10
+ }
11
+ export class SocketWriteNotQueuedError extends Error {
12
+ cause;
13
+ constructor(message, cause) {
14
+ super(message);
15
+ this.cause = cause;
16
+ }
17
+ }
18
+ export class SocketWriteQueuedError extends Error {
19
+ cause;
20
+ constructor(message, cause) {
21
+ super(message);
22
+ this.cause = cause;
23
+ }
24
+ }
25
+ export class SubcSocket {
26
+ sock;
27
+ chunks = [];
28
+ buffered = 0;
29
+ waiter = null;
30
+ closedErr = null;
31
+ /** Bytes currently buffered but not yet consumed by a reader. A timeout
32
+ * arbitration uses this to tell "a reply already arrived, keep draining" from
33
+ * "nothing is here, settle the timeout". */
34
+ bufferedBytes() {
35
+ return this.buffered;
36
+ }
37
+ constructor(sock) {
38
+ this.sock = sock;
39
+ sock.on("data", (chunk) => {
40
+ this.chunks.push(chunk);
41
+ this.buffered += chunk.length;
42
+ this.tryServe();
43
+ });
44
+ const fail = (err) => {
45
+ if (!this.closedErr)
46
+ this.closedErr = err;
47
+ this.tryServe();
48
+ };
49
+ sock.on("error", (err) => fail(err instanceof Error ? err : new Error(String(err))));
50
+ sock.on("end", () => fail(new SocketClosedError("subc closed the connection")));
51
+ sock.on("close", () => fail(new SocketClosedError("subc connection closed")));
52
+ }
53
+ /**
54
+ * The OS-assigned local TCP port of this connection, or null if not yet
55
+ * connected/closed. Used to correlate a client-side timeout with a specific
56
+ * socket in a packet capture when diagnosing reply-delivery issues.
57
+ */
58
+ localPort() {
59
+ return this.sock.localPort ?? null;
60
+ }
61
+ static connect(host, port, deadlineMs) {
62
+ return new Promise((resolve, reject) => {
63
+ const sock = net.connect({ host, port });
64
+ sock.setNoDelay(true);
65
+ const timer = setTimeout(() => {
66
+ sock.destroy();
67
+ reject(new SocketTimeoutError(`timed out connecting to ${host}:${port}`));
68
+ }, Math.max(0, deadlineMs - Date.now()));
69
+ sock.once("connect", () => {
70
+ clearTimeout(timer);
71
+ resolve(new SubcSocket(sock));
72
+ });
73
+ sock.once("error", (err) => {
74
+ clearTimeout(timer);
75
+ reject(err);
76
+ });
77
+ });
78
+ }
79
+ /** Read exactly `n` bytes, rejecting if `deadlineMs` (epoch ms) passes first. */
80
+ readExact(n, deadlineMs) {
81
+ if (this.waiter) {
82
+ return Promise.reject(new Error("concurrent readExact is not supported"));
83
+ }
84
+ if (n === 0)
85
+ return Promise.resolve(new Uint8Array(0));
86
+ return new Promise((resolve, reject) => {
87
+ // A non-finite deadline means "wait indefinitely" (the background frame
88
+ // loop relies on this; per-request timeouts live on the request waiters).
89
+ let timer = null;
90
+ if (Number.isFinite(deadlineMs)) {
91
+ const remaining = deadlineMs - Date.now();
92
+ if (remaining <= 0) {
93
+ reject(new SocketTimeoutError(`timed out waiting for ${n} bytes`));
94
+ return;
95
+ }
96
+ timer = setTimeout(() => {
97
+ this.waiter = null;
98
+ reject(new SocketTimeoutError(`timed out waiting for ${n} bytes`));
99
+ }, remaining);
100
+ }
101
+ this.waiter = { need: n, resolve, reject, timer };
102
+ this.tryServe();
103
+ });
104
+ }
105
+ async write(bytes, deadlineMs) {
106
+ try {
107
+ await this.writeTracked(bytes, deadlineMs).completed;
108
+ }
109
+ catch (err) {
110
+ if (err instanceof SocketWriteNotQueuedError || err instanceof SocketWriteQueuedError) {
111
+ throw err.cause ?? err;
112
+ }
113
+ throw err;
114
+ }
115
+ }
116
+ writeTracked(bytes, deadlineMs) {
117
+ if (this.closedErr) {
118
+ return {
119
+ queued: false,
120
+ completed: Promise.reject(new SocketWriteNotQueuedError("subc socket was closed before bytes could be queued", this.closedErr)),
121
+ };
122
+ }
123
+ let queued = false;
124
+ let settled = false;
125
+ let timer = null;
126
+ const completed = new Promise((resolve, reject) => {
127
+ const settle = (run) => {
128
+ if (settled)
129
+ return;
130
+ settled = true;
131
+ if (timer)
132
+ clearTimeout(timer);
133
+ run();
134
+ };
135
+ const remaining = deadlineMs - Date.now();
136
+ if (remaining <= 0) {
137
+ settle(() => reject(new SocketWriteNotQueuedError("timed out before bytes could be queued to subc", new SocketTimeoutError("timed out writing to subc"))));
138
+ return;
139
+ }
140
+ timer = setTimeout(() => {
141
+ const timeout = new SocketTimeoutError("timed out writing to subc");
142
+ settle(() => reject(queued
143
+ ? new SocketWriteQueuedError("timed out after bytes were handed to the subc socket", timeout)
144
+ : new SocketWriteNotQueuedError("timed out before bytes could be queued to subc", timeout)));
145
+ }, remaining);
146
+ try {
147
+ this.sock.write(Buffer.from(bytes), (err) => {
148
+ settle(() => {
149
+ if (err) {
150
+ reject(new SocketWriteQueuedError("subc socket reported a write error after bytes were handed to the socket", err instanceof Error ? err : new Error(String(err))));
151
+ }
152
+ else {
153
+ resolve();
154
+ }
155
+ });
156
+ });
157
+ queued = true;
158
+ }
159
+ catch (err) {
160
+ settle(() => reject(new SocketWriteNotQueuedError("subc socket write threw before bytes could be queued", err instanceof Error ? err : new Error(String(err)))));
161
+ }
162
+ });
163
+ return { queued, completed };
164
+ }
165
+ close() {
166
+ this.sock.destroy();
167
+ }
168
+ tryServe() {
169
+ const w = this.waiter;
170
+ if (!w)
171
+ return;
172
+ if (this.buffered >= w.need) {
173
+ const out = this.take(w.need);
174
+ this.waiter = null;
175
+ if (w.timer)
176
+ clearTimeout(w.timer);
177
+ w.resolve(out);
178
+ return;
179
+ }
180
+ if (this.closedErr) {
181
+ this.waiter = null;
182
+ if (w.timer)
183
+ clearTimeout(w.timer);
184
+ w.reject(this.closedErr);
185
+ }
186
+ }
187
+ take(n) {
188
+ const out = Buffer.allocUnsafe(n);
189
+ let off = 0;
190
+ while (off < n) {
191
+ const head = this.chunks[0];
192
+ const want = n - off;
193
+ if (head.length <= want) {
194
+ head.copy(out, off);
195
+ off += head.length;
196
+ this.chunks.shift();
197
+ }
198
+ else {
199
+ head.copy(out, off, 0, want);
200
+ this.chunks[0] = head.subarray(want);
201
+ off += want;
202
+ }
203
+ }
204
+ this.buffered -= n;
205
+ return out;
206
+ }
207
+ }
208
+ //# sourceMappingURL=socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,19 +1,22 @@
1
1
  {
2
2
  "name": "@cortexkit/subc-client",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "TypeScript client for the subc daemon. Wire-compatible (byte-for-byte) with the Rust subc-transport handshake and subc-protocol envelope.",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
8
- "types": "./src/index.ts",
9
- "import": "./src/index.ts"
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
10
  }
11
11
  },
12
12
  "files": [
13
+ "dist",
13
14
  "src",
14
15
  "README.md"
15
16
  ],
16
17
  "scripts": {
18
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
19
+ "prepublishOnly": "npm run build",
17
20
  "test": "bun test",
18
21
  "typecheck": "tsc --noEmit && tsc -p tsconfig.test.json --noEmit"
19
22
  },