opencode-ext-connector 0.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.
Files changed (332) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/LICENSE +29 -0
  3. package/README.md +207 -0
  4. package/THIRD_PARTY_NOTICES.md +201 -0
  5. package/dist/catalog/parse-ids.d.ts +2 -0
  6. package/dist/catalog/parse-ids.js +49 -0
  7. package/dist/core/adapter.d.ts +16 -0
  8. package/dist/core/adapter.js +20 -0
  9. package/dist/core/clock.d.ts +7 -0
  10. package/dist/core/clock.js +1 -0
  11. package/dist/core/deadline.d.ts +13 -0
  12. package/dist/core/deadline.js +54 -0
  13. package/dist/core/errors.d.ts +57 -0
  14. package/dist/core/errors.js +81 -0
  15. package/dist/core/health.d.ts +22 -0
  16. package/dist/core/health.js +30 -0
  17. package/dist/core/http.d.ts +28 -0
  18. package/dist/core/http.js +1 -0
  19. package/dist/core/ids.d.ts +7 -0
  20. package/dist/core/ids.js +23 -0
  21. package/dist/core/lifecycle.d.ts +4 -0
  22. package/dist/core/lifecycle.js +16 -0
  23. package/dist/core/logger.d.ts +21 -0
  24. package/dist/core/logger.js +61 -0
  25. package/dist/core/models.d.ts +41 -0
  26. package/dist/core/models.js +59 -0
  27. package/dist/core/options.d.ts +31 -0
  28. package/dist/core/options.js +62 -0
  29. package/dist/core/process.d.ts +20 -0
  30. package/dist/core/process.js +1 -0
  31. package/dist/http/fetch-transport.d.ts +2 -0
  32. package/dist/http/fetch-transport.js +75 -0
  33. package/dist/http/package-version.d.ts +7 -0
  34. package/dist/http/package-version.js +46 -0
  35. package/dist/http/read-body.d.ts +9 -0
  36. package/dist/http/read-body.js +22 -0
  37. package/dist/index.d.ts +6 -0
  38. package/dist/index.js +5 -0
  39. package/dist/logging/logger.d.ts +4 -0
  40. package/dist/logging/logger.js +11 -0
  41. package/dist/opencode/auth-store.d.ts +19 -0
  42. package/dist/opencode/auth-store.js +107 -0
  43. package/dist/opencode/beta-api.d.ts +3 -0
  44. package/dist/opencode/beta-api.js +1 -0
  45. package/dist/opencode/catalog-bridge.d.ts +3 -0
  46. package/dist/opencode/catalog-bridge.js +85 -0
  47. package/dist/opencode/health-refresh.d.ts +16 -0
  48. package/dist/opencode/health-refresh.js +49 -0
  49. package/dist/opencode/host-options.d.ts +2 -0
  50. package/dist/opencode/host-options.js +49 -0
  51. package/dist/opencode/language-factory.d.ts +13 -0
  52. package/dist/opencode/language-factory.js +37 -0
  53. package/dist/opencode/ollama-probe.d.ts +2 -0
  54. package/dist/opencode/ollama-probe.js +15 -0
  55. package/dist/opencode/ollama-production.d.ts +4 -0
  56. package/dist/opencode/ollama-production.js +10 -0
  57. package/dist/opencode/plugin.d.ts +33 -0
  58. package/dist/opencode/plugin.js +40 -0
  59. package/dist/opencode/process-exit.d.ts +4 -0
  60. package/dist/opencode/process-exit.js +22 -0
  61. package/dist/opencode/provider-entry.d.ts +25 -0
  62. package/dist/opencode/provider-entry.js +1 -0
  63. package/dist/opencode/providers.d.ts +16 -0
  64. package/dist/opencode/providers.js +140 -0
  65. package/dist/opencode/register-integrations.d.ts +3 -0
  66. package/dist/opencode/register-integrations.js +8 -0
  67. package/dist/opencode/reload.d.ts +9 -0
  68. package/dist/opencode/reload.js +30 -0
  69. package/dist/opencode/v1-anthropic-auth.d.ts +9 -0
  70. package/dist/opencode/v1-anthropic-auth.js +55 -0
  71. package/dist/opencode/v1-catalog.d.ts +13 -0
  72. package/dist/opencode/v1-catalog.js +80 -0
  73. package/dist/opencode/v1-language.d.ts +3 -0
  74. package/dist/opencode/v1-language.js +64 -0
  75. package/dist/opencode/v1-module.d.ts +23 -0
  76. package/dist/opencode/v1-module.js +74 -0
  77. package/dist/opencode/v1-session-auth.d.ts +5 -0
  78. package/dist/opencode/v1-session-auth.js +98 -0
  79. package/dist/providers/claude/adapter.d.ts +7 -0
  80. package/dist/providers/claude/adapter.js +37 -0
  81. package/dist/providers/claude/atomic-private-file.d.ts +13 -0
  82. package/dist/providers/claude/atomic-private-file.js +94 -0
  83. package/dist/providers/claude/auth-json.d.ts +2 -0
  84. package/dist/providers/claude/auth-json.js +14 -0
  85. package/dist/providers/claude/auth.d.ts +24 -0
  86. package/dist/providers/claude/auth.js +200 -0
  87. package/dist/providers/claude/cli-version.d.ts +10 -0
  88. package/dist/providers/claude/cli-version.js +36 -0
  89. package/dist/providers/claude/compat-betas.d.ts +5 -0
  90. package/dist/providers/claude/compat-betas.js +54 -0
  91. package/dist/providers/claude/compat-config.d.ts +8 -0
  92. package/dist/providers/claude/compat-config.js +31 -0
  93. package/dist/providers/claude/compat-request.d.ts +12 -0
  94. package/dist/providers/claude/compat-request.js +151 -0
  95. package/dist/providers/claude/compat-response.d.ts +1 -0
  96. package/dist/providers/claude/compat-response.js +54 -0
  97. package/dist/providers/claude/compat-signing.d.ts +9 -0
  98. package/dist/providers/claude/compat-signing.js +24 -0
  99. package/dist/providers/claude/compat-transform.d.ts +3 -0
  100. package/dist/providers/claude/compat-transform.js +224 -0
  101. package/dist/providers/claude/credentials.d.ts +7 -0
  102. package/dist/providers/claude/credentials.js +37 -0
  103. package/dist/providers/claude/emit-stream.d.ts +2 -0
  104. package/dist/providers/claude/emit-stream.js +62 -0
  105. package/dist/providers/claude/keychain-account.d.ts +1 -0
  106. package/dist/providers/claude/keychain-account.js +14 -0
  107. package/dist/providers/claude/language-model.d.ts +8 -0
  108. package/dist/providers/claude/language-model.js +109 -0
  109. package/dist/providers/claude/models.d.ts +9 -0
  110. package/dist/providers/claude/models.js +24 -0
  111. package/dist/providers/claude/prompt.d.ts +42 -0
  112. package/dist/providers/claude/prompt.js +134 -0
  113. package/dist/providers/claude/refresh.d.ts +19 -0
  114. package/dist/providers/claude/refresh.js +85 -0
  115. package/dist/providers/claude/sse-convert.d.ts +6 -0
  116. package/dist/providers/claude/sse-convert.js +74 -0
  117. package/dist/providers/claude/sse.d.ts +71 -0
  118. package/dist/providers/claude/sse.js +123 -0
  119. package/dist/providers/claude/transform.d.ts +32 -0
  120. package/dist/providers/claude/transform.js +52 -0
  121. package/dist/providers/claude/writeback.d.ts +18 -0
  122. package/dist/providers/claude/writeback.js +140 -0
  123. package/dist/providers/command-code/adapter.d.ts +7 -0
  124. package/dist/providers/command-code/adapter.js +37 -0
  125. package/dist/providers/command-code/auth.d.ts +5 -0
  126. package/dist/providers/command-code/auth.js +88 -0
  127. package/dist/providers/command-code/cli-version.d.ts +10 -0
  128. package/dist/providers/command-code/cli-version.js +36 -0
  129. package/dist/providers/command-code/emit-stream.d.ts +2 -0
  130. package/dist/providers/command-code/emit-stream.js +226 -0
  131. package/dist/providers/command-code/errors.d.ts +33 -0
  132. package/dist/providers/command-code/errors.js +105 -0
  133. package/dist/providers/command-code/language-model.d.ts +15 -0
  134. package/dist/providers/command-code/language-model.js +203 -0
  135. package/dist/providers/command-code/models.d.ts +3 -0
  136. package/dist/providers/command-code/models.js +18 -0
  137. package/dist/providers/command-code/record-stream.d.ts +1 -0
  138. package/dist/providers/command-code/record-stream.js +61 -0
  139. package/dist/providers/command-code/request-lifecycle.d.ts +8 -0
  140. package/dist/providers/command-code/request-lifecycle.js +33 -0
  141. package/dist/providers/command-code/request.d.ts +14 -0
  142. package/dist/providers/command-code/request.js +167 -0
  143. package/dist/providers/command-code/session.d.ts +5 -0
  144. package/dist/providers/command-code/session.js +9 -0
  145. package/dist/providers/cursor/adapter.d.ts +7 -0
  146. package/dist/providers/cursor/adapter.js +37 -0
  147. package/dist/providers/cursor/auth.d.ts +6 -0
  148. package/dist/providers/cursor/auth.js +56 -0
  149. package/dist/providers/cursor/blob-store.d.ts +26 -0
  150. package/dist/providers/cursor/blob-store.js +119 -0
  151. package/dist/providers/cursor/bridge-client.d.ts +33 -0
  152. package/dist/providers/cursor/bridge-client.js +200 -0
  153. package/dist/providers/cursor/bridge-event-sanitize.d.ts +3 -0
  154. package/dist/providers/cursor/bridge-event-sanitize.js +49 -0
  155. package/dist/providers/cursor/bridge-limits.d.ts +3 -0
  156. package/dist/providers/cursor/bridge-limits.js +10 -0
  157. package/dist/providers/cursor/bridge-process.d.ts +45 -0
  158. package/dist/providers/cursor/bridge-process.js +211 -0
  159. package/dist/providers/cursor/bridge-protocol.d.ts +68 -0
  160. package/dist/providers/cursor/bridge-protocol.js +49 -0
  161. package/dist/providers/cursor/bridge-serialize.d.ts +3 -0
  162. package/dist/providers/cursor/bridge-serialize.js +53 -0
  163. package/dist/providers/cursor/bridge-wire.d.ts +3 -0
  164. package/dist/providers/cursor/bridge-wire.js +163 -0
  165. package/dist/providers/cursor/checkpoint-store.d.ts +28 -0
  166. package/dist/providers/cursor/checkpoint-store.js +94 -0
  167. package/dist/providers/cursor/connect-frame-stream.d.ts +19 -0
  168. package/dist/providers/cursor/connect-frame-stream.js +160 -0
  169. package/dist/providers/cursor/connect-frame.d.ts +31 -0
  170. package/dist/providers/cursor/connect-frame.js +121 -0
  171. package/dist/providers/cursor/credentials.d.ts +5 -0
  172. package/dist/providers/cursor/credentials.js +22 -0
  173. package/dist/providers/cursor/direct-run-types.d.ts +33 -0
  174. package/dist/providers/cursor/direct-run-types.js +1 -0
  175. package/dist/providers/cursor/direct-run.d.ts +5 -0
  176. package/dist/providers/cursor/direct-run.js +213 -0
  177. package/dist/providers/cursor/direct-runtime.d.ts +23 -0
  178. package/dist/providers/cursor/direct-runtime.js +111 -0
  179. package/dist/providers/cursor/direct-stream.d.ts +28 -0
  180. package/dist/providers/cursor/direct-stream.js +190 -0
  181. package/dist/providers/cursor/exec-reply.d.ts +13 -0
  182. package/dist/providers/cursor/exec-reply.js +102 -0
  183. package/dist/providers/cursor/h2-bridge-response.d.ts +9 -0
  184. package/dist/providers/cursor/h2-bridge-response.js +51 -0
  185. package/dist/providers/cursor/h2-bridge-session.d.ts +24 -0
  186. package/dist/providers/cursor/h2-bridge-session.js +197 -0
  187. package/dist/providers/cursor/h2-bridge.d.ts +2 -0
  188. package/dist/providers/cursor/h2-bridge.js +12865 -0
  189. package/dist/providers/cursor/http2.d.ts +18 -0
  190. package/dist/providers/cursor/http2.js +144 -0
  191. package/dist/providers/cursor/interaction-reply.d.ts +6 -0
  192. package/dist/providers/cursor/interaction-reply.js +52 -0
  193. package/dist/providers/cursor/language-generate.d.ts +2 -0
  194. package/dist/providers/cursor/language-generate.js +35 -0
  195. package/dist/providers/cursor/language-model.d.ts +13 -0
  196. package/dist/providers/cursor/language-model.js +77 -0
  197. package/dist/providers/cursor/legacy-stream.d.ts +11 -0
  198. package/dist/providers/cursor/legacy-stream.js +115 -0
  199. package/dist/providers/cursor/mcp-tools.d.ts +7 -0
  200. package/dist/providers/cursor/mcp-tools.js +15 -0
  201. package/dist/providers/cursor/models.d.ts +14 -0
  202. package/dist/providers/cursor/models.js +116 -0
  203. package/dist/providers/cursor/ndjson.d.ts +3 -0
  204. package/dist/providers/cursor/ndjson.js +100 -0
  205. package/dist/providers/cursor/prompt.d.ts +4 -0
  206. package/dist/providers/cursor/prompt.js +142 -0
  207. package/dist/providers/cursor/proto/checkpoint.d.ts +35 -0
  208. package/dist/providers/cursor/proto/checkpoint.js +114 -0
  209. package/dist/providers/cursor/proto/context.d.ts +64 -0
  210. package/dist/providers/cursor/proto/context.js +178 -0
  211. package/dist/providers/cursor/proto/errors.d.ts +16 -0
  212. package/dist/providers/cursor/proto/errors.js +26 -0
  213. package/dist/providers/cursor/proto/exec-control.d.ts +20 -0
  214. package/dist/providers/cursor/proto/exec-control.js +54 -0
  215. package/dist/providers/cursor/proto/exec.d.ts +47 -0
  216. package/dist/providers/cursor/proto/exec.js +154 -0
  217. package/dist/providers/cursor/proto/fields.d.ts +22 -0
  218. package/dist/providers/cursor/proto/fields.js +97 -0
  219. package/dist/providers/cursor/proto/interaction-query.d.ts +15 -0
  220. package/dist/providers/cursor/proto/interaction-query.js +79 -0
  221. package/dist/providers/cursor/proto/interaction-tool-update.d.ts +10 -0
  222. package/dist/providers/cursor/proto/interaction-tool-update.js +58 -0
  223. package/dist/providers/cursor/proto/interaction-turn-ended.d.ts +6 -0
  224. package/dist/providers/cursor/proto/interaction-turn-ended.js +18 -0
  225. package/dist/providers/cursor/proto/interaction.d.ts +65 -0
  226. package/dist/providers/cursor/proto/interaction.js +185 -0
  227. package/dist/providers/cursor/proto/kv.d.ts +25 -0
  228. package/dist/providers/cursor/proto/kv.js +109 -0
  229. package/dist/providers/cursor/proto/mcp-result.d.ts +40 -0
  230. package/dist/providers/cursor/proto/mcp-result.js +150 -0
  231. package/dist/providers/cursor/proto/mcp.d.ts +19 -0
  232. package/dist/providers/cursor/proto/mcp.js +78 -0
  233. package/dist/providers/cursor/proto/model.d.ts +11 -0
  234. package/dist/providers/cursor/proto/model.js +36 -0
  235. package/dist/providers/cursor/proto/output-location.d.ts +7 -0
  236. package/dist/providers/cursor/proto/output-location.js +53 -0
  237. package/dist/providers/cursor/proto/prewarm.d.ts +16 -0
  238. package/dist/providers/cursor/proto/prewarm.js +68 -0
  239. package/dist/providers/cursor/proto/request-context.d.ts +16 -0
  240. package/dist/providers/cursor/proto/request-context.js +58 -0
  241. package/dist/providers/cursor/proto/request.d.ts +44 -0
  242. package/dist/providers/cursor/proto/request.js +111 -0
  243. package/dist/providers/cursor/proto/run-request.d.ts +19 -0
  244. package/dist/providers/cursor/proto/run-request.js +68 -0
  245. package/dist/providers/cursor/proto/server.d.ts +35 -0
  246. package/dist/providers/cursor/proto/server.js +93 -0
  247. package/dist/providers/cursor/proto/unknown-field.d.ts +1 -0
  248. package/dist/providers/cursor/proto/unknown-field.js +22 -0
  249. package/dist/providers/cursor/proto-value.d.ts +3 -0
  250. package/dist/providers/cursor/proto-value.js +170 -0
  251. package/dist/providers/cursor/proto-wire.d.ts +22 -0
  252. package/dist/providers/cursor/proto-wire.js +224 -0
  253. package/dist/providers/cursor/protocol-failure.d.ts +18 -0
  254. package/dist/providers/cursor/protocol-failure.js +45 -0
  255. package/dist/providers/cursor/recovery.d.ts +48 -0
  256. package/dist/providers/cursor/recovery.js +102 -0
  257. package/dist/providers/cursor/request-blob-ownership.d.ts +15 -0
  258. package/dist/providers/cursor/request-blob-ownership.js +39 -0
  259. package/dist/providers/cursor/request-build.d.ts +18 -0
  260. package/dist/providers/cursor/request-build.js +123 -0
  261. package/dist/providers/cursor/request-history.d.ts +32 -0
  262. package/dist/providers/cursor/request-history.js +163 -0
  263. package/dist/providers/cursor/request-input.d.ts +75 -0
  264. package/dist/providers/cursor/request-input.js +123 -0
  265. package/dist/providers/cursor/run-events.d.ts +15 -0
  266. package/dist/providers/cursor/run-events.js +43 -0
  267. package/dist/providers/cursor/run-session-expiry.d.ts +15 -0
  268. package/dist/providers/cursor/run-session-expiry.js +21 -0
  269. package/dist/providers/cursor/run-session.d.ts +50 -0
  270. package/dist/providers/cursor/run-session.js +205 -0
  271. package/dist/providers/cursor/run.d.ts +9 -0
  272. package/dist/providers/cursor/run.js +151 -0
  273. package/dist/providers/cursor/runner.d.ts +1 -0
  274. package/dist/providers/cursor/runner.js +55 -0
  275. package/dist/providers/cursor/server-dispatch-types.d.ts +83 -0
  276. package/dist/providers/cursor/server-dispatch-types.js +1 -0
  277. package/dist/providers/cursor/server-dispatch.d.ts +3 -0
  278. package/dist/providers/cursor/server-dispatch.js +178 -0
  279. package/dist/providers/cursor/session-state.d.ts +21 -0
  280. package/dist/providers/cursor/session-state.js +118 -0
  281. package/dist/providers/cursor/session.d.ts +1 -0
  282. package/dist/providers/cursor/session.js +26 -0
  283. package/dist/providers/cursor/settle-cleanup.d.ts +1 -0
  284. package/dist/providers/cursor/settle-cleanup.js +11 -0
  285. package/dist/providers/cursor/stream-adapter.d.ts +17 -0
  286. package/dist/providers/cursor/stream-adapter.js +99 -0
  287. package/dist/providers/cursor/tool-continuation.d.ts +14 -0
  288. package/dist/providers/cursor/tool-continuation.js +134 -0
  289. package/dist/providers/cursor/tool-stream.d.ts +2 -0
  290. package/dist/providers/cursor/tool-stream.js +220 -0
  291. package/dist/providers/cursor/usage.d.ts +3 -0
  292. package/dist/providers/cursor/usage.js +35 -0
  293. package/dist/providers/ollama/adapter.d.ts +8 -0
  294. package/dist/providers/ollama/adapter.js +65 -0
  295. package/dist/providers/ollama/catalog-state.d.ts +17 -0
  296. package/dist/providers/ollama/catalog-state.js +40 -0
  297. package/dist/providers/ollama/cloud-catalog.d.ts +3 -0
  298. package/dist/providers/ollama/cloud-catalog.js +82 -0
  299. package/dist/providers/ollama/errors.d.ts +14 -0
  300. package/dist/providers/ollama/errors.js +19 -0
  301. package/dist/providers/ollama/generate.d.ts +2 -0
  302. package/dist/providers/ollama/generate.js +49 -0
  303. package/dist/providers/ollama/html-links.d.ts +1 -0
  304. package/dist/providers/ollama/html-links.js +30 -0
  305. package/dist/providers/ollama/http.d.ts +12 -0
  306. package/dist/providers/ollama/http.js +67 -0
  307. package/dist/providers/ollama/index.d.ts +8 -0
  308. package/dist/providers/ollama/index.js +8 -0
  309. package/dist/providers/ollama/language-model.d.ts +11 -0
  310. package/dist/providers/ollama/language-model.js +62 -0
  311. package/dist/providers/ollama/local-catalog.d.ts +3 -0
  312. package/dist/providers/ollama/local-catalog.js +38 -0
  313. package/dist/providers/ollama/ndjson.d.ts +3 -0
  314. package/dist/providers/ollama/ndjson.js +51 -0
  315. package/dist/providers/ollama/prompt.d.ts +8 -0
  316. package/dist/providers/ollama/prompt.js +141 -0
  317. package/dist/providers/ollama/protocol.d.ts +56 -0
  318. package/dist/providers/ollama/protocol.js +26 -0
  319. package/dist/providers/ollama/runtime.d.ts +11 -0
  320. package/dist/providers/ollama/runtime.js +128 -0
  321. package/dist/providers/ollama/stream.d.ts +8 -0
  322. package/dist/providers/ollama/stream.js +110 -0
  323. package/dist/sdk/command-code.d.ts +5 -0
  324. package/dist/sdk/command-code.js +6 -0
  325. package/dist/sdk/cursor.d.ts +5 -0
  326. package/dist/sdk/cursor.js +6 -0
  327. package/dist/sdk/ollama.d.ts +5 -0
  328. package/dist/sdk/ollama.js +6 -0
  329. package/dist/server.d.ts +12 -0
  330. package/dist/server.js +94 -0
  331. package/docs/README.ko.md +189 -0
  332. package/package.json +75 -0
@@ -0,0 +1,11 @@
1
+ export type RequestedModelParameter = {
2
+ readonly id: string;
3
+ readonly value: string;
4
+ };
5
+ export type RequestedModel = {
6
+ readonly modelId: string;
7
+ readonly maxMode: boolean;
8
+ readonly parameters: readonly RequestedModelParameter[];
9
+ };
10
+ export declare function decodeRequestedModel(bytes: Uint8Array): RequestedModel;
11
+ export declare function encodeRequestedModel(model: RequestedModel): Uint8Array;
@@ -0,0 +1,36 @@
1
+ // Derived from Rahularya01/pi-cursor proto/agent.proto RequestedModel. Licensed under MIT.
2
+ // See THIRD_PARTY_NOTICES.md.
3
+ import { concatBytes, decodeFieldsStrict, encodeBoolField, encodeBytesField, encodeStringField, } from "../proto-wire";
4
+ import { assertKnownFields, optionalBool, optionalString, repeatedFields } from "./fields";
5
+ function decodeParameter(bytes) {
6
+ const context = "RequestedModel.Parameter";
7
+ const fields = decodeFieldsStrict(bytes, { context });
8
+ assertKnownFields(fields, [1, 2], context);
9
+ return {
10
+ id: optionalString(fields, { context, field: 1, wire: 2 }) ?? "",
11
+ value: optionalString(fields, { context, field: 2, wire: 2 }) ?? "",
12
+ };
13
+ }
14
+ function encodeParameter(parameter) {
15
+ return concatBytes([
16
+ ...(parameter.id === "" ? [] : [encodeStringField(1, parameter.id)]),
17
+ ...(parameter.value === "" ? [] : [encodeStringField(2, parameter.value)]),
18
+ ]);
19
+ }
20
+ export function decodeRequestedModel(bytes) {
21
+ const context = "RequestedModel";
22
+ const fields = decodeFieldsStrict(bytes, { context });
23
+ assertKnownFields(fields, [1, 2, 3], context);
24
+ return {
25
+ modelId: optionalString(fields, { context, field: 1, wire: 2 }) ?? "",
26
+ maxMode: optionalBool(fields, { context, field: 2, wire: 0 }) ?? false,
27
+ parameters: repeatedFields(fields, { context, field: 3, wire: 2 }).map((entry) => decodeParameter(entry.bytes)),
28
+ };
29
+ }
30
+ export function encodeRequestedModel(model) {
31
+ return concatBytes([
32
+ ...(model.modelId === "" ? [] : [encodeStringField(1, model.modelId)]),
33
+ ...(model.maxMode ? [encodeBoolField(2, true)] : []),
34
+ ...model.parameters.map((parameter) => encodeBytesField(3, encodeParameter(parameter))),
35
+ ]);
36
+ }
@@ -0,0 +1,7 @@
1
+ export type OutputLocation = {
2
+ readonly filePath: string;
3
+ readonly sizeBytes: bigint;
4
+ readonly lineCount: bigint;
5
+ };
6
+ export declare function decodeOutputLocation(bytes: Uint8Array): OutputLocation;
7
+ export declare function encodeOutputLocation(location: OutputLocation): Uint8Array;
@@ -0,0 +1,53 @@
1
+ // Derived from Rahularya01/pi-cursor proto/agent.proto OutputLocation fields. Licensed under MIT.
2
+ // See THIRD_PARTY_NOTICES.md.
3
+ import { concatBytes, decodeFieldsStrict, encodeStringField } from "../proto-wire";
4
+ import { CursorProtocolError } from "./errors";
5
+ import { assertKnownFields, optionalField, optionalString } from "./fields";
6
+ import { encodeUnknownField } from "./unknown-field";
7
+ const UINT64_MODULUS = 1n << 64n;
8
+ const INT64_SIGN = 1n << 63n;
9
+ function decodeInt64(bytes) {
10
+ let value = 0n;
11
+ let shift = 0n;
12
+ for (const byte of bytes) {
13
+ value |= BigInt(byte & 0x7f) << shift;
14
+ shift += 7n;
15
+ }
16
+ return value >= INT64_SIGN ? value - UINT64_MODULUS : value;
17
+ }
18
+ function encodeInt64(value) {
19
+ if (value < -INT64_SIGN || value >= INT64_SIGN) {
20
+ throw new CursorProtocolError("malformed", "protobuf int64", "value is out of range");
21
+ }
22
+ const output = [];
23
+ let remaining = value < 0n ? value + UINT64_MODULUS : value;
24
+ do {
25
+ const byte = Number(remaining & 0x7fn);
26
+ remaining >>= 7n;
27
+ output.push(remaining === 0n ? byte : byte | 0x80);
28
+ } while (remaining !== 0n);
29
+ return Uint8Array.from(output);
30
+ }
31
+ export function decodeOutputLocation(bytes) {
32
+ const context = "OutputLocation";
33
+ const fields = decodeFieldsStrict(bytes, { context });
34
+ assertKnownFields(fields, [1, 2, 3], context);
35
+ const size = optionalField(fields, { context, field: 2, wire: 0 });
36
+ const lines = optionalField(fields, { context, field: 3, wire: 0 });
37
+ return {
38
+ filePath: optionalString(fields, { context, field: 1, wire: 2 }) ?? "",
39
+ sizeBytes: size === undefined ? 0n : decodeInt64(size.bytes),
40
+ lineCount: lines === undefined ? 0n : decodeInt64(lines.bytes),
41
+ };
42
+ }
43
+ export function encodeOutputLocation(location) {
44
+ return concatBytes([
45
+ ...(location.filePath === "" ? [] : [encodeStringField(1, location.filePath)]),
46
+ ...(location.sizeBytes === 0n
47
+ ? []
48
+ : [encodeUnknownField(2, 0, encodeInt64(location.sizeBytes))]),
49
+ ...(location.lineCount === 0n
50
+ ? []
51
+ : [encodeUnknownField(3, 0, encodeInt64(location.lineCount))]),
52
+ ]);
53
+ }
@@ -0,0 +1,16 @@
1
+ import { type ConversationCheckpoint } from "./checkpoint";
2
+ import type { McpToolDefinition } from "./mcp";
3
+ import { type RequestedModel } from "./model";
4
+ export type PrewarmRequest = {
5
+ readonly modelDetails?: Uint8Array;
6
+ readonly requestedModel?: RequestedModel;
7
+ readonly conversationId?: string;
8
+ readonly conversationState?: ConversationCheckpoint;
9
+ readonly mcpTools: readonly McpToolDefinition[];
10
+ readonly mcpFileSystemOptions?: Uint8Array;
11
+ readonly bestOfNGroupId?: string;
12
+ readonly tryUseBestOfNPromotion?: boolean;
13
+ readonly customSystemPrompt?: string;
14
+ };
15
+ export declare function decodePrewarmRequest(bytes: Uint8Array): PrewarmRequest;
16
+ export declare function encodePrewarmRequest(request: PrewarmRequest): Uint8Array;
@@ -0,0 +1,68 @@
1
+ // Derived from Rahularya01/pi-cursor proto/agent.proto PrewarmRequest fields. Licensed under MIT.
2
+ // See THIRD_PARTY_NOTICES.md.
3
+ import { concatBytes, decodeFieldsStrict, encodeBoolField, encodeBytesField, encodeStringField, } from "../proto-wire";
4
+ import { decodeConversationCheckpoint, encodeConversationCheckpoint, } from "./checkpoint";
5
+ import { assertKnownFields, optionalBool, optionalField, optionalString } from "./fields";
6
+ import { decodeRequestedModel, encodeRequestedModel } from "./model";
7
+ import { decodeMcpTools, encodeMcpTools } from "./run-request";
8
+ function optionalOpaque(fields, field, context) {
9
+ const value = optionalField(fields, { context, field, wire: 2 });
10
+ if (value !== undefined) {
11
+ decodeFieldsStrict(value.bytes, { context: `${context} field ${field}` });
12
+ }
13
+ return value?.bytes;
14
+ }
15
+ export function decodePrewarmRequest(bytes) {
16
+ const context = "PrewarmRequest";
17
+ const fields = decodeFieldsStrict(bytes, { context });
18
+ assertKnownFields(fields, [1, 2, 3, 4, 5, 6, 7, 8, 9], context);
19
+ const modelDetails = optionalOpaque(fields, 1, context);
20
+ const requestedModel = optionalField(fields, { context, field: 9, wire: 2 });
21
+ const conversationId = optionalString(fields, { context, field: 2, wire: 2 });
22
+ const conversationState = optionalField(fields, { context, field: 3, wire: 2 });
23
+ const mcpTools = optionalField(fields, { context, field: 4, wire: 2 });
24
+ const mcpFileSystemOptions = optionalOpaque(fields, 5, context);
25
+ const bestOfNGroupId = optionalString(fields, { context, field: 6, wire: 2 });
26
+ const tryUseBestOfNPromotion = optionalBool(fields, { context, field: 7, wire: 0 });
27
+ const customSystemPrompt = optionalString(fields, { context, field: 8, wire: 2 });
28
+ return {
29
+ ...(modelDetails === undefined ? {} : { modelDetails }),
30
+ ...(requestedModel === undefined
31
+ ? {}
32
+ : { requestedModel: decodeRequestedModel(requestedModel.bytes) }),
33
+ ...(conversationId === undefined ? {} : { conversationId }),
34
+ ...(conversationState === undefined
35
+ ? {}
36
+ : { conversationState: decodeConversationCheckpoint(conversationState.bytes) }),
37
+ mcpTools: mcpTools === undefined ? [] : decodeMcpTools(mcpTools.bytes),
38
+ ...(mcpFileSystemOptions === undefined ? {} : { mcpFileSystemOptions }),
39
+ ...(bestOfNGroupId === undefined ? {} : { bestOfNGroupId }),
40
+ ...(tryUseBestOfNPromotion === undefined ? {} : { tryUseBestOfNPromotion }),
41
+ ...(customSystemPrompt === undefined ? {} : { customSystemPrompt }),
42
+ };
43
+ }
44
+ export function encodePrewarmRequest(request) {
45
+ return concatBytes([
46
+ ...(request.modelDetails === undefined ? [] : [encodeBytesField(1, request.modelDetails)]),
47
+ ...(request.conversationId === undefined ? [] : [encodeStringField(2, request.conversationId)]),
48
+ ...(request.conversationState === undefined
49
+ ? []
50
+ : [encodeBytesField(3, encodeConversationCheckpoint(request.conversationState))]),
51
+ ...(request.mcpTools.length === 0
52
+ ? []
53
+ : [encodeBytesField(4, encodeMcpTools(request.mcpTools))]),
54
+ ...(request.mcpFileSystemOptions === undefined
55
+ ? []
56
+ : [encodeBytesField(5, request.mcpFileSystemOptions)]),
57
+ ...(request.bestOfNGroupId === undefined ? [] : [encodeStringField(6, request.bestOfNGroupId)]),
58
+ ...(request.tryUseBestOfNPromotion === undefined
59
+ ? []
60
+ : [encodeBoolField(7, request.tryUseBestOfNPromotion)]),
61
+ ...(request.customSystemPrompt === undefined
62
+ ? []
63
+ : [encodeStringField(8, request.customSystemPrompt)]),
64
+ ...(request.requestedModel === undefined
65
+ ? []
66
+ : [encodeBytesField(9, encodeRequestedModel(request.requestedModel))]),
67
+ ]);
68
+ }
@@ -0,0 +1,16 @@
1
+ import { type McpToolDefinition } from "./mcp";
2
+ export type RequestContext = {
3
+ readonly tools: readonly McpToolDefinition[];
4
+ };
5
+ export type RequestContextResult = {
6
+ readonly kind: "success";
7
+ readonly requestContext: RequestContext;
8
+ } | {
9
+ readonly kind: "error";
10
+ readonly error: string;
11
+ } | {
12
+ readonly kind: "rejected";
13
+ readonly reason: string;
14
+ };
15
+ export declare function decodeRequestContextResult(bytes: Uint8Array): RequestContextResult;
16
+ export declare function encodeRequestContextResult(result: RequestContextResult): Uint8Array;
@@ -0,0 +1,58 @@
1
+ // Derived from Rahularya01/pi-cursor proto/agent.proto request-context fields. Licensed under MIT.
2
+ // See THIRD_PARTY_NOTICES.md.
3
+ import { concatBytes, decodeFieldsStrict, encodeBytesField, encodeStringField } from "../proto-wire";
4
+ import { CursorProtocolDriftError, unreachableVariant } from "./errors";
5
+ import { assertKnownFields, oneofField, repeatedFields, requiredString } from "./fields";
6
+ import { decodeMcpToolDefinition, encodeMcpToolDefinition } from "./mcp";
7
+ function decodeRequestContext(bytes) {
8
+ const context = "RequestContext";
9
+ const fields = decodeFieldsStrict(bytes, { context });
10
+ assertKnownFields(fields, [7], context);
11
+ return {
12
+ tools: repeatedFields(fields, { context, field: 7, wire: 2 }).map((entry) => decodeMcpToolDefinition(entry.bytes)),
13
+ };
14
+ }
15
+ function encodeRequestContext(context) {
16
+ return concatBytes(context.tools.map((tool) => encodeBytesField(7, encodeMcpToolDefinition(tool))));
17
+ }
18
+ function decodeSingleString(bytes, context) {
19
+ const fields = decodeFieldsStrict(bytes, { context });
20
+ assertKnownFields(fields, [1], context);
21
+ return requiredString(fields, { context, field: 1, wire: 2 });
22
+ }
23
+ export function decodeRequestContextResult(bytes) {
24
+ const context = "RequestContextResult";
25
+ const fields = decodeFieldsStrict(bytes, { context });
26
+ assertKnownFields(fields, [1, 2, 3], context);
27
+ const result = oneofField(fields, [1, 2, 3], context);
28
+ switch (result.field) {
29
+ case 1: {
30
+ const successContext = "RequestContextSuccess";
31
+ const success = decodeFieldsStrict(result.bytes, { context: successContext });
32
+ assertKnownFields(success, [1], successContext);
33
+ const requestContext = oneofField(success, [1], successContext);
34
+ return { kind: "success", requestContext: decodeRequestContext(requestContext.bytes) };
35
+ }
36
+ case 2:
37
+ return { kind: "error", error: decodeSingleString(result.bytes, "RequestContextError") };
38
+ case 3:
39
+ return {
40
+ kind: "rejected",
41
+ reason: decodeSingleString(result.bytes, "RequestContextRejected"),
42
+ };
43
+ default:
44
+ throw new CursorProtocolDriftError(context, result.field);
45
+ }
46
+ }
47
+ export function encodeRequestContextResult(result) {
48
+ switch (result.kind) {
49
+ case "success":
50
+ return encodeBytesField(1, encodeBytesField(1, encodeRequestContext(result.requestContext)));
51
+ case "error":
52
+ return encodeBytesField(2, encodeStringField(1, result.error));
53
+ case "rejected":
54
+ return encodeBytesField(3, encodeStringField(1, result.reason));
55
+ default:
56
+ return unreachableVariant(result, "RequestContextResult");
57
+ }
58
+ }
@@ -0,0 +1,44 @@
1
+ import { type ProtoDecodeOptions } from "../proto-wire";
2
+ import { type ConversationAction } from "./context";
3
+ import { type ExecClientMessage } from "./exec";
4
+ import { type ExecClientControl } from "./exec-control";
5
+ import { type ProtoDriftMetadata } from "./fields";
6
+ import { type InteractionResponse } from "./interaction-query";
7
+ import { type KvClientMessage } from "./kv";
8
+ import { type PrewarmRequest } from "./prewarm";
9
+ import { type AgentRunRequest } from "./run-request";
10
+ export type { PrewarmRequest } from "./prewarm";
11
+ export { type AgentRunRequest, decodeAgentRunRequest, encodeAgentRunRequest } from "./run-request";
12
+ export type AgentClientMessage = ({
13
+ readonly kind: "run-request";
14
+ readonly request: AgentRunRequest;
15
+ } | {
16
+ readonly kind: "exec-client-message";
17
+ readonly message: ExecClientMessage;
18
+ } | {
19
+ readonly kind: "exec-client-control";
20
+ readonly control: ExecClientControl;
21
+ } | {
22
+ readonly kind: "kv-client-message";
23
+ readonly message: KvClientMessage;
24
+ } | {
25
+ readonly kind: "conversation-action";
26
+ readonly action: ConversationAction;
27
+ } | {
28
+ readonly kind: "interaction-response";
29
+ readonly response: InteractionResponse;
30
+ } | {
31
+ readonly kind: "client-heartbeat";
32
+ } | {
33
+ readonly kind: "prewarm-request";
34
+ readonly request: PrewarmRequest;
35
+ } | {
36
+ readonly kind: "unknown-oneof";
37
+ readonly field: number;
38
+ readonly payload: Uint8Array;
39
+ readonly drift: ProtoDriftMetadata;
40
+ }) & {
41
+ readonly drift?: ProtoDriftMetadata;
42
+ };
43
+ export declare function decodeAgentClientMessage(bytes: Uint8Array, options?: ProtoDecodeOptions): AgentClientMessage;
44
+ export declare function encodeAgentClientMessage(message: AgentClientMessage): Uint8Array;
@@ -0,0 +1,111 @@
1
+ // Derived from Rahularya01/pi-cursor proto/agent.proto AgentClientMessage. Licensed under MIT.
2
+ // See THIRD_PARTY_NOTICES.md.
3
+ import { concatBytes, decodeFieldsStrict, encodeBytesField, } from "../proto-wire";
4
+ import { decodeConversationAction, encodeConversationAction, } from "./context";
5
+ import { CursorProtocolDriftError, unreachableVariant } from "./errors";
6
+ import { decodeExecClientMessage, encodeExecClientMessage } from "./exec";
7
+ import { decodeExecClientControl, encodeExecClientControl, } from "./exec-control";
8
+ import { assertKnownFields, collectDriftMetadata, encodeDriftFields, oneofField, } from "./fields";
9
+ import { decodeInteractionResponse, encodeInteractionResponse, } from "./interaction-query";
10
+ import { decodeKvClientMessage, encodeKvClientMessage } from "./kv";
11
+ import { decodePrewarmRequest, encodePrewarmRequest } from "./prewarm";
12
+ import { decodeAgentRunRequest, encodeAgentRunRequest } from "./run-request";
13
+ export { decodeAgentRunRequest, encodeAgentRunRequest } from "./run-request";
14
+ export function decodeAgentClientMessage(bytes, options = {}) {
15
+ const context = "AgentClientMessage";
16
+ const fields = decodeFieldsStrict(bytes, { ...options, context });
17
+ const allowed = [1, 2, 3, 4, 5, 6, 7, 8];
18
+ const known = fields.filter((field) => allowed.includes(field.field));
19
+ if (known.length === 0) {
20
+ const message = oneofField(fields, fields.map((field) => field.field), context);
21
+ const drift = collectDriftMetadata(fields, allowed, true);
22
+ if (drift === undefined)
23
+ throw new CursorProtocolDriftError(context, message.field);
24
+ return { kind: "unknown-oneof", field: message.field, payload: message.bytes, drift };
25
+ }
26
+ const drift = collectDriftMetadata(fields, allowed);
27
+ const message = oneofField(fields, allowed, context);
28
+ switch (message.field) {
29
+ case 1:
30
+ return {
31
+ kind: "run-request",
32
+ request: decodeAgentRunRequest(message.bytes),
33
+ ...(drift === undefined ? {} : { drift }),
34
+ };
35
+ case 2:
36
+ return {
37
+ kind: "exec-client-message",
38
+ message: decodeExecClientMessage(message.bytes),
39
+ ...(drift === undefined ? {} : { drift }),
40
+ };
41
+ case 3:
42
+ return {
43
+ kind: "kv-client-message",
44
+ message: decodeKvClientMessage(message.bytes),
45
+ ...(drift === undefined ? {} : { drift }),
46
+ };
47
+ case 4:
48
+ return {
49
+ kind: "conversation-action",
50
+ action: decodeConversationAction(message.bytes),
51
+ ...(drift === undefined ? {} : { drift }),
52
+ };
53
+ case 5:
54
+ return {
55
+ kind: "exec-client-control",
56
+ control: decodeExecClientControl(message.bytes),
57
+ ...(drift === undefined ? {} : { drift }),
58
+ };
59
+ case 6:
60
+ return {
61
+ kind: "interaction-response",
62
+ response: decodeInteractionResponse(message.bytes),
63
+ ...(drift === undefined ? {} : { drift }),
64
+ };
65
+ case 7:
66
+ assertKnownFields(decodeFieldsStrict(message.bytes, { context: "ClientHeartbeat" }), [], "ClientHeartbeat");
67
+ return { kind: "client-heartbeat", ...(drift === undefined ? {} : { drift }) };
68
+ case 8:
69
+ return {
70
+ kind: "prewarm-request",
71
+ request: decodePrewarmRequest(message.bytes),
72
+ ...(drift === undefined ? {} : { drift }),
73
+ };
74
+ default:
75
+ throw new CursorProtocolDriftError(context, message.field);
76
+ }
77
+ }
78
+ export function encodeAgentClientMessage(message) {
79
+ let encoded;
80
+ switch (message.kind) {
81
+ case "run-request":
82
+ encoded = encodeBytesField(1, encodeAgentRunRequest(message.request));
83
+ break;
84
+ case "exec-client-message":
85
+ encoded = encodeBytesField(2, encodeExecClientMessage(message.message));
86
+ break;
87
+ case "exec-client-control":
88
+ encoded = encodeBytesField(5, encodeExecClientControl(message.control));
89
+ break;
90
+ case "kv-client-message":
91
+ encoded = encodeBytesField(3, encodeKvClientMessage(message.message));
92
+ break;
93
+ case "conversation-action":
94
+ encoded = encodeBytesField(4, encodeConversationAction(message.action));
95
+ break;
96
+ case "interaction-response":
97
+ encoded = encodeBytesField(6, encodeInteractionResponse(message.response));
98
+ break;
99
+ case "client-heartbeat":
100
+ encoded = encodeBytesField(7, new Uint8Array());
101
+ break;
102
+ case "prewarm-request":
103
+ encoded = encodeBytesField(8, encodePrewarmRequest(message.request));
104
+ break;
105
+ case "unknown-oneof":
106
+ return encodeBytesField(message.field, message.payload);
107
+ default:
108
+ return unreachableVariant(message, "AgentClientMessage");
109
+ }
110
+ return concatBytes([encoded, encodeDriftFields(message.drift)]);
111
+ }
@@ -0,0 +1,19 @@
1
+ import { type ConversationCheckpoint } from "./checkpoint";
2
+ import { type ConversationAction } from "./context";
3
+ import { type McpToolDefinition } from "./mcp";
4
+ import { type RequestedModel } from "./model";
5
+ export type AgentRunRequest = {
6
+ readonly conversationState: ConversationCheckpoint;
7
+ readonly action: ConversationAction;
8
+ readonly modelDetails?: Uint8Array;
9
+ readonly mcpTools: readonly McpToolDefinition[];
10
+ readonly conversationId?: string;
11
+ readonly mcpFileSystemOptions?: Uint8Array;
12
+ readonly skillOptions?: Uint8Array;
13
+ readonly customSystemPrompt?: string;
14
+ readonly requestedModel?: RequestedModel;
15
+ };
16
+ export declare function decodeMcpTools(bytes: Uint8Array): readonly McpToolDefinition[];
17
+ export declare function encodeMcpTools(tools: readonly McpToolDefinition[]): Uint8Array;
18
+ export declare function decodeAgentRunRequest(bytes: Uint8Array): AgentRunRequest;
19
+ export declare function encodeAgentRunRequest(request: AgentRunRequest): Uint8Array;
@@ -0,0 +1,68 @@
1
+ // Derived from Rahularya01/pi-cursor proto/agent.proto AgentRunRequest. Licensed under MIT.
2
+ // See THIRD_PARTY_NOTICES.md.
3
+ import { concatBytes, decodeFieldsStrict, encodeBytesField, encodeStringField } from "../proto-wire";
4
+ import { decodeConversationCheckpoint, encodeConversationCheckpoint, } from "./checkpoint";
5
+ import { decodeConversationAction, encodeConversationAction, } from "./context";
6
+ import { assertKnownFields, optionalField, optionalString, repeatedFields, requiredField, } from "./fields";
7
+ import { decodeMcpToolDefinition, encodeMcpToolDefinition } from "./mcp";
8
+ import { decodeRequestedModel, encodeRequestedModel } from "./model";
9
+ export function decodeMcpTools(bytes) {
10
+ const context = "McpTools";
11
+ const fields = decodeFieldsStrict(bytes, { context });
12
+ assertKnownFields(fields, [1], context);
13
+ return repeatedFields(fields, { context, field: 1, wire: 2 }).map((entry) => decodeMcpToolDefinition(entry.bytes));
14
+ }
15
+ export function encodeMcpTools(tools) {
16
+ return concatBytes(tools.map((tool) => encodeBytesField(1, encodeMcpToolDefinition(tool))));
17
+ }
18
+ function optionalOpaque(fields, field, context) {
19
+ const value = optionalField(fields, { context, field, wire: 2 });
20
+ if (value === undefined) {
21
+ return undefined;
22
+ }
23
+ decodeFieldsStrict(value.bytes, { context: `${context} field ${field}` });
24
+ return value.bytes;
25
+ }
26
+ export function decodeAgentRunRequest(bytes) {
27
+ const context = "AgentRunRequest";
28
+ const fields = decodeFieldsStrict(bytes, { context });
29
+ assertKnownFields(fields, [1, 2, 3, 4, 5, 6, 7, 8, 9], context);
30
+ const modelDetails = optionalOpaque(fields, 3, context);
31
+ const conversationId = optionalString(fields, { context, field: 5, wire: 2 });
32
+ const mcpFileSystemOptions = optionalOpaque(fields, 6, context);
33
+ const skillOptions = optionalOpaque(fields, 7, context);
34
+ const customSystemPrompt = optionalString(fields, { context, field: 8, wire: 2 });
35
+ const requestedModel = optionalField(fields, { context, field: 9, wire: 2 });
36
+ return {
37
+ conversationState: decodeConversationCheckpoint(requiredField(fields, { context, field: 1, wire: 2 }).bytes),
38
+ action: decodeConversationAction(requiredField(fields, { context, field: 2, wire: 2 }).bytes),
39
+ ...(modelDetails === undefined ? {} : { modelDetails }),
40
+ mcpTools: decodeMcpTools(requiredField(fields, { context, field: 4, wire: 2 }).bytes),
41
+ ...(conversationId === undefined ? {} : { conversationId }),
42
+ ...(mcpFileSystemOptions === undefined ? {} : { mcpFileSystemOptions }),
43
+ ...(skillOptions === undefined ? {} : { skillOptions }),
44
+ ...(customSystemPrompt === undefined ? {} : { customSystemPrompt }),
45
+ ...(requestedModel === undefined
46
+ ? {}
47
+ : { requestedModel: decodeRequestedModel(requestedModel.bytes) }),
48
+ };
49
+ }
50
+ export function encodeAgentRunRequest(request) {
51
+ return concatBytes([
52
+ encodeBytesField(1, encodeConversationCheckpoint(request.conversationState)),
53
+ encodeBytesField(2, encodeConversationAction(request.action)),
54
+ ...(request.modelDetails === undefined ? [] : [encodeBytesField(3, request.modelDetails)]),
55
+ encodeBytesField(4, encodeMcpTools(request.mcpTools)),
56
+ ...(request.conversationId === undefined ? [] : [encodeStringField(5, request.conversationId)]),
57
+ ...(request.mcpFileSystemOptions === undefined
58
+ ? []
59
+ : [encodeBytesField(6, request.mcpFileSystemOptions)]),
60
+ ...(request.skillOptions === undefined ? [] : [encodeBytesField(7, request.skillOptions)]),
61
+ ...(request.customSystemPrompt === undefined
62
+ ? []
63
+ : [encodeStringField(8, request.customSystemPrompt)]),
64
+ ...(request.requestedModel === undefined
65
+ ? []
66
+ : [encodeBytesField(9, encodeRequestedModel(request.requestedModel))]),
67
+ ]);
68
+ }
@@ -0,0 +1,35 @@
1
+ import { type ProtoDecodeOptions } from "../proto-wire";
2
+ import { type ConversationCheckpoint } from "./checkpoint";
3
+ import { type ExecServerMessage } from "./exec";
4
+ import { type ExecServerControl } from "./exec-control";
5
+ import { type ProtoDriftMetadata } from "./fields";
6
+ import { type InteractionQuery, type InteractionUpdate } from "./interaction";
7
+ import { type KvServerMessage } from "./kv";
8
+ export type AgentServerMessage = ({
9
+ readonly kind: "interaction-update";
10
+ readonly update: InteractionUpdate;
11
+ } | {
12
+ readonly kind: "exec-server-message";
13
+ readonly message: ExecServerMessage;
14
+ } | {
15
+ readonly kind: "exec-server-control";
16
+ readonly control: ExecServerControl;
17
+ } | {
18
+ readonly kind: "conversation-checkpoint-update";
19
+ readonly checkpoint: ConversationCheckpoint;
20
+ } | {
21
+ readonly kind: "kv-server-message";
22
+ readonly message: KvServerMessage;
23
+ } | {
24
+ readonly kind: "interaction-query";
25
+ readonly query: InteractionQuery;
26
+ } | {
27
+ readonly kind: "unknown-oneof";
28
+ readonly field: number;
29
+ readonly payload: Uint8Array;
30
+ readonly drift: ProtoDriftMetadata;
31
+ }) & {
32
+ readonly drift?: ProtoDriftMetadata;
33
+ };
34
+ export declare function decodeAgentServerMessage(bytes: Uint8Array, options?: ProtoDecodeOptions): AgentServerMessage;
35
+ export declare function encodeAgentServerMessage(message: AgentServerMessage): Uint8Array;
@@ -0,0 +1,93 @@
1
+ // Derived from Rahularya01/pi-cursor proto/agent.proto AgentServerMessage. Licensed under MIT.
2
+ // See THIRD_PARTY_NOTICES.md.
3
+ import { concatBytes, decodeFieldsStrict, encodeBytesField, } from "../proto-wire";
4
+ import { decodeConversationCheckpoint, encodeConversationCheckpoint, } from "./checkpoint";
5
+ import { CursorProtocolDriftError, unreachableVariant } from "./errors";
6
+ import { decodeExecServerMessage, encodeExecServerMessage } from "./exec";
7
+ import { decodeExecServerControl, encodeExecServerControl, } from "./exec-control";
8
+ import { collectDriftMetadata, encodeDriftFields, oneofField, } from "./fields";
9
+ import { decodeInteractionQuery, decodeInteractionUpdate, encodeInteractionQuery, encodeInteractionUpdate, } from "./interaction";
10
+ import { decodeKvServerMessage, encodeKvServerMessage } from "./kv";
11
+ export function decodeAgentServerMessage(bytes, options = {}) {
12
+ const context = "AgentServerMessage";
13
+ const fields = decodeFieldsStrict(bytes, { ...options, context });
14
+ const allowed = [1, 2, 3, 4, 5, 7];
15
+ const known = fields.filter((field) => allowed.includes(field.field));
16
+ if (known.length === 0) {
17
+ const message = oneofField(fields, fields.map((field) => field.field), context);
18
+ const drift = collectDriftMetadata(fields, allowed, true);
19
+ if (drift === undefined)
20
+ throw new CursorProtocolDriftError(context, message.field);
21
+ return { kind: "unknown-oneof", field: message.field, payload: message.bytes, drift };
22
+ }
23
+ const message = oneofField(fields, allowed, context);
24
+ const drift = collectDriftMetadata(fields, allowed);
25
+ switch (message.field) {
26
+ case 1:
27
+ return {
28
+ kind: "interaction-update",
29
+ update: decodeInteractionUpdate(message.bytes),
30
+ ...(drift === undefined ? {} : { drift }),
31
+ };
32
+ case 2:
33
+ return {
34
+ kind: "exec-server-message",
35
+ message: decodeExecServerMessage(message.bytes),
36
+ ...(drift === undefined ? {} : { drift }),
37
+ };
38
+ case 3:
39
+ return {
40
+ kind: "conversation-checkpoint-update",
41
+ checkpoint: decodeConversationCheckpoint(message.bytes),
42
+ ...(drift === undefined ? {} : { drift }),
43
+ };
44
+ case 4:
45
+ return {
46
+ kind: "kv-server-message",
47
+ message: decodeKvServerMessage(message.bytes),
48
+ ...(drift === undefined ? {} : { drift }),
49
+ };
50
+ case 5:
51
+ return {
52
+ kind: "exec-server-control",
53
+ control: decodeExecServerControl(message.bytes),
54
+ ...(drift === undefined ? {} : { drift }),
55
+ };
56
+ case 7:
57
+ return {
58
+ kind: "interaction-query",
59
+ query: decodeInteractionQuery(message.bytes),
60
+ ...(drift === undefined ? {} : { drift }),
61
+ };
62
+ default:
63
+ throw new CursorProtocolDriftError(context, message.field);
64
+ }
65
+ }
66
+ export function encodeAgentServerMessage(message) {
67
+ let encoded;
68
+ switch (message.kind) {
69
+ case "interaction-update":
70
+ encoded = encodeBytesField(1, encodeInteractionUpdate(message.update));
71
+ break;
72
+ case "exec-server-message":
73
+ encoded = encodeBytesField(2, encodeExecServerMessage(message.message));
74
+ break;
75
+ case "conversation-checkpoint-update":
76
+ encoded = encodeBytesField(3, encodeConversationCheckpoint(message.checkpoint));
77
+ break;
78
+ case "kv-server-message":
79
+ encoded = encodeBytesField(4, encodeKvServerMessage(message.message));
80
+ break;
81
+ case "exec-server-control":
82
+ encoded = encodeBytesField(5, encodeExecServerControl(message.control));
83
+ break;
84
+ case "interaction-query":
85
+ encoded = encodeBytesField(7, encodeInteractionQuery(message.query));
86
+ break;
87
+ case "unknown-oneof":
88
+ return encodeBytesField(message.field, message.payload);
89
+ default:
90
+ return unreachableVariant(message, "AgentServerMessage");
91
+ }
92
+ return concatBytes([encoded, encodeDriftFields(message.drift)]);
93
+ }
@@ -0,0 +1 @@
1
+ export declare function encodeUnknownField(field: number, wire: number, bytes: Uint8Array): Uint8Array;