@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 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Main entry point for the coding agent CLI.\n *\n * This file handles CLI argument parsing and translates them into\n * GripAgent options. GripAgent does the heavy lifting.\n */\n\nimport { createInterface } from \"node:readline\";\nimport { modelsAreEqual } from \"@greppleai/grip-ai\";\nimport { ProcessTerminal, setKeybindings, TuiMainScreen } from \"@greppleai/grip-tui\";\nimport chalk from \"chalk\";\nimport { type Args, parseArgs, printHelp } from \"./cli/args.ts\";\nimport { processFileArguments } from \"./cli/file-processor.ts\";\nimport { buildInitialMessage, type InitialMessageResult } from \"./cli/initial-message.ts\";\nimport { listModels } from \"./cli/list-models.ts\";\nimport { selectSession } from \"./cli/session-picker.ts\";\nimport {\n\tENV_REMOTE_PROJECT_ID,\n\tENV_REMOTE_SESSION_BASE_URL,\n\tENV_REMOTE_SESSION_TOKEN,\n\tENV_SESSION_DIR,\n\texpandTildePath,\n\tgetAgentDir,\n\tgetPackageDir,\n\tVERSION,\n} from \"./config.ts\";\nimport { AuthStorage } from \"./core/auth-storage.ts\";\nimport { exportFromFile } from \"./core/export-html/index.ts\";\nimport type { ExtensionFactory } from \"./core/extensions/types.ts\";\nimport type { GripAgentAppMode, GripAgentDiagnostic, GripAgentSessionOptions } from \"./core/grip-agent.ts\";\nimport { GripAgent, isFatalGripAgentDiagnostic } from \"./core/grip-agent.ts\";\nimport {\n\tcanonicalProjectHookIdentity,\n\thasProjectHookConfiguration,\n\ttype ProjectHookTrustResult,\n\tProjectHookTrustStore,\n} from \"./core/hooks/trust-store.ts\";\nimport { configureHttpDispatcher } from \"./core/http-dispatcher.ts\";\nimport { KeybindingsManager } from \"./core/keybindings.ts\";\nimport type { LspConfigurationInput } from \"./core/lsp/config-loader.ts\";\nimport type { ModelRegistry } from \"./core/model-registry.ts\";\nimport { resolveCliModel, resolveModelScope, type ScopedModel } from \"./core/model-resolver.ts\";\nimport { InMemorySessionManager } from \"./core/session/in-memory-session-manager.ts\";\nimport { LocalSessionManager } from \"./core/session/local-session-manager.ts\";\nimport { RemoteSessionManager } from \"./core/session/remote-session-manager.ts\";\nimport type { Session } from \"./core/session/session.ts\";\nimport type { SessionManager } from \"./core/session/session-manager.ts\";\nimport {\n\tformatMissingSessionCwdPrompt,\n\tgetMissingSessionCwdIssue,\n\tMissingSessionCwdError,\n\ttype SessionCwdIssue,\n} from \"./core/session-cwd.ts\";\nimport { SettingsManager } from \"./core/settings-manager.ts\";\nimport { resetTimings, time } from \"./core/timings.ts\";\nimport {\n\tcreateRemoteToolOperations,\n\tDeferredRemoteToolOperations,\n\ttype ToolOperations,\n} from \"./core/tools/operations.ts\";\nimport { runDaemonCommand } from \"./daemon/command.ts\";\nimport { isDaemonCommand } from \"./daemon/config.ts\";\nimport { runMigrations, showDeprecationWarnings } from \"./migrations.ts\";\nimport { ExtensionSelectorComponent } from \"./modes/interactive/components/extension-selector.ts\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.ts\";\nimport { handleConfigCommand, handlePackageCommand } from \"./package-manager-cli.ts\";\nimport { isLocalPath, normalizePath, resolvePath } from \"./utils/paths.ts\";\nimport { cleanupWindowsSelfUpdateQuarantine } from \"./utils/windows-self-update.ts\";\n\nfunction collectSettingsDiagnostics(settingsManager: SettingsManager, context: string): GripAgentDiagnostic[] {\n\treturn settingsManager.drainErrors().map(({ scope, error }) => ({\n\t\ttype: \"warning\",\n\t\tmessage: `(${context}, ${scope} settings) ${error.message}`,\n\t}));\n}\n\nfunction reportDiagnostics(diagnostics: readonly GripAgentDiagnostic[]): void {\n\tfor (const diagnostic of diagnostics) {\n\t\tconst color = diagnostic.type === \"error\" ? chalk.red : diagnostic.type === \"warning\" ? chalk.yellow : chalk.dim;\n\t\tconst prefix = diagnostic.type === \"error\" ? \"Error: \" : diagnostic.type === \"warning\" ? \"Warning: \" : \"\";\n\t\tconsole.error(color(`${prefix}${diagnostic.message}`));\n\t}\n}\n\nfunction isTruthyEnvFlag(value: string | undefined): boolean {\n\tif (!value) return false;\n\treturn value === \"1\" || value.toLowerCase() === \"true\" || value.toLowerCase() === \"yes\";\n}\n\nfunction resolveAppMode(parsed: Args, stdinIsTTY: boolean): GripAgentAppMode {\n\tif (parsed.mode === \"rpc\") {\n\t\treturn \"rpc\";\n\t}\n\tif (parsed.mode === \"json\") {\n\t\treturn \"json\";\n\t}\n\tif (parsed.print || !stdinIsTTY) {\n\t\treturn \"print\";\n\t}\n\treturn \"interactive\";\n}\n\nasync function prepareInitialMessage(\n\tparsed: Args,\n\tautoResizeImages: boolean,\n\tstdinContent?: string,\n): Promise<InitialMessageResult> {\n\tif (parsed.fileArgs.length === 0) {\n\t\treturn buildInitialMessage({ parsed, stdinContent });\n\t}\n\n\tconst { text, images } = await processFileArguments(parsed.fileArgs, { autoResizeImages });\n\treturn buildInitialMessage({\n\t\tparsed,\n\t\tfileText: text,\n\t\tfileImages: images,\n\t\tstdinContent,\n\t});\n}\n\n/** Result from resolving a session argument */\ntype ResolvedSession =\n\t| { type: \"path\"; path: string } // Direct file path\n\t| { type: \"local\"; path: string } // Found in current project\n\t| { type: \"global\"; path: string; cwd: string } // Found in different project\n\t| { type: \"not_found\"; arg: string }; // Not found anywhere\n\n/**\n * Resolve a session argument to a file path.\n * If it looks like a path, use as-is. Otherwise try to match as session ID prefix.\n */\nasync function resolveSessionPath(sessionArg: string, cwd: string, sessionDir?: string): Promise<ResolvedSession> {\n\t// If it looks like a file path, resolve it before handing it to the session manager.\n\tif (sessionArg.includes(\"/\") || sessionArg.includes(\"\\\\\") || sessionArg.endsWith(\".jsonl\")) {\n\t\treturn { type: \"path\", path: resolvePath(sessionArg, cwd) };\n\t}\n\n\t// Try to match as session ID in current project first\n\tconst localSessions = await new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).list();\n\tconst localMatches = localSessions.filter((s) => s.id.startsWith(sessionArg));\n\n\tif (localMatches.length >= 1) {\n\t\treturn { type: \"local\", path: localMatches[0].path };\n\t}\n\n\t// Try global search across all projects\n\tconst allSessions = await new LocalSessionManager({ cwd: process.cwd(), sessionDir }).listAll();\n\tconst globalMatches = allSessions.filter((s) => s.id.startsWith(sessionArg));\n\n\tif (globalMatches.length >= 1) {\n\t\tconst match = globalMatches[0];\n\t\treturn { type: \"global\", path: match.path, cwd: match.cwd };\n\t}\n\n\t// Not found anywhere\n\treturn { type: \"not_found\", arg: sessionArg };\n}\n\n/** Prompt user for yes/no confirmation */\nasync function promptConfirm(message: string): Promise<boolean> {\n\treturn new Promise((resolve) => {\n\t\tconst rl = createInterface({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t});\n\t\trl.question(`${message} [y/N] `, (answer) => {\n\t\t\trl.close();\n\t\t\tresolve(answer.toLowerCase() === \"y\" || answer.toLowerCase() === \"yes\");\n\t\t});\n\t});\n}\n\nfunction validateForkFlags(parsed: Args): void {\n\tif (!parsed.fork) return;\n\n\tconst conflictingFlags = [\n\t\tparsed.session ? \"--session\" : undefined,\n\t\tparsed.continue ? \"--continue\" : undefined,\n\t\tparsed.resume ? \"--resume\" : undefined,\n\t\tparsed.noSession ? \"--no-session\" : undefined,\n\t].filter((flag): flag is string => flag !== undefined);\n\n\tif (conflictingFlags.length > 0) {\n\t\tconsole.error(chalk.red(`Error: --fork cannot be combined with ${conflictingFlags.join(\", \")}`));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction forkSessionOrExit(sourcePath: string, cwd: string, sessionDir?: string): Session {\n\ttry {\n\t\treturn new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).forkFrom(sourcePath);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction openSessionOrExit(path: string, cwd: string, sessionDir?: string): Session {\n\ttry {\n\t\treturn new LocalSessionManager({ cwd, sessionDir }).openReference(path);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exit(1);\n\t}\n}\n\ninterface RemoteSessionCliOptions {\n\tbaseUrl: string;\n\ttoken: string;\n\tprojectId?: string;\n}\n\ninterface LifecycleSessionManagerOptions {\n\tcwd: string;\n\tsessionDir?: string;\n\tremote?: RemoteSessionCliOptions;\n}\n\nfunction resolveRemoteSessionCliOptions(parsed: Args): RemoteSessionCliOptions | undefined {\n\tconst baseUrl = parsed.remoteSessionBaseUrl ?? process.env[ENV_REMOTE_SESSION_BASE_URL];\n\tconst token = parsed.remoteSessionToken ?? process.env[ENV_REMOTE_SESSION_TOKEN];\n\tconst projectId = parsed.remoteProjectId ?? process.env[ENV_REMOTE_PROJECT_ID];\n\n\tif (!baseUrl && !token && !projectId) {\n\t\treturn undefined;\n\t}\n\tif (!baseUrl || !token) {\n\t\tconsole.error(\n\t\t\tchalk.red(\n\t\t\t\t`Error: remote sessions require both --remote-session-base-url and --remote-session-token, or ${ENV_REMOTE_SESSION_BASE_URL} and ${ENV_REMOTE_SESSION_TOKEN}`,\n\t\t\t),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n\n\treturn { baseUrl, token, projectId };\n}\n\nfunction createLifecycleSessionManager(options: LifecycleSessionManagerOptions): SessionManager {\n\tif (options.remote) {\n\t\treturn new RemoteSessionManager({\n\t\t\tbaseUrl: options.remote.baseUrl,\n\t\t\ttoken: options.remote.token,\n\t\t\tcwd: options.cwd,\n\t\t\tprojectId: options.remote.projectId,\n\t\t});\n\t}\n\treturn new LocalSessionManager({ cwd: options.cwd, sessionDir: options.sessionDir });\n}\n\nasync function resolveRemoteInitialSession(parsed: Args, manager: SessionManager): Promise<Session> {\n\tif (parsed.fork) {\n\t\treturn await manager.forkFrom(parsed.fork);\n\t}\n\tif (parsed.session) {\n\t\treturn await manager.openReference(parsed.session);\n\t}\n\tif (parsed.resume) {\n\t\tconst selectedReference = await selectSession(\n\t\t\t(onProgress) => manager.list(onProgress),\n\t\t\t(onProgress) => manager.listAll(onProgress),\n\t\t);\n\t\tif (!selectedReference) {\n\t\t\tconsole.log(chalk.dim(\"No session selected\"));\n\t\t\tprocess.exit(0);\n\t\t}\n\t\treturn await manager.openReference(selectedReference);\n\t}\n\tif (parsed.continue) {\n\t\treturn await manager.continueRecent();\n\t}\n\treturn await manager.create();\n}\n\nasync function resolveLocalRequestedSession(sessionArg: string, cwd: string, sessionDir?: string): Promise<Session> {\n\tconst resolved = await resolveSessionPath(sessionArg, cwd, sessionDir);\n\tswitch (resolved.type) {\n\t\tcase \"path\":\n\t\tcase \"local\":\n\t\t\treturn openSessionOrExit(resolved.path, process.cwd(), sessionDir);\n\t\tcase \"global\": {\n\t\t\tconsole.log(chalk.yellow(`Session found in different project: ${resolved.cwd}`));\n\t\t\tconst shouldFork = await promptConfirm(\"Fork this session into current directory?\");\n\t\t\tif (!shouldFork) {\n\t\t\t\tconsole.log(chalk.dim(\"Aborted.\"));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir);\n\t\t}\n\t\tcase \"not_found\":\n\t\t\tconsole.error(chalk.red(`No session found matching '${resolved.arg}'`));\n\t\t\tprocess.exit(1);\n\t}\n}\n\nasync function resolveInitialSession(\n\tparsed: Args,\n\tcwd: string,\n\tsessionDir: string | undefined,\n\tsettingsManager: SettingsManager,\n\tremoteOptions?: RemoteSessionCliOptions,\n): Promise<Session> {\n\tif (parsed.noSession) {\n\t\treturn new InMemorySessionManager().create();\n\t}\n\n\tif (remoteOptions) {\n\t\treturn resolveRemoteInitialSession(\n\t\t\tparsed,\n\t\t\tnew RemoteSessionManager({\n\t\t\t\tbaseUrl: remoteOptions.baseUrl,\n\t\t\t\ttoken: remoteOptions.token,\n\t\t\t\tcwd,\n\t\t\t\tprojectId: remoteOptions.projectId,\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (parsed.fork) {\n\t\tconst resolved = await resolveSessionPath(parsed.fork, cwd, sessionDir);\n\n\t\tswitch (resolved.type) {\n\t\t\tcase \"path\":\n\t\t\tcase \"local\":\n\t\t\tcase \"global\":\n\t\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir);\n\n\t\t\tcase \"not_found\":\n\t\t\t\tconsole.error(chalk.red(`No session found matching '${resolved.arg}'`));\n\t\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\n\tif (parsed.session) return resolveLocalRequestedSession(parsed.session, cwd, sessionDir);\n\n\tif (parsed.resume) {\n\t\tinitTheme(settingsManager.getTheme(), true);\n\t\ttry {\n\t\t\tconst selectedPath = await selectSession(\n\t\t\t\t(onProgress) => new LocalSessionManager({ cwd, sessionDir }).list(onProgress),\n\t\t\t\t(onProgress) => new LocalSessionManager({ cwd: process.cwd(), sessionDir }).listAll(onProgress),\n\t\t\t);\n\t\t\tif (!selectedPath) {\n\t\t\t\tconsole.log(chalk.dim(\"No session selected\"));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\treturn openSessionOrExit(selectedPath, process.cwd(), sessionDir);\n\t\t} finally {\n\t\t\tstopThemeWatcher();\n\t\t}\n\t}\n\n\tif (parsed.continue) {\n\t\treturn new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).continueRecent();\n\t}\n\n\treturn new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).create();\n}\n\ninterface SessionOptionsResolution {\n\toptions: GripAgentSessionOptions;\n\tcliThinkingFromModel: boolean;\n\tdiagnostics: GripAgentDiagnostic[];\n}\n\nfunction applyCliModelSelection(\n\tparsed: Args,\n\tmodelRegistry: ModelRegistry,\n\tresolution: SessionOptionsResolution,\n): void {\n\tif (!parsed.model) return;\n\tconst resolved = resolveCliModel({\n\t\tcliProvider: parsed.provider,\n\t\tcliModel: parsed.model,\n\t\tmodelRegistry,\n\t});\n\tif (resolved.warning) resolution.diagnostics.push({ type: \"warning\", message: resolved.warning });\n\tif (resolved.error) resolution.diagnostics.push({ type: \"error\", message: resolved.error });\n\tif (!resolved.model) return;\n\tresolution.options.model = resolved.model;\n\tif (!parsed.thinking && resolved.thinkingLevel) {\n\t\tresolution.options.thinkingLevel = resolved.thinkingLevel;\n\t\tresolution.cliThinkingFromModel = true;\n\t}\n}\n\nfunction selectDefaultScopedModel(\n\tscopedModels: ScopedModel[],\n\tmodelRegistry: ModelRegistry,\n\tsettingsManager: SettingsManager,\n): ScopedModel {\n\tconst savedProvider = settingsManager.getDefaultProvider();\n\tconst savedModelId = settingsManager.getDefaultModel();\n\tconst savedModel = savedProvider && savedModelId ? modelRegistry.find(savedProvider, savedModelId) : undefined;\n\treturn (\n\t\t(savedModel ? scopedModels.find((scoped) => modelsAreEqual(scoped.model, savedModel)) : undefined) ??\n\t\tscopedModels[0]\n\t);\n}\n\nfunction applyCliToolSelection(parsed: Args, options: GripAgentSessionOptions): void {\n\tif (parsed.noTools) options.noTools = \"all\";\n\telse if (parsed.noBuiltinTools) options.noTools = \"builtin\";\n\tif (parsed.tools) options.tools = [...parsed.tools];\n\tif (parsed.enableLspTools) options.enableLspTools = true;\n}\n\nfunction buildSessionOptions(\n\tparsed: Args,\n\tscopedModels: ScopedModel[],\n\thasExistingSession: boolean,\n\tmodelRegistry: ModelRegistry,\n\tsettingsManager: SettingsManager,\n): SessionOptionsResolution {\n\tconst resolution: SessionOptionsResolution = {\n\t\toptions: {},\n\t\tcliThinkingFromModel: false,\n\t\tdiagnostics: [],\n\t};\n\tapplyCliModelSelection(parsed, modelRegistry, resolution);\n\tconst { options } = resolution;\n\n\tif (!options.model && scopedModels.length > 0 && !hasExistingSession) {\n\t\tconst selected = selectDefaultScopedModel(scopedModels, modelRegistry, settingsManager);\n\t\toptions.model = selected.model;\n\t\tif (!parsed.thinking && selected.thinkingLevel) options.thinkingLevel = selected.thinkingLevel;\n\t}\n\n\tif (parsed.thinking) options.thinkingLevel = parsed.thinking;\n\tif (scopedModels.length > 0) {\n\t\toptions.scopedModels = scopedModels.map((scoped) => ({\n\t\t\tmodel: scoped.model,\n\t\t\tthinkingLevel: scoped.thinkingLevel,\n\t\t}));\n\t}\n\tapplyCliToolSelection(parsed, options);\n\treturn resolution;\n}\n\nfunction resolveCliPaths(cwd: string, paths: string[] | undefined): string[] | undefined {\n\treturn paths?.map((value) => (isLocalPath(value) ? resolvePath(value, cwd) : value));\n}\n\nasync function promptForMissingSessionCwd(\n\tissue: SessionCwdIssue,\n\tsettingsManager: SettingsManager,\n): Promise<string | undefined> {\n\tinitTheme(settingsManager.getTheme());\n\tsetKeybindings(KeybindingsManager.create());\n\n\treturn new Promise((resolve) => {\n\t\tconst ui = new TuiMainScreen(new ProcessTerminal(), settingsManager.getShowHardwareCursor());\n\t\tui.setClearOnShrink(settingsManager.getClearOnShrink());\n\n\t\tlet settled = false;\n\t\tconst finish = (result: string | undefined) => {\n\t\t\tif (settled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettled = true;\n\t\t\tui.stop();\n\t\t\tresolve(result);\n\t\t};\n\n\t\tconst selector = new ExtensionSelectorComponent(\n\t\t\tformatMissingSessionCwdPrompt(issue),\n\t\t\t[\"Continue\", \"Cancel\"],\n\t\t\t(option) => finish(option === \"Continue\" ? issue.fallbackCwd : undefined),\n\t\t\t() => finish(undefined),\n\t\t\t{ tui: ui },\n\t\t);\n\t\tui.addChild(selector);\n\t\tui.setFocus(selector);\n\t\tui.start();\n\t});\n}\n\nexport type ProjectHookTrustChoice = \"deny\" | \"once\" | \"always\";\n\nexport async function promptForProjectHookTrust(\n\tcwd: string,\n\tidentity: string,\n\tsettingsManager: SettingsManager,\n): Promise<ProjectHookTrustChoice> {\n\tinitTheme(settingsManager.getTheme());\n\tsetKeybindings(KeybindingsManager.create());\n\tconst title = [\n\t\t`Project hooks were found in ${cwd}.`,\n\t\t\"Project hooks execute in the active workspace: as your host user locally, or inside an active sandbox/remote backend.\",\n\t\t`Trust always authorizes all current and future hook changes in ${identity}.`,\n\t].join(\"\\n\");\n\n\treturn new Promise((resolve) => {\n\t\tconst ui = new TuiMainScreen(new ProcessTerminal(), settingsManager.getShowHardwareCursor());\n\t\tui.setClearOnShrink(settingsManager.getClearOnShrink());\n\t\tlet settled = false;\n\t\tconst finish = (choice: ProjectHookTrustChoice) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tui.stop();\n\t\t\tresolve(choice);\n\t\t};\n\t\tconst selector = new ExtensionSelectorComponent(\n\t\t\ttitle,\n\t\t\t[\"Don't trust\", \"Trust once\", \"Trust always\"],\n\t\t\t(option) => {\n\t\t\t\tif (option === \"Trust once\") finish(\"once\");\n\t\t\t\telse if (option === \"Trust always\") finish(\"always\");\n\t\t\t\telse finish(\"deny\");\n\t\t\t},\n\t\t\t() => finish(\"deny\"),\n\t\t\t{ tui: ui },\n\t\t);\n\t\tui.addChild(selector);\n\t\tui.setFocus(selector);\n\t\tui.start();\n\t});\n}\nexport interface ProjectHookTrustPolicyOptions {\n\tinitialCwd: string;\n\tinitialSessionId: string;\n\texplicitTrust: boolean;\n\tinteractive: boolean;\n\tskipInitialPrompt: boolean;\n\tstore: ProjectHookTrustStore;\n\tprompt: (cwd: string, identity: string) => Promise<ProjectHookTrustChoice>;\n\treportError?: (error: string | undefined) => void;\n}\n\nexport interface ProjectHookTrustPolicy {\n\tresolveInitial(backendAllowsProjectHooks: boolean): Promise<boolean>;\n\tgetInitialTrustedIdentity(): string | undefined;\n\tresolveFor(sessionCwd: string, sessionId: string): ProjectHookTrustResult;\n\tisTrustedFor(sessionCwd: string, sessionId: string): boolean;\n}\ninterface ProjectHookTrustPolicyState {\n\tinitialTrusted: boolean;\n\tinitialTrustedIdentity: string | undefined;\n\ttrustOnceIdentity: string | undefined;\n\ttrustOnceSessionId: string | undefined;\n\ttrustOnceConsumed: boolean;\n}\n\ntype ProjectHookTrustErrorReporter = (error: string | undefined) => void;\n\nfunction identifyInitialProjectHooks(cwd: string, reportError: ProjectHookTrustErrorReporter): string | undefined {\n\ttry {\n\t\treturn canonicalProjectHookIdentity(cwd);\n\t} catch (error) {\n\t\treportError(\n\t\t\t`Unable to identify project hooks repository: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t\treturn undefined;\n\t}\n}\n\nfunction applyInitialProjectHookTrustChoice(\n\tchoice: ProjectHookTrustChoice,\n\tidentity: string,\n\toptions: ProjectHookTrustPolicyOptions,\n\tstate: ProjectHookTrustPolicyState,\n\treportError: ProjectHookTrustErrorReporter,\n): void {\n\tif (choice === \"once\" || choice === \"always\") {\n\t\tstate.initialTrusted = true;\n\t\tstate.initialTrustedIdentity = identity;\n\t}\n\tif (choice === \"once\") {\n\t\tstate.trustOnceIdentity = identity;\n\t\tstate.trustOnceSessionId = options.initialSessionId;\n\t}\n\tif (choice === \"always\") {\n\t\tconst saved = options.store.trustAlwaysIdentity(identity);\n\t\treportError(saved.error);\n\t}\n}\n\nasync function resolveInitialProjectHookTrust(\n\tbackendAllowsProjectHooks: boolean,\n\toptions: ProjectHookTrustPolicyOptions,\n\tstate: ProjectHookTrustPolicyState,\n\treportError: ProjectHookTrustErrorReporter,\n): Promise<boolean> {\n\tif (!backendAllowsProjectHooks) return state.initialTrusted;\n\tif (state.initialTrusted) return true;\n\tif (options.skipInitialPrompt) return false;\n\tif (!hasProjectHookConfiguration(options.initialCwd)) return false;\n\n\tconst persisted = options.store.isTrusted(options.initialCwd);\n\treportError(persisted.error);\n\tstate.initialTrusted = persisted.trusted;\n\tstate.initialTrustedIdentity = persisted.trusted ? persisted.identity : undefined;\n\tif (state.initialTrusted || !options.interactive) return state.initialTrusted;\n\n\tconst identity = identifyInitialProjectHooks(options.initialCwd, reportError);\n\tif (!identity) return false;\n\tconst choice = await options.prompt(options.initialCwd, identity);\n\tapplyInitialProjectHookTrustChoice(choice, identity, options, state, reportError);\n\treturn state.initialTrusted;\n}\n\n/** Orchestrates the CLI's startup and per-session project-hook trust decisions. */\nexport function createProjectHookTrustPolicy(options: ProjectHookTrustPolicyOptions): ProjectHookTrustPolicy {\n\tconst state: ProjectHookTrustPolicyState = {\n\t\tinitialTrusted: options.explicitTrust,\n\t\tinitialTrustedIdentity: undefined,\n\t\ttrustOnceIdentity: undefined,\n\t\ttrustOnceSessionId: undefined,\n\t\ttrustOnceConsumed: false,\n\t};\n\tconst reportError = options.reportError ?? (() => {});\n\n\treturn {\n\t\tresolveInitial(backendAllowsProjectHooks: boolean): Promise<boolean> {\n\t\t\treturn resolveInitialProjectHookTrust(backendAllowsProjectHooks, options, state, reportError);\n\t\t},\n\n\t\tgetInitialTrustedIdentity(): string | undefined {\n\t\t\treturn state.initialTrustedIdentity;\n\t\t},\n\n\t\tresolveFor(sessionCwd: string, sessionId: string): ProjectHookTrustResult {\n\t\t\tif (options.explicitTrust) return { trusted: true };\n\t\t\tif (!hasProjectHookConfiguration(sessionCwd)) return { trusted: false };\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\t!state.trustOnceConsumed &&\n\t\t\t\t\tstate.trustOnceIdentity &&\n\t\t\t\t\tstate.trustOnceSessionId === sessionId &&\n\t\t\t\t\tcanonicalProjectHookIdentity(sessionCwd) === state.trustOnceIdentity\n\t\t\t\t) {\n\t\t\t\t\tstate.trustOnceConsumed = true;\n\t\t\t\t\treturn { trusted: true, identity: state.trustOnceIdentity };\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconst message = `Unable to identify project hooks repository: ${error instanceof Error ? error.message : String(error)}`;\n\t\t\t\treportError(message);\n\t\t\t\treturn { trusted: false, error: message };\n\t\t\t}\n\t\t\tconst persisted = options.store.isTrusted(sessionCwd);\n\t\t\treportError(persisted.error);\n\t\t\treturn persisted;\n\t\t},\n\n\t\tisTrustedFor(sessionCwd: string, sessionId: string): boolean {\n\t\t\treturn this.resolveFor(sessionCwd, sessionId).trusted;\n\t\t},\n\t};\n}\n\nexport interface MainOptions {\n\textensionFactories?: ExtensionFactory[];\n\tdaemonRunner?: (args: readonly string[]) => Promise<void>;\n\t/** Test/embedding override for the interactive project-hook trust prompt. */\n\tprojectHookTrustPrompt?: (cwd: string, identity: string) => Promise<ProjectHookTrustChoice>;\n\t/** Test/embedding override for persistent project-hook trust storage. */\n\tprojectHookTrustStore?: ProjectHookTrustStore;\n}\ninterface ParsedMainInvocation {\n\tparsed: Args;\n\tappMode: GripAgentAppMode;\n}\n\ninterface StartupSessionResolution {\n\tcwd: string;\n\tagentDir: string;\n\tstartupSettingsManager: SettingsManager;\n\tsessionDir: string | undefined;\n\tremoteSessionOptions: RemoteSessionCliOptions | undefined;\n\tinitialSession: Session;\n}\n\nasync function runCliPreflight(args: string[], options: MainOptions | undefined): Promise<boolean> {\n\tif (isDaemonCommand(args)) {\n\t\tawait (options?.daemonRunner ?? runDaemonCommand)(args);\n\t\treturn true;\n\t}\n\tconfigureHttpDispatcher();\n\tresetTimings();\n\tconst offlineMode = args.includes(\"--offline\") || isTruthyEnvFlag(process.env.GRIP_OFFLINE);\n\tif (offlineMode) {\n\t\tprocess.env.GRIP_OFFLINE = \"1\";\n\t\tprocess.env.GRIP_SKIP_VERSION_CHECK = \"1\";\n\t}\n\tif (process.platform === \"win32\") cleanupWindowsSelfUpdateQuarantine(getPackageDir());\n\tif (await handlePackageCommand(args)) return true;\n\treturn handleConfigCommand(args);\n}\n\nfunction reportArgumentDiagnostics(parsed: Args): void {\n\tif (parsed.diagnostics.length === 0) return;\n\tfor (const diagnostic of parsed.diagnostics) {\n\t\tconst color = diagnostic.type === \"error\" ? chalk.red : chalk.yellow;\n\t\tconsole.error(color(`${diagnostic.type === \"error\" ? \"Error\" : \"Warning\"}: ${diagnostic.message}`));\n\t}\n\tif (parsed.diagnostics.some((diagnostic) => diagnostic.type === \"error\")) process.exit(1);\n}\n\nasync function handleCliMetadataCommands(parsed: Args): Promise<void> {\n\tif (parsed.version) {\n\t\tconsole.log(VERSION);\n\t\tprocess.exit(0);\n\t}\n\tif (!parsed.export) return;\n\tlet result: string;\n\ttry {\n\t\tconst outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;\n\t\tresult = await exportFromFile(parsed.export, outputPath);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : \"Failed to export session\";\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exit(1);\n\t}\n\tconsole.log(`Exported to: ${result}`);\n\tprocess.exit(0);\n}\n\nasync function parseMainInvocation(args: string[]): Promise<ParsedMainInvocation> {\n\tconst parsed = parseArgs(args);\n\treportArgumentDiagnostics(parsed);\n\ttime(\"parseArgs\");\n\tconst appMode = resolveAppMode(parsed, process.stdin.isTTY);\n\tGripAgent.setupStdio({ mode: appMode });\n\tawait handleCliMetadataCommands(parsed);\n\tif (parsed.mode === \"rpc\" && parsed.fileArgs.length > 0) {\n\t\tconsole.error(chalk.red(\"Error: @file arguments are not supported in RPC mode\"));\n\t\tprocess.exit(1);\n\t}\n\tvalidateForkFlags(parsed);\n\treturn { parsed, appMode };\n}\n\nasync function resolveStartupSession(parsed: Args, appMode: GripAgentAppMode): Promise<StartupSessionResolution> {\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst startupSettingsManager = SettingsManager.create(cwd, agentDir);\n\treportDiagnostics(collectSettingsDiagnostics(startupSettingsManager, \"startup session lookup\"));\n\tconst envSessionDir = process.env[ENV_SESSION_DIR];\n\tconst sessionDir =\n\t\t(parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??\n\t\t(envSessionDir ? expandTildePath(envSessionDir) : undefined) ??\n\t\tstartupSettingsManager.getSessionDir();\n\tconst remoteSessionOptions = resolveRemoteSessionCliOptions(parsed);\n\tlet initialSession = await resolveInitialSession(\n\t\tparsed,\n\t\tcwd,\n\t\tsessionDir,\n\t\tstartupSettingsManager,\n\t\tremoteSessionOptions,\n\t);\n\tconst missingSessionCwdIssue = getMissingSessionCwdIssue(initialSession, cwd);\n\tif (missingSessionCwdIssue) {\n\t\tif (appMode !== \"interactive\") {\n\t\t\tconsole.error(chalk.red(new MissingSessionCwdError(missingSessionCwdIssue).message));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconst selectedCwd = await promptForMissingSessionCwd(missingSessionCwdIssue, startupSettingsManager);\n\t\tif (!selectedCwd) process.exit(0);\n\t\tinitialSession = await createLifecycleSessionManager({\n\t\t\tcwd,\n\t\t\tsessionDir,\n\t\t\tremote: remoteSessionOptions,\n\t\t}).openReference(missingSessionCwdIssue.sessionReference!, { cwdOverride: selectedCwd });\n\t}\n\ttime(\"resolveInitialSession\");\n\treturn { cwd, agentDir, startupSettingsManager, sessionDir, remoteSessionOptions, initialSession };\n}\n\nasync function resolveStartupToolOperations(parsed: Args): Promise<ToolOperations | undefined> {\n\tif (parsed.help) return undefined;\n\tconst remoteDeferred = parsed.remoteDeferred;\n\tif (remoteDeferred && parsed.remote) {\n\t\tconsole.error(chalk.red(\"Error: --remote-deferred and --remote cannot be used together\"));\n\t\tprocess.exit(1);\n\t}\n\tif (parsed.remote) {\n\t\ttry {\n\t\t\treturn await createRemoteToolOperations(parsed.remote);\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconsole.error(chalk.red(`Error: failed to initialize remote tool operations: ${message}`));\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\tif (!remoteDeferred) return undefined;\n\tif (!parsed.remoteCwd) {\n\t\tconsole.error(chalk.red(\"Error: --remote-deferred requires --remote-cwd <path>\"));\n\t\tprocess.exit(1);\n\t}\n\treturn new DeferredRemoteToolOperations(parsed.remoteCwd);\n}\n\nfunction createCliLspInputs(parsed: Args, cwd: string): LspConfigurationInput[] {\n\tconst inputs: LspConfigurationInput[] = [];\n\tif (parsed.lspConfig) inputs.push({ type: \"file\", path: resolvePath(parsed.lspConfig, cwd), scope: \"cli\" });\n\tif (parsed.noLsp) inputs.push({ type: \"disabled\", source: \"--no-lsp\", scope: \"cli\" });\n\treturn inputs;\n}\nasync function handleRuntimeInformationCommands(parsed: Args, gripAgent: GripAgent): Promise<void> {\n\tconst { modelRegistry, resourceLoader } = gripAgent.services;\n\tif (parsed.help) {\n\t\tconst extensionFlags = resourceLoader\n\t\t\t.getExtensions()\n\t\t\t.extensions.flatMap((extension) => Array.from(extension.flags.values()));\n\t\tprintHelp(extensionFlags);\n\t\tprocess.exit(0);\n\t}\n\tif (parsed.listModels === undefined) return;\n\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\tawait listModels(modelRegistry, searchPattern);\n\tprocess.exit(0);\n}\n\nasync function reportRuntimeStartupDiagnostics(gripAgent: GripAgent, deprecationWarnings: string[]): Promise<void> {\n\tif (gripAgent.mode === \"interactive\" && deprecationWarnings.length > 0) {\n\t\tawait showDeprecationWarnings(deprecationWarnings);\n\t}\n\ttime(\"resolveModelScope\");\n\tconst hasFatalDiagnostics = gripAgent.diagnostics.some(isFatalGripAgentDiagnostic);\n\tif (gripAgent.mode !== \"interactive\" || hasFatalDiagnostics) reportDiagnostics(gripAgent.diagnostics);\n\tif (hasFatalDiagnostics) process.exit(1);\n\ttime(\"createAgentSession\");\n}\n\nexport async function main(args: string[], options?: MainOptions) {\n\tif (await runCliPreflight(args, options)) return;\n\tconst { parsed, appMode } = await parseMainInvocation(args);\n\n\t// Run migrations (pass cwd for project-local migrations)\n\tconst { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(process.cwd());\n\ttime(\"runMigrations\");\n\n\t// Decide the final runtime cwd before creating cwd-bound runtime services.\n\t// --session and --resume may select a session from another project, so project-local\n\t// settings, resources, provider registrations, and models must be resolved only after\n\t// the target session cwd is known. The startup-cwd settings manager is used only for\n\t// sessionDir lookup during session selection.\n\tconst { cwd, agentDir, startupSettingsManager, sessionDir, remoteSessionOptions, initialSession } =\n\t\tawait resolveStartupSession(parsed, appMode);\n\tconst projectHookTrustStore = options?.projectHookTrustStore ?? new ProjectHookTrustStore(agentDir);\n\tconst reportedProjectHookTrustErrors = new Set<string>();\n\tconst reportProjectHookTrustError = (error: string | undefined) => {\n\t\tif (!error || reportedProjectHookTrustErrors.has(error)) return;\n\t\treportedProjectHookTrustErrors.add(error);\n\t\tconsole.error(chalk.yellow(`Warning: ${error}`));\n\t};\n\tconst initialHookCwd = initialSession.getCwd();\n\tconst projectHookTrustPolicy = createProjectHookTrustPolicy({\n\t\tinitialCwd: initialHookCwd,\n\t\tinitialSessionId: initialSession.getSessionId(),\n\t\texplicitTrust: parsed.trustProjectHooks === true,\n\t\tinteractive: appMode === \"interactive\",\n\t\tskipInitialPrompt: parsed.help || parsed.listModels !== undefined,\n\t\tstore: projectHookTrustStore,\n\t\tprompt:\n\t\t\toptions?.projectHookTrustPrompt ??\n\t\t\t((promptCwd, promptIdentity) => promptForProjectHookTrust(promptCwd, promptIdentity, startupSettingsManager)),\n\t\treportError: reportProjectHookTrustError,\n\t});\n\tconst authStorage = AuthStorage.create();\n\tconst runtimeSessionManager = parsed.noSession\n\t\t? new InMemorySessionManager(initialSession.getCwd())\n\t\t: createLifecycleSessionManager({ cwd: initialSession.getCwd(), sessionDir, remote: remoteSessionOptions });\n\tconst toolOperations = await resolveStartupToolOperations(parsed);\n\tconst initialHookBackend = toolOperations?.getBackendInfo?.();\n\tconst initialProjectHooksTrusted = await projectHookTrustPolicy.resolveInitial(\n\t\ttoolOperations === undefined || initialHookBackend?.type === \"local\",\n\t);\n\tconst initialTrustedProjectHooksIdentity = projectHookTrustPolicy.getInitialTrustedIdentity();\n\tconst backendType = toolOperations?.getBackendInfo?.()?.type;\n\tconst instructionPathCwd = toolOperations && backendType === \"remote\" ? toolOperations.cwd : cwd;\n\tconst resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions);\n\tconst resolvedSkillPaths = resolveCliPaths(instructionPathCwd, parsed.skills);\n\tconst resolvedRulePaths = resolveCliPaths(instructionPathCwd, parsed.rules);\n\tconst resolvedPromptTemplatePaths = resolveCliPaths(instructionPathCwd, parsed.promptTemplates);\n\tconst resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);\n\tconst cliLspInputs = createCliLspInputs(parsed, cwd);\n\tconst gripAgent = await GripAgent.create({\n\t\ttoolOperations,\n\t\townsToolOperations: toolOperations !== undefined,\n\t\tmode: appMode,\n\t\tcwd: initialSession.getCwd(),\n\t\tagentDir,\n\t\tsessionManager: runtimeSessionManager,\n\t\tauthStorage,\n\t\ttrustProjectHooks: initialProjectHooksTrusted,\n\t\ttrustedProjectHooksIdentity: initialTrustedProjectHooksIdentity,\n\t\textensionFlagValues: parsed.unknownFlags,\n\t\tresourceLoaderOptions: {\n\t\t\ttoolOperations,\n\t\t\tadditionalExtensionPaths: resolvedExtensionPaths,\n\t\t\tadditionalSkillPaths: resolvedSkillPaths,\n\t\t\tadditionalRulePaths: resolvedRulePaths,\n\t\t\tadditionalPromptTemplatePaths: resolvedPromptTemplatePaths,\n\t\t\tadditionalThemePaths: resolvedThemePaths,\n\t\t\tnoExtensions: parsed.noExtensions,\n\t\t\tnoSkills: parsed.noSkills,\n\t\t\tnoRules: parsed.noRules,\n\t\t\tnoPromptTemplates: parsed.noPromptTemplates,\n\t\t\tnoThemes: parsed.noThemes,\n\t\t\tnoContextFiles: parsed.noContextFiles,\n\t\t\tsystemPrompt: parsed.systemPrompt,\n\t\t\tappendSystemPrompt: parsed.appendSystemPrompt,\n\t\t\textensionFactories: options?.extensionFactories,\n\t\t},\n\t\tresolveSessionOptions: async ({ services, session }) => {\n\t\t\tconst { settingsManager, modelRegistry } = services;\n\t\t\tconst diagnostics: GripAgentDiagnostic[] = [\n\t\t\t\t...collectSettingsDiagnostics(settingsManager, \"runtime creation\"),\n\t\t\t];\n\t\t\tconst modelPatterns = parsed.models ?? settingsManager.getEnabledModels();\n\t\t\tconst scopedModels =\n\t\t\t\tmodelPatterns && modelPatterns.length > 0 ? await resolveModelScope(modelPatterns, modelRegistry) : [];\n\t\t\tconst { options: sessionOptions, diagnostics: sessionOptionDiagnostics } = buildSessionOptions(\n\t\t\t\tparsed,\n\t\t\t\tscopedModels,\n\t\t\t\tsession.buildSessionContext().messages.length > 0,\n\t\t\t\tmodelRegistry,\n\t\t\t\tsettingsManager,\n\t\t\t);\n\t\t\tdiagnostics.push(...sessionOptionDiagnostics);\n\n\t\t\tif (parsed.apiKey) {\n\t\t\t\tif (!sessionOptions.model) {\n\t\t\t\t\tdiagnostics.push({\n\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\tmessage: \"--api-key requires a model to be specified via --model, --provider/--model, or --models\",\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tauthStorage.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (toolOperations) {\n\t\t\t\tconst backend = toolOperations.getBackendInfo?.();\n\t\t\t\tlet message = `Deferred remote backend mode enabled (cwd: ${toolOperations.cwd})`;\n\t\t\t\tif (backend?.type === \"remote\" && backend.configured) {\n\t\t\t\t\tmessage = `Remote tool operations enabled: ${backend.url} (cwd: ${backend.cwd})`;\n\t\t\t\t}\n\t\t\t\tdiagnostics.push({ type: \"info\", message });\n\t\t\t}\n\t\t\tconst projectHookTrust = projectHookTrustPolicy.resolveFor(services.cwd, session.getSessionId());\n\n\t\t\treturn {\n\t\t\t\tmodel: sessionOptions.model,\n\t\t\t\tthinkingLevel: sessionOptions.thinkingLevel,\n\t\t\t\tscopedModels: sessionOptions.scopedModels,\n\t\t\t\ttools: sessionOptions.tools,\n\t\t\t\tenableLspTools: sessionOptions.enableLspTools,\n\t\t\t\tnoTools: sessionOptions.noTools,\n\t\t\t\tcustomTools: sessionOptions.customTools,\n\t\t\t\ttoolOperations,\n\t\t\t\ttrustProjectHooks: projectHookTrust.trusted,\n\t\t\t\ttrustedProjectHooksIdentity: projectHookTrust.identity,\n\t\t\t\tlsp: cliLspInputs,\n\t\t\t\tdiagnostics,\n\t\t\t};\n\t\t},\n\t});\n\tawait gripAgent.createAgentSession({ session: initialSession });\n\ttime(\"createAgentSessionRuntime\");\n\tconst { settingsManager } = gripAgent.services;\n\tawait handleRuntimeInformationCommands(parsed, gripAgent);\n\n\tconst stdinContent = await gripAgent.readPipedStdin();\n\ttime(\"readPipedStdin\");\n\n\tconst { initialMessage, initialImages } = await prepareInitialMessage(\n\t\tparsed,\n\t\tsettingsManager.getImageAutoResize(),\n\t\tstdinContent,\n\t);\n\ttime(\"prepareInitialMessage\");\n\tinitTheme(settingsManager.getTheme(), gripAgent.mode === \"interactive\");\n\ttime(\"initTheme\");\n\n\tawait reportRuntimeStartupDiagnostics(gripAgent, deprecationWarnings);\n\n\tawait gripAgent.runMode({\n\t\tmigratedProviders,\n\t\tinitialMessage,\n\t\tinitialImages,\n\t\tinitialMessages: parsed.messages,\n\t\tverbose: parsed.verbose,\n\t\ttuiMode: parsed.tuiMode,\n\t\tstartupBenchmark: isTruthyEnvFlag(process.env.GRIP_STARTUP_BENCHMARK),\n\t});\n}\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * One-time migrations that run on startup.
3
+ */
4
+ /**
5
+ * Migrate legacy oauth.json and settings.json apiKeys to auth.json.
6
+ *
7
+ * @returns Array of provider names that were migrated
8
+ */
9
+ export declare function migrateAuthToAuthJson(): string[];
10
+ /**
11
+ * Migrate sessions from ~/.pi/agent/*.jsonl to proper session directories.
12
+ *
13
+ * Bug in v0.30.0: Sessions were saved to ~/.pi/agent/ instead of
14
+ * ~/.pi/agent/sessions/<encoded-cwd>/. This migration moves them
15
+ * to the correct location based on the cwd in their session header.
16
+ *
17
+ * See: https://github.com/greppleai/grip/issues/320
18
+ */
19
+ export declare function migrateSessionsFromAgentRoot(): void;
20
+ /**
21
+ * Print deprecation warnings and wait for keypress.
22
+ */
23
+ export declare function showDeprecationWarnings(warnings: string[]): Promise<void>;
24
+ interface MigrationRunResult {
25
+ migratedAuthProviders: string[];
26
+ deprecationWarnings: string[];
27
+ }
28
+ /**
29
+ * Run all migrations. Called once on startup.
30
+ *
31
+ * @returns Object with migration results and deprecation warnings
32
+ */
33
+ export declare function runMigrations(cwd: string): MigrationRunResult;
34
+ export {};
35
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoDH;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAmBhD;AA2JD;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CA+CnD;AA2ID;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/E;AACD,UAAU,kBAAkB;IAC3B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAQ7D","sourcesContent":["/**\n * One-time migrations that run on startup.\n */\n\nimport chalk from \"chalk\";\nimport { chmodSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, writeFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport { CONFIG_DIR_NAME, getAgentDir, getBinDir } from \"./config.ts\";\nimport { migrateKeybindingsConfig } from \"./core/keybindings.ts\";\nimport { isLegacyEnvVarNameConfigValue } from \"./core/resolve-config-value.ts\";\nimport { stripJsonComments } from \"./utils/json.ts\";\n\nconst MIGRATION_GUIDE_URL =\n\t\"https://github.com/greppleai/grip/blob/main/packages/coding-agent/CHANGELOG.md#extensions-migration\";\nconst EXTENSIONS_DOC_URL = \"https://github.com/greppleai/grip/blob/main/packages/coding-agent/docs/extensions.md\";\n\nconst AUTH_FILE_WRITE_OPTIONS = { encoding: \"utf-8\", mode: 0o600 } as const;\n\ninterface LegacyAuthMigrationState {\n\tcredentials: Record<string, unknown>;\n\tproviders: string[];\n}\n\nfunction migrateLegacyOauthFile(oauthPath: string, state: LegacyAuthMigrationState): void {\n\tif (!existsSync(oauthPath)) return;\n\ttry {\n\t\tconst oauth = JSON.parse(readFileSync(oauthPath, \"utf-8\"));\n\t\tfor (const [provider, credential] of Object.entries(oauth)) {\n\t\t\tstate.credentials[provider] = { type: \"oauth\", ...(credential as object) };\n\t\t\tstate.providers.push(provider);\n\t\t}\n\t\trenameSync(oauthPath, `${oauthPath}.migrated`);\n\t} catch {\n\t\t// Skip on error\n\t}\n}\n\nfunction migrateLegacySettingsApiKeys(settingsPath: string, state: LegacyAuthMigrationState): void {\n\tif (!existsSync(settingsPath)) return;\n\ttry {\n\t\tconst settings = JSON.parse(readFileSync(settingsPath, \"utf-8\"));\n\t\tif (!settings.apiKeys || typeof settings.apiKeys !== \"object\") return;\n\t\tfor (const [provider, key] of Object.entries(settings.apiKeys)) {\n\t\t\tif (state.credentials[provider] || typeof key !== \"string\") continue;\n\t\t\tstate.credentials[provider] = { type: \"api_key\", key };\n\t\t\tstate.providers.push(provider);\n\t\t}\n\t\tdelete settings.apiKeys;\n\t\twriteFileSync(settingsPath, JSON.stringify(settings, null, 2));\n\t} catch {\n\t\t// Skip on error\n\t}\n}\n\n/**\n * Migrate legacy oauth.json and settings.json apiKeys to auth.json.\n *\n * @returns Array of provider names that were migrated\n */\nexport function migrateAuthToAuthJson(): string[] {\n\tconst agentDir = getAgentDir();\n\tconst authPath = join(agentDir, \"auth.json\");\n\tconst oauthPath = join(agentDir, \"oauth.json\");\n\tconst settingsPath = join(agentDir, \"settings.json\");\n\n\t// Skip if auth.json already exists\n\tif (existsSync(authPath)) return [];\n\n\tconst migration: LegacyAuthMigrationState = { credentials: {}, providers: [] };\n\tmigrateLegacyOauthFile(oauthPath, migration);\n\tmigrateLegacySettingsApiKeys(settingsPath, migration);\n\n\tif (Object.keys(migration.credentials).length > 0) {\n\t\tmkdirSync(dirname(authPath), { recursive: true });\n\t\twriteFileSync(authPath, JSON.stringify(migration.credentials, null, 2), AUTH_FILE_WRITE_OPTIONS);\n\t}\n\n\treturn migration.providers;\n}\n\ninterface ConfigValueMigration {\n\tlocation: string;\n\tfrom: string;\n\tto: string;\n}\n\nfunction migrateLegacyEnvVarString(value: string): string | undefined {\n\treturn isLegacyEnvVarNameConfigValue(value) ? `$${value}` : undefined;\n}\n\nfunction migrateStringProperty(\n\trecord: Record<string, unknown>,\n\tkey: string,\n\tlocation: string,\n\tmigrations: ConfigValueMigration[],\n): boolean {\n\tconst value = record[key];\n\tif (typeof value !== \"string\") return false;\n\tconst migrated = migrateLegacyEnvVarString(value);\n\tif (migrated === undefined) return false;\n\trecord[key] = migrated;\n\tmigrations.push({ location, from: value, to: migrated });\n\treturn true;\n}\n\nfunction migrateHeadersConfig(headers: unknown, location: string, migrations: ConfigValueMigration[]): boolean {\n\tif (typeof headers !== \"object\" || headers === null || Array.isArray(headers)) return false;\n\tconst headerRecord = headers as Record<string, unknown>;\n\tlet migrated = false;\n\tfor (const [key, value] of Object.entries(headerRecord)) {\n\t\tif (typeof value !== \"string\") continue;\n\t\tconst migratedValue = migrateLegacyEnvVarString(value);\n\t\tif (migratedValue === undefined) continue;\n\t\theaderRecord[key] = migratedValue;\n\t\tmigrations.push({ location: `${location}[${JSON.stringify(key)}]`, from: value, to: migratedValue });\n\t\tmigrated = true;\n\t}\n\treturn migrated;\n}\n\nfunction migrateAuthJsonConfigValues(agentDir: string): ConfigValueMigration[] {\n\tconst authPath = join(agentDir, \"auth.json\");\n\tif (!existsSync(authPath)) return [];\n\n\ttry {\n\t\tconst parsed = JSON.parse(readFileSync(authPath, \"utf-8\")) as unknown;\n\t\tif (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) return [];\n\t\tconst authData = parsed as Record<string, unknown>;\n\n\t\tconst migrations: ConfigValueMigration[] = [];\n\t\tfor (const [provider, credential] of Object.entries(authData)) {\n\t\t\tif (typeof credential !== \"object\" || credential === null || Array.isArray(credential)) continue;\n\t\t\tconst credentialRecord = credential as Record<string, unknown>;\n\t\t\tif (credentialRecord.type !== \"api_key\") continue;\n\t\t\tmigrateStringProperty(credentialRecord, \"key\", `auth.json[${JSON.stringify(provider)}].key`, migrations);\n\t\t}\n\n\t\tif (migrations.length === 0) return [];\n\t\twriteFileSync(authPath, `${JSON.stringify(parsed, null, 2)}\\n`, AUTH_FILE_WRITE_OPTIONS);\n\t\tchmodSync(authPath, 0o600);\n\t\treturn migrations;\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nfunction asConfigRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n\nfunction migrateProviderModelHeaders(\n\tproviderRecord: Record<string, unknown>,\n\tproviderLocation: string,\n\tmigrations: ConfigValueMigration[],\n): void {\n\tif (!Array.isArray(providerRecord.models)) return;\n\tfor (let index = 0; index < providerRecord.models.length; index++) {\n\t\tconst modelRecord = asConfigRecord(providerRecord.models[index]);\n\t\tif (!modelRecord) continue;\n\t\tconst modelKey = typeof modelRecord.id === \"string\" ? JSON.stringify(modelRecord.id) : String(index);\n\t\tmigrateHeadersConfig(modelRecord.headers, `${providerLocation}.models[${modelKey}].headers`, migrations);\n\t}\n}\n\nfunction migrateProviderModelOverrideHeaders(\n\tproviderRecord: Record<string, unknown>,\n\tproviderLocation: string,\n\tmigrations: ConfigValueMigration[],\n): void {\n\tconst modelOverrides = asConfigRecord(providerRecord.modelOverrides);\n\tif (!modelOverrides) return;\n\tfor (const [modelId, modelOverride] of Object.entries(modelOverrides)) {\n\t\tconst modelOverrideRecord = asConfigRecord(modelOverride);\n\t\tif (!modelOverrideRecord) continue;\n\t\tmigrateHeadersConfig(\n\t\t\tmodelOverrideRecord.headers,\n\t\t\t`${providerLocation}.modelOverrides[${JSON.stringify(modelId)}].headers`,\n\t\t\tmigrations,\n\t\t);\n\t}\n}\n\nfunction migrateProviderConfigValues(\n\tprovider: string,\n\tproviderConfig: unknown,\n\tmigrations: ConfigValueMigration[],\n): void {\n\tconst providerRecord = asConfigRecord(providerConfig);\n\tif (!providerRecord) return;\n\tconst providerLocation = `models.json.providers[${JSON.stringify(provider)}]`;\n\tmigrateStringProperty(providerRecord, \"apiKey\", `${providerLocation}.apiKey`, migrations);\n\tmigrateHeadersConfig(providerRecord.headers, `${providerLocation}.headers`, migrations);\n\tmigrateProviderModelHeaders(providerRecord, providerLocation, migrations);\n\tmigrateProviderModelOverrideHeaders(providerRecord, providerLocation, migrations);\n}\n\nfunction migrateModelsJsonConfigValues(agentDir: string): ConfigValueMigration[] {\n\tconst modelsPath = join(agentDir, \"models.json\");\n\tif (!existsSync(modelsPath)) return [];\n\n\tconst parsed = JSON.parse(stripJsonComments(readFileSync(modelsPath, \"utf-8\"))) as unknown;\n\tconst modelsData = asConfigRecord(parsed);\n\tif (!modelsData) return [];\n\tconst providers = asConfigRecord(modelsData.providers);\n\tif (!providers) return [];\n\n\tconst migrations: ConfigValueMigration[] = [];\n\tfor (const [provider, providerConfig] of Object.entries(providers)) {\n\t\tmigrateProviderConfigValues(provider, providerConfig, migrations);\n\t}\n\tif (migrations.length === 0) return [];\n\twriteFileSync(modelsPath, `${JSON.stringify(parsed, null, 2)}\\n`, \"utf-8\");\n\treturn migrations;\n}\n\nfunction migrateExplicitEnvVarConfigValues(): void {\n\tconst agentDir = getAgentDir();\n\tconst migrations = [...migrateAuthJsonConfigValues(agentDir), ...migrateModelsJsonConfigValues(agentDir)];\n\tif (migrations.length === 0) return;\n\n\tconst details = migrations.map((migration) => ` - ${migration.location}: ${migration.from} -> ${migration.to}`);\n\tconsole.log(\n\t\tchalk.yellow(\n\t\t\t[\n\t\t\t\t\"Warning: Migrated API key/header environment references to explicit $ENV_VAR syntax. Plain strings will be treated as literals.\",\n\t\t\t\t...details,\n\t\t\t].join(\"\\n\"),\n\t\t),\n\t);\n}\n\n/**\n * Migrate sessions from ~/.pi/agent/*.jsonl to proper session directories.\n *\n * Bug in v0.30.0: Sessions were saved to ~/.pi/agent/ instead of\n * ~/.pi/agent/sessions/<encoded-cwd>/. This migration moves them\n * to the correct location based on the cwd in their session header.\n *\n * See: https://github.com/greppleai/grip/issues/320\n */\nexport function migrateSessionsFromAgentRoot(): void {\n\tconst agentDir = getAgentDir();\n\n\t// Find all .jsonl files directly in agentDir (not in subdirectories)\n\tlet files: string[];\n\ttry {\n\t\tfiles = readdirSync(agentDir)\n\t\t\t.filter((f) => f.endsWith(\".jsonl\"))\n\t\t\t.map((f) => join(agentDir, f));\n\t} catch {\n\t\treturn;\n\t}\n\n\tif (files.length === 0) return;\n\n\tfor (const file of files) {\n\t\ttry {\n\t\t\t// Read first line to get session header\n\t\t\tconst content = readFileSync(file, \"utf8\");\n\t\t\tconst firstLine = content.split(\"\\n\")[0];\n\t\t\tif (!firstLine?.trim()) continue;\n\n\t\t\tconst header = JSON.parse(firstLine);\n\t\t\tif (header.type !== \"session\" || !header.cwd) continue;\n\n\t\t\tconst cwd: string = header.cwd;\n\n\t\t\t// Compute the correct session directory (same encoding as session-manager.ts)\n\t\t\tconst safePath = `--${cwd.replace(/^[/\\\\]/, \"\").replace(/[/\\\\:]/g, \"-\")}--`;\n\t\t\tconst correctDir = join(agentDir, \"sessions\", safePath);\n\n\t\t\t// Create directory if needed\n\t\t\tif (!existsSync(correctDir)) {\n\t\t\t\tmkdirSync(correctDir, { recursive: true });\n\t\t\t}\n\n\t\t\t// Move the file\n\t\t\tconst fileName = file.split(\"/\").pop() || file.split(\"\\\\\").pop();\n\t\t\tconst newPath = join(correctDir, fileName!);\n\n\t\t\tif (existsSync(newPath)) continue; // Skip if target exists\n\n\t\t\trenameSync(file, newPath);\n\t\t} catch {\n\t\t\t// Skip files that can't be migrated\n\t\t}\n\t}\n}\n\n/**\n * Migrate commands/ to prompts/ if needed.\n * Works for both regular directories and symlinks.\n */\nfunction migrateCommandsToPrompts(baseDir: string, label: string): boolean {\n\tconst commandsDir = join(baseDir, \"commands\");\n\tconst promptsDir = join(baseDir, \"prompts\");\n\n\tif (existsSync(commandsDir) && !existsSync(promptsDir)) {\n\t\ttry {\n\t\t\trenameSync(commandsDir, promptsDir);\n\t\t\tconsole.log(chalk.green(`Migrated ${label} commands/ → prompts/`));\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\tconsole.log(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t`Warning: Could not migrate ${label} commands/ to prompts/: ${err instanceof Error ? err.message : err}`,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction migrateKeybindingsConfigFile(): void {\n\tconst configPath = join(getAgentDir(), \"keybindings.json\");\n\tif (!existsSync(configPath)) return;\n\n\ttry {\n\t\tconst parsed = JSON.parse(readFileSync(configPath, \"utf-8\")) as unknown;\n\t\tif (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n\t\t\treturn;\n\t\t}\n\t\tconst { config, migrated } = migrateKeybindingsConfig(parsed as Record<string, unknown>);\n\t\tif (!migrated) return;\n\t\twriteFileSync(configPath, `${JSON.stringify(config, null, 2)}\\n`, \"utf-8\");\n\t} catch {\n\t\t// Ignore malformed files during migration\n\t}\n}\n\n/**\n * Move fd/rg binaries from tools/ to bin/ if they exist.\n */\nfunction migrateToolsToBin(): void {\n\tconst agentDir = getAgentDir();\n\tconst toolsDir = join(agentDir, \"tools\");\n\tconst binDir = getBinDir();\n\n\tif (!existsSync(toolsDir)) return;\n\n\tconst binaries = [\"fd\", \"rg\", \"fd.exe\", \"rg.exe\"];\n\tlet movedAny = false;\n\tfor (const binary of binaries) {\n\t\tif (migrateManagedBinary(toolsDir, binDir, binary)) movedAny = true;\n\t}\n\n\tif (movedAny) {\n\t\tconsole.log(chalk.green(`Migrated managed binaries tools/ → bin/`));\n\t}\n}\n\nfunction migrateManagedBinary(toolsDir: string, binDir: string, binary: string): boolean {\n\tconst oldPath = join(toolsDir, binary);\n\tif (!existsSync(oldPath)) return false;\n\n\tif (!existsSync(binDir)) mkdirSync(binDir, { recursive: true });\n\tconst newPath = join(binDir, binary);\n\tif (existsSync(newPath)) {\n\t\ttry {\n\t\t\trmSync?.(oldPath, { force: true });\n\t\t} catch {\n\t\t\t// Ignore cleanup errors\n\t\t}\n\t\treturn false;\n\t}\n\n\ttry {\n\t\trenameSync(oldPath, newPath);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Check for the deprecated tools/ extension directory.\n * The hooks/ name is active again for command-hook scripts and must not be treated as a legacy extension directory.\n * tools/ may contain fd/rg binaries extracted by pi, so only warn if it has other files.\n */\nfunction checkDeprecatedExtensionDirs(baseDir: string, label: string): string[] {\n\tconst toolsDir = join(baseDir, \"tools\");\n\tconst warnings: string[] = [];\n\n\tif (existsSync(toolsDir)) {\n\t\t// Check if tools/ contains anything other than fd/rg (which are auto-extracted binaries)\n\t\ttry {\n\t\t\tconst entries = readdirSync(toolsDir);\n\t\t\tconst customTools = entries.filter((e) => {\n\t\t\t\tconst lower = e.toLowerCase();\n\t\t\t\treturn (\n\t\t\t\t\tlower !== \"fd\" && lower !== \"rg\" && lower !== \"fd.exe\" && lower !== \"rg.exe\" && !e.startsWith(\".\") // Ignore .DS_Store and other hidden files\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (customTools.length > 0) {\n\t\t\t\twarnings.push(\n\t\t\t\t\t`${label} tools/ directory contains custom tools. Custom tools have been merged into extensions.`,\n\t\t\t\t);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore read errors\n\t\t}\n\t}\n\n\treturn warnings;\n}\n\n/**\n * Run extension system migrations (commands→prompts) and collect warnings about deprecated directories.\n */\nfunction migrateExtensionSystem(cwd: string): string[] {\n\tconst agentDir = getAgentDir();\n\tconst projectDir = join(cwd, CONFIG_DIR_NAME);\n\n\t// Migrate commands/ to prompts/\n\tmigrateCommandsToPrompts(agentDir, \"Global\");\n\tmigrateCommandsToPrompts(projectDir, \"Project\");\n\n\t// Check for deprecated directories\n\tconst warnings = [\n\t\t...checkDeprecatedExtensionDirs(agentDir, \"Global\"),\n\t\t...checkDeprecatedExtensionDirs(projectDir, \"Project\"),\n\t];\n\n\treturn warnings;\n}\n\n/**\n * Print deprecation warnings and wait for keypress.\n */\nexport async function showDeprecationWarnings(warnings: string[]): Promise<void> {\n\tif (warnings.length === 0) return;\n\n\tfor (const warning of warnings) {\n\t\tconsole.log(chalk.yellow(`Warning: ${warning}`));\n\t}\n\tconsole.log(chalk.yellow(`\\nMove your extensions to the extensions/ directory.`));\n\tconsole.log(chalk.yellow(`Migration guide: ${MIGRATION_GUIDE_URL}`));\n\tconsole.log(chalk.yellow(`Documentation: ${EXTENSIONS_DOC_URL}`));\n\tconsole.log(chalk.dim(`\\nPress any key to continue...`));\n\n\tawait new Promise<void>((resolve) => {\n\t\tprocess.stdin.setRawMode?.(true);\n\t\tprocess.stdin.resume();\n\t\tprocess.stdin.once(\"data\", () => {\n\t\t\tprocess.stdin.setRawMode?.(false);\n\t\t\tprocess.stdin.pause();\n\t\t\tresolve();\n\t\t});\n\t});\n\tconsole.log();\n}\ninterface MigrationRunResult {\n\tmigratedAuthProviders: string[];\n\tdeprecationWarnings: string[];\n}\n\n/**\n * Run all migrations. Called once on startup.\n *\n * @returns Object with migration results and deprecation warnings\n */\nexport function runMigrations(cwd: string): MigrationRunResult {\n\tconst migratedAuthProviders = migrateAuthToAuthJson();\n\tmigrateExplicitEnvVarConfigValues();\n\tmigrateSessionsFromAgentRoot();\n\tmigrateToolsToBin();\n\tmigrateKeybindingsConfigFile();\n\tconst deprecationWarnings = migrateExtensionSystem(cwd);\n\treturn { migratedAuthProviders, deprecationWarnings };\n}\n"]}
@@ -0,0 +1,412 @@
1
+ /**
2
+ * One-time migrations that run on startup.
3
+ */
4
+ import chalk from "chalk";
5
+ import { chmodSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "fs";
6
+ import { dirname, join } from "path";
7
+ import { CONFIG_DIR_NAME, getAgentDir, getBinDir } from "./config.js";
8
+ import { migrateKeybindingsConfig } from "./core/keybindings.js";
9
+ import { isLegacyEnvVarNameConfigValue } from "./core/resolve-config-value.js";
10
+ import { stripJsonComments } from "./utils/json.js";
11
+ const MIGRATION_GUIDE_URL = "https://github.com/greppleai/grip/blob/main/packages/coding-agent/CHANGELOG.md#extensions-migration";
12
+ const EXTENSIONS_DOC_URL = "https://github.com/greppleai/grip/blob/main/packages/coding-agent/docs/extensions.md";
13
+ const AUTH_FILE_WRITE_OPTIONS = { encoding: "utf-8", mode: 0o600 };
14
+ function migrateLegacyOauthFile(oauthPath, state) {
15
+ if (!existsSync(oauthPath))
16
+ return;
17
+ try {
18
+ const oauth = JSON.parse(readFileSync(oauthPath, "utf-8"));
19
+ for (const [provider, credential] of Object.entries(oauth)) {
20
+ state.credentials[provider] = { type: "oauth", ...credential };
21
+ state.providers.push(provider);
22
+ }
23
+ renameSync(oauthPath, `${oauthPath}.migrated`);
24
+ }
25
+ catch {
26
+ // Skip on error
27
+ }
28
+ }
29
+ function migrateLegacySettingsApiKeys(settingsPath, state) {
30
+ if (!existsSync(settingsPath))
31
+ return;
32
+ try {
33
+ const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
34
+ if (!settings.apiKeys || typeof settings.apiKeys !== "object")
35
+ return;
36
+ for (const [provider, key] of Object.entries(settings.apiKeys)) {
37
+ if (state.credentials[provider] || typeof key !== "string")
38
+ continue;
39
+ state.credentials[provider] = { type: "api_key", key };
40
+ state.providers.push(provider);
41
+ }
42
+ delete settings.apiKeys;
43
+ writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
44
+ }
45
+ catch {
46
+ // Skip on error
47
+ }
48
+ }
49
+ /**
50
+ * Migrate legacy oauth.json and settings.json apiKeys to auth.json.
51
+ *
52
+ * @returns Array of provider names that were migrated
53
+ */
54
+ export function migrateAuthToAuthJson() {
55
+ const agentDir = getAgentDir();
56
+ const authPath = join(agentDir, "auth.json");
57
+ const oauthPath = join(agentDir, "oauth.json");
58
+ const settingsPath = join(agentDir, "settings.json");
59
+ // Skip if auth.json already exists
60
+ if (existsSync(authPath))
61
+ return [];
62
+ const migration = { credentials: {}, providers: [] };
63
+ migrateLegacyOauthFile(oauthPath, migration);
64
+ migrateLegacySettingsApiKeys(settingsPath, migration);
65
+ if (Object.keys(migration.credentials).length > 0) {
66
+ mkdirSync(dirname(authPath), { recursive: true });
67
+ writeFileSync(authPath, JSON.stringify(migration.credentials, null, 2), AUTH_FILE_WRITE_OPTIONS);
68
+ }
69
+ return migration.providers;
70
+ }
71
+ function migrateLegacyEnvVarString(value) {
72
+ return isLegacyEnvVarNameConfigValue(value) ? `$${value}` : undefined;
73
+ }
74
+ function migrateStringProperty(record, key, location, migrations) {
75
+ const value = record[key];
76
+ if (typeof value !== "string")
77
+ return false;
78
+ const migrated = migrateLegacyEnvVarString(value);
79
+ if (migrated === undefined)
80
+ return false;
81
+ record[key] = migrated;
82
+ migrations.push({ location, from: value, to: migrated });
83
+ return true;
84
+ }
85
+ function migrateHeadersConfig(headers, location, migrations) {
86
+ if (typeof headers !== "object" || headers === null || Array.isArray(headers))
87
+ return false;
88
+ const headerRecord = headers;
89
+ let migrated = false;
90
+ for (const [key, value] of Object.entries(headerRecord)) {
91
+ if (typeof value !== "string")
92
+ continue;
93
+ const migratedValue = migrateLegacyEnvVarString(value);
94
+ if (migratedValue === undefined)
95
+ continue;
96
+ headerRecord[key] = migratedValue;
97
+ migrations.push({ location: `${location}[${JSON.stringify(key)}]`, from: value, to: migratedValue });
98
+ migrated = true;
99
+ }
100
+ return migrated;
101
+ }
102
+ function migrateAuthJsonConfigValues(agentDir) {
103
+ const authPath = join(agentDir, "auth.json");
104
+ if (!existsSync(authPath))
105
+ return [];
106
+ try {
107
+ const parsed = JSON.parse(readFileSync(authPath, "utf-8"));
108
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
109
+ return [];
110
+ const authData = parsed;
111
+ const migrations = [];
112
+ for (const [provider, credential] of Object.entries(authData)) {
113
+ if (typeof credential !== "object" || credential === null || Array.isArray(credential))
114
+ continue;
115
+ const credentialRecord = credential;
116
+ if (credentialRecord.type !== "api_key")
117
+ continue;
118
+ migrateStringProperty(credentialRecord, "key", `auth.json[${JSON.stringify(provider)}].key`, migrations);
119
+ }
120
+ if (migrations.length === 0)
121
+ return [];
122
+ writeFileSync(authPath, `${JSON.stringify(parsed, null, 2)}\n`, AUTH_FILE_WRITE_OPTIONS);
123
+ chmodSync(authPath, 0o600);
124
+ return migrations;
125
+ }
126
+ catch {
127
+ return [];
128
+ }
129
+ }
130
+ function asConfigRecord(value) {
131
+ return typeof value === "object" && value !== null && !Array.isArray(value)
132
+ ? value
133
+ : undefined;
134
+ }
135
+ function migrateProviderModelHeaders(providerRecord, providerLocation, migrations) {
136
+ if (!Array.isArray(providerRecord.models))
137
+ return;
138
+ for (let index = 0; index < providerRecord.models.length; index++) {
139
+ const modelRecord = asConfigRecord(providerRecord.models[index]);
140
+ if (!modelRecord)
141
+ continue;
142
+ const modelKey = typeof modelRecord.id === "string" ? JSON.stringify(modelRecord.id) : String(index);
143
+ migrateHeadersConfig(modelRecord.headers, `${providerLocation}.models[${modelKey}].headers`, migrations);
144
+ }
145
+ }
146
+ function migrateProviderModelOverrideHeaders(providerRecord, providerLocation, migrations) {
147
+ const modelOverrides = asConfigRecord(providerRecord.modelOverrides);
148
+ if (!modelOverrides)
149
+ return;
150
+ for (const [modelId, modelOverride] of Object.entries(modelOverrides)) {
151
+ const modelOverrideRecord = asConfigRecord(modelOverride);
152
+ if (!modelOverrideRecord)
153
+ continue;
154
+ migrateHeadersConfig(modelOverrideRecord.headers, `${providerLocation}.modelOverrides[${JSON.stringify(modelId)}].headers`, migrations);
155
+ }
156
+ }
157
+ function migrateProviderConfigValues(provider, providerConfig, migrations) {
158
+ const providerRecord = asConfigRecord(providerConfig);
159
+ if (!providerRecord)
160
+ return;
161
+ const providerLocation = `models.json.providers[${JSON.stringify(provider)}]`;
162
+ migrateStringProperty(providerRecord, "apiKey", `${providerLocation}.apiKey`, migrations);
163
+ migrateHeadersConfig(providerRecord.headers, `${providerLocation}.headers`, migrations);
164
+ migrateProviderModelHeaders(providerRecord, providerLocation, migrations);
165
+ migrateProviderModelOverrideHeaders(providerRecord, providerLocation, migrations);
166
+ }
167
+ function migrateModelsJsonConfigValues(agentDir) {
168
+ const modelsPath = join(agentDir, "models.json");
169
+ if (!existsSync(modelsPath))
170
+ return [];
171
+ const parsed = JSON.parse(stripJsonComments(readFileSync(modelsPath, "utf-8")));
172
+ const modelsData = asConfigRecord(parsed);
173
+ if (!modelsData)
174
+ return [];
175
+ const providers = asConfigRecord(modelsData.providers);
176
+ if (!providers)
177
+ return [];
178
+ const migrations = [];
179
+ for (const [provider, providerConfig] of Object.entries(providers)) {
180
+ migrateProviderConfigValues(provider, providerConfig, migrations);
181
+ }
182
+ if (migrations.length === 0)
183
+ return [];
184
+ writeFileSync(modelsPath, `${JSON.stringify(parsed, null, 2)}\n`, "utf-8");
185
+ return migrations;
186
+ }
187
+ function migrateExplicitEnvVarConfigValues() {
188
+ const agentDir = getAgentDir();
189
+ const migrations = [...migrateAuthJsonConfigValues(agentDir), ...migrateModelsJsonConfigValues(agentDir)];
190
+ if (migrations.length === 0)
191
+ return;
192
+ const details = migrations.map((migration) => ` - ${migration.location}: ${migration.from} -> ${migration.to}`);
193
+ console.log(chalk.yellow([
194
+ "Warning: Migrated API key/header environment references to explicit $ENV_VAR syntax. Plain strings will be treated as literals.",
195
+ ...details,
196
+ ].join("\n")));
197
+ }
198
+ /**
199
+ * Migrate sessions from ~/.pi/agent/*.jsonl to proper session directories.
200
+ *
201
+ * Bug in v0.30.0: Sessions were saved to ~/.pi/agent/ instead of
202
+ * ~/.pi/agent/sessions/<encoded-cwd>/. This migration moves them
203
+ * to the correct location based on the cwd in their session header.
204
+ *
205
+ * See: https://github.com/greppleai/grip/issues/320
206
+ */
207
+ export function migrateSessionsFromAgentRoot() {
208
+ const agentDir = getAgentDir();
209
+ // Find all .jsonl files directly in agentDir (not in subdirectories)
210
+ let files;
211
+ try {
212
+ files = readdirSync(agentDir)
213
+ .filter((f) => f.endsWith(".jsonl"))
214
+ .map((f) => join(agentDir, f));
215
+ }
216
+ catch {
217
+ return;
218
+ }
219
+ if (files.length === 0)
220
+ return;
221
+ for (const file of files) {
222
+ try {
223
+ // Read first line to get session header
224
+ const content = readFileSync(file, "utf8");
225
+ const firstLine = content.split("\n")[0];
226
+ if (!firstLine?.trim())
227
+ continue;
228
+ const header = JSON.parse(firstLine);
229
+ if (header.type !== "session" || !header.cwd)
230
+ continue;
231
+ const cwd = header.cwd;
232
+ // Compute the correct session directory (same encoding as session-manager.ts)
233
+ const safePath = `--${cwd.replace(/^[/\\]/, "").replace(/[/\\:]/g, "-")}--`;
234
+ const correctDir = join(agentDir, "sessions", safePath);
235
+ // Create directory if needed
236
+ if (!existsSync(correctDir)) {
237
+ mkdirSync(correctDir, { recursive: true });
238
+ }
239
+ // Move the file
240
+ const fileName = file.split("/").pop() || file.split("\\").pop();
241
+ const newPath = join(correctDir, fileName);
242
+ if (existsSync(newPath))
243
+ continue; // Skip if target exists
244
+ renameSync(file, newPath);
245
+ }
246
+ catch {
247
+ // Skip files that can't be migrated
248
+ }
249
+ }
250
+ }
251
+ /**
252
+ * Migrate commands/ to prompts/ if needed.
253
+ * Works for both regular directories and symlinks.
254
+ */
255
+ function migrateCommandsToPrompts(baseDir, label) {
256
+ const commandsDir = join(baseDir, "commands");
257
+ const promptsDir = join(baseDir, "prompts");
258
+ if (existsSync(commandsDir) && !existsSync(promptsDir)) {
259
+ try {
260
+ renameSync(commandsDir, promptsDir);
261
+ console.log(chalk.green(`Migrated ${label} commands/ → prompts/`));
262
+ return true;
263
+ }
264
+ catch (err) {
265
+ console.log(chalk.yellow(`Warning: Could not migrate ${label} commands/ to prompts/: ${err instanceof Error ? err.message : err}`));
266
+ }
267
+ }
268
+ return false;
269
+ }
270
+ function migrateKeybindingsConfigFile() {
271
+ const configPath = join(getAgentDir(), "keybindings.json");
272
+ if (!existsSync(configPath))
273
+ return;
274
+ try {
275
+ const parsed = JSON.parse(readFileSync(configPath, "utf-8"));
276
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
277
+ return;
278
+ }
279
+ const { config, migrated } = migrateKeybindingsConfig(parsed);
280
+ if (!migrated)
281
+ return;
282
+ writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf-8");
283
+ }
284
+ catch {
285
+ // Ignore malformed files during migration
286
+ }
287
+ }
288
+ /**
289
+ * Move fd/rg binaries from tools/ to bin/ if they exist.
290
+ */
291
+ function migrateToolsToBin() {
292
+ const agentDir = getAgentDir();
293
+ const toolsDir = join(agentDir, "tools");
294
+ const binDir = getBinDir();
295
+ if (!existsSync(toolsDir))
296
+ return;
297
+ const binaries = ["fd", "rg", "fd.exe", "rg.exe"];
298
+ let movedAny = false;
299
+ for (const binary of binaries) {
300
+ if (migrateManagedBinary(toolsDir, binDir, binary))
301
+ movedAny = true;
302
+ }
303
+ if (movedAny) {
304
+ console.log(chalk.green(`Migrated managed binaries tools/ → bin/`));
305
+ }
306
+ }
307
+ function migrateManagedBinary(toolsDir, binDir, binary) {
308
+ const oldPath = join(toolsDir, binary);
309
+ if (!existsSync(oldPath))
310
+ return false;
311
+ if (!existsSync(binDir))
312
+ mkdirSync(binDir, { recursive: true });
313
+ const newPath = join(binDir, binary);
314
+ if (existsSync(newPath)) {
315
+ try {
316
+ rmSync?.(oldPath, { force: true });
317
+ }
318
+ catch {
319
+ // Ignore cleanup errors
320
+ }
321
+ return false;
322
+ }
323
+ try {
324
+ renameSync(oldPath, newPath);
325
+ return true;
326
+ }
327
+ catch {
328
+ return false;
329
+ }
330
+ }
331
+ /**
332
+ * Check for the deprecated tools/ extension directory.
333
+ * The hooks/ name is active again for command-hook scripts and must not be treated as a legacy extension directory.
334
+ * tools/ may contain fd/rg binaries extracted by pi, so only warn if it has other files.
335
+ */
336
+ function checkDeprecatedExtensionDirs(baseDir, label) {
337
+ const toolsDir = join(baseDir, "tools");
338
+ const warnings = [];
339
+ if (existsSync(toolsDir)) {
340
+ // Check if tools/ contains anything other than fd/rg (which are auto-extracted binaries)
341
+ try {
342
+ const entries = readdirSync(toolsDir);
343
+ const customTools = entries.filter((e) => {
344
+ const lower = e.toLowerCase();
345
+ return (lower !== "fd" && lower !== "rg" && lower !== "fd.exe" && lower !== "rg.exe" && !e.startsWith(".") // Ignore .DS_Store and other hidden files
346
+ );
347
+ });
348
+ if (customTools.length > 0) {
349
+ warnings.push(`${label} tools/ directory contains custom tools. Custom tools have been merged into extensions.`);
350
+ }
351
+ }
352
+ catch {
353
+ // Ignore read errors
354
+ }
355
+ }
356
+ return warnings;
357
+ }
358
+ /**
359
+ * Run extension system migrations (commands→prompts) and collect warnings about deprecated directories.
360
+ */
361
+ function migrateExtensionSystem(cwd) {
362
+ const agentDir = getAgentDir();
363
+ const projectDir = join(cwd, CONFIG_DIR_NAME);
364
+ // Migrate commands/ to prompts/
365
+ migrateCommandsToPrompts(agentDir, "Global");
366
+ migrateCommandsToPrompts(projectDir, "Project");
367
+ // Check for deprecated directories
368
+ const warnings = [
369
+ ...checkDeprecatedExtensionDirs(agentDir, "Global"),
370
+ ...checkDeprecatedExtensionDirs(projectDir, "Project"),
371
+ ];
372
+ return warnings;
373
+ }
374
+ /**
375
+ * Print deprecation warnings and wait for keypress.
376
+ */
377
+ export async function showDeprecationWarnings(warnings) {
378
+ if (warnings.length === 0)
379
+ return;
380
+ for (const warning of warnings) {
381
+ console.log(chalk.yellow(`Warning: ${warning}`));
382
+ }
383
+ console.log(chalk.yellow(`\nMove your extensions to the extensions/ directory.`));
384
+ console.log(chalk.yellow(`Migration guide: ${MIGRATION_GUIDE_URL}`));
385
+ console.log(chalk.yellow(`Documentation: ${EXTENSIONS_DOC_URL}`));
386
+ console.log(chalk.dim(`\nPress any key to continue...`));
387
+ await new Promise((resolve) => {
388
+ process.stdin.setRawMode?.(true);
389
+ process.stdin.resume();
390
+ process.stdin.once("data", () => {
391
+ process.stdin.setRawMode?.(false);
392
+ process.stdin.pause();
393
+ resolve();
394
+ });
395
+ });
396
+ console.log();
397
+ }
398
+ /**
399
+ * Run all migrations. Called once on startup.
400
+ *
401
+ * @returns Object with migration results and deprecation warnings
402
+ */
403
+ export function runMigrations(cwd) {
404
+ const migratedAuthProviders = migrateAuthToAuthJson();
405
+ migrateExplicitEnvVarConfigValues();
406
+ migrateSessionsFromAgentRoot();
407
+ migrateToolsToBin();
408
+ migrateKeybindingsConfigFile();
409
+ const deprecationWarnings = migrateExtensionSystem(cwd);
410
+ return { migratedAuthProviders, deprecationWarnings };
411
+ }
412
+ //# sourceMappingURL=migrations.js.map