@kaitranntt/ccs 7.43.0-dev.1 → 7.43.0-dev.11

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 (203) hide show
  1. package/dist/api/services/profile-reader.d.ts.map +1 -1
  2. package/dist/api/services/profile-reader.js +4 -1
  3. package/dist/api/services/profile-reader.js.map +1 -1
  4. package/dist/auth/profile-detector.d.ts +14 -3
  5. package/dist/auth/profile-detector.d.ts.map +1 -1
  6. package/dist/auth/profile-detector.js +35 -15
  7. package/dist/auth/profile-detector.js.map +1 -1
  8. package/dist/ccs.js +11 -0
  9. package/dist/ccs.js.map +1 -1
  10. package/dist/cliproxy/composite-validator.d.ts +20 -0
  11. package/dist/cliproxy/composite-validator.d.ts.map +1 -0
  12. package/dist/cliproxy/composite-validator.js +85 -0
  13. package/dist/cliproxy/composite-validator.js.map +1 -0
  14. package/dist/cliproxy/config/env-builder.d.ts +24 -0
  15. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  16. package/dist/cliproxy/config/env-builder.js +72 -1
  17. package/dist/cliproxy/config/env-builder.js.map +1 -1
  18. package/dist/cliproxy/config/thinking-config.d.ts +19 -2
  19. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
  20. package/dist/cliproxy/config/thinking-config.js +59 -9
  21. package/dist/cliproxy/config/thinking-config.js.map +1 -1
  22. package/dist/cliproxy/executor/env-resolver.d.ts +16 -0
  23. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  24. package/dist/cliproxy/executor/env-resolver.js +82 -26
  25. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  26. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  27. package/dist/cliproxy/executor/index.js +147 -34
  28. package/dist/cliproxy/executor/index.js.map +1 -1
  29. package/dist/cliproxy/executor/retry-handler.d.ts +11 -0
  30. package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -1
  31. package/dist/cliproxy/executor/retry-handler.js +30 -1
  32. package/dist/cliproxy/executor/retry-handler.js.map +1 -1
  33. package/dist/cliproxy/provider-capabilities.d.ts +22 -0
  34. package/dist/cliproxy/provider-capabilities.d.ts.map +1 -0
  35. package/dist/cliproxy/provider-capabilities.js +95 -0
  36. package/dist/cliproxy/provider-capabilities.js.map +1 -0
  37. package/dist/cliproxy/quota-fetcher-codex.d.ts.map +1 -1
  38. package/dist/cliproxy/quota-fetcher-codex.js +106 -87
  39. package/dist/cliproxy/quota-fetcher-codex.js.map +1 -1
  40. package/dist/cliproxy/remote-auth-fetcher.d.ts.map +1 -1
  41. package/dist/cliproxy/remote-auth-fetcher.js +3 -26
  42. package/dist/cliproxy/remote-auth-fetcher.js.map +1 -1
  43. package/dist/cliproxy/services/index.d.ts +1 -1
  44. package/dist/cliproxy/services/index.d.ts.map +1 -1
  45. package/dist/cliproxy/services/index.js +3 -1
  46. package/dist/cliproxy/services/index.js.map +1 -1
  47. package/dist/cliproxy/services/variant-config-adapter.d.ts +15 -0
  48. package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -1
  49. package/dist/cliproxy/services/variant-config-adapter.js +84 -11
  50. package/dist/cliproxy/services/variant-config-adapter.js.map +1 -1
  51. package/dist/cliproxy/services/variant-service.d.ts +26 -0
  52. package/dist/cliproxy/services/variant-service.d.ts.map +1 -1
  53. package/dist/cliproxy/services/variant-service.js +163 -9
  54. package/dist/cliproxy/services/variant-service.js.map +1 -1
  55. package/dist/cliproxy/services/variant-settings.d.ts +18 -0
  56. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  57. package/dist/cliproxy/services/variant-settings.js +126 -4
  58. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  59. package/dist/cliproxy/types.d.ts +13 -0
  60. package/dist/cliproxy/types.d.ts.map +1 -1
  61. package/dist/cliproxy/types.js.map +1 -1
  62. package/dist/commands/cliproxy/auth-subcommand.d.ts.map +1 -1
  63. package/dist/commands/cliproxy/auth-subcommand.js +2 -1
  64. package/dist/commands/cliproxy/auth-subcommand.js.map +1 -1
  65. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  66. package/dist/commands/cliproxy/help-subcommand.js +2 -0
  67. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  68. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  69. package/dist/commands/cliproxy/index.js +4 -0
  70. package/dist/commands/cliproxy/index.js.map +1 -1
  71. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  72. package/dist/commands/cliproxy/quota-subcommand.js +106 -4
  73. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  74. package/dist/commands/cliproxy/variant-subcommand.d.ts +1 -0
  75. package/dist/commands/cliproxy/variant-subcommand.d.ts.map +1 -1
  76. package/dist/commands/cliproxy/variant-subcommand.js +307 -3
  77. package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
  78. package/dist/commands/command-execution-contract.d.ts +23 -0
  79. package/dist/commands/command-execution-contract.d.ts.map +1 -0
  80. package/dist/commands/command-execution-contract.js +21 -0
  81. package/dist/commands/command-execution-contract.js.map +1 -0
  82. package/dist/commands/cursor-command.d.ts +12 -0
  83. package/dist/commands/cursor-command.d.ts.map +1 -0
  84. package/dist/commands/cursor-command.js +225 -0
  85. package/dist/commands/cursor-command.js.map +1 -0
  86. package/dist/commands/help-command.d.ts.map +1 -1
  87. package/dist/commands/help-command.js +14 -0
  88. package/dist/commands/help-command.js.map +1 -1
  89. package/dist/commands/shell-completion-command.d.ts +20 -0
  90. package/dist/commands/shell-completion-command.d.ts.map +1 -1
  91. package/dist/commands/shell-completion-command.js +45 -30
  92. package/dist/commands/shell-completion-command.js.map +1 -1
  93. package/dist/config/reserved-names.d.ts +1 -1
  94. package/dist/config/reserved-names.d.ts.map +1 -1
  95. package/dist/config/reserved-names.js +2 -0
  96. package/dist/config/reserved-names.js.map +1 -1
  97. package/dist/config/unified-config-loader.d.ts +6 -1
  98. package/dist/config/unified-config-loader.d.ts.map +1 -1
  99. package/dist/config/unified-config-loader.js +56 -2
  100. package/dist/config/unified-config-loader.js.map +1 -1
  101. package/dist/config/unified-config-types.d.ts +71 -2
  102. package/dist/config/unified-config-types.d.ts.map +1 -1
  103. package/dist/config/unified-config-types.js +27 -2
  104. package/dist/config/unified-config-types.js.map +1 -1
  105. package/dist/cursor/cursor-daemon.d.ts +47 -0
  106. package/dist/cursor/cursor-daemon.d.ts.map +1 -0
  107. package/dist/cursor/cursor-daemon.js +332 -0
  108. package/dist/cursor/cursor-daemon.js.map +1 -0
  109. package/dist/cursor/cursor-executor.d.ts +81 -0
  110. package/dist/cursor/cursor-executor.d.ts.map +1 -0
  111. package/dist/cursor/cursor-executor.js +821 -0
  112. package/dist/cursor/cursor-executor.js.map +1 -0
  113. package/dist/cursor/cursor-models.d.ts +43 -0
  114. package/dist/cursor/cursor-models.d.ts.map +1 -0
  115. package/dist/cursor/cursor-models.js +205 -0
  116. package/dist/cursor/cursor-models.js.map +1 -0
  117. package/dist/cursor/cursor-protobuf-decoder.d.ts +52 -0
  118. package/dist/cursor/cursor-protobuf-decoder.d.ts.map +1 -0
  119. package/dist/cursor/cursor-protobuf-decoder.js +311 -0
  120. package/dist/cursor/cursor-protobuf-decoder.js.map +1 -0
  121. package/dist/cursor/cursor-protobuf-encoder.d.ts +54 -0
  122. package/dist/cursor/cursor-protobuf-encoder.d.ts.map +1 -0
  123. package/dist/cursor/cursor-protobuf-encoder.js +173 -0
  124. package/dist/cursor/cursor-protobuf-encoder.js.map +1 -0
  125. package/dist/cursor/cursor-protobuf-schema.d.ts +215 -0
  126. package/dist/cursor/cursor-protobuf-schema.d.ts.map +1 -0
  127. package/dist/cursor/cursor-protobuf-schema.js +120 -0
  128. package/dist/cursor/cursor-protobuf-schema.js.map +1 -0
  129. package/dist/cursor/cursor-protobuf.d.ts +21 -0
  130. package/dist/cursor/cursor-protobuf.d.ts.map +1 -0
  131. package/dist/cursor/cursor-protobuf.js +116 -0
  132. package/dist/cursor/cursor-protobuf.js.map +1 -0
  133. package/dist/cursor/cursor-stream-parser.d.ts +52 -0
  134. package/dist/cursor/cursor-stream-parser.d.ts.map +1 -0
  135. package/dist/cursor/cursor-stream-parser.js +142 -0
  136. package/dist/cursor/cursor-stream-parser.js.map +1 -0
  137. package/dist/cursor/cursor-translator.d.ts +39 -0
  138. package/dist/cursor/cursor-translator.d.ts.map +1 -0
  139. package/dist/cursor/cursor-translator.js +118 -0
  140. package/dist/cursor/cursor-translator.js.map +1 -0
  141. package/dist/cursor/index.d.ts +11 -0
  142. package/dist/cursor/index.d.ts.map +1 -0
  143. package/dist/cursor/index.js +53 -0
  144. package/dist/cursor/index.js.map +1 -0
  145. package/dist/cursor/types.d.ts +33 -1
  146. package/dist/cursor/types.d.ts.map +1 -1
  147. package/dist/cursor/types.js +1 -1
  148. package/dist/types/index.d.ts +1 -1
  149. package/dist/types/index.d.ts.map +1 -1
  150. package/dist/types/index.js.map +1 -1
  151. package/dist/ui/assets/{accounts-CkN_roEn.js → accounts-D8ceTwko.js} +1 -1
  152. package/dist/ui/assets/{alert-dialog-Dy-8Z_Ud.js → alert-dialog-KnsD6NpU.js} +1 -1
  153. package/dist/ui/assets/{api-2TN7yVwm.js → api-Bp0E7mYy.js} +1 -1
  154. package/dist/ui/assets/{auth-section-CeKCNzzC.js → auth-section-D4quwqhL.js} +1 -1
  155. package/dist/ui/assets/{backups-section-CDuqhiZo.js → backups-section-D-oq--M3.js} +1 -1
  156. package/dist/ui/assets/cliproxy-BsgW2jbH.js +3 -0
  157. package/dist/ui/assets/{cliproxy-control-panel-DJd_zNR3.js → cliproxy-control-panel-B6xlfLnN.js} +1 -1
  158. package/dist/ui/assets/{confirm-dialog-DtYrWaa7.js → confirm-dialog-ConYUjNo.js} +1 -1
  159. package/dist/ui/assets/{copilot-DHdywZ9L.js → copilot-BO0JhNVL.js} +3 -3
  160. package/dist/ui/assets/{globalenv-section-Cn5ufgRh.js → globalenv-section-CGiUottp.js} +1 -1
  161. package/dist/ui/assets/{health-BsMhSeFz.js → health-DnkFdo0B.js} +1 -1
  162. package/dist/ui/assets/index-ByiEOnlQ.css +1 -0
  163. package/dist/ui/assets/{index-CEF_VhSR.js → index-C_MPOoUZ.js} +1 -1
  164. package/dist/ui/assets/index-CxWM9Sgz.js +1 -0
  165. package/dist/ui/assets/index-D4L2ZIJs.js +47 -0
  166. package/dist/ui/assets/{index-B2GQ_Joi.js → index-DcYq7jVv.js} +1 -1
  167. package/dist/ui/assets/{index-DkMR3J96.js → index-aB5MHYio.js} +1 -1
  168. package/dist/ui/assets/{proxy-status-widget-Cb7KfEqq.js → proxy-status-widget-BbZeFxlJ.js} +1 -1
  169. package/dist/ui/assets/{shared-BsWeldW8.js → shared-B_aV9M2M.js} +1 -1
  170. package/dist/ui/assets/{switch-D6XSRTo_.js → switch-60ycFRmr.js} +1 -1
  171. package/dist/ui/index.html +2 -2
  172. package/dist/utils/config-manager.d.ts.map +1 -1
  173. package/dist/utils/config-manager.js +17 -6
  174. package/dist/utils/config-manager.js.map +1 -1
  175. package/dist/web-server/jsonl-parser.js +1 -1
  176. package/dist/web-server/jsonl-parser.js.map +1 -1
  177. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  178. package/dist/web-server/routes/account-routes.js +5 -11
  179. package/dist/web-server/routes/account-routes.js.map +1 -1
  180. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  181. package/dist/web-server/routes/cliproxy-stats-routes.js +43 -4
  182. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  183. package/dist/web-server/routes/cursor-routes.d.ts +6 -0
  184. package/dist/web-server/routes/cursor-routes.d.ts.map +1 -0
  185. package/dist/web-server/routes/cursor-routes.js +163 -0
  186. package/dist/web-server/routes/cursor-routes.js.map +1 -0
  187. package/dist/web-server/routes/cursor-settings-routes.d.ts +6 -0
  188. package/dist/web-server/routes/cursor-settings-routes.d.ts.map +1 -0
  189. package/dist/web-server/routes/cursor-settings-routes.js +171 -0
  190. package/dist/web-server/routes/cursor-settings-routes.js.map +1 -0
  191. package/dist/web-server/routes/index.d.ts.map +1 -1
  192. package/dist/web-server/routes/index.js +3 -0
  193. package/dist/web-server/routes/index.js.map +1 -1
  194. package/dist/web-server/routes/variant-routes.d.ts.map +1 -1
  195. package/dist/web-server/routes/variant-routes.js +107 -6
  196. package/dist/web-server/routes/variant-routes.js.map +1 -1
  197. package/package.json +5 -2
  198. package/scripts/hardening-inventory.js +526 -0
  199. package/scripts/maintainability-baseline.js +309 -0
  200. package/dist/ui/assets/cliproxy-626zUpA_.js +0 -3
  201. package/dist/ui/assets/index-Bmgylhgn.js +0 -1
  202. package/dist/ui/assets/index-Cr6iEc8x.js +0 -47
  203. package/dist/ui/assets/index-QvMpU4Lc.css +0 -1
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Cursor Protobuf Schema Constants
3
+ * Field definitions and wire types for ConnectRPC protocol
4
+ */
5
+ /** Wire types for protobuf encoding */
6
+ export declare const WIRE_TYPE: {
7
+ readonly VARINT: 0;
8
+ readonly FIXED64: 1;
9
+ readonly LEN: 2;
10
+ readonly FIXED32: 5;
11
+ };
12
+ /** Message role constants */
13
+ export declare const ROLE: {
14
+ readonly USER: 1;
15
+ readonly ASSISTANT: 2;
16
+ };
17
+ /** Unified mode constants */
18
+ export declare const UNIFIED_MODE: {
19
+ readonly CHAT: 1;
20
+ readonly AGENT: 2;
21
+ };
22
+ /** Thinking level constants */
23
+ export declare const THINKING_LEVEL: {
24
+ readonly UNSPECIFIED: 0;
25
+ readonly MEDIUM: 1;
26
+ readonly HIGH: 2;
27
+ };
28
+ /** Field numbers namespaced by protobuf message type */
29
+ export declare const FIELD: {
30
+ /** StreamUnifiedChatRequestWithTools (top level) */
31
+ readonly Request: {
32
+ readonly REQUEST: 1;
33
+ };
34
+ /** StreamUnifiedChatRequest */
35
+ readonly Chat: {
36
+ readonly MESSAGES: 1;
37
+ readonly UNKNOWN_2: 2;
38
+ readonly INSTRUCTION: 3;
39
+ readonly UNKNOWN_4: 4;
40
+ readonly MODEL: 5;
41
+ readonly WEB_TOOL: 8;
42
+ readonly UNKNOWN_13: 13;
43
+ readonly CURSOR_SETTING: 15;
44
+ readonly UNKNOWN_19: 19;
45
+ readonly CONVERSATION_ID: 23;
46
+ readonly METADATA: 26;
47
+ readonly IS_AGENTIC: 27;
48
+ readonly SUPPORTED_TOOLS: 29;
49
+ readonly MESSAGE_IDS: 30;
50
+ readonly MCP_TOOLS: 34;
51
+ readonly LARGE_CONTEXT: 35;
52
+ readonly UNKNOWN_38: 38;
53
+ readonly UNIFIED_MODE: 46;
54
+ readonly UNKNOWN_47: 47;
55
+ readonly SHOULD_DISABLE_TOOLS: 48;
56
+ readonly THINKING_LEVEL: 49;
57
+ readonly UNKNOWN_51: 51;
58
+ readonly UNKNOWN_53: 53;
59
+ readonly UNIFIED_MODE_NAME: 54;
60
+ };
61
+ /** ConversationMessage */
62
+ readonly Message: {
63
+ readonly CONTENT: 1;
64
+ readonly ROLE: 2;
65
+ readonly ID: 13;
66
+ readonly TOOL_RESULTS: 18;
67
+ readonly IS_AGENTIC: 29;
68
+ readonly UNIFIED_MODE: 47;
69
+ readonly SUPPORTED_TOOLS: 51;
70
+ };
71
+ /** ConversationMessage.ToolResult */
72
+ readonly ToolResult: {
73
+ readonly CALL_ID: 1;
74
+ readonly NAME: 2;
75
+ readonly INDEX: 3;
76
+ readonly RAW_ARGS: 5;
77
+ readonly RESULT: 8;
78
+ };
79
+ /** Model */
80
+ readonly Model: {
81
+ readonly NAME: 1;
82
+ readonly EMPTY: 4;
83
+ };
84
+ /** Instruction */
85
+ readonly Instruction: {
86
+ readonly TEXT: 1;
87
+ };
88
+ /** CursorSetting (U6_FIELD_* are sub-fields of Unknown6 nested message) */
89
+ readonly Setting: {
90
+ readonly PATH: 1;
91
+ readonly UNKNOWN_3: 3;
92
+ readonly UNKNOWN_6: 6;
93
+ readonly UNKNOWN_8: 8;
94
+ readonly UNKNOWN_9: 9;
95
+ readonly U6_FIELD_1: 1;
96
+ readonly U6_FIELD_2: 2;
97
+ };
98
+ /** Metadata */
99
+ readonly Metadata: {
100
+ readonly PLATFORM: 1;
101
+ readonly ARCH: 2;
102
+ readonly VERSION: 3;
103
+ readonly CWD: 4;
104
+ readonly TIMESTAMP: 5;
105
+ };
106
+ /** MessageId */
107
+ readonly MessageId: {
108
+ readonly ID: 1;
109
+ readonly SUMMARY: 2;
110
+ readonly ROLE: 3;
111
+ };
112
+ /** MCPTool */
113
+ readonly McpTool: {
114
+ readonly NAME: 1;
115
+ readonly DESC: 2;
116
+ readonly PARAMS: 3;
117
+ readonly SERVER: 4;
118
+ };
119
+ /** StreamUnifiedChatResponseWithTools (response top-level) */
120
+ readonly Response: {
121
+ readonly TOOL_CALL: 1;
122
+ readonly RESPONSE: 2;
123
+ };
124
+ /** ClientSideToolV2Call */
125
+ readonly ToolCall: {
126
+ readonly ID: 3;
127
+ readonly NAME: 9;
128
+ readonly RAW_ARGS: 10;
129
+ readonly IS_LAST: 11;
130
+ readonly MCP_PARAMS: 27;
131
+ };
132
+ /** MCPParams */
133
+ readonly McpParams: {
134
+ readonly TOOLS_LIST: 1;
135
+ };
136
+ /** MCPParams.Tool (nested) */
137
+ readonly McpNested: {
138
+ readonly NAME: 1;
139
+ readonly PARAMS: 3;
140
+ };
141
+ /** StreamUnifiedChatResponse */
142
+ readonly ChatResponse: {
143
+ readonly TEXT: 1;
144
+ readonly THINKING: 25;
145
+ };
146
+ /** Thinking */
147
+ readonly Thinking: {
148
+ readonly TEXT: 1;
149
+ };
150
+ };
151
+ /** Type definitions */
152
+ export type WireType = (typeof WIRE_TYPE)[keyof typeof WIRE_TYPE];
153
+ export type RoleType = (typeof ROLE)[keyof typeof ROLE];
154
+ export type UnifiedModeType = (typeof UNIFIED_MODE)[keyof typeof UNIFIED_MODE];
155
+ export type ThinkingLevelType = (typeof THINKING_LEVEL)[keyof typeof THINKING_LEVEL];
156
+ /** Cursor credentials structure */
157
+ export interface CursorCredentials {
158
+ accessToken: string;
159
+ machineId: string;
160
+ ghostMode?: boolean;
161
+ }
162
+ /** Cursor tool definition */
163
+ export interface CursorTool {
164
+ function?: {
165
+ name?: string;
166
+ description?: string;
167
+ parameters?: Record<string, unknown>;
168
+ };
169
+ name?: string;
170
+ description?: string;
171
+ input_schema?: Record<string, unknown>;
172
+ }
173
+ /** Cursor tool result */
174
+ export interface CursorToolResult {
175
+ tool_call_id?: string;
176
+ name?: string;
177
+ index?: number;
178
+ raw_args?: string;
179
+ }
180
+ /** Cursor message format */
181
+ export interface CursorMessage {
182
+ role: string;
183
+ content: string;
184
+ tool_results?: CursorToolResult[];
185
+ tool_calls?: Array<{
186
+ id: string;
187
+ type: string;
188
+ function: {
189
+ name: string;
190
+ arguments: string;
191
+ };
192
+ }>;
193
+ }
194
+ /** Formatted message for encoding */
195
+ export interface FormattedMessage {
196
+ content: string;
197
+ role: RoleType;
198
+ messageId: string;
199
+ isLast: boolean;
200
+ hasTools: boolean;
201
+ toolResults: CursorToolResult[];
202
+ }
203
+ /** Message ID structure */
204
+ export interface MessageId {
205
+ messageId: string;
206
+ role: RoleType;
207
+ }
208
+ /** Compression flags for ConnectRPC frames */
209
+ export declare const COMPRESS_FLAG: {
210
+ readonly NONE: 0;
211
+ readonly GZIP: 1;
212
+ readonly GZIP_ALT: 2;
213
+ readonly GZIP_BOTH: 3;
214
+ };
215
+ //# sourceMappingURL=cursor-protobuf-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-protobuf-schema.d.ts","sourceRoot":"","sources":["../../src/cursor/cursor-protobuf-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /**
3
+ * Cursor Protobuf Schema Constants
4
+ * Field definitions and wire types for ConnectRPC protocol
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.COMPRESS_FLAG = exports.FIELD = exports.THINKING_LEVEL = exports.UNIFIED_MODE = exports.ROLE = exports.WIRE_TYPE = void 0;
8
+ /** Wire types for protobuf encoding */
9
+ exports.WIRE_TYPE = {
10
+ VARINT: 0,
11
+ FIXED64: 1,
12
+ LEN: 2,
13
+ FIXED32: 5,
14
+ };
15
+ /** Message role constants */
16
+ exports.ROLE = {
17
+ USER: 1,
18
+ ASSISTANT: 2,
19
+ };
20
+ /** Unified mode constants */
21
+ exports.UNIFIED_MODE = {
22
+ CHAT: 1,
23
+ AGENT: 2,
24
+ };
25
+ /** Thinking level constants */
26
+ exports.THINKING_LEVEL = {
27
+ UNSPECIFIED: 0,
28
+ MEDIUM: 1,
29
+ HIGH: 2,
30
+ };
31
+ /** Field numbers namespaced by protobuf message type */
32
+ exports.FIELD = {
33
+ /** StreamUnifiedChatRequestWithTools (top level) */
34
+ Request: { REQUEST: 1 },
35
+ /** StreamUnifiedChatRequest */
36
+ Chat: {
37
+ MESSAGES: 1,
38
+ UNKNOWN_2: 2,
39
+ INSTRUCTION: 3,
40
+ UNKNOWN_4: 4,
41
+ MODEL: 5,
42
+ WEB_TOOL: 8,
43
+ UNKNOWN_13: 13,
44
+ CURSOR_SETTING: 15,
45
+ UNKNOWN_19: 19,
46
+ CONVERSATION_ID: 23,
47
+ METADATA: 26,
48
+ IS_AGENTIC: 27,
49
+ SUPPORTED_TOOLS: 29,
50
+ MESSAGE_IDS: 30,
51
+ MCP_TOOLS: 34,
52
+ LARGE_CONTEXT: 35,
53
+ UNKNOWN_38: 38,
54
+ UNIFIED_MODE: 46,
55
+ UNKNOWN_47: 47,
56
+ SHOULD_DISABLE_TOOLS: 48,
57
+ THINKING_LEVEL: 49,
58
+ UNKNOWN_51: 51,
59
+ UNKNOWN_53: 53,
60
+ UNIFIED_MODE_NAME: 54,
61
+ },
62
+ /** ConversationMessage */
63
+ Message: {
64
+ CONTENT: 1,
65
+ ROLE: 2,
66
+ ID: 13,
67
+ TOOL_RESULTS: 18,
68
+ IS_AGENTIC: 29,
69
+ UNIFIED_MODE: 47,
70
+ SUPPORTED_TOOLS: 51,
71
+ },
72
+ /** ConversationMessage.ToolResult */
73
+ ToolResult: {
74
+ CALL_ID: 1,
75
+ NAME: 2,
76
+ INDEX: 3,
77
+ RAW_ARGS: 5,
78
+ RESULT: 8,
79
+ },
80
+ /** Model */
81
+ Model: { NAME: 1, EMPTY: 4 },
82
+ /** Instruction */
83
+ Instruction: { TEXT: 1 },
84
+ /** CursorSetting (U6_FIELD_* are sub-fields of Unknown6 nested message) */
85
+ Setting: {
86
+ PATH: 1,
87
+ UNKNOWN_3: 3,
88
+ UNKNOWN_6: 6,
89
+ UNKNOWN_8: 8,
90
+ UNKNOWN_9: 9,
91
+ U6_FIELD_1: 1,
92
+ U6_FIELD_2: 2,
93
+ },
94
+ /** Metadata */
95
+ Metadata: { PLATFORM: 1, ARCH: 2, VERSION: 3, CWD: 4, TIMESTAMP: 5 },
96
+ /** MessageId */
97
+ MessageId: { ID: 1, SUMMARY: 2, ROLE: 3 },
98
+ /** MCPTool */
99
+ McpTool: { NAME: 1, DESC: 2, PARAMS: 3, SERVER: 4 },
100
+ /** StreamUnifiedChatResponseWithTools (response top-level) */
101
+ Response: { TOOL_CALL: 1, RESPONSE: 2 },
102
+ /** ClientSideToolV2Call */
103
+ ToolCall: { ID: 3, NAME: 9, RAW_ARGS: 10, IS_LAST: 11, MCP_PARAMS: 27 },
104
+ /** MCPParams */
105
+ McpParams: { TOOLS_LIST: 1 },
106
+ /** MCPParams.Tool (nested) */
107
+ McpNested: { NAME: 1, PARAMS: 3 },
108
+ /** StreamUnifiedChatResponse */
109
+ ChatResponse: { TEXT: 1, THINKING: 25 },
110
+ /** Thinking */
111
+ Thinking: { TEXT: 1 },
112
+ };
113
+ /** Compression flags for ConnectRPC frames */
114
+ exports.COMPRESS_FLAG = {
115
+ NONE: 0x00,
116
+ GZIP: 0x01,
117
+ GZIP_ALT: 0x02,
118
+ GZIP_BOTH: 0x03,
119
+ };
120
+ //# sourceMappingURL=cursor-protobuf-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-protobuf-schema.js","sourceRoot":"","sources":["../../src/cursor/cursor-protobuf-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Cursor Protobuf Main Module
3
+ * Exports encoder/decoder functions and builds complete requests
4
+ */
5
+ import { type CursorMessage, type CursorTool } from './cursor-protobuf-schema.js';
6
+ import { encodeField, encodeVarint, encodeMessage, encodeInstruction, encodeModel, encodeCursorSetting, encodeMetadata, encodeMessageId, encodeMcpTool, wrapConnectRPCFrame } from './cursor-protobuf-encoder.js';
7
+ import { decodeVarint, decodeField, decodeMessage, parseConnectRPCFrame, extractTextFromResponse } from './cursor-protobuf-decoder.js';
8
+ /**
9
+ * Build complete chat request protobuf
10
+ */
11
+ export declare function encodeRequest(messages: CursorMessage[], modelName: string, tools?: CursorTool[], reasoningEffort?: string | null): Uint8Array;
12
+ /**
13
+ * Build chat request wrapped in top-level message
14
+ */
15
+ export declare function buildChatRequest(messages: CursorMessage[], modelName: string, tools?: CursorTool[], reasoningEffort?: string | null): Uint8Array;
16
+ /**
17
+ * Generate complete Cursor request body with ConnectRPC framing
18
+ */
19
+ export declare function generateCursorBody(messages: CursorMessage[], modelName: string, tools?: CursorTool[], reasoningEffort?: string | null): Uint8Array;
20
+ export { encodeVarint, encodeField, encodeMessage, encodeInstruction, encodeModel, encodeCursorSetting, encodeMetadata, encodeMessageId, encodeMcpTool, wrapConnectRPCFrame, decodeVarint, decodeField, decodeMessage, parseConnectRPCFrame, extractTextFromResponse, };
21
+ //# sourceMappingURL=cursor-protobuf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-protobuf.d.ts","sourceRoot":"","sources":["../../src/cursor/cursor-protobuf.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,UAAU,EAIhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EAEpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AAGtC;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,UAAU,EAAO,EACxB,eAAe,GAAE,MAAM,GAAG,IAAW,GACpC,UAAU,CAyFZ;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,UAAU,EAAO,EACxB,eAAe,GAAE,MAAM,GAAG,IAAW,GACpC,UAAU,CAMZ;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,UAAU,EAAO,EACxB,eAAe,GAAE,MAAM,GAAG,IAAW,GACpC,UAAU,CAIZ;AAGD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,uBAAuB,GACxB,CAAC"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ /**
3
+ * Cursor Protobuf Main Module
4
+ * Exports encoder/decoder functions and builds complete requests
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.extractTextFromResponse = exports.parseConnectRPCFrame = exports.decodeMessage = exports.decodeField = exports.decodeVarint = exports.wrapConnectRPCFrame = exports.encodeMcpTool = exports.encodeMessageId = exports.encodeMetadata = exports.encodeCursorSetting = exports.encodeModel = exports.encodeInstruction = exports.encodeMessage = exports.encodeField = exports.encodeVarint = exports.generateCursorBody = exports.buildChatRequest = exports.encodeRequest = void 0;
8
+ const crypto_1 = require("crypto");
9
+ const cursor_protobuf_schema_js_1 = require("./cursor-protobuf-schema.js");
10
+ const cursor_protobuf_encoder_js_1 = require("./cursor-protobuf-encoder.js");
11
+ Object.defineProperty(exports, "encodeField", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.encodeField; } });
12
+ Object.defineProperty(exports, "encodeVarint", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.encodeVarint; } });
13
+ Object.defineProperty(exports, "encodeMessage", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.encodeMessage; } });
14
+ Object.defineProperty(exports, "encodeInstruction", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.encodeInstruction; } });
15
+ Object.defineProperty(exports, "encodeModel", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.encodeModel; } });
16
+ Object.defineProperty(exports, "encodeCursorSetting", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.encodeCursorSetting; } });
17
+ Object.defineProperty(exports, "encodeMetadata", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.encodeMetadata; } });
18
+ Object.defineProperty(exports, "encodeMessageId", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.encodeMessageId; } });
19
+ Object.defineProperty(exports, "encodeMcpTool", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.encodeMcpTool; } });
20
+ Object.defineProperty(exports, "wrapConnectRPCFrame", { enumerable: true, get: function () { return cursor_protobuf_encoder_js_1.wrapConnectRPCFrame; } });
21
+ const cursor_protobuf_decoder_js_1 = require("./cursor-protobuf-decoder.js");
22
+ Object.defineProperty(exports, "decodeVarint", { enumerable: true, get: function () { return cursor_protobuf_decoder_js_1.decodeVarint; } });
23
+ Object.defineProperty(exports, "decodeField", { enumerable: true, get: function () { return cursor_protobuf_decoder_js_1.decodeField; } });
24
+ Object.defineProperty(exports, "decodeMessage", { enumerable: true, get: function () { return cursor_protobuf_decoder_js_1.decodeMessage; } });
25
+ Object.defineProperty(exports, "parseConnectRPCFrame", { enumerable: true, get: function () { return cursor_protobuf_decoder_js_1.parseConnectRPCFrame; } });
26
+ Object.defineProperty(exports, "extractTextFromResponse", { enumerable: true, get: function () { return cursor_protobuf_decoder_js_1.extractTextFromResponse; } });
27
+ const cursor_protobuf_schema_js_2 = require("./cursor-protobuf-schema.js");
28
+ /**
29
+ * Build complete chat request protobuf
30
+ */
31
+ function encodeRequest(messages, modelName, tools = [], reasoningEffort = null) {
32
+ if (messages.length === 0) {
33
+ throw new Error('Messages array must not be empty');
34
+ }
35
+ const hasTools = tools?.length > 0;
36
+ const isAgentic = hasTools;
37
+ const formattedMessages = [];
38
+ const messageIds = [];
39
+ // Prepare messages
40
+ for (let i = 0; i < messages.length; i++) {
41
+ const msg = messages[i];
42
+ const role = msg.role === 'user' ? cursor_protobuf_schema_js_1.ROLE.USER : cursor_protobuf_schema_js_1.ROLE.ASSISTANT;
43
+ const msgId = (0, crypto_1.randomUUID)();
44
+ const isLast = i === messages.length - 1;
45
+ formattedMessages.push({
46
+ content: msg.content,
47
+ role,
48
+ messageId: msgId,
49
+ isLast,
50
+ hasTools,
51
+ toolResults: msg.tool_results || [],
52
+ });
53
+ messageIds.push({ messageId: msgId, role });
54
+ }
55
+ // Map reasoning effort to thinking level
56
+ let thinkingLevel = cursor_protobuf_schema_js_1.THINKING_LEVEL.UNSPECIFIED;
57
+ if (reasoningEffort === 'medium')
58
+ thinkingLevel = cursor_protobuf_schema_js_1.THINKING_LEVEL.MEDIUM;
59
+ else if (reasoningEffort === 'high')
60
+ thinkingLevel = cursor_protobuf_schema_js_1.THINKING_LEVEL.HIGH;
61
+ // Build arrays for messages and tools
62
+ const messageFields = formattedMessages.map((fm) => (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.MESSAGES, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, (0, cursor_protobuf_encoder_js_1.encodeMessage)(fm.content, fm.role, fm.messageId, fm.isLast, fm.hasTools, fm.toolResults)));
63
+ const messageIdFields = messageIds.map((mid) => (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.MESSAGE_IDS, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, (0, cursor_protobuf_encoder_js_1.encodeMessageId)(mid.messageId, mid.role)));
64
+ const toolFields = tools?.length > 0
65
+ ? tools.map((tool) => (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.MCP_TOOLS, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, (0, cursor_protobuf_encoder_js_1.encodeMcpTool)(tool)))
66
+ : [];
67
+ const supportedToolsField = isAgentic
68
+ ? [(0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.SUPPORTED_TOOLS, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, (0, cursor_protobuf_encoder_js_1.encodeVarint)(1))]
69
+ : [];
70
+ // Concatenate all parts
71
+ const parts = [
72
+ ...messageFields,
73
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNKNOWN_2, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, 1),
74
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.INSTRUCTION, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, (0, cursor_protobuf_encoder_js_1.encodeInstruction)('')),
75
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNKNOWN_4, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, 1),
76
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.MODEL, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, (0, cursor_protobuf_encoder_js_1.encodeModel)(modelName)),
77
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.WEB_TOOL, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, ''),
78
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNKNOWN_13, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, 1),
79
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.CURSOR_SETTING, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, (0, cursor_protobuf_encoder_js_1.encodeCursorSetting)()),
80
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNKNOWN_19, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, 1),
81
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.CONVERSATION_ID, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, (0, crypto_1.randomUUID)()),
82
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.METADATA, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, (0, cursor_protobuf_encoder_js_1.encodeMetadata)()),
83
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.IS_AGENTIC, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, isAgentic ? 1 : 0),
84
+ ...supportedToolsField,
85
+ ...messageIdFields,
86
+ ...toolFields,
87
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.LARGE_CONTEXT, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, 0),
88
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNKNOWN_38, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, 0),
89
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNIFIED_MODE, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, isAgentic ? cursor_protobuf_schema_js_1.UNIFIED_MODE.AGENT : cursor_protobuf_schema_js_1.UNIFIED_MODE.CHAT),
90
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNKNOWN_47, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, ''),
91
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.SHOULD_DISABLE_TOOLS, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, isAgentic ? 0 : 1),
92
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.THINKING_LEVEL, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, thinkingLevel),
93
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNKNOWN_51, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, 0),
94
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNKNOWN_53, cursor_protobuf_schema_js_2.WIRE_TYPE.VARINT, 1),
95
+ (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Chat.UNIFIED_MODE_NAME, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, isAgentic ? 'Agent' : 'Ask'),
96
+ ];
97
+ return (0, cursor_protobuf_encoder_js_1.concatArrays)(...parts);
98
+ }
99
+ exports.encodeRequest = encodeRequest;
100
+ /**
101
+ * Build chat request wrapped in top-level message
102
+ */
103
+ function buildChatRequest(messages, modelName, tools = [], reasoningEffort = null) {
104
+ return (0, cursor_protobuf_encoder_js_1.encodeField)(cursor_protobuf_schema_js_1.FIELD.Request.REQUEST, cursor_protobuf_schema_js_2.WIRE_TYPE.LEN, encodeRequest(messages, modelName, tools, reasoningEffort));
105
+ }
106
+ exports.buildChatRequest = buildChatRequest;
107
+ /**
108
+ * Generate complete Cursor request body with ConnectRPC framing
109
+ */
110
+ function generateCursorBody(messages, modelName, tools = [], reasoningEffort = null) {
111
+ const protobuf = buildChatRequest(messages, modelName, tools, reasoningEffort);
112
+ const framed = (0, cursor_protobuf_encoder_js_1.wrapConnectRPCFrame)(protobuf, false); // Cursor doesn't support compressed requests
113
+ return framed;
114
+ }
115
+ exports.generateCursorBody = generateCursorBody;
116
+ //# sourceMappingURL=cursor-protobuf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-protobuf.js","sourceRoot":"","sources":["../../src/cursor/cursor-protobuf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Cursor Streaming Frame Parser
3
+ * Incrementally parses ConnectRPC frames from arbitrary chunk boundaries
4
+ */
5
+ /// <reference types="node" />
6
+ /// <reference types="node" />
7
+ /** Frame parsing result types */
8
+ export type FrameResult = {
9
+ type: 'error';
10
+ message: string;
11
+ status: number;
12
+ errorType: string;
13
+ } | {
14
+ type: 'text';
15
+ text: string;
16
+ } | {
17
+ type: 'thinking';
18
+ text: string;
19
+ } | {
20
+ type: 'toolCall';
21
+ toolCall: {
22
+ id: string;
23
+ type: string;
24
+ function: {
25
+ name: string;
26
+ arguments: string;
27
+ };
28
+ isLast: boolean;
29
+ };
30
+ };
31
+ /**
32
+ * Decompress payload if gzip-compressed.
33
+ * Skips decompression for JSON error payloads.
34
+ * NOTE: Uses synchronous gzip for single-request CLI tool. Async not warranted for small payloads.
35
+ */
36
+ export declare function decompressPayload(payload: Buffer, flags: number): Buffer;
37
+ /**
38
+ * Incrementally parses ConnectRPC frames from arbitrary chunk boundaries.
39
+ *
40
+ * Usage:
41
+ * const parser = new StreamingFrameParser();
42
+ * req.on('data', (chunk) => {
43
+ * for (const frame of parser.push(chunk)) { handle(frame); }
44
+ * });
45
+ */
46
+ export declare class StreamingFrameParser {
47
+ private buffer;
48
+ /** Feed a new chunk. Returns zero or more parsed frames. */
49
+ push(chunk: Buffer): FrameResult[];
50
+ hasPartial(): boolean;
51
+ }
52
+ //# sourceMappingURL=cursor-stream-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-stream-parser.d.ts","sourceRoot":"","sources":["../../src/cursor/cursor-stream-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;AAMH,iCAAiC;AACjC,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH,CAAC;AAEN;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBxE;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAA2B;IAEzC,4DAA4D;IAC5D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IA+DlC,UAAU,IAAI,OAAO;CAGtB"}