@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,39 @@
1
+ import { type MessageReader, type MessageWriter } from "vscode-languageserver-protocol/node.js";
2
+ import type { LspTransport } from "./config.ts";
3
+ export type LspConnectionDisposalMode = "terminate-process" | "disconnect";
4
+ export interface LspConnectionEndpoint {
5
+ type: LspTransport["type"];
6
+ description: string;
7
+ disposalMode: LspConnectionDisposalMode;
8
+ }
9
+ export interface LspConnectionHandle {
10
+ reader: MessageReader;
11
+ writer: MessageWriter;
12
+ endpoint: LspConnectionEndpoint;
13
+ close(): Promise<void>;
14
+ onClose(listener: () => void): () => void;
15
+ onError(listener: (error: Error) => void): () => void;
16
+ }
17
+ export interface LspConnectionFactoryContext {
18
+ serverId: string;
19
+ workspaceRoot: string;
20
+ workspaceUri: string;
21
+ signal: AbortSignal;
22
+ connectTimeoutMs?: number;
23
+ onStderr?: (text: string) => void;
24
+ }
25
+ export type LspConnectionFactory = (context: LspConnectionFactoryContext) => Promise<LspConnectionHandle>;
26
+ export interface ManagedStdioConnectionOptions {
27
+ command: string;
28
+ args?: string[];
29
+ env?: Record<string, string>;
30
+ cwd?: string;
31
+ inheritEnvironment?: boolean;
32
+ }
33
+ export type LspConnectionFactoryRegistry = Readonly<Record<string, LspConnectionFactory>>;
34
+ export declare function createManagedStdioConnectionFactory(options: ManagedStdioConnectionOptions): LspConnectionFactory;
35
+ export declare function createTcpConnectionFactory(host: string, port: number): LspConnectionFactory;
36
+ export declare function createUnixSocketConnectionFactory(path: string): LspConnectionFactory;
37
+ export declare function createNamedPipeConnectionFactory(path: string): LspConnectionFactory;
38
+ export declare function resolveLspConnectionFactory(transport: LspTransport, programmaticFactories?: LspConnectionFactoryRegistry): LspConnectionFactory;
39
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/transport.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,aAAa,EAKlB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG,YAAY,CAAC;AAG3E,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,yBAAyB,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1C,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAE1G,MAAM,WAAW,6BAA6B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;AA0I1F,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,6BAA6B,GAAG,oBAAoB,CAoDhH;AA+CD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAG3F;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAEpF;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAEnF;AAED,wBAAgB,2BAA2B,CAC1C,SAAS,EAAE,YAAY,EACvB,qBAAqB,GAAE,4BAAiC,GACtD,oBAAoB,CAkBtB","sourcesContent":["import { type ChildProcessWithoutNullStreams, spawn } from \"node:child_process\";\nimport { createConnection, type Socket } from \"node:net\";\nimport {\n\ttype MessageReader,\n\ttype MessageWriter,\n\tSocketMessageReader,\n\tSocketMessageWriter,\n\tStreamMessageReader,\n\tStreamMessageWriter,\n} from \"vscode-languageserver-protocol/node.js\";\nimport { killProcessTree } from \"../../utils/shell.ts\";\nimport type { LspTransport } from \"./config.ts\";\n\nexport type LspConnectionDisposalMode = \"terminate-process\" | \"disconnect\";\ntype LspSocketEndpointType = \"tcp\" | \"unix\" | \"pipe\";\n\nexport interface LspConnectionEndpoint {\n\ttype: LspTransport[\"type\"];\n\tdescription: string;\n\tdisposalMode: LspConnectionDisposalMode;\n}\n\nexport interface LspConnectionHandle {\n\treader: MessageReader;\n\twriter: MessageWriter;\n\tendpoint: LspConnectionEndpoint;\n\tclose(): Promise<void>;\n\tonClose(listener: () => void): () => void;\n\tonError(listener: (error: Error) => void): () => void;\n}\n\nexport interface LspConnectionFactoryContext {\n\tserverId: string;\n\tworkspaceRoot: string;\n\tworkspaceUri: string;\n\tsignal: AbortSignal;\n\tconnectTimeoutMs?: number;\n\tonStderr?: (text: string) => void;\n}\n\nexport type LspConnectionFactory = (context: LspConnectionFactoryContext) => Promise<LspConnectionHandle>;\n\nexport interface ManagedStdioConnectionOptions {\n\tcommand: string;\n\targs?: string[];\n\tenv?: Record<string, string>;\n\tcwd?: string;\n\tinheritEnvironment?: boolean;\n}\nexport type LspConnectionFactoryRegistry = Readonly<Record<string, LspConnectionFactory>>;\n\ninterface ConnectionEvents {\n\temitClose(): void;\n\temitError(error: Error): void;\n\tonClose(listener: () => void): () => void;\n\tonError(listener: (error: Error) => void): () => void;\n}\n\nfunction createConnectionEvents(): ConnectionEvents {\n\tconst closeListeners = new Set<() => void>();\n\tconst errorListeners = new Set<(error: Error) => void>();\n\treturn {\n\t\temitClose: () => {\n\t\t\tfor (const listener of closeListeners) listener();\n\t\t},\n\t\temitError: (error) => {\n\t\t\tfor (const listener of errorListeners) listener(error);\n\t\t},\n\t\tonClose: (listener) => {\n\t\t\tcloseListeners.add(listener);\n\t\t\treturn () => closeListeners.delete(listener);\n\t\t},\n\t\tonError: (listener) => {\n\t\t\terrorListeners.add(listener);\n\t\t\treturn () => errorListeners.delete(listener);\n\t\t},\n\t};\n}\n\nfunction abortError(description: string): Error {\n\treturn new Error(`Aborted while connecting to ${description}`);\n}\n\nasync function waitForConnection(\n\tdescription: string,\n\tsignal: AbortSignal,\n\ttimeoutMs: number | undefined,\n\tsubscribe: (resolve: () => void, reject: (error: Error) => void) => () => void,\n): Promise<void> {\n\tif (signal.aborted) throw abortError(description);\n\tawait new Promise<void>((resolve, reject) => {\n\t\tlet settled = false;\n\t\tlet timer: NodeJS.Timeout | undefined;\n\t\tlet actualUnsubscribe: (() => void) | undefined;\n\t\tlet unsubscribeRequested = false;\n\t\tconst unsubscribe = (): void => {\n\t\t\tif (actualUnsubscribe) actualUnsubscribe();\n\t\t\telse unsubscribeRequested = true;\n\t\t};\n\t\tconst cleanup = (): void => {\n\t\t\tif (timer) clearTimeout(timer);\n\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\tunsubscribe();\n\t\t};\n\t\tconst succeed = (): void => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tcleanup();\n\t\t\tresolve();\n\t\t};\n\t\tconst fail = (error: Error): void => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tcleanup();\n\t\t\treject(error);\n\t\t};\n\t\tconst onAbort = (): void => fail(abortError(description));\n\t\tactualUnsubscribe = subscribe(succeed, fail);\n\t\tif (unsubscribeRequested) actualUnsubscribe();\n\t\tif (settled) return;\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\tif (signal.aborted) {\n\t\t\tonAbort();\n\t\t\treturn;\n\t\t}\n\t\tif (timeoutMs !== undefined && timeoutMs > 0) {\n\t\t\ttimer = setTimeout(\n\t\t\t\t() => fail(new Error(`Timed out connecting to ${description} after ${timeoutMs}ms`)),\n\t\t\t\ttimeoutMs,\n\t\t\t);\n\t\t}\n\t});\n}\n\nfunction mergeEnvironment(extra: Record<string, string> | undefined, inheritEnvironment: boolean): NodeJS.ProcessEnv {\n\treturn inheritEnvironment ? (extra ? { ...process.env, ...extra } : process.env) : { ...extra };\n}\n\nfunction processGroupIsAlive(pid: number): boolean {\n\tif (process.platform === \"win32\") return false;\n\ttry {\n\t\tprocess.kill(-pid, 0);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function waitForChildExit(exited: Promise<void>, timeoutMs: number): Promise<boolean> {\n\tlet timer: NodeJS.Timeout | undefined;\n\tconst didExit = await Promise.race([\n\t\texited.then(() => true),\n\t\tnew Promise<false>((resolve) => {\n\t\t\ttimer = setTimeout(() => resolve(false), timeoutMs);\n\t\t\ttimer.unref();\n\t\t}),\n\t]);\n\tif (timer) clearTimeout(timer);\n\treturn didExit;\n}\n\nasync function terminateChild(child: ChildProcessWithoutNullStreams): Promise<void> {\n\tif (child.pid === undefined) return;\n\tif (child.exitCode !== null || child.signalCode !== null) {\n\t\tif (processGroupIsAlive(child.pid)) killProcessTree(child.pid);\n\t\tawait new Promise<void>((resolve) => setImmediate(resolve));\n\t\treturn;\n\t}\n\tconst exited = new Promise<void>((resolve) => child.once(\"exit\", () => resolve()));\n\tif (child.pid !== undefined && process.platform !== \"win32\") {\n\t\ttry {\n\t\t\tprocess.kill(-child.pid, \"SIGTERM\");\n\t\t} catch {\n\t\t\tchild.kill(\"SIGTERM\");\n\t\t}\n\t} else {\n\t\tchild.kill(\"SIGTERM\");\n\t}\n\tconst exitedGracefully = await waitForChildExit(exited, 2000);\n\tif (exitedGracefully) {\n\t\tif (processGroupIsAlive(child.pid)) killProcessTree(child.pid);\n\t\treturn;\n\t}\n\tif (child.exitCode === null && child.signalCode === null && child.pid !== undefined) killProcessTree(child.pid);\n\tawait waitForChildExit(exited, 2000);\n}\n\nexport function createManagedStdioConnectionFactory(options: ManagedStdioConnectionOptions): LspConnectionFactory {\n\treturn async (context) => {\n\t\tconst cwd = options.cwd ?? context.workspaceRoot;\n\t\tconst description = `managed LSP process ${JSON.stringify(options.command)}`;\n\t\tconst child = spawn(options.command, options.args ?? [], {\n\t\t\tcwd,\n\t\t\tdetached: process.platform !== \"win32\",\n\t\t\tenv: mergeEnvironment(options.env, options.inheritEnvironment !== false),\n\t\t\tstdio: \"pipe\",\n\t\t});\n\t\ttry {\n\t\t\tawait waitForConnection(description, context.signal, context.connectTimeoutMs, (resolve, reject) => {\n\t\t\t\tconst onError = (error: Error): void =>\n\t\t\t\t\treject(new Error(`Failed to spawn ${description}: ${error.message}`, { cause: error }));\n\t\t\t\tchild.once(\"spawn\", resolve);\n\t\t\t\tchild.once(\"error\", onError);\n\t\t\t\treturn () => {\n\t\t\t\t\tchild.off(\"spawn\", resolve);\n\t\t\t\t\tchild.off(\"error\", onError);\n\t\t\t\t};\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tawait terminateChild(child);\n\t\t\tthrow error;\n\t\t}\n\n\t\tconst events = createConnectionEvents();\n\t\tlet closed = false;\n\t\tchild.stderr.setEncoding(\"utf8\");\n\t\tchild.stderr.on(\"data\", (chunk: string) => context.onStderr?.(chunk));\n\t\tchild.stdin.on(\"error\", (error: NodeJS.ErrnoException) => {\n\t\t\tif (error.code !== \"EPIPE\" && error.code !== \"ERR_STREAM_DESTROYED\") events.emitError(error);\n\t\t});\n\t\tchild.on(\"error\", (error) => events.emitError(error));\n\t\tchild.on(\"exit\", () => events.emitClose());\n\t\treturn {\n\t\t\treader: new StreamMessageReader(child.stdout),\n\t\t\twriter: new StreamMessageWriter(child.stdin),\n\t\t\tendpoint: {\n\t\t\t\ttype: \"spawn\",\n\t\t\t\tdescription: `${description} (pid ${child.pid ?? \"unknown\"})`,\n\t\t\t\tdisposalMode: \"terminate-process\",\n\t\t\t},\n\t\t\tclose: async () => {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tawait terminateChild(child);\n\t\t\t},\n\t\t\tonClose: events.onClose,\n\t\t\tonError: events.onError,\n\t\t};\n\t};\n}\n\nasync function connectSocket(\n\tdescription: string,\n\tendpointType: LspSocketEndpointType,\n\tcontext: LspConnectionFactoryContext,\n\tcreateSocket: () => Socket,\n): Promise<LspConnectionHandle> {\n\tconst socket = createSocket();\n\ttry {\n\t\tawait waitForConnection(description, context.signal, context.connectTimeoutMs, (resolve, reject) => {\n\t\t\tconst onError = (error: Error): void =>\n\t\t\t\treject(new Error(`Failed to connect to ${description}: ${error.message}`, { cause: error }));\n\t\t\tsocket.once(\"connect\", resolve);\n\t\t\tsocket.once(\"error\", onError);\n\t\t\treturn () => {\n\t\t\t\tsocket.off(\"connect\", resolve);\n\t\t\t\tsocket.off(\"error\", onError);\n\t\t\t};\n\t\t});\n\t} catch (error) {\n\t\tsocket.destroy();\n\t\tthrow error;\n\t}\n\n\tconst events = createConnectionEvents();\n\tlet closed = false;\n\tsocket.on(\"error\", (error) => events.emitError(error));\n\tsocket.on(\"close\", () => events.emitClose());\n\treturn {\n\t\treader: new SocketMessageReader(socket),\n\t\twriter: new SocketMessageWriter(socket),\n\t\tendpoint: { type: endpointType, description, disposalMode: \"disconnect\" },\n\t\tclose: async () => {\n\t\t\tif (closed) return;\n\t\t\tclosed = true;\n\t\t\tif (socket.destroyed) return;\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tsocket.once(\"close\", resolve);\n\t\t\t\tsocket.destroy();\n\t\t\t});\n\t\t},\n\t\tonClose: events.onClose,\n\t\tonError: events.onError,\n\t};\n}\n\nexport function createTcpConnectionFactory(host: string, port: number): LspConnectionFactory {\n\treturn (context) =>\n\t\tconnectSocket(`TCP LSP endpoint ${host}:${port}`, \"tcp\", context, () => createConnection({ host, port }));\n}\n\nexport function createUnixSocketConnectionFactory(path: string): LspConnectionFactory {\n\treturn (context) => connectSocket(`Unix LSP socket ${path}`, \"unix\", context, () => createConnection(path));\n}\n\nexport function createNamedPipeConnectionFactory(path: string): LspConnectionFactory {\n\treturn (context) => connectSocket(`LSP named pipe ${path}`, \"pipe\", context, () => createConnection(path));\n}\n\nexport function resolveLspConnectionFactory(\n\ttransport: LspTransport,\n\tprogrammaticFactories: LspConnectionFactoryRegistry = {},\n): LspConnectionFactory {\n\tswitch (transport.type) {\n\t\tcase \"spawn\":\n\t\t\treturn createManagedStdioConnectionFactory(transport);\n\t\tcase \"tcp\":\n\t\t\treturn createTcpConnectionFactory(transport.host, transport.port);\n\t\tcase \"unix\":\n\t\t\treturn createUnixSocketConnectionFactory(transport.path);\n\t\tcase \"pipe\":\n\t\t\treturn createNamedPipeConnectionFactory(transport.path);\n\t\tcase \"connection\": {\n\t\t\tconst factory = Object.hasOwn(programmaticFactories, transport.id)\n\t\t\t\t? programmaticFactories[transport.id]\n\t\t\t\t: undefined;\n\t\t\tif (!factory) throw new Error(`No LSP connection factory is registered for ${JSON.stringify(transport.id)}`);\n\t\t\treturn factory;\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,261 @@
1
+ import { spawn } from "node:child_process";
2
+ import { createConnection } from "node:net";
3
+ import { SocketMessageReader, SocketMessageWriter, StreamMessageReader, StreamMessageWriter, } from "vscode-languageserver-protocol/node.js";
4
+ import { killProcessTree } from "../../utils/shell.js";
5
+ function createConnectionEvents() {
6
+ const closeListeners = new Set();
7
+ const errorListeners = new Set();
8
+ return {
9
+ emitClose: () => {
10
+ for (const listener of closeListeners)
11
+ listener();
12
+ },
13
+ emitError: (error) => {
14
+ for (const listener of errorListeners)
15
+ listener(error);
16
+ },
17
+ onClose: (listener) => {
18
+ closeListeners.add(listener);
19
+ return () => closeListeners.delete(listener);
20
+ },
21
+ onError: (listener) => {
22
+ errorListeners.add(listener);
23
+ return () => errorListeners.delete(listener);
24
+ },
25
+ };
26
+ }
27
+ function abortError(description) {
28
+ return new Error(`Aborted while connecting to ${description}`);
29
+ }
30
+ async function waitForConnection(description, signal, timeoutMs, subscribe) {
31
+ if (signal.aborted)
32
+ throw abortError(description);
33
+ await new Promise((resolve, reject) => {
34
+ let settled = false;
35
+ let timer;
36
+ let actualUnsubscribe;
37
+ let unsubscribeRequested = false;
38
+ const unsubscribe = () => {
39
+ if (actualUnsubscribe)
40
+ actualUnsubscribe();
41
+ else
42
+ unsubscribeRequested = true;
43
+ };
44
+ const cleanup = () => {
45
+ if (timer)
46
+ clearTimeout(timer);
47
+ signal.removeEventListener("abort", onAbort);
48
+ unsubscribe();
49
+ };
50
+ const succeed = () => {
51
+ if (settled)
52
+ return;
53
+ settled = true;
54
+ cleanup();
55
+ resolve();
56
+ };
57
+ const fail = (error) => {
58
+ if (settled)
59
+ return;
60
+ settled = true;
61
+ cleanup();
62
+ reject(error);
63
+ };
64
+ const onAbort = () => fail(abortError(description));
65
+ actualUnsubscribe = subscribe(succeed, fail);
66
+ if (unsubscribeRequested)
67
+ actualUnsubscribe();
68
+ if (settled)
69
+ return;
70
+ signal.addEventListener("abort", onAbort, { once: true });
71
+ if (signal.aborted) {
72
+ onAbort();
73
+ return;
74
+ }
75
+ if (timeoutMs !== undefined && timeoutMs > 0) {
76
+ timer = setTimeout(() => fail(new Error(`Timed out connecting to ${description} after ${timeoutMs}ms`)), timeoutMs);
77
+ }
78
+ });
79
+ }
80
+ function mergeEnvironment(extra, inheritEnvironment) {
81
+ return inheritEnvironment ? (extra ? { ...process.env, ...extra } : process.env) : { ...extra };
82
+ }
83
+ function processGroupIsAlive(pid) {
84
+ if (process.platform === "win32")
85
+ return false;
86
+ try {
87
+ process.kill(-pid, 0);
88
+ return true;
89
+ }
90
+ catch {
91
+ return false;
92
+ }
93
+ }
94
+ async function waitForChildExit(exited, timeoutMs) {
95
+ let timer;
96
+ const didExit = await Promise.race([
97
+ exited.then(() => true),
98
+ new Promise((resolve) => {
99
+ timer = setTimeout(() => resolve(false), timeoutMs);
100
+ timer.unref();
101
+ }),
102
+ ]);
103
+ if (timer)
104
+ clearTimeout(timer);
105
+ return didExit;
106
+ }
107
+ async function terminateChild(child) {
108
+ if (child.pid === undefined)
109
+ return;
110
+ if (child.exitCode !== null || child.signalCode !== null) {
111
+ if (processGroupIsAlive(child.pid))
112
+ killProcessTree(child.pid);
113
+ await new Promise((resolve) => setImmediate(resolve));
114
+ return;
115
+ }
116
+ const exited = new Promise((resolve) => child.once("exit", () => resolve()));
117
+ if (child.pid !== undefined && process.platform !== "win32") {
118
+ try {
119
+ process.kill(-child.pid, "SIGTERM");
120
+ }
121
+ catch {
122
+ child.kill("SIGTERM");
123
+ }
124
+ }
125
+ else {
126
+ child.kill("SIGTERM");
127
+ }
128
+ const exitedGracefully = await waitForChildExit(exited, 2000);
129
+ if (exitedGracefully) {
130
+ if (processGroupIsAlive(child.pid))
131
+ killProcessTree(child.pid);
132
+ return;
133
+ }
134
+ if (child.exitCode === null && child.signalCode === null && child.pid !== undefined)
135
+ killProcessTree(child.pid);
136
+ await waitForChildExit(exited, 2000);
137
+ }
138
+ export function createManagedStdioConnectionFactory(options) {
139
+ return async (context) => {
140
+ const cwd = options.cwd ?? context.workspaceRoot;
141
+ const description = `managed LSP process ${JSON.stringify(options.command)}`;
142
+ const child = spawn(options.command, options.args ?? [], {
143
+ cwd,
144
+ detached: process.platform !== "win32",
145
+ env: mergeEnvironment(options.env, options.inheritEnvironment !== false),
146
+ stdio: "pipe",
147
+ });
148
+ try {
149
+ await waitForConnection(description, context.signal, context.connectTimeoutMs, (resolve, reject) => {
150
+ const onError = (error) => reject(new Error(`Failed to spawn ${description}: ${error.message}`, { cause: error }));
151
+ child.once("spawn", resolve);
152
+ child.once("error", onError);
153
+ return () => {
154
+ child.off("spawn", resolve);
155
+ child.off("error", onError);
156
+ };
157
+ });
158
+ }
159
+ catch (error) {
160
+ await terminateChild(child);
161
+ throw error;
162
+ }
163
+ const events = createConnectionEvents();
164
+ let closed = false;
165
+ child.stderr.setEncoding("utf8");
166
+ child.stderr.on("data", (chunk) => context.onStderr?.(chunk));
167
+ child.stdin.on("error", (error) => {
168
+ if (error.code !== "EPIPE" && error.code !== "ERR_STREAM_DESTROYED")
169
+ events.emitError(error);
170
+ });
171
+ child.on("error", (error) => events.emitError(error));
172
+ child.on("exit", () => events.emitClose());
173
+ return {
174
+ reader: new StreamMessageReader(child.stdout),
175
+ writer: new StreamMessageWriter(child.stdin),
176
+ endpoint: {
177
+ type: "spawn",
178
+ description: `${description} (pid ${child.pid ?? "unknown"})`,
179
+ disposalMode: "terminate-process",
180
+ },
181
+ close: async () => {
182
+ if (closed)
183
+ return;
184
+ closed = true;
185
+ await terminateChild(child);
186
+ },
187
+ onClose: events.onClose,
188
+ onError: events.onError,
189
+ };
190
+ };
191
+ }
192
+ async function connectSocket(description, endpointType, context, createSocket) {
193
+ const socket = createSocket();
194
+ try {
195
+ await waitForConnection(description, context.signal, context.connectTimeoutMs, (resolve, reject) => {
196
+ const onError = (error) => reject(new Error(`Failed to connect to ${description}: ${error.message}`, { cause: error }));
197
+ socket.once("connect", resolve);
198
+ socket.once("error", onError);
199
+ return () => {
200
+ socket.off("connect", resolve);
201
+ socket.off("error", onError);
202
+ };
203
+ });
204
+ }
205
+ catch (error) {
206
+ socket.destroy();
207
+ throw error;
208
+ }
209
+ const events = createConnectionEvents();
210
+ let closed = false;
211
+ socket.on("error", (error) => events.emitError(error));
212
+ socket.on("close", () => events.emitClose());
213
+ return {
214
+ reader: new SocketMessageReader(socket),
215
+ writer: new SocketMessageWriter(socket),
216
+ endpoint: { type: endpointType, description, disposalMode: "disconnect" },
217
+ close: async () => {
218
+ if (closed)
219
+ return;
220
+ closed = true;
221
+ if (socket.destroyed)
222
+ return;
223
+ await new Promise((resolve) => {
224
+ socket.once("close", resolve);
225
+ socket.destroy();
226
+ });
227
+ },
228
+ onClose: events.onClose,
229
+ onError: events.onError,
230
+ };
231
+ }
232
+ export function createTcpConnectionFactory(host, port) {
233
+ return (context) => connectSocket(`TCP LSP endpoint ${host}:${port}`, "tcp", context, () => createConnection({ host, port }));
234
+ }
235
+ export function createUnixSocketConnectionFactory(path) {
236
+ return (context) => connectSocket(`Unix LSP socket ${path}`, "unix", context, () => createConnection(path));
237
+ }
238
+ export function createNamedPipeConnectionFactory(path) {
239
+ return (context) => connectSocket(`LSP named pipe ${path}`, "pipe", context, () => createConnection(path));
240
+ }
241
+ export function resolveLspConnectionFactory(transport, programmaticFactories = {}) {
242
+ switch (transport.type) {
243
+ case "spawn":
244
+ return createManagedStdioConnectionFactory(transport);
245
+ case "tcp":
246
+ return createTcpConnectionFactory(transport.host, transport.port);
247
+ case "unix":
248
+ return createUnixSocketConnectionFactory(transport.path);
249
+ case "pipe":
250
+ return createNamedPipeConnectionFactory(transport.path);
251
+ case "connection": {
252
+ const factory = Object.hasOwn(programmaticFactories, transport.id)
253
+ ? programmaticFactories[transport.id]
254
+ : undefined;
255
+ if (!factory)
256
+ throw new Error(`No LSP connection factory is registered for ${JSON.stringify(transport.id)}`);
257
+ return factory;
258
+ }
259
+ }
260
+ }
261
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/core/lsp/transport.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ChildProcessWithoutNullStreams, spawn } from \"node:child_process\";\nimport { createConnection, type Socket } from \"node:net\";\nimport {\n\ttype MessageReader,\n\ttype MessageWriter,\n\tSocketMessageReader,\n\tSocketMessageWriter,\n\tStreamMessageReader,\n\tStreamMessageWriter,\n} from \"vscode-languageserver-protocol/node.js\";\nimport { killProcessTree } from \"../../utils/shell.ts\";\nimport type { LspTransport } from \"./config.ts\";\n\nexport type LspConnectionDisposalMode = \"terminate-process\" | \"disconnect\";\ntype LspSocketEndpointType = \"tcp\" | \"unix\" | \"pipe\";\n\nexport interface LspConnectionEndpoint {\n\ttype: LspTransport[\"type\"];\n\tdescription: string;\n\tdisposalMode: LspConnectionDisposalMode;\n}\n\nexport interface LspConnectionHandle {\n\treader: MessageReader;\n\twriter: MessageWriter;\n\tendpoint: LspConnectionEndpoint;\n\tclose(): Promise<void>;\n\tonClose(listener: () => void): () => void;\n\tonError(listener: (error: Error) => void): () => void;\n}\n\nexport interface LspConnectionFactoryContext {\n\tserverId: string;\n\tworkspaceRoot: string;\n\tworkspaceUri: string;\n\tsignal: AbortSignal;\n\tconnectTimeoutMs?: number;\n\tonStderr?: (text: string) => void;\n}\n\nexport type LspConnectionFactory = (context: LspConnectionFactoryContext) => Promise<LspConnectionHandle>;\n\nexport interface ManagedStdioConnectionOptions {\n\tcommand: string;\n\targs?: string[];\n\tenv?: Record<string, string>;\n\tcwd?: string;\n\tinheritEnvironment?: boolean;\n}\nexport type LspConnectionFactoryRegistry = Readonly<Record<string, LspConnectionFactory>>;\n\ninterface ConnectionEvents {\n\temitClose(): void;\n\temitError(error: Error): void;\n\tonClose(listener: () => void): () => void;\n\tonError(listener: (error: Error) => void): () => void;\n}\n\nfunction createConnectionEvents(): ConnectionEvents {\n\tconst closeListeners = new Set<() => void>();\n\tconst errorListeners = new Set<(error: Error) => void>();\n\treturn {\n\t\temitClose: () => {\n\t\t\tfor (const listener of closeListeners) listener();\n\t\t},\n\t\temitError: (error) => {\n\t\t\tfor (const listener of errorListeners) listener(error);\n\t\t},\n\t\tonClose: (listener) => {\n\t\t\tcloseListeners.add(listener);\n\t\t\treturn () => closeListeners.delete(listener);\n\t\t},\n\t\tonError: (listener) => {\n\t\t\terrorListeners.add(listener);\n\t\t\treturn () => errorListeners.delete(listener);\n\t\t},\n\t};\n}\n\nfunction abortError(description: string): Error {\n\treturn new Error(`Aborted while connecting to ${description}`);\n}\n\nasync function waitForConnection(\n\tdescription: string,\n\tsignal: AbortSignal,\n\ttimeoutMs: number | undefined,\n\tsubscribe: (resolve: () => void, reject: (error: Error) => void) => () => void,\n): Promise<void> {\n\tif (signal.aborted) throw abortError(description);\n\tawait new Promise<void>((resolve, reject) => {\n\t\tlet settled = false;\n\t\tlet timer: NodeJS.Timeout | undefined;\n\t\tlet actualUnsubscribe: (() => void) | undefined;\n\t\tlet unsubscribeRequested = false;\n\t\tconst unsubscribe = (): void => {\n\t\t\tif (actualUnsubscribe) actualUnsubscribe();\n\t\t\telse unsubscribeRequested = true;\n\t\t};\n\t\tconst cleanup = (): void => {\n\t\t\tif (timer) clearTimeout(timer);\n\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\tunsubscribe();\n\t\t};\n\t\tconst succeed = (): void => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tcleanup();\n\t\t\tresolve();\n\t\t};\n\t\tconst fail = (error: Error): void => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tcleanup();\n\t\t\treject(error);\n\t\t};\n\t\tconst onAbort = (): void => fail(abortError(description));\n\t\tactualUnsubscribe = subscribe(succeed, fail);\n\t\tif (unsubscribeRequested) actualUnsubscribe();\n\t\tif (settled) return;\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\tif (signal.aborted) {\n\t\t\tonAbort();\n\t\t\treturn;\n\t\t}\n\t\tif (timeoutMs !== undefined && timeoutMs > 0) {\n\t\t\ttimer = setTimeout(\n\t\t\t\t() => fail(new Error(`Timed out connecting to ${description} after ${timeoutMs}ms`)),\n\t\t\t\ttimeoutMs,\n\t\t\t);\n\t\t}\n\t});\n}\n\nfunction mergeEnvironment(extra: Record<string, string> | undefined, inheritEnvironment: boolean): NodeJS.ProcessEnv {\n\treturn inheritEnvironment ? (extra ? { ...process.env, ...extra } : process.env) : { ...extra };\n}\n\nfunction processGroupIsAlive(pid: number): boolean {\n\tif (process.platform === \"win32\") return false;\n\ttry {\n\t\tprocess.kill(-pid, 0);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function waitForChildExit(exited: Promise<void>, timeoutMs: number): Promise<boolean> {\n\tlet timer: NodeJS.Timeout | undefined;\n\tconst didExit = await Promise.race([\n\t\texited.then(() => true),\n\t\tnew Promise<false>((resolve) => {\n\t\t\ttimer = setTimeout(() => resolve(false), timeoutMs);\n\t\t\ttimer.unref();\n\t\t}),\n\t]);\n\tif (timer) clearTimeout(timer);\n\treturn didExit;\n}\n\nasync function terminateChild(child: ChildProcessWithoutNullStreams): Promise<void> {\n\tif (child.pid === undefined) return;\n\tif (child.exitCode !== null || child.signalCode !== null) {\n\t\tif (processGroupIsAlive(child.pid)) killProcessTree(child.pid);\n\t\tawait new Promise<void>((resolve) => setImmediate(resolve));\n\t\treturn;\n\t}\n\tconst exited = new Promise<void>((resolve) => child.once(\"exit\", () => resolve()));\n\tif (child.pid !== undefined && process.platform !== \"win32\") {\n\t\ttry {\n\t\t\tprocess.kill(-child.pid, \"SIGTERM\");\n\t\t} catch {\n\t\t\tchild.kill(\"SIGTERM\");\n\t\t}\n\t} else {\n\t\tchild.kill(\"SIGTERM\");\n\t}\n\tconst exitedGracefully = await waitForChildExit(exited, 2000);\n\tif (exitedGracefully) {\n\t\tif (processGroupIsAlive(child.pid)) killProcessTree(child.pid);\n\t\treturn;\n\t}\n\tif (child.exitCode === null && child.signalCode === null && child.pid !== undefined) killProcessTree(child.pid);\n\tawait waitForChildExit(exited, 2000);\n}\n\nexport function createManagedStdioConnectionFactory(options: ManagedStdioConnectionOptions): LspConnectionFactory {\n\treturn async (context) => {\n\t\tconst cwd = options.cwd ?? context.workspaceRoot;\n\t\tconst description = `managed LSP process ${JSON.stringify(options.command)}`;\n\t\tconst child = spawn(options.command, options.args ?? [], {\n\t\t\tcwd,\n\t\t\tdetached: process.platform !== \"win32\",\n\t\t\tenv: mergeEnvironment(options.env, options.inheritEnvironment !== false),\n\t\t\tstdio: \"pipe\",\n\t\t});\n\t\ttry {\n\t\t\tawait waitForConnection(description, context.signal, context.connectTimeoutMs, (resolve, reject) => {\n\t\t\t\tconst onError = (error: Error): void =>\n\t\t\t\t\treject(new Error(`Failed to spawn ${description}: ${error.message}`, { cause: error }));\n\t\t\t\tchild.once(\"spawn\", resolve);\n\t\t\t\tchild.once(\"error\", onError);\n\t\t\t\treturn () => {\n\t\t\t\t\tchild.off(\"spawn\", resolve);\n\t\t\t\t\tchild.off(\"error\", onError);\n\t\t\t\t};\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tawait terminateChild(child);\n\t\t\tthrow error;\n\t\t}\n\n\t\tconst events = createConnectionEvents();\n\t\tlet closed = false;\n\t\tchild.stderr.setEncoding(\"utf8\");\n\t\tchild.stderr.on(\"data\", (chunk: string) => context.onStderr?.(chunk));\n\t\tchild.stdin.on(\"error\", (error: NodeJS.ErrnoException) => {\n\t\t\tif (error.code !== \"EPIPE\" && error.code !== \"ERR_STREAM_DESTROYED\") events.emitError(error);\n\t\t});\n\t\tchild.on(\"error\", (error) => events.emitError(error));\n\t\tchild.on(\"exit\", () => events.emitClose());\n\t\treturn {\n\t\t\treader: new StreamMessageReader(child.stdout),\n\t\t\twriter: new StreamMessageWriter(child.stdin),\n\t\t\tendpoint: {\n\t\t\t\ttype: \"spawn\",\n\t\t\t\tdescription: `${description} (pid ${child.pid ?? \"unknown\"})`,\n\t\t\t\tdisposalMode: \"terminate-process\",\n\t\t\t},\n\t\t\tclose: async () => {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tawait terminateChild(child);\n\t\t\t},\n\t\t\tonClose: events.onClose,\n\t\t\tonError: events.onError,\n\t\t};\n\t};\n}\n\nasync function connectSocket(\n\tdescription: string,\n\tendpointType: LspSocketEndpointType,\n\tcontext: LspConnectionFactoryContext,\n\tcreateSocket: () => Socket,\n): Promise<LspConnectionHandle> {\n\tconst socket = createSocket();\n\ttry {\n\t\tawait waitForConnection(description, context.signal, context.connectTimeoutMs, (resolve, reject) => {\n\t\t\tconst onError = (error: Error): void =>\n\t\t\t\treject(new Error(`Failed to connect to ${description}: ${error.message}`, { cause: error }));\n\t\t\tsocket.once(\"connect\", resolve);\n\t\t\tsocket.once(\"error\", onError);\n\t\t\treturn () => {\n\t\t\t\tsocket.off(\"connect\", resolve);\n\t\t\t\tsocket.off(\"error\", onError);\n\t\t\t};\n\t\t});\n\t} catch (error) {\n\t\tsocket.destroy();\n\t\tthrow error;\n\t}\n\n\tconst events = createConnectionEvents();\n\tlet closed = false;\n\tsocket.on(\"error\", (error) => events.emitError(error));\n\tsocket.on(\"close\", () => events.emitClose());\n\treturn {\n\t\treader: new SocketMessageReader(socket),\n\t\twriter: new SocketMessageWriter(socket),\n\t\tendpoint: { type: endpointType, description, disposalMode: \"disconnect\" },\n\t\tclose: async () => {\n\t\t\tif (closed) return;\n\t\t\tclosed = true;\n\t\t\tif (socket.destroyed) return;\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tsocket.once(\"close\", resolve);\n\t\t\t\tsocket.destroy();\n\t\t\t});\n\t\t},\n\t\tonClose: events.onClose,\n\t\tonError: events.onError,\n\t};\n}\n\nexport function createTcpConnectionFactory(host: string, port: number): LspConnectionFactory {\n\treturn (context) =>\n\t\tconnectSocket(`TCP LSP endpoint ${host}:${port}`, \"tcp\", context, () => createConnection({ host, port }));\n}\n\nexport function createUnixSocketConnectionFactory(path: string): LspConnectionFactory {\n\treturn (context) => connectSocket(`Unix LSP socket ${path}`, \"unix\", context, () => createConnection(path));\n}\n\nexport function createNamedPipeConnectionFactory(path: string): LspConnectionFactory {\n\treturn (context) => connectSocket(`LSP named pipe ${path}`, \"pipe\", context, () => createConnection(path));\n}\n\nexport function resolveLspConnectionFactory(\n\ttransport: LspTransport,\n\tprogrammaticFactories: LspConnectionFactoryRegistry = {},\n): LspConnectionFactory {\n\tswitch (transport.type) {\n\t\tcase \"spawn\":\n\t\t\treturn createManagedStdioConnectionFactory(transport);\n\t\tcase \"tcp\":\n\t\t\treturn createTcpConnectionFactory(transport.host, transport.port);\n\t\tcase \"unix\":\n\t\t\treturn createUnixSocketConnectionFactory(transport.path);\n\t\tcase \"pipe\":\n\t\t\treturn createNamedPipeConnectionFactory(transport.path);\n\t\tcase \"connection\": {\n\t\t\tconst factory = Object.hasOwn(programmaticFactories, transport.id)\n\t\t\t\t? programmaticFactories[transport.id]\n\t\t\t\t: undefined;\n\t\t\tif (!factory) throw new Error(`No LSP connection factory is registered for ${JSON.stringify(transport.id)}`);\n\t\t\treturn factory;\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Custom message types and transformers for the coding agent.
3
+ *
4
+ * Extends the base AgentMessage type with coding-agent specific message types,
5
+ * and provides a transformer to convert them to LLM-compatible messages.
6
+ */
7
+ import type { AgentMessage, BashExecutionMessage, BranchSummaryMessage, CompactionSummaryMessage, CustomMessage } from "@greppleai/grip-agent-core";
8
+ export type { BashExecutionMessage, BranchSummaryMessage, CompactionSummaryMessage, CustomMessage, } from "@greppleai/grip-agent-core";
9
+ import type { ImageContent, Message, TextContent } from "@greppleai/grip-ai";
10
+ export declare const COMPACTION_SUMMARY_PREFIX = "The conversation history before this point was compacted into the following summary:\n\n<summary>\n";
11
+ export declare const COMPACTION_SUMMARY_SUFFIX = "\n</summary>";
12
+ export declare const BRANCH_SUMMARY_PREFIX = "The following is a summary of a branch that this conversation came back from:\n\n<summary>\n";
13
+ export declare const BRANCH_SUMMARY_SUFFIX = "</summary>";
14
+ export declare const STRUCTURED_RESPONSE_INTERNAL_CUSTOM_TYPE = "structured_response_internal";
15
+ /**
16
+ * Convert a BashExecutionMessage to user message text for LLM context.
17
+ */
18
+ export declare function bashExecutionToText(msg: BashExecutionMessage): string;
19
+ export declare function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage;
20
+ export declare function createCompactionSummaryMessage(summary: string, tokensBefore: number, timestamp: string): CompactionSummaryMessage;
21
+ /** Normalize content-bearing messages received from untyped extension and session boundaries. */
22
+ export declare function normalizeMessageContent(message: AgentMessage): AgentMessage;
23
+ /** Convert CustomMessageEntry to AgentMessage format */
24
+ export declare function createCustomMessage(customType: string, content: string | (TextContent | ImageContent)[], display: boolean, details: unknown | undefined, timestamp: string): CustomMessage;
25
+ /**
26
+ * Transform AgentMessages (including custom types) to LLM-compatible Messages.
27
+ *
28
+ * This is used by:
29
+ * - Agent's transormToLlm option (for prompt calls and queued messages)
30
+ * - Compaction's generateSummary (for summarization)
31
+ * - Custom extensions and tools
32
+ */
33
+ export declare function convertToLlm(messages: AgentMessage[]): Message[];
34
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACX,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,aAAa,EACb,MAAM,4BAA4B,CAAC;AAIpC,YAAY,EACX,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,aAAa,GACb,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7E,eAAO,MAAM,yBAAyB,wGAGrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,iBAC3B,CAAC;AAEZ,eAAO,MAAM,qBAAqB,iGAGjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,eAAO,MAAM,wCAAwC,iCAAiC,CAAC;AAEvF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAgBrE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAOnH;AAED,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GACf,wBAAwB,CAO1B;AAED,iGAAiG;AACjG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAW3E;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GACf,aAAa,CASf;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,CAqDhE","sourcesContent":["/**\n * Custom message types and transformers for the coding agent.\n *\n * Extends the base AgentMessage type with coding-agent specific message types,\n * and provides a transformer to convert them to LLM-compatible messages.\n */\n\nimport type {\n\tAgentMessage,\n\tBashExecutionMessage,\n\tBranchSummaryMessage,\n\tCompactionSummaryMessage,\n\tCustomMessage,\n} from \"@greppleai/grip-agent-core\";\n\nimport { HOOK_EXECUTION_CUSTOM_TYPE } from \"./hooks/types.ts\";\n\nexport type {\n\tBashExecutionMessage,\n\tBranchSummaryMessage,\n\tCompactionSummaryMessage,\n\tCustomMessage,\n} from \"@greppleai/grip-agent-core\";\n\nimport type { ImageContent, Message, TextContent } from \"@greppleai/grip-ai\";\n\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n\n<summary>\n`;\n\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\n\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n\n<summary>\n`;\n\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\n\nexport const STRUCTURED_RESPONSE_INTERNAL_CUSTOM_TYPE = \"structured_response_internal\";\n\n/**\n * Convert a BashExecutionMessage to user message text for LLM context.\n */\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\n\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/** Normalize content-bearing messages received from untyped extension and session boundaries. */\nexport function normalizeMessageContent(message: AgentMessage): AgentMessage {\n\tif (\n\t\t(message.role === \"user\" ||\n\t\t\tmessage.role === \"assistant\" ||\n\t\t\tmessage.role === \"toolResult\" ||\n\t\t\tmessage.role === \"custom\") &&\n\t\tmessage.content == null\n\t) {\n\t\treturn { ...message, content: [] } as AgentMessage;\n\t}\n\treturn message;\n}\n\n/** Convert CustomMessageEntry to AgentMessage format */\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent: content ?? [],\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/**\n * Transform AgentMessages (including custom types) to LLM-compatible Messages.\n *\n * This is used by:\n * - Agent's transormToLlm option (for prompt calls and queued messages)\n * - Compaction's generateSummary (for summarization)\n * - Custom extensions and tools\n */\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\treturn messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\t// Skip messages excluded from context (!! prefix)\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tif (\n\t\t\t\t\t\tm.customType === STRUCTURED_RESPONSE_INTERNAL_CUSTOM_TYPE ||\n\t\t\t\t\t\tm.customType === HOOK_EXECUTION_CUSTOM_TYPE\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault:\n\t\t\t\t\t// biome-ignore lint/correctness/noSwitchDeclarations: fine\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n}\n"]}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Custom message types and transformers for the coding agent.
3
+ *
4
+ * Extends the base AgentMessage type with coding-agent specific message types,
5
+ * and provides a transformer to convert them to LLM-compatible messages.
6
+ */
7
+ import { HOOK_EXECUTION_CUSTOM_TYPE } from "./hooks/types.js";
8
+ export const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:
9
+
10
+ <summary>
11
+ `;
12
+ export const COMPACTION_SUMMARY_SUFFIX = `
13
+ </summary>`;
14
+ export const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:
15
+
16
+ <summary>
17
+ `;
18
+ export const BRANCH_SUMMARY_SUFFIX = `</summary>`;
19
+ export const STRUCTURED_RESPONSE_INTERNAL_CUSTOM_TYPE = "structured_response_internal";
20
+ /**
21
+ * Convert a BashExecutionMessage to user message text for LLM context.
22
+ */
23
+ export function bashExecutionToText(msg) {
24
+ let text = `Ran \`${msg.command}\`\n`;
25
+ if (msg.output) {
26
+ text += `\`\`\`\n${msg.output}\n\`\`\``;
27
+ }
28
+ else {
29
+ text += "(no output)";
30
+ }
31
+ if (msg.cancelled) {
32
+ text += "\n\n(command cancelled)";
33
+ }
34
+ else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {
35
+ text += `\n\nCommand exited with code ${msg.exitCode}`;
36
+ }
37
+ if (msg.truncated && msg.fullOutputPath) {
38
+ text += `\n\n[Output truncated. Full output: ${msg.fullOutputPath}]`;
39
+ }
40
+ return text;
41
+ }
42
+ export function createBranchSummaryMessage(summary, fromId, timestamp) {
43
+ return {
44
+ role: "branchSummary",
45
+ summary,
46
+ fromId,
47
+ timestamp: new Date(timestamp).getTime(),
48
+ };
49
+ }
50
+ export function createCompactionSummaryMessage(summary, tokensBefore, timestamp) {
51
+ return {
52
+ role: "compactionSummary",
53
+ summary: summary,
54
+ tokensBefore,
55
+ timestamp: new Date(timestamp).getTime(),
56
+ };
57
+ }
58
+ /** Normalize content-bearing messages received from untyped extension and session boundaries. */
59
+ export function normalizeMessageContent(message) {
60
+ if ((message.role === "user" ||
61
+ message.role === "assistant" ||
62
+ message.role === "toolResult" ||
63
+ message.role === "custom") &&
64
+ message.content == null) {
65
+ return { ...message, content: [] };
66
+ }
67
+ return message;
68
+ }
69
+ /** Convert CustomMessageEntry to AgentMessage format */
70
+ export function createCustomMessage(customType, content, display, details, timestamp) {
71
+ return {
72
+ role: "custom",
73
+ customType,
74
+ content: content ?? [],
75
+ display,
76
+ details,
77
+ timestamp: new Date(timestamp).getTime(),
78
+ };
79
+ }
80
+ /**
81
+ * Transform AgentMessages (including custom types) to LLM-compatible Messages.
82
+ *
83
+ * This is used by:
84
+ * - Agent's transormToLlm option (for prompt calls and queued messages)
85
+ * - Compaction's generateSummary (for summarization)
86
+ * - Custom extensions and tools
87
+ */
88
+ export function convertToLlm(messages) {
89
+ return messages
90
+ .map((m) => {
91
+ switch (m.role) {
92
+ case "bashExecution":
93
+ // Skip messages excluded from context (!! prefix)
94
+ if (m.excludeFromContext) {
95
+ return undefined;
96
+ }
97
+ return {
98
+ role: "user",
99
+ content: [{ type: "text", text: bashExecutionToText(m) }],
100
+ timestamp: m.timestamp,
101
+ };
102
+ case "custom": {
103
+ if (m.customType === STRUCTURED_RESPONSE_INTERNAL_CUSTOM_TYPE ||
104
+ m.customType === HOOK_EXECUTION_CUSTOM_TYPE) {
105
+ return undefined;
106
+ }
107
+ const content = typeof m.content === "string" ? [{ type: "text", text: m.content }] : m.content;
108
+ return {
109
+ role: "user",
110
+ content,
111
+ timestamp: m.timestamp,
112
+ };
113
+ }
114
+ case "branchSummary":
115
+ return {
116
+ role: "user",
117
+ content: [{ type: "text", text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],
118
+ timestamp: m.timestamp,
119
+ };
120
+ case "compactionSummary":
121
+ return {
122
+ role: "user",
123
+ content: [
124
+ { type: "text", text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },
125
+ ],
126
+ timestamp: m.timestamp,
127
+ };
128
+ case "user":
129
+ case "assistant":
130
+ case "toolResult":
131
+ return m;
132
+ default:
133
+ // biome-ignore lint/correctness/noSwitchDeclarations: fine
134
+ const _exhaustiveCheck = m;
135
+ return undefined;
136
+ }
137
+ })
138
+ .filter((m) => m !== undefined);
139
+ }
140
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Custom message types and transformers for the coding agent.\n *\n * Extends the base AgentMessage type with coding-agent specific message types,\n * and provides a transformer to convert them to LLM-compatible messages.\n */\n\nimport type {\n\tAgentMessage,\n\tBashExecutionMessage,\n\tBranchSummaryMessage,\n\tCompactionSummaryMessage,\n\tCustomMessage,\n} from \"@greppleai/grip-agent-core\";\n\nimport { HOOK_EXECUTION_CUSTOM_TYPE } from \"./hooks/types.ts\";\n\nexport type {\n\tBashExecutionMessage,\n\tBranchSummaryMessage,\n\tCompactionSummaryMessage,\n\tCustomMessage,\n} from \"@greppleai/grip-agent-core\";\n\nimport type { ImageContent, Message, TextContent } from \"@greppleai/grip-ai\";\n\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n\n<summary>\n`;\n\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\n\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n\n<summary>\n`;\n\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\n\nexport const STRUCTURED_RESPONSE_INTERNAL_CUSTOM_TYPE = \"structured_response_internal\";\n\n/**\n * Convert a BashExecutionMessage to user message text for LLM context.\n */\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\n\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary: summary,\n\t\ttokensBefore,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/** Normalize content-bearing messages received from untyped extension and session boundaries. */\nexport function normalizeMessageContent(message: AgentMessage): AgentMessage {\n\tif (\n\t\t(message.role === \"user\" ||\n\t\t\tmessage.role === \"assistant\" ||\n\t\t\tmessage.role === \"toolResult\" ||\n\t\t\tmessage.role === \"custom\") &&\n\t\tmessage.content == null\n\t) {\n\t\treturn { ...message, content: [] } as AgentMessage;\n\t}\n\treturn message;\n}\n\n/** Convert CustomMessageEntry to AgentMessage format */\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent: content ?? [],\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/**\n * Transform AgentMessages (including custom types) to LLM-compatible Messages.\n *\n * This is used by:\n * - Agent's transormToLlm option (for prompt calls and queued messages)\n * - Compaction's generateSummary (for summarization)\n * - Custom extensions and tools\n */\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\treturn messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\t// Skip messages excluded from context (!! prefix)\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tif (\n\t\t\t\t\t\tm.customType === STRUCTURED_RESPONSE_INTERNAL_CUSTOM_TYPE ||\n\t\t\t\t\t\tm.customType === HOOK_EXECUTION_CUSTOM_TYPE\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault:\n\t\t\t\t\t// biome-ignore lint/correctness/noSwitchDeclarations: fine\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\treturn undefined;\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n}\n"]}