vibe-remote-protocol 1.1.0 → 1.3.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.
@@ -33,6 +33,16 @@ export declare const PROTOCOL_ERROR_REASON: {
33
33
  * 과 *동시* 변경 필수.
34
34
  */
35
35
  export declare const PROTOCOL_VERSION_V3 = 3;
36
+ /**
37
+ * Grid(터미널) 의 server-side RESIZE 상한 — wire 계약의 canonical 정의처.
38
+ *
39
+ * `MsgGridResizeCapped`("server-side RESIZE cap (500×200)") / `MsgCapAck.max_cols/max_rows`
40
+ * 가 prose 로 가리키는 그 값. desktop `GridEmulator`·`ssh-manager` 와 relay
41
+ * `FrameSnapshotService` 가 **동일 값으로 clamp** 해야 하므로, 각 소비자가 복제하지 말고 여기서
42
+ * import 한다(복제 시 cap 변경이 소비자별로 silently 어긋남).
43
+ */
44
+ export declare const GRID_MAX_COLS = 500;
45
+ export declare const GRID_MAX_ROWS = 200;
36
46
  /**
37
47
  * frame 의 opcode 만 빠르게 식별. binary frame 검증 + 라우팅 분기에 사용.
38
48
  * empty buffer 면 -1 리턴 (호출자가 close 결정).
@@ -51,9 +61,18 @@ export declare function readOpcode(buffer: Buffer): number;
51
61
  export declare function isAppJsonSessionAttachLike(buffer: Buffer): boolean;
52
62
  /**
53
63
  * APP_JSON session_attach payload 를 JSON parse. malformed / 잘못된 type 이면 null.
64
+ *
65
+ * [동적 frame-snapshot 20260615] `cols`/`rows` 도 함께 반환한다. 모바일은 session_attach 에
66
+ * 자신의 viewport 크기를 동봉하며(`connection_provider.dart:1626` — `_ptyWidth` 실측 또는
67
+ * `_lastViewportCols` seed), relay 가 last-frame snapshot 을 `dumpAnsi` 하기 *직전* 에 emulator
68
+ * grid 를 이 크기로 resize 하는 데 쓴다. 80×40 고정 grid 에서 reflow 된 화면이 모바일 viewport
69
+ * 와 한 틱 어긋나던 문제(non-sync.md §0)를 고친다. 양수 정수일 때만 포함(아니면 omit) — 호출자가
70
+ * `undefined` 면 기본/마지막 크기를 유지하도록.
54
71
  */
55
72
  export declare function parseAppJsonSessionAttach(buffer: Buffer): {
56
73
  machineId: string;
74
+ cols?: number;
75
+ rows?: number;
57
76
  } | null;
58
77
  /**
59
78
  * APP_JSON frame 이 `"fcm.send"` 를 포함하는지 fast path 검사. relay 가 host→relay 의
@@ -86,4 +105,19 @@ export declare function encodeAppJson(data: object): Buffer;
86
105
  * Wire format: `[0x02] [cols: BE u32] [rows: BE u32]`
87
106
  */
88
107
  export declare function encodeResize(cols: number, rows: number): Buffer;
108
+ /**
109
+ * RESIZE (0x02) frame decode — `[0x02] [cols: BE u32] [rows: BE u32]` (총 9 bytes).
110
+ *
111
+ * opcode 불일치 / 9 bytes 미만이면 null. cols/rows 의 의미 검증(>0, cap)은 호출자 책임 —
112
+ * 디코더는 wire 를 그대로 읽기만 한다.
113
+ *
114
+ * [동적 frame-snapshot 20260615] relay 가 mobile→host RESIZE 를 forward 하면서 동시에
115
+ * 가로채(`RelayService.handleMessage`) emulator grid 를 이 크기로 resize 하는 데 쓴다.
116
+ * attach 사이에 흐르는 PTY_DATA 를 올바른 폭으로 누적·해석하기 위함(session_attach 의
117
+ * dump-직전 resize 가 PRIMARY, 이쪽은 SECONDARY).
118
+ */
119
+ export declare function decodeResize(buffer: Buffer): {
120
+ cols: number;
121
+ rows: number;
122
+ } | null;
89
123
  //# sourceMappingURL=binary-protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary-protocol.d.ts","sourceRoot":"","sources":["../src/binary-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,MAAM;;;;;;;;CAQT,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKlE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GACb;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoB9B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAmBrE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/D"}
1
+ {"version":3,"file":"binary-protocol.d.ts","sourceRoot":"","sources":["../src/binary-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,MAAM;;;;;;;;CAQT,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKlE;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GACb;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA2B5D;AASD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAmBrE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOvC"}
@@ -13,7 +13,7 @@
13
13
  * - APP_JSON encoder
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.PROTOCOL_VERSION_V3 = exports.PROTOCOL_ERROR_REASON = exports.OPCODE = void 0;
16
+ exports.GRID_MAX_ROWS = exports.GRID_MAX_COLS = exports.PROTOCOL_VERSION_V3 = exports.PROTOCOL_ERROR_REASON = exports.OPCODE = void 0;
17
17
  exports.readOpcode = readOpcode;
18
18
  exports.isAppJsonSessionAttachLike = isAppJsonSessionAttachLike;
19
19
  exports.parseAppJsonSessionAttach = parseAppJsonSessionAttach;
@@ -23,6 +23,7 @@ exports.encodeFrameSnapshotPush = encodeFrameSnapshotPush;
23
23
  exports.encodeProtocolError = encodeProtocolError;
24
24
  exports.encodeAppJson = encodeAppJson;
25
25
  exports.encodeResize = encodeResize;
26
+ exports.decodeResize = decodeResize;
26
27
  exports.OPCODE = {
27
28
  PTY_DATA: 0x00,
28
29
  APP_JSON: 0x01,
@@ -44,6 +45,16 @@ exports.PROTOCOL_ERROR_REASON = {
44
45
  * 과 *동시* 변경 필수.
45
46
  */
46
47
  exports.PROTOCOL_VERSION_V3 = 3;
48
+ /**
49
+ * Grid(터미널) 의 server-side RESIZE 상한 — wire 계약의 canonical 정의처.
50
+ *
51
+ * `MsgGridResizeCapped`("server-side RESIZE cap (500×200)") / `MsgCapAck.max_cols/max_rows`
52
+ * 가 prose 로 가리키는 그 값. desktop `GridEmulator`·`ssh-manager` 와 relay
53
+ * `FrameSnapshotService` 가 **동일 값으로 clamp** 해야 하므로, 각 소비자가 복제하지 말고 여기서
54
+ * import 한다(복제 시 cap 변경이 소비자별로 silently 어긋남).
55
+ */
56
+ exports.GRID_MAX_COLS = 500;
57
+ exports.GRID_MAX_ROWS = 200;
47
58
  /**
48
59
  * frame 의 opcode 만 빠르게 식별. binary frame 검증 + 라우팅 분기에 사용.
49
60
  * empty buffer 면 -1 리턴 (호출자가 close 결정).
@@ -73,8 +84,17 @@ function isAppJsonSessionAttachLike(buffer) {
73
84
  }
74
85
  /**
75
86
  * APP_JSON session_attach payload 를 JSON parse. malformed / 잘못된 type 이면 null.
87
+ *
88
+ * [동적 frame-snapshot 20260615] `cols`/`rows` 도 함께 반환한다. 모바일은 session_attach 에
89
+ * 자신의 viewport 크기를 동봉하며(`connection_provider.dart:1626` — `_ptyWidth` 실측 또는
90
+ * `_lastViewportCols` seed), relay 가 last-frame snapshot 을 `dumpAnsi` 하기 *직전* 에 emulator
91
+ * grid 를 이 크기로 resize 하는 데 쓴다. 80×40 고정 grid 에서 reflow 된 화면이 모바일 viewport
92
+ * 와 한 틱 어긋나던 문제(non-sync.md §0)를 고친다. 양수 정수일 때만 포함(아니면 omit) — 호출자가
93
+ * `undefined` 면 기본/마지막 크기를 유지하도록.
76
94
  */
77
95
  function parseAppJsonSessionAttach(buffer) {
96
+ if (buffer.length < 1)
97
+ return null;
78
98
  if (buffer.readUInt8(0) !== exports.OPCODE.APP_JSON)
79
99
  return null;
80
100
  const text = buffer.toString('utf-8', 1);
@@ -91,9 +111,23 @@ function parseAppJsonSessionAttach(buffer) {
91
111
  return null;
92
112
  }
93
113
  const rawMachineId = parsed.machineId;
94
- return {
114
+ const result = {
95
115
  machineId: typeof rawMachineId === 'string' ? rawMachineId : '',
96
116
  };
117
+ // cols/rows 는 양수 정수일 때만 채택(아니면 omit) — 호출자가 undefined 면 기본/마지막 크기 유지.
118
+ const cols = toPositiveInt(parsed.cols);
119
+ const rows = toPositiveInt(parsed.rows);
120
+ if (cols !== undefined)
121
+ result.cols = cols;
122
+ if (rows !== undefined)
123
+ result.rows = rows;
124
+ return result;
125
+ }
126
+ /** 양수 유한 숫자면 floor 한 값을, 아니면 undefined. cols/rows 채택 규칙(module-private). */
127
+ function toPositiveInt(x) {
128
+ return typeof x === 'number' && Number.isFinite(x) && x > 0
129
+ ? Math.floor(x)
130
+ : undefined;
97
131
  }
98
132
  /**
99
133
  * APP_JSON frame 이 `"fcm.send"` 를 포함하는지 fast path 검사. relay 가 host→relay 의
@@ -183,4 +217,25 @@ function encodeResize(cols, rows) {
183
217
  frame.writeUInt32BE(rows, 5);
184
218
  return frame;
185
219
  }
220
+ /**
221
+ * RESIZE (0x02) frame decode — `[0x02] [cols: BE u32] [rows: BE u32]` (총 9 bytes).
222
+ *
223
+ * opcode 불일치 / 9 bytes 미만이면 null. cols/rows 의 의미 검증(>0, cap)은 호출자 책임 —
224
+ * 디코더는 wire 를 그대로 읽기만 한다.
225
+ *
226
+ * [동적 frame-snapshot 20260615] relay 가 mobile→host RESIZE 를 forward 하면서 동시에
227
+ * 가로채(`RelayService.handleMessage`) emulator grid 를 이 크기로 resize 하는 데 쓴다.
228
+ * attach 사이에 흐르는 PTY_DATA 를 올바른 폭으로 누적·해석하기 위함(session_attach 의
229
+ * dump-직전 resize 가 PRIMARY, 이쪽은 SECONDARY).
230
+ */
231
+ function decodeResize(buffer) {
232
+ if (buffer.length < 9)
233
+ return null;
234
+ if (buffer.readUInt8(0) !== exports.OPCODE.RESIZE)
235
+ return null;
236
+ return {
237
+ cols: buffer.readUInt32BE(1),
238
+ rows: buffer.readUInt32BE(5),
239
+ };
240
+ }
186
241
  //# sourceMappingURL=binary-protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary-protocol.js","sourceRoot":"","sources":["../src/binary-protocol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAgCH,gCAGC;AAYD,gEAKC;AAKD,8DAsBC;AAMD,oDAIC;AAMD,kDAmBC;AAQD,0DAkBC;AAKD,kDAKC;AAKD,sCAMC;AAOD,oCAMC;AA1KY,QAAA,MAAM,GAAG;IACpB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,IAAI;CACZ,CAAC;AAEE,QAAA,qBAAqB,GAAG;IACnC,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,IAAI;CACV,CAAC;AAEX;;;;GAIG;AACU,QAAA,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;GAGG;AACH,SAAgB,UAAU,CAAC,MAAc;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,0BAA0B,CAAC,MAAc;IACvD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAM,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CACvC,MAAc;IAEd,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IACE,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QACzB,MAA6B,CAAC,IAAI,KAAK,gBAAgB,EACxD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,YAAY,GAAI,MAAkC,CAAC,SAAS,CAAC;IACnE,OAAO;QACL,SAAS,EAAE,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;KAChE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,MAAc;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAM,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1D,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,MAAc;IAChD,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IACE,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QACzB,MAA6B,CAAC,IAAI,KAAK,UAAU;QAClD,CAAC,KAAK,CAAC,OAAO,CAAE,MAA+B,CAAC,MAAM,CAAC;QACvD,OAAQ,MAAgC,CAAC,OAAO,KAAK,QAAQ;QAC5D,MAAgC,CAAC,OAAO,KAAK,IAAI,EAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAoB,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,SAAiB,EACjB,IAAY;IAEZ,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,CAAC,UAAU,CAAC,cAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,CAAC,CAAC;IACZ,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,CAAC,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IACzB,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,IAAI,CAAC,CAAC;IACZ,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAAc;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAK,CAAC,UAAU,CAAC,cAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC3C,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,CAAC,UAAU,CAAC,cAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,IAAY,EAAE,IAAY;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAK,CAAC,UAAU,CAAC,cAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7B,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"binary-protocol.js","sourceRoot":"","sources":["../src/binary-protocol.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,13 +2,14 @@
2
2
  * @vibe-remote/protocol — VibeRemote binary WebSocket protocol v3.
3
3
  *
4
4
  * Public API:
5
- * - opcode 상수: OPCODE, PROTOCOL_ERROR_REASON, PROTOCOL_VERSION_V3
5
+ * - 상수: OPCODE, PROTOCOL_ERROR_REASON, PROTOCOL_VERSION_V3, GRID_MAX_COLS, GRID_MAX_ROWS
6
6
  * - encoders: encodeAppJson, encodeFrameSnapshotPush, encodeProtocolError, encodeResize
7
+ * - decoders: decodeResize
7
8
  * - inspectors: readOpcode, isAppJsonSessionAttachLike, parseAppJsonSessionAttach,
8
9
  * isAppJsonFcmSendLike, parseAppJsonFcmSend
9
10
  * - APP_JSON 메시지 타입: AppJsonMessage 및 모든 Msg* 인터페이스
10
11
  */
11
- export { OPCODE, PROTOCOL_ERROR_REASON, PROTOCOL_VERSION_V3, readOpcode, isAppJsonSessionAttachLike, parseAppJsonSessionAttach, isAppJsonFcmSendLike, parseAppJsonFcmSend, encodeFrameSnapshotPush, encodeProtocolError, encodeAppJson, encodeResize, } from './binary-protocol';
12
+ export { OPCODE, PROTOCOL_ERROR_REASON, PROTOCOL_VERSION_V3, GRID_MAX_COLS, GRID_MAX_ROWS, readOpcode, isAppJsonSessionAttachLike, parseAppJsonSessionAttach, isAppJsonFcmSendLike, parseAppJsonFcmSend, encodeFrameSnapshotPush, encodeProtocolError, encodeAppJson, encodeResize, decodeResize, } from './binary-protocol';
12
13
  export type { AppJsonMessage, Machine, PtyStatus, ClaudeState, ClientCapability, SnapshotReqReason, PtyAuthorityMode, MsgHello, MsgHelloAck, MsgCapReq, MsgCapAck, MsgSnapshotReq, MsgMachineList, MsgSessionAttach, MsgConnectionStatus, MsgTerminalData, MsgClaudeState, MsgPtyStatus, MsgGitResult, MsgSessionReplay, MsgGridResizeCapped, MsgProtocolMismatch, MsgPing, MsgPong, MsgError, MsgInput, MsgFcmSend, } from './messages';
13
14
  export { isAppJsonMessage } from './messages';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,MAAM,EACN,qBAAqB,EACrB,mBAAmB,EACnB,UAAU,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,cAAc,EACd,OAAO,EACP,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,MAAM,EACN,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,UAAU,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,cAAc,EACd,OAAO,EACP,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -3,18 +3,21 @@
3
3
  * @vibe-remote/protocol — VibeRemote binary WebSocket protocol v3.
4
4
  *
5
5
  * Public API:
6
- * - opcode 상수: OPCODE, PROTOCOL_ERROR_REASON, PROTOCOL_VERSION_V3
6
+ * - 상수: OPCODE, PROTOCOL_ERROR_REASON, PROTOCOL_VERSION_V3, GRID_MAX_COLS, GRID_MAX_ROWS
7
7
  * - encoders: encodeAppJson, encodeFrameSnapshotPush, encodeProtocolError, encodeResize
8
+ * - decoders: decodeResize
8
9
  * - inspectors: readOpcode, isAppJsonSessionAttachLike, parseAppJsonSessionAttach,
9
10
  * isAppJsonFcmSendLike, parseAppJsonFcmSend
10
11
  * - APP_JSON 메시지 타입: AppJsonMessage 및 모든 Msg* 인터페이스
11
12
  */
12
13
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.isAppJsonMessage = exports.encodeResize = exports.encodeAppJson = exports.encodeProtocolError = exports.encodeFrameSnapshotPush = exports.parseAppJsonFcmSend = exports.isAppJsonFcmSendLike = exports.parseAppJsonSessionAttach = exports.isAppJsonSessionAttachLike = exports.readOpcode = exports.PROTOCOL_VERSION_V3 = exports.PROTOCOL_ERROR_REASON = exports.OPCODE = void 0;
14
+ exports.isAppJsonMessage = exports.decodeResize = exports.encodeResize = exports.encodeAppJson = exports.encodeProtocolError = exports.encodeFrameSnapshotPush = exports.parseAppJsonFcmSend = exports.isAppJsonFcmSendLike = exports.parseAppJsonSessionAttach = exports.isAppJsonSessionAttachLike = exports.readOpcode = exports.GRID_MAX_ROWS = exports.GRID_MAX_COLS = exports.PROTOCOL_VERSION_V3 = exports.PROTOCOL_ERROR_REASON = exports.OPCODE = void 0;
14
15
  var binary_protocol_1 = require("./binary-protocol");
15
16
  Object.defineProperty(exports, "OPCODE", { enumerable: true, get: function () { return binary_protocol_1.OPCODE; } });
16
17
  Object.defineProperty(exports, "PROTOCOL_ERROR_REASON", { enumerable: true, get: function () { return binary_protocol_1.PROTOCOL_ERROR_REASON; } });
17
18
  Object.defineProperty(exports, "PROTOCOL_VERSION_V3", { enumerable: true, get: function () { return binary_protocol_1.PROTOCOL_VERSION_V3; } });
19
+ Object.defineProperty(exports, "GRID_MAX_COLS", { enumerable: true, get: function () { return binary_protocol_1.GRID_MAX_COLS; } });
20
+ Object.defineProperty(exports, "GRID_MAX_ROWS", { enumerable: true, get: function () { return binary_protocol_1.GRID_MAX_ROWS; } });
18
21
  Object.defineProperty(exports, "readOpcode", { enumerable: true, get: function () { return binary_protocol_1.readOpcode; } });
19
22
  Object.defineProperty(exports, "isAppJsonSessionAttachLike", { enumerable: true, get: function () { return binary_protocol_1.isAppJsonSessionAttachLike; } });
20
23
  Object.defineProperty(exports, "parseAppJsonSessionAttach", { enumerable: true, get: function () { return binary_protocol_1.parseAppJsonSessionAttach; } });
@@ -24,6 +27,7 @@ Object.defineProperty(exports, "encodeFrameSnapshotPush", { enumerable: true, ge
24
27
  Object.defineProperty(exports, "encodeProtocolError", { enumerable: true, get: function () { return binary_protocol_1.encodeProtocolError; } });
25
28
  Object.defineProperty(exports, "encodeAppJson", { enumerable: true, get: function () { return binary_protocol_1.encodeAppJson; } });
26
29
  Object.defineProperty(exports, "encodeResize", { enumerable: true, get: function () { return binary_protocol_1.encodeResize; } });
30
+ Object.defineProperty(exports, "decodeResize", { enumerable: true, get: function () { return binary_protocol_1.decodeResize; } });
27
31
  var messages_1 = require("./messages");
28
32
  Object.defineProperty(exports, "isAppJsonMessage", { enumerable: true, get: function () { return messages_1.isAppJsonMessage; } });
29
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,qDAa2B;AAZzB,yGAAA,MAAM,OAAA;AACN,wHAAA,qBAAqB,OAAA;AACrB,sHAAA,mBAAmB,OAAA;AACnB,6GAAA,UAAU,OAAA;AACV,6HAAA,0BAA0B,OAAA;AAC1B,4HAAA,yBAAyB,OAAA;AACzB,uHAAA,oBAAoB,OAAA;AACpB,sHAAA,mBAAmB,OAAA;AACnB,0HAAA,uBAAuB,OAAA;AACvB,sHAAA,mBAAmB,OAAA;AACnB,gHAAA,aAAa,OAAA;AACb,+GAAA,YAAY,OAAA;AAiCd,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,qDAgB2B;AAfzB,yGAAA,MAAM,OAAA;AACN,wHAAA,qBAAqB,OAAA;AACrB,sHAAA,mBAAmB,OAAA;AACnB,gHAAA,aAAa,OAAA;AACb,gHAAA,aAAa,OAAA;AACb,6GAAA,UAAU,OAAA;AACV,6HAAA,0BAA0B,OAAA;AAC1B,4HAAA,yBAAyB,OAAA;AACzB,uHAAA,oBAAoB,OAAA;AACpB,sHAAA,mBAAmB,OAAA;AACnB,0HAAA,uBAAuB,OAAA;AACvB,sHAAA,mBAAmB,OAAA;AACnB,gHAAA,aAAa,OAAA;AACb,+GAAA,YAAY,OAAA;AACZ,+GAAA,YAAY,OAAA;AAiCd,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA"}
@@ -115,6 +115,14 @@ export interface MsgSessionReplay {
115
115
  chunkIndex: number;
116
116
  totalChunks: number;
117
117
  data: string;
118
+ /**
119
+ * scrollback 이 생성된 당시의 PTY 폭/높이 (host 의 mobile-resize 직전 값).
120
+ * 모바일이 raw replay 를 이 폭으로 먼저 그린 뒤 viewport 폭으로 reflow → 재접속 시
121
+ * 스크롤백이 좁은 폭으로 재-wrap 되어 좌측으로 붕괴하던 버그(20260620) 회피.
122
+ * APP_JSON 가산 필드 — relay 는 passthrough(무관), 구 클라이언트는 무시. 미측정 시 omit.
123
+ */
124
+ cols?: number;
125
+ rows?: number;
118
126
  }
119
127
  /** server-side RESIZE cap (500×200) 적용 통보. */
120
128
  export interface MsgGridResizeCapped {
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,iDAAiD;AACjD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;AAE5D,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,mBAAmB,CAAC;AAEnE,6CAA6C;AAC7C,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,CAAC;AAExD,wDAAwD;AACxD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAElE,2DAA2D;AAC3D,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAEtE,oDAAoD;AACpD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAID,oEAAoE;AACpE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wCAAwC;AACxC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,8BAA8B;AAC9B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uBAAuB;AACvB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,oBAAoB;AACpB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,sBAAsB;AACtB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,sCAAsC;AACtC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iCAAiC;AACjC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,0DAA0D;AAC1D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,sDAAsD;IACtD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,yDAAyD;AACzD,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,WAAW,GACX,SAAS,GACT,SAAS,GACT,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,gBAAgB,GAChB,mBAAmB,GACnB,mBAAmB,GACnB,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,UAAU,CAAC;AAEf,uCAAuC;AACvC,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,EAC/D,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,GACN,GAAG,IAAI,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAM7C"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAoNH,4CASC;AAVD,uCAAuC;AACvC,SAAgB,gBAAgB,CAC9B,GAAY,EACZ,IAAO;IAEP,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACX,GAA0B,CAAC,IAAI,KAAK,IAAI,CAC1C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AA4NH,4CASC;AAVD,uCAAuC;AACvC,SAAgB,gBAAgB,CAC9B,GAAY,EACZ,IAAO;IAEP,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACX,GAA0B,CAAC,IAAI,KAAK,IAAI,CAC1C,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,51 +1,50 @@
1
- {
2
- "name": "vibe-remote-protocol",
3
- "version": "1.1.0",
4
- "description": "VibeRemote binary WebSocket protocol v3 — opcode constants, encoders/decoders, and TypeScript message types shared by relay, desktop agent, and mobile clients.",
5
- "license": "MIT",
6
- "author": "jun-young1993",
7
- "homepage": "https://github.com/june-glre/vibe-remote-protocol",
8
- "repository": {
9
- "type": "git",
10
- "url": "https://github.com/june-glre/vibe-remote-protocol.git"
11
- },
12
- "keywords": [
13
- "vibe-remote",
14
- "websocket",
15
- "protocol",
16
- "binary",
17
- "terminal",
18
- "pty",
19
- "relay"
20
- ],
21
- "main": "./dist/index.js",
22
- "types": "./dist/index.d.ts",
23
- "files": [
24
- "dist",
25
- "fixtures",
26
- "README.md",
27
- "README_KR.md",
28
- "LICENSE"
29
- ],
30
- "scripts": {
31
- "build": "tsc -p tsconfig.json",
32
- "test": "jest",
33
- "lint": "tsc --noEmit",
34
- "clean": "rimraf dist"
35
- },
36
- "devDependencies": {
37
- "@types/jest": "^29.5.2",
38
- "@types/node": "^20.3.1",
39
- "jest": "^29.5.0",
40
- "rimraf": "^5.0.5",
41
- "ts-jest": "^29.1.0",
42
- "typescript": "^5.1.3"
43
- },
44
- "engines": {
45
- "node": ">=18"
46
- },
47
- "publishConfig": {
48
- "access": "public"
49
- }
50
-
51
- }
1
+ {
2
+ "name": "vibe-remote-protocol",
3
+ "version": "1.3.0",
4
+ "description": "VibeRemote binary WebSocket protocol v3 — opcode constants, encoders/decoders, and TypeScript message types shared by relay, desktop agent, and mobile clients.",
5
+ "license": "MIT",
6
+ "author": "jun-young1993",
7
+ "homepage": "https://github.com/june-glre/vibe-remote-protocol",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/june-glre/vibe-remote-protocol.git"
11
+ },
12
+ "keywords": [
13
+ "vibe-remote",
14
+ "websocket",
15
+ "protocol",
16
+ "binary",
17
+ "terminal",
18
+ "pty",
19
+ "relay"
20
+ ],
21
+ "main": "./dist/index.js",
22
+ "types": "./dist/index.d.ts",
23
+ "files": [
24
+ "dist",
25
+ "fixtures",
26
+ "README.md",
27
+ "README_KR.md",
28
+ "LICENSE"
29
+ ],
30
+ "scripts": {
31
+ "build": "tsc -p tsconfig.json",
32
+ "test": "jest",
33
+ "lint": "tsc --noEmit",
34
+ "clean": "rimraf dist"
35
+ },
36
+ "devDependencies": {
37
+ "@types/jest": "^29.5.2",
38
+ "@types/node": "^20.3.1",
39
+ "jest": "^29.5.0",
40
+ "rimraf": "^5.0.5",
41
+ "ts-jest": "^29.1.0",
42
+ "typescript": "^5.1.3"
43
+ },
44
+ "engines": {
45
+ "node": ">=18"
46
+ },
47
+ "publishConfig": {
48
+ "access": "public"
49
+ }
50
+ }