@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,41 @@
1
+ import { ALPH_RE, ANCHOR_LEN, DIFF_MINUS_RE, HL_PREFIX_PLUS_RE } from "./hash.js";
2
+ function diagRef(ref) {
3
+ const trimmed = ref.trim();
4
+ if (!trimmed.length) {
5
+ return `[E_BAD_REF] Invalid anchor. Expected a 3-char base64 anchor (e.g. "aB3").`;
6
+ }
7
+ if (/^\d+/.test(trimmed)) {
8
+ return `[E_BAD_REF] Invalid anchor. Use the hash alone (e.g. "aB3") — no line numbers or trailing content.`;
9
+ }
10
+ if (trimmed.includes("│")) {
11
+ return `[E_BAD_REF] Invalid anchor "${trimmed}". hash_range_inclusive must contain the 3-char hash only — remove everything from "│" onward.`;
12
+ }
13
+ return `[E_BAD_REF] Invalid anchor "${trimmed}". Expected a 3-char base64 anchor (e.g. "aB3").`;
14
+ }
15
+ function parseRef(ref) {
16
+ const trimmed = ref.trim();
17
+ if (trimmed.length === ANCHOR_LEN && ALPH_RE.test(trimmed)) {
18
+ return { hash: trimmed };
19
+ }
20
+ throw new Error(diagRef(ref));
21
+ }
22
+ export const parseHashRef = parseRef;
23
+ function assertNoPrefixes(lines) {
24
+ for (const line of lines) {
25
+ if (!line.length)
26
+ continue;
27
+ if (HL_PREFIX_PLUS_RE.test(line) || DIFF_MINUS_RE.test(line)) {
28
+ throw new Error(`[E_INVALID_PATCH] "content_lines" must contain literal file content. Offending line looks like the diff preview's +HASH│ row: ${JSON.stringify(line)}. Use literal file content only — plain + or - lines are written literally.`);
29
+ }
30
+ }
31
+ }
32
+ export function parseText(edit) {
33
+ if (edit === null)
34
+ return [];
35
+ const lines = typeof edit === "string"
36
+ ? (edit.endsWith("\n") ? edit.slice(0, -1) : edit).replaceAll("\r", "").split("\n")
37
+ : edit;
38
+ assertNoPrefixes(lines);
39
+ return lines;
40
+ }
41
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAIlF,SAAS,OAAO,CAAC,GAAW,EAAU;IACrC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAE3B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,2EAA2E,CAAC;IACpF,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,sGAAoG,CAAC;IAC7G,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,+BAA+B,OAAO,oGAAgG,CAAC;IAC/I,CAAC;IAED,OAAO,+BAA+B,OAAO,kDAAkD,CAAC;AAAA,CAChG;AAED,SAAS,QAAQ,CAAC,GAAW,EAAU;IACtC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAE3B,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,CAC9B;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAErC,SAAS,gBAAgB,CAAC,KAAe,EAAQ;IAChD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,SAAS;QAC3B,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CACd,mIAAiI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,+EAA6E,CAClO,CAAC;QACH,CAAC;IACF,CAAC;AAAA,CACD;AAED,MAAM,UAAU,SAAS,CAAC,IAA8B,EAAY;IACnE,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,KAAK,GACV,OAAO,IAAI,KAAK,QAAQ;QACvB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACnF,CAAC,CAAC,IAAI,CAAC;IACT,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC;AAAA,CACb","sourcesContent":["import { ALPH_RE, ANCHOR_LEN, DIFF_MINUS_RE, HL_PREFIX_PLUS_RE } from \"./hash.ts\";\n\nexport type Anchor = { hash: string };\n\nfunction diagRef(ref: string): string {\n\tconst trimmed = ref.trim();\n\n\tif (!trimmed.length) {\n\t\treturn `[E_BAD_REF] Invalid anchor. Expected a 3-char base64 anchor (e.g. \"aB3\").`;\n\t}\n\n\tif (/^\\d+/.test(trimmed)) {\n\t\treturn `[E_BAD_REF] Invalid anchor. Use the hash alone (e.g. \"aB3\") — no line numbers or trailing content.`;\n\t}\n\n\tif (trimmed.includes(\"│\")) {\n\t\treturn `[E_BAD_REF] Invalid anchor \"${trimmed}\". hash_range_inclusive must contain the 3-char hash only — remove everything from \"│\" onward.`;\n\t}\n\n\treturn `[E_BAD_REF] Invalid anchor \"${trimmed}\". Expected a 3-char base64 anchor (e.g. \"aB3\").`;\n}\n\nfunction parseRef(ref: string): Anchor {\n\tconst trimmed = ref.trim();\n\n\tif (trimmed.length === ANCHOR_LEN && ALPH_RE.test(trimmed)) {\n\t\treturn { hash: trimmed };\n\t}\n\n\tthrow new Error(diagRef(ref));\n}\n\nexport const parseHashRef = parseRef;\n\nfunction assertNoPrefixes(lines: string[]): void {\n\tfor (const line of lines) {\n\t\tif (!line.length) continue;\n\t\tif (HL_PREFIX_PLUS_RE.test(line) || DIFF_MINUS_RE.test(line)) {\n\t\t\tthrow new Error(\n\t\t\t\t`[E_INVALID_PATCH] \"content_lines\" must contain literal file content. Offending line looks like the diff preview's +HASH│ row: ${JSON.stringify(line)}. Use literal file content only — plain + or - lines are written literally.`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function parseText(edit: string[] | string | null): string[] {\n\tif (edit === null) return [];\n\tconst lines =\n\t\ttypeof edit === \"string\"\n\t\t\t? (edit.endsWith(\"\\n\") ? edit.slice(0, -1) : edit).replaceAll(\"\\r\", \"\").split(\"\\n\")\n\t\t\t: edit;\n\tassertNoPrefixes(lines);\n\treturn lines;\n}\n"]}
@@ -0,0 +1,51 @@
1
+ import { type Anchor } from "./parse.ts";
2
+ export type RAnchor = {
3
+ line: number;
4
+ hash: string;
5
+ hashMatched: boolean;
6
+ };
7
+ export type HEdit = {
8
+ hash_range_inclusive: [Anchor, Anchor];
9
+ content_lines: string[];
10
+ };
11
+ export type RHEdit = {
12
+ hash_range_inclusive: [RAnchor, RAnchor];
13
+ content_lines: string[];
14
+ };
15
+ type HashAnchorMismatchKind = "not_found" | "ambiguous";
16
+ export type BoundaryDuplicateKind = "trailing" | "leading";
17
+ interface HMismatch {
18
+ ref: Anchor;
19
+ kind: HashAnchorMismatchKind;
20
+ candidates?: number[];
21
+ }
22
+ export interface BDupWarn {
23
+ kind: BoundaryDuplicateKind;
24
+ survivingLineContent: string;
25
+ survivingLineIndex: number;
26
+ occurrence: number;
27
+ replacementLineContent: string;
28
+ editIndex: number;
29
+ }
30
+ interface EditValidationResult {
31
+ resolved: RHEdit[];
32
+ mismatches: HMismatch[];
33
+ boundaryWarnings: BDupWarn[];
34
+ }
35
+ export interface NEdit {
36
+ editIndex: number;
37
+ loc: string;
38
+ currentContent: string;
39
+ }
40
+ export type HTEdit = {
41
+ hash_range_inclusive: [string, string];
42
+ content_lines: string[];
43
+ };
44
+ export declare function fmtMismatch(mismatches: HMismatch[], fileLines: string[], fileHashes: string[], filePath?: string): string;
45
+ export declare function resEdits(edits: HTEdit[]): HEdit[];
46
+ declare function warnUnicodeEsc(edits: HEdit[], warnings: string[]): void;
47
+ export declare function assertNoBarePrefix(edits: HEdit[], _fileLines: string[], fileHashes: string[]): void;
48
+ export declare function descEdit(edit: RHEdit): string;
49
+ export declare function valEdits(edits: HEdit[], fileLines: string[], fileHashes: string[], _warnings: string[], signal: AbortSignal | undefined): EditValidationResult;
50
+ export { warnUnicodeEsc };
51
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../../src/core/tools/hashline/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAA2B,MAAM,YAAY,CAAC;AAElE,MAAM,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAAE,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AACxF,MAAM,MAAM,MAAM,GAAG;IACpB,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,KAAK,sBAAsB,GAAG,WAAW,GAAG,WAAW,CAAC;AACxD,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3D,UAAU,SAAS;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,sBAAsB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CAClB;AACD,UAAU,oBAAoB;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,gBAAgB,EAAE,QAAQ,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,KAAK;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,MAAM,GAAG;IACpB,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AA8DF,wBAAgB,WAAW,CAC1B,UAAU,EAAE,SAAS,EAAE,EACvB,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CAQR;AAmCD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAYjD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAQhE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CA2BnG;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AA2BD,wBAAgB,QAAQ,CACvB,KAAK,EAAE,KAAK,EAAE,EACd,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,WAAW,GAAG,SAAS,GAC7B,oBAAoB,CAkDtB;AAED,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import { rejectUnknownFields } from \"../hashline-utils.ts\";\nimport { abortIf } from \"../runtime.ts\";\nimport { HL_BARE_PREFIX_RE } from \"./hash.ts\";\nimport { type Anchor, parseHashRef, parseText } from \"./parse.ts\";\n\nexport type RAnchor = {\n\tline: number;\n\thash: string;\n\thashMatched: boolean;\n};\n\nexport type HEdit = { hash_range_inclusive: [Anchor, Anchor]; content_lines: string[] };\nexport type RHEdit = {\n\thash_range_inclusive: [RAnchor, RAnchor];\n\tcontent_lines: string[];\n};\n\ntype HashAnchorMismatchKind = \"not_found\" | \"ambiguous\";\nexport type BoundaryDuplicateKind = \"trailing\" | \"leading\";\n\ninterface HMismatch {\n\tref: Anchor;\n\tkind: HashAnchorMismatchKind;\n\tcandidates?: number[];\n}\n\nexport interface BDupWarn {\n\tkind: BoundaryDuplicateKind;\n\tsurvivingLineContent: string;\n\tsurvivingLineIndex: number;\n\toccurrence: number;\n\treplacementLineContent: string;\n\teditIndex: number;\n}\ninterface EditValidationResult {\n\tresolved: RHEdit[];\n\tmismatches: HMismatch[];\n\tboundaryWarnings: BDupWarn[];\n}\n\nexport interface NEdit {\n\teditIndex: number;\n\tloc: string;\n\tcurrentContent: string;\n}\n\nexport type HTEdit = {\n\thash_range_inclusive: [string, string];\n\tcontent_lines: string[];\n};\n\nfunction resAnchor(ref: Anchor, _fileLines: string[], fileHashes: string[]): RAnchor | HMismatch {\n\tconst hashMatches: number[] = [];\n\tfor (let i = 0; i < fileHashes.length; i++) {\n\t\tif (fileHashes[i] === ref.hash) hashMatches.push(i + 1);\n\t}\n\tif (hashMatches.length === 0) {\n\t\treturn { ref, kind: \"not_found\" };\n\t}\n\tif (hashMatches.length === 1) {\n\t\treturn {\n\t\t\tline: hashMatches[0]!,\n\t\t\thash: ref.hash,\n\t\t\thashMatched: true,\n\t\t};\n\t}\n\treturn { ref, kind: \"ambiguous\", candidates: hashMatches };\n}\n\nfunction assertAligned(fileLines: string[], fileHashes: string[], ctx: string): void {\n\tif (fileHashes.length !== fileLines.length) {\n\t\tthrow new Error(\n\t\t\t`${ctx}: fileHashes.length (${fileHashes.length}) must match fileLines.length (${fileLines.length}).`,\n\t\t);\n\t}\n}\n\nfunction formatNotFoundMismatches(mismatches: HMismatch[], filePath: string | undefined): string | undefined {\n\tconst notFound = mismatches.filter((mismatch) => mismatch.kind === \"not_found\");\n\tif (notFound.length === 0) return undefined;\n\tconst references = notFound.map((mismatch) => `\"${mismatch.ref.hash}\"`).join(\", \");\n\treturn `[E_STALE_ANCHOR] ${notFound.length} stale anchor${notFound.length > 1 ? \"s\" : \"\"}${filePath ? ` in ${filePath}` : \"\"}: ${references}. Call read() to get fresh anchors, then copy the 3-char HASH of the start and end of the range you are replacing into hash_range_inclusive of your next replace call.`;\n}\n\nfunction formatAmbiguousMismatchDetail(mismatch: HMismatch, fileLines: string[], fileHashes: string[]): string {\n\tconst sample = (mismatch.candidates ?? []).slice(0, 5);\n\tconst candidateCount = mismatch.candidates?.length ?? 0;\n\tconst more = candidateCount > sample.length ? `, ... (+${candidateCount - sample.length} more)` : \"\";\n\tconst lines = sample\n\t\t.map((line) => {\n\t\t\tconst content = fileLines[line - 1] ?? \"\";\n\t\t\treturn ` ${line}: ${fileHashes[line - 1]}│${content}`;\n\t\t})\n\t\t.join(\"\\n\");\n\treturn ` Hash \"${mismatch.ref.hash}\" matches lines ${sample.join(\", \")}${more}.\\n${lines}`;\n}\n\nfunction formatAmbiguousMismatches(\n\tmismatches: HMismatch[],\n\tfileLines: string[],\n\tfileHashes: string[],\n\tfilePath: string | undefined,\n): string | undefined {\n\tconst ambiguous = mismatches.filter((mismatch) => mismatch.kind === \"ambiguous\");\n\tif (ambiguous.length === 0) return undefined;\n\tconst header = `[E_AMBIGUOUS_ANCHOR] ${ambiguous.length} ambiguous anchor${ambiguous.length > 1 ? \"s\" : \"\"}${filePath ? ` in ${filePath}` : \"\"}. Call read() to get fresh anchors, then copy the 3-char HASH of the start and end of the range you are replacing into hash_range_inclusive of your next replace call.`;\n\treturn [header, ...ambiguous.map((mismatch) => formatAmbiguousMismatchDetail(mismatch, fileLines, fileHashes))].join(\n\t\t\"\\n\",\n\t);\n}\n\nexport function fmtMismatch(\n\tmismatches: HMismatch[],\n\tfileLines: string[],\n\tfileHashes: string[],\n\tfilePath?: string,\n): string {\n\tassertAligned(fileLines, fileHashes, \"fmtMismatch\");\n\treturn [\n\t\tformatNotFoundMismatches(mismatches, filePath),\n\t\tformatAmbiguousMismatches(mismatches, fileLines, fileHashes, filePath),\n\t]\n\t\t.filter((section): section is string => section !== undefined)\n\t\t.join(\"\\n\\n\");\n}\n\nconst ITEM_KS = new Set([\"hash_range_inclusive\", \"content_lines\"]);\n\nfunction isStrArr(value: unknown): value is string[] {\n\treturn Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\n\nfunction isStrPair(value: unknown): value is [string, string] {\n\treturn Array.isArray(value) && value.length === 2 && value.every((item) => typeof item === \"string\");\n}\n\nfunction assertItem(edit: Record<string, unknown>, index: number): void {\n\trejectUnknownFields(edit, ITEM_KS, `Edit ${index}`, \"Each edit takes only { hash_range_inclusive, content_lines }.\");\n\n\tif (\"hash_range_inclusive\" in edit && !isStrPair(edit.hash_range_inclusive)) {\n\t\tthrow new Error(\n\t\t\t`[E_BAD_SHAPE] Edit ${index} field \"hash_range_inclusive\" must be a pair of anchor strings [start, end].`,\n\t\t);\n\t}\n\tif (!(\"content_lines\" in edit)) {\n\t\tthrow new Error(\n\t\t\t`[E_BAD_SHAPE] Edit ${index} requires a \"content_lines\" field. Provide the replacement lines (use [] to delete).`,\n\t\t);\n\t}\n\tif (\"content_lines\" in edit && !isStrArr(edit.content_lines)) {\n\t\tthrow new Error(`[E_BAD_SHAPE] Edit ${index} field \"content_lines\" must be a string array.`);\n\t}\n\tif (!isStrPair(edit.hash_range_inclusive)) {\n\t\tthrow new Error(\n\t\t\t`[E_BAD_SHAPE] Edit ${index} requires an \"hash_range_inclusive\" pair of anchor strings [start, end].`,\n\t\t);\n\t}\n}\n\nexport function resEdits(edits: HTEdit[]): HEdit[] {\n\tconst result: HEdit[] = [];\n\tfor (const [index, edit] of edits.entries()) {\n\t\tassertItem(edit as Record<string, unknown>, index);\n\n\t\tconst replaceLines = parseText(edit.content_lines);\n\t\tresult.push({\n\t\t\thash_range_inclusive: [parseHashRef(edit.hash_range_inclusive[0]), parseHashRef(edit.hash_range_inclusive[1])],\n\t\t\tcontent_lines: replaceLines,\n\t\t});\n\t}\n\treturn result;\n}\n\nfunction warnUnicodeEsc(edits: HEdit[], warnings: string[]): void {\n\tfor (const edit of edits) {\n\t\tif (edit.content_lines.some((line) => /\\\\uDDDD/i.test(line))) {\n\t\t\twarnings.push(\n\t\t\t\t\"Detected literal \\\\uDDDD in edit content; no autocorrection applied. Verify whether this should be a real Unicode escape or plain text.\",\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function assertNoBarePrefix(edits: HEdit[], _fileLines: string[], fileHashes: string[]): void {\n\tconst suspects: { line: string; hash: string; editIndex: number; lineIndex: number }[] = [];\n\tfor (let editIndex = 0; editIndex < edits.length; editIndex++) {\n\t\tconst edit = edits[editIndex]!;\n\t\tfor (let lineIndex = 0; lineIndex < edit.content_lines.length; lineIndex++) {\n\t\t\tconst line = edit.content_lines[lineIndex]!;\n\t\t\tconst match = line.match(HL_BARE_PREFIX_RE);\n\t\t\tif (match) suspects.push({ line, hash: match[1]!, editIndex, lineIndex });\n\t\t}\n\t}\n\tif (suspects.length === 0) return;\n\tconst locations = suspects.map((s) => `edit ${s.editIndex}, content_lines[${s.lineIndex}]`).join(\"; \");\n\n\tconst fileHashSet = new Set(fileHashes);\n\tconst matched = suspects.filter((s) => fileHashSet.has(s.hash));\n\tconst matchedCount = matched.length;\n\n\tconst exampleLine = `${suspects[0]!.hash}│${suspects[0]!.line}`;\n\n\tconst linesHint =\n\t\tmatchedCount === 0\n\t\t\t? `None match file line hashes.`\n\t\t\t: `${matchedCount} match file line hashes — strong evidence the prefix was copied from read output.`;\n\n\tthrow new Error(\n\t\t`[E_BARE_HASH_PREFIX] ${suspects.length} edit line(s) start with a hash-like prefix (${locations}). Example: ${JSON.stringify(exampleLine)}. ${linesHint} Remove the \"HASH│\" prefix from each affected content_lines entry; keep only the literal line content that appears after \"│\" in read output. Remember: hash_range_inclusive uses hash anchors, content_lines uses file content only.`,\n\t);\n}\n\nexport function descEdit(edit: RHEdit): string {\n\treturn `replace ${edit.hash_range_inclusive[0].hash}-${edit.hash_range_inclusive[1].hash}`;\n}\n\nfunction checkBoundaryDup(\n\tadjacentLine: string | undefined,\n\treplacementEdge: string | undefined,\n\tkind: BoundaryDuplicateKind,\n\tsurvivingLineIndex: number,\n\tfileLines: string[],\n\teditIndex: number,\n): BDupWarn | null {\n\tif (\n\t\tadjacentLine === undefined ||\n\t\treplacementEdge === undefined ||\n\t\treplacementEdge.length === 0 ||\n\t\treplacementEdge !== adjacentLine\n\t)\n\t\treturn null;\n\treturn {\n\t\tkind,\n\t\tsurvivingLineContent: adjacentLine,\n\t\tsurvivingLineIndex,\n\t\toccurrence: fileLines.slice(0, survivingLineIndex).filter((l) => l === adjacentLine).length,\n\t\treplacementLineContent: replacementEdge,\n\t\teditIndex,\n\t};\n}\n\nexport function valEdits(\n\tedits: HEdit[],\n\tfileLines: string[],\n\tfileHashes: string[],\n\t_warnings: string[],\n\tsignal: AbortSignal | undefined,\n): EditValidationResult {\n\tassertAligned(fileLines, fileHashes, \"valEdits\");\n\tconst resolved: RHEdit[] = [];\n\tconst mismatches: HMismatch[] = [];\n\tconst boundaryWarnings: BDupWarn[] = [];\n\n\tconst tryResolve = (ref: Anchor): RAnchor | undefined => {\n\t\tconst result = resAnchor(ref, fileLines, fileHashes);\n\t\tif (\"kind\" in result) {\n\t\t\tmismatches.push(result);\n\t\t\treturn undefined;\n\t\t}\n\t\treturn result;\n\t};\n\n\tfor (const edit of edits) {\n\t\tabortIf(signal);\n\t\tconst startResolved = tryResolve(edit.hash_range_inclusive[0]);\n\t\tconst endResolved = tryResolve(edit.hash_range_inclusive[1]);\n\t\tif (!startResolved || !endResolved) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (startResolved.line > endResolved.line) {\n\t\t\tthrow new Error(\n\t\t\t\t`[E_BAD_OP] Range start line ${startResolved.line} must be <= end line ${endResolved.line} (anchors ${edit.hash_range_inclusive[0].hash} and ${edit.hash_range_inclusive[1].hash}).`,\n\t\t\t);\n\t\t}\n\t\tconst endLine = endResolved.line;\n\t\tconst nextLine = fileLines[endLine];\n\t\tconst replacementLastLine = edit.content_lines.at(-1);\n\t\tconst trailing = checkBoundaryDup(nextLine, replacementLastLine, \"trailing\", endLine, fileLines, resolved.length);\n\t\tif (trailing) boundaryWarnings.push(trailing);\n\t\tconst prevLine = fileLines[startResolved.line - 2];\n\t\tconst replacementFirstLine = edit.content_lines[0];\n\t\tconst leading = checkBoundaryDup(\n\t\t\tprevLine,\n\t\t\treplacementFirstLine,\n\t\t\t\"leading\",\n\t\t\tstartResolved.line - 2,\n\t\t\tfileLines,\n\t\t\tresolved.length,\n\t\t);\n\t\tif (leading) boundaryWarnings.push(leading);\n\t\tresolved.push({\n\t\t\thash_range_inclusive: [startResolved, endResolved],\n\t\t\tcontent_lines: edit.content_lines,\n\t\t});\n\t}\n\n\treturn { resolved, mismatches, boundaryWarnings };\n}\n\nexport { warnUnicodeEsc };\n"]}
@@ -0,0 +1,187 @@
1
+ import { rejectUnknownFields } from "../hashline-utils.js";
2
+ import { abortIf } from "../runtime.js";
3
+ import { HL_BARE_PREFIX_RE } from "./hash.js";
4
+ import { parseHashRef, parseText } from "./parse.js";
5
+ function resAnchor(ref, _fileLines, fileHashes) {
6
+ const hashMatches = [];
7
+ for (let i = 0; i < fileHashes.length; i++) {
8
+ if (fileHashes[i] === ref.hash)
9
+ hashMatches.push(i + 1);
10
+ }
11
+ if (hashMatches.length === 0) {
12
+ return { ref, kind: "not_found" };
13
+ }
14
+ if (hashMatches.length === 1) {
15
+ return {
16
+ line: hashMatches[0],
17
+ hash: ref.hash,
18
+ hashMatched: true,
19
+ };
20
+ }
21
+ return { ref, kind: "ambiguous", candidates: hashMatches };
22
+ }
23
+ function assertAligned(fileLines, fileHashes, ctx) {
24
+ if (fileHashes.length !== fileLines.length) {
25
+ throw new Error(`${ctx}: fileHashes.length (${fileHashes.length}) must match fileLines.length (${fileLines.length}).`);
26
+ }
27
+ }
28
+ function formatNotFoundMismatches(mismatches, filePath) {
29
+ const notFound = mismatches.filter((mismatch) => mismatch.kind === "not_found");
30
+ if (notFound.length === 0)
31
+ return undefined;
32
+ const references = notFound.map((mismatch) => `"${mismatch.ref.hash}"`).join(", ");
33
+ return `[E_STALE_ANCHOR] ${notFound.length} stale anchor${notFound.length > 1 ? "s" : ""}${filePath ? ` in ${filePath}` : ""}: ${references}. Call read() to get fresh anchors, then copy the 3-char HASH of the start and end of the range you are replacing into hash_range_inclusive of your next replace call.`;
34
+ }
35
+ function formatAmbiguousMismatchDetail(mismatch, fileLines, fileHashes) {
36
+ const sample = (mismatch.candidates ?? []).slice(0, 5);
37
+ const candidateCount = mismatch.candidates?.length ?? 0;
38
+ const more = candidateCount > sample.length ? `, ... (+${candidateCount - sample.length} more)` : "";
39
+ const lines = sample
40
+ .map((line) => {
41
+ const content = fileLines[line - 1] ?? "";
42
+ return ` ${line}: ${fileHashes[line - 1]}│${content}`;
43
+ })
44
+ .join("\n");
45
+ return ` Hash "${mismatch.ref.hash}" matches lines ${sample.join(", ")}${more}.\n${lines}`;
46
+ }
47
+ function formatAmbiguousMismatches(mismatches, fileLines, fileHashes, filePath) {
48
+ const ambiguous = mismatches.filter((mismatch) => mismatch.kind === "ambiguous");
49
+ if (ambiguous.length === 0)
50
+ return undefined;
51
+ const header = `[E_AMBIGUOUS_ANCHOR] ${ambiguous.length} ambiguous anchor${ambiguous.length > 1 ? "s" : ""}${filePath ? ` in ${filePath}` : ""}. Call read() to get fresh anchors, then copy the 3-char HASH of the start and end of the range you are replacing into hash_range_inclusive of your next replace call.`;
52
+ return [header, ...ambiguous.map((mismatch) => formatAmbiguousMismatchDetail(mismatch, fileLines, fileHashes))].join("\n");
53
+ }
54
+ export function fmtMismatch(mismatches, fileLines, fileHashes, filePath) {
55
+ assertAligned(fileLines, fileHashes, "fmtMismatch");
56
+ return [
57
+ formatNotFoundMismatches(mismatches, filePath),
58
+ formatAmbiguousMismatches(mismatches, fileLines, fileHashes, filePath),
59
+ ]
60
+ .filter((section) => section !== undefined)
61
+ .join("\n\n");
62
+ }
63
+ const ITEM_KS = new Set(["hash_range_inclusive", "content_lines"]);
64
+ function isStrArr(value) {
65
+ return Array.isArray(value) && value.every((item) => typeof item === "string");
66
+ }
67
+ function isStrPair(value) {
68
+ return Array.isArray(value) && value.length === 2 && value.every((item) => typeof item === "string");
69
+ }
70
+ function assertItem(edit, index) {
71
+ rejectUnknownFields(edit, ITEM_KS, `Edit ${index}`, "Each edit takes only { hash_range_inclusive, content_lines }.");
72
+ if ("hash_range_inclusive" in edit && !isStrPair(edit.hash_range_inclusive)) {
73
+ throw new Error(`[E_BAD_SHAPE] Edit ${index} field "hash_range_inclusive" must be a pair of anchor strings [start, end].`);
74
+ }
75
+ if (!("content_lines" in edit)) {
76
+ throw new Error(`[E_BAD_SHAPE] Edit ${index} requires a "content_lines" field. Provide the replacement lines (use [] to delete).`);
77
+ }
78
+ if ("content_lines" in edit && !isStrArr(edit.content_lines)) {
79
+ throw new Error(`[E_BAD_SHAPE] Edit ${index} field "content_lines" must be a string array.`);
80
+ }
81
+ if (!isStrPair(edit.hash_range_inclusive)) {
82
+ throw new Error(`[E_BAD_SHAPE] Edit ${index} requires an "hash_range_inclusive" pair of anchor strings [start, end].`);
83
+ }
84
+ }
85
+ export function resEdits(edits) {
86
+ const result = [];
87
+ for (const [index, edit] of edits.entries()) {
88
+ assertItem(edit, index);
89
+ const replaceLines = parseText(edit.content_lines);
90
+ result.push({
91
+ hash_range_inclusive: [parseHashRef(edit.hash_range_inclusive[0]), parseHashRef(edit.hash_range_inclusive[1])],
92
+ content_lines: replaceLines,
93
+ });
94
+ }
95
+ return result;
96
+ }
97
+ function warnUnicodeEsc(edits, warnings) {
98
+ for (const edit of edits) {
99
+ if (edit.content_lines.some((line) => /\\uDDDD/i.test(line))) {
100
+ warnings.push("Detected literal \\uDDDD in edit content; no autocorrection applied. Verify whether this should be a real Unicode escape or plain text.");
101
+ }
102
+ }
103
+ }
104
+ export function assertNoBarePrefix(edits, _fileLines, fileHashes) {
105
+ const suspects = [];
106
+ for (let editIndex = 0; editIndex < edits.length; editIndex++) {
107
+ const edit = edits[editIndex];
108
+ for (let lineIndex = 0; lineIndex < edit.content_lines.length; lineIndex++) {
109
+ const line = edit.content_lines[lineIndex];
110
+ const match = line.match(HL_BARE_PREFIX_RE);
111
+ if (match)
112
+ suspects.push({ line, hash: match[1], editIndex, lineIndex });
113
+ }
114
+ }
115
+ if (suspects.length === 0)
116
+ return;
117
+ const locations = suspects.map((s) => `edit ${s.editIndex}, content_lines[${s.lineIndex}]`).join("; ");
118
+ const fileHashSet = new Set(fileHashes);
119
+ const matched = suspects.filter((s) => fileHashSet.has(s.hash));
120
+ const matchedCount = matched.length;
121
+ const exampleLine = `${suspects[0].hash}│${suspects[0].line}`;
122
+ const linesHint = matchedCount === 0
123
+ ? `None match file line hashes.`
124
+ : `${matchedCount} match file line hashes — strong evidence the prefix was copied from read output.`;
125
+ throw new Error(`[E_BARE_HASH_PREFIX] ${suspects.length} edit line(s) start with a hash-like prefix (${locations}). Example: ${JSON.stringify(exampleLine)}. ${linesHint} Remove the "HASH│" prefix from each affected content_lines entry; keep only the literal line content that appears after "│" in read output. Remember: hash_range_inclusive uses hash anchors, content_lines uses file content only.`);
126
+ }
127
+ export function descEdit(edit) {
128
+ return `replace ${edit.hash_range_inclusive[0].hash}-${edit.hash_range_inclusive[1].hash}`;
129
+ }
130
+ function checkBoundaryDup(adjacentLine, replacementEdge, kind, survivingLineIndex, fileLines, editIndex) {
131
+ if (adjacentLine === undefined ||
132
+ replacementEdge === undefined ||
133
+ replacementEdge.length === 0 ||
134
+ replacementEdge !== adjacentLine)
135
+ return null;
136
+ return {
137
+ kind,
138
+ survivingLineContent: adjacentLine,
139
+ survivingLineIndex,
140
+ occurrence: fileLines.slice(0, survivingLineIndex).filter((l) => l === adjacentLine).length,
141
+ replacementLineContent: replacementEdge,
142
+ editIndex,
143
+ };
144
+ }
145
+ export function valEdits(edits, fileLines, fileHashes, _warnings, signal) {
146
+ assertAligned(fileLines, fileHashes, "valEdits");
147
+ const resolved = [];
148
+ const mismatches = [];
149
+ const boundaryWarnings = [];
150
+ const tryResolve = (ref) => {
151
+ const result = resAnchor(ref, fileLines, fileHashes);
152
+ if ("kind" in result) {
153
+ mismatches.push(result);
154
+ return undefined;
155
+ }
156
+ return result;
157
+ };
158
+ for (const edit of edits) {
159
+ abortIf(signal);
160
+ const startResolved = tryResolve(edit.hash_range_inclusive[0]);
161
+ const endResolved = tryResolve(edit.hash_range_inclusive[1]);
162
+ if (!startResolved || !endResolved) {
163
+ continue;
164
+ }
165
+ if (startResolved.line > endResolved.line) {
166
+ throw new Error(`[E_BAD_OP] Range start line ${startResolved.line} must be <= end line ${endResolved.line} (anchors ${edit.hash_range_inclusive[0].hash} and ${edit.hash_range_inclusive[1].hash}).`);
167
+ }
168
+ const endLine = endResolved.line;
169
+ const nextLine = fileLines[endLine];
170
+ const replacementLastLine = edit.content_lines.at(-1);
171
+ const trailing = checkBoundaryDup(nextLine, replacementLastLine, "trailing", endLine, fileLines, resolved.length);
172
+ if (trailing)
173
+ boundaryWarnings.push(trailing);
174
+ const prevLine = fileLines[startResolved.line - 2];
175
+ const replacementFirstLine = edit.content_lines[0];
176
+ const leading = checkBoundaryDup(prevLine, replacementFirstLine, "leading", startResolved.line - 2, fileLines, resolved.length);
177
+ if (leading)
178
+ boundaryWarnings.push(leading);
179
+ resolved.push({
180
+ hash_range_inclusive: [startResolved, endResolved],
181
+ content_lines: edit.content_lines,
182
+ });
183
+ }
184
+ return { resolved, mismatches, boundaryWarnings };
185
+ }
186
+ export { warnUnicodeEsc };
187
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../src/core/tools/hashline/resolve.ts"],"names":[],"mappings":"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","sourcesContent":["import { rejectUnknownFields } from \"../hashline-utils.ts\";\nimport { abortIf } from \"../runtime.ts\";\nimport { HL_BARE_PREFIX_RE } from \"./hash.ts\";\nimport { type Anchor, parseHashRef, parseText } from \"./parse.ts\";\n\nexport type RAnchor = {\n\tline: number;\n\thash: string;\n\thashMatched: boolean;\n};\n\nexport type HEdit = { hash_range_inclusive: [Anchor, Anchor]; content_lines: string[] };\nexport type RHEdit = {\n\thash_range_inclusive: [RAnchor, RAnchor];\n\tcontent_lines: string[];\n};\n\ntype HashAnchorMismatchKind = \"not_found\" | \"ambiguous\";\nexport type BoundaryDuplicateKind = \"trailing\" | \"leading\";\n\ninterface HMismatch {\n\tref: Anchor;\n\tkind: HashAnchorMismatchKind;\n\tcandidates?: number[];\n}\n\nexport interface BDupWarn {\n\tkind: BoundaryDuplicateKind;\n\tsurvivingLineContent: string;\n\tsurvivingLineIndex: number;\n\toccurrence: number;\n\treplacementLineContent: string;\n\teditIndex: number;\n}\ninterface EditValidationResult {\n\tresolved: RHEdit[];\n\tmismatches: HMismatch[];\n\tboundaryWarnings: BDupWarn[];\n}\n\nexport interface NEdit {\n\teditIndex: number;\n\tloc: string;\n\tcurrentContent: string;\n}\n\nexport type HTEdit = {\n\thash_range_inclusive: [string, string];\n\tcontent_lines: string[];\n};\n\nfunction resAnchor(ref: Anchor, _fileLines: string[], fileHashes: string[]): RAnchor | HMismatch {\n\tconst hashMatches: number[] = [];\n\tfor (let i = 0; i < fileHashes.length; i++) {\n\t\tif (fileHashes[i] === ref.hash) hashMatches.push(i + 1);\n\t}\n\tif (hashMatches.length === 0) {\n\t\treturn { ref, kind: \"not_found\" };\n\t}\n\tif (hashMatches.length === 1) {\n\t\treturn {\n\t\t\tline: hashMatches[0]!,\n\t\t\thash: ref.hash,\n\t\t\thashMatched: true,\n\t\t};\n\t}\n\treturn { ref, kind: \"ambiguous\", candidates: hashMatches };\n}\n\nfunction assertAligned(fileLines: string[], fileHashes: string[], ctx: string): void {\n\tif (fileHashes.length !== fileLines.length) {\n\t\tthrow new Error(\n\t\t\t`${ctx}: fileHashes.length (${fileHashes.length}) must match fileLines.length (${fileLines.length}).`,\n\t\t);\n\t}\n}\n\nfunction formatNotFoundMismatches(mismatches: HMismatch[], filePath: string | undefined): string | undefined {\n\tconst notFound = mismatches.filter((mismatch) => mismatch.kind === \"not_found\");\n\tif (notFound.length === 0) return undefined;\n\tconst references = notFound.map((mismatch) => `\"${mismatch.ref.hash}\"`).join(\", \");\n\treturn `[E_STALE_ANCHOR] ${notFound.length} stale anchor${notFound.length > 1 ? \"s\" : \"\"}${filePath ? ` in ${filePath}` : \"\"}: ${references}. Call read() to get fresh anchors, then copy the 3-char HASH of the start and end of the range you are replacing into hash_range_inclusive of your next replace call.`;\n}\n\nfunction formatAmbiguousMismatchDetail(mismatch: HMismatch, fileLines: string[], fileHashes: string[]): string {\n\tconst sample = (mismatch.candidates ?? []).slice(0, 5);\n\tconst candidateCount = mismatch.candidates?.length ?? 0;\n\tconst more = candidateCount > sample.length ? `, ... (+${candidateCount - sample.length} more)` : \"\";\n\tconst lines = sample\n\t\t.map((line) => {\n\t\t\tconst content = fileLines[line - 1] ?? \"\";\n\t\t\treturn ` ${line}: ${fileHashes[line - 1]}│${content}`;\n\t\t})\n\t\t.join(\"\\n\");\n\treturn ` Hash \"${mismatch.ref.hash}\" matches lines ${sample.join(\", \")}${more}.\\n${lines}`;\n}\n\nfunction formatAmbiguousMismatches(\n\tmismatches: HMismatch[],\n\tfileLines: string[],\n\tfileHashes: string[],\n\tfilePath: string | undefined,\n): string | undefined {\n\tconst ambiguous = mismatches.filter((mismatch) => mismatch.kind === \"ambiguous\");\n\tif (ambiguous.length === 0) return undefined;\n\tconst header = `[E_AMBIGUOUS_ANCHOR] ${ambiguous.length} ambiguous anchor${ambiguous.length > 1 ? \"s\" : \"\"}${filePath ? ` in ${filePath}` : \"\"}. Call read() to get fresh anchors, then copy the 3-char HASH of the start and end of the range you are replacing into hash_range_inclusive of your next replace call.`;\n\treturn [header, ...ambiguous.map((mismatch) => formatAmbiguousMismatchDetail(mismatch, fileLines, fileHashes))].join(\n\t\t\"\\n\",\n\t);\n}\n\nexport function fmtMismatch(\n\tmismatches: HMismatch[],\n\tfileLines: string[],\n\tfileHashes: string[],\n\tfilePath?: string,\n): string {\n\tassertAligned(fileLines, fileHashes, \"fmtMismatch\");\n\treturn [\n\t\tformatNotFoundMismatches(mismatches, filePath),\n\t\tformatAmbiguousMismatches(mismatches, fileLines, fileHashes, filePath),\n\t]\n\t\t.filter((section): section is string => section !== undefined)\n\t\t.join(\"\\n\\n\");\n}\n\nconst ITEM_KS = new Set([\"hash_range_inclusive\", \"content_lines\"]);\n\nfunction isStrArr(value: unknown): value is string[] {\n\treturn Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\n\nfunction isStrPair(value: unknown): value is [string, string] {\n\treturn Array.isArray(value) && value.length === 2 && value.every((item) => typeof item === \"string\");\n}\n\nfunction assertItem(edit: Record<string, unknown>, index: number): void {\n\trejectUnknownFields(edit, ITEM_KS, `Edit ${index}`, \"Each edit takes only { hash_range_inclusive, content_lines }.\");\n\n\tif (\"hash_range_inclusive\" in edit && !isStrPair(edit.hash_range_inclusive)) {\n\t\tthrow new Error(\n\t\t\t`[E_BAD_SHAPE] Edit ${index} field \"hash_range_inclusive\" must be a pair of anchor strings [start, end].`,\n\t\t);\n\t}\n\tif (!(\"content_lines\" in edit)) {\n\t\tthrow new Error(\n\t\t\t`[E_BAD_SHAPE] Edit ${index} requires a \"content_lines\" field. Provide the replacement lines (use [] to delete).`,\n\t\t);\n\t}\n\tif (\"content_lines\" in edit && !isStrArr(edit.content_lines)) {\n\t\tthrow new Error(`[E_BAD_SHAPE] Edit ${index} field \"content_lines\" must be a string array.`);\n\t}\n\tif (!isStrPair(edit.hash_range_inclusive)) {\n\t\tthrow new Error(\n\t\t\t`[E_BAD_SHAPE] Edit ${index} requires an \"hash_range_inclusive\" pair of anchor strings [start, end].`,\n\t\t);\n\t}\n}\n\nexport function resEdits(edits: HTEdit[]): HEdit[] {\n\tconst result: HEdit[] = [];\n\tfor (const [index, edit] of edits.entries()) {\n\t\tassertItem(edit as Record<string, unknown>, index);\n\n\t\tconst replaceLines = parseText(edit.content_lines);\n\t\tresult.push({\n\t\t\thash_range_inclusive: [parseHashRef(edit.hash_range_inclusive[0]), parseHashRef(edit.hash_range_inclusive[1])],\n\t\t\tcontent_lines: replaceLines,\n\t\t});\n\t}\n\treturn result;\n}\n\nfunction warnUnicodeEsc(edits: HEdit[], warnings: string[]): void {\n\tfor (const edit of edits) {\n\t\tif (edit.content_lines.some((line) => /\\\\uDDDD/i.test(line))) {\n\t\t\twarnings.push(\n\t\t\t\t\"Detected literal \\\\uDDDD in edit content; no autocorrection applied. Verify whether this should be a real Unicode escape or plain text.\",\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function assertNoBarePrefix(edits: HEdit[], _fileLines: string[], fileHashes: string[]): void {\n\tconst suspects: { line: string; hash: string; editIndex: number; lineIndex: number }[] = [];\n\tfor (let editIndex = 0; editIndex < edits.length; editIndex++) {\n\t\tconst edit = edits[editIndex]!;\n\t\tfor (let lineIndex = 0; lineIndex < edit.content_lines.length; lineIndex++) {\n\t\t\tconst line = edit.content_lines[lineIndex]!;\n\t\t\tconst match = line.match(HL_BARE_PREFIX_RE);\n\t\t\tif (match) suspects.push({ line, hash: match[1]!, editIndex, lineIndex });\n\t\t}\n\t}\n\tif (suspects.length === 0) return;\n\tconst locations = suspects.map((s) => `edit ${s.editIndex}, content_lines[${s.lineIndex}]`).join(\"; \");\n\n\tconst fileHashSet = new Set(fileHashes);\n\tconst matched = suspects.filter((s) => fileHashSet.has(s.hash));\n\tconst matchedCount = matched.length;\n\n\tconst exampleLine = `${suspects[0]!.hash}│${suspects[0]!.line}`;\n\n\tconst linesHint =\n\t\tmatchedCount === 0\n\t\t\t? `None match file line hashes.`\n\t\t\t: `${matchedCount} match file line hashes — strong evidence the prefix was copied from read output.`;\n\n\tthrow new Error(\n\t\t`[E_BARE_HASH_PREFIX] ${suspects.length} edit line(s) start with a hash-like prefix (${locations}). Example: ${JSON.stringify(exampleLine)}. ${linesHint} Remove the \"HASH│\" prefix from each affected content_lines entry; keep only the literal line content that appears after \"│\" in read output. Remember: hash_range_inclusive uses hash anchors, content_lines uses file content only.`,\n\t);\n}\n\nexport function descEdit(edit: RHEdit): string {\n\treturn `replace ${edit.hash_range_inclusive[0].hash}-${edit.hash_range_inclusive[1].hash}`;\n}\n\nfunction checkBoundaryDup(\n\tadjacentLine: string | undefined,\n\treplacementEdge: string | undefined,\n\tkind: BoundaryDuplicateKind,\n\tsurvivingLineIndex: number,\n\tfileLines: string[],\n\teditIndex: number,\n): BDupWarn | null {\n\tif (\n\t\tadjacentLine === undefined ||\n\t\treplacementEdge === undefined ||\n\t\treplacementEdge.length === 0 ||\n\t\treplacementEdge !== adjacentLine\n\t)\n\t\treturn null;\n\treturn {\n\t\tkind,\n\t\tsurvivingLineContent: adjacentLine,\n\t\tsurvivingLineIndex,\n\t\toccurrence: fileLines.slice(0, survivingLineIndex).filter((l) => l === adjacentLine).length,\n\t\treplacementLineContent: replacementEdge,\n\t\teditIndex,\n\t};\n}\n\nexport function valEdits(\n\tedits: HEdit[],\n\tfileLines: string[],\n\tfileHashes: string[],\n\t_warnings: string[],\n\tsignal: AbortSignal | undefined,\n): EditValidationResult {\n\tassertAligned(fileLines, fileHashes, \"valEdits\");\n\tconst resolved: RHEdit[] = [];\n\tconst mismatches: HMismatch[] = [];\n\tconst boundaryWarnings: BDupWarn[] = [];\n\n\tconst tryResolve = (ref: Anchor): RAnchor | undefined => {\n\t\tconst result = resAnchor(ref, fileLines, fileHashes);\n\t\tif (\"kind\" in result) {\n\t\t\tmismatches.push(result);\n\t\t\treturn undefined;\n\t\t}\n\t\treturn result;\n\t};\n\n\tfor (const edit of edits) {\n\t\tabortIf(signal);\n\t\tconst startResolved = tryResolve(edit.hash_range_inclusive[0]);\n\t\tconst endResolved = tryResolve(edit.hash_range_inclusive[1]);\n\t\tif (!startResolved || !endResolved) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (startResolved.line > endResolved.line) {\n\t\t\tthrow new Error(\n\t\t\t\t`[E_BAD_OP] Range start line ${startResolved.line} must be <= end line ${endResolved.line} (anchors ${edit.hash_range_inclusive[0].hash} and ${edit.hash_range_inclusive[1].hash}).`,\n\t\t\t);\n\t\t}\n\t\tconst endLine = endResolved.line;\n\t\tconst nextLine = fileLines[endLine];\n\t\tconst replacementLastLine = edit.content_lines.at(-1);\n\t\tconst trailing = checkBoundaryDup(nextLine, replacementLastLine, \"trailing\", endLine, fileLines, resolved.length);\n\t\tif (trailing) boundaryWarnings.push(trailing);\n\t\tconst prevLine = fileLines[startResolved.line - 2];\n\t\tconst replacementFirstLine = edit.content_lines[0];\n\t\tconst leading = checkBoundaryDup(\n\t\t\tprevLine,\n\t\t\treplacementFirstLine,\n\t\t\t\"leading\",\n\t\t\tstartResolved.line - 2,\n\t\t\tfileLines,\n\t\t\tresolved.length,\n\t\t);\n\t\tif (leading) boundaryWarnings.push(leading);\n\t\tresolved.push({\n\t\t\thash_range_inclusive: [startResolved, endResolved],\n\t\t\tcontent_lines: edit.content_lines,\n\t\t});\n\t}\n\n\treturn { resolved, mismatches, boundaryWarnings };\n}\n\nexport { warnUnicodeEsc };\n"]}
@@ -0,0 +1,6 @@
1
+ export declare function isRec(value: unknown): value is Record<string, unknown>;
2
+ export declare function has(record: Record<string, unknown>, key: string): boolean;
3
+ export declare function visLines(text: string): string[];
4
+ export declare function cntLines(text: string): number;
5
+ export declare function rejectUnknownFields(obj: Record<string, unknown>, allowed: Set<string>, label: string, hint?: string): void;
6
+ //# sourceMappingURL=hashline-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashline-utils.d.ts","sourceRoot":"","sources":["../../../src/core/tools/hashline-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtE;AAED,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAI/C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACX,IAAI,CAMN","sourcesContent":["export function isRec(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function has(record: Record<string, unknown>, key: string): boolean {\n\treturn Object.hasOwn(record, key);\n}\n\nexport function visLines(text: string): string[] {\n\tif (text.length === 0) return [];\n\tconst lines = text.split(\"\\n\");\n\treturn text.endsWith(\"\\n\") ? lines.slice(0, -1) : lines;\n}\n\nexport function cntLines(text: string): number {\n\treturn visLines(text).length;\n}\n\nexport function rejectUnknownFields(\n\tobj: Record<string, unknown>,\n\tallowed: Set<string>,\n\tlabel: string,\n\thint?: string,\n): void {\n\tconst unknown = Object.keys(obj).filter((key) => !allowed.has(key));\n\tif (unknown.length > 0) {\n\t\tconst suffix = hint ? ` ${hint}` : \"\";\n\t\tthrow new Error(`[E_BAD_SHAPE] ${label} contains unknown or unsupported fields: ${unknown.join(\", \")}.${suffix}`);\n\t}\n}\n"]}
@@ -0,0 +1,23 @@
1
+ export function isRec(value) {
2
+ return typeof value === "object" && value !== null && !Array.isArray(value);
3
+ }
4
+ export function has(record, key) {
5
+ return Object.hasOwn(record, key);
6
+ }
7
+ export function visLines(text) {
8
+ if (text.length === 0)
9
+ return [];
10
+ const lines = text.split("\n");
11
+ return text.endsWith("\n") ? lines.slice(0, -1) : lines;
12
+ }
13
+ export function cntLines(text) {
14
+ return visLines(text).length;
15
+ }
16
+ export function rejectUnknownFields(obj, allowed, label, hint) {
17
+ const unknown = Object.keys(obj).filter((key) => !allowed.has(key));
18
+ if (unknown.length > 0) {
19
+ const suffix = hint ? ` ${hint}` : "";
20
+ throw new Error(`[E_BAD_SHAPE] ${label} contains unknown or unsupported fields: ${unknown.join(", ")}.${suffix}`);
21
+ }
22
+ }
23
+ //# sourceMappingURL=hashline-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashline-utils.js","sourceRoot":"","sources":["../../../src/core/tools/hashline-utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,KAAc,EAAoC;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAAA,CAC5E;AAED,MAAM,UAAU,GAAG,CAAC,MAA+B,EAAE,GAAW,EAAW;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAAA,CAClC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAY;IAChD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAAA,CACxD;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAU;IAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAAA,CAC7B;AAED,MAAM,UAAU,mBAAmB,CAClC,GAA4B,EAC5B,OAAoB,EACpB,KAAa,EACb,IAAa,EACN;IACP,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,4CAA4C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IACnH,CAAC;AAAA,CACD","sourcesContent":["export function isRec(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function has(record: Record<string, unknown>, key: string): boolean {\n\treturn Object.hasOwn(record, key);\n}\n\nexport function visLines(text: string): string[] {\n\tif (text.length === 0) return [];\n\tconst lines = text.split(\"\\n\");\n\treturn text.endsWith(\"\\n\") ? lines.slice(0, -1) : lines;\n}\n\nexport function cntLines(text: string): number {\n\treturn visLines(text).length;\n}\n\nexport function rejectUnknownFields(\n\tobj: Record<string, unknown>,\n\tallowed: Set<string>,\n\tlabel: string,\n\thint?: string,\n): void {\n\tconst unknown = Object.keys(obj).filter((key) => !allowed.has(key));\n\tif (unknown.length > 0) {\n\t\tconst suffix = hint ? ` ${hint}` : \"\";\n\t\tthrow new Error(`[E_BAD_SHAPE] ${label} contains unknown or unsupported fields: ${unknown.join(\", \")}.${suffix}`);\n\t}\n}\n"]}
@@ -0,0 +1,36 @@
1
+ import type { AgentTool } from "@greppleai/grip-agent-core";
2
+ import type { ToolDefinition } from "../extensions/types.ts";
3
+ import { type BashToolOptions } from "./bash.ts";
4
+ import { type EditToolOptions } from "./edit.ts";
5
+ import { type FindToolOptions } from "./find.ts";
6
+ import { type GrepToolOptions } from "./grep.ts";
7
+ import { type LsToolOptions } from "./ls.ts";
8
+ import type { ToolOperations } from "./operations.ts";
9
+ import { type ReadToolOptions } from "./read.ts";
10
+ import { type SubagentToolOptions } from "./subagent.ts";
11
+ import { type WebsearchToolOptions } from "./websearch.ts";
12
+ import { type WriteToolOptions } from "./write.ts";
13
+ export type Tool = AgentTool<any>;
14
+ export type ToolDef = ToolDefinition<any, any>;
15
+ export type ToolName = "read" | "bash" | "edit" | "write" | "grep" | "find" | "ls" | "subagent" | "subagent_runs" | "create_subagent" | "websearch";
16
+ export declare const allToolNames: Set<ToolName>;
17
+ export interface ToolsOptions {
18
+ read?: ReadToolOptions;
19
+ bash?: BashToolOptions;
20
+ write?: WriteToolOptions;
21
+ edit?: EditToolOptions;
22
+ grep?: GrepToolOptions;
23
+ find?: FindToolOptions;
24
+ ls?: LsToolOptions;
25
+ subagent?: SubagentToolOptions;
26
+ websearch?: WebsearchToolOptions;
27
+ }
28
+ export declare function createToolDefinition(toolName: ToolName, operations: ToolOperations, options?: ToolsOptions): ToolDef;
29
+ export declare function createTool(toolName: ToolName, operations: ToolOperations, options?: ToolsOptions): Tool;
30
+ export declare function createCodingToolDefinitions(operations: ToolOperations, options?: ToolsOptions): ToolDef[];
31
+ export declare function createReadOnlyToolDefinitions(operations: ToolOperations, options?: ToolsOptions): ToolDef[];
32
+ export declare function createAllToolDefinitions(operations: ToolOperations, options?: ToolsOptions): Record<ToolName, ToolDef>;
33
+ export declare function createCodingTools(operations: ToolOperations, options?: ToolsOptions): Tool[];
34
+ export declare function createReadOnlyTools(operations: ToolOperations, options?: ToolsOptions): Tool[];
35
+ export declare function createAllTools(operations: ToolOperations, options?: ToolsOptions): Record<ToolName, Tool>;
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,KAAK,eAAe,EAA4C,MAAM,WAAW,CAAC;AAC3F,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3F,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3F,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3F,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3F,OAAO,EAON,KAAK,mBAAmB,EACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAsD,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAA8C,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/F,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAClC,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/C,MAAM,MAAM,QAAQ,GACjB,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,IAAI,GACJ,UAAU,GACV,eAAe,GACf,iBAAiB,GACjB,WAAW,CAAC;AACf,eAAO,MAAM,YAAY,EAAE,GAAG,CAAC,QAAQ,CAYrC,CAAC;AAEH,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,EAAE,CAAC,EAAE,aAAa,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,SAAS,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CA2BpH;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CA2BvG;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,EAAE,CAOzG;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,EAAE,CAO3G;AAED,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,cAAc,EAC1B,OAAO,CAAC,EAAE,YAAY,GACpB,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAc3B;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAO5F;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAO9F;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAczG","sourcesContent":["import type { AgentTool } from \"@greppleai/grip-agent-core\";\nimport type { ToolDefinition } from \"../extensions/types.ts\";\nimport { type BashToolOptions, createBashTool, createBashToolDefinition } from \"./bash.ts\";\nimport { createEditTool, createEditToolDefinition, type EditToolOptions } from \"./edit.ts\";\nimport { createFindTool, createFindToolDefinition, type FindToolOptions } from \"./find.ts\";\nimport { createGrepTool, createGrepToolDefinition, type GrepToolOptions } from \"./grep.ts\";\nimport { createLsTool, createLsToolDefinition, type LsToolOptions } from \"./ls.ts\";\nimport type { ToolOperations } from \"./operations.ts\";\nimport { createReadTool, createReadToolDefinition, type ReadToolOptions } from \"./read.ts\";\nimport {\n\tcreateCreateSubagentTool,\n\tcreateCreateSubagentToolDefinition,\n\tcreateSubagentRunsTool,\n\tcreateSubagentRunsToolDefinition,\n\tcreateSubagentTool,\n\tcreateSubagentToolDefinition,\n\ttype SubagentToolOptions,\n} from \"./subagent.ts\";\nimport { createWebsearchTool, createWebsearchToolDefinition, type WebsearchToolOptions } from \"./websearch.ts\";\nimport { createWriteTool, createWriteToolDefinition, type WriteToolOptions } from \"./write.ts\";\n\nexport type Tool = AgentTool<any>;\nexport type ToolDef = ToolDefinition<any, any>;\nexport type ToolName =\n\t| \"read\"\n\t| \"bash\"\n\t| \"edit\"\n\t| \"write\"\n\t| \"grep\"\n\t| \"find\"\n\t| \"ls\"\n\t| \"subagent\"\n\t| \"subagent_runs\"\n\t| \"create_subagent\"\n\t| \"websearch\";\nexport const allToolNames: Set<ToolName> = new Set([\n\t\"read\",\n\t\"bash\",\n\t\"edit\",\n\t\"write\",\n\t\"grep\",\n\t\"find\",\n\t\"ls\",\n\t\"subagent\",\n\t\"subagent_runs\",\n\t\"create_subagent\",\n\t\"websearch\",\n]);\n\nexport interface ToolsOptions {\n\tread?: ReadToolOptions;\n\tbash?: BashToolOptions;\n\twrite?: WriteToolOptions;\n\tedit?: EditToolOptions;\n\tgrep?: GrepToolOptions;\n\tfind?: FindToolOptions;\n\tls?: LsToolOptions;\n\tsubagent?: SubagentToolOptions;\n\twebsearch?: WebsearchToolOptions;\n}\n\nexport function createToolDefinition(toolName: ToolName, operations: ToolOperations, options?: ToolsOptions): ToolDef {\n\tswitch (toolName) {\n\t\tcase \"read\":\n\t\t\treturn createReadToolDefinition(operations, options?.read);\n\t\tcase \"bash\":\n\t\t\treturn createBashToolDefinition(operations, options?.bash);\n\t\tcase \"edit\":\n\t\t\treturn createEditToolDefinition(operations, options?.edit);\n\t\tcase \"write\":\n\t\t\treturn createWriteToolDefinition(operations, options?.write);\n\t\tcase \"grep\":\n\t\t\treturn createGrepToolDefinition(operations, options?.grep);\n\t\tcase \"find\":\n\t\t\treturn createFindToolDefinition(operations, options?.find);\n\t\tcase \"ls\":\n\t\t\treturn createLsToolDefinition(operations, options?.ls);\n\t\tcase \"subagent\":\n\t\t\treturn createSubagentToolDefinition(options?.subagent);\n\t\tcase \"subagent_runs\":\n\t\t\treturn createSubagentRunsToolDefinition(options?.subagent?.runRegistry);\n\t\tcase \"create_subagent\":\n\t\t\treturn createCreateSubagentToolDefinition(options?.subagent?.configRegistry);\n\t\tcase \"websearch\":\n\t\t\treturn createWebsearchToolDefinition(options?.websearch);\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown tool name: ${toolName}`);\n\t}\n}\n\nexport function createTool(toolName: ToolName, operations: ToolOperations, options?: ToolsOptions): Tool {\n\tswitch (toolName) {\n\t\tcase \"read\":\n\t\t\treturn createReadTool(operations, options?.read);\n\t\tcase \"bash\":\n\t\t\treturn createBashTool(operations, options?.bash);\n\t\tcase \"edit\":\n\t\t\treturn createEditTool(operations, options?.edit);\n\t\tcase \"write\":\n\t\t\treturn createWriteTool(operations, options?.write);\n\t\tcase \"grep\":\n\t\t\treturn createGrepTool(operations, options?.grep);\n\t\tcase \"find\":\n\t\t\treturn createFindTool(operations, options?.find);\n\t\tcase \"ls\":\n\t\t\treturn createLsTool(operations, options?.ls);\n\t\tcase \"subagent\":\n\t\t\treturn createSubagentTool(options?.subagent);\n\t\tcase \"subagent_runs\":\n\t\t\treturn createSubagentRunsTool(options?.subagent?.runRegistry);\n\t\tcase \"create_subagent\":\n\t\t\treturn createCreateSubagentTool(options?.subagent?.configRegistry);\n\t\tcase \"websearch\":\n\t\t\treturn createWebsearchTool(options?.websearch);\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown tool name: ${toolName}`);\n\t}\n}\n\nexport function createCodingToolDefinitions(operations: ToolOperations, options?: ToolsOptions): ToolDef[] {\n\treturn [\n\t\tcreateReadToolDefinition(operations, options?.read),\n\t\tcreateBashToolDefinition(operations, options?.bash),\n\t\tcreateEditToolDefinition(operations, options?.edit),\n\t\tcreateWriteToolDefinition(operations, options?.write),\n\t];\n}\n\nexport function createReadOnlyToolDefinitions(operations: ToolOperations, options?: ToolsOptions): ToolDef[] {\n\treturn [\n\t\tcreateReadToolDefinition(operations, options?.read),\n\t\tcreateGrepToolDefinition(operations, options?.grep),\n\t\tcreateFindToolDefinition(operations, options?.find),\n\t\tcreateLsToolDefinition(operations, options?.ls),\n\t];\n}\n\nexport function createAllToolDefinitions(\n\toperations: ToolOperations,\n\toptions?: ToolsOptions,\n): Record<ToolName, ToolDef> {\n\treturn {\n\t\tread: createReadToolDefinition(operations, options?.read),\n\t\tbash: createBashToolDefinition(operations, options?.bash),\n\t\tedit: createEditToolDefinition(operations, options?.edit),\n\t\twrite: createWriteToolDefinition(operations, options?.write),\n\t\tgrep: createGrepToolDefinition(operations, options?.grep),\n\t\tfind: createFindToolDefinition(operations, options?.find),\n\t\tls: createLsToolDefinition(operations, options?.ls),\n\t\tsubagent: createSubagentToolDefinition(options?.subagent),\n\t\tsubagent_runs: createSubagentRunsToolDefinition(options?.subagent?.runRegistry),\n\t\tcreate_subagent: createCreateSubagentToolDefinition(options?.subagent?.configRegistry),\n\t\twebsearch: createWebsearchToolDefinition(options?.websearch),\n\t};\n}\n\nexport function createCodingTools(operations: ToolOperations, options?: ToolsOptions): Tool[] {\n\treturn [\n\t\tcreateReadTool(operations, options?.read),\n\t\tcreateBashTool(operations, options?.bash),\n\t\tcreateEditTool(operations, options?.edit),\n\t\tcreateWriteTool(operations, options?.write),\n\t];\n}\n\nexport function createReadOnlyTools(operations: ToolOperations, options?: ToolsOptions): Tool[] {\n\treturn [\n\t\tcreateReadTool(operations, options?.read),\n\t\tcreateGrepTool(operations, options?.grep),\n\t\tcreateFindTool(operations, options?.find),\n\t\tcreateLsTool(operations, options?.ls),\n\t];\n}\n\nexport function createAllTools(operations: ToolOperations, options?: ToolsOptions): Record<ToolName, Tool> {\n\treturn {\n\t\tread: createReadTool(operations, options?.read),\n\t\tbash: createBashTool(operations, options?.bash),\n\t\tedit: createEditTool(operations, options?.edit),\n\t\twrite: createWriteTool(operations, options?.write),\n\t\tgrep: createGrepTool(operations, options?.grep),\n\t\tfind: createFindTool(operations, options?.find),\n\t\tls: createLsTool(operations, options?.ls),\n\t\tsubagent: createSubagentTool(options?.subagent),\n\t\tsubagent_runs: createSubagentRunsTool(options?.subagent?.runRegistry),\n\t\tcreate_subagent: createCreateSubagentTool(options?.subagent?.configRegistry),\n\t\twebsearch: createWebsearchTool(options?.websearch),\n\t};\n}\n"]}
@@ -0,0 +1,141 @@
1
+ import { createBashTool, createBashToolDefinition } from "./bash.js";
2
+ import { createEditTool, createEditToolDefinition } from "./edit.js";
3
+ import { createFindTool, createFindToolDefinition } from "./find.js";
4
+ import { createGrepTool, createGrepToolDefinition } from "./grep.js";
5
+ import { createLsTool, createLsToolDefinition } from "./ls.js";
6
+ import { createReadTool, createReadToolDefinition } from "./read.js";
7
+ import { createCreateSubagentTool, createCreateSubagentToolDefinition, createSubagentRunsTool, createSubagentRunsToolDefinition, createSubagentTool, createSubagentToolDefinition, } from "./subagent.js";
8
+ import { createWebsearchTool, createWebsearchToolDefinition } from "./websearch.js";
9
+ import { createWriteTool, createWriteToolDefinition } from "./write.js";
10
+ export const allToolNames = new Set([
11
+ "read",
12
+ "bash",
13
+ "edit",
14
+ "write",
15
+ "grep",
16
+ "find",
17
+ "ls",
18
+ "subagent",
19
+ "subagent_runs",
20
+ "create_subagent",
21
+ "websearch",
22
+ ]);
23
+ export function createToolDefinition(toolName, operations, options) {
24
+ switch (toolName) {
25
+ case "read":
26
+ return createReadToolDefinition(operations, options?.read);
27
+ case "bash":
28
+ return createBashToolDefinition(operations, options?.bash);
29
+ case "edit":
30
+ return createEditToolDefinition(operations, options?.edit);
31
+ case "write":
32
+ return createWriteToolDefinition(operations, options?.write);
33
+ case "grep":
34
+ return createGrepToolDefinition(operations, options?.grep);
35
+ case "find":
36
+ return createFindToolDefinition(operations, options?.find);
37
+ case "ls":
38
+ return createLsToolDefinition(operations, options?.ls);
39
+ case "subagent":
40
+ return createSubagentToolDefinition(options?.subagent);
41
+ case "subagent_runs":
42
+ return createSubagentRunsToolDefinition(options?.subagent?.runRegistry);
43
+ case "create_subagent":
44
+ return createCreateSubagentToolDefinition(options?.subagent?.configRegistry);
45
+ case "websearch":
46
+ return createWebsearchToolDefinition(options?.websearch);
47
+ default:
48
+ throw new Error(`Unknown tool name: ${toolName}`);
49
+ }
50
+ }
51
+ export function createTool(toolName, operations, options) {
52
+ switch (toolName) {
53
+ case "read":
54
+ return createReadTool(operations, options?.read);
55
+ case "bash":
56
+ return createBashTool(operations, options?.bash);
57
+ case "edit":
58
+ return createEditTool(operations, options?.edit);
59
+ case "write":
60
+ return createWriteTool(operations, options?.write);
61
+ case "grep":
62
+ return createGrepTool(operations, options?.grep);
63
+ case "find":
64
+ return createFindTool(operations, options?.find);
65
+ case "ls":
66
+ return createLsTool(operations, options?.ls);
67
+ case "subagent":
68
+ return createSubagentTool(options?.subagent);
69
+ case "subagent_runs":
70
+ return createSubagentRunsTool(options?.subagent?.runRegistry);
71
+ case "create_subagent":
72
+ return createCreateSubagentTool(options?.subagent?.configRegistry);
73
+ case "websearch":
74
+ return createWebsearchTool(options?.websearch);
75
+ default:
76
+ throw new Error(`Unknown tool name: ${toolName}`);
77
+ }
78
+ }
79
+ export function createCodingToolDefinitions(operations, options) {
80
+ return [
81
+ createReadToolDefinition(operations, options?.read),
82
+ createBashToolDefinition(operations, options?.bash),
83
+ createEditToolDefinition(operations, options?.edit),
84
+ createWriteToolDefinition(operations, options?.write),
85
+ ];
86
+ }
87
+ export function createReadOnlyToolDefinitions(operations, options) {
88
+ return [
89
+ createReadToolDefinition(operations, options?.read),
90
+ createGrepToolDefinition(operations, options?.grep),
91
+ createFindToolDefinition(operations, options?.find),
92
+ createLsToolDefinition(operations, options?.ls),
93
+ ];
94
+ }
95
+ export function createAllToolDefinitions(operations, options) {
96
+ return {
97
+ read: createReadToolDefinition(operations, options?.read),
98
+ bash: createBashToolDefinition(operations, options?.bash),
99
+ edit: createEditToolDefinition(operations, options?.edit),
100
+ write: createWriteToolDefinition(operations, options?.write),
101
+ grep: createGrepToolDefinition(operations, options?.grep),
102
+ find: createFindToolDefinition(operations, options?.find),
103
+ ls: createLsToolDefinition(operations, options?.ls),
104
+ subagent: createSubagentToolDefinition(options?.subagent),
105
+ subagent_runs: createSubagentRunsToolDefinition(options?.subagent?.runRegistry),
106
+ create_subagent: createCreateSubagentToolDefinition(options?.subagent?.configRegistry),
107
+ websearch: createWebsearchToolDefinition(options?.websearch),
108
+ };
109
+ }
110
+ export function createCodingTools(operations, options) {
111
+ return [
112
+ createReadTool(operations, options?.read),
113
+ createBashTool(operations, options?.bash),
114
+ createEditTool(operations, options?.edit),
115
+ createWriteTool(operations, options?.write),
116
+ ];
117
+ }
118
+ export function createReadOnlyTools(operations, options) {
119
+ return [
120
+ createReadTool(operations, options?.read),
121
+ createGrepTool(operations, options?.grep),
122
+ createFindTool(operations, options?.find),
123
+ createLsTool(operations, options?.ls),
124
+ ];
125
+ }
126
+ export function createAllTools(operations, options) {
127
+ return {
128
+ read: createReadTool(operations, options?.read),
129
+ bash: createBashTool(operations, options?.bash),
130
+ edit: createEditTool(operations, options?.edit),
131
+ write: createWriteTool(operations, options?.write),
132
+ grep: createGrepTool(operations, options?.grep),
133
+ find: createFindTool(operations, options?.find),
134
+ ls: createLsTool(operations, options?.ls),
135
+ subagent: createSubagentTool(options?.subagent),
136
+ subagent_runs: createSubagentRunsTool(options?.subagent?.runRegistry),
137
+ create_subagent: createCreateSubagentTool(options?.subagent?.configRegistry),
138
+ websearch: createWebsearchTool(options?.websearch),
139
+ };
140
+ }
141
+ //# sourceMappingURL=index.js.map