@greppleai/grip 0.0.0-stage → 0.1.3

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 (1119) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +731 -2
  3. package/dist/bun/cli.d.ts +3 -0
  4. package/dist/bun/cli.d.ts.map +1 -0
  5. package/dist/bun/cli.js +13 -0
  6. package/dist/bun/cli.js.map +1 -0
  7. package/dist/bun/embedded-assets.d.ts +3 -0
  8. package/dist/bun/embedded-assets.d.ts.map +1 -0
  9. package/dist/bun/embedded-assets.js +52 -0
  10. package/dist/bun/embedded-assets.js.map +1 -0
  11. package/dist/bun/register-bedrock.d.ts +2 -0
  12. package/dist/bun/register-bedrock.d.ts.map +1 -0
  13. package/dist/bun/register-bedrock.js +4 -0
  14. package/dist/bun/register-bedrock.js.map +1 -0
  15. package/dist/bun/restore-sandbox-env.d.ts +13 -0
  16. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  17. package/dist/bun/restore-sandbox-env.js +32 -0
  18. package/dist/bun/restore-sandbox-env.js.map +1 -0
  19. package/dist/cli/args.d.ts +70 -0
  20. package/dist/cli/args.d.ts.map +1 -0
  21. package/dist/cli/args.js +442 -0
  22. package/dist/cli/args.js.map +1 -0
  23. package/dist/cli/config-selector.d.ts +14 -0
  24. package/dist/cli/config-selector.d.ts.map +1 -0
  25. package/dist/cli/config-selector.js +31 -0
  26. package/dist/cli/config-selector.js.map +1 -0
  27. package/dist/cli/file-processor.d.ts +15 -0
  28. package/dist/cli/file-processor.d.ts.map +1 -0
  29. package/dist/cli/file-processor.js +60 -0
  30. package/dist/cli/file-processor.js.map +1 -0
  31. package/dist/cli/initial-message.d.ts +18 -0
  32. package/dist/cli/initial-message.d.ts.map +1 -0
  33. package/dist/cli/initial-message.js +22 -0
  34. package/dist/cli/initial-message.js.map +1 -0
  35. package/dist/cli/list-models.d.ts +9 -0
  36. package/dist/cli/list-models.d.ts.map +1 -0
  37. package/dist/cli/list-models.js +98 -0
  38. package/dist/cli/list-models.js.map +1 -0
  39. package/dist/cli/session-picker.d.ts +9 -0
  40. package/dist/cli/session-picker.d.ts.map +1 -0
  41. package/dist/cli/session-picker.js +35 -0
  42. package/dist/cli/session-picker.js.map +1 -0
  43. package/dist/cli.d.ts +3 -0
  44. package/dist/cli.d.ts.map +1 -0
  45. package/dist/cli.js +14 -0
  46. package/dist/cli.js.map +1 -0
  47. package/dist/config.d.ts +82 -0
  48. package/dist/config.d.ts.map +1 -0
  49. package/dist/config.js +406 -0
  50. package/dist/config.js.map +1 -0
  51. package/dist/core/agent-session.d.ts +970 -0
  52. package/dist/core/agent-session.d.ts.map +1 -0
  53. package/dist/core/agent-session.js +5191 -0
  54. package/dist/core/agent-session.js.map +1 -0
  55. package/dist/core/auth-guidance.d.ts +5 -0
  56. package/dist/core/auth-guidance.d.ts.map +1 -0
  57. package/dist/core/auth-guidance.js +21 -0
  58. package/dist/core/auth-guidance.js.map +1 -0
  59. package/dist/core/auth-storage.d.ts +150 -0
  60. package/dist/core/auth-storage.d.ts.map +1 -0
  61. package/dist/core/auth-storage.js +557 -0
  62. package/dist/core/auth-storage.js.map +1 -0
  63. package/dist/core/bash-executor.d.ts +26 -0
  64. package/dist/core/bash-executor.d.ts.map +1 -0
  65. package/dist/core/bash-executor.js +99 -0
  66. package/dist/core/bash-executor.js.map +1 -0
  67. package/dist/core/compaction/branch-summarization.d.ts +83 -0
  68. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  69. package/dist/core/compaction/branch-summarization.js +220 -0
  70. package/dist/core/compaction/branch-summarization.js.map +1 -0
  71. package/dist/core/compaction/compaction.d.ts +65 -0
  72. package/dist/core/compaction/compaction.d.ts.map +1 -0
  73. package/dist/core/compaction/compaction.js +550 -0
  74. package/dist/core/compaction/compaction.js.map +1 -0
  75. package/dist/core/compaction/compression-detection-ledger.d.ts +34 -0
  76. package/dist/core/compaction/compression-detection-ledger.d.ts.map +1 -0
  77. package/dist/core/compaction/compression-detection-ledger.js +52 -0
  78. package/dist/core/compaction/compression-detection-ledger.js.map +1 -0
  79. package/dist/core/compaction/compression-detector.d.ts +71 -0
  80. package/dist/core/compaction/compression-detector.d.ts.map +1 -0
  81. package/dist/core/compaction/compression-detector.js +407 -0
  82. package/dist/core/compaction/compression-detector.js.map +1 -0
  83. package/dist/core/compaction/compression-economics.d.ts +55 -0
  84. package/dist/core/compaction/compression-economics.d.ts.map +1 -0
  85. package/dist/core/compaction/compression-economics.js +151 -0
  86. package/dist/core/compaction/compression-economics.js.map +1 -0
  87. package/dist/core/compaction/utils.d.ts +28 -0
  88. package/dist/core/compaction/utils.d.ts.map +1 -0
  89. package/dist/core/compaction/utils.js +165 -0
  90. package/dist/core/compaction/utils.js.map +1 -0
  91. package/dist/core/defaults.d.ts +3 -0
  92. package/dist/core/defaults.d.ts.map +1 -0
  93. package/dist/core/defaults.js +2 -0
  94. package/dist/core/defaults.js.map +1 -0
  95. package/dist/core/diagnostics.d.ts +18 -0
  96. package/dist/core/diagnostics.d.ts.map +1 -0
  97. package/dist/core/diagnostics.js +2 -0
  98. package/dist/core/diagnostics.js.map +1 -0
  99. package/dist/core/event-bus.d.ts +9 -0
  100. package/dist/core/event-bus.d.ts.map +1 -0
  101. package/dist/core/event-bus.js +25 -0
  102. package/dist/core/event-bus.js.map +1 -0
  103. package/dist/core/exec.d.ts +29 -0
  104. package/dist/core/exec.d.ts.map +1 -0
  105. package/dist/core/exec.js +75 -0
  106. package/dist/core/exec.js.map +1 -0
  107. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  108. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  109. package/dist/core/export-html/ansi-to-html.js +245 -0
  110. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  111. package/dist/core/export-html/index.d.ts +21 -0
  112. package/dist/core/export-html/index.d.ts.map +1 -0
  113. package/dist/core/export-html/index.js +230 -0
  114. package/dist/core/export-html/index.js.map +1 -0
  115. package/dist/core/export-html/template.css +1066 -0
  116. package/dist/core/export-html/template.html +55 -0
  117. package/dist/core/export-html/template.js +1864 -0
  118. package/dist/core/export-html/tool-renderer.d.ts +32 -0
  119. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  120. package/dist/core/export-html/tool-renderer.js +108 -0
  121. package/dist/core/export-html/tool-renderer.js.map +1 -0
  122. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  123. package/dist/core/export-html/vendor/marked.min.js +78 -0
  124. package/dist/core/extensions/loader.d.ts +24 -0
  125. package/dist/core/extensions/loader.d.ts.map +1 -0
  126. package/dist/core/extensions/loader.js +613 -0
  127. package/dist/core/extensions/loader.js.map +1 -0
  128. package/dist/core/extensions/runner.d.ts +160 -0
  129. package/dist/core/extensions/runner.d.ts.map +1 -0
  130. package/dist/core/extensions/runner.js +962 -0
  131. package/dist/core/extensions/runner.js.map +1 -0
  132. package/dist/core/extensions/types.d.ts +1311 -0
  133. package/dist/core/extensions/types.d.ts.map +1 -0
  134. package/dist/core/extensions/types.js +51 -0
  135. package/dist/core/extensions/types.js.map +1 -0
  136. package/dist/core/extensions/wrapper.d.ts +20 -0
  137. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  138. package/dist/core/extensions/wrapper.js +22 -0
  139. package/dist/core/extensions/wrapper.js.map +1 -0
  140. package/dist/core/footer-data-provider.d.ts +52 -0
  141. package/dist/core/footer-data-provider.d.ts.map +1 -0
  142. package/dist/core/footer-data-provider.js +318 -0
  143. package/dist/core/footer-data-provider.js.map +1 -0
  144. package/dist/core/grip-agent.d.ts +240 -0
  145. package/dist/core/grip-agent.d.ts.map +1 -0
  146. package/dist/core/grip-agent.js +1243 -0
  147. package/dist/core/grip-agent.js.map +1 -0
  148. package/dist/core/grip-manifest.d.ts +9 -0
  149. package/dist/core/grip-manifest.d.ts.map +1 -0
  150. package/dist/core/grip-manifest.js +25 -0
  151. package/dist/core/grip-manifest.js.map +1 -0
  152. package/dist/core/hooks/aggregate.d.ts +5 -0
  153. package/dist/core/hooks/aggregate.d.ts.map +1 -0
  154. package/dist/core/hooks/aggregate.js +226 -0
  155. package/dist/core/hooks/aggregate.js.map +1 -0
  156. package/dist/core/hooks/config.d.ts +14 -0
  157. package/dist/core/hooks/config.d.ts.map +1 -0
  158. package/dist/core/hooks/config.js +372 -0
  159. package/dist/core/hooks/config.js.map +1 -0
  160. package/dist/core/hooks/executor.d.ts +12 -0
  161. package/dist/core/hooks/executor.d.ts.map +1 -0
  162. package/dist/core/hooks/executor.js +708 -0
  163. package/dist/core/hooks/executor.js.map +1 -0
  164. package/dist/core/hooks/index.d.ts +9 -0
  165. package/dist/core/hooks/index.d.ts.map +1 -0
  166. package/dist/core/hooks/index.js +14 -0
  167. package/dist/core/hooks/index.js.map +1 -0
  168. package/dist/core/hooks/matcher.d.ts +10 -0
  169. package/dist/core/hooks/matcher.d.ts.map +1 -0
  170. package/dist/core/hooks/matcher.js +70 -0
  171. package/dist/core/hooks/matcher.js.map +1 -0
  172. package/dist/core/hooks/trust-store.d.ts +38 -0
  173. package/dist/core/hooks/trust-store.d.ts.map +1 -0
  174. package/dist/core/hooks/trust-store.js +167 -0
  175. package/dist/core/hooks/trust-store.js.map +1 -0
  176. package/dist/core/hooks/types.d.ts +234 -0
  177. package/dist/core/hooks/types.d.ts.map +1 -0
  178. package/dist/core/hooks/types.js +52 -0
  179. package/dist/core/hooks/types.js.map +1 -0
  180. package/dist/core/http-dispatcher.d.ts +21 -0
  181. package/dist/core/http-dispatcher.d.ts.map +1 -0
  182. package/dist/core/http-dispatcher.js +82 -0
  183. package/dist/core/http-dispatcher.js.map +1 -0
  184. package/dist/core/instruction-resource-loader.d.ts +81 -0
  185. package/dist/core/instruction-resource-loader.d.ts.map +1 -0
  186. package/dist/core/instruction-resource-loader.js +574 -0
  187. package/dist/core/instruction-resource-loader.js.map +1 -0
  188. package/dist/core/keybindings.d.ts +399 -0
  189. package/dist/core/keybindings.d.ts.map +1 -0
  190. package/dist/core/keybindings.js +299 -0
  191. package/dist/core/keybindings.js.map +1 -0
  192. package/dist/core/lsp/abort.d.ts +3 -0
  193. package/dist/core/lsp/abort.d.ts.map +1 -0
  194. package/dist/core/lsp/abort.js +28 -0
  195. package/dist/core/lsp/abort.js.map +1 -0
  196. package/dist/core/lsp/client.d.ts +108 -0
  197. package/dist/core/lsp/client.d.ts.map +1 -0
  198. package/dist/core/lsp/client.js +586 -0
  199. package/dist/core/lsp/client.js.map +1 -0
  200. package/dist/core/lsp/config-loader.d.ts +44 -0
  201. package/dist/core/lsp/config-loader.d.ts.map +1 -0
  202. package/dist/core/lsp/config-loader.js +223 -0
  203. package/dist/core/lsp/config-loader.js.map +1 -0
  204. package/dist/core/lsp/config.d.ts +134 -0
  205. package/dist/core/lsp/config.d.ts.map +1 -0
  206. package/dist/core/lsp/config.js +682 -0
  207. package/dist/core/lsp/config.js.map +1 -0
  208. package/dist/core/lsp/diagnostics.d.ts +18 -0
  209. package/dist/core/lsp/diagnostics.d.ts.map +1 -0
  210. package/dist/core/lsp/diagnostics.js +311 -0
  211. package/dist/core/lsp/diagnostics.js.map +1 -0
  212. package/dist/core/lsp/file-sync.d.ts +58 -0
  213. package/dist/core/lsp/file-sync.d.ts.map +1 -0
  214. package/dist/core/lsp/file-sync.js +432 -0
  215. package/dist/core/lsp/file-sync.js.map +1 -0
  216. package/dist/core/lsp/integration.d.ts +62 -0
  217. package/dist/core/lsp/integration.d.ts.map +1 -0
  218. package/dist/core/lsp/integration.js +145 -0
  219. package/dist/core/lsp/integration.js.map +1 -0
  220. package/dist/core/lsp/language-map.d.ts +54 -0
  221. package/dist/core/lsp/language-map.d.ts.map +1 -0
  222. package/dist/core/lsp/language-map.js +300 -0
  223. package/dist/core/lsp/language-map.js.map +1 -0
  224. package/dist/core/lsp/manager.d.ts +120 -0
  225. package/dist/core/lsp/manager.d.ts.map +1 -0
  226. package/dist/core/lsp/manager.js +636 -0
  227. package/dist/core/lsp/manager.js.map +1 -0
  228. package/dist/core/lsp/navigation.d.ts +32 -0
  229. package/dist/core/lsp/navigation.d.ts.map +1 -0
  230. package/dist/core/lsp/navigation.js +327 -0
  231. package/dist/core/lsp/navigation.js.map +1 -0
  232. package/dist/core/lsp/portable-path.d.ts +18 -0
  233. package/dist/core/lsp/portable-path.d.ts.map +1 -0
  234. package/dist/core/lsp/portable-path.js +83 -0
  235. package/dist/core/lsp/portable-path.js.map +1 -0
  236. package/dist/core/lsp/refactor.d.ts +32 -0
  237. package/dist/core/lsp/refactor.d.ts.map +1 -0
  238. package/dist/core/lsp/refactor.js +519 -0
  239. package/dist/core/lsp/refactor.js.map +1 -0
  240. package/dist/core/lsp/transport.d.ts +39 -0
  241. package/dist/core/lsp/transport.d.ts.map +1 -0
  242. package/dist/core/lsp/transport.js +261 -0
  243. package/dist/core/lsp/transport.js.map +1 -0
  244. package/dist/core/messages.d.ts +34 -0
  245. package/dist/core/messages.d.ts.map +1 -0
  246. package/dist/core/messages.js +140 -0
  247. package/dist/core/messages.js.map +1 -0
  248. package/dist/core/model-registry.d.ts +148 -0
  249. package/dist/core/model-registry.d.ts.map +1 -0
  250. package/dist/core/model-registry.js +812 -0
  251. package/dist/core/model-registry.js.map +1 -0
  252. package/dist/core/model-resolver.d.ts +115 -0
  253. package/dist/core/model-resolver.d.ts.map +1 -0
  254. package/dist/core/model-resolver.js +498 -0
  255. package/dist/core/model-resolver.js.map +1 -0
  256. package/dist/core/output-guard.d.ts +7 -0
  257. package/dist/core/output-guard.d.ts.map +1 -0
  258. package/dist/core/output-guard.js +89 -0
  259. package/dist/core/output-guard.js.map +1 -0
  260. package/dist/core/package-manager.d.ts +209 -0
  261. package/dist/core/package-manager.d.ts.map +1 -0
  262. package/dist/core/package-manager.js +2341 -0
  263. package/dist/core/package-manager.js.map +1 -0
  264. package/dist/core/prompt-templates.d.ts +57 -0
  265. package/dist/core/prompt-templates.d.ts.map +1 -0
  266. package/dist/core/prompt-templates.js +353 -0
  267. package/dist/core/prompt-templates.js.map +1 -0
  268. package/dist/core/provider-display-names.d.ts +2 -0
  269. package/dist/core/provider-display-names.d.ts.map +1 -0
  270. package/dist/core/provider-display-names.js +33 -0
  271. package/dist/core/provider-display-names.js.map +1 -0
  272. package/dist/core/remote-workspace-protocol/contract.d.ts +465 -0
  273. package/dist/core/remote-workspace-protocol/contract.d.ts.map +1 -0
  274. package/dist/core/remote-workspace-protocol/contract.js +825 -0
  275. package/dist/core/remote-workspace-protocol/contract.js.map +1 -0
  276. package/dist/core/remote-workspace-protocol/guest-shared-client.d.ts +16 -0
  277. package/dist/core/remote-workspace-protocol/guest-shared-client.d.ts.map +1 -0
  278. package/dist/core/remote-workspace-protocol/guest-shared-client.js +54 -0
  279. package/dist/core/remote-workspace-protocol/guest-shared-client.js.map +1 -0
  280. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.d.ts +23 -0
  281. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.d.ts.map +1 -0
  282. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js +112 -0
  283. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js.map +1 -0
  284. package/dist/core/remote-workspace-protocol/guest-shared-uplink.d.ts +30 -0
  285. package/dist/core/remote-workspace-protocol/guest-shared-uplink.d.ts.map +1 -0
  286. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js +243 -0
  287. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js.map +1 -0
  288. package/dist/core/remote-workspace-protocol/lima-owner-directory.d.ts +3 -0
  289. package/dist/core/remote-workspace-protocol/lima-owner-directory.d.ts.map +1 -0
  290. package/dist/core/remote-workspace-protocol/lima-owner-directory.js +31 -0
  291. package/dist/core/remote-workspace-protocol/lima-owner-directory.js.map +1 -0
  292. package/dist/core/remote-workspace-protocol/lima-owner-lock.d.ts +9 -0
  293. package/dist/core/remote-workspace-protocol/lima-owner-lock.d.ts.map +1 -0
  294. package/dist/core/remote-workspace-protocol/lima-owner-lock.js +89 -0
  295. package/dist/core/remote-workspace-protocol/lima-owner-lock.js.map +1 -0
  296. package/dist/core/remote-workspace-protocol/session.d.ts +249 -0
  297. package/dist/core/remote-workspace-protocol/session.d.ts.map +1 -0
  298. package/dist/core/remote-workspace-protocol/session.js +1842 -0
  299. package/dist/core/remote-workspace-protocol/session.js.map +1 -0
  300. package/dist/core/remote-workspace-protocol/shared-transport.d.ts +71 -0
  301. package/dist/core/remote-workspace-protocol/shared-transport.d.ts.map +1 -0
  302. package/dist/core/remote-workspace-protocol/shared-transport.js +68 -0
  303. package/dist/core/remote-workspace-protocol/shared-transport.js.map +1 -0
  304. package/dist/core/resolve-config-value.d.ts +32 -0
  305. package/dist/core/resolve-config-value.d.ts.map +1 -0
  306. package/dist/core/resolve-config-value.js +257 -0
  307. package/dist/core/resolve-config-value.js.map +1 -0
  308. package/dist/core/resource-loader.d.ts +200 -0
  309. package/dist/core/resource-loader.d.ts.map +1 -0
  310. package/dist/core/resource-loader.js +1209 -0
  311. package/dist/core/resource-loader.js.map +1 -0
  312. package/dist/core/rules.d.ts +40 -0
  313. package/dist/core/rules.d.ts.map +1 -0
  314. package/dist/core/rules.js +57 -0
  315. package/dist/core/rules.js.map +1 -0
  316. package/dist/core/sandbox/command.d.ts +25 -0
  317. package/dist/core/sandbox/command.d.ts.map +1 -0
  318. package/dist/core/sandbox/command.js +102 -0
  319. package/dist/core/sandbox/command.js.map +1 -0
  320. package/dist/core/sandbox/config.d.ts +91 -0
  321. package/dist/core/sandbox/config.d.ts.map +1 -0
  322. package/dist/core/sandbox/config.js +88 -0
  323. package/dist/core/sandbox/config.js.map +1 -0
  324. package/dist/core/sandbox/lima-guest-binary.d.ts +11 -0
  325. package/dist/core/sandbox/lima-guest-binary.d.ts.map +1 -0
  326. package/dist/core/sandbox/lima-guest-binary.js +140 -0
  327. package/dist/core/sandbox/lima-guest-binary.js.map +1 -0
  328. package/dist/core/sandbox/lima.d.ts +57 -0
  329. package/dist/core/sandbox/lima.d.ts.map +1 -0
  330. package/dist/core/sandbox/lima.js +716 -0
  331. package/dist/core/sandbox/lima.js.map +1 -0
  332. package/dist/core/sandbox/shared-lima-roots.d.ts +11 -0
  333. package/dist/core/sandbox/shared-lima-roots.d.ts.map +1 -0
  334. package/dist/core/sandbox/shared-lima-roots.js +25 -0
  335. package/dist/core/sandbox/shared-lima-roots.js.map +1 -0
  336. package/dist/core/sandbox/update-shared-guest-binary.d.ts +8 -0
  337. package/dist/core/sandbox/update-shared-guest-binary.d.ts.map +1 -0
  338. package/dist/core/sandbox/update-shared-guest-binary.js +100 -0
  339. package/dist/core/sandbox/update-shared-guest-binary.js.map +1 -0
  340. package/dist/core/session/constants.d.ts +2 -0
  341. package/dist/core/session/constants.d.ts.map +1 -0
  342. package/dist/core/session/constants.js +2 -0
  343. package/dist/core/session/constants.js.map +1 -0
  344. package/dist/core/session/context-metadata.d.ts +5 -0
  345. package/dist/core/session/context-metadata.d.ts.map +1 -0
  346. package/dist/core/session/context-metadata.js +55 -0
  347. package/dist/core/session/context-metadata.js.map +1 -0
  348. package/dist/core/session/context.d.ts +14 -0
  349. package/dist/core/session/context.d.ts.map +1 -0
  350. package/dist/core/session/context.js +117 -0
  351. package/dist/core/session/context.js.map +1 -0
  352. package/dist/core/session/ids.d.ts +9 -0
  353. package/dist/core/session/ids.d.ts.map +1 -0
  354. package/dist/core/session/ids.js +21 -0
  355. package/dist/core/session/ids.js.map +1 -0
  356. package/dist/core/session/in-memory-session-manager.d.ts +17 -0
  357. package/dist/core/session/in-memory-session-manager.d.ts.map +1 -0
  358. package/dist/core/session/in-memory-session-manager.js +40 -0
  359. package/dist/core/session/in-memory-session-manager.js.map +1 -0
  360. package/dist/core/session/in-memory-session.d.ts +7 -0
  361. package/dist/core/session/in-memory-session.d.ts.map +1 -0
  362. package/dist/core/session/in-memory-session.js +11 -0
  363. package/dist/core/session/in-memory-session.js.map +1 -0
  364. package/dist/core/session/jsonl-errors.d.ts +36 -0
  365. package/dist/core/session/jsonl-errors.d.ts.map +1 -0
  366. package/dist/core/session/jsonl-errors.js +49 -0
  367. package/dist/core/session/jsonl-errors.js.map +1 -0
  368. package/dist/core/session/jsonl-helpers.d.ts +20 -0
  369. package/dist/core/session/jsonl-helpers.d.ts.map +1 -0
  370. package/dist/core/session/jsonl-helpers.js +21 -0
  371. package/dist/core/session/jsonl-helpers.js.map +1 -0
  372. package/dist/core/session/local-session-manager.d.ts +30 -0
  373. package/dist/core/session/local-session-manager.d.ts.map +1 -0
  374. package/dist/core/session/local-session-manager.js +205 -0
  375. package/dist/core/session/local-session-manager.js.map +1 -0
  376. package/dist/core/session/local-session.d.ts +9 -0
  377. package/dist/core/session/local-session.d.ts.map +1 -0
  378. package/dist/core/session/local-session.js +15 -0
  379. package/dist/core/session/local-session.js.map +1 -0
  380. package/dist/core/session/migrations.d.ts +11 -0
  381. package/dist/core/session/migrations.d.ts.map +1 -0
  382. package/dist/core/session/migrations.js +78 -0
  383. package/dist/core/session/migrations.js.map +1 -0
  384. package/dist/core/session/remote-session-client.d.ts +83 -0
  385. package/dist/core/session/remote-session-client.d.ts.map +1 -0
  386. package/dist/core/session/remote-session-client.js +224 -0
  387. package/dist/core/session/remote-session-client.js.map +1 -0
  388. package/dist/core/session/remote-session-manager.d.ts +32 -0
  389. package/dist/core/session/remote-session-manager.d.ts.map +1 -0
  390. package/dist/core/session/remote-session-manager.js +124 -0
  391. package/dist/core/session/remote-session-manager.js.map +1 -0
  392. package/dist/core/session/remote-session.d.ts +20 -0
  393. package/dist/core/session/remote-session.d.ts.map +1 -0
  394. package/dist/core/session/remote-session.js +33 -0
  395. package/dist/core/session/remote-session.js.map +1 -0
  396. package/dist/core/session/session-manager.d.ts +18 -0
  397. package/dist/core/session/session-manager.d.ts.map +1 -0
  398. package/dist/core/session/session-manager.js +2 -0
  399. package/dist/core/session/session-manager.js.map +1 -0
  400. package/dist/core/session/session.d.ts +140 -0
  401. package/dist/core/session/session.d.ts.map +1 -0
  402. package/dist/core/session/session.js +461 -0
  403. package/dist/core/session/session.js.map +1 -0
  404. package/dist/core/session/stores/in-memory-session-store.d.ts +39 -0
  405. package/dist/core/session/stores/in-memory-session-store.d.ts.map +1 -0
  406. package/dist/core/session/stores/in-memory-session-store.js +168 -0
  407. package/dist/core/session/stores/in-memory-session-store.js.map +1 -0
  408. package/dist/core/session/stores/jsonl-session-store.d.ts +97 -0
  409. package/dist/core/session/stores/jsonl-session-store.d.ts.map +1 -0
  410. package/dist/core/session/stores/jsonl-session-store.js +1140 -0
  411. package/dist/core/session/stores/jsonl-session-store.js.map +1 -0
  412. package/dist/core/session/stores/remote-session-store.d.ts +44 -0
  413. package/dist/core/session/stores/remote-session-store.d.ts.map +1 -0
  414. package/dist/core/session/stores/remote-session-store.js +159 -0
  415. package/dist/core/session/stores/remote-session-store.js.map +1 -0
  416. package/dist/core/session/stores/session-store.d.ts +42 -0
  417. package/dist/core/session/stores/session-store.d.ts.map +1 -0
  418. package/dist/core/session/stores/session-store.js +2 -0
  419. package/dist/core/session/stores/session-store.js.map +1 -0
  420. package/dist/core/session/types.d.ts +141 -0
  421. package/dist/core/session/types.d.ts.map +1 -0
  422. package/dist/core/session/types.js +2 -0
  423. package/dist/core/session/types.js.map +1 -0
  424. package/dist/core/session/usage-ledger.d.ts +18 -0
  425. package/dist/core/session/usage-ledger.d.ts.map +1 -0
  426. package/dist/core/session/usage-ledger.js +68 -0
  427. package/dist/core/session/usage-ledger.js.map +1 -0
  428. package/dist/core/session-cwd.d.ts +19 -0
  429. package/dist/core/session-cwd.d.ts.map +1 -0
  430. package/dist/core/session-cwd.js +38 -0
  431. package/dist/core/session-cwd.js.map +1 -0
  432. package/dist/core/settings-manager.d.ts +314 -0
  433. package/dist/core/settings-manager.d.ts.map +1 -0
  434. package/dist/core/settings-manager.js +991 -0
  435. package/dist/core/settings-manager.js.map +1 -0
  436. package/dist/core/skills.d.ts +40 -0
  437. package/dist/core/skills.d.ts.map +1 -0
  438. package/dist/core/skills.js +57 -0
  439. package/dist/core/skills.js.map +1 -0
  440. package/dist/core/slash-commands.d.ts +15 -0
  441. package/dist/core/slash-commands.d.ts.map +1 -0
  442. package/dist/core/slash-commands.js +36 -0
  443. package/dist/core/slash-commands.js.map +1 -0
  444. package/dist/core/source-info.d.ts +26 -0
  445. package/dist/core/source-info.d.ts.map +1 -0
  446. package/dist/core/source-info.js +27 -0
  447. package/dist/core/source-info.js.map +1 -0
  448. package/dist/core/system-prompt.d.ts +32 -0
  449. package/dist/core/system-prompt.d.ts.map +1 -0
  450. package/dist/core/system-prompt.js +131 -0
  451. package/dist/core/system-prompt.js.map +1 -0
  452. package/dist/core/telemetry.d.ts +3 -0
  453. package/dist/core/telemetry.d.ts.map +1 -0
  454. package/dist/core/telemetry.js +9 -0
  455. package/dist/core/telemetry.js.map +1 -0
  456. package/dist/core/timings.d.ts +10 -0
  457. package/dist/core/timings.d.ts.map +1 -0
  458. package/dist/core/timings.js +41 -0
  459. package/dist/core/timings.js.map +1 -0
  460. package/dist/core/tools/bash.d.ts +51 -0
  461. package/dist/core/tools/bash.d.ts.map +1 -0
  462. package/dist/core/tools/bash.js +321 -0
  463. package/dist/core/tools/bash.js.map +1 -0
  464. package/dist/core/tools/compress-context.d.ts +27 -0
  465. package/dist/core/tools/compress-context.d.ts.map +1 -0
  466. package/dist/core/tools/compress-context.js +142 -0
  467. package/dist/core/tools/compress-context.js.map +1 -0
  468. package/dist/core/tools/edit-diff.d.ts +82 -0
  469. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  470. package/dist/core/tools/edit-diff.js +327 -0
  471. package/dist/core/tools/edit-diff.js.map +1 -0
  472. package/dist/core/tools/edit.d.ts +50 -0
  473. package/dist/core/tools/edit.d.ts.map +1 -0
  474. package/dist/core/tools/edit.js +324 -0
  475. package/dist/core/tools/edit.js.map +1 -0
  476. package/dist/core/tools/file-mutation-queue.d.ts +8 -0
  477. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  478. package/dist/core/tools/file-mutation-queue.js +69 -0
  479. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  480. package/dist/core/tools/find.d.ts +22 -0
  481. package/dist/core/tools/find.d.ts.map +1 -0
  482. package/dist/core/tools/find.js +268 -0
  483. package/dist/core/tools/find.js.map +1 -0
  484. package/dist/core/tools/grep.d.ts +27 -0
  485. package/dist/core/tools/grep.d.ts.map +1 -0
  486. package/dist/core/tools/grep.js +332 -0
  487. package/dist/core/tools/grep.js.map +1 -0
  488. package/dist/core/tools/hash-store.d.ts +12 -0
  489. package/dist/core/tools/hash-store.d.ts.map +1 -0
  490. package/dist/core/tools/hash-store.js +48 -0
  491. package/dist/core/tools/hash-store.js.map +1 -0
  492. package/dist/core/tools/hashline/apply.d.ts +40 -0
  493. package/dist/core/tools/hashline/apply.d.ts.map +1 -0
  494. package/dist/core/tools/hashline/apply.js +261 -0
  495. package/dist/core/tools/hashline/apply.js.map +1 -0
  496. package/dist/core/tools/hashline/hash.d.ts +56 -0
  497. package/dist/core/tools/hashline/hash.d.ts.map +1 -0
  498. package/dist/core/tools/hashline/hash.js +196 -0
  499. package/dist/core/tools/hashline/hash.js.map +1 -0
  500. package/dist/core/tools/hashline/parse.d.ts +8 -0
  501. package/dist/core/tools/hashline/parse.d.ts.map +1 -0
  502. package/dist/core/tools/hashline/parse.js +41 -0
  503. package/dist/core/tools/hashline/parse.js.map +1 -0
  504. package/dist/core/tools/hashline/resolve.d.ts +51 -0
  505. package/dist/core/tools/hashline/resolve.d.ts.map +1 -0
  506. package/dist/core/tools/hashline/resolve.js +187 -0
  507. package/dist/core/tools/hashline/resolve.js.map +1 -0
  508. package/dist/core/tools/hashline-utils.d.ts +6 -0
  509. package/dist/core/tools/hashline-utils.d.ts.map +1 -0
  510. package/dist/core/tools/hashline-utils.js +23 -0
  511. package/dist/core/tools/hashline-utils.js.map +1 -0
  512. package/dist/core/tools/index.d.ts +36 -0
  513. package/dist/core/tools/index.d.ts.map +1 -0
  514. package/dist/core/tools/index.js +141 -0
  515. package/dist/core/tools/index.js.map +1 -0
  516. package/dist/core/tools/ls.d.ts +21 -0
  517. package/dist/core/tools/ls.d.ts.map +1 -0
  518. package/dist/core/tools/ls.js +156 -0
  519. package/dist/core/tools/ls.js.map +1 -0
  520. package/dist/core/tools/operations.d.ts +212 -0
  521. package/dist/core/tools/operations.d.ts.map +1 -0
  522. package/dist/core/tools/operations.js +793 -0
  523. package/dist/core/tools/operations.js.map +1 -0
  524. package/dist/core/tools/output-accumulator.d.ts +54 -0
  525. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  526. package/dist/core/tools/output-accumulator.js +184 -0
  527. package/dist/core/tools/output-accumulator.js.map +1 -0
  528. package/dist/core/tools/path-utils.d.ts +9 -0
  529. package/dist/core/tools/path-utils.d.ts.map +1 -0
  530. package/dist/core/tools/path-utils.js +99 -0
  531. package/dist/core/tools/path-utils.js.map +1 -0
  532. package/dist/core/tools/read.d.ts +32 -0
  533. package/dist/core/tools/read.d.ts.map +1 -0
  534. package/dist/core/tools/read.js +318 -0
  535. package/dist/core/tools/read.js.map +1 -0
  536. package/dist/core/tools/render-utils.d.ts +33 -0
  537. package/dist/core/tools/render-utils.d.ts.map +1 -0
  538. package/dist/core/tools/render-utils.js +61 -0
  539. package/dist/core/tools/render-utils.js.map +1 -0
  540. package/dist/core/tools/replace-diff.d.ts +16 -0
  541. package/dist/core/tools/replace-diff.d.ts.map +1 -0
  542. package/dist/core/tools/replace-diff.js +117 -0
  543. package/dist/core/tools/replace-diff.js.map +1 -0
  544. package/dist/core/tools/replace-normalize.d.ts +2 -0
  545. package/dist/core/tools/replace-normalize.d.ts.map +1 -0
  546. package/dist/core/tools/replace-normalize.js +73 -0
  547. package/dist/core/tools/replace-normalize.js.map +1 -0
  548. package/dist/core/tools/replace-render.d.ts +51 -0
  549. package/dist/core/tools/replace-render.d.ts.map +1 -0
  550. package/dist/core/tools/replace-render.js +162 -0
  551. package/dist/core/tools/replace-render.js.map +1 -0
  552. package/dist/core/tools/runtime.d.ts +2 -0
  553. package/dist/core/tools/runtime.d.ts.map +1 -0
  554. package/dist/core/tools/runtime.js +6 -0
  555. package/dist/core/tools/runtime.js.map +1 -0
  556. package/dist/core/tools/session-history.d.ts +55 -0
  557. package/dist/core/tools/session-history.d.ts.map +1 -0
  558. package/dist/core/tools/session-history.js +649 -0
  559. package/dist/core/tools/session-history.js.map +1 -0
  560. package/dist/core/tools/subagent-agents.d.ts +29 -0
  561. package/dist/core/tools/subagent-agents.d.ts.map +1 -0
  562. package/dist/core/tools/subagent-agents.js +223 -0
  563. package/dist/core/tools/subagent-agents.js.map +1 -0
  564. package/dist/core/tools/subagent.d.ts +185 -0
  565. package/dist/core/tools/subagent.d.ts.map +1 -0
  566. package/dist/core/tools/subagent.js +1309 -0
  567. package/dist/core/tools/subagent.js.map +1 -0
  568. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  569. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  570. package/dist/core/tools/tool-definition-wrapper.js +34 -0
  571. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  572. package/dist/core/tools/truncate.d.ts +39 -0
  573. package/dist/core/tools/truncate.d.ts.map +1 -0
  574. package/dist/core/tools/truncate.js +215 -0
  575. package/dist/core/tools/truncate.js.map +1 -0
  576. package/dist/core/tools/websearch.d.ts +33 -0
  577. package/dist/core/tools/websearch.d.ts.map +1 -0
  578. package/dist/core/tools/websearch.js +341 -0
  579. package/dist/core/tools/websearch.js.map +1 -0
  580. package/dist/core/tools/workspace-tool-host.d.ts +102 -0
  581. package/dist/core/tools/workspace-tool-host.d.ts.map +1 -0
  582. package/dist/core/tools/workspace-tool-host.js +348 -0
  583. package/dist/core/tools/workspace-tool-host.js.map +1 -0
  584. package/dist/core/tools/write.d.ts +16 -0
  585. package/dist/core/tools/write.d.ts.map +1 -0
  586. package/dist/core/tools/write.js +204 -0
  587. package/dist/core/tools/write.js.map +1 -0
  588. package/dist/core/workspace-identity.d.ts +7 -0
  589. package/dist/core/workspace-identity.d.ts.map +1 -0
  590. package/dist/core/workspace-identity.js +2 -0
  591. package/dist/core/workspace-identity.js.map +1 -0
  592. package/dist/daemon/activity-budget.d.ts +10 -0
  593. package/dist/daemon/activity-budget.d.ts.map +1 -0
  594. package/dist/daemon/activity-budget.js +34 -0
  595. package/dist/daemon/activity-budget.js.map +1 -0
  596. package/dist/daemon/command.d.ts +6 -0
  597. package/dist/daemon/command.d.ts.map +1 -0
  598. package/dist/daemon/command.js +58 -0
  599. package/dist/daemon/command.js.map +1 -0
  600. package/dist/daemon/config.d.ts +45 -0
  601. package/dist/daemon/config.d.ts.map +1 -0
  602. package/dist/daemon/config.js +319 -0
  603. package/dist/daemon/config.js.map +1 -0
  604. package/dist/daemon/help.d.ts +2 -0
  605. package/dist/daemon/help.d.ts.map +1 -0
  606. package/dist/daemon/help.js +42 -0
  607. package/dist/daemon/help.js.map +1 -0
  608. package/dist/daemon/lsp-config.d.ts +4 -0
  609. package/dist/daemon/lsp-config.d.ts.map +1 -0
  610. package/dist/daemon/lsp-config.js +155 -0
  611. package/dist/daemon/lsp-config.js.map +1 -0
  612. package/dist/daemon/outbound-budget.d.ts +10 -0
  613. package/dist/daemon/outbound-budget.d.ts.map +1 -0
  614. package/dist/daemon/outbound-budget.js +30 -0
  615. package/dist/daemon/outbound-budget.js.map +1 -0
  616. package/dist/daemon/security.d.ts +19 -0
  617. package/dist/daemon/security.d.ts.map +1 -0
  618. package/dist/daemon/security.js +177 -0
  619. package/dist/daemon/security.js.map +1 -0
  620. package/dist/daemon/server.d.ts +20 -0
  621. package/dist/daemon/server.d.ts.map +1 -0
  622. package/dist/daemon/server.js +480 -0
  623. package/dist/daemon/server.js.map +1 -0
  624. package/dist/daemon/shared-connection.d.ts +33 -0
  625. package/dist/daemon/shared-connection.d.ts.map +1 -0
  626. package/dist/daemon/shared-connection.js +271 -0
  627. package/dist/daemon/shared-connection.js.map +1 -0
  628. package/dist/daemon/shared-revision.d.ts +5 -0
  629. package/dist/daemon/shared-revision.d.ts.map +1 -0
  630. package/dist/daemon/shared-revision.js +61 -0
  631. package/dist/daemon/shared-revision.js.map +1 -0
  632. package/dist/daemon/shared-roots.d.ts +9 -0
  633. package/dist/daemon/shared-roots.d.ts.map +1 -0
  634. package/dist/daemon/shared-roots.js +33 -0
  635. package/dist/daemon/shared-roots.js.map +1 -0
  636. package/dist/daemon/workspace-runtime.d.ts +46 -0
  637. package/dist/daemon/workspace-runtime.d.ts.map +1 -0
  638. package/dist/daemon/workspace-runtime.js +705 -0
  639. package/dist/daemon/workspace-runtime.js.map +1 -0
  640. package/dist/index.d.ts +109 -0
  641. package/dist/index.d.ts.map +1 -0
  642. package/dist/index.js +107 -0
  643. package/dist/index.js.map +1 -0
  644. package/dist/main.d.ts +39 -0
  645. package/dist/main.d.ts.map +1 -0
  646. package/dist/main.js +765 -0
  647. package/dist/main.js.map +1 -0
  648. package/dist/migrations.d.ts +35 -0
  649. package/dist/migrations.d.ts.map +1 -0
  650. package/dist/migrations.js +412 -0
  651. package/dist/migrations.js.map +1 -0
  652. package/dist/modes/interactive/components/assistant-message.d.ts +30 -0
  653. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  654. package/dist/modes/interactive/components/assistant-message.js +159 -0
  655. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  656. package/dist/modes/interactive/components/bash-execution.d.ts +36 -0
  657. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  658. package/dist/modes/interactive/components/bash-execution.js +173 -0
  659. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  660. package/dist/modes/interactive/components/bordered-loader.d.ts +18 -0
  661. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  662. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  663. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  664. package/dist/modes/interactive/components/branch-summary-message.d.ts +17 -0
  665. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  666. package/dist/modes/interactive/components/branch-summary-message.js +45 -0
  667. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  668. package/dist/modes/interactive/components/compaction-summary-message.d.ts +17 -0
  669. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  670. package/dist/modes/interactive/components/compaction-summary-message.js +46 -0
  671. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  672. package/dist/modes/interactive/components/config-selector.d.ts +74 -0
  673. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  674. package/dist/modes/interactive/components/config-selector.js +514 -0
  675. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  676. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  677. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  678. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  679. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  680. package/dist/modes/interactive/components/custom-editor.d.ts +25 -0
  681. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  682. package/dist/modes/interactive/components/custom-editor.js +85 -0
  683. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  684. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  685. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  686. package/dist/modes/interactive/components/custom-message.js +81 -0
  687. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  688. package/dist/modes/interactive/components/diff.d.ts +12 -0
  689. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  690. package/dist/modes/interactive/components/diff.js +118 -0
  691. package/dist/modes/interactive/components/diff.js.map +1 -0
  692. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  693. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  694. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  695. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  696. package/dist/modes/interactive/components/extension-editor.d.ts +22 -0
  697. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  698. package/dist/modes/interactive/components/extension-editor.js +128 -0
  699. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  700. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  701. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  702. package/dist/modes/interactive/components/extension-input.js +61 -0
  703. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  704. package/dist/modes/interactive/components/extension-selector.d.ts +26 -0
  705. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  706. package/dist/modes/interactive/components/extension-selector.js +83 -0
  707. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  708. package/dist/modes/interactive/components/footer.d.ts +36 -0
  709. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  710. package/dist/modes/interactive/components/footer.js +227 -0
  711. package/dist/modes/interactive/components/footer.js.map +1 -0
  712. package/dist/modes/interactive/components/hook-execution.d.ts +19 -0
  713. package/dist/modes/interactive/components/hook-execution.d.ts.map +1 -0
  714. package/dist/modes/interactive/components/hook-execution.js +185 -0
  715. package/dist/modes/interactive/components/hook-execution.js.map +1 -0
  716. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  717. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  718. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  719. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  720. package/dist/modes/interactive/components/login-dialog.d.ts +55 -0
  721. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  722. package/dist/modes/interactive/components/login-dialog.js +176 -0
  723. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  724. package/dist/modes/interactive/components/markdown-transform.d.ts +4 -0
  725. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  726. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  727. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  728. package/dist/modes/interactive/components/mermaid.d.ts +14 -0
  729. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  730. package/dist/modes/interactive/components/mermaid.js +228 -0
  731. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  732. package/dist/modes/interactive/components/message-card.d.ts +9 -0
  733. package/dist/modes/interactive/components/message-card.d.ts.map +1 -0
  734. package/dist/modes/interactive/components/message-card.js +24 -0
  735. package/dist/modes/interactive/components/message-card.js.map +1 -0
  736. package/dist/modes/interactive/components/model-selector.d.ts +52 -0
  737. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  738. package/dist/modes/interactive/components/model-selector.js +296 -0
  739. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  740. package/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
  741. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  742. package/dist/modes/interactive/components/oauth-selector.js +165 -0
  743. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  744. package/dist/modes/interactive/components/scoped-models-selector.d.ts +50 -0
  745. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  746. package/dist/modes/interactive/components/scoped-models-selector.js +300 -0
  747. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  748. package/dist/modes/interactive/components/session-selector-search.d.ts +22 -0
  749. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  750. package/dist/modes/interactive/components/session-selector-search.js +144 -0
  751. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  752. package/dist/modes/interactive/components/session-selector.d.ts +108 -0
  753. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  754. package/dist/modes/interactive/components/session-selector.js +835 -0
  755. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  756. package/dist/modes/interactive/components/settings-selector.d.ts +81 -0
  757. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  758. package/dist/modes/interactive/components/settings-selector.js +455 -0
  759. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  760. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  761. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  762. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  763. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  764. package/dist/modes/interactive/components/skill-invocation-message.d.ts +18 -0
  765. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  766. package/dist/modes/interactive/components/skill-invocation-message.js +48 -0
  767. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  768. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  769. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  770. package/dist/modes/interactive/components/theme-selector.js +50 -0
  771. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  772. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  773. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  774. package/dist/modes/interactive/components/thinking-selector.js +51 -0
  775. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  776. package/dist/modes/interactive/components/tool-execution.d.ts +67 -0
  777. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  778. package/dist/modes/interactive/components/tool-execution.js +312 -0
  779. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  780. package/dist/modes/interactive/components/tree-selector.d.ts +127 -0
  781. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  782. package/dist/modes/interactive/components/tree-selector.js +1098 -0
  783. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  784. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  785. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  786. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  787. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  788. package/dist/modes/interactive/components/user-message.d.ts +16 -0
  789. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  790. package/dist/modes/interactive/components/user-message.js +50 -0
  791. package/dist/modes/interactive/components/user-message.js.map +1 -0
  792. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  793. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  794. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  795. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  796. package/dist/modes/interactive/interactive-mode.d.ts +554 -0
  797. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  798. package/dist/modes/interactive/interactive-mode.js +5870 -0
  799. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  800. package/dist/modes/interactive/theme/dark.json +86 -0
  801. package/dist/modes/interactive/theme/light.json +85 -0
  802. package/dist/modes/interactive/theme/theme-schema.json +335 -0
  803. package/dist/modes/interactive/theme/theme.d.ts +109 -0
  804. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  805. package/dist/modes/interactive/theme/theme.js +1040 -0
  806. package/dist/modes/interactive/theme/theme.js.map +1 -0
  807. package/dist/modes/json-event.d.ts +28 -0
  808. package/dist/modes/json-event.d.ts.map +1 -0
  809. package/dist/modes/json-event.js +12 -0
  810. package/dist/modes/json-event.js.map +1 -0
  811. package/dist/modes/print-mode.d.ts +29 -0
  812. package/dist/modes/print-mode.d.ts.map +1 -0
  813. package/dist/modes/print-mode.js +142 -0
  814. package/dist/modes/print-mode.js.map +1 -0
  815. package/dist/modes/rpc/jsonl.d.ts +17 -0
  816. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  817. package/dist/modes/rpc/jsonl.js +49 -0
  818. package/dist/modes/rpc/jsonl.js.map +1 -0
  819. package/dist/modes/rpc/rpc-client.d.ts +321 -0
  820. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  821. package/dist/modes/rpc/rpc-client.js +755 -0
  822. package/dist/modes/rpc/rpc-client.js.map +1 -0
  823. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  824. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  825. package/dist/modes/rpc/rpc-mode.js +963 -0
  826. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  827. package/dist/modes/rpc/rpc-types.d.ts +652 -0
  828. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  829. package/dist/modes/rpc/rpc-types.js +8 -0
  830. package/dist/modes/rpc/rpc-types.js.map +1 -0
  831. package/dist/package-manager-cli.d.ts +4 -0
  832. package/dist/package-manager-cli.d.ts.map +1 -0
  833. package/dist/package-manager-cli.js +488 -0
  834. package/dist/package-manager-cli.js.map +1 -0
  835. package/dist/utils/ansi.d.ts +2 -0
  836. package/dist/utils/ansi.d.ts.map +1 -0
  837. package/dist/utils/ansi.js +25 -0
  838. package/dist/utils/ansi.js.map +1 -0
  839. package/dist/utils/changelog.d.ts +23 -0
  840. package/dist/utils/changelog.d.ts.map +1 -0
  841. package/dist/utils/changelog.js +74 -0
  842. package/dist/utils/changelog.js.map +1 -0
  843. package/dist/utils/child-process.d.ts +15 -0
  844. package/dist/utils/child-process.d.ts.map +1 -0
  845. package/dist/utils/child-process.js +88 -0
  846. package/dist/utils/child-process.js.map +1 -0
  847. package/dist/utils/clipboard-image.d.ts +13 -0
  848. package/dist/utils/clipboard-image.d.ts.map +1 -0
  849. package/dist/utils/clipboard-image.js +248 -0
  850. package/dist/utils/clipboard-image.js.map +1 -0
  851. package/dist/utils/clipboard-native.d.ts +11 -0
  852. package/dist/utils/clipboard-native.d.ts.map +1 -0
  853. package/dist/utils/clipboard-native.js +20 -0
  854. package/dist/utils/clipboard-native.js.map +1 -0
  855. package/dist/utils/clipboard.d.ts +4 -0
  856. package/dist/utils/clipboard.d.ts.map +1 -0
  857. package/dist/utils/clipboard.js +171 -0
  858. package/dist/utils/clipboard.js.map +1 -0
  859. package/dist/utils/deprecation.d.ts +4 -0
  860. package/dist/utils/deprecation.d.ts.map +1 -0
  861. package/dist/utils/deprecation.js +13 -0
  862. package/dist/utils/deprecation.js.map +1 -0
  863. package/dist/utils/directory-completions.d.ts +5 -0
  864. package/dist/utils/directory-completions.d.ts.map +1 -0
  865. package/dist/utils/directory-completions.js +64 -0
  866. package/dist/utils/directory-completions.js.map +1 -0
  867. package/dist/utils/exif-orientation.d.ts +6 -0
  868. package/dist/utils/exif-orientation.d.ts.map +1 -0
  869. package/dist/utils/exif-orientation.js +166 -0
  870. package/dist/utils/exif-orientation.js.map +1 -0
  871. package/dist/utils/frontmatter.d.ts +8 -0
  872. package/dist/utils/frontmatter.d.ts.map +1 -0
  873. package/dist/utils/frontmatter.js +26 -0
  874. package/dist/utils/frontmatter.js.map +1 -0
  875. package/dist/utils/fs-watch.d.ts +5 -0
  876. package/dist/utils/fs-watch.d.ts.map +1 -0
  877. package/dist/utils/fs-watch.js +25 -0
  878. package/dist/utils/fs-watch.js.map +1 -0
  879. package/dist/utils/git.d.ts +27 -0
  880. package/dist/utils/git.d.ts.map +1 -0
  881. package/dist/utils/git.js +237 -0
  882. package/dist/utils/git.js.map +1 -0
  883. package/dist/utils/grip-user-agent.d.ts +2 -0
  884. package/dist/utils/grip-user-agent.d.ts.map +1 -0
  885. package/dist/utils/grip-user-agent.js +5 -0
  886. package/dist/utils/grip-user-agent.js.map +1 -0
  887. package/dist/utils/html.d.ts +7 -0
  888. package/dist/utils/html.d.ts.map +1 -0
  889. package/dist/utils/html.js +40 -0
  890. package/dist/utils/html.js.map +1 -0
  891. package/dist/utils/image-convert.d.ts +12 -0
  892. package/dist/utils/image-convert.d.ts.map +1 -0
  893. package/dist/utils/image-convert.js +43 -0
  894. package/dist/utils/image-convert.js.map +1 -0
  895. package/dist/utils/image-process.d.ts +18 -0
  896. package/dist/utils/image-process.d.ts.map +1 -0
  897. package/dist/utils/image-process.js +83 -0
  898. package/dist/utils/image-process.js.map +1 -0
  899. package/dist/utils/image-resize-core.d.ts +30 -0
  900. package/dist/utils/image-resize-core.d.ts.map +1 -0
  901. package/dist/utils/image-resize-core.js +133 -0
  902. package/dist/utils/image-resize-core.js.map +1 -0
  903. package/dist/utils/image-resize-worker.d.ts +2 -0
  904. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  905. package/dist/utils/image-resize-worker.js +31 -0
  906. package/dist/utils/image-resize-worker.js.map +1 -0
  907. package/dist/utils/image-resize.d.ts +19 -0
  908. package/dist/utils/image-resize.d.ts.map +1 -0
  909. package/dist/utils/image-resize.js +86 -0
  910. package/dist/utils/image-resize.js.map +1 -0
  911. package/dist/utils/json.d.ts +3 -0
  912. package/dist/utils/json.d.ts.map +1 -0
  913. package/dist/utils/json.js +7 -0
  914. package/dist/utils/json.js.map +1 -0
  915. package/dist/utils/mime.d.ts +3 -0
  916. package/dist/utils/mime.d.ts.map +1 -0
  917. package/dist/utils/mime.js +110 -0
  918. package/dist/utils/mime.js.map +1 -0
  919. package/dist/utils/open-browser.d.ts +9 -0
  920. package/dist/utils/open-browser.d.ts.map +1 -0
  921. package/dist/utils/open-browser.js +22 -0
  922. package/dist/utils/open-browser.js.map +1 -0
  923. package/dist/utils/paths.d.ts +31 -0
  924. package/dist/utils/paths.d.ts.map +1 -0
  925. package/dist/utils/paths.js +87 -0
  926. package/dist/utils/paths.js.map +1 -0
  927. package/dist/utils/photon.d.ts +22 -0
  928. package/dist/utils/photon.d.ts.map +1 -0
  929. package/dist/utils/photon.js +126 -0
  930. package/dist/utils/photon.js.map +1 -0
  931. package/dist/utils/shell.d.ts +28 -0
  932. package/dist/utils/shell.d.ts.map +1 -0
  933. package/dist/utils/shell.js +188 -0
  934. package/dist/utils/shell.js.map +1 -0
  935. package/dist/utils/sleep.d.ts +5 -0
  936. package/dist/utils/sleep.d.ts.map +1 -0
  937. package/dist/utils/sleep.js +17 -0
  938. package/dist/utils/sleep.js.map +1 -0
  939. package/dist/utils/syntax-highlight.d.ts +12 -0
  940. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  941. package/dist/utils/syntax-highlight.js +125 -0
  942. package/dist/utils/syntax-highlight.js.map +1 -0
  943. package/dist/utils/tools-manager.d.ts +5 -0
  944. package/dist/utils/tools-manager.d.ts.map +1 -0
  945. package/dist/utils/tools-manager.js +329 -0
  946. package/dist/utils/tools-manager.js.map +1 -0
  947. package/dist/utils/version-check.d.ts +14 -0
  948. package/dist/utils/version-check.d.ts.map +1 -0
  949. package/dist/utils/version-check.js +91 -0
  950. package/dist/utils/version-check.js.map +1 -0
  951. package/dist/utils/windows-self-update.d.ts +3 -0
  952. package/dist/utils/windows-self-update.d.ts.map +1 -0
  953. package/dist/utils/windows-self-update.js +77 -0
  954. package/dist/utils/windows-self-update.js.map +1 -0
  955. package/docs/compaction.md +408 -0
  956. package/docs/custom-provider.md +714 -0
  957. package/docs/daemon-architecture.md +399 -0
  958. package/docs/daemon.md +112 -0
  959. package/docs/development.md +72 -0
  960. package/docs/docs.json +164 -0
  961. package/docs/extensions.md +2745 -0
  962. package/docs/hooks.md +85 -0
  963. package/docs/images/doom-extension.png +0 -0
  964. package/docs/images/exy.png +0 -0
  965. package/docs/images/interactive-mode.png +0 -0
  966. package/docs/images/tree-view.png +0 -0
  967. package/docs/index.md +77 -0
  968. package/docs/json.md +89 -0
  969. package/docs/keybindings.md +230 -0
  970. package/docs/lsp.md +499 -0
  971. package/docs/migrating-to-grip.md +18 -0
  972. package/docs/models.md +496 -0
  973. package/docs/packages.md +228 -0
  974. package/docs/prompt-templates.md +88 -0
  975. package/docs/providers.md +251 -0
  976. package/docs/quickstart.md +159 -0
  977. package/docs/rpc.md +1492 -0
  978. package/docs/rules.md +117 -0
  979. package/docs/sandbox.md +104 -0
  980. package/docs/sdk.md +360 -0
  981. package/docs/session-format.md +414 -0
  982. package/docs/sessions.md +137 -0
  983. package/docs/settings.md +372 -0
  984. package/docs/shell-aliases.md +13 -0
  985. package/docs/skills.md +246 -0
  986. package/docs/terminal-setup.md +112 -0
  987. package/docs/termux.md +112 -0
  988. package/docs/themes.md +295 -0
  989. package/docs/tmux.md +61 -0
  990. package/docs/tui.md +918 -0
  991. package/docs/usage.md +304 -0
  992. package/docs/windows.md +17 -0
  993. package/examples/README.md +29 -0
  994. package/examples/daemon-docker/Dockerfile +43 -0
  995. package/examples/daemon-docker/README.md +45 -0
  996. package/examples/extensions/README.md +208 -0
  997. package/examples/extensions/auto-commit-on-exit.ts +46 -0
  998. package/examples/extensions/bash-spawn-hook.ts +30 -0
  999. package/examples/extensions/bookmark.ts +50 -0
  1000. package/examples/extensions/border-status-editor.ts +145 -0
  1001. package/examples/extensions/built-in-tool-renderer.ts +259 -0
  1002. package/examples/extensions/claude-rules.ts +86 -0
  1003. package/examples/extensions/commands.ts +82 -0
  1004. package/examples/extensions/confirm-destructive.ts +59 -0
  1005. package/examples/extensions/custom-compaction.ts +131 -0
  1006. package/examples/extensions/custom-footer.ts +79 -0
  1007. package/examples/extensions/custom-header.ts +73 -0
  1008. package/examples/extensions/custom-provider-anthropic/index.ts +707 -0
  1009. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  1010. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  1011. package/examples/extensions/custom-provider-gitlab-duo/index.ts +402 -0
  1012. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  1013. package/examples/extensions/custom-provider-gitlab-duo/test.ts +104 -0
  1014. package/examples/extensions/dirty-repo-guard.ts +59 -0
  1015. package/examples/extensions/doom-overlay/README.md +46 -0
  1016. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  1017. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  1018. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  1019. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
  1020. package/examples/extensions/doom-overlay/doom-component.ts +133 -0
  1021. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  1022. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  1023. package/examples/extensions/doom-overlay/index.ts +74 -0
  1024. package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
  1025. package/examples/extensions/dynamic-resources/RULES.md +8 -0
  1026. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1027. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  1028. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1029. package/examples/extensions/dynamic-resources/index.ts +16 -0
  1030. package/examples/extensions/dynamic-tools.ts +74 -0
  1031. package/examples/extensions/event-bus.ts +43 -0
  1032. package/examples/extensions/file-trigger.ts +41 -0
  1033. package/examples/extensions/git-checkpoint.ts +53 -0
  1034. package/examples/extensions/git-merge-and-resolve.ts +125 -0
  1035. package/examples/extensions/github-issue-autocomplete.ts +191 -0
  1036. package/examples/extensions/handoff.ts +191 -0
  1037. package/examples/extensions/hello.ts +26 -0
  1038. package/examples/extensions/hidden-thinking-label.ts +53 -0
  1039. package/examples/extensions/inline-bash.ts +104 -0
  1040. package/examples/extensions/input-transform.ts +43 -0
  1041. package/examples/extensions/interactive-shell.ts +194 -0
  1042. package/examples/extensions/mac-system-theme.ts +47 -0
  1043. package/examples/extensions/message-renderer.ts +59 -0
  1044. package/examples/extensions/minimal-mode.ts +428 -0
  1045. package/examples/extensions/modal-editor.ts +86 -0
  1046. package/examples/extensions/model-status.ts +31 -0
  1047. package/examples/extensions/notify.ts +55 -0
  1048. package/examples/extensions/overlay-qa-tests.ts +1374 -0
  1049. package/examples/extensions/overlay-test.ts +171 -0
  1050. package/examples/extensions/permission-gate.ts +34 -0
  1051. package/examples/extensions/pirate.ts +47 -0
  1052. package/examples/extensions/plan-mode/README.md +65 -0
  1053. package/examples/extensions/plan-mode/index.ts +346 -0
  1054. package/examples/extensions/plan-mode/utils.ts +172 -0
  1055. package/examples/extensions/preset.ts +426 -0
  1056. package/examples/extensions/prompt-customizer.ts +97 -0
  1057. package/examples/extensions/protected-paths.ts +29 -0
  1058. package/examples/extensions/provider-payload.ts +18 -0
  1059. package/examples/extensions/qna.ts +125 -0
  1060. package/examples/extensions/question.ts +294 -0
  1061. package/examples/extensions/questionnaire.ts +459 -0
  1062. package/examples/extensions/rainbow-editor.ts +88 -0
  1063. package/examples/extensions/reload-runtime.ts +37 -0
  1064. package/examples/extensions/rpc-demo.ts +118 -0
  1065. package/examples/extensions/sandbox/index.ts +320 -0
  1066. package/examples/extensions/sandbox/package-lock.json +92 -0
  1067. package/examples/extensions/sandbox/package.json +19 -0
  1068. package/examples/extensions/send-user-message.ts +97 -0
  1069. package/examples/extensions/session-name.ts +27 -0
  1070. package/examples/extensions/shutdown-command.ts +63 -0
  1071. package/examples/extensions/snake.ts +381 -0
  1072. package/examples/extensions/space-invaders.ts +597 -0
  1073. package/examples/extensions/status-line.ts +32 -0
  1074. package/examples/extensions/structured-output.ts +65 -0
  1075. package/examples/extensions/subagent/README.md +175 -0
  1076. package/examples/extensions/subagent/agents/planner.md +37 -0
  1077. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1078. package/examples/extensions/subagent/agents/scout.md +50 -0
  1079. package/examples/extensions/subagent/agents/worker.md +24 -0
  1080. package/examples/extensions/subagent/agents.ts +126 -0
  1081. package/examples/extensions/subagent/index.ts +1083 -0
  1082. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1083. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1084. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1085. package/examples/extensions/summarize.ts +186 -0
  1086. package/examples/extensions/system-prompt-header.ts +17 -0
  1087. package/examples/extensions/tic-tac-toe.ts +1091 -0
  1088. package/examples/extensions/timed-confirm.ts +70 -0
  1089. package/examples/extensions/titlebar-spinner.ts +58 -0
  1090. package/examples/extensions/todo.ts +306 -0
  1091. package/examples/extensions/tool-override.ts +144 -0
  1092. package/examples/extensions/tools.ts +141 -0
  1093. package/examples/extensions/trigger-compact.ts +50 -0
  1094. package/examples/extensions/truncated-tool.ts +200 -0
  1095. package/examples/extensions/widget-placement.ts +9 -0
  1096. package/examples/extensions/with-deps/index.ts +32 -0
  1097. package/examples/extensions/with-deps/package-lock.json +31 -0
  1098. package/examples/extensions/with-deps/package.json +22 -0
  1099. package/examples/extensions/working-indicator.ts +123 -0
  1100. package/examples/extensions/working-message-test.ts +25 -0
  1101. package/examples/remote-session-server/README.md +71 -0
  1102. package/examples/remote-session-server/server.ts +353 -0
  1103. package/examples/rpc-extension-ui.ts +642 -0
  1104. package/examples/sdk/01-minimal.ts +27 -0
  1105. package/examples/sdk/02-custom-model.ts +54 -0
  1106. package/examples/sdk/03-custom-prompt.ts +76 -0
  1107. package/examples/sdk/04-skills.ts +60 -0
  1108. package/examples/sdk/05-tools.ts +55 -0
  1109. package/examples/sdk/06-extensions.ts +94 -0
  1110. package/examples/sdk/07-context-files.ts +47 -0
  1111. package/examples/sdk/08-prompt-templates.ts +56 -0
  1112. package/examples/sdk/09-api-keys-and-oauth.ts +50 -0
  1113. package/examples/sdk/10-settings.ts +58 -0
  1114. package/examples/sdk/11-sessions.ts +54 -0
  1115. package/examples/sdk/12-full-control.ts +79 -0
  1116. package/examples/sdk/13-session-runtime.ts +49 -0
  1117. package/examples/sdk/README.md +94 -0
  1118. package/npm-shrinkwrap.json +1878 -0
  1119. package/package.json +101 -5
@@ -0,0 +1,465 @@
1
+ import { type Static, Type } from "typebox";
2
+ export declare const REMOTE_WORKSPACE_PROTOCOL_VERSIONS: readonly [{
3
+ readonly major: 1;
4
+ readonly minMinor: 0;
5
+ readonly maxMinor: 0;
6
+ }];
7
+ export declare const REMOTE_WORKSPACE_CAPABILITIES: readonly ["catalog_refresh", "tool_updates", "primitive_operations", "lsp_status", "file_transfer", "artifacts"];
8
+ export type RemoteWorkspaceCapability = (typeof REMOTE_WORKSPACE_CAPABILITIES)[number];
9
+ export declare const REMOTE_WORKSPACE_METHODS: readonly ["catalog.get", "tool.invoke", "workspace.access", "workspace.read", "workspace.write", "workspace.mkdir", "workspace.stat", "workspace.readdir", "workspace.glob", "workspace.grep", "workspace.detect_image_mime", "workspace.exec", "lsp.status", "resource.read", "artifact.read", "transfer.upload", "transfer.download"];
10
+ export type RemoteWorkspaceMethod = (typeof REMOTE_WORKSPACE_METHODS)[number];
11
+ export declare const REMOTE_WORKSPACE_ERROR_CODES: readonly ["invalid_request", "method_not_supported", "incompatible_version", "capability_mismatch", "schema_mismatch", "stale_generation", "not_available", "limit_exceeded", "deadline_exceeded", "cancelled", "conflict", "generation_retired", "connection_draining", "result_too_large", "internal_error"];
12
+ export type RemoteWorkspaceErrorCode = (typeof REMOTE_WORKSPACE_ERROR_CODES)[number];
13
+ export type RemoteWorkspaceExecutionState = "not_started" | "completed" | "indeterminate";
14
+ export type RemoteWorkspacePathFlavor = "posix" | "windows";
15
+ export type RemoteWorkspaceOperationKind = "read" | "mutation" | "process" | "service";
16
+ export interface RemoteWorkspaceStructuralLimits {
17
+ maxMessageBytes: number;
18
+ maxStringBytes: number;
19
+ maxDepth: number;
20
+ maxObjectKeys: number;
21
+ maxArrayLength: number;
22
+ maxNodes: number;
23
+ }
24
+ export interface RemoteWorkspaceProtocolLimits extends RemoteWorkspaceStructuralLimits {
25
+ maxRequestMs: number;
26
+ maxTransferChunkBytes: number;
27
+ maxPendingTransferBytes: number;
28
+ maxPendingInboundBytes: number;
29
+ maxPendingInboundMessages: number;
30
+ maxPendingOutboundBytes: number;
31
+ maxPendingOutboundMessages: number;
32
+ maxTransferBytes: number;
33
+ maxTransferChunks: number;
34
+ maxActiveRequests: number;
35
+ maxActiveTransfers: number;
36
+ maxCancellationMs: number;
37
+ maxTransportSendMs: number;
38
+ }
39
+ export declare const DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS: RemoteWorkspaceProtocolLimits;
40
+ export declare const RemoteWorkspaceVersionRangeSchema: Type.TObject<{
41
+ major: Type.TInteger;
42
+ minMinor: Type.TInteger;
43
+ maxMinor: Type.TInteger;
44
+ }>;
45
+ export type RemoteWorkspaceVersionRange = Static<typeof RemoteWorkspaceVersionRangeSchema>;
46
+ export declare const RemoteWorkspaceVersionSchema: Type.TObject<{
47
+ major: Type.TInteger;
48
+ minor: Type.TInteger;
49
+ }>;
50
+ export type RemoteWorkspaceVersion = Static<typeof RemoteWorkspaceVersionSchema>;
51
+ export declare const RemoteWorkspaceLimitsSchema: Type.TObject<{
52
+ maxMessageBytes: Type.TInteger;
53
+ maxStringBytes: Type.TInteger;
54
+ maxDepth: Type.TInteger;
55
+ maxObjectKeys: Type.TInteger;
56
+ maxArrayLength: Type.TInteger;
57
+ maxNodes: Type.TInteger;
58
+ maxRequestMs: Type.TInteger;
59
+ maxTransferChunkBytes: Type.TInteger;
60
+ maxPendingTransferBytes: Type.TInteger;
61
+ maxPendingInboundBytes: Type.TInteger;
62
+ maxPendingInboundMessages: Type.TInteger;
63
+ maxPendingOutboundBytes: Type.TInteger;
64
+ maxPendingOutboundMessages: Type.TInteger;
65
+ maxTransferBytes: Type.TInteger;
66
+ maxTransferChunks: Type.TInteger;
67
+ maxActiveRequests: Type.TInteger;
68
+ maxActiveTransfers: Type.TInteger;
69
+ maxCancellationMs: Type.TInteger;
70
+ maxTransportSendMs: Type.TInteger;
71
+ }>;
72
+ export declare const RemoteWorkspaceIdentitySchema: Type.TObject<{
73
+ id: Type.TString;
74
+ root: Type.TString;
75
+ pathFlavor: Type.TUnion<[Type.TLiteral<"posix">, Type.TLiteral<"windows">]>;
76
+ }>;
77
+ export type RemoteWorkspaceIdentity = Static<typeof RemoteWorkspaceIdentitySchema>;
78
+ export declare const RemoteWorkspaceToolCatalogEntrySchema: Type.TObject<{
79
+ name: Type.TString;
80
+ executionMode: Type.TUnion<[Type.TLiteral<"read">, Type.TLiteral<"mutation">, Type.TLiteral<"process">, Type.TLiteral<"service">]>;
81
+ parameterSchema: Type.TRecord<"^.*$", Type.TUnknown>;
82
+ schemaHash: Type.TString;
83
+ featureFlags: Type.TArray<Type.TString>;
84
+ }>;
85
+ export type RemoteWorkspaceToolCatalogEntry = Static<typeof RemoteWorkspaceToolCatalogEntrySchema>;
86
+ export declare const RemoteWorkspaceCatalogSchema: Type.TObject<{
87
+ generation: Type.TInteger;
88
+ tools: Type.TArray<Type.TObject<{
89
+ name: Type.TString;
90
+ executionMode: Type.TUnion<[Type.TLiteral<"read">, Type.TLiteral<"mutation">, Type.TLiteral<"process">, Type.TLiteral<"service">]>;
91
+ parameterSchema: Type.TRecord<"^.*$", Type.TUnknown>;
92
+ schemaHash: Type.TString;
93
+ featureFlags: Type.TArray<Type.TString>;
94
+ }>>;
95
+ operations: Type.TArray<Type.TUnion<[Type.TLiteral<"catalog.get">, Type.TLiteral<"tool.invoke">, Type.TLiteral<"workspace.access">, Type.TLiteral<"workspace.read">, Type.TLiteral<"workspace.write">, Type.TLiteral<"workspace.mkdir">, Type.TLiteral<"workspace.stat">, Type.TLiteral<"workspace.readdir">, Type.TLiteral<"workspace.glob">, Type.TLiteral<"workspace.grep">, Type.TLiteral<"workspace.detect_image_mime">, Type.TLiteral<"workspace.exec">, Type.TLiteral<"lsp.status">, Type.TLiteral<"resource.read">, Type.TLiteral<"artifact.read">, Type.TLiteral<"transfer.upload">, Type.TLiteral<"transfer.download">]>>;
96
+ }>;
97
+ export type RemoteWorkspaceCatalog = Static<typeof RemoteWorkspaceCatalogSchema>;
98
+ export declare const RemoteWorkspaceHandshakeSchema: Type.TObject<{
99
+ type: Type.TLiteral<"handshake">;
100
+ id: Type.TString;
101
+ versions: Type.TArray<Type.TObject<{
102
+ major: Type.TInteger;
103
+ minMinor: Type.TInteger;
104
+ maxMinor: Type.TInteger;
105
+ }>>;
106
+ requiredCapabilities: Type.TArray<Type.TString>;
107
+ optionalCapabilities: Type.TArray<Type.TString>;
108
+ receiveLimits: Type.TObject<{
109
+ maxMessageBytes: Type.TInteger;
110
+ maxStringBytes: Type.TInteger;
111
+ maxDepth: Type.TInteger;
112
+ maxObjectKeys: Type.TInteger;
113
+ maxArrayLength: Type.TInteger;
114
+ maxNodes: Type.TInteger;
115
+ maxRequestMs: Type.TInteger;
116
+ maxTransferChunkBytes: Type.TInteger;
117
+ maxPendingTransferBytes: Type.TInteger;
118
+ maxPendingInboundBytes: Type.TInteger;
119
+ maxPendingInboundMessages: Type.TInteger;
120
+ maxPendingOutboundBytes: Type.TInteger;
121
+ maxPendingOutboundMessages: Type.TInteger;
122
+ maxTransferBytes: Type.TInteger;
123
+ maxTransferChunks: Type.TInteger;
124
+ maxActiveRequests: Type.TInteger;
125
+ maxActiveTransfers: Type.TInteger;
126
+ maxCancellationMs: Type.TInteger;
127
+ maxTransportSendMs: Type.TInteger;
128
+ }>;
129
+ }>;
130
+ export type RemoteWorkspaceHandshake = Static<typeof RemoteWorkspaceHandshakeSchema>;
131
+ export declare const RemoteWorkspaceHandshakeAckSchema: Type.TObject<{
132
+ type: Type.TLiteral<"handshake_ack">;
133
+ id: Type.TString;
134
+ version: Type.TObject<{
135
+ major: Type.TInteger;
136
+ minor: Type.TInteger;
137
+ }>;
138
+ capabilities: Type.TArray<Type.TString>;
139
+ workspace: Type.TObject<{
140
+ id: Type.TString;
141
+ root: Type.TString;
142
+ pathFlavor: Type.TUnion<[Type.TLiteral<"posix">, Type.TLiteral<"windows">]>;
143
+ }>;
144
+ limits: Type.TObject<{
145
+ maxMessageBytes: Type.TInteger;
146
+ maxStringBytes: Type.TInteger;
147
+ maxDepth: Type.TInteger;
148
+ maxObjectKeys: Type.TInteger;
149
+ maxArrayLength: Type.TInteger;
150
+ maxNodes: Type.TInteger;
151
+ maxRequestMs: Type.TInteger;
152
+ maxTransferChunkBytes: Type.TInteger;
153
+ maxPendingTransferBytes: Type.TInteger;
154
+ maxPendingInboundBytes: Type.TInteger;
155
+ maxPendingInboundMessages: Type.TInteger;
156
+ maxPendingOutboundBytes: Type.TInteger;
157
+ maxPendingOutboundMessages: Type.TInteger;
158
+ maxTransferBytes: Type.TInteger;
159
+ maxTransferChunks: Type.TInteger;
160
+ maxActiveRequests: Type.TInteger;
161
+ maxActiveTransfers: Type.TInteger;
162
+ maxCancellationMs: Type.TInteger;
163
+ maxTransportSendMs: Type.TInteger;
164
+ }>;
165
+ catalog: Type.TObject<{
166
+ generation: Type.TInteger;
167
+ tools: Type.TArray<Type.TObject<{
168
+ name: Type.TString;
169
+ executionMode: Type.TUnion<[Type.TLiteral<"read">, Type.TLiteral<"mutation">, Type.TLiteral<"process">, Type.TLiteral<"service">]>;
170
+ parameterSchema: Type.TRecord<"^.*$", Type.TUnknown>;
171
+ schemaHash: Type.TString;
172
+ featureFlags: Type.TArray<Type.TString>;
173
+ }>>;
174
+ operations: Type.TArray<Type.TUnion<[Type.TLiteral<"catalog.get">, Type.TLiteral<"tool.invoke">, Type.TLiteral<"workspace.access">, Type.TLiteral<"workspace.read">, Type.TLiteral<"workspace.write">, Type.TLiteral<"workspace.mkdir">, Type.TLiteral<"workspace.stat">, Type.TLiteral<"workspace.readdir">, Type.TLiteral<"workspace.glob">, Type.TLiteral<"workspace.grep">, Type.TLiteral<"workspace.detect_image_mime">, Type.TLiteral<"workspace.exec">, Type.TLiteral<"lsp.status">, Type.TLiteral<"resource.read">, Type.TLiteral<"artifact.read">, Type.TLiteral<"transfer.upload">, Type.TLiteral<"transfer.download">]>>;
175
+ }>;
176
+ catalogHash: Type.TString;
177
+ backendMetadata: Type.TObject<{
178
+ kind: Type.TLiteral<"remote-workspace">;
179
+ label: Type.TOptional<Type.TString>;
180
+ }>;
181
+ }>;
182
+ export type RemoteWorkspaceHandshakeAck = Static<typeof RemoteWorkspaceHandshakeAckSchema>;
183
+ export declare const RemoteWorkspaceRequestSchema: Type.TObject<{
184
+ type: Type.TLiteral<"request">;
185
+ id: Type.TString;
186
+ method: Type.TString;
187
+ timeoutMs: Type.TInteger;
188
+ params: Type.TUnknown;
189
+ }>;
190
+ export type RemoteWorkspaceRequest = Static<typeof RemoteWorkspaceRequestSchema>;
191
+ export declare const RemoteWorkspaceCancelSchema: Type.TObject<{
192
+ type: Type.TLiteral<"cancel">;
193
+ id: Type.TString;
194
+ reason: Type.TOptional<Type.TString>;
195
+ }>;
196
+ export type RemoteWorkspaceCancel = Static<typeof RemoteWorkspaceCancelSchema>;
197
+ export declare const RemoteWorkspaceTransferChunkSchema: Type.TObject<{
198
+ type: Type.TLiteral<"transfer_chunk">;
199
+ id: Type.TString;
200
+ sequence: Type.TInteger;
201
+ dataBase64: Type.TString;
202
+ }>;
203
+ export type RemoteWorkspaceTransferChunk = Static<typeof RemoteWorkspaceTransferChunkSchema>;
204
+ export declare const RemoteWorkspaceTransferFinishSchema: Type.TObject<{
205
+ type: Type.TLiteral<"transfer_finish">;
206
+ id: Type.TString;
207
+ length: Type.TInteger;
208
+ sha256: Type.TString;
209
+ }>;
210
+ export type RemoteWorkspaceTransferFinish = Static<typeof RemoteWorkspaceTransferFinishSchema>;
211
+ export declare const RemoteWorkspaceResultSchema: Type.TObject<{
212
+ type: Type.TLiteral<"result">;
213
+ id: Type.TString;
214
+ result: Type.TUnknown;
215
+ }>;
216
+ export type RemoteWorkspaceResult = Static<typeof RemoteWorkspaceResultSchema>;
217
+ export declare const RemoteWorkspaceProtocolErrorSchema: Type.TObject<{
218
+ code: Type.TUnion<[Type.TLiteral<"invalid_request">, Type.TLiteral<"method_not_supported">, Type.TLiteral<"incompatible_version">, Type.TLiteral<"capability_mismatch">, Type.TLiteral<"schema_mismatch">, Type.TLiteral<"stale_generation">, Type.TLiteral<"not_available">, Type.TLiteral<"limit_exceeded">, Type.TLiteral<"deadline_exceeded">, Type.TLiteral<"cancelled">, Type.TLiteral<"conflict">, Type.TLiteral<"generation_retired">, Type.TLiteral<"connection_draining">, Type.TLiteral<"result_too_large">, Type.TLiteral<"internal_error">]>;
219
+ message: Type.TString;
220
+ executionState: Type.TUnion<[Type.TLiteral<"not_started">, Type.TLiteral<"completed">, Type.TLiteral<"indeterminate">]>;
221
+ retryable: Type.TBoolean;
222
+ details: Type.TOptional<Type.TUnknown>;
223
+ }>;
224
+ export type RemoteWorkspaceProtocolError = Static<typeof RemoteWorkspaceProtocolErrorSchema>;
225
+ export declare const RemoteWorkspaceErrorMessageSchema: Type.TObject<{
226
+ type: Type.TLiteral<"error">;
227
+ id: Type.TString;
228
+ error: Type.TObject<{
229
+ code: Type.TUnion<[Type.TLiteral<"invalid_request">, Type.TLiteral<"method_not_supported">, Type.TLiteral<"incompatible_version">, Type.TLiteral<"capability_mismatch">, Type.TLiteral<"schema_mismatch">, Type.TLiteral<"stale_generation">, Type.TLiteral<"not_available">, Type.TLiteral<"limit_exceeded">, Type.TLiteral<"deadline_exceeded">, Type.TLiteral<"cancelled">, Type.TLiteral<"conflict">, Type.TLiteral<"generation_retired">, Type.TLiteral<"connection_draining">, Type.TLiteral<"result_too_large">, Type.TLiteral<"internal_error">]>;
230
+ message: Type.TString;
231
+ executionState: Type.TUnion<[Type.TLiteral<"not_started">, Type.TLiteral<"completed">, Type.TLiteral<"indeterminate">]>;
232
+ retryable: Type.TBoolean;
233
+ details: Type.TOptional<Type.TUnknown>;
234
+ }>;
235
+ }>;
236
+ export type RemoteWorkspaceErrorMessage = Static<typeof RemoteWorkspaceErrorMessageSchema>;
237
+ export declare const RemoteWorkspaceUpdateSchema: Type.TObject<{
238
+ type: Type.TLiteral<"update">;
239
+ id: Type.TString;
240
+ sequence: Type.TInteger;
241
+ update: Type.TUnknown;
242
+ }>;
243
+ export type RemoteWorkspaceUpdate = Static<typeof RemoteWorkspaceUpdateSchema>;
244
+ export declare const RemoteWorkspaceTransferStartSchema: Type.TObject<{
245
+ type: Type.TLiteral<"transfer_start">;
246
+ id: Type.TString;
247
+ length: Type.TInteger;
248
+ sha256: Type.TString;
249
+ }>;
250
+ export type RemoteWorkspaceTransferStart = Static<typeof RemoteWorkspaceTransferStartSchema>;
251
+ export declare const RemoteWorkspaceCatalogChangedSchema: Type.TObject<{
252
+ type: Type.TLiteral<"catalog_changed">;
253
+ generation: Type.TInteger;
254
+ catalogHash: Type.TString;
255
+ }>;
256
+ export type RemoteWorkspaceCatalogChanged = Static<typeof RemoteWorkspaceCatalogChangedSchema>;
257
+ export declare const RemoteWorkspaceClientMessageSchema: Type.TUnion<[Type.TObject<{
258
+ type: Type.TLiteral<"handshake">;
259
+ id: Type.TString;
260
+ versions: Type.TArray<Type.TObject<{
261
+ major: Type.TInteger;
262
+ minMinor: Type.TInteger;
263
+ maxMinor: Type.TInteger;
264
+ }>>;
265
+ requiredCapabilities: Type.TArray<Type.TString>;
266
+ optionalCapabilities: Type.TArray<Type.TString>;
267
+ receiveLimits: Type.TObject<{
268
+ maxMessageBytes: Type.TInteger;
269
+ maxStringBytes: Type.TInteger;
270
+ maxDepth: Type.TInteger;
271
+ maxObjectKeys: Type.TInteger;
272
+ maxArrayLength: Type.TInteger;
273
+ maxNodes: Type.TInteger;
274
+ maxRequestMs: Type.TInteger;
275
+ maxTransferChunkBytes: Type.TInteger;
276
+ maxPendingTransferBytes: Type.TInteger;
277
+ maxPendingInboundBytes: Type.TInteger;
278
+ maxPendingInboundMessages: Type.TInteger;
279
+ maxPendingOutboundBytes: Type.TInteger;
280
+ maxPendingOutboundMessages: Type.TInteger;
281
+ maxTransferBytes: Type.TInteger;
282
+ maxTransferChunks: Type.TInteger;
283
+ maxActiveRequests: Type.TInteger;
284
+ maxActiveTransfers: Type.TInteger;
285
+ maxCancellationMs: Type.TInteger;
286
+ maxTransportSendMs: Type.TInteger;
287
+ }>;
288
+ }>, Type.TObject<{
289
+ type: Type.TLiteral<"request">;
290
+ id: Type.TString;
291
+ method: Type.TString;
292
+ timeoutMs: Type.TInteger;
293
+ params: Type.TUnknown;
294
+ }>, Type.TObject<{
295
+ type: Type.TLiteral<"cancel">;
296
+ id: Type.TString;
297
+ reason: Type.TOptional<Type.TString>;
298
+ }>, Type.TObject<{
299
+ type: Type.TLiteral<"transfer_chunk">;
300
+ id: Type.TString;
301
+ sequence: Type.TInteger;
302
+ dataBase64: Type.TString;
303
+ }>, Type.TObject<{
304
+ type: Type.TLiteral<"transfer_finish">;
305
+ id: Type.TString;
306
+ length: Type.TInteger;
307
+ sha256: Type.TString;
308
+ }>]>;
309
+ export declare const RemoteWorkspaceServerMessageSchema: Type.TUnion<[Type.TObject<{
310
+ type: Type.TLiteral<"handshake_ack">;
311
+ id: Type.TString;
312
+ version: Type.TObject<{
313
+ major: Type.TInteger;
314
+ minor: Type.TInteger;
315
+ }>;
316
+ capabilities: Type.TArray<Type.TString>;
317
+ workspace: Type.TObject<{
318
+ id: Type.TString;
319
+ root: Type.TString;
320
+ pathFlavor: Type.TUnion<[Type.TLiteral<"posix">, Type.TLiteral<"windows">]>;
321
+ }>;
322
+ limits: Type.TObject<{
323
+ maxMessageBytes: Type.TInteger;
324
+ maxStringBytes: Type.TInteger;
325
+ maxDepth: Type.TInteger;
326
+ maxObjectKeys: Type.TInteger;
327
+ maxArrayLength: Type.TInteger;
328
+ maxNodes: Type.TInteger;
329
+ maxRequestMs: Type.TInteger;
330
+ maxTransferChunkBytes: Type.TInteger;
331
+ maxPendingTransferBytes: Type.TInteger;
332
+ maxPendingInboundBytes: Type.TInteger;
333
+ maxPendingInboundMessages: Type.TInteger;
334
+ maxPendingOutboundBytes: Type.TInteger;
335
+ maxPendingOutboundMessages: Type.TInteger;
336
+ maxTransferBytes: Type.TInteger;
337
+ maxTransferChunks: Type.TInteger;
338
+ maxActiveRequests: Type.TInteger;
339
+ maxActiveTransfers: Type.TInteger;
340
+ maxCancellationMs: Type.TInteger;
341
+ maxTransportSendMs: Type.TInteger;
342
+ }>;
343
+ catalog: Type.TObject<{
344
+ generation: Type.TInteger;
345
+ tools: Type.TArray<Type.TObject<{
346
+ name: Type.TString;
347
+ executionMode: Type.TUnion<[Type.TLiteral<"read">, Type.TLiteral<"mutation">, Type.TLiteral<"process">, Type.TLiteral<"service">]>;
348
+ parameterSchema: Type.TRecord<"^.*$", Type.TUnknown>;
349
+ schemaHash: Type.TString;
350
+ featureFlags: Type.TArray<Type.TString>;
351
+ }>>;
352
+ operations: Type.TArray<Type.TUnion<[Type.TLiteral<"catalog.get">, Type.TLiteral<"tool.invoke">, Type.TLiteral<"workspace.access">, Type.TLiteral<"workspace.read">, Type.TLiteral<"workspace.write">, Type.TLiteral<"workspace.mkdir">, Type.TLiteral<"workspace.stat">, Type.TLiteral<"workspace.readdir">, Type.TLiteral<"workspace.glob">, Type.TLiteral<"workspace.grep">, Type.TLiteral<"workspace.detect_image_mime">, Type.TLiteral<"workspace.exec">, Type.TLiteral<"lsp.status">, Type.TLiteral<"resource.read">, Type.TLiteral<"artifact.read">, Type.TLiteral<"transfer.upload">, Type.TLiteral<"transfer.download">]>>;
353
+ }>;
354
+ catalogHash: Type.TString;
355
+ backendMetadata: Type.TObject<{
356
+ kind: Type.TLiteral<"remote-workspace">;
357
+ label: Type.TOptional<Type.TString>;
358
+ }>;
359
+ }>, Type.TObject<{
360
+ type: Type.TLiteral<"result">;
361
+ id: Type.TString;
362
+ result: Type.TUnknown;
363
+ }>, Type.TObject<{
364
+ type: Type.TLiteral<"error">;
365
+ id: Type.TString;
366
+ error: Type.TObject<{
367
+ code: Type.TUnion<[Type.TLiteral<"invalid_request">, Type.TLiteral<"method_not_supported">, Type.TLiteral<"incompatible_version">, Type.TLiteral<"capability_mismatch">, Type.TLiteral<"schema_mismatch">, Type.TLiteral<"stale_generation">, Type.TLiteral<"not_available">, Type.TLiteral<"limit_exceeded">, Type.TLiteral<"deadline_exceeded">, Type.TLiteral<"cancelled">, Type.TLiteral<"conflict">, Type.TLiteral<"generation_retired">, Type.TLiteral<"connection_draining">, Type.TLiteral<"result_too_large">, Type.TLiteral<"internal_error">]>;
368
+ message: Type.TString;
369
+ executionState: Type.TUnion<[Type.TLiteral<"not_started">, Type.TLiteral<"completed">, Type.TLiteral<"indeterminate">]>;
370
+ retryable: Type.TBoolean;
371
+ details: Type.TOptional<Type.TUnknown>;
372
+ }>;
373
+ }>, Type.TObject<{
374
+ type: Type.TLiteral<"update">;
375
+ id: Type.TString;
376
+ sequence: Type.TInteger;
377
+ update: Type.TUnknown;
378
+ }>, Type.TObject<{
379
+ type: Type.TLiteral<"transfer_start">;
380
+ id: Type.TString;
381
+ length: Type.TInteger;
382
+ sha256: Type.TString;
383
+ }>, Type.TObject<{
384
+ type: Type.TLiteral<"transfer_chunk">;
385
+ id: Type.TString;
386
+ sequence: Type.TInteger;
387
+ dataBase64: Type.TString;
388
+ }>, Type.TObject<{
389
+ type: Type.TLiteral<"catalog_changed">;
390
+ generation: Type.TInteger;
391
+ catalogHash: Type.TString;
392
+ }>]>;
393
+ export type RemoteWorkspaceClientMessage = Static<typeof RemoteWorkspaceClientMessageSchema>;
394
+ export type RemoteWorkspaceServerMessage = Static<typeof RemoteWorkspaceServerMessageSchema>;
395
+ /** Shared v2 mutations require an observed digest/absence, or an explicitly unsafe write. */
396
+ declare const ExpectedRevisionSchema: Type.TUnion<[Type.TObject<{
397
+ sha256: Type.TString;
398
+ }>, Type.TObject<{
399
+ absent: Type.TLiteral<true>;
400
+ }>, Type.TObject<{
401
+ unsafeOverwrite: Type.TLiteral<true>;
402
+ }>]>;
403
+ export type ExpectedWorkspaceRevision = Static<typeof ExpectedRevisionSchema>;
404
+ declare const LspStatusResultSchema: Type.TObject<{
405
+ enabled: Type.TBoolean;
406
+ servers: Type.TArray<Type.TObject<{
407
+ serverId: Type.TString;
408
+ languageIds: Type.TArray<Type.TString>;
409
+ transport: Type.TString;
410
+ instanceKey: Type.TOptional<Type.TString>;
411
+ workspaceRoot: Type.TOptional<Type.TString>;
412
+ endpoint: Type.TOptional<Type.TString>;
413
+ rootUri: Type.TOptional<Type.TString>;
414
+ ownership: Type.TUnion<[Type.TLiteral<"managed">, Type.TLiteral<"attached">]>;
415
+ shutdownMode: Type.TUnion<[Type.TLiteral<"protocol">, Type.TLiteral<"disconnect">]>;
416
+ state: Type.TUnion<[Type.TLiteral<"idle">, Type.TLiteral<"connecting">, Type.TLiteral<"initializing">, Type.TLiteral<"running">, Type.TLiteral<"closed">, Type.TLiteral<"failed">, Type.TLiteral<"disposed">]>;
417
+ reconnectEligible: Type.TBoolean;
418
+ running: Type.TBoolean;
419
+ starting: Type.TBoolean;
420
+ diagnosticsCount: Type.TInteger;
421
+ lastError: Type.TOptional<Type.TString>;
422
+ lastRequestError: Type.TOptional<Type.TString>;
423
+ stderr: Type.TOptional<Type.TString>;
424
+ synchronizationError: Type.TOptional<Type.TString>;
425
+ }>>;
426
+ }>;
427
+ export type RemoteLspStatus = Static<typeof LspStatusResultSchema>;
428
+ export declare class RemoteWorkspaceValidationError extends Error {
429
+ constructor(message: string);
430
+ }
431
+ export declare function validateRemoteWorkspaceProtocolLimits(value: unknown): RemoteWorkspaceProtocolLimits;
432
+ export declare function assertRemoteWorkspaceJsonStructure(value: unknown, limits?: RemoteWorkspaceStructuralLimits): void;
433
+ export declare function decodeRemoteWorkspaceMessage(payload: string | Uint8Array, limits?: RemoteWorkspaceStructuralLimits): unknown;
434
+ export declare function parseRemoteWorkspaceClientMessage(value: unknown, limits?: RemoteWorkspaceStructuralLimits): RemoteWorkspaceClientMessage;
435
+ export declare function parseRemoteWorkspaceServerMessage(value: unknown, limits?: RemoteWorkspaceStructuralLimits): RemoteWorkspaceServerMessage;
436
+ export declare function isRemoteWorkspaceMethod(method: string): method is RemoteWorkspaceMethod;
437
+ export declare function parseRemoteWorkspaceRequestParams(method: RemoteWorkspaceMethod, value: unknown, limits?: RemoteWorkspaceStructuralLimits): unknown;
438
+ export declare function parseRemoteWorkspaceResult(method: RemoteWorkspaceMethod, value: unknown, limits?: RemoteWorkspaceStructuralLimits): unknown;
439
+ export declare function parseRemoteWorkspaceToolResult(value: unknown, limits?: RemoteWorkspaceStructuralLimits): unknown;
440
+ export declare function decodeCanonicalBase64(value: string, maxBytes: number): Buffer;
441
+ export declare function hashRemoteWorkspaceJson(value: unknown): string;
442
+ export declare function hashRemoteWorkspaceCatalog(catalog: RemoteWorkspaceCatalog): string;
443
+ export declare function validateRemoteWorkspaceCatalog(catalog: RemoteWorkspaceCatalog): void;
444
+ export declare function validateRemoteWorkspaceLocalToolSchemas(catalog: RemoteWorkspaceCatalog, localToolSchemas: ReadonlyMap<string, string>): void;
445
+ export declare function validateRemoteWorkspaceHandshakeAck(ack: unknown, offer: RemoteWorkspaceHandshake, localToolSchemas?: ReadonlyMap<string, string>): RemoteWorkspaceHandshakeAck;
446
+ export interface RemoteWorkspaceNegotiationOptions {
447
+ serverVersions: readonly RemoteWorkspaceVersionRange[];
448
+ serverCapabilities: readonly string[];
449
+ requiredClientCapabilities?: readonly string[];
450
+ serverLimits: RemoteWorkspaceProtocolLimits;
451
+ }
452
+ export interface RemoteWorkspaceNegotiationResult {
453
+ version: RemoteWorkspaceVersion;
454
+ capabilities: string[];
455
+ limits: RemoteWorkspaceProtocolLimits;
456
+ }
457
+ export type RemoteWorkspaceNegotiationErrorCode = "incompatible_version" | "capability_mismatch";
458
+ export declare class RemoteWorkspaceNegotiationError extends Error {
459
+ readonly code: RemoteWorkspaceNegotiationErrorCode;
460
+ constructor(code: RemoteWorkspaceNegotiationErrorCode, message: string);
461
+ }
462
+ export declare function negotiateRemoteWorkspaceHandshake(handshake: RemoteWorkspaceHandshake, options: RemoteWorkspaceNegotiationOptions): RemoteWorkspaceNegotiationResult;
463
+ export declare function getRemoteWorkspaceMethodKind(method: RemoteWorkspaceMethod): RemoteWorkspaceOperationKind;
464
+ export {};
465
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/core/remote-workspace-protocol/contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG5C,eAAO,MAAM,kCAAkC;;;;EAAoD,CAAC;AAEpG,eAAO,MAAM,6BAA6B,kHAOhC,CAAC;AAEX,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvF,eAAO,MAAM,wBAAwB,yUAkB3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,eAAO,MAAM,4BAA4B,gTAgB/B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AACrF,MAAM,MAAM,6BAA6B,GAAG,aAAa,GAAG,WAAW,GAAG,eAAe,CAAC;AAC1F,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,SAAS,CAAC;AAC5D,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEvF,MAAM,WAAW,+BAA+B;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA8B,SAAQ,+BAA+B;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yBAAyB,EAAE,MAAM,CAAC;IAClC,uBAAuB,EAAE,MAAM,CAAC;IAChC,0BAA0B,EAAE,MAAM,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,wCAAwC,EAAE,6BAoBtD,CAAC;AA2BF,eAAO,MAAM,iCAAiC;;;;EAO7C,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE3F,eAAO,MAAM,4BAA4B;;;EAMxC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAEjF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;EAuBvC,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;EAOzC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEnF,eAAO,MAAM,qCAAqC;;;;;;EAcjD,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,MAAM,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAEnG,eAAO,MAAM,4BAA4B;;;;;;;;;;EAOxC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAEjF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU1C,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAErF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB7C,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE3F,eAAO,MAAM,4BAA4B;;;;;;EASxC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAEjF,eAAO,MAAM,2BAA2B;;;;EAOvC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE/E,eAAO,MAAM,kCAAkC;;;;;EAQ9C,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE7F,eAAO,MAAM,mCAAmC;;;;;EAQ/C,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAE/F,eAAO,MAAM,2BAA2B;;;;EAOvC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE/E,eAAO,MAAM,kCAAkC;;;;;;EA6B9C,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE7F,eAAO,MAAM,iCAAiC;;;;;;;;;;EAO7C,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE3F,eAAO,MAAM,2BAA2B;;;;;EAQvC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE/E,eAAO,MAAM,kCAAkC;;;;;EAQ9C,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE7F,eAAO,MAAM,mCAAmC;;;;EAO/C,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAE/F,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAM7C,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQ7C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAC7F,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAe7F,6FAA6F;AAC7F,QAAA,MAAM,sBAAsB;;;;;;IAI1B,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AA2I9E,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;EAG1B,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AA2HnE,qBAAa,8BAA+B,SAAQ,KAAK;IACxD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD;AAeD,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,OAAO,GAAG,6BAA6B,CAenG;AAoED,wBAAgB,kCAAkC,CACjD,KAAK,EAAE,OAAO,EACd,MAAM,GAAE,+BAA0E,GAChF,IAAI,CAkBN;AAED,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,MAAM,GAAE,+BAA0E,GAChF,OAAO,CAgBT;AAED,wBAAgB,iCAAiC,CAChD,KAAK,EAAE,OAAO,EACd,MAAM,GAAE,+BAA0E,GAChF,4BAA4B,CAG9B;AAED,wBAAgB,iCAAiC,CAChD,KAAK,EAAE,OAAO,EACd,MAAM,GAAE,+BAA0E,GAChF,4BAA4B,CAG9B;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,qBAAqB,CAEvF;AAED,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,OAAO,EACd,MAAM,GAAE,+BAA0E,GAChF,OAAO,CAOT;AAED,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,OAAO,EACd,MAAM,GAAE,+BAA0E,GAChF,OAAO,CAQT;AAED,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,OAAO,EACd,MAAM,GAAE,+BAA0E,GAChF,OAAO,CAGT;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU7E;AAkBD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG9D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAElF;AAMD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAapF;AAED,wBAAgB,uCAAuC,CACtD,OAAO,EAAE,sBAAsB,EAC/B,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,IAAI,CASN;AAED,wBAAgB,mCAAmC,CAClD,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,wBAAwB,EAC/B,gBAAgB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GACvD,2BAA2B,CAoC7B;AAED,MAAM,WAAW,iCAAiC;IACjD,cAAc,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvD,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,0BAA0B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,YAAY,EAAE,6BAA6B,CAAC;CAC5C;AAED,MAAM,WAAW,gCAAgC;IAChD,OAAO,EAAE,sBAAsB,CAAC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,6BAA6B,CAAC;CACtC;AAED,MAAM,MAAM,mCAAmC,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AAEjG,qBAAa,+BAAgC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,mCAAmC,CAAC;IAEnD,YAAY,IAAI,EAAE,mCAAmC,EAAE,OAAO,EAAE,MAAM,EAIrE;CACD;AA+BD,wBAAgB,iCAAiC,CAChD,SAAS,EAAE,wBAAwB,EACnC,OAAO,EAAE,iCAAiC,GACxC,gCAAgC,CA8ElC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,qBAAqB,GAAG,4BAA4B,CAaxG","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { type Static, Type } from \"typebox\";\nimport { Compile, type Validator } from \"typebox/compile\";\n\nexport const REMOTE_WORKSPACE_PROTOCOL_VERSIONS = [{ major: 1, minMinor: 0, maxMinor: 0 }] as const;\n\nexport const REMOTE_WORKSPACE_CAPABILITIES = [\n\t\"catalog_refresh\",\n\t\"tool_updates\",\n\t\"primitive_operations\",\n\t\"lsp_status\",\n\t\"file_transfer\",\n\t\"artifacts\",\n] as const;\n\nexport type RemoteWorkspaceCapability = (typeof REMOTE_WORKSPACE_CAPABILITIES)[number];\n\nexport const REMOTE_WORKSPACE_METHODS = [\n\t\"catalog.get\",\n\t\"tool.invoke\",\n\t\"workspace.access\",\n\t\"workspace.read\",\n\t\"workspace.write\",\n\t\"workspace.mkdir\",\n\t\"workspace.stat\",\n\t\"workspace.readdir\",\n\t\"workspace.glob\",\n\t\"workspace.grep\",\n\t\"workspace.detect_image_mime\",\n\t\"workspace.exec\",\n\t\"lsp.status\",\n\t\"resource.read\",\n\t\"artifact.read\",\n\t\"transfer.upload\",\n\t\"transfer.download\",\n] as const;\n\nexport type RemoteWorkspaceMethod = (typeof REMOTE_WORKSPACE_METHODS)[number];\n\nexport const REMOTE_WORKSPACE_ERROR_CODES = [\n\t\"invalid_request\",\n\t\"method_not_supported\",\n\t\"incompatible_version\",\n\t\"capability_mismatch\",\n\t\"schema_mismatch\",\n\t\"stale_generation\",\n\t\"not_available\",\n\t\"limit_exceeded\",\n\t\"deadline_exceeded\",\n\t\"cancelled\",\n\t\"conflict\",\n\t\"generation_retired\",\n\t\"connection_draining\",\n\t\"result_too_large\",\n\t\"internal_error\",\n] as const;\n\nexport type RemoteWorkspaceErrorCode = (typeof REMOTE_WORKSPACE_ERROR_CODES)[number];\nexport type RemoteWorkspaceExecutionState = \"not_started\" | \"completed\" | \"indeterminate\";\nexport type RemoteWorkspacePathFlavor = \"posix\" | \"windows\";\nexport type RemoteWorkspaceOperationKind = \"read\" | \"mutation\" | \"process\" | \"service\";\n\nexport interface RemoteWorkspaceStructuralLimits {\n\tmaxMessageBytes: number;\n\tmaxStringBytes: number;\n\tmaxDepth: number;\n\tmaxObjectKeys: number;\n\tmaxArrayLength: number;\n\tmaxNodes: number;\n}\n\nexport interface RemoteWorkspaceProtocolLimits extends RemoteWorkspaceStructuralLimits {\n\tmaxRequestMs: number;\n\tmaxTransferChunkBytes: number;\n\tmaxPendingTransferBytes: number;\n\tmaxPendingInboundBytes: number;\n\tmaxPendingInboundMessages: number;\n\tmaxPendingOutboundBytes: number;\n\tmaxPendingOutboundMessages: number;\n\tmaxTransferBytes: number;\n\tmaxTransferChunks: number;\n\tmaxActiveRequests: number;\n\tmaxActiveTransfers: number;\n\tmaxCancellationMs: number;\n\tmaxTransportSendMs: number;\n}\n\nexport const DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS: RemoteWorkspaceProtocolLimits = {\n\tmaxMessageBytes: 2 * 1024 * 1024,\n\tmaxStringBytes: 1536 * 1024,\n\tmaxDepth: 32,\n\tmaxObjectKeys: 4096,\n\tmaxArrayLength: 4096,\n\tmaxNodes: 16_384,\n\tmaxRequestMs: 10 * 60 * 1000,\n\tmaxTransferChunkBytes: 64 * 1024,\n\tmaxPendingTransferBytes: 256 * 1024,\n\tmaxPendingInboundBytes: 4 * 1024 * 1024,\n\tmaxPendingInboundMessages: 64,\n\tmaxPendingOutboundBytes: 4 * 1024 * 1024,\n\tmaxPendingOutboundMessages: 128,\n\tmaxTransferBytes: 100 * 1024 * 1024,\n\tmaxTransferChunks: 16_384,\n\tmaxActiveRequests: 64,\n\tmaxActiveTransfers: 8,\n\tmaxCancellationMs: 100,\n\tmaxTransportSendMs: 10_000,\n};\n\nconst closedObject = { additionalProperties: false } as const;\nconst safeIntegerOptions = { minimum: 0, maximum: Number.MAX_SAFE_INTEGER } as const;\nconst RequestIdSchema = Type.String({ minLength: 1, maxLength: 128, pattern: \"^[A-Za-z0-9._:-]+$\" });\nconst HashSchema = Type.String({ pattern: \"^[0-9a-f]{64}$\" });\nconst CapabilitySchema = Type.String({ minLength: 1, maxLength: 128, pattern: \"^[a-z][a-z0-9_.-]*$\" });\nconst RemoteWorkspaceMethodSchema = Type.Union([\n\tType.Literal(\"catalog.get\"),\n\tType.Literal(\"tool.invoke\"),\n\tType.Literal(\"workspace.access\"),\n\tType.Literal(\"workspace.read\"),\n\tType.Literal(\"workspace.write\"),\n\tType.Literal(\"workspace.mkdir\"),\n\tType.Literal(\"workspace.stat\"),\n\tType.Literal(\"workspace.readdir\"),\n\tType.Literal(\"workspace.glob\"),\n\tType.Literal(\"workspace.grep\"),\n\tType.Literal(\"workspace.detect_image_mime\"),\n\tType.Literal(\"workspace.exec\"),\n\tType.Literal(\"lsp.status\"),\n\tType.Literal(\"resource.read\"),\n\tType.Literal(\"artifact.read\"),\n\tType.Literal(\"transfer.upload\"),\n\tType.Literal(\"transfer.download\"),\n]);\n\nexport const RemoteWorkspaceVersionRangeSchema = Type.Object(\n\t{\n\t\tmajor: Type.Integer({ minimum: 1, maximum: 65535 }),\n\t\tminMinor: Type.Integer({ minimum: 0, maximum: 65535 }),\n\t\tmaxMinor: Type.Integer({ minimum: 0, maximum: 65535 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceVersionRange = Static<typeof RemoteWorkspaceVersionRangeSchema>;\n\nexport const RemoteWorkspaceVersionSchema = Type.Object(\n\t{\n\t\tmajor: Type.Integer({ minimum: 1, maximum: 65535 }),\n\t\tminor: Type.Integer({ minimum: 0, maximum: 65535 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceVersion = Static<typeof RemoteWorkspaceVersionSchema>;\n\nexport const RemoteWorkspaceLimitsSchema = Type.Object(\n\t{\n\t\tmaxMessageBytes: Type.Integer({ minimum: 1024, maximum: 64 * 1024 * 1024 }),\n\t\tmaxStringBytes: Type.Integer({ minimum: 1, maximum: 64 * 1024 * 1024 }),\n\t\tmaxDepth: Type.Integer({ minimum: 1, maximum: 256 }),\n\t\tmaxObjectKeys: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t\tmaxArrayLength: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t\tmaxNodes: Type.Integer({ minimum: 1, maximum: 2_000_000 }),\n\t\tmaxRequestMs: Type.Integer({ minimum: 1, maximum: 24 * 60 * 60 * 1000 }),\n\t\tmaxTransferChunkBytes: Type.Integer({ minimum: 1024, maximum: 1024 * 1024 }),\n\t\tmaxPendingTransferBytes: Type.Integer({ minimum: 1024, maximum: 16 * 1024 * 1024 }),\n\t\tmaxPendingInboundBytes: Type.Integer({ minimum: 1024, maximum: 64 * 1024 * 1024 }),\n\t\tmaxPendingInboundMessages: Type.Integer({ minimum: 1, maximum: 100_000 }),\n\t\tmaxPendingOutboundBytes: Type.Integer({ minimum: 1024, maximum: 64 * 1024 * 1024 }),\n\t\tmaxPendingOutboundMessages: Type.Integer({ minimum: 1, maximum: 100_000 }),\n\t\tmaxTransferBytes: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\tmaxTransferChunks: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t\tmaxActiveRequests: Type.Integer({ minimum: 1, maximum: 10_000_000 }),\n\t\tmaxActiveTransfers: Type.Integer({ minimum: 1, maximum: 10_000 }),\n\t\tmaxCancellationMs: Type.Integer({ minimum: 1, maximum: 60_000 }),\n\t\tmaxTransportSendMs: Type.Integer({ minimum: 1, maximum: 5 * 60_000 }),\n\t},\n\tclosedObject,\n);\n\nexport const RemoteWorkspaceIdentitySchema = Type.Object(\n\t{\n\t\tid: Type.String({ minLength: 16, maxLength: 128, pattern: \"^[A-Za-z0-9_-]+$\" }),\n\t\troot: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tpathFlavor: Type.Union([Type.Literal(\"posix\"), Type.Literal(\"windows\")]),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceIdentity = Static<typeof RemoteWorkspaceIdentitySchema>;\n\nexport const RemoteWorkspaceToolCatalogEntrySchema = Type.Object(\n\t{\n\t\tname: Type.String({ minLength: 1, maxLength: 128, pattern: \"^[A-Za-z][A-Za-z0-9_.-]*$\" }),\n\t\texecutionMode: Type.Union([\n\t\t\tType.Literal(\"read\"),\n\t\t\tType.Literal(\"mutation\"),\n\t\t\tType.Literal(\"process\"),\n\t\t\tType.Literal(\"service\"),\n\t\t]),\n\t\tparameterSchema: Type.Record(Type.String({ maxLength: 256 }), Type.Unknown()),\n\t\tschemaHash: HashSchema,\n\t\tfeatureFlags: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceToolCatalogEntry = Static<typeof RemoteWorkspaceToolCatalogEntrySchema>;\n\nexport const RemoteWorkspaceCatalogSchema = Type.Object(\n\t{\n\t\tgeneration: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\ttools: Type.Array(RemoteWorkspaceToolCatalogEntrySchema, { maxItems: 1024 }),\n\t\toperations: Type.Array(RemoteWorkspaceMethodSchema, { maxItems: 256 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceCatalog = Static<typeof RemoteWorkspaceCatalogSchema>;\n\nexport const RemoteWorkspaceHandshakeSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"handshake\"),\n\t\tid: RequestIdSchema,\n\t\tversions: Type.Array(RemoteWorkspaceVersionRangeSchema, { minItems: 1, maxItems: 16 }),\n\t\trequiredCapabilities: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t\toptionalCapabilities: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t\treceiveLimits: RemoteWorkspaceLimitsSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceHandshake = Static<typeof RemoteWorkspaceHandshakeSchema>;\n\nexport const RemoteWorkspaceHandshakeAckSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"handshake_ack\"),\n\t\tid: RequestIdSchema,\n\t\tversion: RemoteWorkspaceVersionSchema,\n\t\tcapabilities: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t\tlimits: RemoteWorkspaceLimitsSchema,\n\t\tcatalog: RemoteWorkspaceCatalogSchema,\n\t\tcatalogHash: HashSchema,\n\t\tbackendMetadata: Type.Object(\n\t\t\t{\n\t\t\t\tkind: Type.Literal(\"remote-workspace\"),\n\t\t\t\tlabel: Type.Optional(Type.String({ minLength: 1, maxLength: 256 })),\n\t\t\t},\n\t\t\tclosedObject,\n\t\t),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceHandshakeAck = Static<typeof RemoteWorkspaceHandshakeAckSchema>;\n\nexport const RemoteWorkspaceRequestSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"request\"),\n\t\tid: RequestIdSchema,\n\t\tmethod: Type.String({ minLength: 1, maxLength: 128 }),\n\t\ttimeoutMs: Type.Integer({ minimum: 1, maximum: 24 * 60 * 60 * 1000 }),\n\t\tparams: Type.Unknown(),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceRequest = Static<typeof RemoteWorkspaceRequestSchema>;\n\nexport const RemoteWorkspaceCancelSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"cancel\"),\n\t\tid: RequestIdSchema,\n\t\treason: Type.Optional(Type.String({ maxLength: 256 })),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceCancel = Static<typeof RemoteWorkspaceCancelSchema>;\n\nexport const RemoteWorkspaceTransferChunkSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"transfer_chunk\"),\n\t\tid: RequestIdSchema,\n\t\tsequence: Type.Integer(safeIntegerOptions),\n\t\tdataBase64: Type.String({ minLength: 4 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceTransferChunk = Static<typeof RemoteWorkspaceTransferChunkSchema>;\n\nexport const RemoteWorkspaceTransferFinishSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"transfer_finish\"),\n\t\tid: RequestIdSchema,\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceTransferFinish = Static<typeof RemoteWorkspaceTransferFinishSchema>;\n\nexport const RemoteWorkspaceResultSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"result\"),\n\t\tid: RequestIdSchema,\n\t\tresult: Type.Unknown(),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceResult = Static<typeof RemoteWorkspaceResultSchema>;\n\nexport const RemoteWorkspaceProtocolErrorSchema = Type.Object(\n\t{\n\t\tcode: Type.Union([\n\t\t\tType.Literal(\"invalid_request\"),\n\t\t\tType.Literal(\"method_not_supported\"),\n\t\t\tType.Literal(\"incompatible_version\"),\n\t\t\tType.Literal(\"capability_mismatch\"),\n\t\t\tType.Literal(\"schema_mismatch\"),\n\t\t\tType.Literal(\"stale_generation\"),\n\t\t\tType.Literal(\"not_available\"),\n\t\t\tType.Literal(\"limit_exceeded\"),\n\t\t\tType.Literal(\"deadline_exceeded\"),\n\t\t\tType.Literal(\"cancelled\"),\n\t\t\tType.Literal(\"conflict\"),\n\t\t\tType.Literal(\"generation_retired\"),\n\t\t\tType.Literal(\"connection_draining\"),\n\t\t\tType.Literal(\"result_too_large\"),\n\t\t\tType.Literal(\"internal_error\"),\n\t\t]),\n\t\tmessage: Type.String({ minLength: 1, maxLength: 4096 }),\n\t\texecutionState: Type.Union([\n\t\t\tType.Literal(\"not_started\"),\n\t\t\tType.Literal(\"completed\"),\n\t\t\tType.Literal(\"indeterminate\"),\n\t\t]),\n\t\tretryable: Type.Boolean(),\n\t\tdetails: Type.Optional(Type.Unknown()),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceProtocolError = Static<typeof RemoteWorkspaceProtocolErrorSchema>;\n\nexport const RemoteWorkspaceErrorMessageSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"error\"),\n\t\tid: RequestIdSchema,\n\t\terror: RemoteWorkspaceProtocolErrorSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceErrorMessage = Static<typeof RemoteWorkspaceErrorMessageSchema>;\n\nexport const RemoteWorkspaceUpdateSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"update\"),\n\t\tid: RequestIdSchema,\n\t\tsequence: Type.Integer(safeIntegerOptions),\n\t\tupdate: Type.Unknown(),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceUpdate = Static<typeof RemoteWorkspaceUpdateSchema>;\n\nexport const RemoteWorkspaceTransferStartSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"transfer_start\"),\n\t\tid: RequestIdSchema,\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceTransferStart = Static<typeof RemoteWorkspaceTransferStartSchema>;\n\nexport const RemoteWorkspaceCatalogChangedSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"catalog_changed\"),\n\t\tgeneration: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\tcatalogHash: HashSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceCatalogChanged = Static<typeof RemoteWorkspaceCatalogChangedSchema>;\n\nexport const RemoteWorkspaceClientMessageSchema = Type.Union([\n\tRemoteWorkspaceHandshakeSchema,\n\tRemoteWorkspaceRequestSchema,\n\tRemoteWorkspaceCancelSchema,\n\tRemoteWorkspaceTransferChunkSchema,\n\tRemoteWorkspaceTransferFinishSchema,\n]);\n\nexport const RemoteWorkspaceServerMessageSchema = Type.Union([\n\tRemoteWorkspaceHandshakeAckSchema,\n\tRemoteWorkspaceResultSchema,\n\tRemoteWorkspaceErrorMessageSchema,\n\tRemoteWorkspaceUpdateSchema,\n\tRemoteWorkspaceTransferStartSchema,\n\tRemoteWorkspaceTransferChunkSchema,\n\tRemoteWorkspaceCatalogChangedSchema,\n]);\n\nexport type RemoteWorkspaceClientMessage = Static<typeof RemoteWorkspaceClientMessageSchema>;\nexport type RemoteWorkspaceServerMessage = Static<typeof RemoteWorkspaceServerMessageSchema>;\n\nconst EmptyParamsSchema = Type.Object({}, closedObject);\nconst PathParamsSchema = Type.Object({ path: Type.String({ minLength: 1, maxLength: 32_768 }) }, closedObject);\nconst CatalogGetParamsSchema = EmptyParamsSchema;\nconst SessionEnvironmentSchema = Type.Object(\n\t{\n\t\tGRIP_SESSION_ID: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_SESSION_FILE: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_PROVIDER: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_MODEL: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_REASONING_LEVEL: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t},\n\tclosedObject,\n);\n/** Shared v2 mutations require an observed digest/absence, or an explicitly unsafe write. */\nconst ExpectedRevisionSchema = Type.Union([\n\tType.Object({ sha256: HashSchema }, closedObject),\n\tType.Object({ absent: Type.Literal(true) }, closedObject),\n\tType.Object({ unsafeOverwrite: Type.Literal(true) }, closedObject),\n]);\nexport type ExpectedWorkspaceRevision = Static<typeof ExpectedRevisionSchema>;\nconst ToolInvokeParamsSchema = Type.Object(\n\t{\n\t\tgeneration: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\tcatalogHash: HashSchema,\n\t\ttoolName: Type.String({ minLength: 1, maxLength: 128 }),\n\t\tschemaHash: HashSchema,\n\t\targumentsPrepared: Type.Literal(true),\n\t\targuments: Type.Unknown(),\n\t\texpectedRevision: Type.Optional(ExpectedRevisionSchema),\n\t\texecutionOptions: Type.Object(\n\t\t\t{\n\t\t\t\timageAutoResize: Type.Optional(Type.Boolean()),\n\t\t\t\tshellCommandPrefix: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\t\t\tsessionEnvironment: Type.Optional(SessionEnvironmentSchema),\n\t\t\t},\n\t\t\tclosedObject,\n\t\t),\n\t},\n\tclosedObject,\n);\nconst AccessParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tmode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"exists\"), Type.Literal(\"read\"), Type.Literal(\"write\"), Type.Literal(\"readwrite\")]),\n\t\t),\n\t},\n\tclosedObject,\n);\nconst WriteParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tcontentBase64: Type.String(),\n\t\texpectedRevision: Type.Optional(ExpectedRevisionSchema),\n\t},\n\tclosedObject,\n);\nconst MkdirParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\trecursive: Type.Boolean(),\n\t},\n\tclosedObject,\n);\nconst GlobParamsSchema = Type.Object(\n\t{\n\t\tpattern: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tcwd: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tignore: Type.Array(Type.String({ maxLength: 32_768 }), { maxItems: 4096 }),\n\t\tlimit: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t},\n\tclosedObject,\n);\nconst GrepParamsSchema = Type.Object(\n\t{\n\t\tpattern: Type.String({ maxLength: 1024 * 1024 }),\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tglob: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tignoreCase: Type.Optional(Type.Boolean()),\n\t\tliteral: Type.Optional(Type.Boolean()),\n\t\tlimit: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t},\n\tclosedObject,\n);\nconst ExecParamsSchema = Type.Object(\n\t{\n\t\tcommand: Type.String({ minLength: 1 }),\n\t\tcwd: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t},\n\tclosedObject,\n);\nconst TransferUploadParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t\toverwrite: Type.Boolean(),\n\t},\n\tclosedObject,\n);\nconst TransferDownloadParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t},\n\tclosedObject,\n);\n\nconst ToolContentSchema = Type.Union([\n\tType.Object({ type: Type.Literal(\"text\"), text: Type.String() }, closedObject),\n\tType.Object(\n\t\t{\n\t\t\ttype: Type.Literal(\"image\"),\n\t\t\tdata: Type.String(),\n\t\t\tmimeType: Type.String({ minLength: 1, maxLength: 256 }),\n\t\t},\n\t\tclosedObject,\n\t),\n]);\nconst ToolResultSchema = Type.Object(\n\t{\n\t\tcontent: Type.Array(ToolContentSchema),\n\t\tdetails: Type.Optional(Type.Unknown()),\n\t\tterminate: Type.Optional(Type.Boolean()),\n\t},\n\tclosedObject,\n);\nconst EmptyResultSchema = EmptyParamsSchema;\nconst LspStatusServerSchema = Type.Object(\n\t{\n\t\tserverId: Type.String({ minLength: 1, maxLength: 256 }),\n\t\tlanguageIds: Type.Array(Type.String({ maxLength: 256 }), { maxItems: 256 }),\n\t\ttransport: Type.String({ minLength: 1, maxLength: 128 }),\n\t\tinstanceKey: Type.Optional(Type.String({ maxLength: 4096 })),\n\t\tworkspaceRoot: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tendpoint: Type.Optional(Type.String({ maxLength: 4096 })),\n\t\trootUri: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\townership: Type.Union([Type.Literal(\"managed\"), Type.Literal(\"attached\")]),\n\t\tshutdownMode: Type.Union([Type.Literal(\"protocol\"), Type.Literal(\"disconnect\")]),\n\t\tstate: Type.Union([\n\t\t\tType.Literal(\"idle\"),\n\t\t\tType.Literal(\"connecting\"),\n\t\t\tType.Literal(\"initializing\"),\n\t\t\tType.Literal(\"running\"),\n\t\t\tType.Literal(\"closed\"),\n\t\t\tType.Literal(\"failed\"),\n\t\t\tType.Literal(\"disposed\"),\n\t\t]),\n\t\treconnectEligible: Type.Boolean(),\n\t\trunning: Type.Boolean(),\n\t\tstarting: Type.Boolean(),\n\t\tdiagnosticsCount: Type.Integer(safeIntegerOptions),\n\t\tlastError: Type.Optional(Type.String()),\n\t\tlastRequestError: Type.Optional(Type.String()),\n\t\tstderr: Type.Optional(Type.String()),\n\t\tsynchronizationError: Type.Optional(Type.String()),\n\t},\n\tclosedObject,\n);\nconst LspStatusResultSchema = Type.Object(\n\t{ enabled: Type.Boolean(), servers: Type.Array(LspStatusServerSchema, { maxItems: 1024 }) },\n\tclosedObject,\n);\nexport type RemoteLspStatus = Static<typeof LspStatusResultSchema>;\nconst ReadResultSchema = Type.Object(\n\t{\n\t\tcontentBase64: Type.String(),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t\trevision: Type.Optional(HashSchema),\n\t},\n\tclosedObject,\n);\nconst StatResultSchema = Type.Object(\n\t{\n\t\tkind: Type.Union([\n\t\t\tType.Literal(\"file\"),\n\t\t\tType.Literal(\"directory\"),\n\t\t\tType.Literal(\"other\"),\n\t\t\tType.Literal(\"absent\"),\n\t\t]),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst ReaddirResultSchema = Type.Object(\n\t{\n\t\tentries: Type.Array(Type.String({ maxLength: 32_768 }), { maxItems: 1_000_000 }),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst GlobResultSchema = Type.Object(\n\t{\n\t\tmatches: Type.Array(Type.String({ maxLength: 32_768 }), { maxItems: 1_000_000 }),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst GrepResultSchema = Type.Object(\n\t{\n\t\tisDirectory: Type.Boolean(),\n\t\tmatches: Type.Array(\n\t\t\tType.Object(\n\t\t\t\t{\n\t\t\t\t\tfilePath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\t\t\t\tlineNumber: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\t\t\t\tlineText: Type.Optional(Type.String()),\n\t\t\t\t},\n\t\t\t\tclosedObject,\n\t\t\t),\n\t\t\t{ maxItems: 1_000_000 },\n\t\t),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst MimeResultSchema = Type.Object(\n\t{\n\t\tmimeType: Type.Union([\n\t\t\tType.Literal(\"image/jpeg\"),\n\t\t\tType.Literal(\"image/png\"),\n\t\t\tType.Literal(\"image/gif\"),\n\t\t\tType.Literal(\"image/webp\"),\n\t\t\tType.Null(),\n\t\t]),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst ExecResultSchema = Type.Object(\n\t{ exitCode: Type.Union([Type.Integer({ minimum: 0, maximum: 255 }), Type.Null()]) },\n\tclosedObject,\n);\nconst TransferResultSchema = Type.Object(\n\t{\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t},\n\tclosedObject,\n);\n\nconst parameterValidators = {\n\t\"catalog.get\": Compile(CatalogGetParamsSchema),\n\t\"tool.invoke\": Compile(ToolInvokeParamsSchema),\n\t\"workspace.access\": Compile(AccessParamsSchema),\n\t\"workspace.read\": Compile(PathParamsSchema),\n\t\"workspace.write\": Compile(WriteParamsSchema),\n\t\"workspace.mkdir\": Compile(MkdirParamsSchema),\n\t\"workspace.stat\": Compile(PathParamsSchema),\n\t\"workspace.readdir\": Compile(PathParamsSchema),\n\t\"workspace.glob\": Compile(GlobParamsSchema),\n\t\"workspace.grep\": Compile(GrepParamsSchema),\n\t\"workspace.detect_image_mime\": Compile(PathParamsSchema),\n\t\"workspace.exec\": Compile(ExecParamsSchema),\n\t\"lsp.status\": Compile(EmptyParamsSchema),\n\t\"resource.read\": Compile(PathParamsSchema),\n\t\"artifact.read\": Compile(PathParamsSchema),\n\t\"transfer.upload\": Compile(TransferUploadParamsSchema),\n\t\"transfer.download\": Compile(TransferDownloadParamsSchema),\n} satisfies Record<RemoteWorkspaceMethod, ReturnType<typeof Compile>>;\n\nconst resultValidators = {\n\t\"catalog.get\": Compile(RemoteWorkspaceCatalogSchema),\n\t\"tool.invoke\": Compile(ToolResultSchema),\n\t\"workspace.access\": Compile(EmptyResultSchema),\n\t\"workspace.read\": Compile(ReadResultSchema),\n\t\"workspace.write\": Compile(EmptyResultSchema),\n\t\"workspace.mkdir\": Compile(EmptyResultSchema),\n\t\"workspace.stat\": Compile(StatResultSchema),\n\t\"workspace.readdir\": Compile(ReaddirResultSchema),\n\t\"workspace.glob\": Compile(GlobResultSchema),\n\t\"workspace.grep\": Compile(GrepResultSchema),\n\t\"workspace.detect_image_mime\": Compile(MimeResultSchema),\n\t\"workspace.exec\": Compile(ExecResultSchema),\n\t\"lsp.status\": Compile(LspStatusResultSchema),\n\t\"resource.read\": Compile(ReadResultSchema),\n\t\"artifact.read\": Compile(TransferResultSchema),\n\t\"transfer.upload\": Compile(TransferResultSchema),\n\t\"transfer.download\": Compile(TransferResultSchema),\n} satisfies Record<RemoteWorkspaceMethod, ReturnType<typeof Compile> | undefined>;\n\nconst clientMessageValidator = Compile(RemoteWorkspaceClientMessageSchema);\nconst serverMessageValidator = Compile(RemoteWorkspaceServerMessageSchema);\nconst handshakeAckValidator = Compile(RemoteWorkspaceHandshakeAckSchema);\nconst limitsValidator = Compile(RemoteWorkspaceLimitsSchema);\n\nexport class RemoteWorkspaceValidationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"RemoteWorkspaceValidationError\";\n\t}\n}\n\nfunction validationMessage(validator: Validator, value: unknown): string {\n\tconst error = validator.Errors(value)[0];\n\tif (!error) return \"value does not match the protocol schema\";\n\treturn `${error.instancePath || \"/\"}: ${error.message}`;\n}\n\nfunction parseWithValidator<T>(validator: Validator, value: unknown, label: string): T {\n\tif (!validator.Check(value)) {\n\t\tthrow new RemoteWorkspaceValidationError(`Invalid ${label}: ${validationMessage(validator, value)}`);\n\t}\n\treturn value as T;\n}\n\nexport function validateRemoteWorkspaceProtocolLimits(value: unknown): RemoteWorkspaceProtocolLimits {\n\tconst limits = parseWithValidator<RemoteWorkspaceProtocolLimits>(limitsValidator, value, \"protocol limits\");\n\tif (limits.maxMessageBytes > limits.maxPendingInboundBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxMessageBytes must not exceed maxPendingInboundBytes\");\n\t}\n\tif (limits.maxMessageBytes > limits.maxPendingOutboundBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxMessageBytes must not exceed maxPendingOutboundBytes\");\n\t}\n\tif (limits.maxTransferChunkBytes > limits.maxPendingTransferBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxTransferChunkBytes must not exceed maxPendingTransferBytes\");\n\t}\n\tif (Math.ceil((limits.maxTransferChunkBytes * 4) / 3) + 512 > limits.maxMessageBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxTransferChunkBytes must fit in one base64 protocol message\");\n\t}\n\treturn limits;\n}\n\ninterface RemoteWorkspacePendingValue {\n\tvalue: unknown;\n\tdepth: number;\n}\n\ninterface RemoteWorkspaceStructureState {\n\tpending: RemoteWorkspacePendingValue[];\n\tnodes: number;\n\tobjectKeys: number;\n\tlimits: RemoteWorkspaceStructuralLimits;\n}\n\nfunction validateRemoteWorkspaceNodeBudget(depth: number, state: RemoteWorkspaceStructureState): void {\n\tstate.nodes++;\n\tif (state.nodes > state.limits.maxNodes)\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol value exceeds node limit\");\n\tif (depth > state.limits.maxDepth) throw new RemoteWorkspaceValidationError(\"Protocol value exceeds depth limit\");\n}\n\nfunction validateRemoteWorkspaceScalar(value: unknown, limits: RemoteWorkspaceStructuralLimits): boolean {\n\tif (value === null || typeof value === \"boolean\") return true;\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isFinite(value)) throw new RemoteWorkspaceValidationError(\"Protocol numbers must be finite\");\n\t\treturn true;\n\t}\n\tif (typeof value !== \"string\") return false;\n\tif (Buffer.byteLength(value, \"utf8\") > limits.maxStringBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol string exceeds byte limit\");\n\t}\n\treturn true;\n}\n\nfunction enqueueRemoteWorkspaceArray(value: unknown[], depth: number, state: RemoteWorkspaceStructureState): void {\n\tif (value.length > state.limits.maxArrayLength) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol array exceeds item limit\");\n\t}\n\tfor (let index = value.length - 1; index >= 0; index--) {\n\t\tstate.pending.push({ value: value[index], depth: depth + 1 });\n\t}\n}\n\nfunction enqueueRemoteWorkspaceObject(value: unknown, depth: number, state: RemoteWorkspaceStructureState): void {\n\tif (value === null || typeof value !== \"object\")\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol values must be JSON-compatible\");\n\tconst prototype = Object.getPrototypeOf(value);\n\tif (prototype !== Object.prototype && prototype !== null) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol objects must be plain JSON objects\");\n\t}\n\tconst entries = Object.entries(value);\n\tif (entries.length > state.limits.maxObjectKeys) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol object exceeds key limit\");\n\t}\n\tstate.objectKeys += entries.length;\n\tif (state.objectKeys > state.limits.maxObjectKeys) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol value exceeds total key limit\");\n\t}\n\tfor (let index = entries.length - 1; index >= 0; index--) {\n\t\tconst entry = entries[index];\n\t\tif (!entry) continue;\n\t\tif (Buffer.byteLength(entry[0], \"utf8\") > state.limits.maxStringBytes) {\n\t\t\tthrow new RemoteWorkspaceValidationError(\"Protocol object key exceeds byte limit\");\n\t\t}\n\t\tstate.pending.push({ value: entry[1], depth: depth + 1 });\n\t}\n}\n\nexport function assertRemoteWorkspaceJsonStructure(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): void {\n\tconst state: RemoteWorkspaceStructureState = {\n\t\tpending: [{ value, depth: 1 }],\n\t\tnodes: 0,\n\t\tobjectKeys: 0,\n\t\tlimits,\n\t};\n\twhile (state.pending.length > 0) {\n\t\tconst current = state.pending.pop();\n\t\tif (!current) break;\n\t\tvalidateRemoteWorkspaceNodeBudget(current.depth, state);\n\t\tif (validateRemoteWorkspaceScalar(current.value, limits)) continue;\n\t\tif (Array.isArray(current.value)) {\n\t\t\tenqueueRemoteWorkspaceArray(current.value, current.depth, state);\n\t\t\tcontinue;\n\t\t}\n\t\tenqueueRemoteWorkspaceObject(current.value, current.depth, state);\n\t}\n}\n\nexport function decodeRemoteWorkspaceMessage(\n\tpayload: string | Uint8Array,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tconst bytes = typeof payload === \"string\" ? Buffer.from(payload, \"utf8\") : payload;\n\tif (bytes.byteLength > limits.maxMessageBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol message exceeds byte limit\");\n\t}\n\tconst text = typeof payload === \"string\" ? payload : new TextDecoder(\"utf-8\", { fatal: true }).decode(payload);\n\tlet value: unknown;\n\ttry {\n\t\tvalue = JSON.parse(text) as unknown;\n\t} catch (error) {\n\t\tthrow new RemoteWorkspaceValidationError(\n\t\t\t`Protocol message is not valid JSON: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn value;\n}\n\nexport function parseRemoteWorkspaceClientMessage(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): RemoteWorkspaceClientMessage {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn parseWithValidator<RemoteWorkspaceClientMessage>(clientMessageValidator, value, \"client message\");\n}\n\nexport function parseRemoteWorkspaceServerMessage(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): RemoteWorkspaceServerMessage {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn parseWithValidator<RemoteWorkspaceServerMessage>(serverMessageValidator, value, \"server message\");\n}\n\nexport function isRemoteWorkspaceMethod(method: string): method is RemoteWorkspaceMethod {\n\treturn (REMOTE_WORKSPACE_METHODS as readonly string[]).includes(method);\n}\n\nexport function parseRemoteWorkspaceRequestParams(\n\tmethod: RemoteWorkspaceMethod,\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\tconst parsed = parseWithValidator(parameterValidators[method], value, `${method} params`);\n\tif (method === \"workspace.write\") {\n\t\tdecodeCanonicalBase64((parsed as { contentBase64: string }).contentBase64, limits.maxMessageBytes);\n\t}\n\treturn parsed;\n}\n\nexport function parseRemoteWorkspaceResult(\n\tmethod: RemoteWorkspaceMethod,\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\tconst validator = resultValidators[method];\n\tconst parsed = validator ? parseWithValidator(validator, value, `${method} result`) : value;\n\tif (method === \"workspace.read\" || method === \"resource.read\") {\n\t\tdecodeCanonicalBase64((parsed as { contentBase64: string }).contentBase64, limits.maxMessageBytes);\n\t}\n\treturn parsed;\n}\n\nexport function parseRemoteWorkspaceToolResult(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn parseWithValidator(Compile(ToolResultSchema), value, \"tool result\");\n}\n\nexport function decodeCanonicalBase64(value: string, maxBytes: number): Buffer {\n\tif (value.length % 4 !== 0 || !/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(value)) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Transfer data is not canonical base64\");\n\t}\n\tconst decoded = Buffer.from(value, \"base64\");\n\tif (decoded.byteLength > maxBytes) throw new RemoteWorkspaceValidationError(\"Transfer chunk exceeds byte limit\");\n\tif (decoded.toString(\"base64\") !== value) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Transfer data is not canonical base64\");\n\t}\n\treturn decoded;\n}\n\nfunction canonicalJson(value: unknown): string {\n\tif (value === null) return \"null\";\n\tif (typeof value === \"boolean\") return value ? \"true\" : \"false\";\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isFinite(value)) throw new RemoteWorkspaceValidationError(\"Cannot hash a non-finite number\");\n\t\treturn JSON.stringify(value);\n\t}\n\tif (typeof value === \"string\") return JSON.stringify(value);\n\tif (Array.isArray(value)) return `[${value.map((entry) => canonicalJson(entry)).join(\",\")}]`;\n\tif (typeof value !== \"object\" || value === undefined) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Cannot hash a non-JSON value\");\n\t}\n\tconst entries = Object.entries(value).sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0));\n\treturn `{${entries.map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(\",\")}}`;\n}\n\nexport function hashRemoteWorkspaceJson(value: unknown): string {\n\tassertRemoteWorkspaceJsonStructure(value);\n\treturn createHash(\"sha256\").update(canonicalJson(value)).digest(\"hex\");\n}\n\nexport function hashRemoteWorkspaceCatalog(catalog: RemoteWorkspaceCatalog): string {\n\treturn hashRemoteWorkspaceJson(catalog);\n}\n\nfunction assertUnique(values: readonly string[], label: string): void {\n\tif (new Set(values).size !== values.length) throw new RemoteWorkspaceValidationError(`${label} contains duplicates`);\n}\n\nexport function validateRemoteWorkspaceCatalog(catalog: RemoteWorkspaceCatalog): void {\n\tparseWithValidator(Compile(RemoteWorkspaceCatalogSchema), catalog, \"tool catalog\");\n\tassertUnique(catalog.operations, \"Catalog operations\");\n\tassertUnique(\n\t\tcatalog.tools.map((tool) => tool.name),\n\t\t\"Catalog tool names\",\n\t);\n\tfor (const tool of catalog.tools) {\n\t\tassertUnique(tool.featureFlags, `Feature flags for ${tool.name}`);\n\t\tif (hashRemoteWorkspaceJson(tool.parameterSchema) !== tool.schemaHash) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Schema hash mismatch for tool ${tool.name}`);\n\t\t}\n\t}\n}\n\nexport function validateRemoteWorkspaceLocalToolSchemas(\n\tcatalog: RemoteWorkspaceCatalog,\n\tlocalToolSchemas: ReadonlyMap<string, string>,\n): void {\n\tfor (const tool of catalog.tools) {\n\t\tconst localHash = localToolSchemas.get(tool.name);\n\t\tif (localHash !== undefined && localHash !== tool.schemaHash) {\n\t\t\tthrow new RemoteWorkspaceValidationError(\n\t\t\t\t`Remote schema does not match the local canonical schema for ${tool.name}`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function validateRemoteWorkspaceHandshakeAck(\n\tack: unknown,\n\toffer: RemoteWorkspaceHandshake,\n\tlocalToolSchemas: ReadonlyMap<string, string> = new Map(),\n): RemoteWorkspaceHandshakeAck {\n\tconst parsed = parseWithValidator<RemoteWorkspaceHandshakeAck>(handshakeAckValidator, ack, \"handshake response\");\n\tvalidateRemoteWorkspaceProtocolLimits(offer.receiveLimits);\n\tvalidateRemoteWorkspaceProtocolLimits(parsed.limits);\n\tconst selected = offer.versions.some(\n\t\t(range) =>\n\t\t\trange.major === parsed.version.major &&\n\t\t\trange.minMinor <= parsed.version.minor &&\n\t\t\trange.maxMinor >= parsed.version.minor,\n\t);\n\tif (!selected)\n\t\tthrow new RemoteWorkspaceValidationError(\"Server selected a protocol version outside the offered range\");\n\tconst offeredCapabilities = new Set([...offer.requiredCapabilities, ...offer.optionalCapabilities]);\n\tfor (const capability of parsed.capabilities) {\n\t\tif (!offeredCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Server selected an unoffered capability: ${capability}`);\n\t\t}\n\t}\n\tconst selectedCapabilities = new Set(parsed.capabilities);\n\tfor (const capability of offer.requiredCapabilities) {\n\t\tif (!selectedCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Server omitted required capability: ${capability}`);\n\t\t}\n\t}\n\tassertUnique(parsed.capabilities, \"Negotiated capabilities\");\n\tvalidateRemoteWorkspaceCatalog(parsed.catalog);\n\tif (hashRemoteWorkspaceCatalog(parsed.catalog) !== parsed.catalogHash) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Catalog hash does not match the negotiated catalog\");\n\t}\n\tvalidateRemoteWorkspaceLocalToolSchemas(parsed.catalog, localToolSchemas);\n\tfor (const key of Object.keys(offer.receiveLimits) as (keyof RemoteWorkspaceProtocolLimits)[]) {\n\t\tif (parsed.limits[key] > offer.receiveLimits[key]) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Server increased negotiated limit: ${key}`);\n\t\t}\n\t}\n\treturn parsed;\n}\n\nexport interface RemoteWorkspaceNegotiationOptions {\n\tserverVersions: readonly RemoteWorkspaceVersionRange[];\n\tserverCapabilities: readonly string[];\n\trequiredClientCapabilities?: readonly string[];\n\tserverLimits: RemoteWorkspaceProtocolLimits;\n}\n\nexport interface RemoteWorkspaceNegotiationResult {\n\tversion: RemoteWorkspaceVersion;\n\tcapabilities: string[];\n\tlimits: RemoteWorkspaceProtocolLimits;\n}\n\nexport type RemoteWorkspaceNegotiationErrorCode = \"incompatible_version\" | \"capability_mismatch\";\n\nexport class RemoteWorkspaceNegotiationError extends Error {\n\treadonly code: RemoteWorkspaceNegotiationErrorCode;\n\n\tconstructor(code: RemoteWorkspaceNegotiationErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"RemoteWorkspaceNegotiationError\";\n\t\tthis.code = code;\n\t}\n}\n\nfunction validateVersionRanges(ranges: readonly RemoteWorkspaceVersionRange[], label: string): void {\n\tfor (const range of ranges) {\n\t\tif (range.minMinor > range.maxMinor) {\n\t\t\tthrow new RemoteWorkspaceNegotiationError(\"incompatible_version\", `${label} has an inverted minor range`);\n\t\t}\n\t}\n}\n\nfunction findCompatibleRemoteWorkspaceVersions(\n\tclientVersions: readonly RemoteWorkspaceVersionRange[],\n\tserverVersions: readonly RemoteWorkspaceVersionRange[],\n): RemoteWorkspaceVersion[] {\n\tconst serverVersionsByMajor = new Map<number, RemoteWorkspaceVersionRange[]>();\n\tfor (const server of serverVersions) {\n\t\tconst ranges = serverVersionsByMajor.get(server.major) ?? [];\n\t\tranges.push(server);\n\t\tserverVersionsByMajor.set(server.major, ranges);\n\t}\n\tconst candidates: RemoteWorkspaceVersion[] = [];\n\tfor (const client of clientVersions) {\n\t\tfor (const server of serverVersionsByMajor.get(client.major) ?? []) {\n\t\t\tconst minMinor = Math.max(client.minMinor, server.minMinor);\n\t\t\tconst maxMinor = Math.min(client.maxMinor, server.maxMinor);\n\t\t\tif (minMinor <= maxMinor) candidates.push({ major: client.major, minor: maxMinor });\n\t\t}\n\t}\n\treturn candidates;\n}\n\nexport function negotiateRemoteWorkspaceHandshake(\n\thandshake: RemoteWorkspaceHandshake,\n\toptions: RemoteWorkspaceNegotiationOptions,\n): RemoteWorkspaceNegotiationResult {\n\tvalidateRemoteWorkspaceProtocolLimits(handshake.receiveLimits);\n\tvalidateRemoteWorkspaceProtocolLimits(options.serverLimits);\n\tvalidateVersionRanges(handshake.versions, \"Client version offer\");\n\tvalidateVersionRanges(options.serverVersions, \"Server version offer\");\n\tassertUnique(handshake.requiredCapabilities, \"Required capabilities\");\n\tassertUnique(handshake.optionalCapabilities, \"Optional capabilities\");\n\tconst optionalCapabilities = new Set(handshake.optionalCapabilities);\n\tconst duplicateOffer = handshake.requiredCapabilities.find((capability) => optionalCapabilities.has(capability));\n\tif (duplicateOffer) {\n\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\"capability_mismatch\",\n\t\t\t`Capability is both required and optional: ${duplicateOffer}`,\n\t\t);\n\t}\n\tconst candidates = findCompatibleRemoteWorkspaceVersions(handshake.versions, options.serverVersions);\n\tcandidates.sort((left, right) => right.major - left.major || right.minor - left.minor);\n\tconst version = candidates[0];\n\tif (!version) {\n\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\"incompatible_version\",\n\t\t\t\"No compatible remote workspace protocol version\",\n\t\t);\n\t}\n\tconst serverCapabilities = new Set(options.serverCapabilities);\n\tfor (const capability of handshake.requiredCapabilities) {\n\t\tif (!serverCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\t\"capability_mismatch\",\n\t\t\t\t`Server does not support required capability: ${capability}`,\n\t\t\t);\n\t\t}\n\t}\n\tconst clientCapabilities = new Set([...handshake.requiredCapabilities, ...handshake.optionalCapabilities]);\n\tfor (const capability of options.requiredClientCapabilities ?? []) {\n\t\tif (!clientCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\t\"capability_mismatch\",\n\t\t\t\t`Client does not support required capability: ${capability}`,\n\t\t\t);\n\t\t}\n\t}\n\tconst capabilities = Array.from(clientCapabilities)\n\t\t.filter((capability) => serverCapabilities.has(capability))\n\t\t.sort();\n\tconst clientLimits = handshake.receiveLimits;\n\tconst serverLimits = options.serverLimits;\n\treturn {\n\t\tversion,\n\t\tcapabilities,\n\t\tlimits: {\n\t\t\tmaxMessageBytes: Math.min(clientLimits.maxMessageBytes, serverLimits.maxMessageBytes),\n\t\t\tmaxStringBytes: Math.min(clientLimits.maxStringBytes, serverLimits.maxStringBytes),\n\t\t\tmaxDepth: Math.min(clientLimits.maxDepth, serverLimits.maxDepth),\n\t\t\tmaxObjectKeys: Math.min(clientLimits.maxObjectKeys, serverLimits.maxObjectKeys),\n\t\t\tmaxArrayLength: Math.min(clientLimits.maxArrayLength, serverLimits.maxArrayLength),\n\t\t\tmaxNodes: Math.min(clientLimits.maxNodes, serverLimits.maxNodes),\n\t\t\tmaxRequestMs: Math.min(clientLimits.maxRequestMs, serverLimits.maxRequestMs),\n\t\t\tmaxTransferChunkBytes: Math.min(clientLimits.maxTransferChunkBytes, serverLimits.maxTransferChunkBytes),\n\t\t\tmaxPendingTransferBytes: Math.min(clientLimits.maxPendingTransferBytes, serverLimits.maxPendingTransferBytes),\n\t\t\tmaxPendingInboundBytes: Math.min(clientLimits.maxPendingInboundBytes, serverLimits.maxPendingInboundBytes),\n\t\t\tmaxPendingInboundMessages: Math.min(\n\t\t\t\tclientLimits.maxPendingInboundMessages,\n\t\t\t\tserverLimits.maxPendingInboundMessages,\n\t\t\t),\n\t\t\tmaxPendingOutboundBytes: Math.min(clientLimits.maxPendingOutboundBytes, serverLimits.maxPendingOutboundBytes),\n\t\t\tmaxPendingOutboundMessages: Math.min(\n\t\t\t\tclientLimits.maxPendingOutboundMessages,\n\t\t\t\tserverLimits.maxPendingOutboundMessages,\n\t\t\t),\n\t\t\tmaxTransferBytes: Math.min(clientLimits.maxTransferBytes, serverLimits.maxTransferBytes),\n\t\t\tmaxTransferChunks: Math.min(clientLimits.maxTransferChunks, serverLimits.maxTransferChunks),\n\t\t\tmaxActiveRequests: Math.min(clientLimits.maxActiveRequests, serverLimits.maxActiveRequests),\n\t\t\tmaxActiveTransfers: Math.min(clientLimits.maxActiveTransfers, serverLimits.maxActiveTransfers),\n\t\t\tmaxCancellationMs: Math.min(clientLimits.maxCancellationMs, serverLimits.maxCancellationMs),\n\t\t\tmaxTransportSendMs: Math.min(clientLimits.maxTransportSendMs, serverLimits.maxTransportSendMs),\n\t\t},\n\t};\n}\n\nexport function getRemoteWorkspaceMethodKind(method: RemoteWorkspaceMethod): RemoteWorkspaceOperationKind {\n\tswitch (method) {\n\t\tcase \"workspace.write\":\n\t\tcase \"workspace.mkdir\":\n\t\tcase \"transfer.upload\":\n\t\t\treturn \"mutation\";\n\t\tcase \"workspace.exec\":\n\t\t\treturn \"process\";\n\t\tcase \"tool.invoke\":\n\t\t\treturn \"service\";\n\t\tdefault:\n\t\t\treturn \"read\";\n\t}\n}\n"]}