@thenewlabs/entangle-protocol 2.0.0 → 2.0.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.
@@ -11,35 +11,35 @@ export declare const RunMessageSchema: z.ZodObject<{
11
11
  wallMs: z.ZodOptional<z.ZodNumber>;
12
12
  maxOutBytes: z.ZodOptional<z.ZodNumber>;
13
13
  }, "strip", z.ZodTypeAny, {
14
+ maxOutBytes?: number | undefined;
14
15
  cpuMs?: number | undefined;
15
16
  memMB?: number | undefined;
16
17
  wallMs?: number | undefined;
17
- maxOutBytes?: number | undefined;
18
18
  }, {
19
+ maxOutBytes?: number | undefined;
19
20
  cpuMs?: number | undefined;
20
21
  memMB?: number | undefined;
21
22
  wallMs?: number | undefined;
22
- maxOutBytes?: number | undefined;
23
23
  }>>;
24
24
  }, "strip", z.ZodTypeAny, {
25
25
  commandId: string;
26
26
  argv: string[];
27
27
  cwd?: string | undefined;
28
28
  limits?: {
29
+ maxOutBytes?: number | undefined;
29
30
  cpuMs?: number | undefined;
30
31
  memMB?: number | undefined;
31
32
  wallMs?: number | undefined;
32
- maxOutBytes?: number | undefined;
33
33
  } | undefined;
34
34
  }, {
35
35
  commandId: string;
36
36
  argv: string[];
37
37
  cwd?: string | undefined;
38
38
  limits?: {
39
+ maxOutBytes?: number | undefined;
39
40
  cpuMs?: number | undefined;
40
41
  memMB?: number | undefined;
41
42
  wallMs?: number | undefined;
42
- maxOutBytes?: number | undefined;
43
43
  } | undefined;
44
44
  }>;
45
45
  }, "strip", z.ZodTypeAny, {
@@ -49,10 +49,10 @@ export declare const RunMessageSchema: z.ZodObject<{
49
49
  argv: string[];
50
50
  cwd?: string | undefined;
51
51
  limits?: {
52
+ maxOutBytes?: number | undefined;
52
53
  cpuMs?: number | undefined;
53
54
  memMB?: number | undefined;
54
55
  wallMs?: number | undefined;
55
- maxOutBytes?: number | undefined;
56
56
  } | undefined;
57
57
  };
58
58
  }, {
@@ -62,10 +62,10 @@ export declare const RunMessageSchema: z.ZodObject<{
62
62
  argv: string[];
63
63
  cwd?: string | undefined;
64
64
  limits?: {
65
+ maxOutBytes?: number | undefined;
65
66
  cpuMs?: number | undefined;
66
67
  memMB?: number | undefined;
67
68
  wallMs?: number | undefined;
68
- maxOutBytes?: number | undefined;
69
69
  } | undefined;
70
70
  };
71
71
  }>;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@thenewlabs/entangle-protocol",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "tsc",
9
- "clean": "rm -rf dist",
9
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
10
10
  "prepublishOnly": "npm run build"
11
11
  },
12
12
  "dependencies": {
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=frame.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frame.test.d.ts","sourceRoot":"","sources":["../src/frame.test.ts"],"names":[],"mappings":""}
@@ -1,166 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { FrameType } from './types.js';
3
- import { encodeFrame, decodeFrameHeader, FrameReader } from './frame.js';
4
- describe('Frame Codec', () => {
5
- describe('encodeFrame', () => {
6
- it('should encode frame with correct header', () => {
7
- const type = FrameType.RUN;
8
- const payload = new Uint8Array([1, 2, 3, 4]);
9
- const frame = encodeFrame(type, payload);
10
- expect(frame).toHaveLength(9 + payload.length);
11
- expect(frame[0]).toBe(type);
12
- const view = new DataView(frame.buffer);
13
- const length = view.getBigUint64(1, false);
14
- expect(length).toBe(BigInt(payload.length));
15
- const extractedPayload = frame.slice(9);
16
- expect(extractedPayload).toEqual(payload);
17
- });
18
- it('should handle empty payload', () => {
19
- const type = FrameType.KEEPALIVE;
20
- const payload = new Uint8Array(0);
21
- const frame = encodeFrame(type, payload);
22
- expect(frame).toHaveLength(9);
23
- expect(frame[0]).toBe(type);
24
- const view = new DataView(frame.buffer);
25
- const length = view.getBigUint64(1, false);
26
- expect(length).toBe(0n);
27
- });
28
- it('should handle large payload', () => {
29
- const type = FrameType.STDOUT;
30
- const payload = new Uint8Array(100000);
31
- payload.fill(42);
32
- const frame = encodeFrame(type, payload);
33
- expect(frame).toHaveLength(9 + 100000);
34
- expect(frame[0]).toBe(type);
35
- const view = new DataView(frame.buffer, 0, 9);
36
- const length = view.getBigUint64(1, false);
37
- expect(length).toBe(100000n);
38
- });
39
- });
40
- describe('decodeFrameHeader', () => {
41
- it('should decode valid header', () => {
42
- const type = FrameType.AUTH1;
43
- const payloadLength = 1234n;
44
- const header = new Uint8Array(9);
45
- header[0] = type;
46
- const view = new DataView(header.buffer);
47
- view.setBigUint64(1, payloadLength, false);
48
- const decoded = decodeFrameHeader(header);
49
- expect(decoded).not.toBeNull();
50
- expect(decoded.type).toBe(type);
51
- expect(decoded.length).toBe(payloadLength);
52
- });
53
- it('should return null for incomplete header', () => {
54
- const header = new Uint8Array(8);
55
- const decoded = decodeFrameHeader(header);
56
- expect(decoded).toBeNull();
57
- });
58
- it('should handle all frame types', () => {
59
- const types = [
60
- FrameType.AUTH1, FrameType.AUTH2, FrameType.AUTH3,
61
- FrameType.RUN, FrameType.STDIN, FrameType.STDOUT,
62
- FrameType.STDERR, FrameType.EXIT, FrameType.ERROR,
63
- FrameType.ABORT, FrameType.KEEPALIVE,
64
- ];
65
- for (const type of types) {
66
- const header = new Uint8Array(9);
67
- header[0] = type;
68
- const decoded = decodeFrameHeader(header);
69
- expect(decoded).not.toBeNull();
70
- expect(decoded.type).toBe(type);
71
- }
72
- });
73
- });
74
- describe('FrameReader', () => {
75
- it('should parse single complete frame', () => {
76
- const reader = new FrameReader();
77
- const type = FrameType.RUN;
78
- const payload = new Uint8Array([1, 2, 3]);
79
- const frame = encodeFrame(type, payload);
80
- const frames = reader.push(frame);
81
- expect(frames).toHaveLength(1);
82
- expect(frames[0].type).toBe(type);
83
- expect(frames[0].payload).toEqual(payload);
84
- });
85
- it('should handle fragmented frames', () => {
86
- const reader = new FrameReader();
87
- const type = FrameType.STDOUT;
88
- const payload = new Uint8Array([10, 20, 30, 40]);
89
- const frame = encodeFrame(type, payload);
90
- // Split frame into chunks
91
- const chunk1 = frame.slice(0, 5);
92
- const chunk2 = frame.slice(5, 9);
93
- const chunk3 = frame.slice(9);
94
- let frames = reader.push(chunk1);
95
- expect(frames).toHaveLength(0);
96
- frames = reader.push(chunk2);
97
- expect(frames).toHaveLength(0);
98
- frames = reader.push(chunk3);
99
- expect(frames).toHaveLength(1);
100
- expect(frames[0].type).toBe(type);
101
- expect(frames[0].payload).toEqual(payload);
102
- });
103
- it('should handle multiple frames in one push', () => {
104
- const reader = new FrameReader();
105
- const frame1 = encodeFrame(FrameType.AUTH1, new Uint8Array([1]));
106
- const frame2 = encodeFrame(FrameType.AUTH2, new Uint8Array([2, 3]));
107
- const frame3 = encodeFrame(FrameType.AUTH3, new Uint8Array([4, 5, 6]));
108
- const combined = new Uint8Array(frame1.length + frame2.length + frame3.length);
109
- combined.set(frame1, 0);
110
- combined.set(frame2, frame1.length);
111
- combined.set(frame3, frame1.length + frame2.length);
112
- const frames = reader.push(combined);
113
- expect(frames).toHaveLength(3);
114
- expect(frames[0].type).toBe(FrameType.AUTH1);
115
- expect(frames[0].payload).toEqual(new Uint8Array([1]));
116
- expect(frames[1].type).toBe(FrameType.AUTH2);
117
- expect(frames[1].payload).toEqual(new Uint8Array([2, 3]));
118
- expect(frames[2].type).toBe(FrameType.AUTH3);
119
- expect(frames[2].payload).toEqual(new Uint8Array([4, 5, 6]));
120
- });
121
- it('should handle partial header then complete frame', () => {
122
- const reader = new FrameReader();
123
- const type = FrameType.EXIT;
124
- const payload = new Uint8Array([99]);
125
- const frame = encodeFrame(type, payload);
126
- // Send partial header first
127
- let frames = reader.push(frame.slice(0, 3));
128
- expect(frames).toHaveLength(0);
129
- // Send rest of frame
130
- frames = reader.push(frame.slice(3));
131
- expect(frames).toHaveLength(1);
132
- expect(frames[0].type).toBe(type);
133
- expect(frames[0].payload).toEqual(payload);
134
- });
135
- it('should handle zero-length payload', () => {
136
- const reader = new FrameReader();
137
- const type = FrameType.KEEPALIVE;
138
- const payload = new Uint8Array(0);
139
- const frame = encodeFrame(type, payload);
140
- const frames = reader.push(frame);
141
- expect(frames).toHaveLength(1);
142
- expect(frames[0].type).toBe(type);
143
- expect(frames[0].payload).toHaveLength(0);
144
- });
145
- it('should maintain state across multiple pushes', () => {
146
- const reader = new FrameReader();
147
- const frame1 = encodeFrame(FrameType.RUN, new Uint8Array([1, 2]));
148
- const frame2 = encodeFrame(FrameType.STDOUT, new Uint8Array([3, 4, 5]));
149
- // Split across weird boundaries
150
- const chunk1 = frame1.slice(0, 7);
151
- const chunk2 = new Uint8Array(frame1.length - 7 + 4);
152
- chunk2.set(frame1.slice(7), 0);
153
- chunk2.set(frame2.slice(0, 4), frame1.length - 7);
154
- const chunk3 = frame2.slice(4);
155
- let frames = reader.push(chunk1);
156
- expect(frames).toHaveLength(0);
157
- frames = reader.push(chunk2);
158
- expect(frames).toHaveLength(1);
159
- expect(frames[0].type).toBe(FrameType.RUN);
160
- frames = reader.push(chunk3);
161
- expect(frames).toHaveLength(1);
162
- expect(frames[0].type).toBe(FrameType.STDOUT);
163
- });
164
- });
165
- });
166
- //# sourceMappingURL=frame.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frame.test.js","sourceRoot":"","sources":["../src/frame.test.ts"],"names":[],"mappings":"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"}